{"version":3,"file":"main.7656f56ed4bbbd9a.js","mappings":"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AAkB,KAATA,CAC5C,CCrDO,SAASK,GAAuBC,GACrC,IAAIC,EAEJ,IAAIC,EAAe1d,OAAO2d,iBACtBC,EAAoB,KACpBC,GAAmB,EAEvB,QAAS9tB,EAAI,EAAGA,EAAIytB,EAAM3uB,SAAUkB,EAAG,CACrC,IAAI+tB,EAEJ,MAAM9I,EAAOwI,EAAMztB,GACbguB,EAASC,GAAkBhJ,GAE7B+I,IAAW/I,EAAKnmB,SAIpB+uB,EAC+C,QAA5CE,EAAqBF,SACC,IAAvBE,EACIA,EACA/tB,EACN8tB,EAAmB9tB,EAET,IAANA,GAAWguB,EAASL,IACtBA,EAAeK,GAEnB,CAEA,OAAOP,EACJ9tB,IAAI,CAACslB,EAAMjlB,IAAa,IAANA,EAAUilB,EAAOA,EAAKjnB,MAAM2vB,IAC9C3vB,MAC+C,QAA7C0vB,EAAsBG,SACG,IAAxBH,EACEA,EACA,EACJI,EAAmB,EAEzB,CAEA,SAASG,GAAkBC,GACzB,IAAIluB,EAAI,EAER,KAAOA,EAAIkuB,EAAIpvB,QAAUouB,EAAagB,EAAIC,WAAWnuB,OACjDA,EAGJ,OAAOA,CACT,CClDA,MAAMouB,GAAgB,gCAEtB,SAASC,GAAgBH,GACvB,OAAOI,GAAgBJ,EAAIC,WAAW,GACxC,CAEA,MAAMG,GAAkB,CACtB,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,MACA,MACA,MACA,UACA,MACA,MACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,GACA,GACA,MACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,OACA,GACA,GACA,GA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","names":["dep","environment","production","siteDomain","subDomainESB","cartService","apiDomain","hubGatewayUrl","commEdgeUrl","taskTrackerServiceUrl","undefined","i18nServiceUrl","imageServiceBackendUrl","imageServicePublicUrl","APP_D_KEY","APP_D_BEACON_URL_HTTP","APP_D_BEACON_URL_HTTPS","APP_D_ADRUM_EXT_URL_HTTP","APP_D_ADRUM_EXT_URL_HTTPS","APP_D_ADRUM_FILE","APP_D_ENABLED","GTM_CONTAINER_ID","SUBDOMAIN_ESB","DEPLOY_SITEDOMAIN","CBEC_DEPLOY_SITEDOMAIN","CART_ORIGIN_SUBDOMAIN","CART_ORIGIN_ROOT_URI","STATIC_CART_ORIGIN_SUBDOMAIN","STATIC_CART_ORIGIN_ROOT_URI","isBaoying","genericMessage","_a","Object","setPrototypeOf","obj","proto","__proto__","InvariantError","_super","message","_this","call","this","framesToPop","name","prototype","__extends","Error","invariant","condition","verbosityLevels","verbosityLevel","indexOf","wrapConsoleMethod","console","log","apply","arguments","debug","warn","error","version","maybe","thunk","globals_global","globalThis","window","self","global","constructor","prefixCounts","Map","makeUniqueId","prefix","count","get","set","concat","Math","random","toString","slice","stringifyForDisplay","value","space","undefId","JSON","stringify","key","split","join","wrap","fn","args","_i","length","arg0","getHandledErrorMsg","getFallbackErrorMsg","assign","originalInvariant","newInvariantError","optionalParams","ApolloErrorMessageHandler","Symbol","for","arg","messageArgs","map","encodeURIComponent","_arrayLikeToArray","arr","len","i","arr2","Array","_defineProperties","target","props","descriptor","enumerable","configurable","writable","defineProperty","_createClass","Constructor","protoProps","staticProps","hasSymbols","hasSymbol","getSymbol","observable","SymbolIterator","SymbolObservable","SymbolSpecies","getMethod","TypeError","getSpecies","ctor","Observable","hostReportError","e","setTimeout","enqueue","Promise","resolve","then","cleanupSubscription","subscription","cleanup","_cleanup","unsubscribe","closeSubscription","_observer","_queue","_state","notifySubscription","type","observer","m","onNotify","push","flushSubscription","queue","Subscription","subscriber","subscriptionObserver","SubscriptionObserver","_proto","_subscription","_proto2","next","complete","_subscriber","_proto3","subscribe","forEach","reject","done","_this2","filter","_this3","reduce","_this4","C","hasSeed","hasValue","acc","first","_this5","_len","sources","_key","index","startNext","v","from","flatMap","_this6","subscriptions","outer","inner","splice","completeIfDone","closed","s","x","method","isObservable","_step","_iterator","_createForOfIteratorHelperLoose","o","allowArrayLike","it","iterator","bind","isArray","_unsupportedIterableToArray","minLen","n","test","of","_len2","items","_key2","isNonNullObject","getFragmentQueryDocument","document","fragmentName","actualFragmentName","fragments","definitions","definition","kind","operation","query","__assign","__spreadArray","selectionSet","selections","createFragmentMap","symTable","fragment","getFragmentFromSelection","selection","fragmentMap","noop","symbol","defaultDispose","_WeakRef","WeakRef","deref","_WeakMap","WeakMap","_FinalizationRegistry","FinalizationRegistry","register","unregister","WeakCache","max","Infinity","dispose","newest","oldest","unfinalizedNodes","Set","finalizationScheduled","size","finalize","values","node","delete","keyRef","registry","queueMicrotask","deleteNode","has","getNode","older","newer","scheduleFinalization","clean","add","StrongCache","scheduledCleanup","WeakSet","schedule","cache","AutoCleanedWeakCache","AutoCleanedStrongCache","cacheSizeSymbol","cacheSizes","globalCaches","registerGlobalCache","getSize","getApolloClientMemoryInternals","__DEV__","_getApolloClientMemoryInternals","_b","_c","_d","_e","limits","fromEntries","entries","parser","canonicalStringify","print","k","sizes","links","linkInfo","link","queryManager","getDocumentInfo","transformCache","documentTransforms","transformInfo","documentTransform","getMemoryInternals","getInMemoryCacheMemoryInternals","_getInMemoryCacheMemoryInternals","config","_getApolloCacheMemoryInternals","addTypenameDocumentTransform","addTypenameTransform","inMemoryCache","executeSelectionSet","getWrapperInformation","storeReader","executeSubSelectedArray","maybeBroadcastWatch","fragmentRegistry","findFragmentSpreads","lookup","transform","getApolloCacheMemoryInternals","fragmentQueryDocuments","getFragmentDoc","f","isWrapper","isDefined","recurseTransformInfo","performWork","left","right","sortingMap","stableObjectReplacer","reset","getPrototypeOf","keys","every","everyKeyInOrder","unsortedKey","sortedKeys","sort","sortedKey","sortedObject_1","create","makeReference","id","__ref","String","isReference","valueToObjectRepresentation","argObj","variables","isIntValue","isFloatValue","Number","isBooleanValue","isStringValue","isObjectValue","nestedArgObj_1","fields","isVariable","isListValue","listValue","nestedArgArrayObj","isEnumValue","isNullValue","KNOWN_DIRECTIVES","storeKeyNameStringify","getStoreKeyName","fieldName","directives","connection","filterKeys","filteredArgs_1","completeFieldName","stringifiedArgs","setStringify","previous","argumentsObjectFromField","field","argObj_1","resultKeyNameFromField","alias","getTypenameFromResult","result","isField","__typename","fragments_1","typename","checkDocument","doc","operations","d","getOperationDefinition","getOperationName","getFragmentDefinitions","getQueryDefinition","queryDef","getMainDefinition","queryDoc","fragmentDefinition","getDefaultValues","defaultValues","defs","variableDefinitions","def","defaultValue","variable","passthrough","op","forward","toLink","handler","ApolloLink","isTerminating","request","empty","y","ret","leftLink","rightLink","execute","createOperation","starting","context","transformOperation","transformedOperation","extensions","operationName","validateOperation","OPERATION_FIELDS","second","firstLink","nextLink","onError","setOnError","defaultMakeData","hasOwnProperty","Trie","weakness","makeData","array","lookupArray","getChildTrie","data","peek","peekArray","isObjRef","weak","strong","child","currentContext","MISSING_VALUE","idCounter","globalKey","globalHost","Slot","Date","now","parent","slots","getValue","withValue","callback","thisArg","saved","noContext","parentEntrySlot","arrayFromSet","item","maybeUnsubscribe","entryOrDep","emptySetPool","POOL_TARGET_SIZE","assert","optionalMessage","valueIs","a","b","valueGet","valueCopy","Entry","parents","childValues","dirtyChildren","dirty","recomputing","deps","mightBeDirty","rememberParent","recompute","reallyRecompute","entry","forgetChildren","recomputeNewValue","maybeSubscribe","setDirty","setClean","reportClean","reportDirty","eachParent","forgetChild","forget","dependOn","pop","forgetDeps","clear","reportDirtyChild","reportCleanChild","normalizeResult","oldValueCopy","parentCount","parentWasClean","childValue","removeDirtyChild","dc","_value","EntryMethods","options","depsByKey","depend","entryMethodName","defaultKeyTrie","defaultMakeCacheKey","caches","originalFunction","pow","keyArgs","makeCacheKey","cacheOption","optimistic","dirtyKey","peekKey","forgetKey","freeze","getKey","lib_toString","fnToStr","Function","previousComparisons","equal","check","lib","aTag","previouslyCompared","aKeys","definedKeys","bKeys","keyCount","aIterator","isMap","info","aKey","aValue","Uint8Array","byteLength","aCode","endsWith","full","suffix","fromIndex","nativeCodeSuffix","isDefinedKey","bSet","ApolloCache","assumeImmutableResults","batch","updateResult","performTransaction","update","recordOptimisticTransaction","transaction","optimisticId","transformDocument","transformForLink","identify","object","gc","modify","readQuery","read","rootId","readFragment","writeQuery","__rest","write","dataId","writeFragment","updateQuery","updateFragment","MissingFieldError","path","missing","lib_forEach","mapFor","remove","removeArray","head","canUseWeakMap","navigator","product","HermesInternal","canUseWeakSet","canUseSymbol","canUseAsyncIteratorSymbol","asyncIterator","identity","createElement","userAgent","DocumentTransform","resultCache","getCacheKey","cached","resetCache","predicate","stableCacheKeys_1","cacheKeys","transformedDocument","otherTransform","Kind","NAME","DOCUMENT","OPERATION_DEFINITION","VARIABLE_DEFINITION","SELECTION_SET","FIELD","ARGUMENT","FRAGMENT_SPREAD","INLINE_FRAGMENT","FRAGMENT_DEFINITION","VARIABLE","INT","FLOAT","STRING","BOOLEAN","NULL","ENUM","LIST","OBJECT","OBJECT_FIELD","DIRECTIVE","NAMED_TYPE","LIST_TYPE","NON_NULL_TYPE","SCHEMA_DEFINITION","OPERATION_TYPE_DEFINITION","SCALAR_TYPE_DEFINITION","OBJECT_TYPE_DEFINITION","FIELD_DEFINITION","INPUT_VALUE_DEFINITION","INTERFACE_TYPE_DEFINITION","UNION_TYPE_DEFINITION","ENUM_TYPE_DEFINITION","ENUM_VALUE_DEFINITION","INPUT_OBJECT_TYPE_DEFINITION","DIRECTIVE_DEFINITION","SCHEMA_EXTENSION","SCALAR_TYPE_EXTENSION","OBJECT_TYPE_EXTENSION","INTERFACE_TYPE_EXTENSION","UNION_TYPE_EXTENSION","ENUM_TYPE_EXTENSION","INPUT_OBJECT_TYPE_EXTENSION","devAssert","MAX_ARRAY_LENGTH","MAX_RECURSIVE_DEPTH","inspect","formatValue","seenValues","formatObjectValue","previouslySeenValues","includes","isJSONable","toJSON","jsonValue","formatArray","min","remaining","formatObject","getObjectTag","tag","replace","Location","startToken","endToken","source","start","end","toStringTag","Token","line","column","prev","QueryDocumentKeys","Name","Document","OperationDefinition","VariableDefinition","Variable","SelectionSet","Field","Argument","FragmentSpread","InlineFragment","FragmentDefinition","IntValue","FloatValue","StringValue","BooleanValue","NullValue","EnumValue","ListValue","ObjectValue","ObjectField","Directive","NamedType","ListType","NonNullType","SchemaDefinition","OperationTypeDefinition","ScalarTypeDefinition","ObjectTypeDefinition","FieldDefinition","InputValueDefinition","InterfaceTypeDefinition","UnionTypeDefinition","EnumTypeDefinition","EnumValueDefinition","InputObjectTypeDefinition","DirectiveDefinition","SchemaExtension","ScalarTypeExtension","ObjectTypeExtension","InterfaceTypeExtension","UnionTypeExtension","EnumTypeExtension","InputObjectTypeExtension","kindValues","isNode","maybeNode","maybeKind","OperationTypeNode","QUERY","MUTATION","SUBSCRIPTION","BREAK","visit","root","visitor","visitorKeys","enterLeaveMap","getEnterLeaveForKind","stack","inArray","edits","ancestors","isLeaving","isEdited","editOffset","editKey","editValue","arrayKey","defineProperties","getOwnPropertyDescriptors","_enterLeaveMap$get","_enterLeaveMap$get2","visitFn","leave","enter","_node$kind","kindVisitor","isNonEmptyArray","TYPENAME_FIELD","isEmpty","nullIfDocIsEmpty","getFragmentDefinition","fragmentDef","makeInUseGetterFunction","defaultKey","inUse","fragmentSpreads","removeDirectivesFromDocument","getInUseByOperationName","getInUseByFragmentName","getInUse","p","ancestor","operationCount","directiveMatcher","getDirectiveMatcher","configs","names","tests","directive","testConfig","shouldRemoveField","nodeDirectives","some","originalFragmentDefsByPath","firstVisitMadeChanges","fieldOrInlineFragmentVisitor","docWithoutDirectiveSubtrees","_parent","_path","removed","populateTransitiveVars","transitiveVars","childFragmentName","varName","allFragmentNamesUsed","enterVisitor","fragmentWillBeRemoved","usedVariableNames_1","varDef","addTypenameToDocument","lastIndexOf","added","buildQueryFromSelectionSet","removeClientSetsFromDocument","isWhiteSpace","code","isDigit","isLetter","isNameStart","isNameContinue","dedentBlockStringLines","lines","_firstNonEmptyLine2","commonIndent","MAX_SAFE_INTEGER","firstNonEmptyLine","lastNonEmptyLine","_firstNonEmptyLine","indent","leadingWhitespace","str","charCodeAt","escapedRegExp","escapedReplacer","escapeSequences","ast","printDocASTReducer","varDefs","block","argsLine","typeCondition","isBlockString","printBlockString","escapedValue","isSingleLine","forceLeadingNewLine","hasTrailingTripleQuotes","hasTrailingQuote","hasTrailingSlash","forceTrailingNewline","printAsMultipleLines","minimize","skipLeadingNewLine","printString","description","operationTypes","interfaces","hasMultilineItems","types","repeatable","locations","maybeArray","separator","_maybeArray$filter$jo","maybeString","_maybeArray$some","printCache","origPrint","compact","objects","mergeDeep","mergeDeepArray","merger","DeepMerger","merge","defaultReconciler","property","reconciler","isObject","pastCopies","sourceKey","targetValue","shallowCopyForMerge","shouldInclude","getInclusionDirectives","isInclusionDirective","directiveArguments","directiveName","ifArgument","ifValue","evaledValue","hasDirectives","all","nameSet","uniqueCount","hasClientExports","maybeDeepFreeze","deepFreeze","workSet","shallowFreeze","isFrozen","getOwnPropertyNames","hasOwn","isNullish","defaultDataIdFromObject","_id","keyObject","defaultConfig","dataIdFromObject","addTypename","resultCaching","canonizeResults","shouldCanonizeResults","TypeOrFieldNameRegExp","fieldNameFromStoreName","storeFieldName","match","selectionSetMatchesResult","storeValueIsStoreObject","extractFragmentContext","lookupFragment","DELETE","delModifier","INVALIDATE","EntityStore","policies","group","rootIds","refs","getFieldValue","objectOrReference","canRead","objOrRef","toReference","objOrIdOrRef","mergeIntoStore","ref","toObject","storeObject","rootTypenamesById","Layer","dependOnExistence","existing","incoming","merged","storeObjectReconciler","caching","fieldsToDirty_1","__exists","hasKeyArgs","changedFields_1","needToMerge_1","allDeleted_1","sharedDetails_1","readField","fieldNameOrOptions","store","fieldValue","newValue","storage","getStorage","checkReference","seenReference","someNonReference","newValue_1","getStoreFieldName","evict","limit","evicted","extract","extraRootIds","getRootIdSet","__META","newData","rest_1","retain","release","ids","snapshot","findChildRefIds","idsToRemove","root_1","found_1","workSet_1","keyMaker","CacheGroup","resetCaching","makeDepKey","maybeDependOnExistenceOfEntity","entityId","supportsResultCaching","Root","seed","stump","Stump","storageTrie","addLayer","layerId","replay","removeLayer","ownStoreObject","parentStoreObject","fromParent","existingObject","incomingObject","existingValue","incomingValue","ObjectCanon","known","pool","passes","keysByJSON","admit","isKnown","isObjectOrArray","pass","copy","shallowCopy","original","proto_1","array_1","json","firstValueIndex_1","sorted","obj_1","execSelectionSetKeyArgs","StoreReader","knownResults","canon","peekArgs","other","enclosingRef","execSelectionSetImpl","resultCacheMaxSize","varString","execSubSelectedArrayImpl","resetCanon","diffQueryAgainstStore","returnPartialData","rootRef","execResult","firstMissing","isFresh","latest","objectsToMerge","missingMerger","handleMissing","resultName","rootIdsByTypename","fragmentMatches","finalResult","frozen","childResult","assertSelectionSetForIdValue","getTypenameFromStoreObject","tree","_","cloneDeep","cloneDeepHelper","val","seen","copy_1","copy_2","cacheSlot","cacheInfoMap","getCacheInfo","vars","forgetCache","rv","makeVar","listeners","broadcast","broadcastWatches","oldListeners","listener","attach","onNextChange","attachCache","specifierInfoCache","lookupSpecifierInfo","spec","cacheKey","keyFieldsFnFromSpecifier","specifier","keyFieldsFn","collectSpecifierPaths","schemaKeyPath","extracted","extractKeyPath","extractKey","keyArgsFnFromSpecifier","keyArgsFn","collected","keyPath","firstKey","firstChar","charAt","variableName","varKeyPath","directiveName_1","find","directiveArgs","extractor","getSpecifierPaths","toMerge","paths","paths_1","currentPath_1","normalize","reducer","argsFromFieldSpecifier","nullKeyFieldsFn","simpleKeyArgsFn","_args","mergeTrueFn","mergeObjects","mergeFalseFn","Policies","typePolicies","toBeAdded","supertypeMap","fuzzySubtypes","usingPossibleTypes","setRootTypename","possibleTypes","addPossibleTypes","addTypePolicies","partialContext","ROOT_QUERY","normalizeReadFieldOptions","policy","getTypePolicy","keyFn","specifierOrId","queryType","mutationType","subscriptionType","updateTypePolicy","keyFields","setMerge","getFieldPolicy","which","toUpperCase","old","supertype","getSupertypeSet","subtype","RegExp","policy_1","supertypes_1","regExp","fuzzy","fuzzySupertypes","rest","inbox","createIfMissing","fieldPolicies","supertypeSet","typenameSupertypeSet","workQueue_1","maybeEnqueue_1","needToCheckFuzzySubtypes","checkingFuzzySubtypes","fuzzyString","fieldSpec","specifierOrString","storeKeyNameFromField","directivesObj","readOptions","makeFieldFunctionOptions","getReadFunction","getMergeFunction","parentTypename","childTypename","runMergeFunction","makeMergeObjectsFunction","overwrite","readFieldArgs","eType","iType","getContextFlavor","clientOnly","deferred","flavored","flavors","StoreWriter","reader","writeToStore","operationDefinition","makeProcessedFieldsMerger","written","incomingById","processSelectionSet","mergeTree","fieldNodeSet","entityRef","applied","applyMerges","fieldsWithSelectionSets_1","hasSelectionSet_1","childTree","hasMergeFunction_1","warnAboutDataLoss","existingRef","incomingObj","getChild","parentType","typeDotName","warnings","childTypenames","result_1","flattenFields","resultFieldKey","getChildMergeTree","processFieldValue","maybeRecycleChildMergeTree","dataRef","sets","previous_1","mergeMergeTrees","mergeTreeIsEmpty","fieldMap","limitingTrie","flatten","inheritedContext","visitedNode","visited","dir","if","getStorageArgs","e_1","i_1","getValue_1","eVal","iVal","aVal","emptyMergeTreePool","needToMergeMaps","remainingRightKeys_1","leftTree","InMemoryCache","watches","txCount","normalizeConfig","init","rootStore","optimisticData","resetResultCache","resetResultIdentities","previousReader","storeWriter","c","broadcastWatch","restore","diff","watch","recallCache","immediate","resetCaches","discardWatches","removeOptimistic","idToRemove","newOptimisticData","onWatchUpdated","perform","layer","alreadyDirty","addFragmentsToDocument","lastDiff","fromOptimisticTransaction","invalidTimingValue","exp","ɵRuntimeError","ngDevMode","optimizeGroupPlayer","players","NoopAnimationPlayer","ɵAnimationGroupPlayer","normalizeKeyframes$1","normalizer","keyframes","preStyles","postStyles","errors","normalizedKeyframes","previousOffset","previousKeyframe","kf","offset","isSameOffset","normalizedKeyframe","prop","normalizedProp","normalizedValue","normalizePropertyName","ɵPRE_STYLE","AUTO_STYLE","normalizeStyleValue","animationFailed","listenOnPlayer","player","eventName","event","onStart","copyAnimationEvent","onDone","onDestroy","phaseName","totalTime","makeAnimationEvent","element","triggerName","fromState","toState","disabled","_data","getOrSetDefaultValue","parseTimelineCommand","command","separatorPos","substring","documentElement","getParentElement","parentNode","host","_CACHED_BODY","_IS_WEBKIT","containsElement","elm1","elm2","invokeQuery","selector","multi","querySelectorAll","elem","querySelector","NoopAnimationDriver","_NoopAnimationDriver","validateStyleProperty","getBodyNode","body","style","containsVendorPrefix","matchesElement","_element","_selector","computeStyle","animate","duration","delay","easing","previousPlayers","scrubberAccessRequested","ɵfac","t","ɵprov","i0","token","factory","AnimationDriver","_AnimationDriver","NOOP","ONE_SECOND","ENTER_CLASSNAME","LEAVE_CLASSNAME","NG_TRIGGER_CLASSNAME","NG_TRIGGER_SELECTOR","NG_ANIMATING_CLASSNAME","NG_ANIMATING_SELECTOR","resolveTimingValue","matches","_convertTimeValueToMS","parseFloat","unit","resolveTiming","timings","allowNegativeValues","parseTimeExpression","delayMatch","easingVal","containsErrors","startIndex","negativeStepValue","negativeDelayValue","copyObj","destination","convertToMap","styleMap","copyStyles","styles","backfill","setStyles","formerStyles","camelProp","dashCaseToCamelCase","eraseStyles","normalizeAnimationEntry","steps","sequence","PARAM_REGEX","SUBSTITUTION_EXPR_START","SUBSTITUTION_EXPR_END","extractStyleParams","params","exec","lastIndex","interpolateParams","localVal","invalidParamValue","iteratorToArray","DASH_CASE_REGEXP","input","visitDslNode","visitTrigger","visitState","visitTransition","visitSequence","visitGroup","visitAnimate","visitKeyframes","visitStyle","visitReference","visitAnimateChild","visitAnimateRef","visitQuery","visitStagger","invalidNodeType","nodeType","getComputedStyle","ANY_STATE","parseTransitionExpr","transitionValue","expressions","parseInnerTransitionStr","eventStr","parseAnimationAlias","invalidTransitionAlias","invalidExpression","expr","makeLambdaFromStates","TRUE_BOOLEAN_VALUES","FALSE_BOOLEAN_VALUES","lhs","rhs","LHS_MATCH_BOOLEAN","RHS_MATCH_BOOLEAN","lhsMatch","rhsMatch","SELF_TOKEN_REGEX","SELF_TOKEN","buildAnimationAst","driver","metadata","AnimationAstBuilderVisitor","build","_driver","AnimationAstBuilderContext","_resetContextStyleTimingState","currentQuerySelector","collectedStyles","currentTime","queryCount","depCount","states","transitions","invalidTrigger","stateDef","transition","invalidDefinition","styleAst","astParams","containsDynamicStyles","missingSubs","sub","invalidState","metadataName","animation","matchers","normalizeAnimationOptions","furthestTime","step","innerAst","timingAst","constructTimingAst","makeTimingAst","strValue","dynamic","currentAnimateTimings","styleMetadata","newStyleData","_styleAst","isEmptyStep","_makeStyleAst","_validateStyleAst","metadataStyles","styleTuple","collectedEasing","styleData","endTime","startTime","tuple","collectedEntry","updateCollectedStyle","invalidParallelAnimation","firstStart","firstEnd","secondStart","secondEnd","validateStyleParams","invalidStyleParams","invalidKeyframes","totalKeyframesWithOffsets","offsets","offsetsOutOfOrder","keyframesOutOfRange","offsetVal","consumeOffset","invalidOffset","keyframeOffsetsOutOfOrder","generatedOffset","keyframesMissingOffsets","animateDuration","durationUpToThisFrame","parentSelector","currentQuery","includeSelf","normalizeSelector","hasAmpersand","optional","originalSelector","invalidStagger","currentTransition","unsupportedCSSPropertiesFound","normalizeParams","createTimelineInstruction","preStyleProps","postStyleProps","subTimeline","ElementInstructionMap","_map","append","instructions","existingInstructions","ENTER_TOKEN_REGEX","LEAVE_TOKEN_REGEX","buildAnimationTimelines","rootElement","enterClassName","leaveClassName","startingStyles","finalStyles","subInstructions","AnimationTimelineBuilderVisitor","buildKeyframes","AnimationTimelineContext","currentTimeline","delayNextStep","timelines","timeline","containsAnimation","lastRootTimeline","allowOnlyTimelineStyles","elementInstructions","innerContext","createSubContext","_visitSubInstructions","transformIntoNewTimeline","previousNode","_applyAnimationRefDelays","animationsRefsOptions","animationRefOptions","animationDelay","_animationRefOptions$","animationDelayValue","instruction","instructionTimings","appendInstructionToTimeline","updateOptions","subContextCount","ctx","snapshotCurrentStyles","DEFAULT_NOOP_PREVIOUS_NODE","applyStylesToKeyframe","innerTimelines","mergeTimelineCollectedStyles","_visitTiming","incrementTime","hasCurrentStyleProperties","forwardFrame","applyEmptyStep","innerTimeline","forwardTime","elms","currentQueryTotal","sameElementTimeline","currentQueryIndex","parentContext","tl","abs","maxTime","currentStaggerTime","startingTime","_enterClassName","_leaveClassName","initialTimeline","TimelineBuilder","skipIfExists","newOptions","optionsToUpdate","newParams","paramsToUpdate","_copyOptions","oldParams","newTime","fork","updatedTimings","builder","SubTimelineBuilder","stretchStartingKeyframe","time","results","elements","invalidQuery","_elementTimelineStylesLookup","_previousKeyframe","_currentKeyframe","_keyframes","_styleSummary","_localTimelineStyles","_pendingStyles","_backFill","_currentEmptyStepKeyframe","_globalTimelineStyles","_loadKeyframe","hasPreStyleStep","_updateStyle","flattenStyles","allStyles","allProperties","_this$_globalTimeline","getFinalKeyframe","properties","details1","details0","finalKeyframes","keyframe","finalKeyframe","preProps","postProps","kf0","kf1","_stretchStartingKeyframe","super","newKeyframes","startingGap","newFirstKeyframe","oldFirstKeyframe","roundOffset","oldOffset","decimalPoints","mult","round","AnimationStyleNormalizer","DIMENSIONAL_PROP_SET","WebAnimationsStyleNormalizer","propertyName","userProvidedProperty","normalizedProperty","strVal","trim","valAndSuffixMatch","invalidCssUnitValue","createTransitionInstruction","isRemovalTransition","fromStyles","toStyles","queriedElements","EMPTY_OBJECT","AnimationTransitionFactory","_triggerName","_stateStyles","currentState","nextState","oneOrMoreTransitionsMatch","matchFns","buildStyles","stateName","styler","currentOptions","nextOptions","skipAstBuild","_this$ast$options","transitionAnimationParams","currentStateStyles","nextAnimationParams","nextStateStyles","preStyleMap","postStyleMap","isRemoval","animationOptions","applyParamDefaults","elm","queriedElementsList","userParams","defaults","AnimationStateStyles","defaultParams","combinedParams","AnimationTrigger","_normalizer","transitionFactories","balanceProperties","fallbackTransition","createFallbackTransition","containsQueries","matchTransition","matchStyles","stateMap","key1","key2","EMPTY_INSTRUCTION_MAP","TimelineAnimationEngine","bodyNode","_animations","_playersById","registerFailed","_buildPlayer","autoStylesMap","inst","missingOrDestroyedAnimation","createAnimationFailed","destroy","_getPlayer","missingPlayer","listen","baseEvent","play","pause","restart","finish","setPosition","QUEUED_CLASSNAME","DISABLED_CLASSNAME","EMPTY_PLAYER_ARRAY","NULL_REMOVAL_STATE","namespaceId","setForRemoval","setForMove","hasAnimation","removedBeforeQueried","NULL_REMOVED_QUERIED_STATE","REMOVAL_FLAG","StateValue","isObj","normalizeTriggerValue","absorbOptions","VOID_VALUE","DEFAULT_STATE_VALUE","AnimationTransitionNamespace","hostElement","_engine","_triggers","_elementListeners","_hostClassName","addClass","phase","missingTrigger","missingEvent","isTriggerEventValid","unsupportedTriggerEvent","triggersWithStates","statesByElement","afterFlush","_getTrigger","trigger","unregisteredTrigger","defaultToFallback","TransitionAnimationPlayer","objEquals","k1","k2","reportError","playersOnElement","playersByElement","queued","isFallbackTransition","totalQueuedPlayers","removeClass","deregister","clearElementCache","elementPlayers","_signalRemovalForInnerTriggers","namespaces","fetchNamespacesByElement","ns","triggerLeaveAnimation","afterFlushAnimationsDone","destroyAfterComplete","triggerStates","previousTriggersValues","state","markElementAsRemoved","processLeaveNode","prepareLeaveAnimationListeners","elementStates","visitedTriggers","removeNode","engine","childElementCount","containsPotentialParentTransition","totalAnimations","currentPlayers","playersByQueriedElement","removalFlag","destroyInnerAnimations","_onRemovalComplete","insertNode","drainQueuedTransitions","microtaskId","destroyed","markedForDestroy","d0","d1","TransitionAnimationEngine","onRemovalComplete","newHostElements","disabledNodes","_namespaceLookup","_namespaceList","_flushFns","_whenQuietFns","namespacesByHostElement","collectedEnterElements","collectedLeaveElements","queuedPlayers","createNamespace","_balanceNamespaceList","collectEnterElement","namespaceList","found","ancestorNs","unshift","registerTrigger","_fetchNamespace","stateValue","isElementNode","insertBefore","details","markElementAsDisabled","hostNS","_buildInstruction","subTimelines","skipBuildAst","containerElement","destroyActiveAnimationsForElement","finishActiveQueriedAnimationOnElement","whenRenderingDone","_element$classList","classList","contains","flush","cleanupFns","_flushAnimations","quietFns","triggerTransitionsFailed","skippedPlayers","skippedPlayersMap","queuedInstructions","allPreStyleElements","allPostStyleElements","disabledElementsSet","nodesThatAreDisabled","allTriggerElements","enterNodeMap","buildRootMap","enterNodeMapIds","nodes","className","allLeaveNodes","mergedLeaveNodes","leaveNodesWithoutAnimations","leaveNodeMapIds","leaveNodeMap","allPlayers","erroneousTransitions","previousValue","nodeIsOrphaned","stringMap","setVal","transitionFailed","allPreviousPlayersMap","animationElementMap","_beforeAnimationBuild","_getPreviousPlayers","prevPlayer","replaceNodes","replacePostStylesAsPre","postStylesMap","cloakAndComputeStyles","preStylesMap","_post$entries","_pre$entries","post","pre","rootPlayers","subPlayers","NO_PARENT_ANIMATION_ELEMENT_DETECTED","overrideTotalTime","parentWithAnimation","parentsToAdd","detectedParent","innerPlayer","_buildAnimation","setRealPlayer","parentPlayers","parentPlayer","playersForElement","syncPlayerEvents","queriedPlayerResults","queriedInnerElements","j","queriedPlayers","activePlayers","removeNodesAfterAnimationDone","isQueriedElement","toStateValue","queriedElementPlayers","isRemovalAnimation","targetNameSpaceId","targetTriggerName","timelineInstruction","realPlayer","getRealPlayer","beforeDestroy","allQueriedPlayers","allConsumedElements","allSubElements","allNewPlayers","flattenGroupPlayers","finalPlayers","_flattenGroupPlayersRecur","wrappedPlayer","deleteOrUnsetInMap","currentValues","_player","_containsRealPlayer","_queuedCallbacks","callbacks","triggerCallback","_queueEvent","hasStarted","getPosition","cloakElement","oldValue","display","valuesMap","elementPropsMap","defaultStyle","cloakVals","failedElements","roots","rootMap","nodeSet","localRootMap","getRoot","_element$classList2","_element$classList3","postEntry","preEntry","AnimationEngine","_triggerCache","_transitionEngine","_timelineEngine","componentId","triggerBuildFailed","buildTrigger","onInsert","onRemove","disableAnimations","disable","process","action","eventPhase","cb","SpecialCasedStyles","_startStyles","_endStyles","initialStyles","initialStylesByElement","_initialStyles","_SpecialCasedStyles","filterNonAnimatableStyles","isNonAnimatableStyle","WebAnimationsPlayer","_specialStyles","_onDoneFns","_onStartFns","_onDestroyFns","_initialized","_finished","_started","_destroyed","_originalOnDoneFns","_originalOnStartFns","currentSnapshot","_duration","_delay","_onFinish","_preparePlayerBeforeStart","domPlayer","_triggerWebAnimation","_finalKeyframe","onFinish","addEventListener","removeEventListener","_resetDomPlayerState","_convertKeyframesToObject","kfs","frame","cancel","_this$domPlayer$curre","methods","WebAnimationsDriver","validateAnimatableStyleProperty","playerOptions","fill","previousStyles","previousWebAnimationPlayers","allowPreviousPlayerStylesMerge","normalizeKeyframes","balancePreviousStylesIntoKeyframes","startingKeyframe","missingStyleProps","specialStyles","packageNonAnimatableStyles","startStyles","endStyles","BrowserAnimationBuilder","_BrowserAnimationBuilder","AnimationBuilder","rootRenderer","_nextAnimationId","_renderer","createRenderer","encapsulation","ViewEncapsulation","None","issueAnimationCommand","BrowserAnimationFactory","AnimationFactory","RendererAnimationPlayer","_command","_listen","_this$_renderer$engin","_this$_renderer$engin2","renderer","setProperty","DISABLE_ANIMATIONS_FLAG","AnimationRendererFactory","_AnimationRendererFactory","delegate","_zone","_currentId","_microtaskId","_animationCallbacksBuffer","_rendererCache","_cdRecurDepth","removeChild","BaseAnimationRenderer","onRendererDestroy","animationTriggers","AnimationRenderer","begin","_scheduleCountTask","scheduleListenerCallback","run","runOutsideAngular","i1","_onDestroy","destroyNode","_this$delegate$destro","_this$delegate","_this$_onDestroy","namespace","createComment","createText","appendChild","newChild","refChild","isMove","oldChild","isHostElement","selectRootElement","selectorOrNode","preserveContent","nextSibling","setAttribute","el","removeAttribute","setStyle","flags","removeStyle","setValue","resolveElementFromTarget","parseTriggerCallbackName","dotIndex","InjectableAnimationEngine","_InjectableAnimationEngine","ɵAnimationEngine","appRef","ngOnDestroy","SHARED_ANIMATION_PROVIDERS","provide","useClass","ɵAnimationStyleNormalizer","useFactory","instantiateDefaultStyleNormalizer","ɵWebAnimationsStyleNormalizer","RendererFactory2","instantiateRendererFactory","zone","ɵDomRendererFactory2","NgZone","BROWSER_ANIMATIONS_PROVIDERS","ɵWebAnimationsDriver","ANIMATION_MODULE_TYPE","useValue","BROWSER_NOOP_ANIMATIONS_PROVIDERS","ɵNoopAnimationDriver","BrowserAnimationsModule","_BrowserAnimationsModule","withConfig","ngModule","providers","ɵmod","ɵinj","imports","BrowserModule","InterpolationPipeModule","_InterpolationPipeModule","CommonModule","AuthenticationModule","_AuthenticationModule","ModalModule","forRoot","BsDropdownModule","FormsModule","HttpClientModule","UnsafeModule","NgxsModule","forFeature","UserProfileState","CookieModule","ReactiveFormsModule","TranslationModule","EarningsOptInItemService","_EarningsOptInItemService","http","handleError","throwError","getOptInStatus","pipe","optInStatus","earningsOptIn","put","catchError","providedIn","EarningsOptInState","_EarningsOptInState","earningsOptInService","LoadEarningsOptInStatus","patchState","earningType","EarningsOptIn","core","Yz7","__decorate","Action","__metadata","LoadEarningsOptIn","State","EarningsOptInItemModule","_EarningsOptInItemModule","AnalyticsSystem","GTM","FS","GTM_FS","ALL","AnalyticsService","_AnalyticsService","usanaFsService","getSystemsFromEnum","systems","systemBits","sendEventToAllSystems","eventProperties","sendEvent","matchesSystem","getDataLayer","system","dataLayer","WINDOW_TOKEN","AnalyticsModule","_AnalyticsModule","CmsConstants","DEBUG","DIRECTIONS","UP","TOP","LEFT","RIGHT","DOWN","BOTTOM","PUBLISH_STATUS","NONE","PUBLISHED","SUCCESS_PUBLISHING","ERROR_PUBLISHING","MENU_SVG_PATHS","svgPath1","svgPath2","SetActiveEditItemId","activeEditItemId","LoadCmsItem","itemId","RemoveCmsItem","ReloadCmsItem","MoveCmsItem","relationshipId","direction","CopyParentToLocale","parentId","fromLocale","toLocale","withChildData","CopyItemToLocale","targetLocale","DeleteCmsItem","PublishItem","cmsItem","ResetCmsDataEntries","UpdateCmsCurrentPage","pageId","subPages","CmsEditService","_CmsEditService","reloadCmsRootItem","dispatch","copyParentToLocale","headers","HttpHeaders","responseType","copyItemToLocale","relId","editChild","openerCallback","openerCallbackParam","cmPopup","getSite","getOpenerCallback","editItem","locale","url","open","innerHeight","innerWidth","getSiteFromPath","location","pathname","getSiteFromOpener","opener","escapeSpecialSelectorChars","string","addToContainer","appendCharacter","callBackParams","removeCm","reloadLocation","reload","togglePageEdit","getHeaders","response","SetUserProfile","publishItem","cmItem","relationship","moveCmsItem","Pragma","i2","setCmsItemDataToState","cmsItemName","cmsIds","flatMapCms","flatMapCmsChildren","cmsItemId","isLoading","cmsDataEntries","updatedCmsIds","setCmsItemEntryToState","cmsItemEntry","getCmsItemIdsFromFlatMap","cmsEntry","childIds","childId","cur","convertChildIdsToChildren","restOfData","children","er","cmsFlatMap","CmsService","_CmsService","getCmsItem","ctx_r0","modalOptions","_c0","_r4","ctx_r3","ctx_r5","confirm","ctx_r1","cancelButton","confirmButton","ctx_r7","inputFieldError","ConfirmationModalComponent_div_9_div_7_div_1_Template","ctx_r6","inputField","required","_r9","ctx_r8","confirmInputSubmit","ConfirmationModalComponent_div_9_div_7_Template","ctx_r10","ctx_r2","confirmInputForm","inputData","invalid","valid","ConfirmationModalComponent","_ConfirmationModalComponent","bsModalRef","formBuilder","onClose","BehaviorSubject","ngOnInit","_this$modalOptions","validators","Validators","patchValue","emitEvent","hide","selectors","decls","consts","template","rf","ConfirmationModalComponent_div_7_Template","ConfirmationModalComponent_div_8_Template","ConfirmationModalComponent_div_9_Template","title","isShowInputField","CmsState","_CmsState","cmsService","cmsEditService","modalService","setActiveEditItemId","loadCmsItem","getState","setState","cmsState","removeCmsItem","newState","reloadCmsItem","IncrementLoading","concatMap","DecrementLoading","resetCmsDataEntries","newCmsDataEntries","cmsKeys","validDirection","dirs","openConfirmationModal","modalRef","content","deleteCmsItem","publishCmsItem","updateCmsCurrentPage","currentPage","show","class","animated","initialState","i3","i4","cms_state_metadata","Store","BsModalService","CmsSelectors","getPageEdit","pageEdit","getActiveEditItemId","getCmsDataEntries","getUpdatedCmsIds","cmsItemIsUpdatedFn","getCmsItemByIdFn","buildCmsItemFromFlatMap","getCmsCurrentPage","Selector","cms_selectors_metadata","Boolean","cmsItemObj","_r11","copyToLocale","requestAttrs","localeName","_r19","ctx_r18","moveThis","CMS_DIRECTIONS","_r21","ctx_r20","_r23","ctx_r22","_r25","ctx_r24","_r27","ctx_r26","_r29","ctx_r28","CmsChildEditMenuComponent_div_0_div_2_ng_template_25_div_0_Template","CmsChildEditMenuComponent_div_0_div_2_ng_template_25_div_1_Template","CmsChildEditMenuComponent_div_0_div_2_ng_template_25_div_2_Template","CmsChildEditMenuComponent_div_0_div_2_ng_template_25_div_3_Template","CmsChildEditMenuComponent_div_0_div_2_ng_template_25_div_4_Template","CmsChildEditMenuComponent_div_0_div_2_ng_template_25_div_5_Template","_r31","ctx_r30","edit","yCoord","xCoord","parentWidth","columnHeight","_r33","ctx_r32","publish","CmsChildEditMenuComponent_div_0_div_2_span_2_Template","CmsChildEditMenuComponent_div_0_div_2_span_21_Template","CmsChildEditMenuComponent_div_0_div_2_span_22_Template","CmsChildEditMenuComponent_div_0_div_2_ng_container_24_Template","CmsChildEditMenuComponent_div_0_div_2_ng_template_25_Template","CmsChildEditMenuComponent_div_0_div_2_button_27_Template","_r35","ctx_r34","deleteItem","container","startDate","endDate","publishStatus","CMS_PUBLISH_STATUSES","copyableToLocale","_r7","isPublished","CmsChildEditMenuComponent_div_0_div_1_Template","CmsChildEditMenuComponent_div_0_div_2_Template","activeEditItemId$","parentCopyableToLocale","CmsChildEditMenuComponent","storeSubs","select","UserProfileSelectors","getUserProfile","userProfile","publishedBy","inputs","CmsChildEditMenuComponent_div_0_Template","editorForLocale","Select","cms_child_edit_menu_component_metadata","CmsLinkService","_CmsLinkService","linkUrlRegex","getTargetFromLinkData","linkCmsItem","linkData","parse","linkUrl","$event","onNavClickEvent","CmsLinkComponent_ng_container_0_ng_container_2_Template","linkTarget","cmsLinkClass","_r3","CmsLinkComponent_ng_template_1_ng_container_1_Template","CmsLinkComponent","_CmsLinkComponent","cmsLinkService","analyticsService","ngOnChanges","calculateLink","navClickEvent","navUrl","features","ngContentSelectors","CmsLinkComponent_ng_container_0_Template","CmsLinkComponent_ng_template_1_Template","CmsLinkComponent_ng_template_3_Template","_r1","showAddButton","buttonText","CmsAddButtonComponent_div_0_button_1_Template","userProfile_r1","CmsAddButtonComponent","targetColumn","setButtonText","setColumn","hideLabel","stopPropagation","selectSnapshot","getLocale","CmsAddButtonComponent_div_0_Template","userProfile$","cms_add_button_component_metadata","_r5","ctx_r4","copyChildrenToLocale","editContainer","ContainerEditMenuComponent_div_0_div_15_div_6_button_3_Template","_r13","ctx_r12","toggleEdit","ContainerEditMenuComponent_div_0_div_15_div_6_Template","ContainerEditMenuComponent_div_0_button_13_Template","ContainerEditMenuComponent_div_0_div_14_Template","ContainerEditMenuComponent_div_0_div_15_Template","hasPublishedChildren","ContainerEditMenuComponent","_this$cmsItemObj$chil","_child$relationship","ContainerEditMenuComponent_div_0_Template","container_edit_menu_component_metadata","CmsBaseDirective","_CmsBaseDirective","addSubscription","hasDataForAttribute","attr","getDataForAttribute","trackByIndexAndItemId","CmsBaseIntervalContainerDirective","_CmsBaseIntervalContainerDirective","changeActiveSlide","initSlideInterval","forceActiveSlide","idx","clearInterval","slideInterval","slideIdx","setInterval","newPosition","idx_r6","childItem_r5","placeholder","idx_r9","_c1","childItem_r8","slideImage","Title","CmsHubBannerSliderContainerComponent_ng_container_0_div_1_div_5_img_1_Template","CmsHubBannerSliderContainerComponent_ng_container_0_div_1_ng_container_3_Template","CmsHubBannerSliderContainerComponent_ng_container_0_div_1_div_5_Template","_c2","CmsHubBannerSliderContainerComponent_ng_container_0_div_1_Template","CmsHubBannerSliderContainerComponent_ng_container_0_div_2_Template","isBannerDesktopSize","CmsHubBannerSliderContainerComponent","_CmsHubBannerSliderContainerComponent","windowSizingService","CmsHubBannerSliderContainerComponent_ng_container_0_Template","CmsBaseContainerDirective","_CmsBaseContainerDirective","itemId_r5","CmsColumnedContainerComponent_div_1_div_2_ng_container_1_Template","col_r2","cssClass","itemIds","idx_r3","CmsColumnedContainerComponent_div_1_div_2_Template","columns","trackByColumn","CmsColumnedContainerComponent","_CmsColumnedContainerComponent","_cmsItem$data$data","_cmsItem$data$data2","colCount","parseInt","decideColumnClasses","colLayout","colClass","colIdx","trackBy","CmsColumnedContainerComponent_div_1_Template","idx_r5","childItem_r4","idx_r7","CmsGalleryContainerComponent_ng_container_0_ng_container_3_Template","CmsGalleryContainerComponent_ng_container_0_div_6_Template","CmsGalleryContainerComponent_ng_container_0_span_7_Template","CmsGalleryContainerComponent","_CmsGalleryContainerComponent","CmsGalleryContainerComponent_ng_container_0_Template","idx_r4","childItem_r3","_r8","CmsSlideContainerComponent_ng_container_0_ng_container_4_Template","CmsSlideContainerComponent_ng_container_0_div_6_Template","CmsSlideContainerComponent","_CmsSlideContainerComponent","CmsSlideContainerComponent_ng_container_0_Template","CmsBaseItemDirective","_CmsBaseItemDirective","CmsHubBannerSliderItemComponent","_CmsHubBannerSliderItemComponent","trackByIndex","CmsHubBannerSliderItemComponent_h1_6_Template","buttonLabel","childItem_r1","CmsBasicContainerComponent","_CmsBasicContainerComponent","CmsBasicContainerComponent_div_1_Template","CmsBasicItemComponent","_CmsBasicItemComponent","item_r2","showCmsItem","menuLabel","CmsGroupContainerComponent_ng_container_10_div_1_Template","CmsGroupContainerComponent","_CmsGroupContainerComponent","firstSubPage","defaultIfSubPageDoesntExist","childExists","CmsGroupContainerComponent_li_4_Template","CmsGroupContainerComponent_ng_container_10_Template","CmsGroupPageComponent","_CmsGroupPageComponent","CmsGroupPageComponent_div_1_Template","_PopoverContainerComponent_h3_1_Template","PopoverConfig","_PopoverConfig","adaptivePosition","placement","triggers","outsideClick","PopoverContainerComponent","_PopoverContainerComponent","_placement","_bsVersions","isBs5","PlacementForBs5","getBsVer","checkMarginNecessity","checkMargins","ɵcmp","hostAttrs","hostVars","hostBindings","popoverId","containerClass","isBs3","dependencies","changeDetection","PopoverDirective","_PopoverDirective","isOpen","_popover","isShown","_config","_elementRef","_viewContainerRef","cis","_positionService","_isInited","createLoader","onShown","onHidden","nativeElement","focus","setAriaDescribedBy","_ariaDescribedby","instance","popover","_delayTimeoutId","setOptions","modifiers","flip","enabled","preventOverflow","boundariesElement","showPopover","to","position","attachment","popoverContext","popoverTitle","_componentRef","calcPosition","deletePositionElement","cancelDelayedTooltipShowing","_popoverCancelShowFn","_timer","timer","parseTriggers","close","clearTimeout","toggle","i2$1","ɵdir","outputs","exportAs","PopoverModule","_PopoverModule","ComponentLoaderFactory","PositioningService","UsanaPopoverComponent","_UsanaPopoverComponent","onBlur","hidePopover","onFocus","onMouseEnter","onMouseLeave","CmsHubNavItemComponent","_CmsHubNavItemComponent","isFirstNavOpen","_document$querySelect","hasChildren","CmsHubNavItemComponent_div_6_Template","CmsHubNavItemComponent_span_7_Template","label","searchTags","CmsSideNavComponent","_CmsSideNavComponent","CmsSideNavComponent_div_1_Template","subLabel","CmsHubNavBlockContainerComponent","_CmsHubNavBlockContainerComponent","sideModalService","menuPath","openSideModalDetails","bodyTemplate","headerTemplate","isMobileSize","CmsHubNavBlockContainerComponent_ng_template_0_Template","CmsHubNavBlockContainerComponent_ng_template_2_Template","_r2","_r0","linkItem_r1","CmsHubNavSubgroupContainerComponent","_CmsHubNavSubgroupContainerComponent","CmsHubNavSubgroupContainerComponent_ul_1_Template","CmsImageLinkItemComponent","_CmsImageLinkItemComponent","image","CmsLinkItemComponent","_CmsLinkItemComponent","linkText","subTitle","CmsPanelContainerComponent","_CmsPanelContainerComponent","TABLE_HEADER_ICON","faTh","CmsPanelContainerComponent_ng_container_5_Template","EarningsOptInSelectors","getEarningsOptInStatus","earnings_opt_in_selectors_metadata","Toast","internalId","msgTag","interpolateTitle","interpolateMsg","getIcon","faCheck","faExclamation","faExclamationTriangle","ToastService","_ToastService","cnt","toasts","toastSubject","ReplaySubject","getToastSubject","updateSubject","removeWithInternalId","alert","CHECK_ICON","confirmChoice","EarningsOptInItemComponent","toastService","EarningsOptInItemComponent_div_4_Template","EarningsOptInItemComponent_div_12_Template","EarningsOptInItemComponent_div_14_Template","fpvEarning","tmp_1_0","optInStatus$","commissionEarning","tmp_3_0","tmp_4_0","earnings_opt_in_item_component_metadata","CmsComponentBindingDefinition","componentClass","bindData","componentRef","component","CmsPurplePageBindingDefinition","fullPath","LoadContestServiceRegistration","contestId","CompleteContestServiceRegistration","ContestApiService","_ContestApiService","httpClient","isRegistered","withCredentials","registerForContest","ContestServiceState","_ContestServiceState","contestApiService","loadRegistration","registrations","loading","genericCatchError","completeRegistration","responseObject","registered","canRegister","contest_service_state_metadata","ContestServiceSelectors","getRegistrations","getRegistrationByIdFn","contest_service_selectors_metadata","contestRegDetail","_r6","optIn","CmsContestOptInComponent_ng_container_2_div_12_Template","optInChecked","saving","CmsContestOptInComponent","_CmsContestOptInComponent","isNaN","cd","_this$optInCheckInput","optInCheckInput","checked","viewQuery","CmsContestOptInComponent_ng_container_2_Template","CmsContestOptInComponent_ng_template_3_Template","CmsSlideItemComponent_div_3_h2_1_Template","CmsSlideItemComponent","_CmsSlideItemComponent","CmsSlideItemComponent_div_3_Template","bannerImageText","CmsTitledItemComponent_section_1_div_5_Template","bannerImage","CmsTitledItemComponent","_CmsTitledItemComponent","CmsTitledItemComponent_section_0_Template","CmsTitledItemComponent_section_1_Template","CmsUsanaNewsContainerComponent_ng_container_3_div_2_Template","idx_r2","CmsUsanaNewsContainerComponent","_CmsUsanaNewsContainerComponent","CmsUsanaNewsContainerComponent_ng_container_3_Template","child_r1","isTranslationTag","BreadCrumbComponent_span_7_a_3_Template","BreadCrumbComponent_span_7_span_4_Template","BreadCrumbComponent","_BreadCrumbComponent","BreadCrumbComponent_span_7_Template","author","CmsUsanaNewsItemComponent","_CmsUsanaNewsItemComponent","CmsUsanaNewsItemComponent_div_12_Template","imageSrc240x240","ImageAlt","content1","imageSrc300x200","content2","HtmlToPlainTextPipe","_HtmlToPlainTextPipe","html","temp","innerHTML","textContent","innerText","pure","CmsUsanaNewsLandingItemComponent","summary","usana_news_landing_item_component_metadata","RelatedStoriesContainerComponent_ng_container_0_ng_container_6_Template","RelatedStoriesContainerComponent_ng_container_0_div_7_Template","RelatedStoriesContainerComponent","_RelatedStoriesContainerComponent","RelatedStoriesContainerComponent_ng_container_0_Template","CardsDirective","_CardsDirective","imgUrl","alt","CardsHorizontalComponent","_CardsHorizontalComponent","RelatedStoriesItemComponent","_RelatedStoriesItemComponent","imageSrc575x323","summaryArea160Count","TRAINING_CARD_SIZE","VERTICAL","HORIZONTAL","_c3","trainingCardSize","vertical","TrainingSubCategoryContainerComponent_ng_container_0_ng_container_7_ng_container_1_Template","TrainingSubCategoryContainerComponent_ng_container_0_ng_container_7_ng_template_2_Template","TrainingSubCategoryContainerComponent_ng_container_0_div_2_Template","TrainingSubCategoryContainerComponent_ng_container_0_ng_container_7_Template","showBreadcrumbs","TrainingSubCategoryContainerComponent","_TrainingSubCategoryContainerComponent","TrainingSubCategoryContainerComponent_ng_container_0_Template","CardsComponent","_CardsComponent","CardsComponent_p_7_Template","TrainingSubCategoryItemComponent","trainingSub","cardSize","getParentData","cmsItemById$","cmsItemByIdFn$","lookupFn","TrainingSubCategoryItemComponent_u_cards_0_Template","TrainingSubCategoryItemComponent_u_related_stories_item_1_Template","training_sub_category_item_component_metadata","ContestTypes","CVP","SVP","_typeof","defineProperty_defineProperty","_toPropertyKey","_toPrimitive","hint","prim","toPrimitive","res","NetworkStatus","setVariables","fetchMore","refetch","poll","ready","isNetworkRequestInFlight","networkStatus","serializeFetchParameter","serialized","parseError","readerIterator","responseIterator","isNodeResponse","isAsyncIterableIterator","isReadableStream","getReader","isStreamableBlob","stream","isBlob","arrayBuffer","promiseIterator","promise","resolved","catch","isNodeReadableStream","nodeStreamIterator","waiting","onData","chunk","shiftedArr","shift","err","pair","onEnd","removeListener","on","getNext","throwServerError","statusCode","status","PROTOCOL_ERRORS_SYMBOL","ApolloError","graphQLErrors","protocolErrors","clientErrors","networkError","errorMessage","extraInfo","generateErrorMessage","isExecutionPatchIncrementalResult","isApolloPayloadResult","mergeIncrementalData","prevResult","mergedData","incremental","parent_1","parseHeaders","headerText","headersInit","name_1","toLowerCase","parseJsonBody","bodyText","getResult","fallbackHttpConfig","includeQuery","includeExtensions","preserveHeaderCase","accept","defaultPrinter","printer","fromError","errorValue","backupFetch","fetch","createHttpLink","linkOptions","uri","preferredFetch","useGETForQueries","includeUnusedVariables","requestOptions","fetcher","checkFetcher","linkConfig","fetchOptions","credentials","chosenURI","fallbackURI","getContext","selectURI","clientAwarenessHeaders","clientAwareness","contextHeaders","contextConfig","transformedQuery","controller","selectHttpOptionsAndBodyInternal","removeDuplicateHeaders","normalizedHeaders_1","headerData","originalName","normalizedHeaders","filterOperationVariables","unusedNames","signal","AbortController","isSubscription","hasDefer","acceptHeader","rewriteURIForGET","queryParams","addQueryParam","serializedVariables","serializedExtensions","preFragment","fragmentStart","substr","queryParamsPrefix","newURI","currentFetch","observerNext","setContext","ctype","readMultipartBody","nextValue","__awaiter","decoder","contentType","delimiter","boundaryVal","boundary","buffer","running","searchFrom","bi","contentType_1","__generator","TextDecoder","sent","decode","payload","hasNext","parseAndCheckHttpResponse","text","abort","HttpLink","asyncMap","mapFn","catchFn","promiseQueue","makeCallback","examiner","both","graphQLResultHasError","getGraphQLErrorsFromResult","incrementalResult","iterateObserversSafely","observers","argument","observersWithMethod","obs","fixObservableSubclass","subclass","species","isPromiseLike","Concast","addObserver","removeObserver","handlers","notify","nextResultListeners","reason","iterable","deliverLastMessage","nextOrError","beforeNext","called","equalByQuery","aData","aRest","bData","bRest","equalBySelectionSet","aResult","bResult","seenSelections","selectionHasNonreactiveDirective","resultKey","aResultChild","bResultChild","childSelectionSet","aChildIsArray","bChildIsArray","length_1","directiveIsNonreactive","ObservableQuery","queryInfo","subObserver","defaultSubscriptionObserverErrorCallback","last","reobserve","tearDownQuery","waitForOwnResult","skipCacheDataFor","fetchPolicy","isTornDown","defaultOptions","watchQuery","defaultFetchPolicy","_f","initialFetchPolicy","queryId","generateQueryId","opDef","queryName","lastQuery","removeQuery","resetDiff","getCurrentResult","saveAsLastResult","lastResult","getLastResult","hasForcedResolvers","updateWatch","getDiff","partial","partialRefetch","logMissingFieldErrors","updateLastResult","isDifferentFromLastResult","newResult","hasNonreactiveDirective","getLast","variablesMustMatch","getLastError","resetLastResults","resetQueryStoreErrors","resetErrors","reobserveOptions","pollInterval","resetLastWrite","fetchMoreOptions","combinedOptions","qid","originalNetworkStatus","notifyOnNetworkStatusChange","observe","updatedQuerySet","fetchQuery","fetchMoreResult","finally","reobserveCacheFirst","subscribeToMore","startGraphQLSubscription","subscriptionData","silentSetOptions","mergedOptions","broadcastQueries","startPolling","updatePolling","stopPolling","applyNextFetchPolicy","nextFetchPolicy","newNetworkStatus","setObservableQuery","fetchConcastWithInfo","ssrMode","pollingInfo","timeout","interval","maybeFetch","skipPollAttempt","reobserveAsConcast","useDisposableConcast","oldVariables","oldFetchPolicy","finishWaitingForOwnResult","concast","reportResult","fromLink","resubscribeAfterError","lastError","isDifferent","errorResult","hasObservers","stopQuery","obsQuery","currentFetchPolicy","isSelectionNode","LocalState","client","resolvers","fragmentMatcher","selectionsToResolveCache","addResolvers","setFragmentMatcher","resolverGroup","setResolvers","getResolvers","runResolvers","remoteResult","onlyRunForcedResolvers","resolveDocument","localResult","getFragmentMatcher","clientQuery","serverQuery","prepareContext","addExportedVariables","buildRootValueFromCache","exportedVariables","shouldForceResolvers","forceResolvers","rootValue","mainDefinition","selectionsToResolve","definitionOperation","defaultOperationType","execContext","collectSelectionsToResolve","resolveSelectionSet","isClientFieldDescendant","resultsToMerge","resolveField","fieldResult","isInlineFragment","fragmentResult","aliasedFieldName","aliasUsed","defaultResult","resultPromise","resolverType","resolverMap","isClientField","resolveSubSelectedArray","isSingleASTNode","collectByDefinition","definitionNode","matches_1","__","___","spread","fragmentSelections","destructiveMethodCounts","wrapDestructiveCacheMethod","methodName","cancelNotifyTimeout","notifyTimeout","QueryInfo","lastRequestId","stopped","observableQuery","getDiffOptions","oq","updateLastDiff","setDiff","oldDiff","oqListener","shouldNotify","stop","watchOptions","watcher","lastWatch","lastWrite","shouldWrite","dmCount","markResult","cacheWriteBehavior","shouldWriteResult","errorPolicy","diffOptions","markReady","markError","ignoreErrors","writeWithErrors","IGNORE","QueryManager","queryDeduplication","onBroadcast","localState","defaultContext","queries","fetchCancelFns","queryIdCounter","requestIdCounter","mutationIdCounter","inFlightLinkObservables","defaultDocumentTransform","mutationStore","_info","stopQueryNoBroadcast","cancelPendingFetches","mutate","mutation","optimisticResponse","updateQueries","refetchQueries","awaitRefetchQueries","updateWithProxyFn","onQueryUpdated","_g","keepRootFields","mutationId","mutationStoreValue","isOptimistic","_h","generateMutationId","getVariables","markMutationOptimistic","getObservableFromLink","storeResult","markMutationResult","cacheWrites","skipCache","asQuery","updateQueries_1","updater","currentQueryResult","nextQueryResult","mutationResult","queryVariables","results_1","updateCache","isFinalResult","isExecutionPatchResult","isExecutionPatchInitialResult","include","getQueryStore","cacheEntry","defaultVars","generateRequestId","stopQueryInStore","stopQueryInStoreNoBroadcast","clearStore","getObservableQueries","queryNamesAndDocs","legacyQueryOptions","desc","isDocumentNode","getQuery","included","nameOrDoc","reFetchObservableQueries","includeStandby","observableQueryPromises","makeObservable","hasErrors","hasProtocolErrors","graphQLResultHasProtocolErrors","observablePromise_1","getLocalState","deduplication","inFlightLinkObservables_1","forceFetch","printedServerQuery_1","varJson_1","getResultsFromLink","requestId","linkDocument","aqr","isApolloError","containsDataFromLink","normalized","fromVariables","sourcesWithInfo","fetchQueryByPolicy","cleanupCancelFn","includedQueriesById","refetchWritePolicy","oldNetworkStatus","readCache","resultsFromCache","fromData","resultsFromLink","newContext","mergeOptions","hasSuggestedDevtools","ApolloClient","resetStoreCallbacks","clearStoreCallbacks","ssrForceFetchDelay","connectToDevTools","__APOLLO_CLIENT__","typeDefs","clientAwarenessName","clientAwarenessVersion","disableNetworkFetches","resetStore","devToolsHookCb","mutations","dataWithOptimisticResults","windowWithDevTools","devtoolsSymbol","top","__APOLLO_DEVTOOLS_GLOBAL_HOOK__","nav","ua","__actionHookForDevTools","__requestRaw","onResetStore","onClearStore","serializedState","setLocalStateFragmentMatcher","setLink","newLink","LineRegExp","getLocation","lastLineStart","matchAll","printLocation","printSourceLocation","sourceLocation","firstLineColumnOffset","locationOffset","padStart","lineIndex","lineNum","columnNum","locationStr","locationLine","subLineIndex","floor","subLineColumnNum","subLines","printPrefixedLines","subLine","existingLines","padLen","GraphQLError","rawArgs","_this$nodes","_nodeLocations$","_ref","positions","originalError","toNormalizedOptions","firstArg","undefinedIfEmpty","nodeLocations","loc","pos","originalExtensions","isObjectLike","captureStackTrace","output","formattedError","syntaxError","DirectiveLocation","SCHEMA","SCALAR","ARGUMENT_DEFINITION","INTERFACE","UNION","ENUM_VALUE","INPUT_OBJECT","INPUT_FIELD_DEFINITION","TokenKind","SOF","EOF","BANG","DOLLAR","AMP","PAREN_L","PAREN_R","SPREAD","COLON","EQUALS","AT","BRACKET_L","BRACKET_R","BRACE_L","PIPE","BRACE_R","BLOCK_STRING","COMMENT","Lexer","startOfFileToken","lastToken","lineStart","advance","lookahead","nextToken","readNextToken","isUnicodeScalarValue","isSupplementaryCodePoint","isLeadingSurrogate","isTrailingSurrogate","printCodePointAt","lexer","codePointAt","char","fromCodePoint","createToken","bodyLength","readComment","readBlockString","readString","readNumber","readName","firstCode","isFloat","readDigits","chunkStart","escape","readEscapedUnicodeVariableWidth","readEscapedUnicodeFixedWidth","readEscapedCharacter","point","readHexDigit","read16BitHexCode","trailingCode","currentLine","blockLines","instanceOf","env","NODE_ENV","_value$constructor","stringifiedValue","Source","Parser","sourceObj","isSource","_lexer","_options","_tokenCounter","parseName","expectToken","parseDocument","many","parseDefinition","parseOperationDefinition","hasDescription","peekDescription","keywordToken","parseSchemaDefinition","parseScalarTypeDefinition","parseObjectTypeDefinition","parseInterfaceTypeDefinition","parseUnionTypeDefinition","parseEnumTypeDefinition","parseInputObjectTypeDefinition","parseDirectiveDefinition","parseFragmentDefinition","parseTypeSystemExtension","unexpected","parseSelectionSet","parseOperationType","parseVariableDefinitions","parseDirectives","operationToken","optionalMany","parseVariableDefinition","parseVariable","parseTypeReference","expectOptionalToken","parseConstValueLiteral","parseConstDirectives","parseSelection","parseFragment","parseField","nameOrAlias","parseArguments","isConst","parseConstArgument","parseArgument","parseValueLiteral","hasTypeCondition","expectOptionalKeyword","parseFragmentName","parseNamedType","expectKeyword","allowLegacyFragmentVariables","parseList","parseObject","advanceLexer","parseStringLiteral","any","parseObjectField","parseDirective","innerType","parseDescription","parseOperationTypeDefinition","parseImplementsInterfaces","parseFieldsDefinition","delimitedMany","parseFieldDefinition","parseArgumentDefs","parseInputValueDef","parseUnionMemberTypes","parseEnumValuesDefinition","parseEnumValueDefinition","parseEnumValueName","getTokenDesc","parseInputFieldsDefinition","parseSchemaExtension","parseScalarTypeExtension","parseObjectTypeExtension","parseInterfaceTypeExtension","parseUnionTypeExtension","parseEnumTypeExtension","parseInputObjectTypeExtension","parseDirectiveLocations","parseDirectiveLocation","noLocation","getTokenKindDesc","atToken","openKind","parseFn","closeKind","delimiterKind","maxTokens","isPunctuatorTokenKind","docCache","fragmentSourceMap","printFragmentWarnings","experimentalFragmentVariables","parsed","stripLoc","processFragments","seenKeys","cacheKeyFromLoc","sourceKeySet","gql","literals","extras","disableFragmentWarnings","enableExperimentalFragmentVariables","disableExperimentalFragmentVariables","gql_1","default","fromPromise","promiseFn","ZoneScheduler","_defineProperty","work","queueScheduler","fixObservable","wrapWithZone","ngZone","observeOn","pickFlag","flag","QueryRef","wrapped","valueChanges","useInitialLoading","currentResult","hasError","opts","APOLLO_FLAGS","InjectionToken","APOLLO_OPTIONS","APOLLO_NAMED_OPTIONS","ApolloBase","_client","useMutationLoading","ensureClient","_options$useMutationL","startWith","extra","useZone","getClient","setClient","checkInstance","Apollo","_Apollo","_ngZone","apolloOptions","apolloNamedOptions","createDefault","isDefault","createNamed","use","removeClient","GET_CONTEST_STATS_QUERY","typedGQLTag","placeholders","gql$1","_t","__template","stats_r4","weeksLeftInContest","daysLeftInContest","pastCvpTotal","currentCvpTotal","pointsNeeded","weeklyGoal","prizeLevel","svp","CmsContestStatPageComponent_div_0_ng_container_1_div_1_div_1_Template","CmsContestStatPageComponent_div_0_ng_container_1_div_1_div_2_Template","CONTEST_TYPES","CmsContestStatPageComponent_div_0_ng_container_1_div_1_Template","contestStatsResponse_r1","contestStats","CmsContestStatPageComponent_div_0_ng_container_1_Template","CmsContestStatPageComponent","_CmsContestStatPageComponent","apollo","contestStatsResponse$","CmsContestStatPageComponent_div_0_Template","TASK_TRACKER_COLUMN_BREAKPOINTS","columnCount","defaultVisibleTaskCount","minPageWidth","LoadTaskTrackerProgramProgress","programKey","LoadTaskTrackerProgramProgressSuccess","programProgress","LoadTaskTrackerProgramProgressFailure","TaskTrackerProgramKey","ONBOARDING","STARTSHARINGPRODUCTS","PRODUCTS_TRAINING_MARKETS","TASK_TRACKER_SERVICE_URL","TaskTrackerService","_TaskTrackerService","getTaskTrackerProgramProgress","completeTask","taskKey","TASK_TRACKER_STATE_DEFAULTS","taskTrackerResults","TaskTrackerState","_TaskTrackerState","taskTrackerService","loadTaskTrackerProgramProgress","updatedTaskTrackerResults","errorLoading","mergeMap","loadTaskTrackerProgramProgressSuccess","loadTaskTrackerProgramProgressFailure","task_tracker_state_metadata","TaskTrackerSelectors","getTaskTrackerResults","getTaskTrackerResultLookupFn","getOnboardingTrainingResult","taskTrackerResultLookupFn","getUserHasOnboardingWidget","onboardingTrainingResult","_onboardingTrainingRe","userHasOnboardingWidget","userHasCompletedOnboardingTraining","isCompleted","pc","onboardingWidgetCutoffDate","getDateXDaysAfterDate","applicationDate","getTime","getCurrentDate","getOnboardingTrainingCompletedDate","_onboardingTrainingRe2","onboardingCompletedDate","lastCompletedTaskDateStr","tasks","task","completedDate","date","reverse","getProductsTrainingResult","getUserHasProductsTrainingWidget","productsTrainingResult","user","_productsTrainingResu","userHasProductsTrainingWidget","today","userMarketHasProductTraining","_onboardingTrainingRe3","dateMillis","days","dateCopy","setDate","getDate","coerceArray","task_tracker_selectors_metadata","getUser","hasV8BreakIterator","Intl","v8BreakIterator","Platform","_Platform","_platformId","isBrowser","isPlatformBrowser","EDGE","TRIDENT","BLINK","chrome","CSS","WEBKIT","IOS","FIREFOX","ANDROID","SAFARI","PLATFORM_ID","mediaQueriesForWebkitCompatibility","mediaQueryStyleNode","MediaMatcher","_MediaMatcher","_platform","_nonce","_matchMedia","matchMedia","noopMatchMedia","createEmptyStyleRule","nonce","sheet","insertRule","CSP_NONCE","media","addListener","BreakpointObserver","_BreakpointObserver","_mediaMatcher","_queries","_destroySubject","Subject","isMatched","splitQueries","mediaQuery","_registerQuery","mql","observables","stateObservable","combineLatest","take","skip","debounceTime","dueTime","scheduler","asyncScheduler","operate","activeTask","lastValue","lastTime","emit","emitWhenIdle","targetTime","createOperatorSubscriber","breakpointStates","breakpoints","takeUntil","a1","a2","MODAL_LOADING_SPINNER_STYLE","width","height","progressPercentage","ProgressPercentIndicatorComponent","_ProgressPercentIndicatorComponent","ProgressPercentIndicatorComponent__svg_path_6_Template","taskCompletion","TaskTrackerItemComponent_a_0_ng_container_9_Template","TaskTrackerItemComponent_a_0_ng_template_10_Template","actionUrl","headingTag","subTextTag","TaskTrackerItemComponent","_TaskTrackerItemComponent","TaskTrackerItemComponent_a_0_Template","TaskTrackerWidgetSkeletonLoaderComponent","_TaskTrackerWidgetSkeletonLoaderComponent","EnhancedReplacePipe","_EnhancedReplacePipe","inputText","findText","replaceText","addClasses","outputText","openTag","closeTag","fullReplaceText","OrderTasksPipe","_OrderTasksPipe","incompleteTasks","completedTasks","mostRecentCompletedTask","compareTasksByDateFn","compareTasksByDisplayOrderFn","task1","task2","displayOrder","taskTrackerResult","percentComplete","ctx_r13","subTextInitialTag","ctx_r14","subTextInProgressTag","progressPercentReplaceToken","TaskTrackerWidgetComponent_div_0_ng_template_2_ng_container_0_ng_container_11_div_1_Template","TaskTrackerWidgetComponent_div_0_ng_template_2_ng_container_0_ng_container_11_div_2_Template","subTextCompletedTag","ctx_r9","completedLinkUrl","completedLinkTextTag","ctx_r15","currentColumnCount","taskCompletion_r16","TaskTrackerWidgetComponent_div_0_ng_template_2_ng_container_0_div_15_div_1_Template","showMore","taskListLength","onShowMoreToggleClicked","TaskTrackerWidgetComponent_div_0_ng_template_2_ng_container_0_div_16_ng_container_8_Template","TaskTrackerWidgetComponent_div_0_ng_template_2_ng_container_0_div_16_ng_template_9_Template","ctx_r11","currentShownTasksCountReplaceToken","currentlyShownTaskCount","totalTasksCountReplaceToken","_r18","TaskTrackerWidgetComponent_div_0_ng_template_2_ng_container_0_div_3_Template","TaskTrackerWidgetComponent_div_0_ng_template_2_ng_container_0_ng_container_11_Template","TaskTrackerWidgetComponent_div_0_ng_template_2_ng_container_0_ng_template_12_Template","TaskTrackerWidgetComponent_div_0_ng_template_2_ng_container_0_div_14_Template","TaskTrackerWidgetComponent_div_0_ng_template_2_ng_container_0_div_15_Template","TaskTrackerWidgetComponent_div_0_ng_template_2_ng_container_0_div_16_Template","TaskTrackerWidgetComponent_div_0_ng_template_2_ng_container_0_div_17_Template","hideCompletedLink","TaskTrackerWidgetComponent_div_0_ng_template_2_ng_container_0_Template","TaskTrackerWidgetComponent_div_0_ng_container_1_Template","TaskTrackerWidgetComponent_div_0_ng_template_2_Template","TaskTrackerWidgetComponent","_TaskTrackerWidgetComponent","showMoreToggleClicked","EventEmitter","loadingSpinnerStyle","_this$taskTrackerResu","currentColumnSizeMapping","sizeMapping","current","isInRange","pageSize","_idx","completedId","TaskTrackerWidgetComponent_div_0_Template","taskTrackerResult$","pageSize$","TaskTrackerWidgetContainerComponent","breakpointObserver","_result","taskTrackerResultLookupFn$","TaskTrackerWidgetContainerComponent_u_task_tracker_widget_0_Template","task_tracker_widget_container_component_metadata","CmsTaskTrackerComponent","_CmsTaskTrackerComponent","taskTrackerProgramKey","CmsComponentService","getComponentFromType","getComponentFromTypeImm","PurplePageComponent","CmsItemComponent","_CmsItemComponent","cmsComponentService","profileSubscription","reloadThis","ngAfterViewInit","renderCmsItem","changes","cleanupItemSub","itemSubscription","placeholderData","newType","vc","componentType","setInput","updateVc","compRef","PerformanceService","mark","compToUse","createdComponent","createComponent","ViewContainerRef","_CarouselComponent_ng_container_1_li_2_Template","i_r6","selectSlide","$implicit","active","_CarouselComponent_ng_container_1_Template","indicatorsSlides","_CarouselComponent_ng_container_2_button_2_Template","i_r11","slide_r10","currentId","_CarouselComponent_ng_container_2_Template","_CarouselComponent_a_5_Template","_r15","previousSlide","checkDisabledClass","_CarouselComponent_a_6_Template","_r17","ctx_r16","nextSlide","a0","CarouselConfig","_CarouselConfig","noPause","noWrap","showIndicators","pauseOnFocus","indicatorsByChunk","itemsPerSlide","singleSlideOffset","Direction","UNKNOWN","NEXT","PREV","CarouselComponent","_CarouselComponent","activeSlide","multilist","isNumber","customActiveSlide","_slides","_currentActiveSlide","_select","_interval","restartTimer","slides","toArray","isFirstSlideVisible","indexes","getVisibleIndexes","isLastSlideVisible","_bsVer","platformId","isAnimated","activeSlideChange","slideRangeChange","startFromIndex","LinkedList","_currentVisibleSlidesIndex","isPlaying","getActive","slide","makeSlidesConsistent","order","_chunkedSlides","chunkByNumber","out","ceil","mapSlidesAndIndexes","selectInitialSlides","addSlide","removeSlide","remIndex","nextSlideIndex","isLast","currentSlideIndex","getCurrentSlideIndex","nextSlideFromInterval","force","move","getFirstVisibleIndex","findIndex","getLastVisibleIndex","findLastIndex","l","firstVisibleIndex","lastVisibleIndex","moveMultilist","findNextSlideIndex","keydownPress","keyCode","preventDefault","onMouseUp","pauseFocusIn","resetTimer","pauseFocusOut","selectSlideRange","isFirst","hideSlides","_slidesWithIndexes","slidesToAppend","selectRangeByNestedIndex","isIndexInRange","isIndexOnTheEdges","endIndex","selectedRange","slidesList","list","isVisibleSlideListLast","isVisibleSlideListFirst","moveSliderByOneItem","indexToHide","indexToShow","slideToHide","slideToShow","slidesToReorder","currentSlide","currentInterval","nInterval","buttonType","SlideComponent","_SlideComponent","carousel","itemWidth","_this$carousel","CarouselModule","_CarouselModule","childItem_r2","MiniCardCarouselComponent_div_0_slide_2_h4_5_Template","MiniCardCarouselComponent_div_0_slide_2_Template","MiniCardCarouselComponent","_MiniCardCarouselComponent","MiniCardCarouselComponent_div_0_Template","CmsPageComponent","_CmsPageComponent","route","router","destroy$","ANGULAR_JS_ESCAPED_SLASH","renderActivePage","events","NavigationEnd","startsWith","u","cmsPageData","extractCmsPageData","updatePageData","cmAdmin","correctedItemIds","isLegacyCmsUrl","isLegacyAngularJsCmsUrl","CmsPageComponent_u_cms_item_0_Template","ContestServiceModule","_ContestServiceModule","BreadCrumbModule","_BreadCrumbModule","HtmlToPlainTextModule","_HtmlToPlainTextModule","UsanaPopoverModule","_UsanaPopoverModule","EnhancedReplaceModule","_EnhancedReplaceModule","ReplaceModule","_ReplaceModule","CommonIconsModule","_CommonIconsModule","faLibrary","COMMON_ICONS","faInfoCircle","faQuestionCircle","faCheckCircle","faTimes","faChevronUp","faChevronDown","faChevronLeft","faChevronRight","faArrowRight","faArrowLeft","faArrowUp","faArrowDown","faSearch","faTrashAlt","faBan","addIcons","FontAwesomeModule","TaskTrackerNavigationTaskService","_TaskTrackerNavigationTaskService","HUB_NAVIGATION_TASKS","urlTest","matchingNavigationTask","trackedPage","TaskTrackerWidgetModule","_TaskTrackerWidgetModule","_navigationTaskService","LoadingSpinnerModule","CmsUsanaNewsLandingComponent","_CmsUsanaNewsLandingComponent","CmsModule","_CmsModule","RouterModule","UniversalLoadingSpinnerModule","UniversalLoadingButtonModule","i5","i6","CardsHorizontalModule","_CardsHorizontalModule","CardsModule","_CardsModule","TrainingCardsModule","_TrainingCardsModule","i7","MyAccountModule","_MyAccountModule","UsanaDatePipeModule","_UsanaDatePipeModule","UsanaDropdownModule","_UsanaDropdownModule","SideModalModule","_SideModalModule","NotificationListItemModule","_NotificationListItemModule","ForcedInputState","VALID","INVALID","UniversalBaseInputComponent","_UniversalBaseInputComponent","UniversalBaseComponent","dataTransformWrapperService","changeDetectorRef","differs","valueChanged","aFormOnTouched","aFormOnChange","processData","forcedAttr","forcedStateToAttribute","autofocus","registerOnTouched","onTouched","registerOnChange","onChange","bubbleValueChange","markTouched","aFormTouched","validate","control","validationFn","forcedState","FormInputTextBaseComponent","_FormInputTextBaseComponent","writeValue","setDisabledState","isDisabled","textChange","toggleBtn","ɵ_FormInputTextBaseComponent_BaseFactory","UnsafePipe","_UnsafePipe","domSanitizer","bypassSecurityTrustHtml","bypassSecurityTrustStyle","bypassSecurityTrustScript","bypassSecurityTrustUrl","bypassSecurityTrustResourceUrl","sanitize","SecurityContext","HTML","ɵpipe","CommonPipesModule","_CommonPipesModule","_SelectComponent_option_5_Template","_SelectComponent_option_6_Template","option_r3","selected","SelectComponent","_SelectComponent","FormInputTextBaseComponent$1","optionChanged","evt","ɵ_SelectComponent_BaseFactory","NG_VALUE_ACCESSOR","useExisting","forwardRef","NG_VALIDATORS","getAutomationId","i3$1","UniversalSelectInputModule","_UniversalSelectInputModule","UniversalBaseModule","ClickEscapeModule","ClickOutsideModule","_WidgetComponent_div_1_div_4_Template","headerLinkUrl","headerLinkText","_WidgetComponent_div_1_div_5_Template","getDropdownButtonData","_WidgetComponent_div_1_div_6_Template","widgetData","selectOptions","callbackFunction","getSelectData","_WidgetComponent_div_1_Template","dropdownMenuItems","selectMenuItems","WidgetComponent","_WidgetComponent","linkTextOptions","displayName","dropDownButtonOptions","automationId","isEllipsis","menuPlacement","menuItems","WidgetModule","_WidgetModule","UniversalDropdownButtonModule","NotificationWidgetModule","_NotificationWidgetModule","NotificationBellModule","_NotificationBellModule","NotificationDashboardModule","_NotificationDashboardModule","NotificationSettingsModule","_NotificationSettingsModule","NotificationSingleItemModule","_NotificationSingleItemModule","ActionsExecutedState","actions$","actionsExecutedSub","ngxsOnInit","tap","actionContext","_getState","actionType","getActionTypeFromInstance","decorators","r","getOwnPropertyDescriptor","Reflect","decorate","__decorate$1","ActionsExecutingState","_sub","_getState2","NgxsActionsExecutingModule","actionsExecuting","actionTypes","createSelector","actionsExecutingFn","NotificationsModule","_NotificationsModule","NotificationService","NotificationState","ReportViewTypes","Tree","Sheet","Bar","ReportsService","_ReportsService","getReportParams","report","getSavedReportParams","reportId","getReport","requestBody","reportType","defaultView","Accept","Version","getReportHelp","reportName","LoadReportData","reportVersion","LoadReportDataSuccess","reportData","LoadReportDataFailure","LoadReportParams","redirect","LoadReportParamsSuccess","reportParams","LoadReportParamsFailure","LoadSavedReportParams","ClearSavedReportParams","LoadSavedReportParamsSuccess","LoadSavedReportParamsFailure","initializeReportLoad","collection","modifyDataEntry","setReportDataToState","handleReportLoadError","dataEntry","newEntries","ReportEntryTypes","DataEntries","ParamEntries","REPORT_STATE_DEFAULTS","reportEntriesLocale","dataEntries","paramEntries","ReportsState","_ReportsState","reportService","loadReportData","_action$requestBody","modifyTreeParams","loadReportDataSuccess","loadReportDataFailure","loadReportParams","loadReportParamsSuccess","loadReportParamsFailure","navigate","loadSavedReportParams","loadSavedReportParamsSuccess","baseReportName","loadSavedReportParamsFailure","clearSavedReportParams","clearReportParams","runParams","treeParams","visibleColumns","visibleTreeColumns","reports_state_metadata","Router","ReportsModule","_ReportsModule","StateHelperService","_StateHelperService","incrementLoading","decrementLoading","ignoreUrlForLoadingSpinner","toTest","possibleHost","protocol","hostname","charToInteger","integerToChar","integer","hasContinuationBit","shouldNegate","TOKEN_LOGGER_CONFIG","NGXLoggerConfigEngine","_clone","level","serverLogLevel","updateConfig","partialUpdateConfig","partialConfig","configParamKey","getConfig","cloneConfig","TOKEN_LOGGER_CONFIG_ENGINE_FACTORY","NGXLoggerConfigEngineFactory","provideConfigEngine","TOKEN_LOGGER_MAPPER_SERVICE","NGXLoggerMapperService","httpBackend","sourceMapCache","logPositionCache","getLogPosition","stackLine","getStackLine","fileName","lineNumber","columnNumber","logPosition","getLocalPosition","enableSourceMaps","sourceMapLocation","getSourceMapLocation","getSourceMap","defaultProxy","proxiedSteps","positionStartIndex","positionEndIndex","dataArray","getTranspileLocation","locationStartIndex","locationEndIndex","file","mapFullPath","getMapping","sourceMap","sourceFileIndex","sourceCodeLine","sourceCodeColumn","mappings","generatedCodeColumn","columnIndex","decodedSection","vlq","distPosition","req","HttpRequest","distPositionKey","handle","HttpResponse","httpResponse","retry","configOrCount","resetOnSuccess","innerSub","soFar","subscribeForRetry","syncUnsub","resub","notifier","innerFrom","notifierSubscriber","shareReplay","logPosition$","TOKEN_LOGGER_METADATA_SERVICE","NGXLoggerMetadataService","datePipe","computeTimestamp","defaultTimestamp","toISOString","timestampFormat","getMetadata","additional","timestamp","i1$1","TOKEN_LOGGER_RULES_SERVICE","NGXLoggerRulesService","shouldCallWriter","disableConsoleLogging","shouldCallServer","serverLoggingUrl","shouldCallMonitor","TOKEN_LOGGER_SERVER_SERVICE","NGXLoggerServerService","serverCallsQueue","flushingQueue","addToQueueTimer","secureErrorObject","secureAdditionalParameters","secureMessage","alterHttpRequest","httpRequest","logOnServer","logContent","defaultRequest","finalRequest","alteredRequest","customiseRequestBody","flushQueue","sendToServerAction","secureMetadata","pMetadata","securedMetadata","customHttpHeaders","logOnServerAction","customHttpParams","HttpParams","httpResponseType","serverCallsOutsideNgZone","sendToServer","serverCallsBatchSize","serverCallsTimer","addLogToQueueAction","fq","TOKEN_LOGGER_WRITER_SERVICE","NgxLoggerLevel","TRACE","INFO","LOG","WARN","ERROR","FATAL","OFF","DEFAULT_COLOR_SCHEME","NGXLoggerWriterService","prepareMetaStringFuncs","getTimestampToWrite","getLevelToWrite","getFileDetailsToWrite","getContextToWrite","isIE","logFunc","logIE","logModern","disableFileDetails","prepareMetaString","metaString","prepareMetaStringFunc","metaItem","getColor","_config$colorScheme","configColorScheme","colorScheme","color","writeMessage","NGXLogger","configEngineFactory","metadataService","ruleService","mapperService","writerService","serverService","configEngine","trace","_log","fatal","setCustomHttpHeaders","getConfigSnapshot","setCustomParams","setWithCredentialsOptionValue","registerMonitor","monitor","_loggerMonitor","flushServerQueue","onLog","CustomNGXLoggerService","logger","logMonitor","getNewInstance","_params$config","_params$configEngineF","_params$metadataServi","_params$ruleService","_params$mapperService","_params$writerService","_params$serverService","LoggerModule","customProvider","configProvider","configEngineFactoryProvider","metadataProvider","ruleProvider","mapperProvider","writerProvider","serverProvider","forChild","LoggerService","_LoggerService","getLogger","SystemAlertService","_SystemAlertService","loggerService","getSystemAlerts","customerType","getCustomerType","alerts","SystemAlertsState","_SystemAlertsState","sysAlertSvc","setAlerts","getAlerts","userProfileState","SetSystemAlerts","deleteAlert","system_alerts_state_metadata","LoadSystemAlerts","DeleteSystemAlert","SystemAlertsModule","_SystemAlertsModule","UplineLeaderPlacementModule","_UplineLeaderPlacementModule","HttpLinkHandler","operationPrinter","requester","Observable$1","pick","prioritize","picked","useMultipart","isQuery","createHeadersWithClientAwareness","mergeHeaders","getAll","extractFiles","shouldUseBody","isBatching","multipartInfo","shouldUseMultipart","files","bodyOrParams","clone","param","form","FormData","reportProgress","_HttpLink","ErrorPageModule","_ErrorPageModule","NavigationState","_NavigationState","changeOpenNavigationLevel","navLevelOpen","updateTopNavHeight","topNavHeight","updateTopNavRender","fixedNav","fixed","mobileHide","ChangeOpenNavigationLevel","navigation_state_metadata","UpdateTopNavHeight","UpdateTopNavRender","NavigationLevel","COLLAPSE_ANIMATION_TIMING","expandAnimation","visibility","collapseAnimation","CollapseDirective","_CollapseDirective","_display","collapse","collapseNewValue","_isAnimationDone","isExpanded","_el","_builder","collapsed","collapses","expanded","expands","isCollapsed","isCollapse","isCollapsing","_stylesLoaded","_COLLAPSE_ACTION_NAME","_EXPAND_ACTION_NAME","_factoryCollapseAnimation","_factoryExpandAnimation","ngAfterViewChecked","animationRun","factoryAnimation","_this$_player","CollapseModule","_CollapseModule","_AccordionPanelComponent_button_4_Template","heading","AccordionConfig","_AccordionConfig","closeOthers","AccordionComponent","_AccordionComponent","groups","closeOtherPanels","openGroup","addGroup","removeGroup","AccordionPanelComponent","_AccordionPanelComponent","_isOpen","accordion","isOpenChange","panelClass","toggleOpen","AccordionModule","_AccordionModule","UsanaIconsModule","_UsanaIconsModule","USANA_ICONS","ChangeMarketModule","_ChangeMarketModule","TooltipModule","NavigationModule","_NavigationModule","HUB_GATEWAY_URL","HubCommonModule","_HubCommonModule","WindowSizingService","WindowToken","windowProvider","ID_TOKEN_NAME","FULLSTORY_WINDOW_OBJ_POLL_RATE","LOGIN_SERVICE_URL","httpLink","middleware","UsanaFullStoryModule","SsoSwitchUserModule","WithCredentialsInterceptor","_WithCredentialsInterceptor","intercept","NGXS_DEVTOOLS_OPTIONS","NgxsReduxDevtoolsPlugin","_injector","devtoolsExtension","globalDevtools","ɵglobal","__REDUX_DEVTOOLS_EXTENSION__","devToolsExtension","connect","disconnect","sendToDevTools","InitState","send","dispatched","prevState","actionsById","computedStates","currentStateIndex","nextLiftedState","actionId","actionPayload","devtoolsOptionsFactory","USER_OPTIONS","NgxsReduxDevtoolsPluginModule","NGXS_PLUGINS","OrderByPropertyPipe","_OrderByPropertyPipe","sortByField","sortOrder","sortedOutput","sortFn","objA","objB","compareValues","valA","valB","localeCompare","OrderByPropertyPipeModule","_OrderByPropertyPipeModule","UsanaPipesModule","_UsanaPipesModule","ConfirmationModalModule","_ConfirmationModalModule","FooterModule","_FooterModule","HubInterruptModule","_HubInterruptModule","AlertModule","UniversalButtonModule","UsanaLoggerModule","_UsanaLoggerModule","UsanaToastModule","_UsanaToastModule","ImportantDatesService","_ImportantDatesService","getImportantDates","importantDates","ScrollTopOnNavService","_ScrollTopOnNavService","scrollTopOnNav","getElementById","scrollTop","AvailableLocalesService","_AvailableLocalesService","getAvailableLocales","getUserSwitchableLocales","AppState","_AppState","importantDatesService","availableLocalesService","scrollTopOnNavService","numLoading","setMarkets","supportedMarkets","loadImportantDates","initializeApp","_ctx","_action","ForceLoadUserProfile","app_state_metadata","SetSupportedMarkets","LoadImportantDates","InitializeApp","SessionTimeoutModalComponent","_SessionTimeoutModalComponent","countDown","countdownInterval","logout","ok","AuthTimeoutHandler","AuthTimeoutStatus","timeoutAlert","timeoutAlertHandler","intervalHandler","startTimeoutAlert","startInterval","keptAlive","dt","afterInterval","TimeoutError","createErrorClass","schedulerArg","each","with","_with","timeoutErrorFactory","meta","isValidDate","originalSourceSubscription","timerSubscription","startTimer","executeSchedule","AuthenticationService","_AuthenticationService","cookieService","localeService","AUTH_KEEPALIVE_EVENTS","_event","eventTimestamp","shouldKeepAliveAtTime","keepAlive","ofActionDispatched","StartUserTimeout","startTimeout","NavigateToLogin","redirectUrl","setRedirectURL","getTemplateUrl","AuthenticationConstants","TEMPLATE_PREFIX","urlInBlacklist","loginRedirectURL","getRedirectURL","timeoutStatus","loginRequest","username","password","kiosk","loginUrl","Authorization","btoa","doLoginAnalytics","analyticsCustomerId","domain","domainParts","LEGACY_I18N_COOKIE_NAME","nextYear","expires","redirectToAnotherEntryPoint","setLocale","hubParams","loginSiteId","href","LOGIN_REDIRECT_URL","startLogout","forkJoin","_this$timeoutStatus","anonymizeSessionWithFullStory","Storage","sessionStorage","removeUser","shopLogoutData","portalLogoutData","getHubParams","currAttrs","newLogin","timeoutSeconds","doStartTimeout","hasUser","userSnap","EditUserProfile","hasUserRole","rolesToCheck","userAuthorities","authorities","pa","authority","createSessionWithConsent","_response$data","saveConsent","consentIdArray","idToken","_response$data2","showTimeoutAlert","DEFAULT_KEEP_ALIVE_INTERVAL","editEnabled","ignoreBackdropClick","modalSub","newEntryPointUrl","requestedStartingEntryPoint","queryParamMap","newEnrolleeRedirect","arrayValue","BLACKLISTED_REDIRECT_URLS","pushLoginAnalyticsToDataLayer","membershipLeVal","userStatus","sessionIdKey","session","getItem","cookie","LEGACY_SESSION_ID_COOKIE_NAME","setItem","ignoreEditingOn","toPromise","LOCATION_TOKEN","AuthResponseInterceptor","_AuthResponseInterceptor","authenticationService","i_r4","item_r3","consentList","ConsentDialogComponent_div_0_ng_container_9_Template","ConsentDialogComponent_div_0_div_11_Template","submit","formData","consent","controls","showAlert","ConsentDialogComponent","_ConsentDialogComponent","fb","formSubmitted","isFirstCheckboxClicked","_this$consent","FormControl","requiredTrue","_this$consent2","_this$consent3","_this$consent4","_this$consent5","_this$consent6","_this$consent7","cancelShowAlert","_this$consent8","_this$consentList","_this$consent9","success","ConsentDialogComponent_div_0_Template","PopupModalService","_PopupModalService","openModalWithTemplate","openModalWithComponent","LOCK_ICON","LoginComponent_div_0_div_8_fa_icon_2_Template","isValid","loginError","login","LoginComponent_div_0_div_8_Template","togglePasswordVisibility","LoginComponent_div_0_span_21_Template","LoginComponent_div_0_ng_template_22_Template","showError","fieldTextType","loginBtnDisabled","LoginComponent","_LoginComponent","popupModalService","faLock","loaded","isKiosk","checkLoginSub","defaultRedirect","ssoEnabled","redirectToSso","fullLocale","startParamToUri","isSignedCompletely","signed","_result$session","handleLoginFailedResponse","validateFail","searchParams","redirectUri","market","kioskPart","LoginComponent_div_0_Template","Error401Component","_Error401Component","HOME_ICON","faHome","Error404Component","_Error404Component","UsanaDatePipe","_UsanaDatePipe","DatePipe","format","timezone","userLocale","getI18NLocale","notificationContent_r6","NotificationListItemComponent_ng_container_8_ng_container_1_Template","part","_r10","onDelete","notification","category","displayText","notificationData_r12","NotificationListItemComponent_ng_template_17_div_9_span_1_Template","NotificationListItemComponent_ng_template_17_div_9_Template","icon","notificationTime","NotificationListItemComponent","_NotificationListItemComponent","viewNotification","deleteNotification","closeModal","NOTIFICATION_ICON_MAP","faEnvelope","onSelect","NotificationListItemComponent_ng_container_8_Template","NotificationListItemComponent_button_10_Template","NotificationListItemComponent_ng_template_15_Template","NotificationListItemComponent_ng_template_17_Template","deleted","LoadingSpinnerComponent","_LoadingSpinnerComponent","customStyle","activeNotification","notification_r4","navigateToNotificationPage","NotificationWidgetContentComponent","_NotificationWidgetContentComponent","notificationService","displayedNotifications","markAsRead","DeleteNotification","trackById","loadingNotifications","NotificationWidgetContentComponent_ng_container_1_Template","NotificationWidgetContentComponent_div_2_Template","NotificationWidgetContentComponent_div_3_Template","NotificationWidgetContentComponent_div_4_Template","NotificationWidgetComponent","_NotificationWidgetComponent","notifications","getDropdownMenuItems","unReadAmount","getMenuItemsTranslations","translateService","getTranslationForFilter","NOTIFICATION_TRANSLATION_TAGS","widgetTitle","menuItem","getWidgetData","NotificationDashboardComponent","LoadArchivedNotifications","switchNotificationView","viewType","isArchivedView","archivedNotifications$","currentNotifications$","loadArchivedNotifications$","loadCurrentNotifications$","NotificationSelectors","getCurrentNotifications","notification_dashboard_component_metadata","getArchivedNotifications","LoadCurrentNotifications","NotificationSettingsContainerComponent","_NotificationSettingsContainerComponent","notificationContent_r4","NotificationSingleItemComponent_div_1_div_7_span_1_Template","notificationData_r7","NotificationSingleItemComponent_div_1_div_14_span_1_Template","NotificationSingleItemComponent_div_1_div_7_Template","NotificationSingleItemComponent_div_1_div_14_Template","NotificationSingleItemComponent","_NotificationSingleItemComponent","notificationFound","LoadSingleNotification","getQueryString","singleNotification","NotificationSingleItemComponent_div_0_Template","NotificationSingleItemComponent_div_1_Template","LoadFpvReport","FpvReportService","_FpvReportService","getFpvReport","fpvReport","FpvReportState","_FpvReportState","usanaFpvReportService","monthInMillis","loadUsanaFpvReport","pagedDocument","maxDays","fpv_report_state_metadata","FpvReportSelectors","row_r4","BaoyingFpvReportComponent_div_0_div_29_tr_26_Template","fpvReport_r1","totalNewThisMonth","totalAvailable","BaoyingFpvReportComponent_div_0_div_29_Template","fpv_report_selectors_metadata","BaoyingFpvReportComponent","BaoyingFpvReportComponent_div_0_Template","fpvReport$","baoying_fpv_report_component_metadata","UPLINE_LEADER_REPORT_NAME","UPLINE_LEADER_DEFAULT_VALUES","pageNum","businessCenter","displayLevels","BaoyingUplineReportSelectors","mapBaoyingUplineReport","groupTitle","report_r5","UplineLeaderPlacementComponent_div_4_div_1_div_7_Template","uplineReport_r3","UplineLeaderPlacementComponent_div_4_div_1_Template","upLinePlacementReport","upline_leader_selectors_metadata","UplineLeaderPlacementComponent","_UplineLeaderPlacementComponent","UplineLeaderPlacementComponent_div_4_Template","UplineLeaderPlacementComponent_div_5_Template","BaoyingUplineLeaderReportComponent","_BaoyingUplineLeaderReportComponent","reportRequestBody","reports","upLineLeaderReport","baoyingUplineLeaderReport","LoadCommissionWeeks","LoadBaoyingVolumeReport","SetCommissionWeek","commissionWeek","BaoyingVolumeReportService","_BaoyingVolumeReportService","getCommissionWeeks","commissionWeeks","getBaoyingVolumeReport","baoyingVolumeReport","BaoyingVolumeReportState","_BaoyingVolumeReportState","baoyingReportService","loadCommissionWeeks","setCommissionWeek","loadBaoyingVolumeReport","volume","baoying_volume_report_state_metadata","BaoyingVolumeReportSelectors","getCommissionWeek","getVolume","baoying_volume_report_selectors_metadata","week_r6","row_r7","changeCommissionWeek","BaoyingVolumeReportComponent_div_4_option_6_Template","BaoyingVolumeReportComponent_div_4_tr_67_Template","commissionWeeks$","volumeReport_r2","BaoyingVolumeReportComponent","BaoyingVolumeReportComponent_div_4_Template","BaoyingVolumeReportComponent_div_6_Template","volumeReport$","baoying_volume_report_component_metadata","NavigationSelectors","getNavLevel","getTopNavHeight","isNavFixed","getNavRenderOffset","navigation_selectors_metadata","PcBlockedModalComponent","_PcBlockedModalComponent","HomeBannerComponent","_HomeBannerComponent","placeholderItem","USANA_NEWS_ROOT_ID","UsanaNewsItem","UsanaNewsItemObject","dataType","CmsItemService","_CmsItemService","getValueFromLinkData","usanaNewsItem","UsanaNewsModalComponent","_UsanaNewsModalComponent","stateSubs","UsanaNewsModalComponent_img_6_Template","UsanaNewsModalComponent_div_8_Template","UsanaNewsModalComponent_div_9_Template","UsanaNewsModalComponent_div_10_Template","UsanaNewsModalComponent_div_11_Template","usanaNewsModalItem","restoredCtx","usanaNewsItem_r3","index_r4","openUsanaNewsDetails","UsanaNewsWidgetComponent_div_15_ng_template_2_Template","UsanaNewsWidgetComponent_div_15_ng_template_4_Template","UsanaNewsWidgetComponent","cmsItemService","getUsanaNews","usanaNews","loadingUsanaNews","linkType","childItemId","observeLinkedUsanaNews","openUsanaNewsModal","openUrl","itemUrl","linkedCmsItemById$","linkedCmsItemByIdFn$","linkedUsanaNews","UsanaNewsWidgetComponent_div_15_Template","UsanaNewsWidgetComponent_div_16_Template","UsanaNewsWidgetComponent_div_17_Template","usana_news_widget_component_metadata","QuickLinksService","_QuickLinksService","QUICK_LINKS_ARRAY","quickLinks","quickLinks_r1","iconClass","fontAwesomeIcons","QuickLinksComponent_div_2_ng_container_4_Template","QuickLinksComponent_div_2_ng_template_5_Template","quickLinksObj","translationTag","QuickLinksComponent","_QuickLinksComponent","quickLinksService","_index","quickLink","QuickLinksComponent_div_2_Template","LoadPacesetterWidget","PacesetterWidgetState","_PacesetterWidgetState","pacesetterWidgetService","loadPacesetterWidget","getPacesetterWidgetData","pacesetterWidget","setPacesetterState","userName","recognitionName","firstName","pacesetterData","pacesetter","isFinalizedLife","platinum","isFinalizedAnnual","isFinalized","isQualified","isInProgress","isQualPeriodOver","qualPeriodOver","isHidden","daysRemaining","pacesetter_widget_state_metadata","PacesetterWidgetService","PacesetterWidgetSelectors","getPacesetterWidget","pacesetter_widget_selectors_metadata","_ProgressbarComponent_ng_container_0_Template","_ProgressbarComponent_ng_template_1_Template","striped","_ProgressbarComponent_ng_template_3_bar_0_Template","item_r6","_ProgressbarComponent_ng_template_3_Template","_values","BarComponent","_BarComponent","percent","_changes$value","_changes$max","currentValue","applyTypeClasses","_prevType","barTypeClass","bgClass","toFixed","ProgressbarConfig","_ProgressbarConfig","ProgressbarComponent","_ProgressbarComponent","isStacked","ProgressbarModule","_ProgressbarModule","CIRCLE_CHECK_ICON","getDaysRemainingTranslation","changePeopleBlue","indexOfElement_r22","numberSponsored","USER_ICON","ctx_r19","PacesetterWidgetComponent_div_0_div_22_div_7_Template","PacesetterWidgetComponent_div_0_div_22_span_9_Template","PacesetterWidgetComponent_div_0_div_22_span_10_Template","PacesetterWidgetComponent_div_0_div_22_span_11_Template","PacesetterWidgetComponent_div_0_div_22_span_12_Template","PacesetterWidgetComponent_div_0_div_22_div_13_Template","PacesetterWidgetComponent_div_0_div_22_ng_template_23_Template","PacesetterWidgetComponent_div_0_div_22_ng_template_37_Template","PacesetterWidgetComponent_div_0_div_22_span_41_Template","PacesetterWidgetComponent_div_0_div_22_span_44_Template","PacesetterWidgetComponent_div_0_div_22_span_45_Template","PacesetterWidgetComponent_div_0_div_22_span_46_Template","PacesetterWidgetComponent_div_0_div_22_span_47_Template","imgPicker","_r12","INFO_CIRCLE_ICON","totalVolume","requiredVolume","_r14","requiredSponsored","ctx_r25","ctx_r33","indexOfElement_r39","ctx_r35","ctx_r36","ctx_r37","PacesetterWidgetComponent_div_0_div_23_div_7_Template","PacesetterWidgetComponent_div_0_div_23_span_9_Template","PacesetterWidgetComponent_div_0_div_23_span_10_Template","PacesetterWidgetComponent_div_0_div_23_span_11_Template","PacesetterWidgetComponent_div_0_div_23_span_12_Template","PacesetterWidgetComponent_div_0_div_23_div_13_Template","PacesetterWidgetComponent_div_0_div_23_ng_template_23_Template","PacesetterWidgetComponent_div_0_div_23_ng_template_37_Template","PacesetterWidgetComponent_div_0_div_23_span_41_Template","PacesetterWidgetComponent_div_0_div_23_span_44_Template","PacesetterWidgetComponent_div_0_div_23_span_45_Template","PacesetterWidgetComponent_div_0_div_23_span_46_Template","PacesetterWidgetComponent_div_0_div_23_span_47_Template","PacesetterWidgetComponent_div_0_ng_template_10_Template","_r41","ctx_r40","switchPaceSetterView","ctx_r42","PacesetterWidgetComponent_div_0_div_22_Template","PacesetterWidgetComponent_div_0_div_23_Template","PacesetterWidgetComponent_div_0_div_24_Template","_c4","showPacesetterTab","showPlatinumTab","PacesetterWidgetComponent","faUser","faCircleCheck","isWidgetHidden","defaultTo","pacesetterType","PacesetterWidgetComponent_div_0_Template","pacesetter_widget_component_metadata","AppSelectors","getIsLoading","getSupportedMarkets","app_selectors_metadata","key_r2","ImportantDatesComponent_div_0_slide_2_Template","importantDateKeys","trackByImportantDateKey","ImportantDatesComponent","_ImportantDatesComponent","observeImportantDates","ImportantDatesComponent_div_0_Template","BAOYING_FPV_WIDGET_TAGS","fpvWidgetTitleTag","totalFpvLabelTag","expiresLabelTag","expiresSoonLabelTag","pointsLabelTag","errorLoadingTag","imageTag","cartUrlTag","fpvWidgetTags","FpvWidgetComponent_div_3_div_17_span_5_Template","FpvWidgetComponent_div_3_div_17_span_6_Template","value_r4","FpvWidgetComponent_div_3_div_17_Template","currencyCode","FpvWidgetComponent","_FpvWidgetComponent","loadingFpvReport","FpvWidgetComponent_div_3_Template","FpvWidgetComponent_div_4_Template","FpvWidgetComponent_div_5_Template","loadFpvReport$","baoyingFpvWidgetTags","BaoyingFpvWidgetComponent_div_0_u_fpv_widget_2_Template","BaoyingFpvWidgetComponent","BaoyingFpvWidgetComponent_div_0_Template","baoying_fpv_widget_component_metadata","CHART_OPTIONS","responsive","maintainAspectRatio","layout","padding","bottom","scales","beginAtZero","ticks","grid","stepSize","BAOYING_BAR_CHART_DATA","labels","datasets","maxBarThickness","backgroundColor","borderColor","hoverBackgroundColor","hoverBorderColor","borderWidth","USANA_DATA_VIEWS","DataViewComponent","_DataViewComponent","componentFactoryResolver","paginate","renderDataView","componentInstance","setMetadata","setData","componentFactory","resolveComponentFactory","dataView","dataViewName","barChartData","moveVolume","BaoyingVolumeWidgetComponent_div_2_span_5_Template","BaoyingVolumeWidgetComponent_div_2_span_6_Template","BaoyingVolumeWidgetComponent_div_2_div_9_Template","BaoyingVolumeWidgetComponent_div_2_table_10_Template","BaoyingVolumeWidgetComponent_div_2_div_11_Template","validNewIndex","hasVolumeToShow","BaoyingVolumeWidgetComponent","loadWidgetData","getLabelTranslation","volumeReportSub","volumeReport","volumeIndex","buildVolumeChartData","mapCommissionWeeksSelect","typeList","amountToChange","hasNextPage","filterValues","getTranslationPromise","translation","BaoyingVolumeWidgetComponent_div_2_Template","BaoyingVolumeWidgetComponent_div_3_Template","BaoyingVolumeWidgetComponent_div_4_Template","loadBaoyingVolumeReport$","baoying_volume_widget_component_metadata","BaoyingHomePageComponent_div_0_span_5_Template","BaoyingHomePageComponent_div_0_div_17_Template","navOffset$","notifications$","BaoyingHomePageComponent","blockIfPc","keyboard","onHide","BaoyingHomePageComponent_div_0_Template","baoying_home_page_component_metadata","routes","pathMatch","redirectTo","anonAllowed","canActivate","nonPcOnlyCanActivate","_route","inject","userProfileResolverFn","loadChildren","__webpack_require__","PurplePagesModule","BaoyingAboutMeModule","ImageUploadModule","BaoyingAppHubRoutingModule","_BaoyingAppHubRoutingModule","useHash","PageTitleService","_PageTitleService","titleService","translationService","PAGE_TITLE_TAG","setTitle","BAOYING_MY_ACCOUNT_LIST","hideForPc","hideForCountries","BAOYING_QUICK_LINKS_DATA","addUserToken","faUserPlus","orderBy","faShoppingCart","faUndoAlt","faFileAlt","faFileChartLine","MyAccountService","_MyAccountService","myAccount","MY_ACCOUNT_LIST","BAOYING_SOCIAL_MEDIA_LINKS","hideCountry","qrText","qrImage","svg","BAOYING_FOOTER_IMAGE","isLarge","BAOYING_FOOTER_DISCLAIMERS","BAOYING_FOOTER_COLUMNS","link_r8","FooterComponent_div_0_div_8_div_6_div_1_Template","showForCountry","column_r6","footerSectionExpanded","FooterComponent_div_0_div_8_div_6_Template","socialMediaLinks","socialMediaLink_r15","socialMediaTemplate","FooterComponent_div_0_div_9_span_5_ng_container_1_Template","footerGovLogos","img","FooterComponent_div_0_div_9_span_5_Template","FooterComponent_div_0_div_9_div_6_Template","footerEmail_r20","footerPhone_r21","FooterComponent_div_0_ng_container_11_a_13_Template","FooterComponent_div_0_ng_container_11_a_16_Template","FooterComponent_div_0_div_8_Template","FooterComponent_div_0_div_9_Template","FooterComponent_div_0_ng_container_10_Template","FooterComponent_div_0_ng_container_11_Template","FooterComponent_div_0_div_13_Template","footerImg","disclaimers","trackByDisclaimer","FooterComponent","_FooterComponent","getHyphenatedLocale","country","footer","disclaimer","countries","FooterComponent_div_0_Template","coreSecureToken","SystemAlertsSelectors","system_alerts_selectors_metadata","i_r2","closeAlert","alert_r1","SystemAlertComponent","alertId","switchBack","switchToUser","userId","SwitchUserComponent_span_1_ng_template_2_div_3_Template","SwitchUserComponent_span_1_ng_container_1_Template","SwitchUserComponent_span_1_ng_template_2_Template","currentlySwitched","dismissSwitchUserAlert","switchUserAlert_r11","loginInterrupt_r18","_r20","SwitchUserComponent_div_2_div_2_li_10_Template","ctx_r21","onReloadPageClicked","loginResponse","interrupts","SwitchUserComponent_div_2_div_1_Template","SwitchUserComponent_div_2_div_2_Template","SystemAlertComponent_div_0_Template","alerts$","system_alert_component_metadata","SwitchUserComponent","dropdownRef","dropdown","setupDropdownSub","hasAuthority","profileSub","userProfle","switchUserAuthority","switchedUser","dropDownSub","ClearSwitchUserAlertClicked","SwitchUser","SwitchBack","ReloadSwitchedUserClicked","BsDropdownDirective","SwitchUserComponent_span_1_Template","SwitchUserComponent_div_2_Template","switchUserAlert$","getSwitchUserAlert","switch_user_component_metadata","NotificationBellComponent","NOTIFICATION_BELL_ICON","faBell","openModal","NotificationBellComponent_span_1_Template","NotificationBellComponent_ng_template_3_Template","NotificationBellComponent_ng_template_5_Template","notification_bell_component_metadata","UNSUPPORTED_MARKETS","EURO_MARKETS","ChangeMarketWarningComponent","_ChangeMarketWarningComponent","toggleMarketNotification","removeSpaces","country_r3","GLOBE_ICON","loc_r9","selectMarket","MarketListComponent_accordion_1_accordion_group_1_button_12_span_1_Template","MarketListComponent_accordion_1_accordion_group_1_button_12_span_2_Template","selectedLocale","MarketListComponent_accordion_1_accordion_group_1_span_4_Template","MarketListComponent_accordion_1_accordion_group_1_span_5_Template","MarketListComponent_accordion_1_accordion_group_1_span_8_Template","MarketListComponent_accordion_1_accordion_group_1_button_12_Template","selectedCountry","localesInCountry","trackByLocale","MarketListComponent_accordion_1_accordion_group_1_Template","markets","trackByCountry","loc_r17","_r22","ctx_r23","MarketListComponent_accordion_2_accordion_group_1_span_4_Template","MarketListComponent_accordion_2_accordion_group_1_span_5_Template","MarketListComponent_accordion_2_accordion_group_1_Template","MarketListComponent","_MarketListComponent","faGlobe","marketSelection","setSelectedCountry","st","countryObj","localeObj","MarketListComponent_accordion_1_Template","MarketListComponent_accordion_2_Template","MarketSelectorComponent","_MarketSelectorComponent","filteredMarkets","customerTypes","CustomerTypes","asscViewIsActive","isPc","pcViewIsActive","selectedType","preferredCustomer","associate","filterMarketList","changeAssocTypeMarketDisplay","euroMarkets","MarketSelectorComponent_span_3_Template","MarketSelectorComponent_span_4_Template","tmp_0_0","changeMarket","supportedMarkets$","countryLanguageMap","tmp_2_0","ChangeMarketIconComponent","setModalVisibility","executiveTitle","earningType_r5","MyAccountDetailsComponent_div_0_div_6_div_3_div_1_Template","MyAccountDetailsComponent_div_0_div_6_div_1_Template","MyAccountDetailsComponent_div_0_div_6_div_2_Template","MyAccountDetailsComponent_div_0_div_6_div_3_Template","ChangeMarketIconComponent_span_1_Template","ChangeMarketIconComponent_fa_icon_4_Template","ChangeMarketIconComponent_ng_template_7_Template","ChangeMarketIconComponent_ng_template_9_Template","change_market_icon_component_metadata","MyAccountDetailsComponent_div_0_div_6_Template","fullName","baoying","MyAccountDetailsComponent","myAccount_r1","MyAccountListComponent_div_2_div_1_Template","showLink","MyAccountDetailsComponent_div_0_Template","my_account_details_component_metadata","MyAccountListComponent","_MyAccountListComponent","myAccountService","hideForCountry","account","MyAccountListComponent_div_2_Template","MyAccountIconComponent","_MyAccountIconComponent","MY_ACCOUNT_ICON","faUserAlt","MyAccountIconComponent_ng_template_2_Template","MyAccountIconComponent_ng_template_4_Template","TopNavComponent_div_0_div_1_span_5_Template","TopNavComponent_div_0_div_1_span_6_Template","EXCLAMATION_TRIANGLE_ICON","createNewCmsPage","showFinder","showLinkBuilder","TopNavComponent_div_0_div_10_div_2_span_1_ul_6_Template","TopNavComponent_div_0_div_10_div_2_span_1_Template","TopNavComponent_div_0_div_10_div_2_span_2_Template","contentEditor","showAdmin","TopNavComponent_div_0_div_10_div_2_Template","TopNavComponent_div_0_div_11_u_change_market_icon_1_Template","TopNavComponent_div_0_div_11_u_notification_bell_2_Template","TopNavComponent_div_0_div_11_u_my_account_icon_3_Template","TopNavComponent_div_0_div_1_Template","openFirstLevelNav","navigateHome","TopNavComponent_div_0_div_10_Template","TopNavComponent_div_0_div_11_Template","navRender","isFixedNav","isMobileHide","showConnectionBar","BARS_ICON","CustomerTypeCodes","affiliate","TopNavComponent","faBars","scroll","alertSubs","setSideNavTop","onscroll","currentHeight","offsetHeight","updateHeight","currentScroll","currentMobileHide","currentScrollCondition","currentFixedNav","FIRST","TopNavComponent_div_0_Template","top_nav_component_metadata","NavigationHeaderComponent","_NavigationHeaderComponent","closeNav","onResize","NavigationComponent_div_0_ng_container_5_a_4_Template","NavigationComponent_div_0_ng_container_5_ng_template_5_Template","NavigationComponent_div_0_u_nav_header_1_Template","NavigationComponent_div_0_ng_container_5_Template","NavigationComponent_div_0_ng_container_8_Template","NavigationComponent_div_0_ng_container_9_Template","NavigationComponent_div_0_u_cms_item_11_Template","showMobileNav","topNavHeight$","NavigationComponent","NavigationComponent_div_0_Template","navigation_component_metadata","SideModalContainerComponent","_SideModalContainerComponent","sideModalContainer","toast_r1","ToastDisplayComponent_alert_0_span_4_Template","getGlyphicon","ToastDisplayComponent","_ToastDisplayComponent","toastSubscription","detectChanges","toast","trackByInternalId","ToastDisplayComponent_alert_0_Template","asyncGeneratorStep","gen","_next","_throw","InterruptType","KYC_DOC_UPLOAD","NOTIFICATION_GENERIC","NOTIFICATION_SMS","HubInterruptComponent","_HubInterruptComponent","interruptIdx","getInterruptNotifications","customerId","getCustomer","customer","customerDocsVerification","isVerified","existingTypes","modaling","loadNextModal","hideSub","_asyncToGenerator","interrupt","KycRequiredModalComponent","openModalWithComponentAndOptions","closeInterceptor","rejectAllCloseInterceptor","NotificationSmsInterruptComponent","backdrop","NotificationGenericInterruptComponent","footerColumns","iconClass_r8","svg_r7","qrImage_r5","qrText_r6","BaoyingHubLayoutComponent","_BaoyingHubLayoutComponent","BaoyingHubLayoutComponent_u_top_nav_7_Template","BaoyingHubLayoutComponent_u_navigation_9_Template","BaoyingHubLayoutComponent_div_13_Template","BaoyingHubLayoutComponent_ng_template_15_Template","BaoyingHubComponent","pageTitleService","locale$","_locale","isLoading$","user$","baoying_app_hub_component_metadata","BaoyingIconsModule","_BaoyingIconsModule","BAOYING_ICONS","BaoyingUplineLeaderReportModule","_BaoyingUplineLeaderReportModule","BaoyingVolumeReportModule","_BaoyingVolumeReportModule","CbecRedirectionService","_CbecRedirectionService","redirectToCN_CBEC","redirectToCbec","isInitialized","tokenElement","idTokenElement","refreshTokenElement","redirectUrlElement","ssoIdToken","ssoRefreshToken","zh","AUD","BYN","CNY","ILR","JPY","KRW","PHP","RUR","TWD","USD","XXX","plural","BAOYING_SUPPORTED_LOCALE_MAP","ZHLocale","HomeState","_HomeState","setHomeWidgets","widgets","configuration","SetHomeWidgets","home_state_metadata","HomeModule","_HomeModule","ImportantDatesModule","_ImportantDatesModule","PacesetterWidgetModule","_PacesetterWidgetModule","FullDateTimeWithTimezoneModule","UsanaNewsModule","_UsanaNewsModule","QuickLinksModule","_QuickLinksModule","BaoyingFpvReportModule","_BaoyingFpvReportModule","FpvWidgetModule","_FpvWidgetModule","BaoyingFpvWidgetModule","_BaoyingFpvWidgetModule","BaoyingFpvModule","_BaoyingFpvModule","DEFAULT_BAR_CHART_OPTIONS","interaction","intersect","mode","plugins","legend","tooltip","titleFont","titleColor","bodyFont","bodyColor","cornerRadius","stacked","uid","isNullOrUndef","isNumberFinite","isFinite","finiteOrDefault","valueOrDefault","loopable","_elementsEqual","ilen","v0","v1","datasetIndex","clone$1","klen","isValidKey","_merger","tval","sval","mergeIf","_mergerIf","keyResolvers","resolveObjectKey","_getKeyResolver","_splitKey","parts","tmp","_capitalize","defined","isFunction","setsEqual","PI","TAU","INFINITY","POSITIVE_INFINITY","RAD_PER_DEG","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","log10","sign","niceNum","range","roundedRange","almostEquals","niceRange","fraction","epsilon","_setMinAndMaxByKey","toRadians","degrees","toDegrees","radians","_decimalPlaces","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","sqrt","angle","atan2","distance","distanceBetweenPoints","pt1","pt2","_normalizeAngle","_angleBetween","sameAngleIsFullCircle","angleToStart","angleToEnd","startToAngle","endToAngle","_limitValue","_isBetween","_lookup","table","cmp","mid","hi","lo","_lookupByKey","_rlookupByKey","arrayEvents","unlistenArrayEvents","stub","_chartjs","_arrayUnique","requestAnimFrame","requestAnimationFrame","throttled","updateFn","updateArgs","ticking","_alignStartEnd","align","atEdge","elasticIn","sin","elasticOut","effects","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","cos","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","lim","h","p2b","n2b","b2n","n2p","map$1","A","B","D","E","F","hex","h1","h2","eq","HUE_RE","hsl2rgbn","hsv2rgbn","hwb2rgbn","w","rgb","rgb2hsl","g","hueValue","calln","hsl2rgb","hue","Z","Y","X","W","V","U","T","S","R","Q","P","O","N","M","L","K","G","H","I","J","names$1","OiceXe","antiquewEte","aqua","aquamarRe","azuY","beige","bisque","black","blanKedOmond","Xe","XeviTet","bPwn","burlywood","caMtXe","KartYuse","KocTate","cSO","cSnflowerXe","cSnsilk","crimson","cyan","xXe","xcyan","xgTMnPd","xWay","xgYF","xgYy","xkhaki","xmagFta","xTivegYF","xSange","xScEd","xYd","xsOmon","xsHgYF","xUXe","xUWay","xUgYy","xQe","xviTet","dAppRk","dApskyXe","dimWay","dimgYy","dodgerXe","fiYbrick","flSOwEte","foYstWAn","fuKsia","gaRsbSo","ghostwEte","gTd","gTMnPd","Way","gYF","gYFLw","gYy","honeyMw","hotpRk","RdianYd","Rdigo","ivSy","khaki","lavFMr","lavFMrXsh","lawngYF","NmoncEffon","ZXe","ZcSO","Zcyan","ZgTMnPdLw","ZWay","ZgYF","ZgYy","ZpRk","ZsOmon","ZsHgYF","ZskyXe","ZUWay","ZUgYy","ZstAlXe","ZLw","lime","limegYF","lRF","magFta","maPon","VaquamarRe","VXe","VScEd","VpurpN","VsHgYF","VUXe","VsprRggYF","VQe","VviTetYd","midnightXe","mRtcYam","mistyPse","moccasR","navajowEte","navy","Tdlace","Tive","TivedBb","Sange","SangeYd","ScEd","pOegTMnPd","pOegYF","pOeQe","pOeviTetYd","papayawEp","pHKpuff","peru","pRk","plum","powMrXe","purpN","YbeccapurpN","Yd","Psybrown","PyOXe","saddNbPwn","sOmon","sandybPwn","sHgYF","sHshell","siFna","silver","skyXe","UXe","UWay","UgYy","snow","sprRggYF","stAlXe","tan","teO","tEstN","tomato","Qe","viTet","JHt","wEte","wEtesmoke","Lw","LwgYF","RGB_RE","modHSL","ratio","fromObject","functionParse","rgbParse","hueParse","p1","p2","hwb2rgb","hsv2rgb","Color","hexParse","nameParse","unpack","unpacked","tkeys","nk","transparent","_rgb","_valid","rgbString","hexString","isShort","alpha","hslString","mix","weight","c1","c2","w2","w1","interpolate","rgb1","rgb2","clearer","greyscale","opaquer","negate","lighten","darken","saturate","desaturate","rotate","deg","index_esm","isPatternOrGradient","getHoverColor","overrides","descriptors","getScope$1","scope","Defaults","_descriptors","devicePixelRatio","chart","platform","getDevicePixelRatio","font","family","lineHeight","hover","hoverColor","indexAxis","includeInvisible","onHover","onClick","parsing","scale","showLine","drawActiveElementsOnTop","describe","override","targetScope","targetName","scopeObject","targetScopeObject","privateName","local","_scriptable","_indexable","_fallback","_measureText","longest","textWidth","measureText","_longestText","arrayOfThings","garbageCollect","save","jlen","thing","nestedThing","gcLen","_alignPixel","pixel","currentDevicePixelRatio","halfWidth","clearCanvas","canvas","resetTransform","clearRect","drawPoint","drawPointLegend","xOffset","yOffset","pointStyle","rotation","radius","rad","translate","drawImage","beginPath","ellipse","arc","closePath","moveTo","lineTo","SQRT1_2","rect","stroke","_isPointInArea","area","margin","clipArea","clip","unclipArea","renderText","strokeWidth","strokeColor","setRenderOpts","fillStyle","textAlign","textBaseline","strokeStyle","lineWidth","strokeText","maxWidth","fillText","decorateText","strikethrough","underline","metrics","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxDescent","yDecoration","actualBoundingBoxAscent","decorationWidth","addRoundedRectPath","topLeft","bottomLeft","bottomRight","topRight","LINE_HEIGHT","FONT_STYLE","toLineHeight","numberOrZero","_readValueToProps","objProps","toTRBL","toTRBLCorners","toPadding","toFont","fallback","toFontString","cacheable","createContext","_createResolver","scopes","prefixes","rootScopes","getTarget","_resolve","_cacheable","_scopes","_rootScopes","_getTarget","Proxy","deleteProperty","_keys","_cached","_resolveWithPrefixes","proxy","readKey","needsSubResolver","createSubResolver","getKeysFromAllScopes","ownKeys","_storage","_attachContext","subProxy","descriptorDefaults","_proxy","_context","_subProxy","_stack","receiver","_resolveWithContext","isScriptable","_resolveScriptable","_resolveArray","isIndexable","resolver","allKeys","scriptable","indexable","_allKeys","resolveFallback","getScope","addScopes","parentScopes","parentFallback","allScopes","addScopesFromKey","subGetTarget","resolveKeysFromAllScopes","_isDomSupported","_getParentNode","domNode","parseMaxStyle","styleValue","parentProperty","valueInPixels","getPositionedStyle","useOffsetPos","shadowRoot","getRelativePosition","borderBox","boxSizing","paddings","borders","box","getCanvasPosition","touches","offsetX","offsetY","getBoundingClientRect","clientX","clientY","round1","retinaScale","forceRatio","forceStyle","pixelRatio","deviceHeight","deviceWidth","setTransform","supportsEventListenerOptions","passiveSupported","passive","readUsedSize","getStyle","getPropertyValue","intlCache","formatNumber","num","getNumberFormat","formatter","NumberFormat","getRtlAdapter","rtl","rectX","setWidth","xPlus","leftForLtr","getRightToLeftAdapter","_itemWidth","animator","Animator","_request","_charts","_running","_lastDate","_notify","anims","numSteps","initial","currentStep","_refresh","_update","draw","_active","_total","tick","_getAnims","charts","progress","interpolators","boolean","factor","c0","number","Animation","cfg","_fn","_easing","_start","_loop","loop","_target","_prop","_from","_to","_promises","elapsed","remain","wait","promises","rej","colors","numbers","resize","animations","visible","Animations","_chart","_properties","configure","animatedProps","option","_animateOptions","resolveTargetOptions","$shared","$animations","_createAnimations","awaitAll","anim","scaleClip","allowedOverflow","getSortedDatasetIndices","filterVisible","metasets","_getSortedDatasetMetas","applyStack","dsIndex","singleMode","otherValue","getOrCreateStack","stacks","stackKey","indexValue","subStack","getLastIndexInStack","vScale","positive","getMatchingVisibleMetas","updateStacks","_cachedMeta","_stacks","iScale","iAxis","axis","vAxis","getStackKey","indexScale","valueScale","z","_top","_bottom","getFirstScaleId","clearStacks","_parsed","isDirectUpdateMode","cloneIfNotShared","shared","DatasetController","_cachedDataOpts","getMeta","_type","_parsing","_objectData","_sharedOptions","_drawStart","_drawCount","enableOptionSharing","supportsDecimation","$context","_syncList","initialize","linkScales","_stacked","addElements","updateIndex","dataset","getDataset","chooseId","xid","xAxisID","yid","yAxisID","rid","rAxisID","iid","iAxisID","vid","vAxisID","xScale","getScaleForId","yScale","rScale","getDatasetMeta","scaleID","_getOtherScale","_destroy","_dataCheck","convertObjectDataToArray","adata","isExtensible","listenArrayEvents","base","datasetElementType","buildOrUpdateElements","resetNewElements","stackChanged","oldStacked","_resyncElements","scopeKeys","datasetScopeKeys","getOptionScopes","createResolver","_sorted","parseArrayData","parseObjectData","parsePrimitiveData","isNotInOrderComparedToPrev","getLabels","singleScale","xAxisKey","yAxisKey","getParsed","getDataElement","updateRangeFromParsed","parsedValue","NaN","getMinMax","canStack","otherScale","createStack","hidden","NEGATIVE_INFINITY","otherMin","otherMax","getUserBounds","minDefined","maxDefined","_skip","getAllParsedValues","getMaxOverflow","getLabelAndValue","getLabelForValue","_clip","toClip","defaultClip","chartArea","resolveDatasetElementOptions","resolveDataElementOptions","createDataContext","dataIndex","raw","createDatasetContext","_resolveElementOptions","dataElementType","elementType","sharing","datasetElementScopeKeys","resolveNamedOptions","_resolveAnimations","datasetAnimationScopeKeys","getSharedOptions","includeOptions","sharedOptions","_animationsDisabled","_getSharedOptions","firstOpts","previouslySharedOptions","updateSharedOptions","updateElement","_setStyle","removeHoverStyle","setHoverStyle","_removeDatasetHoverStyle","_setDatasetHoverStyle","arg1","arg2","numMeta","numData","_insertElements","_removeElements","updateElements","_sync","_dataChanges","_onDataPush","_onDataPop","_onDataShift","_onDataSplice","newCount","_onDataUnshift","computeMinSampleSize","getAllScaleValues","_cache","$bar","visibleMetas","curr","_length","updateMinAndPrev","getPixelForValue","getPixelForTick","parseValue","parseFloatBar","startValue","endValue","barStart","barEnd","_custom","parseArrayOrPrimitive","isFloatBar","custom","setBorderSkipped","edge","borderSkipped","borderProps","horizontal","enableBorderRadius","parseEdge","swap","orig","v2","startEnd","setInflateAmount","inflateAmount","BarController","iAxisKey","vAxisKey","bars","getBasePixel","isHorizontal","ruler","_getRuler","vpixels","_calculateBarValuePixels","ipixels","_calculateBarIndexPixels","center","_getStacks","grouped","skipNull","_getStackCount","_getStackIndex","pixels","barThickness","_startPixel","_endPixel","stackCount","categoryPercentage","barPercentage","baseValue","minBarLength","actualBase","floating","getDataVisibility","barSign","startPixel","getPixelForDecimal","endPixel","halfGrid","getLineWidthForValue","computeFlexCategoryTraits","computeFitCategoryTraits","thickness","stackIndex","rects","_index_","_value_","Element","tooltipPosition","useFinalPosition","getProps","final","defaultRoutes","formatters","numeric","tickValue","notation","delta","maxTick","calculateDelta","logDelta","numDecimal","minimumFractionDigits","maximumFractionDigits","logarithmic","Ticks","newTicks","spacing","majorStart","majorEnd","bounds","grace","drawBorder","drawOnChartArea","drawTicks","tickLength","tickWidth","tickColor","borderDash","borderDashOffset","minRotation","maxRotation","mirror","textStrokeWidth","textStrokeColor","autoSkip","autoSkipPadding","labelOffset","minor","major","crossAlign","showLabelBackdrop","backdropColor","backdropPadding","offsetFromEdge","sample","numItems","increment","getPixelForGridLine","offsetGridLines","validIndex","lineValue","getTickMarkLength","getTitleHeight","titleAlign","_toLeftRightCenter","reverseAlign","Scale","_margins","maxHeight","paddingTop","paddingBottom","paddingLeft","paddingRight","labelRotation","_range","_gridLineItems","_labelItems","_labelSizes","_maxLength","_longestTextCache","_reversePixels","_userMax","_userMin","_suggestedMax","_suggestedMin","_ticksLength","_borderValue","_dataLimitsCached","suggestedMin","suggestedMax","metas","getPadding","getTicks","xLabels","yLabels","beforeLayout","beforeUpdate","margins","tickOpts","sampleSize","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","_addGrace","minmax","change","toDimension","dimension","keepZero","beforeBuildTicks","buildTicks","afterBuildTicks","samplingEnabled","_convertTicksToLabels","beforeCalculateLabelRotation","calculateLabelRotation","afterCalculateLabelRotation","ticksLimit","maxTicksLimit","determineMaxTicks","_tickSize","majorIndices","getMajorIndices","numMajorIndices","skipMajors","calculateSpacing","evenMajorSpacing","getEvenSpacing","factors","_factorize","avgMajorSpacing","afterAutoSkip","beforeFit","fit","afterFit","afterUpdate","reversePixels","_alignToPixels","alignToPixels","_callHooks","notifyPlugins","beforeTickToLabelConversion","generateTickLabels","afterTickToLabelConversion","numTicks","maxLabelDiagonal","_isVisible","labelSizes","_getLabelSizes","maxLabelWidth","widest","maxLabelHeight","highest","asin","minSize","titleOpts","gridOpts","titleHeight","tickPadding","angleRadians","_calculatePadding","_handleMargins","isRotated","labelsBelowTicks","offsetLeft","offsetRight","isFullSize","fullSize","_computeLabelSizes","widths","heights","tickFont","fontString","nestedLabel","widestLabelSize","highestLabelSize","_resolveTickFontOptions","valueAt","getValueForPixel","decimal","_int16Range","getDecimalForPixel","getBaseValue","createTickContext","createScaleContext","optionTicks","rot","_computeGridLineItems","ticksLength","borderOpts","axisWidth","axisHalfWidth","alignBorderValue","borderValue","alignedLineValue","tx1","ty1","tx2","ty2","x1","y1","x2","y2","positionAxisID","optsAtIndex","lineColor","tickBorderDash","tickBorderDashOffset","_computeLabelItems","tickAndPadding","hTickAndPadding","lineCount","textOffset","_getXAxisLabelAlignment","_getYAxisLabelAlignment","halfCount","tickTextAlign","labelPadding","_computeLabelArea","drawBackground","fillRect","drawGrid","drawLine","setLineDash","lineDashOffset","lastLineWidth","drawLabels","drawTitle","titleX","titleY","titleArgs","_layers","tz","gz","getSortedVisibleDatasetMetas","axisID","_maxDigits","fontSize","TypedRegistry","isForType","isPrototypeOf","parentScope","isIChartComponent","registerDefaults","itemDefaults","routeDefaults","propertyParts","sourceName","sourceScope","Registry","controllers","_typedRegistries","_each","addControllers","addPlugins","addScales","getController","_get","getElement","getPlugin","getScale","removeControllers","removeElements","removePlugins","removeScales","typedRegistry","reg","_getRegistryForType","_exec","itemReg","camelMethod","abstract","adapters","_date","DateAdapter","chartOptions","formats","amount","startOf","weekday","endOf","members","binarySearch","metaset","lookupMethod","getRange","evaluateInteractionItems","getIntersectItems","isPointInArea","inRange","getNearestItems","getNearestCartesianItems","distanceMetric","getDistanceMetricForAxis","useX","useY","deltaX","deltaY","minDistance","evaluationFunc","getCenterPoint","getNearestRadialItems","startAngle","endAngle","getAxisItems","rangeMethod","intersectsItem","Interaction","modes","nearest","STATIC_POSITIONS","filterByPosition","filterDynamicPositionByAxis","sortByWeight","getCombinedMax","maxPadding","updateMaxPadding","boxPadding","updateDims","newWidth","outerWidth","newHeight","outerHeight","widthChanged","heightChanged","same","getMargins","marginForPositions","fitBoxes","boxes","refitBoxes","refit","changed","setBoxDims","placeBoxes","userPadding","placed","stackWeight","autoPadding","layouts","addBox","removeBox","layoutItem","minPadding","availableWidth","availableHeight","buildLayoutBoxes","layoutBoxes","wrapBoxes","centerHorizontal","centerVertical","leftAndTop","rightAndBottom","verticalBoxes","horizontalBoxes","visibleVerticalBoxCount","total","vBoxMaxWidth","hBoxMaxHeight","setLayoutDims","buildStacks","handleMaxPadding","updatePos","BasePlatform","acquireContext","aspectRatio","releaseContext","getMaximumSize","isAttached","BasicPlatform","EXPANDO_KEY","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","isNullOrEmpty","eventListenerOptions","nodeListContains","nodeList","createAttachObserver","MutationObserver","addedNodes","removedNodes","childList","subtree","createDetachObserver","drpListeningCharts","oldDevicePixelRatio","onWindowResize","dpr","createResizeObserver","clientWidth","ResizeObserver","contentRect","listenDevicePixelRatioChanges","releaseObserver","unlistenDevicePixelRatioChanges","createProxyAndListen","fromNativeEvent","native","DomPlatform","initCanvas","renderHeight","getAttribute","renderWidth","displayWidth","displayHeight","$proxies","detach","proxies","bbWidth","bbHeight","containerSize","getContainerSize","containerStyle","containerBorder","containerPadding","clientHeight","isConnected","PluginService","_init","hook","_createDescriptors","plugin","cancelable","invalidate","_oldCache","_notifyStateChanges","allPlugins","localIds","createDescriptors","getOpts","pluginOpts","previousDescriptors","pluginScopeKeys","getIndexAxis","determineAxis","scaleOptions","axisFromPosition","initOptions","mergeScaleConfig","chartDefaults","configScales","chartIndexAxis","firstIDs","scaleConf","defaultId","getDefaultScaleIDFromAxis","defaultScaleOptions","defaultID","getAxisFromDefaultScaleID","initData","keyCache","keysCached","cachedKeys","generate","addIfFound","Config","initConfig","_scopeCache","_resolverCache","clearCache","datasetType","additionalOptionScopes","_cachedScopes","mainScope","keyLists","chartOptionScopes","subPrefixes","getResolver","needContext","hasFunction","resolverCache","KNOWN_POSITIONS","positionIsHorizontal","compare2Level","l1","l2","onAnimationsComplete","onComplete","onAnimationProgress","onProgress","getCanvas","instances","getChart","moveNumericKeys","intKey","Chart","userConfig","initialCanvas","existingChart","_detectPlatform","OffscreenCanvas","_aspectRatio","_metasets","_lastEvent","_listeners","_responsiveListeners","_sortedMetasets","_plugins","_hiddenIndices","attached","_doResize","debounce","resizeDelay","_initialize","bindEvents","_resizeBeforeDraw","_resize","newSize","newRatio","render","ensureScalesHaveIDs","axisOptions","buildOrUpdateScales","scaleOpts","updated","isRadial","dposition","dtype","scaleType","hasUpdated","_updateMetasets","_destroyDatasetMeta","_removeUnreferencedMetasets","_dataset","buildOrUpdateControllers","newControllers","isDatasetVisible","ControllerClass","_resetElements","animsDisabled","_updateScales","_checkEventBindings","_updateHiddenIndices","_minPadding","_updateLayout","_updateDatasets","_eventHandler","_updateHoverStyles","existingEvents","newEvents","unbindEvents","_getUniformDataChanges","datasetCount","makeSet","changeSet","noArea","_updateDataset","layers","_drawDatasets","_drawDataset","useClip","getElementsAtEventForMode","getVisibleDatasetCount","setDatasetVisibility","toggleDataVisibility","_updateVisibility","_stop","toBase64Image","toDataURL","bindUserEvents","bindResponsiveEvents","_add","_remove","detached","updateHoverStyle","getActiveElements","setActiveElements","activeElements","lastActive","hoverOptions","deactivated","activated","inChartArea","eventFilter","_handleEvent","_getActiveElements","isClick","_isClickEvent","lastEvent","determineLastEvent","invalidatePlugins","clipArc","pixelMargin","outerRadius","innerRadius","angleMargin","rThetaToXY","theta","pathArc","circular","innerR","spacingOffset","avNogSpacingRadius","angleOffset","outerStart","outerEnd","innerStart","innerEnd","parseBorderRadius$1","angleDelta","toRadiusCorners","borderRadius","halfThickness","innerLimit","computeOuterLimit","outerArcLimit","outerStartAdjustedRadius","outerEndAdjustedRadius","outerStartAdjustedAngle","outerEndAdjustedAngle","innerStartAdjustedRadius","innerEndAdjustedRadius","innerStartAdjustedAngle","innerEndAdjustedAngle","pCenter","p4","p8","outerStartX","outerStartY","outerEndX","outerEndY","ArcElement","circumference","fullCircles","chartX","chartY","rAdjust","betweenAngles","withinRadius","halfAngle","halfRadius","borderAlign","radiusOffset","drawArc","borderJoinStyle","lineJoin","drawFullCircleBorders","getBarBounds","bar","half","skipOrLimit","skipX","skipY","addNormalRectPath","inflateRect","refRect","BarElement","boundingRects","border","parseBorderWidth","maxW","maxH","parseBorderRadius","maxR","enableBorder","addRectPath","hasRadius","mouseX","mouseY","inXRange","inYRange","positioners","average","eventPosition","nearestElement","tp","pushOrConcat","toPush","splitNewlines","createTooltipItem","formattedValue","getTooltipSize","boxWidth","boxHeight","footerFont","titleLineCount","footerLineCount","bodyLineItemCount","combinedBodyLength","bodyItem","before","after","beforeBody","afterBody","titleSpacing","titleMarginBottom","displayColors","bodySpacing","footerMarginTop","footerSpacing","widthPadding","maxLineWidth","determineXAlign","yAlign","chartWidth","xAlign","doesNotFitWithAlign","caret","caretSize","caretPadding","determineAlignment","determineYAlign","getBackgroundPoint","alignment","paddingAndSize","alignX","alignY","getAlignedX","getBeforeAfterBodyLines","overrideCallbacks","Tooltip","opacity","_eventPosition","_size","_cachedAnimations","_tooltipItems","dataPoints","caretX","caretY","labelColors","labelPointStyles","labelTextColors","createTooltipContext","tooltipItems","getTitle","beforeTitle","afterTitle","getBeforeBody","getBody","bodyItems","scoped","beforeLabel","afterLabel","getAfterBody","getFooter","beforeFooter","afterFooter","_createItems","itemSort","labelColor","labelPointStyle","labelTextColor","positionAndSize","backgroundPoint","external","drawCaret","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","pt","rtlHelper","_drawColorBox","colorX","rtlColorX","colorY","usePointStyle","drawOptions","centerX","centerY","multiKeyBackground","outerX","innerX","strokeRect","drawBody","bodyAlign","bodyLineHeight","xLinePadding","fillLineOfText","bodyAlignForCalculation","textColor","drawFooter","footerAlign","footerColor","tooltipSize","quadraticCurveTo","_updateAnimationTarget","animX","animY","_willRender","globalAlpha","overrideTextDirection","getPropertyPriority","prevTextDirection","textDirection","restoreTextDirection","positionChanged","_positionChanged","_ignoreReplayEvents","handleEvent","plugin_tooltip","afterInit","afterDraw","afterEvent","labelCount","tooltipItem","CategoryScale","_startValue","_valueRange","_addedLabels","findOrAddLabel","addedLabels","addIfString","relativeLabelSize","minSpacing","LinearScaleBase","_endValue","handleTickRangeOptions","setMin","setMax","minSign","maxSign","MIN_SAFE_INTEGER","getTickLimit","maxTicks","computeTickLimit","generateTicks$1","generationOptions","dataRange","precision","maxDigits","includeBounds","maxSpaces","rmin","rmax","countDefined","niceMin","niceMax","numSpaces","MIN_SPACING","almostWhole","rounded","decimalPlaces","LinearScale","isMajor","tickVal","LogarithmicScale","_zero","generateTicks","endExp","endSignificand","significand","lastTick","getTickBackdropHeight","measureLabelSize","determineLimits","updateLimits","hLimits","vLimits","getTextAlignForAngle","leftForTextAlign","yForAngle","pathRadiusLine","xCenter","yCenter","pointPosition","getPointPosition","RadialLinearScale","drawingArea","_pointLabels","_pointLabelItems","_padding","pointLabels","fitWithPointLabels","valueCount","pointLabelOpts","additionalAngle","centerPointLabels","getPointLabelContext","plFont","textSize","getIndexAngle","setCenterPoint","buildPointLabelItems","outerDistance","pointLabelPosition","leftMovement","rightMovement","topMovement","bottomMovement","getDistanceFromCenterForValue","scalingFactor","getValueForDistanceFromCenter","scaledDistance","pointLabel","createPointLabelContext","distanceFromCenter","getPointPositionForValue","getBasePosition","getPointLabelPosition","angleLines","drawPointLabels","backdropLeft","backdropTop","backdropWidth","backdropHeight","drawRadiusLine","gridLineOpts","INTERVALS","millisecond","common","minute","hour","day","week","month","quarter","year","UNITS","sorter","adapter","_adapter","isoWeekday","_parseOpts","determineUnitForAutoTicks","minUnit","capacity","addTick","timestamps","ticksFromTimestamps","majorUnit","setMajorTicks","TimeScale","_unit","_majorUnit","_offsets","_normalized","displayFormats","_applyBounds","_getLabelBounds","getLabelTimestamps","timeOpts","_generate","_filterBetween","_getLabelCapacity","determineUnitForFormatting","determineMajorUnit","initOffsets","offsetAfterAutoskip","getDecimalForValue","hasWeekday","getDataTimestamps","tooltipFormat","datetime","_tickFormatFunction","majorFormat","_getLabelSize","ticksOpts","tickLabelWidth","cosRotation","sinRotation","tickFontSize","exampleTime","exampleLabel","prevSource","nextSource","prevTarget","nextTarget","span","TimeSeriesScale","_table","_minPos","_tableRange","_getTimestampsForTable","buildLookupTable","paginateBack","PLAY_CIRCLE_ICON","paginateForward","cycle_r9","BarChartComponent_div_5_div_1_Template","categories","trackByCycle","barChart","BarChartComponent","_BarChartComponent","faPlayCircle","renderChart","isFirstPage","pageAmount","onChartClick","cycle","BarChartComponent_div_2_Template","BarChartComponent_div_4_Template","BarChartComponent_div_5_Template","BarChartComponent_div_6_Template","BarChartModule","_BarChartModule","DataViewerComponent","existed","UsanaLoggingService","logMsg","DataViewModule","_DataViewModule","BaoyingVolumeWidgetModule","_BaoyingVolumeWidgetModule","BaoyingHomePageModule","_BaoyingHomePageModule","BaoyingAppHubModule","_BaoyingAppHubModule","cbecRedirectionService","ngDoBootstrap","bootstrap","setLocaleMap","BsLocaleService","HTTP_INTERCEPTORS","LOCALE_ID","LOGIN_REALM","GRAPH_URL_TRANSLATION","IMAGE_SERVICE_BACKEND_URL","IMAGE_SERVICE_PUBLIC_URL","developmentMode","enableProdMode","__NgCli_bootstrap_1","bootstrapModule","U2D_REDIRECT_URL","USER_TYPE_PATTERN","SwitchUserSuccess","SwitchUserFailure","withParams","ForceLoadUserProfileFailure","EditUser","userProps","profileProps","DATE_PICKER_TEXT_FIELD_CONFIG","dateInputFormat","showWeekNumbers","customTodayClass","getBaseUsername","_user$username","i18NLocalCode","getLocalizedDatepickerConfig","localeDateFormat","getLocaleDateFormat","FormatWidth","Medium","toLocaleUpperCase","getFirstBusinessCenterId","baseUsername","getUserHasBASAccess","userHasBASAccess","switchUserAlert","UserProfileService","_UserProfileService","forceReload","loadRequestAttrs","httpParams","PaperworkService","_PaperworkService","PAPERWORK_CHECK_INTERVAL","TIME_CONSTANTS_MS","paperworkTimer$","paperworkTimerElapsed","getPaperwork","watchForPaperwork","checkPaperwork","paperworkTimedSubscription","paperworkNavigationSubscription","NavigationStart","paperwork","currentPaperwork","paperworkIdentifier","versionId","optionalPaperworkDisplayed","_UserProfileState","userProfileService","bootstrapLocaleSvc","usanaLocaleService","ssoSwitchUserService","ssoAuthService","paperWorkService","switchUser","handleSwitchUserResponse","switchUserSuccess","parseIdTokenJwt","tokens","TO_USER_LOCALE","_action$loginResponse","switchUserFailure","clearSwitchUserAlertClicked","reloadSwitchedUserClicked","forceLoadProfile","loginResponseAction","_error","setUserProfile","getI18NLocalCode","setNGLocale","setLocaleCookie","setUserFromIdToken","LoadLoginInterruptNotifications","forceLoadUserProfileFailure","editUser","editProfile","switchUserResponse","i8","ActivatedRoute","UsanaLocaleService","SsoSwitchUserService","SsoAuthService","CookieService","distributor","employee","_FullDateTimeWithTimezoneModule","AbbreviateTimezoneNamePipe","FullDateTimeWithTimezoneService","_FullDateTimeWithTimezoneService","abbreviateTimezoneNamePipe","transformDate","DateTimeFormat","resolvedOptions","timeZone","FullDateTimeWithTimezonePipe","_FullDateTimeWithTimezonePipe","fullDateWithTimezoneService","SECOND","HTTP_BASE_PREFIX","NOTIFICATION_ENDPOINTS","archived","notificationByConcatKey","timezones","userTimezone","validNumber","simpleValidation","countryCodeList","allPhoneNumbers","removeNumber","allowedUser","optOut","resendChallengeCode","ORDERS","faListOl","TEAM_BUILDING","faUserFriends","RECOGNITION","faStar","CUSTOMER_SERVICE","faPortrait","MY_BUSINESS","faBusinessTime","TRAINING","faLayerGroup","MARKETING","faSignalStream","markAllAsRead","markAllAsUnread","notificationSettings","viewAll","_NotificationService","setMonth","getMonth","sortNotificationsByDate","getLoginInterruptNotifications","expired","unread","channels","getNotificationByConcatKey","startDateAfter","subscribedOnly","updateNotifications","channel","loginInterruptOptIn","phoneNumber","millisSinceNotification","hideWhen","markAsUnread","navigateToSettingsPage","MarkAsRead","MarkAsUnread","UpdatePhoneNumber","currentNotifications","getSingleNotification","archivedNotifications","interruptNotifications","updatedNotifications","updatedNotification","patch","updateItem","filterNotificationsByChannel","_NotificationState","filteredNotifications","getCurrentNotification","getInterruptNotification","markNotificationsAsRead","markNotificationsAsUnread","deletedNotification","updatePhoneNumber","_PacesetterWidgetService","getPacesetterStatusData","_UsanaLocaleService","localModule","localeMap","registerLocaleData","marketVal","OneTrust","hubMarket","changeLanguage","networkCapture","performance","getEntriesByType","initiatorType","regEx","SET_LOCALE","UserBASAccessService","_UserBASAccessService","navigateToBASPage","userHasBASAccessOrRedirect","_WindowSizingService","xsBreakpoint","mobileBreakpoint","tabletBreakpoint","hubBannerBreakPoint","xxlBreakpoint","offsetWidth","isDesktopSize","isHubBannerBreakPointSize","isTabletSize","isXSMobileSize","isXxlDesktopSize","getElementOffset","pageYOffset","clientTop","pageXOffset","clientLeft","TranslatePipe","_TranslatePipe","tagContainsNull","_TranslationModule","TranslationService","_TranslationService","processing","maxStoredTime","translations","translateQueue","loadTime","oldLoc","qKeys","mutatedKey","stopProcessing","processInterval","stopProcessingIfEmpty","startProcessing","processQueue","transKey","getStorageKey","storedTranslation","loadFromLocalStorage","timeStamp","tagValue","getTranslationPromiseInternal","doPromise","oneTimeSub","pTag","pLoc","transTag","getTranslationListPromise","tags","translationMap","translationList","translationsToResolve","loadFromHttp","convertCharCodesToActualCharacters","urlParams","encodeURI","storeTagInLocalStorage","requestLocale","promiseList","decodeURI","localStorage","storedTag","search","_LoadingSpinnerModule","markName","hasPerformance","LuxonError","InvalidDateTimeError","toMessage","InvalidIntervalError","InvalidDurationError","ConflictingSpecificationError","InvalidUnitError","InvalidArgumentError","ZoneIsAbstractError","DATE_SHORT","DATE_MED","DATE_MED_WITH_WEEKDAY","DATE_FULL","DATE_HUGE","TIME_SIMPLE","TIME_WITH_SECONDS","TIME_WITH_SHORT_OFFSET","timeZoneName","TIME_WITH_LONG_OFFSET","TIME_24_SIMPLE","hourCycle","TIME_24_WITH_SECONDS","TIME_24_WITH_SHORT_OFFSET","TIME_24_WITH_LONG_OFFSET","DATETIME_SHORT","DATETIME_SHORT_WITH_SECONDS","DATETIME_MED","DATETIME_MED_WITH_SECONDS","DATETIME_MED_WITH_WEEKDAY","DATETIME_FULL","DATETIME_FULL_WITH_SECONDS","DATETIME_HUGE","DATETIME_HUGE_WITH_SECONDS","Zone","ianaName","isUniversal","offsetName","ts","formatOffset","equals","otherZone","singleton","SystemZone","parseZoneInfo","getTimezoneOffset","dtfCache","typeToPos","era","ianaZoneCache","IANAZone","isValidSpecifier","isValidZone","zoneName","dtf","makeDTF","hour12","adOrBc","formatToParts","partsOffset","formatted","filled","isUndefined","hackyOffset","fMonth","fDay","fYear","fadOrBc","fHour","fMinute","fSecond","asTS","over","objToLocalTS","intlLFCache","intlDTCache","getCachedDTF","locString","intlNumCache","intlRelCache","sysLocaleCache","weekInfoCache","listStuff","englishFn","intlFn","listingMode","PolyNumberFormatter","intl","forceSimple","padTo","otherOpts","intlOpts","useGrouping","minimumIntegerDigits","inf","getCachedINF","roundTo","PolyDateFormatter","originalZone","gmtOffset","offsetZ","setZone","plus","minutes","toJSDate","PolyRelFormatter","isEnglish","hasRelative","rtf","getCachedRTF","cacheKeyOpts","RelativeTimeFormat","formatRelativeTime","narrow","units","years","quarters","months","weeks","hours","seconds","lastable","isDay","isInPast","is","fmtValue","singular","lilUnits","fmtUnit","English","fallbackWeekSettings","firstDay","minimalDays","weekend","Locale","fromOpts","numberingSystem","outputCalendar","weekSettings","defaultToEN","specifiedLocale","Settings","defaultLocale","localeR","systemLocale","numberingSystemR","defaultNumberingSystem","outputCalendarR","defaultOutputCalendar","weekSettingsR","validateWeekSettings","defaultWeekSettings","numbering","parsedLocale","parsedNumberingSystem","parsedOutputCalendar","parseLocaleString","localeStr","xIndex","uIndex","selectedStr","smaller","calendar","intlConfigString","weekdaysCache","standalone","monthsCache","meridiemCache","eraCache","fastNumbersCached","fastNumbers","supportsFastNumbers","alts","redefaultToEN","redefaultToSystem","formatStr","mapMonths","ms","DateTime","utc","weekdays","mapWeekdays","meridiems","eras","matching","dtFormatter","numberFormatter","relFormatter","listFormatter","getCachedLF","ListFormat","getWeekSettings","hasLocaleWeekInfo","getCachedWeekInfo","getWeekInfo","weekInfo","getStartOfWeek","getMinDaysInFirstWeek","getWeekendDays","FixedOffsetZone","utcInstance","parseSpecifier","signedOffset","InvalidZone","normalizeZone","defaultZone","isString","lowered","throwOnInvalid","twoDigitCutoffYear","cutoffYear","Invalid","explanation","nonLeapLadder","leapLadder","unitOutOfRange","dayOfWeek","UTC","setUTCFullYear","getUTCFullYear","js","getUTCDay","computeOrdinal","isLeapYear","uncomputeOrdinal","ordinal","month0","isoWeekdayToLocal","startOfWeek","gregorianToWeek","gregObj","minDaysInFirstWeek","weekYear","weekNumber","weeksInWeekYear","timeObject","weekToGregorian","weekData","weekdayOfJan4","yearInDays","daysInYear","gregorianToOrdinal","gregData","ordinalToGregorian","ordinalData","usesLocalWeekValues","localWeekday","localWeekNumber","localWeekYear","hasInvalidGregorianData","validYear","isInteger","validMonth","integerBetween","validDay","daysInMonth","hasInvalidTimeData","validHour","validMinute","validSecond","validMillisecond","bestBy","by","compare","best","settings","padded","parseInteger","parseFloating","parseMillis","digits","towardZero","trunc","modMonth","floorMod","firstWeekOffset","weekOffset","weekOffsetNext","untruncateYear","offsetFormat","modified","offHourStr","offMinuteStr","offHour","offMin","asNumber","numericValue","normalizeObject","RangeError","monthsLong","monthsShort","monthsNarrow","weekdaysLong","weekdaysShort","weekdaysNarrow","erasLong","erasShort","erasNarrow","stringifyTokens","splits","tokenToString","literal","macroTokenToFormatOpts","Formats","DD","DDD","DDDD","tt","ttt","tttt","TT","TTT","TTTT","ff","fff","ffff","FF","FFF","FFFF","Formatter","parseFormat","fmt","currentFull","bracketed","formatOpts","systemLoc","formatWithSystemDefault","formatDateTime","formatDateTimeParts","formatInterval","formatRange","formatDateTimeFromString","knownEnglish","useDateTimeFormatter","isOffsetFixed","allowZ","monthForDateTime","weekdayForDateTime","maybeMacro","eraForDateTime","meridiemForDateTime","formatDurationFromString","dur","tokenToField","realTokens","lildur","mapped","shiftTo","ianaRegex","combineRegexes","regexes","combineExtractors","extractors","mergedVals","mergedZone","cursor","ex","patterns","regex","simpleParse","offsetRegex","isoExtendedZone","isoTimeBaseRegex","isoTimeRegex","isoTimeExtensionRegex","extractISOWeekData","extractISOOrdinalData","sqlTimeRegex","sqlTimeExtensionRegex","int","extractISOTime","milliseconds","extractISOOffset","fullOffset","extractIANAZone","isoTimeOnly","isoDuration","extractISODuration","yearStr","monthStr","weekStr","dayStr","hourStr","minuteStr","secondStr","millisecondsStr","hasNegativePrefix","negativeSeconds","maybeNegate","obsOffsets","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","fromStrings","weekdayStr","rfc2822","extractRFC2822","obsOffset","milOffset","rfc1123","rfc850","ascii","extractRFC1123Or850","extractASCII","isoYmdWithTimeExtensionRegex","isoWeekWithTimeExtensionRegex","isoOrdinalWithTimeExtensionRegex","isoTimeCombinedRegex","extractISOYmdTimeAndOffset","extractISOYmd","extractISOWeekTimeAndOffset","extractISOOrdinalDateAndTime","extractISOTimeAndOffset","extractISOTimeOnly","sqlYmdWithTimeExtensionRegex","sqlTimeCombinedRegex","extractISOTimeOffsetAndIANAZone","lowOrderMatrix","casualMatrix","daysInYearAccurate","daysInMonthAccurate","accurateMatrix","orderedUnits","reverseUnits","conf","conversionAccuracy","matrix","Duration","durationToMillis","vals","_vals$milliseconds","sum","normalizeValues","reduceRight","conv","rollUp","accurate","isLuxonDuration","fromMillis","normalizeUnit","fromDurationLike","durationLike","isDuration","fromISO","parseISODuration","fromISOTime","parseISOTimeOnly","toFormat","fmtOpts","toHuman","unitDisplay","listStyle","toISO","toISOTime","millis","toMillis","suppressMilliseconds","suppressSeconds","includePrefix","includeOffset","invalidReason","valueOf","minus","mapUnits","reconfigure","as","rescale","removeZeroes","newVals","shiftToAll","built","accumulated","lastUnit","own","ak","negated","invalidExplanation","Interval","isLuxonInterval","fromDateTimes","builtStart","friendlyDateTime","builtEnd","validateError","validateStartEnd","startIsValid","endIsValid","isInterval","toDuration","useLocaleWeeks","hasSame","isAfter","dateTime","isBefore","splitAt","dateTimes","splitBy","divideEqually","numberOfParts","overlaps","abutsStart","abutsEnd","engulfs","intersection","union","intervals","sofar","xor","currentCount","ends","difference","toLocaleString","toISODate","dateFormat","mapEndpoints","Info","hasDST","isValidIANAZone","locObj","getMinimumDaysInFirstWeek","getWeekendWeekdays","monthsFormat","weekdaysFormat","relative","localeWeek","dayDiff","earlier","later","utcDayStart","toUTC","keepLocalTime","numberingSystems","arab","arabext","bali","beng","deva","fullwide","gujr","hanidec","khmr","knda","laoo","limb","mlym","mong","mymr","orya","tamldec","telu","thai","tibt","latn","numberingSystemsUTF16","hanidecChars","digitRegex","intUnit","deser","parseDigits","NBSP","fromCharCode","spaceOrNBSP","spaceOrNBSPRegExp","fixListRegex","stripInsensitivities","oneOf","strings","simple","escapeToken","partTypeStyleToTokenVal","short","long","dayperiod","dayPeriod","hour24","dummyDateTimeCache","expandMacroTokens","maybeExpandMacroToken","formatOptsToTokens","explainFromTokens","unitForToken","one","two","three","four","six","oneOrTwo","oneToThree","oneToSix","oneToNine","twoToFour","fourToSix","disqualifyingUnit","regexString","buildRegex","re","rawMatches","matchIndex","specificOffset","dateTimeFromMatches","q","toField","df","getDummyDateTime","resolvedOpts","tokenForPart","isSpace","actualType","MAX_DATE","unsupportedZone","possiblyCachedWeekData","possiblyCachedLocalWeekData","localWeekData","fixOffset","localTS","utcGuess","o2","o3","tsToObj","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","objToTS","adjustTime","oPre","millisToAdd","parseDataToDateTime","parsedZone","interpretationZone","toTechFormat","extended","longFormat","extendedZone","defaultUnitValues","defaultWeekUnitValues","defaultOrdinalUnitValues","orderedWeekUnits","orderedOrdinalUnits","normalizeUnitWithLocalWeeks","weeknumber","weeksnumber","weeknumbers","weekyear","weekyears","quickDT","tsNow","offsetProvis","diffRelative","calendary","differ","lastOpts","argList","ot","isLuxonDateTime","fromJSDate","isDate","zoneToUse","fromSeconds","containsOrdinal","containsGregorYear","containsGregorMD","containsGregor","definiteWeekDef","useWeekData","objNow","foundFirst","higherOrderInvalid","hasInvalidWeekData","validWeek","validWeekday","hasInvalidOrdinalData","validOrdinal","gregorian","tsFinal","offsetFinal","parseISODate","fromRFC2822","parseRFC2822Date","preprocessRFC2822","fromHTTP","parseHTTPDate","fromFormat","localeToUse","parseFromTokens","fromString","fromSQL","parseSQL","isDateTime","parseFormatForOpts","localeOpts","tokenList","expandFormat","isWeekend","monthShort","monthLong","weekdayShort","weekdayLong","offsetNameShort","offsetNameLong","isInDST","getPossibleOffsets","dayMs","minuteMs","oEarlier","oLater","o1","ts1","ts2","isInLeapYear","weeksInLocalWeekYear","resolvedLocaleOptions","toLocal","keepCalendarTime","newTS","offsetGuess","asObj","settingWeekStuff","mixed","normalizedUnit","toLocaleParts","ext","toISOWeekDate","toRFC2822","toHTTP","toSQLDate","toSQLTime","includeZone","includeOffsetSpace","toSQL","toSeconds","toUnixInteger","toBSON","includeConfig","otherDateTime","durOpts","otherIsLater","diffed","highWater","lowestOrder","highOrderDiffs","remainingMillis","lowerOrderUnits","j2","diffNow","until","inputMs","adjustedToZone","toRelative","toRelativeCalendar","fromFormatExplain","fromStringExplain","dateTimeish","_AbbreviateTimezoneNamePipe","timezoneName","InterpolatePipe","_InterpolatePipe","replacePipe","ReplacePipe","interpolateKeyValues","bracketsStart","bracketsEnd","variableProperties","nestedValue","getNestedValues","replaced","_ReplacePipe","replacedVal","withVal","_UnsafeModule","PurplePageService","_PurplePageService","STANDARD_PURPLE_PAGE_QUERY_PARAMS","getPurplePageContent","purplePagePath","getFullPath","getJspItemContent","currentUrl","currentUrlQueryParams","_PurplePageComponent","purplePageService","basAccessService","segment","renderPurplePageContent","BasRedirectPage","purpleContent","scripts","getElementsByTagName","script","eval","PurplePageComponent_Query","choice_r2","UsanaDropdownComponent_ul_3_li_1_Template","UsanaDropdownComponent","_UsanaDropdownComponent","ELLIPSIS_ICON","faEllipsis","UsanaDropdownComponent_ul_3_Template","UsanaDropdownDirective","_UsanaDropdownDirective","viewContainerRef","renderDropdown","SideModalComponent_div_0_ng_container_2_ng_container_2_Template","isVisible","SideModalComponent_div_0_ng_template_3_ng_container_1_Template","closeFirstLevelNav","SideModalComponent_div_0_ng_template_5_div_2_div_1_Template","SideModalComponent_div_0_ng_template_5_div_2_div_4_Template","SideModalComponent_div_0_ng_template_5_div_2_div_5_Template","sideModalHeaderTemplate","SideModalComponent_div_0_ng_template_5_u_nav_header_1_Template","SideModalComponent_div_0_ng_template_5_div_2_Template","sideModalBodyTemplate","SideModalComponent_div_0_ng_container_2_Template","SideModalComponent_div_0_ng_template_3_Template","SideModalComponent_div_0_ng_template_5_Template","SideModalComponent","_SideModalComponent","autoShownModal","SideModalComponent_div_0_Template","animateFlyOut","animateFlyOutLeft","SideModalService","_SideModalService","sideModalOptions","sideModalRef","sideModalComponent","internal","langCode","kr","in","jp","exports","iconName","isStateOperator","patchObject","existingPropValue","newPropValue","operatorOrValue","isPredicate","invalidIndex","theOperatorOrValue","NgxsBootstrapper","bootstrap$","appBootstrapped$","asObservable","defaultEqualityCheck","memoize","func","equalityCheck","lastArgs","memoized","areArgumentsShallowlyEqual","InitialState","INITIAL_STATE_TOKEN","ɵNGXS_STATE_FACTORY","ɵNGXS_STATE_CONTEXT_FACTORY","exhaustMap","project","resultSelector","ii","isComplete","outerValue","isObject$1","DispatchOutsideZoneNgxsExecutionStrategy","isPlatformServer","runInsideAngular","isInAngularZone","ROOT_OPTIONS","ROOT_STATE_TOKEN","FEATURE_STATE_TOKEN","META_KEY","META_OPTIONS_KEY","SELECTOR_META_KEY","NgxsConfig","defaultsState","selectorOptions","injectContainerState","suppressErrors","compatibility","strictContentSecurityPolicy","executionStrategy","NgxsSimpleChange","firstChange","NoopNgxsExecutionStrategy","USER_PROVIDED_NGXS_EXECUTION_STRATEGY","NGXS_EXECUTION_STRATEGY","injector","INJECTOR","ensureStoreMetadata$1","defaultMetadata","actions","makeRootSelector","getStateGetter","getStoreMetadata$1","getSelectorMetadata$1","propGetter","compliantPropGetter","copyOfPaths","fastPropGetter","segments","seg","allowedTypes","ofActionOperator","statuses","mapOperator","mapAction","allowedMap","createAllowedActionTypesMap","filterMap","klass","allowedStatusMap","createAllowedStatusesMap","filterStatus","allowedStatuses","statusMatch","leaveNgxs","ngxsExecutionStrategy","sink","InternalNgxsExecutionStrategy","_executionStrategy","orderedQueueOperation","callsQueue","busyPushingNext","nextCallArgs","OrderedSubject","_orderedNext","OrderedBehaviorSubject","_currentValue","InternalActions","ɵInternalActions_BaseFactory","Actions","internalActions$","internalExecutionStrategy","sharedInternalActions$","share","childSubscription","compose","funcs","nextArgs","InternalErrorReporter","_errorHandler","reportErrorSafely","ErrorHandler","StateStream","PluginManager","_parentManager","_pluginHandlers","registerHandlers","rootPlugins","pluginHandlers","getPluginHandlers","InternalDispatchedActionResults","ɵInternalDispatchedActionResults_BaseFactory","InternalDispatcher","_actions","_actionResults","_pluginManager","_stateStream","_ngxsExecutionStrategy","_internalErrorReporter","actionOrActions","dispatchByEvents","ngxsErrorHandler","internalErrorReporter","subscribed","dispatchSingle","nextAction","actionResult$","getActionResultStream","createDispatchObservable","EMPTY","InternalStateOperations","_dispatcher","getRootStateOperations","setStateToTheCurrentWithNew","stateOperations","StateContextFactory","_internalStateOperations","createStateContext","mappedStore","currentAppState","patchOperator","simplePatch","existingState","setStateFromOperator","setStateValue","newAppState","stateOperator","UpdateState","addedStates","warnOnUnhandledActions","StateFactory","_parentFactory","_stateContextFactory","_initialState","_actionsSubscription","_states","_statesByName","_statePaths","getRuntimeSelectorContext","stateFactory","resolveGetter","statePaths","getter","getSelectorOptions","localOptions","statesByName","_cloneDefaults","stateClasses","newStates","addToStatesMap","stateGraph","buildGraph","findName","stateClass","sortedStates","topologicalSort","graph","findFullParentPath","newObj","keyToFind","nameGraph","nameToState","bootstrappedStores","addRuntimeInfoToMeta","isInitialised","hasBeenMountedAndBootstrapped","addAndReturnDefaults","mappedStores","connectActionHandlers","dispatched$","invokeActions","defaultIfEmpty","actionHasBeenHandled","actionMetas","actionMeta","stateContext","cancelUncompleted","statesMap","valueIsBootstrappedInInitialState","getRootSelectorFactory","_internalExecutionStrategy","_stateFactory","initialStateValue","_selectableStateStream","bufferSize","refCount","initStateStream","selectorFn","getStoreBoundSelectorFn","distinctUntilChanged","selectOnce","makeSelectorFn","storeValues","SelectFactory","LifecycleStateManager","_store","_bootstrapper","_destroy$","ngxsBootstrap","_invokeInitOnStates","appBootstrapped","_invokeBootstrapOnStates","ngxsOnChanges","hasPrev","_getStateContext","ngxsAfterBootstrap","NgxsRootModule","internalStateOperations","lifecycleStateManager","NgxsFeatureModule","flattenedStates","flattenStates","ngxsTokenProviders","APP_BOOTSTRAP_LISTENER","appBootstrapListenerFactory","bootstrapper","inheritedStateClass","optionsWithInheritance","getStateOptions","mutateMetaData","getName","inheritedMeta","DOLLAR_CHAR_CODE","rawSelector","selectorId","createSelectorFn","removeDollarAtTheEnd","lastCharIndex","se","N2","createSelectObservable","throwSelectFactoryNotConnectedError","SELECTOR_OPTIONS_META_KEY","selectorOptionsMetaAccessor","getOptions","defineOptions","setupSelectorMetadata","originalFn","creationMetadata","selectorMetaData","ensureSelectorMetadata$1","selectorName","getExplicitSelectorOptions","selectorMetaDataClone","getLocalSelectorOptions","explicitOptions","projector","memoizedFn","createMemoizedSelectorFn","returnValue","createRootSelectorFactory","memoizedSelectorFn","argumentSelectorFunctions","getRuntimeSelectorInfo","localSelectorOptions","getSelectorsToApply","selectorsToApply","rootState","argFn","newDescriptor","getCompositeRect","elementOrVirtualElement","offsetParent","isFixed","isOffsetParentAnElement","isHTMLElement","offsetParentIsScaled","isElementScaled","scaleX","scaleY","getDocumentElement","scrollLeft","getNodeName","isScrollParent","getNodeScroll","getWindow","getHTMLElementScroll","getWindowScroll","getWindowScrollBarX","modifier","requires","requiresIfExists","depModifier","pending","DEFAULT_OPTIONS","strategy","areValidElements","popperGenerator","generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","reference","popper","orderedModifiers","modifiersData","attributes","effectCleanupFns","isDestroyed","setOptionsAction","cleanupModifierEffects","scrollParents","isElement","listScrollParents","contextElement","orderModifiers","modifierPhases","mergeByName","runModifierEffects","_ref$options","effect","cleanupFn","forceUpdate","_state$elements","getOffsetParent","getLayoutRect","_state$orderedModifie","_state$orderedModifie2","onFirstUpdate","rootNode","getRootNode","isShadowRoot","isSameNode","includeScale","isFixedStrategy","clientRect","visualViewport","addVisualOffsets","isLayoutViewport","offsetTop","ownerDocument","nodeName","isTableElement","getTrueOffsetParent","getContainingBlock","isFirefox","getUAString","elementCss","currentNode","getParentNode","css","perspective","contain","willChange","assignedSlot","win","OwnElement","HTMLElement","ShadowRoot","_getComputedStyle","overflow","overflowY","overflowX","getScrollParent","_element$ownerDocumen","scrollParent","isBody","updatedList","auto","basePlacements","clippingParents","viewport","variationPlacements","placements","__WEBPACK_DEFAULT_EXPORT__","applyStyles","_ref2","arrow","attribute","_state$modifiersData$","arrowElement","popperOffsets","basePlacement","getBasePlacement","getMainAxisFromPlacement","paddingObject","mergePaddingObject","expandToHashMap","toPaddingObject","arrowRect","minProp","maxProp","endDiff","startDiff","arrowOffsetParent","clientSize","within","centerOffset","_options$element","unsetSides","mapToStyles","_Object$assign2","popperRect","variation","gpuAcceleration","adaptive","roundOffsets","_offsets$x","_offsets$y","_ref3","hasX","hasY","sideX","sideY","heightProp","widthProp","_Object$assign","commonStyles","_ref4","roundOffsetsByDPR","computeStyles","_ref5","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","getVariation","_options$scroll","_options$resize","hash","getOppositePlacement","matched","getOppositeVariationPlacement","modifiers_flip","_options$mainAxis","mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","rootBoundary","altBoundary","_options$flipVariatio","flipVariations","allowedAutoPlacements","preferredPlacement","getExpandedFallbackPlacements","oppositePlacement","computeAutoPlacement","_options$allowedAutoP","allPlacements","allowedPlacements","overflows","detectOverflow","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","fittingPlacement","_options$offset","distanceAndSkiddingToXY","invertDistance","skidding","_data$state$placement","computeOffsets","modifiers_preventOverflow","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","getAltAxis","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","maxLen","arrowPaddingObject","getFreshSideObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","offsetModifierValue","tetherMax","preventedOffset","mathMin","mathMax","_offsetModifierState$2","_offset","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","withinMaxClamp","commonX","commonY","rectToClientRect","getClientRectFromMixedType","clippingParent","getViewportRect","layoutViewport","getInnerBoundingClientRect","getDocumentRect","winScroll","scrollWidth","scrollHeight","_options$placement","_options$strategy","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","_options$padding","clippingClientRect","getClippingRect","mainClippingParents","getClippingParents","clipperElement","canEscapeClipping","clippingRect","accRect","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","hashMap","uaData","userAgentData","brands","brand","DataView","require","getNative","module","hashClear","hashDelete","hashGet","hashHas","hashSet","Hash","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","stackClear","stackDelete","stackGet","stackHas","stackSet","Stack","__data__","arrayEach","iteratee","arrayFilter","resIndex","baseTimes","isArguments","isBuffer","isIndex","isTypedArray","arrayLikeKeys","inherited","isArr","isArg","isBuff","isType","skipIndexes","arrayPush","baseAssignValue","assignValue","objValue","assocIndexOf","copyObject","baseAssign","keysIn","baseAssignIn","cloneBuffer","copyArray","copySymbols","copySymbolsIn","getAllKeys","getAllKeysIn","getTag","initCloneArray","initCloneByTag","initCloneObject","isSet","argsTag","funcTag","objectTag","cloneableTags","baseClone","bitmask","customizer","isDeep","isFlat","isFull","isFunc","subValue","objectCreate","baseCreate","baseGetAllKeys","keysFunc","symbolsFunc","getRawTag","objectToString","symToStringTag","baseGetTag","baseIsArguments","baseIsMap","isMasked","toSource","reIsHostCtor","reIsNative","baseIsNative","baseIsSet","isLength","typedArrayTags","baseIsTypedArray","isPrototype","nativeKeys","baseKeys","nativeKeysIn","baseKeysIn","isProto","baseUnary","cloneArrayBuffer","freeExports","freeModule","Buffer","allocUnsafe","cloneDataView","byteOffset","reFlags","cloneRegExp","regexp","symbolProto","symbolValueOf","cloneSymbol","cloneTypedArray","typedArray","isNew","getSymbols","getSymbolsIn","freeGlobal","isKeyable","getMapData","getPrototype","overArg","objectProto","nativeObjectToString","isOwn","unmasked","stubArray","propertyIsEnumerable","nativeGetSymbols","getOwnPropertySymbols","mapTag","promiseTag","setTag","weakMapTag","dataViewTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","ArrayBuffer","Ctor","ctorString","nativeCreate","reIsUint","coreJsData","maskSrcKey","IE_PROTO","freeProcess","nodeUtil","binding","freeSelf","pairs","LARGE_ARRAY_SIZE","funcToString","CLONE_DEEP_FLAG","isArrayLike","stubFalse","nodeIsMap","nodeIsSet","nodeIsTypedArray","_subscribe","thrownError","_throwIfClosed","lift","operator","observerOrNext","isSubscriber","Subscriber","isObserver","SafeSubscriber","errorContext","_trySubscribe","promiseCtor","getPromiseCtor","Symbol_observable","pipeFromArray","_bufferSize","_windowTime","_timestampProvider","dateTimestampProvider","_buffer","_infiniteTimeWindow","isStopped","_trimBuffer","_innerSubscribe","_checkFinalizedStatuses","adjustedBufferSize","ObjectUnsubscribedError","currentObservers","subject","AnonymousSubject","observed","EMPTY_SUBSCRIPTION","arrRemove","COMPLETE_NOTIFICATION","createNotification","EMPTY_OBSERVER","handleStoppedNotification","nextNotification","errorNotification","_complete","_bind","ConsumerObserver","partialObserver","handleUnhandledError","useDeprecatedNextContext","useDeprecatedSynchronousErrorHandling","captureError","reportUnhandledError","onStoppedNotification","timeoutProvider","defaultErrorHandler","UnsubscriptionError","initialTeardown","_parentage","_finalizers","initialFinalizer","finalizer","execFinalizer","teardown","_hasParent","_addParent","_removeParent","onUnhandledError","popScheduler","popResultSelector","argsArgArrayOrObject","combineLatestInit","valueTransform","maybeSchedule","remainingFirstValues","hasFirstValue","createObject","mapOneOrManyArgs","concatAll","mergeAll","remainingCompletions","remainingEmissions","sourceIndex","subscribeOn","scheduleAsyncIterable","scheduled","isInteropObservable","scheduleObservable","scheduleArray","isPromise","schedulePromise","isAsyncIterable","isIterable","scheduleIterable","Symbol_iterator","return","isReadableStreamLike","scheduleReadableStreamLike","readableStreamLikeToAsyncGenerator","createInvalidObservableTypeError","nodeEventEmitterMethods","eventTargetMethods","jqueryMethods","fromEvent","isEventTarget","isNodeStyleEventEmitter","toCommonHandlerRegistry","isJQueryStyleEventEmitter","off","subTarget","fromInteropObservable","fromArrayLike","fromAsyncIterable","fromIterable","fromReadableStreamLike","readableStream","asyncIterable","asyncIterable_1","asyncIterable_1_1","__asyncValues","e_1_1","concurrent","popNumber","errorOrErrorFactory","errorFactory","intervalOrScheduler","intervalDuration","isScheduler","due","onNext","onFinalize","OperatorSubscriber","shouldUnsubscribe","handledResult","delayWhen","delayDurationSelector","subscriptionDelay","ignoreElements","mapTo","comparator","keySelector","defaultCompare","previousKey","currentKey","hasDefaultValue","throwIfEmpty","EmptyError","mergeInternals","onBeforeNext","expand","innerSubScheduler","additionalFinalizer","checkComplete","outerNext","doInnerSub","innerComplete","innerValue","bufferedValue","scan","accumulator","scanInternals","emitOnNext","emitBeforeComplete","hasState","connector","resetOnError","resetOnComplete","resetOnRefCountZero","wrapperSource","resetConnection","hasCompleted","hasErrored","cancelReset","resetAndUnsubscribe","conn","dest","handleReset","onSubscriber","configOrBufferSize","windowTime","switchMap","innerSubscriber","innerIndex","outerIndex","tapObserver","isUnsub","defaultErrorFactory","intervalProvider","AsyncAction","recycleAsyncId","requestAsyncId","_scheduler","_execute","errored","Scheduler","schedulerActionCtor","AsyncScheduler","SchedulerAction","async","QueueScheduler","QueueAction","getSymbolIterator","getKeys","isPOJO","createImpl","ctorFunc","isRoot","errorThrown","parentSubscription","repeat","scheduleSubscription","__asyncGenerator","__await","releaseLock","hasLift","liftedSource","callOrApply","fns","stateChangeExpr","_position","_onStart","triggerMicrotask","AnimationGroupPlayer","_players","doneCount","destroyCount","startCount","timeAtPosition","longestPlayer","longestSoFar","_DOM","getDOM","setRootDomAdapter","DomAdapter","PlatformLocation","_PlatformLocation","historyGo","relativePosition","BrowserPlatformLocation","LOCATION_INITIALIZED","_BrowserPlatformLocation","_doc","_location","_history","history","getBaseHrefFromDOM","getBaseHref","onPopState","getGlobalEventTarget","onHashChange","port","newPath","pushState","replaceState","back","go","joinWithSlash","slashes","stripTrailingSlash","pathEndIdx","normalizeQueryParams","LocationStrategy","_LocationStrategy","PathLocationStrategy","APP_BASE_HREF","_PathLocationStrategy","_platformLocation","_inject$location","_removeListenerFns","_baseHref","origin","prepareExternalUrl","includeHash","externalUrl","_this$_platformLocati","_this$_platformLocati2","HashLocationStrategy","_HashLocationStrategy","_this$_platformLocati3","_this$_platformLocati4","_Location","locationStrategy","_subject","_urlChangeListeners","_urlChangeSubscription","_locationStrategy","baseHref","_basePath","_stripOrigin","_stripIndexHtml","ev","_this$_urlChangeSubsc","isCurrentPathEqualTo","_stripBasePath","basePath","strippedUrl","_notifyUrlChangeListeners","_this$_locationStrate","_this$_locationStrate2","onUrlChange","fnIndex","_this$_urlChangeSubsc2","onThrow","onReturn","createLocation","ɵɵinject","CURRENCIES_EN","ADP","AFN","AMD","AOA","ARS","AZN","BAM","BBD","BDT","BHD","BIF","BMD","BND","BOB","BRL","BSD","BWP","BYR","BZD","CAD","CHF","CLF","CLP","COP","CRC","CUC","CUP","CZK","DJF","DKK","DOP","EGP","ESP","EUR","FJD","FKP","GBP","GEL","GHS","GIP","GNF","GTQ","GYD","HKD","HNL","HRK","HUF","IDR","ILS","INR","IQD","IRR","ISK","ITL","JMD","JOD","KHR","KMF","KPW","KWD","KYD","KZT","LAK","LBP","LKR","LRD","LTL","LUF","LVL","LYD","MGA","MGF","MMK","MNT","MRO","MUR","MXN","MYR","NAD","NGN","NIO","NOK","NPR","NZD","OMR","PKR","PLN","PYG","RON","RSD","RUB","RWF","SBD","SEK","SGD","SHP","SLE","SLL","SOS","SRD","SSP","STD","STN","SYP","THB","TMM","TND","TRL","TRY","TTD","TZS","UAH","UGX","UYI","UYU","UYW","UZS","VEF","VND","VUV","XAF","XCD","XOF","XPF","YER","ZAR","ZMK","ZMW","ZWD","NumberFormatStyle","Decimal","Percent","Currency","Scientific","FormStyle","Format","Standalone","TranslationWidth","Narrow","Abbreviated","Wide","Short","Long","Full","NumberSymbol","Group","List","PercentSign","PlusSign","MinusSign","Exponential","SuperscriptingExponent","PerMille","TimeSeparator","CurrencyDecimal","CurrencyGroup","getLocaleDayNames","formStyle","ɵfindLocaleData","getLastDefinedValue","ɵLocaleDataIndex","DaysFormat","DaysStandalone","getLocaleMonthNames","MonthsFormat","MonthsStandalone","DateFormat","getLocaleTimeFormat","TimeFormat","getLocaleDateTimeFormat","dateTimeFormatData","getLocaleNumberSymbol","NumberSymbols","getLocaleNumberFormat","NumberFormats","checkFullData","ExtraData","LocaleId","extractTime","ISO8601_DATE_REGEX","NAMED_FORMATS","DATE_FORMATS_SPLIT","ZoneWidth","ShortGMT","Extended","DateType","FullYear","Month","Hours","Minutes","Seconds","FractionalSeconds","Day","TranslationType","DayPeriods","Days","Months","Eras","formatDate","toDate","createDate","parsedNb","isoStringToDate","tzHour","tzMin","dateSetter","setFullYear","timeSetter","setUTCHours","setHours","getNamedFormat","dateTimezoneOffset","timezoneToOffset","convertTimezoneToLocal","reverseValue","addDateMinutes","setMinutes","getMinutes","dateFormatter","getDateFormatter","DATE_FORMATS","dateStrGetter","dateGetter","weekNumberingYearGetter","weekGetter","timeZoneGetter","newDate","localeId","getLocaleId","shortTime","shortDate","mediumTime","mediumDate","longTime","longDate","fullTime","fullDate","opt_values","padNumber","minusSign","negWrap","neg","strNum","getDatePart","getFullYear","getHours","getSeconds","getMilliseconds","getDay","formatFractionalSeconds","localeMinus","getDateTranslation","currentHours","currentMinutes","rules","getLocaleExtraDayPeriodRules","rule","dayPeriods","getLocaleExtraDayPeriods","afterFrom","beforeTo","getLocaleDayPeriods","amPm","DayPeriodsFormat","DayPeriodsStandalone","getLocaleEraNames","erasData","JANUARY","THURSDAY","getThursdayThisWeek","monthBased","nbDaysBefore1stDayOfMonth","thisThurs","firstThurs","getFirstThursdayOfYear","firstDayOfYear","requestedTimezoneOffset","NUMBER_FORMAT_REGEXP","MAX_DIGITS","DECIMAL_SEP","ZERO_CHAR","PATTERN_SEP","GROUP_SEP","DIGIT_CHAR","formatNumberToLocaleString","pattern","groupSymbol","decimalSymbol","digitsInfo","isPercent","formattedText","isZero","parsedNumber","parseNumber","integerLen","zeros","numStr","exponent","toPercent","fractionLen","minInt","minFraction","minFrac","maxFraction","maxFrac","minIntPart","minFractionPart","maxFractionPart","parseIntAutoRadix","roundNumber","fractionSize","roundAt","digit","dropTrailingZeros","carry","decimals","lgSize","gSize","negPre","negSuf","posPre","posSuf","parseNumberFormat","patternParts","negative","positiveParts","ch","trunkLen","extraData","ɵregisterLocaleData","parseCookieValue","cookieStr","eqIndex","cookieName","cookieValue","decodeURIComponent","WS_REGEXP","EMPTY_ARRAY","NgClass","_NgClass","_iterableDiffers","_keyValueDiffers","_ngEl","initialClasses","ngClass","rawClass","ngDoCheck","_updateState","_applyStateDiff","nextEnabled","touched","stateEntry","_toggleClass","NgForOfContext","ngForOf","even","odd","NgForOf","_NgForOf","_ngForOf","_ngForOfDirty","ngForTrackBy","_trackByFn","_viewContainer","_template","_differs","_differ","ngForTemplate","_applyChanges","viewContainer","forEachOperation","adjustedPreviousIndex","currentIndex","previousIndex","createEmbeddedView","view","applyViewChange","forEachIdentityChange","record","ngTemplateContextGuard","NgIf","_NgIf","templateRef","NgIfContext","_thenTemplateRef","_elseTemplateRef","_thenViewRef","_elseViewRef","ngIf","_updateView","ngIfThen","assertTemplate","ngIfElse","ɵstringify","SwitchView","_templateRef","_created","enforceState","created","NgSwitch","_NgSwitch","_defaultViews","_defaultUsed","_caseCount","_lastCaseCheckIndex","_lastCasesMatched","ngSwitch","_ngSwitch","_updateDefaultCases","_addCase","_addDefault","_matchCase","useDefault","NgSwitchCase","_NgSwitchCase","_view","ngSwitchCase","NgStyle","_NgStyle","_ngStyle","ngStyle","nameAndUnit","RendererStyleFlags2","DashCase","forEachRemovedItem","forEachAddedItem","forEachChangedItem","NgTemplateOutlet","_NgTemplateOutlet","_viewRef","ngTemplateOutletContext","ngTemplateOutlet","ngTemplateOutletInjector","invalidPipeArgumentError","SubscribableStrategy","createSubscription","updateLatestValue","untracked","PromiseStrategy","_promiseStrategy","_subscribableStrategy","AsyncPipe","_AsyncPipe","_latestValue","_obj","_strategy","_dispose","_selectStrategy","_updateLatestValue","ɵisPromise","ɵisSubscribable","markForCheck","LowerCasePipe","_LowerCasePipe","DATE_PIPE_DEFAULT_TIMEZONE","DATE_PIPE_DEFAULT_OPTIONS","_DatePipe","defaultTimezone","_this$defaultOptions","_this$defaultOptions2","_format","_timezone","KeyValuePipe","_KeyValuePipe","keyValues","compareFn","defaultComparator","differChanges","compareFnChanged","forEachItem","makeKeyValuePair","keyValueA","keyValueB","aString","bString","DecimalPipe","_DecimalPipe","isValue","strToNumber","CurrencyPipe","_CurrencyPipe","_defaultCurrencyCode","currency","getCurrencySymbol","getLocaleCurrencies","Currencies","symbolNarrow","formatCurrency","getNumberOfCurrencyDigits","DEFAULT_CURRENCY_CODE","SlicePipe","_SlicePipe","supports","_CommonModule","PLATFORM_BROWSER_ID","PLATFORM_SERVER_ID","ViewportScroller","_ViewportScroller","ɵɵdefineInjectable","BrowserViewportScroller","setOffset","getScrollPosition","supportsScrolling","scrollToPosition","scrollTo","scrollToAnchor","elSelected","findAnchorFromDocument","documentResult","getElementsByName","createTreeWalker","attachShadow","treeWalker","NodeFilter","SHOW_ELEMENT","nextNode","scrollToElement","setHistoryScrollRestoration","scrollRestoration","XhrFactory","HttpHandler","HttpBackend","normalizedNames","lazyUpdate","lazyInit","maybeSetNormalizedName","Headers","setHeaderEntries","lcName","copyFrom","applyUpdate","toDelete","headerValues","HttpUrlEncodingCodec","encodeKey","standardEncoding","encodeValue","decodeKey","decodeValue","STANDARD_ENCODING_REGEX","STANDARD_ENCODING_REPLACEMENTS","_STANDARD_ENCODING_RE","valueToString","updates","cloneFrom","encoder","paramParser","rawParams","codec","eqIdx","appendAll","eKey","HttpContext","isArrayBuffer","Blob","isFormData","third","fourth","mightHaveBody","urlWithParams","qIdx","serializeBody","isUrlSearchParams","URLSearchParams","detectContentTypeHeader","_update$context","setHeaders","setParams","HttpEventType","Sent","UploadProgress","ResponseHeader","DownloadProgress","Response","User","HttpResponseBase","defaultStatus","defaultStatusText","statusText","HttpHeaderResponse","HttpErrorResponse","addBody","HttpClient","_HttpClient","events$","res$","jsonp","callbackParam","interceptorChainEndFn","finalHandlerFn","adaptLegacyInterceptorToChain","chainTailFn","interceptor","initialRequest","downstreamRequest","HTTP_INTERCEPTOR_FNS","HTTP_ROOT_INTERCEPTOR_FNS","legacyInterceptorFnFactory","chain","_inject2","pendingTasks","ɵInitialRenderPendingTasks","taskId","HttpInterceptorHandler","_HttpInterceptorHandler","backend","dedupedInterceptorFns","nextSequencedFn","interceptorFn","chainedInterceptorFn","runInContext","XSSI_PREFIX","HttpXhrBackend","_HttpXhrBackend","xhrFactory","ɵloadImpl","xhr","setRequestHeader","detectedType","reqBody","headerResponse","partialFromXhr","getAllResponseHeaders","getResponseUrl","responseURL","getResponseHeader","onLoad","responseText","originalBody","sentHeaders","onDownProgress","progressEvent","lengthComputable","partialText","onUpProgress","upload","readyState","DONE","XSRF_ENABLED","XSRF_COOKIE_NAME","XSRF_HEADER_NAME","HttpXsrfTokenExtractor","HttpXsrfCookieExtractor","_HttpXsrfCookieExtractor","lastCookieString","parseCount","getToken","cookieString","ɵparseCookieValue","xsrfInterceptorFn","lcUrl","headerName","HttpFeatureKind","Interceptors","LegacyInterceptors","CustomXsrfConfiguration","NoXsrfProtection","JsonpSupport","RequestsMadeViaParent","Fetch","makeHttpFeature","ɵkind","ɵproviders","provideHttpClient","feature","makeEnvironmentProviders","LEGACY_INTERCEPTOR_FN","_HttpClientModule","getClosureSafeProperty","objWithPropertyToExtract","fillProperties","overriddenName","newLineIndex","concatStringsWithSpace","__forward_ref__","forwardRefFn","resolveForwardRef","isForwardRef","isEnvironmentProviders","XSS_SECURITY_URL","RuntimeError","formatRuntimeError","fullCode","renderStringify","throwProviderNotFoundError","injectorName","msg","actual","expected","comparison","ɵɵdefineInjector","getInjectableDef","getOwnDefinition","NG_PROV_DEF","NG_INJECTABLE_DEF","isInjectable","getInjectorDef","NG_INJ_DEF","NG_INJECTOR_DEF","ngInjectableDef","ngInjectorDef","InjectFlags","Default","Host","Self","SkipSelf","Optional","_injectImplementation","getInjectImplementation","setInjectImplementation","impl","injectRootLimpMode","notFoundValue","injectableDef","_global","_desc","ngMetadataName","__NG_ELEMENT_ID__","THROW_IF_NOT_FOUND","DI_DECORATOR_FLAG","NG_TEMP_TOKEN_PATH","NEW_LINE","SOURCE","_currentInjector","setCurrentInjector","former","injectInjectorOnly","convertToBitFlags","skipSelf","injectArgs","getInjectFlag","attachInjectFlag","decorator","noSideEffects","ChangeDetectionStrategy","OnPush","ViewEncapsulation$1","Emulated","ShadowDom","EMPTY_OBJ","NG_COMP_DEF","NG_DIR_DEF","NG_PIPE_DEF","NG_MOD_DEF","NG_FACTORY_DEF","NG_ELEMENT_ID","NG_ENV_ID","__NG_ENV_ID__","classIndexOf","classToSearch","startingIndex","foundIndex","setUpAttributes","attrs","namespaceURI","attrName","attrVal","isAnimationProp","isNameOnlyAttributeMarker","marker","mergeHostAttrs","dst","src","srcMarker","mergeHostAttribute","markerInsertPosition","dstValue","NG_TEMPLATE_SELECTOR","isCssClassMatching","cssClassToMatch","isProjectionMode","isImplicitAttrsSection","isInlineTemplate","tNode","hasTagAndTypeMatch","currentSelector","isNodeMatchingSelector","nodeAttrs","nameOnlyMarkerIdx","getNameOnlyMarkerIndex","skipToNextSelector","isPositive","selectorAttrValue","attrIndexInNode","findAttrIndexInNode","nodeAttrValue","compareAgainstClassName","bindingsMode","maybeAttrName","matchTemplateAttribute","isNodeMatchingSelectorList","isSelectorInSelectorList","selectorListLoop","currentSelectorInList","maybeWrapInNotSelector","isNegativeMode","stringifyCSSSelector","currentChunk","valueOrMarker","attrValue","ɵɵdefineComponent","componentDefinition","_componentDefinition$","baseDef","getNgDirectiveDef","onPush","directiveDefs","pipeDefs","getStandaloneInjector","signals","schemas","tView","initFeatures","extractDefListOrFactory","getComponentId","componentDef","hashSelectors","contentQueries","imul","ɵɵsetComponentScope","pipes","extractDirectiveDef","getComponentDef","getDirectiveDef","nonNull","ɵɵdefineNgModule","declarations","transitiveCompileScopes","invertObject","secondary","newLookup","minifiedKey","publicName","declaredName","ɵɵdefineDirective","directiveDefinition","ɵɵdefinePipe","pipeDef","getPipeDef$1","isStandalone","getNgModuleDef","throwNotFound","ngModuleDef","declaredInputs","providersResolver","inputTransforms","inputConfig","findHostDirectiveDefs","hostDirectives","_definition$features","defExtractor","HOST","TVIEW","FLAGS","PARENT","DESCENDANT_VIEWS_TO_REFRESH","T_HOST","CLEANUP","CONTEXT","INJECTOR$1","ENVIRONMENT","RENDERER","CHILD_HEAD","CHILD_TAIL","DECLARATION_VIEW","DECLARATION_COMPONENT_VIEW","DECLARATION_LCONTAINER","PREORDER_HOOK_FLAGS","QUERIES","ID","EMBEDDED_VIEW_INJECTOR","ON_DESTROY_HOOKS","HYDRATION","REACTIVE_TEMPLATE_CONSUMER","REACTIVE_HOST_BINDING_CONSUMER","HEADER_OFFSET","TYPE","HAS_TRANSPLANTED_VIEWS","NATIVE","MOVED_VIEWS","CONTAINER_HEADER_OFFSET","isLView","isLContainer","isContentQueryHost","isComponentHost","componentOffset","isDirectiveHost","isComponentDef","isRootView","getFactoryDef","activeConsumer","inNotificationPhase","setActiveConsumer","consumer","REACTIVE_NODE","producerNode","producerLastReadVersion","producerIndexOfThis","nextProducerIndex","liveConsumerNode","liveConsumerIndexOfThis","consumerAllowSignalWrites","consumerIsAlwaysLive","producerMustRecompute","producerRecomputeValue","consumerMarkedDirty","producerUpdateValueVersion","consumerIsLive","consumerPollProducersForChange","consumerMarkDirty","_node$consumerMarkedD","producerNotifyConsumers","consumerBeforeComputation","consumerAfterComputation","prevConsumer","producerRemoveLiveConsumerAtIndex","assertConsumerNode","producer","seenVersion","consumerDestroy","assertProducerNode","_node$liveConsumerNod3","_node$liveConsumerInd","lastIdx","idxProducer","_node$liveConsumerNod","_node$liveConsumerNod2","_node$producerNode","_node$producerIndexOf","_node$producerLastRea","throwInvalidWriteToSignalErrorFn","nonReactiveReadsFn","NOOP_CLEANUP_FN","WATCH_NODE","hasRun","SimpleChange","isFirstChange","ɵɵNgOnChangesFeature","NgOnChangesFeatureImpl","ngOnChangesSetInput","rememberChangeHistoryAndInvokeOnChangesHook","simpleChangesStore","getSimpleChangesStore","setSimpleChangesStore","SIMPLE_CHANGES_STORE","previousChange","ngInherit","profiler","hookOrListener","SVG_NAMESPACE","unwrapRNode","getNativeByIndex","lView","getNativeByTNode","getTNode","load","getComponentLViewByIndex","nodeIndex","hostView","slotValue","getConstant","resetPreOrderHookFlags","markViewForRefresh","updateViewsToRefresh","clearViewRefreshFlag","viewOrContainer","storeLViewOnDestroy","onDestroyCallback","instructionState","lFrame","createLFrame","bindingsEnabled","skipHydrationRootTNode","getBindingsEnabled","isInSkipHydrationBlock$1","getLView","getTView","ɵɵrestoreView","viewToRestore","contextLView","ɵɵresetView","getCurrentTNode","currentTNode","getCurrentTNodePlaceholderOk","getCurrentParentTNode","isParent","setCurrentTNode","isCurrentTNodeParent","setCurrentTNodeAsNotParent","getBindingRoot","bindingRootIndex","bindingStartIndex","getBindingIndex","bindingIndex","nextBindingIndex","incrementBindingIndex","setInI18nBlock","isInI18nBlock","inI18n","setBindingRootForHostBindings","currentDirectiveIndex","setCurrentDirectiveIndex","getCurrentQueryIndex","setCurrentQueryIndex","getDeclarationTNode","declTNode","enterDI","parentTNode","parentLView","allocLFrame","enterView","newView","newLFrame","firstChild","currentLFrame","childLFrame","selectedIndex","elementDepthCount","currentNamespace","leaveViewLight","oldLFrame","leaveDI","leaveView","getSelectedIndex","setSelectedIndex","getSelectedTNode","ɵɵnamespaceSVG","ɵɵnamespaceHTML","namespaceHTMLInternal","_wasLastNodeCreated","wasLastNodeCreated","lastNodeWasCreated","registerPostOrderHooks","directiveStart","directiveEnd","lifecycleHooks","ngAfterContentInit","ngAfterContentChecked","_tView$contentHooks","_tView$contentHooks2","_tView$contentCheckHo","_tView$viewHooks","_tView$viewHooks2","_tView$viewCheckHooks","_tView$destroyHooks","contentHooks","contentCheckHooks","viewHooks","viewCheckHooks","destroyHooks","executeCheckHooks","hooks","callHooks","executeInitAndCheckHooks","initPhase","incrementInitPhaseFlags","currentView","currentNodeIndex","nodeIndexLimit","lastNodeIndexFound","callHook","callHookInternal","isInitHook","NO_PARENT_INJECTOR","NodeInjectorFactory","isViewProvider","injectImplementation","resolving","canSeeViewProviders","injectImpl","hasParentInjector","parentLocation","getParentInjectorIndex","getParentInjectorView","startView","viewOffset","getParentInjectorViewOffset","parentView","includeViewProviders","setIncludeViewProviders","BLOOM_MASK","BLOOM_BUCKET_BITS","nextNgElementId","NOT_FOUND","getOrCreateNodeInjectorForNode","existingInjectorIndex","getInjectorIndex","firstCreatePass","injectorIndex","insertBloom","blueprint","parentLoc","getParentInjectorLocation","parentIndex","parentData","declarationViewOffset","lViewCursor","getTNodeFromLView","diPublicInInjector","bloomAdd","bloomHash","notFoundValueOrThrow","lookupTokenUsingModuleInjector","moduleInjector","previousInjectImplementation","getOrCreateInjectable","embeddedInjectorValue","lookupTokenUsingEmbeddedInjector","currentLView","nodeInjectorValue","lookupTokenUsingNodeInjector","embeddedViewInjector","embeddedViewInjectorValue","bloomHashBitOrFactory","tokenId","createNodeInjector","previousTView","hostTElementNode","shouldSearchParent","bloomHasToken","searchTokensOnInjector","currentTView","injectableIdx","locateDirectiveOrProvider","getNodeInjectable","canAccessViewProviders","isHostSpecialCase","nodeProviderIndexes","providerIndexes","tInjectables","injectablesStart","directivesStart","cptViewProvidersCount","providerTokenOrDef","dirDef","tData","isFactory","throwCyclicDependencyError","depPath","stringifyForError","previousIncludeViewProviders","registerPreOrderHooks","directiveIndex","directiveDef","_tView$preOrderHooks","_tView$preOrderCheckH","wrappedOnChanges","preOrderHooks","preOrderCheckHooks","_tView$preOrderHooks2","_tView$preOrderHooks3","_tView$preOrderCheckH2","injectorView","isFirstHostTNode","NodeInjector","_tNode","_lView","ɵɵgetInheritedFactory","ownConstructor","ownFactory","getFactoryOf","objectPrototype","tViewType","ɵɵinjectAttribute","attrNameToInject","injectAttributeImpl","classes","attrsLength","PARAMETERS","makeParamDecorator","parentClass","metaCtor","makeMetadataCtor","propName","ParamDecoratorFactory","annotationInstance","ParamDecorator","annotation","cls","unusedKey","parameters","annotationCls","deepForEach","addToArray","removeFromArray","newArray","keyValueArraySet","keyValueArray","keyValueArrayIndexOf","arrayInsert2","value1","value2","keyValueArrayGet","_arrayIndexOfSorted","middle","hasInSkipHydrationBlockFlag","Important","COMMENT_DISALLOWED","COMMENT_DELIMITER","COMMENT_DELIMITER_ESCAPED","TRACKED_LVIEWS","uniqueIdCounter","MONKEY_PATCH_KEY_NAME","attachPatchData","registerLView","_icuContainerIterate","icuContainerIterate","tIcuContainerNode","getLViewParent","getFirstLContainer","getNearestLContainer","getNextLContainer","applyToElementOrContainer","lNodeToHandle","beforeNode","lContainer","isComponent","rNode","nativeAppendChild","nativeInsertBefore","nativeRemoveNode","nativeParent","nativeParentNode","nativeRemoveChild","applyContainer","parentRElement","anchor","applyView","createTextNode","createCommentNode","escapeCommentText","createElementNode","detachMovedView","declarationContainer","movedViews","declarationViewIndex","detachView","removeIndex","indexInContainer","viewToDetach","declarationLContainer","removedLView","removeViewFromDOM","lQueries","destroyLView","destroyViewTree","rootView","lViewOrLContainer","cleanUpView","firstView","executeOnDestroys","toCall","callContext","processCleanups","tCleanup","lCleanup","targetIdx","destroyHooksFn","unregisterLView","getParentRElement","getClosestRElement","nativeAppendOrInsertBefore","getInsertInFrontOfRNode","_getInsertInFrontOfRNodeWithI18n","getInsertInFrontOfRNodeWithNoI18n","_processI18nInsertBefore","policy$1","setI18nHandling","getInsertInFrontOfRNodeWithI18n","processI18nInsertBefore","childRNode","childTNode","parentRNode","anchorNode","getFirstNativeNode","tNodeType","getBeforeNodeForView","elIcuContainerChild","rNodeOrLContainer","projectionNodes","getProjectionNodes","projection","viewIndexInContainer","nextViewIndex","firstTNodeOfView","applyNodes","isProjection","rawSlotValue","nextRNode","applyProjectionRecursive","projectionNext","tProjectionNode","componentLView","nodeToProjectOrRNodes","nodeToProject","projectedComponentLView","writeDirectClass","setupStaticAttributes","mergedAttrs","writeDirectStyle","trustedHTMLFromString","_getPolicy$","getPolicy$1","trustedTypes","createPolicy","createHTML","createScript","createScriptURL","setDocument","getDocument","getPolicy","trustedHTMLFromStringBypass","_getPolicy","trustedScriptURLFromStringBypass","_getPolicy3","SafeValueImpl","changingThisBreaksApplicationSecurity","SafeHtmlImpl","getTypeName","SafeStyleImpl","SafeScriptImpl","SafeUrlImpl","SafeResourceUrlImpl","unwrapSafeValue","allowSanitizationBypassAndThrow","getSanitizationBypassType","bypassSanitizationTrustHtml","trustedHtml","bypassSanitizationTrustStyle","trustedStyle","bypassSanitizationTrustScript","trustedScript","bypassSanitizationTrustUrl","trustedUrl","bypassSanitizationTrustResourceUrl","trustedResourceUrl","getInertBodyHelper","defaultDoc","inertDocumentHelper","InertDocumentHelper","isDOMParserAvailable","DOMParser","parseFromString","DOMParserHelper","getInertBodyElement","inertDocument","implementation","createHTMLDocument","templateEl","SAFE_URL_PATTERN","_sanitizeUrl","tagSet","VOID_ELEMENTS","OPTIONAL_END_TAG_BLOCK_ELEMENTS","OPTIONAL_END_TAG_INLINE_ELEMENTS","VALID_ELEMENTS","URI_ATTRS","VALID_ATTRS","SKIP_TRAVERSING_CONTENT_IF_INVALID_ELEMENTS","SanitizingHtmlSerializer","sanitizedSomething","buf","sanitizeChildren","traverseContent","Node","ELEMENT_NODE","startElement","TEXT_NODE","chars","nodeValue","endElement","checkClobberedElement","tagName","elAttrs","elAttr","lower","encodeEntities","compareDocumentPosition","DOCUMENT_POSITION_CONTAINED_BY","outerHTML","SURROGATE_PAIR_REGEXP","NON_ALPHANUMERIC_REGEXP","inertBodyHelper","_sanitizeHtml","unsafeHtmlInput","inertBodyElement","unsafeHtml","mXSSAttempts","parsedHtml","getTemplateContent","isTemplateElement","STYLE","SCRIPT","URL","RESOURCE_URL","ɵɵsanitizeHtml","sanitizer","getSanitizer","ɵɵsanitizeUrl","unsafeUrl","ɵɵsanitizeResourceUrl","unsafeResourceUrl","ɵɵsanitizeUrlOrResourceUrl","getUrlSanitizer","ENVIRONMENT_INITIALIZER","INJECTOR_DEF_TYPES","NullInjector","importProvidersFrom","internalImportProvidersFrom","ɵfromNgModule","checkForStandaloneCmp","providersOut","dedup","injectorTypesWithProviders","collectProviders","provider","internalSource","walkProviderTree","processInjectorTypesWithProviders","typesWithProviders","deepForEachProvider","defType","injDef","cmpDef","isDuplicate","importTypesWithProviders","imported","defProviders","injectorType","USE_VALUE$1","isValueProvider","isTypeProvider","INJECTOR_SCOPE","NOT_YET","CIRCULAR","NULL_INJECTOR","getNullInjector","EnvironmentInjector","R3Injector","records","_ngOnDestroyHooks","_onDestroyHooks","forEachSingleProvider","processProvider","makeRecord","injectorDefTypes","assertNotDestroyed","service","onDestroyHooks","removeOnDestroy","previousInjector","couldBeInjectableType","injectableDefInScope","injectableDefOrInjectorDefFactory","hydrate","catchInjectorError","injectorErrorName","tokenPath","formatError","resolveInjectorInitializers","initializers","initializer","providerToRecord","providerToFactory","multiRecord","hasOnDestroy","destroyCBIdx","getUndecoratedInjectableFactory","paramLength","inheritedInjectableDef","getInheritedInjectableDef","ngModuleType","unwrappedProvider","isFactoryProvider","isExistingProvider","classRef","hasDeps","APP_ID","DEFAULT_APP_ID","PLATFORM_INITIALIZER","_getDocument$body","_retrieveHydrationInfoImpl","retrieveHydrationInfo","ComponentRef$1","ComponentFactory$1","_NullComponentFactoryResolver","noComponentFactoryError","ComponentFactoryResolver$1","_ComponentFactoryResolver$","injectElementRef","createElementRef","ElementRef","_ElementRef","unwrapElementRef","Renderer2","_Renderer","injectRenderer2","nodeAtIndex","Sanitizer","_Sanitizer","VERSION","NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR","assertInInjectionContext","debugFn","getCurrentInjector","createInjector","additionalProviders","createInjectorWithoutInjectorInstances","Injector","_Injector","_options$name","getOriginalError","_console","_findOriginalError","DestroyRef","_DestroyRef","injectDestroyRef","NodeInjectorDestroyRef","removeLViewOnDestroy","_wrapInTimeout","EventEmitter_","isAsync","__isAsync","nextFn","errorFn","completeFn","_observer$next","_observer$error","_observer$complete","enableLongStackTrace","shouldCoalesceEventChangeDetection","shouldCoalesceRunChangeDetection","hasPendingMacrotasks","hasPendingMicrotasks","isStable","onUnstable","onMicrotaskEmpty","onStable","assertZonePatched","_nesting","_outer","_inner","TaskTrackingZoneSpec","longStackTraceZoneSpec","lastRequestAnimationFrameId","nativeRequestAnimationFrame","getNativeRequestAnimationFrame","nativeCancelAnimationFrame","unpatchedRequestAnimationFrame","__symbol__","unpatchedCancelAnimationFrame","forkInnerZoneWithAngularBehavior","delayChangeDetectionForEventsDelegate","delayChangeDetectionForEvents","isCheckStableRunning","fakeTopEventTask","scheduleEventTask","updateMicroTaskStatus","checkStable","invoke","isAngularZone","onInvokeTask","applyThis","applyArgs","shouldBeIgnoredByZone","_applyArgs$0$data","__ignore_ng_zone__","invokeTask","onEnter","onLeave","onInvoke","onHasTask","hasTaskState","hasTask","_hasPendingMicrotasks","microTask","macroTask","onHandleError","assertInAngularZone","assertNotInAngularZone","runTask","EMPTY_PAYLOAD","cancelTask","runGuarded","NoopNgZone","ZONE_IS_STABLE_OBSERVABLE","isStableFactory","_stable","isCurrentlyStable","stableSub","unstableSub","merge$1","ɵɵresolveWindow","ɵɵresolveDocument","maybeUnwrapFn","AfterRenderEventManager","_AfterRenderEventManager","renderDepth","_this$handler","validateBegin","_this$handler2","_this$handler3","markViewDirty","PRESERVE_HOST_CONTENT","currentConsumer","getReactiveLViewConsumer","slot","_lView$slot","getOrCreateCurrentLViewConsumer","commitLViewConsumerIfHasProducers","_consumer$producerNod","createLViewConsumer","REACTIVE_LVIEW_CONSUMER_NODE","_currentConsumer","NO_CHANGE","ɵɵadvance","selectIndexInternal","checkNoChangesMode","ɵɵdirectiveInject","ɵɵinvalidFactory","createLView","tHostNode","hydrationInfo","getUniqueLViewId","getOrCreateTNode","createTNodeAtIndex","createTNode","tParent","insertBeforeIndex","directiveStylingLast","propertyBindings","localNames","initialInputs","stylesWithoutHost","residualStyles","classesWithoutHost","residualClasses","classBindings","styleBindings","allocExpando","numSlotsToAlloc","initialValue","allocIdx","executeTemplate","templateFn","prevSelectedIndex","isUpdatePhase","effectiveConsumer","executeContentQueries","createDirectivesInstances","instantiateAllDirectives","addComponentLogic","hostTNode","getOrCreateComponentTView","lViewFlags","componentView","addToViewTree","rendererFactory","setInputsFromAttrs","invokeDirectivesHostBindings","saveResolvedLocalsInData","viewData","localRefExtractor","localIndex","incompleteFirstPass","createTView","constsOrFactory","ssrId","initialViewLength","createViewBlueprint","expandoStartIndex","hostBindingOpCodes","firstUpdatePass","staticViewQueries","staticContentQueries","components","directiveRegistry","pipeRegistry","_applyRootElementTransformImpl","generatePropertyAliases","aliasMap","propertyAliases","hostDirectiveAliasMap","internalName","addPropertyAlias","elementPropertyInternal","nativeOnly","dataValue","setInputsForProperty","markDirtyIfOnPush","viewIndex","childComponentLView","mapPropName","resolveDirectives","localRefs","exportsMap","matchResult","findDirectiveDefMatches","hostDirectiveDefs","hostDirectiveMatches","markAsComponentHost","_def$findHostDirectiv","initializeDirectives","cacheMatchingLocalNames","initTNodeFlags","numberOfDirectives","preOrderHooksFound","preOrderCheckHooksFound","directiveIdx","configureViewWithDirective","saveNameToExportMap","lifeCycleHooks","_tView$preOrderHooks4","_tView$preOrderCheckH3","initializeInputAndOutputAliases","hostDirectiveDefinitionMap","tViewData","tNodeAttrs","inputsFromAttrs","inputsStore","outputsStore","aliasData","aliasedOutputs","generateInitialInputs","elementIndex","getCurrentDirectiveIndex","dirIndex","invokeHostBindingsInCreationMode","_tView$components","directiveFactory","nodeInjectorFactory","registerHostBindingOpCodes","directiveVarsIdx","elementIndx","lastSelectedElementIdx","elementAttributeInternal","setElementAttribute","initialInputData","writeToDirectiveInput","inputsToStore","createLContainer","hostNative","refreshContentQueries","directiveDefIdx","executeViewQueryFn","viewQueryFn","getOrCreateLViewCleanup","getOrCreateTViewCleanup","errorHandler","textBindingInternal","updateTextNode","renderComponent","hostLView","componentHostIdx","componentTView","syncViewWithBlueprint","hostRNode","renderView","renderChildComponents","EffectManager","_EffectManager","effectFn","destroyRef","allowSignalWrites","registerOnCleanup","unregisterOnDestroy","_unregisterOnDestroy","isQueueEmpty","computeStaticStyling","writeToHost","collectNativeNodes","lNode","collectNativeNodesInLContainer","nodesInSlot","lViewInAContainer","lViewFirstChildTNode","detectChangesInternal","notifyErrorHandler","afterRenderEventManager","_rendererFactory$begi","refreshView","_rendererFactory$end","_environment$effectMa","effectManager","_lView$ENVIRONMENT$ef","setBindingIndex","hooksInitPhaseCompleted","markTransplantedViewsForRefresh","detectChangesInEmbeddedViews","processHostBindingOpCodes","opCode","bindingRootIndx","hostBindingFn","detectChangesInChildComponents","detectChangesInView","detectChangesInComponent","viewAttachedToChangeDetector","ViewRef$1","rootNodes","_cdRefInjectingView","_appRef","_attachedToViewContainer","viewRefs","reattach","checkNoChanges","attachToViewContainerRef","detachFromAppRef","detachViewFromDOM","attachToAppRef","RootViewRef","ComponentFactoryResolver","ComponentFactory","toRefArray","nonMinified","templateName","ChainedInjector","parentInjector","refArray","stringifyCSSSelectorList","selectorList","isBoundToModule","projectableNodes","rootSelectorOrNode","environmentInjector","_environmentInjector","realEnvironmentInjector","rootViewInjector","hostRenderer","elementName","locateHostElement","elementOrSelector","applyRootElementTransform","getNamespace","rootFlags","rootTView","rootLView","tElementNode","rootComponentDef","rootDirectives","createRootComponentTNode","createRootComponentView","applyRootComponentStyling","viewRenderer","setRootNodeAttributes","extractAttrsAndClassesFromSelector","projectNodes","nodesforSlot","createRootComponent","hostFeatures","rootTNode","LifecycleHooksFeature","ComponentRef","_rootLView","previousInputValues","_this$previousInputVa","ɵɵInheritDefinitionFeature","superType","getSuperType","shouldInheritFields","inheritanceChain","superDef","writeableDef","maybeUnwrapEmpty","superHostBindings","inheritHostBindings","superViewQuery","superContentQueries","inheritViewQuery","inheritContentQueries","defData","mergeHostAttrsAcrossInheritance","prevViewQuery","prevContentQueries","prevHostBindings","ɵɵHostDirectivesFeature","rawHostDirectives","bindingArrayToMap","currentDef","matchedDefs","hostDirectiveConfig","hostDirectiveDef","patchDeclaredInputs","bindings","exposedInputs","ɵɵInputTransformsFeature","isListLikeIterable","isJsObject","updateBinding","bindingUpdated","bindingUpdated2","exp1","exp2","different","bindingUpdated3","exp3","ɵɵattribute","interpolation1","interpolation2","ɵɵtemplate","attrsIndex","localRefsIndex","adjustedIndex","templateFirstCreatePass","tViewConsts","embeddedTView","comment","_locateOrCreateContainerAnchor","REFERENCE_NODE_BODY","REFERENCE_NODE_HOST","createContainerAnchorImpl","ɵɵreference","getContextLView","ɵɵproperty","setDirectiveInputsWhichShadowsStyling","isClassBased","ɵɵelementStart","elementStartFirstCreatePass","elementStart","_locateOrCreateElementNode","getElementDepthCount","increaseElementDepthCount","ɵɵelementEnd","isSkipHydrationRootTNode","leaveSkipHydrationBlock","decreaseElementDepthCount","elementEnd","hasClassInput","hasStyleInput","ɵɵelement","getNamespace$1","ɵɵelementContainerStart","elementContainerStartFirstCreatePass","_locateOrCreateElementContainerNode","ɵɵelementContainerEnd","ɵɵelementContainer","ɵɵgetCurrentView","isSubscribable","ɵɵlistener","listenerFn","useCapture","eventTargetResolver","listenerInternal","isTNodeDirectiveHost","processOutputs","lCleanupIndex","idxOrTargetGetter","existingListener","findExistingListener","tNodeIdx","cleanupEventName","listenerIdxInLCleanup","__ngLastListenerFn__","__ngNextListenerFn__","wrapListener","propsLength","executeListenerWithErrorHandling","wrapWithPreventDefault","wrapListenerIn_markDirtyAndPreventDefault","nextListenerFn","ɵɵnextContext","nextContextImpl","walkUpViews","nestingLevel","matchingProjectionSlotIndex","projectionSlots","wildcardNgContentIndex","ngProjectAsAttrVal","getProjectAsAttrValue","ngProjectAsAttrIdx","ɵɵprojectionDef","componentNode","projectionHeads","tails","componentChild","slotIndex","ɵɵprojection","selectorIndex","applyProjection","ɵɵpropertyInterpolate","ɵɵpropertyInterpolate1","interpolatedValue","ɵɵpropertyInterpolate2","toTStylingRange","getTStylingRangePrev","tStylingRange","setTStylingRangePrevDuplicate","getTStylingRangeNext","setTStylingRangeNext","setTStylingRangeNextDuplicate","markDuplicates","tStylingKey","isPrevDir","isClassBinding","tStylingAtIndex","foundDuplicate","tStyleRangeAtCursor","isStylingMatch","tStylingKeyCursor","parserState","textEnd","keyEnd","valueEnd","getLastParsedKey","getLastParsedValue","parseClassNameNext","consumeClassToken","consumeWhitespace","parseStyleNext","consumeStyleKey","consumeSeparator","consumeStyleValue","ch1","ch2","ch3","lastChIndex","consumeQuotedText","resetParserState","quoteCharCode","ɵɵstyleProp","checkStylingProperty","ɵɵclassProp","ɵɵstyleMap","checkStylingMap","styleKeyValueArraySet","styleStringParser","parseStyle","ɵɵclassMap","classKeyValueArraySet","classStringParser","parseClassName","stylingFirstUpdatePass","updateStyling","normalizeSuffix","stringParser","hasStylingInputShadow","isInHostBindings","staticPrefix","updateStylingMap","oldKeyValueArray","newKeyValueArray","oldIndex","newIndex","oldKey","newKey","setKey","toStylingKeyValueArray","styleKeyValueArray","unwrappedValue","isHostBindings","wrapInStaticStylingKey","stylingKey","getCurrentDirectiveDef","residual","collectStylingFromTAttrs","collectStylingFromDirectives","templateStylingKey","getTemplateHeadTStylingKey","setTemplateHeadTStylingKey","collectResidual","insertTStylingBinding","tStylingKeyWithStatic","isHostBinding","tBindings","tmplHead","tmplTail","isKeyDuplicateOfStatic","setTStylingRangePrev","markDuplicateOfResidualStyling","currentDirective","desiredMarker","currentMarker","stringKey","tRange","higherPriorityValue","getTStylingRangeNextDuplicate","findStylingValue","isStylingValuePresent","getTStylingRangePrevDuplicate","applyStyling","isPrevDirection","rawKey","containsStatics","isStylingMap","valueAtLViewIndex","ɵɵtext","textNative","_locateOrCreateTextNode","ɵɵtextInterpolate","ɵɵtextInterpolate1","interpolated","ɵɵtextInterpolate2","ɵɵtextInterpolate3","interpolation3","ɵɵclassMapInterpolate1","ɵɵstylePropInterpolate1","valueSuffix","ɵɵhostProperty","localeEn","LOCALE_DATA","LocaleDataIndex","findLocaleData","normalizedLocale","normalizeLocale","getLocaleData","parentLocale","getLocalePluralCase","PluralCase","ng","locales","FirstDayOfWeek","WeekendRange","CurrencyCode","CurrencySymbol","CurrencyName","Directionality","DEFAULT_LOCALE_ID","ELEMENT_MARKER","ICU_MARKER","I18nCreateOpCode","SHIFT","APPEND_EAGERLY","LOCALE_ID$1","setLocaleId","assertDefined","tNodeInsertBeforeIndex","i18nParent","anchorRNode","addTNodeAndUpdateInsertBeforeIndex","previousTNodes","newTNode","existingTNode","isI18nText","isNewTNodeCreatedBefore","getInsertBeforeIndex","setInsertBeforeIndex","createTNodePlaceholder","loadIcuContainerVisitor","_removes","enterIcu","tIcu","currentCase","getCurrentICUCaseIndex","currentCaseLViewIndex","icuContainerIteratorNext","removeOpCode","icuContainerIteratorStart","BINDING_REGEXP","NESTED_ICU","ICU_BLOCK_REGEXP","MARKER","SUBTEMPLATE_REGEXP","PH_REGEXP","NGSP_UNICODE_REGEXP","createTNodeAndAddOpCode","existingTNodes","createOpCodes","isICU","i18nNodeIdx","ensureIcuContainerVisitorLoaded","loader","setTNodeInsertBeforeIndex","assertEqual","i18nStartFirstCreatePassProcessTextNode","updateOpCodes","hasBinding","generateBindingUpdateOpCodes","destinationNode","bindingStart","sanitizeFn","maskIndex","sizeIndex","textParts","mask","textValue","toMaskBit","removeInnerTemplateTranslation","tagMatched","inTemplate","icuStart","parentIdx","icuExpression","anchorIdx","bindingMask","cases","addUpdateIcuSwitch","mainBinding","setTIcu","valueArr","nestedIcus","icuIndex","parseIcuCase","addUpdateIcuUpdate","parseICUBlock","icuType","i18nParseTextIntoPartsAndICU","blocks","prevPos","braceStack","braces","caseName","unsafeCaseHtml","inertRootNode","walkIcuTree","sharedUpdateOpCodes","depth","addCreateNodeAndAppend","lowerAttrName","addCreateAttribute","addRemoveNode","COMMENT_NODE","isNestedIcu","addRemoveNestedIcu","appendToParentIdx","createAtIdx","icuCreateOpCode","refIdx","ɵɵi18nStart","messageIndex","subTemplateIndex","i18nStartFirstCreatePass","parentTNodeIndex","existingTNodeStack","getTranslationForTemplate","isRootTemplateMessage","msgParts","replaceNgsp","isClosing","tI18n","applyCreateOpCodes","insertInFrontOf","appendNow","ɵɵi18n","ɵɵi18nEnd","resolveProvider","lInjectablesBlueprint","providerFactory","beginIndex","existingFactoryIndex","registerDestroyHooksIfSupported","existingProvidersFactoryIndex","existingViewProvidersFactoryIndex","doesViewProvidersFactoryExist","multiFactory","factoryFn","componentProviders","multiFactoryAdd","multiViewProvidersFactoryResolver","multiProvidersFactoryResolver","contextIndex","indexInFactory","providerIsTypeProvider","providerIsClassProvider","isClassProvider","existingCallbacksIndex","isComponentProvider","lData","multiResolve","factories","componentCount","multiProviders","ɵɵProvidersFeature","viewProviders","processProvidersFn","NgModuleRef$1","NgModuleFactory$1","createNgModule","NgModuleRef","_bootstrapComponents","destroyCbs","_r3Injector","NgModuleFactory","moduleType","EnvironmentNgModuleRefAdapter","debugName","runEnvironmentInitializers","createEnvironmentInjector","StandaloneService","_StandaloneService","cachedInjectors","getOrCreateStandaloneInjector","standaloneInjector","ɵɵStandaloneFeature","ɵɵpureFunction0","slotOffset","pureFn","getBinding","ɵɵpureFunction1","pureFunction1Internal","ɵɵpureFunction2","pureFunction2Internal","ɵɵpureFunction3","pureFunction3Internal","getPureFunctionReturnValue","returnValueIndex","lastReturnValue","bindingRoot","pureFunction4Internal","exp4","bindingUpdated4","ɵɵpipe","pipeName","_tView$destroyHooks2","getPipeDef","pipeFactory","pipeInstance","ɵɵpipeBind1","isPure","ɵɵpipeBind2","ɵɵpipeBind3","v3","ɵɵpipeBind4","v4","symbolIterator","_results","QueryList","_changes","_emitDistinctChangesOnly","_changesDetected","resultsTree","identityAccessor","newResultFlat","flat","arrayEquals","valueA","valueB","notifyOnChanges","addLViewToLContainer","addToDOM","insertView","containerLength","trackMovedView","addViewToDOM","parentNativeNode","TemplateRef","_TemplateRef","injectTemplateRef","ViewEngineTemplateRef","R3TemplateRef","_declarationLView","_declarationTContainer","elementRef","_this$_declarationTCo","createEmbeddedViewImpl","embeddedLView","createAndRenderEmbeddedLView","declarationLView","templateTNode","_options$injector4","_options$hydrationInf","declarationViewLQueries","createTemplateRef","_ViewContainerRef","injectViewContainerRef","createContainerRef","VE_ViewContainerRef","R3ViewContainerRef","_lContainer","_hostTNode","_hostLView","getViewRefs","indexOrOptions","viewRef","insertImpl","componentFactoryOrType","_componentFactory$com","_dehydratedView$first","isComponentFactory","ngModuleRef","contextInjector","dehydratedView","skipDomInsertion","insert","viewAttachedToContainer","prevIdx","prevLContainer","prevVCRef","adjustedIdx","_adjustIndex","getOrCreateViewRefs","viewRefsArr","detachedView","_locateOrCreateAnchorNode","createAnchorNode","commentNode","insertAnchorNode","nativeNextSibling","LQuery_","queryList","LQueries_","tQueries","noOfInheritedQueries","viewLQueries","tQuery","getByIndex","indexInDeclarationView","dirtyQueriesWithMatches","getTQuery","TQueryMetadata_","TQueries_","queriesForTemplateRef","childQueryIndex","tqueryClone","track","tquery","TQuery_","crossesNgTemplate","_appliesToNextNode","_declarationNodeIndex","isApplyingToNode","matchTNode","addMatch","declarationNodeIdx","matchTNodeWithReadOption","getIdxOfMatchingSelector","nodeMatchIdx","directiveOrProviderIdx","matchIdx","createResultForNode","matchingIdx","createResultByTNodeType","createSpecialToken","materializeViewResults","queryIndex","lQuery","tQueryMatches","matchedNodeIdx","collectQueryResults","lViewResults","embeddedLViews","ɵɵqueryRefresh","isCreationMode","ɵɵviewQuery","createTQuery","createLQuery","ɵɵcontentQuery","saveContentQueryAndDirectiveIndex","tViewContentQueries","ɵɵloadQuery","loadQueryInternal","storeCleanupWithContext","ɵɵtemplateRefExtractor","isNgModule","APP_INITIALIZER","ApplicationInitStatus","_ApplicationInitStatus","_inject","initialized","donePromise","appInits","runInitializers","asyncInitPromises","initResult","observableAsPromise","Console","_Console","getGlobalLocale","$localize","InitialRenderPendingTasks","_InitialRenderPendingTasks","hasPendingTasks","ModuleWithComponentFactories","ngModuleFactory","componentFactories","Compiler","_Compiler","compileModuleSync","compileModuleAsync","compileModuleAndAllComponentsSync","declaration","compileModuleAndAllComponentsAsync","clearCacheFor","getModuleId","TESTABILITY","TESTABILITY_GETTER","_testabilityGetter","Testability","_Testability","testabilityGetter","_pendingCount","_isZoneStable","_didWork","_callbacks","taskTrackingZone","setTestabilityGetter","addToWindow","_watchAngularEvents","_runCallbacksIfReady","increasePendingRequestCount","decreasePendingRequestCount","timeoutId","doneCb","getPendingTasks","updateCb","macroTasks","creationLocation","addCallback","whenStable","getPendingRequestCount","registerApplication","unregisterApplication","findProviders","using","exactMatch","TestabilityRegistry","_TestabilityRegistry","_applications","testability","unregisterAllApplications","getTestability","getAllTestabilities","getAllRootElements","findTestabilityInTree","findInAncestors","_testabilityGetter$fi","_testabilityGetter2","_platformInjector","ALLOW_MULTIPLE_PLATFORMS","PLATFORM_DESTROY_LISTENERS","NgProbeToken","createPlatformFactory","parentPlatformFactory","extraProviders","getPlatform","platformProviders","createPlatform","publishSignalConfiguration","setThrowInvalidWriteToSignalError","PlatformRef","runPlatformInitializers","inits","createPlatformInjector","assertPlatform","requiredToken","_platformInjector$get","_platformInjector2","_PlatformRef","_modules","_destroyListeners","bootstrapModuleFactory","moduleFactory","getNgZone","ngZoneToUse","getNgZoneOptions","_options$eventCoalesc","_options$runCoalescin","eventCoalescing","runCoalescing","ngZoneEventCoalescing","ngZoneRunCoalescing","moduleRef","createNgModuleRefWithProviders","internalProvideZoneChangeDetection","ngZoneFactory","ngZoneChangeDetectionScheduler","NgZoneChangeDetectionScheduler","INTERNAL_APPLICATION_ERROR_HANDLER","ngZoneApplicationErrorHandlerFactory","exceptionHandler","_callAndReportToErrorHandler","initStatus","_moduleDoBootstrap","compilerOptions","optionsReducer","compileNgModuleFactory","ApplicationRef","destroyListeners","objs","_ApplicationRef","_bootstrapListeners","_runningTick","_views","internalErrorHandler","zoneIsStable","componentTypes","componentOrFactory","cf","_loadComponent","attachView","viewCount","warnIfDestroyed","userErrorHandler","_NgZoneChangeDetectionScheduler","applicationRef","_onMicrotaskEmptySubscription","_this$_onMicrotaskEmp","isDevMode","ChangeDetectorRef","_ChangeDetectorRef","injectChangeDetectorRef","createViewRef","isPipe","DefaultIterableDifferFactory","trackByFn","DefaultIterableDiffer","trackByIdentity","_linkedRecords","_unlinkedRecords","_previousItHead","_itHead","_itTail","_additionsHead","_additionsTail","_movesHead","_movesTail","_removalsHead","_removalsTail","_identityChangesHead","_identityChangesTail","nextIt","nextRemove","addRemoveOffset","moveOffsets","getPreviousIndex","adjPreviousIndex","_nextRemoved","localMovePreviousIndex","localCurrentIndex","forEachPreviousItem","_nextPrevious","_nextAdded","forEachMovedItem","_nextMoved","_nextIdentityChange","_reset","itemTrackBy","mayBeDirty","_verifyReinsertion","_addIdentityChange","_mismatch","iterateListLike","_truncate","isDirty","previousRecord","_prev","_reinsertAfter","_moveAfter","_addAfter","IterableChangeRecord_","reinsertRecord","_addToMoves","nextRecord","_addToRemovals","_unlink","prevRecord","_prevRemoved","_insertAfter","_DuplicateMap","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","defaultIterableDiffersFactory","IterableDiffers","_IterableDiffers","copied","extend","defaultKeyValueDiffersFactory","KeyValueDiffers","_KeyValueDiffers","kv","platformCore","ApplicationModule","_ApplicationModule","booleanAttribute","elementInjector","reflectComponentType","isSignal","BaseControlValueAccessor","_BaseControlValueAccessor","BuiltInControlValueAccessor","_BuiltInControlValueAccessor","ɵ_BuiltInControlValueAccessor_BaseFactory","CHECKBOX_VALUE_ACCESSOR","CheckboxControlValueAccessor","_CheckboxControlValueAccessor","ɵ_CheckboxControlValueAccessor_BaseFactory","DEFAULT_VALUE_ACCESSOR","DefaultValueAccessor","COMPOSITION_BUFFER_MODE","_DefaultValueAccessor","_compositionMode","_composing","_isAndroid","ɵgetDOM","getUserAgent","_handleInput","_compositionStart","_compositionEnd","isEmptyInputValue","hasValidLength","NG_ASYNC_VALIDATORS","EMAIL_REGEXP","minValidator","maxValidator","requiredValidator","requiredTrueValidator","email","emailValidator","minLength","minLengthValidator","minlength","requiredLength","actualLength","maxLength","maxLengthValidator","patternValidator","nullValidator","regexStr","requiredPattern","actualValue","composeAsync","maxlength","isPresent","toObservable","mergeErrors","arrayOfErrors","executeValidators","validator","normalizeValidators","isValidatorFn","presentValidators","composeValidators","composeAsyncValidators","mergeValidators","controlValidators","dirValidator","getControlValidators","_rawValidators","getControlAsyncValidators","_rawAsyncValidators","makeValidatorsArray","hasValidator","addValidators","currentValidators","validatorsToAdd","removeValidators","AbstractControlDirective","_onDestroyCallbacks","pristine","untouched","statusChanges","_setValidators","_composedValidatorFn","_setAsyncValidators","_composedAsyncValidatorFn","asyncValidator","_registerOnDestroy","_invokeOnDestroyCallbacks","errorCode","getError","ControlContainer","formDirective","NgControl","valueAccessor","AbstractControlStatus","_cd","isTouched","_this$_cd","isUntouched","_this$_cd2","isPristine","_this$_cd3","_this$_cd4","_this$_cd5","isInvalid","_this$_cd6","isPending","_this$_cd7","isSubmitted","_this$_cd8","submitted","NgControlStatus","_NgControlStatus","NgControlStatusGroup","_NgControlStatusGroup","PENDING","DISABLED","pickValidators","validatorOrOpts","isOptionsObj","pickAsyncValidators","asyncValidators","assertControlPresent","isGroup","assertAllValuesPresent","_forEachChild","AbstractControl","_pendingDirty","_hasOwnPendingAsyncValidator","_pendingTouched","_onCollectionChange","_onDisabledChange","_assignValidators","_assignAsyncValidators","validatorFn","asyncValidatorFn","updateOn","_updateOn","setValidators","setAsyncValidators","addAsyncValidators","removeAsyncValidators","hasAsyncValidator","clearValidators","clearAsyncValidators","markAsTouched","onlySelf","markAllAsTouched","markAsUntouched","_updateTouched","markAsDirty","markAsPristine","_updatePristine","markAsPending","skipPristineCheck","_parentMarkedDirty","_updateValue","_updateAncestors","changeFn","enable","updateValueAndValidity","setParent","getRawValue","_setInitialStatus","_cancelExistingSubscription","_runValidator","_calculateStatus","_runAsyncValidator","_updateTreeValidity","ctrl","_allControlsDisabled","_asyncValidationSubscription","setErrors","_updateControlsErrors","currPath","_find","_initObservables","_anyControlsHaveStatus","_anyControls","_anyControlsDirty","_anyControlsTouched","_registerOnCollectionChange","_setUpdateStrategy","coerceToValidator","coerceToAsyncValidator","FormGroup","_setUpControls","registerControl","addControl","removeControl","setControl","controlName","_reduceChildren","_syncPendingControls","subtreeUpdated","_reduceValue","initValue","FormRecord","CALL_SET_DISABLED_STATE","setDisabledStateDefault","controlPath","setUpControl","callSetDisabledState","_dir$valueAccessor$se","_dir$valueAccessor","setUpValidators","setUpViewChangePipeline","_pendingValue","_pendingChange","updateControl","setUpModelChangePipeline","emitModelEvent","viewToModelUpdate","_unregisterOnChange","setUpBlurPipeline","setUpDisabledChangeHandler","onDisabledChange","registerOnDisabledChange","_unregisterOnDisabledChange","cleanUpControl","validateControlPresenceOnChange","cleanUpValidators","registerOnValidatorChange","onValidatorChange","isControlUpdated","updatedValidators","updatedAsyncValidators","emitModelToViewChange","setUpFormContainer","isPropertyUpdated","viewModel","model","syncPendingControls","selectValueAccessor","valueAccessors","defaultAccessor","builtinAccessor","customAccessor","isBuiltInAccessor","formDirectiveProvider$1","NgForm","resolvedPromise$1","_NgForm","_directives","ngSubmit","_findContainer","getControl","addFormGroup","removeFormGroup","getFormGroup","updateModel","onSubmit","_$event$target","onReset","resetForm","removeListItem","isFormControlState","formState","_onChange","_applyFormState","nonNullable","initialValueIsDefault","emitViewToModelChange","AbstractFormGroupDirective","_AbstractFormGroupDirective","_checkParentType","ɵ_AbstractFormGroupDirective_BaseFactory","formControlBinding$1","NgModel","resolvedPromise","_NgModel","_changeDetectorRef","_registered","_checkForErrors","_checkName","oldName","_getPath","_setUpControl","_updateDisabled","_isStandalone","_setUpStandalone","_this$_changeDetector","disabledValue","_this$_changeDetector2","ɵNgNoValidate","_ɵNgNoValidate","NUMBER_VALUE_ACCESSOR","NumberValueAccessor","_NumberValueAccessor","ɵ_NumberValueAccessor_BaseFactory","RadioControlRegistryModule","_RadioControlRegistryModule","NG_MODEL_WITH_FORM_CONTROL_WARNING","formControlBinding","FormControlDirective","_FormControlDirective","_ngModelWarningConfig","_ngModelWarningSent","_isControlChanged","previousForm","_ngModelWarningSentOnce","formDirectiveProvider","FormGroupDirective","_FormGroupDirective","_updateDomValue","_checkFormPresent","_updateValidators","_updateRegistrations","_oldForm","removeListItem$1","_setUpFormContainer","_cleanUpFormContainer","addFormArray","removeFormArray","getFormArray","_$event$target2","oldCtrl","newCtrl","isFormControl","cleanUpFormContainer","formGroupNameProvider","FormGroupName","_FormGroupName","_hasInvalidParent","formArrayNameProvider","FormArrayName","_FormArrayName","controlNameBinding","FormControlName","_FormControlName","_added","SELECT_VALUE_ACCESSOR","SelectControlValueAccessor","_buildValueString$1","_SelectControlValueAccessor","_optionMap","_idCounter","_compareWith","compareWith","valueString","_getOptionId","_getOptionValue","_registerOption","_extractId$1","ɵ_SelectControlValueAccessor_BaseFactory","NgSelectOption","_NgSelectOption","ngValue","_setElementValue","SELECT_MULTIPLE_VALUE_ACCESSOR","SelectMultipleControlValueAccessor","_buildValueString","_SelectMultipleControlValueAccessor","optionSelectedStateSetter","opt","_setSelected","selectedOptions","_extractId","ɵ_SelectMultipleControlValueAccessor_BaseFactory","ɵNgSelectMultipleOption","_ɵNgSelectMultipleOption","toFloat","AbstractValidatorDirective","_AbstractValidatorDirective","_validator","inputName","normalizeInput","_enabled","createValidator","MAX_VALIDATOR","MaxValidator","_MaxValidator","ɵ_MaxValidator_BaseFactory","MIN_VALIDATOR","MinValidator","_MinValidator","ɵ_MinValidator_BaseFactory","REQUIRED_VALIDATOR","RequiredValidator","_RequiredValidator","ɵ_RequiredValidator_BaseFactory","MAX_LENGTH_VALIDATOR","MaxLengthValidator","_MaxLengthValidator","toInteger","ɵ_MaxLengthValidator_BaseFactory","ɵInternalFormsSharedModule","_ɵInternalFormsSharedModule","FormArray","at","_registerControl","removeAt","_this$at","isAbstractControlOptions","FormBuilder","_FormBuilder","useNonNullable","nnfb","reducedControls","_reduceControls","createdControls","_createControl","_FormsModule","_opts$callSetDisabled","_ReactiveFormsModule","_opts$warnOnNgModelWi","_opts$callSetDisabled2","warnOnNgModelWithFormControl","GenericBrowserDomAdapter","ɵDomAdapter","supportsDOMEvents","BrowserDomAdapter","makeCurrent","ɵsetRootDomAdapter","onAndCancel","dispatchEvent","getDefaultDocument","createHtmlDocument","DocumentFragment","getBaseElementHref","baseElement","relativePath","urlParsingNode","pathName","resetBaseElement","getCookie","BrowserXhr","_BrowserXhr","XMLHttpRequest","EVENT_MANAGER_PLUGINS","EventManager","_EventManager","_eventNameToPlugin","manager","_findPluginFor","getZone","EventManagerPlugin","APP_ID_ATTRIBUTE_NAME","SharedStylesHost","_SharedStylesHost","appId","styleRef","hostNodes","styleNodesInDOM","collectServerRenderedStyles","platformIsServer","resetHostNodes","addStyles","changeUsageCount","onStyleAdded","removeStyles","onStyleRemoved","getAllStyles","addHost","hostNode","addStyleToHost","removeHost","_styleRef$get","_this$doc$head","styleRefValue","usage","getStyleElement","styleEl","_styleRef$get2","styleElRef","NAMESPACE_URIS","xhtml","xlink","xml","xmlns","math","COMPONENT_REGEX","HOST_ATTR","COMPONENT_VARIABLE","CONTENT_ATTR","REMOVE_STYLES_ON_COMPONENT_DESTROY","shimStylesContent","compId","DomRendererFactory2","_DomRendererFactory","eventManager","sharedStylesHost","removeStylesOnCompDestroy","rendererByCompId","defaultRenderer","DefaultDomRenderer2","getOrCreateRenderer","EmulatedEncapsulationDomRenderer2","applyToHost","NoneEncapsulationDomRenderer","ShadowDomRenderer","createElementNS","isTemplateNode","namespaceUri","setAttributeNS","removeAttributeNS","removeProperty","decoratePreventDefault","eventHandler","hostEl","nodeOrShadowRoot","contentAttr","shimContentAttribute","componentShortId","hostAttr","shimHostAttribute","DomEventsPlugin","_DomEventsPlugin","MODIFIER_KEYS","_keyMap","Del","Esc","Left","Right","Up","Down","Menu","Scroll","Win","MODIFIER_KEY_GETTERS","altKey","ctrlKey","metaKey","shiftKey","KeyEventsPlugin","_KeyEventsPlugin","parseEventName","parsedEvent","outsideHandler","eventCallback","fullKey","domEventName","_normalizeKey","codeIX","modifierName","matchEventFullKeyCode","fullKeyCode","keycode","modifierGetter","keyName","platformBrowser","ɵPLATFORM_BROWSER_ID","initDomAdapter","_document","ɵsetDocument","BROWSER_MODULE_PROVIDERS_MARKER","TESTABILITY_PROVIDERS","ɵTESTABILITY_GETTER","BrowserGetTestability","getAngularTestability","getAllAngularTestabilities","getAllAngularRootElements","frameworkStabilizers","testabilities","didWork","decrement","didWork_","parentElement","ɵTESTABILITY","BROWSER_MODULE_PROVIDERS","ɵINJECTOR_SCOPE","_BrowserModule","providersAlreadyPresent","withServerTransition","_Title","newTitle","createTitle","DomSanitizer","_DomSanitizer","DomSanitizerImpl","_DomSanitizerImpl","ɵallowSanitizationBypassAndThrow","ɵunwrapSafeValue","ɵ_sanitizeHtml","ɵ_sanitizeUrl","ɵbypassSanitizationTrustHtml","ɵbypassSanitizationTrustStyle","ɵbypassSanitizationTrustScript","ɵbypassSanitizationTrustUrl","ɵbypassSanitizationTrustResourceUrl","domSanitizerImplFactory","defer","observableFactory","_refCount","refCounter","sharedConnection","_connection","ConnectableObservable","subjectFactory","getSubject","_teardown","higherOrderRefCount","takeLast","PRIMARY_OUTLET","RouteTitleKey","ParamsAsMap","convertToParamMap","defaultUrlMatcher","segmentGroup","posParams","consumed","shallowEqual","equalArraysOrString","aSorted","bSorted","wrapIntoObservable","pathCompareMap","exact","equalSegmentGroups","containee","matrixParams","equalPath","matrixParamsMatch","numberOfChildren","subset","containsSegmentGroup","paramCompareMap","equalParams","containsParams","ignored","containsTree","containsSegmentGroupHelper","containeePaths","containerPaths","containeeSegment","UrlTree","UrlSegmentGroup","_queryParamMap","DEFAULT_SERIALIZER","serialize","serializePaths","UrlSegment","parameterMap","_parameterMap","serializePath","bs","UrlSerializer","_UrlSerializer","DefaultUrlSerializer","UrlParser","parseRootSegment","parseQueryParams","serializeSegment","serializeQueryParams","strParams","encodeUriQuery","encodeUriFragment","primary","mapChildrenIntoArray","childOutlet","encodeUriString","encodeUriSegment","decodeQuery","serializeMatrixParams","SEGMENT_RE","matchSegments","MATRIX_PARAM_SEGMENT_RE","QUERY_PARAM_RE","QUERY_PARAM_VALUE_RE","consumeOptional","peekStartsWith","parseChildren","parseQueryParam","parseSegment","capture","parseParens","parseMatrixParams","parseParam","matchMatrixKeySegments","valueMatch","matchQueryParams","matchUrlQueryParamValue","decodedKey","decodedVal","currentVal","allowPrimary","outletName","createRoot","rootCandidate","squashSegmentGroup","newChildren","childCandidate","grandChildOutlet","grandChild","mergeTrivialChildren","isUrlTree","createSegmentGroupFromRoute","_targetGroup","targetGroup","rootSegmentGroup","createSegmentGroupFromRouteRecursive","currentRoute","childOutlets","childSnapshot","outlet","createUrlTreeFromSegmentGroup","relativeTo","commands","computeNavigation","Navigation","numberOfDoubleDots","isAbsolute","cmd","cmdIdx","outlets","segmentPath","urlPart","partIndex","toRoot","findStartingPositionForTargetGroup","Position","isMatrixParams","createPositionApplyingDoubleDots","ci","dd","newSegmentGroup","processChildren","updateSegmentGroupChildren","updateSegmentGroup","isCommandWithOutlets","oldRoot","oldSegmentGroup","qp","replaceSegment","newRoot","oldSegment","newSegment","cmdWithOutlet","prefixedWith","currentCommandIndex","currentPathIndex","noMatch","pathIndex","commandIndex","slicedCommands","createNewSegmentGroup","getOutlets","childrenOfEmptyChild","createNewSegmentChildren","IMPERATIVE_NAVIGATION","RouterEvent","navigationTrigger","restoredState","urlAfterRedirects","NavigationCancel","NavigationSkipped","NavigationError","RoutesRecognized","GuardsCheckStart","GuardsCheckEnd","shouldActivate","ResolveStart","ResolveEnd","RouteConfigLoadStart","RouteConfigLoadEnd","ChildActivationStart","routeConfig","ChildActivationEnd","ActivationStart","ActivationEnd","routerEvent","BeforeActivateRoutes","RedirectRequest","OutletContext","ChildrenOutletContexts","attachRef","_ChildrenOutletContexts","contexts","onChildOutletCreated","childName","getOrCreateContext","onChildOutletDestroyed","onOutletDeactivated","onOutletReAttached","_root","pathFromRoot","findNode","siblings","findPath","cc","TreeNode","nodeChildrenAsMap","RouterState","setRouterState","createEmptyState","urlTree","rootComponent","createEmptyStateSnapshot","ActivatedRouteSnapshot","RouterStateSnapshot","emptyUrl","emptyParams","emptyData","emptyQueryParams","urlSubject","paramsSubject","queryParamsSubject","fragmentSubject","dataSubject","futureSnapshot","_this$dataSubject$pip","_this$dataSubject","_futureSnapshot","_routerState","paramMap","_paramMap","inheritedParamsDataResolve","paramsInheritanceStrategy","inheritingStartingFrom","flattenInherited","_curr$routeConfig","_resolvedData","_this$data","serializeNode","advanceActivatedRoute","nextSnapshot","shallowEqualArrays","equalParamsAndUrlSegments","equalUrlParams","equalSegments","RouterOutlet","_RouterOutlet","_activatedRoute","activateEvents","deactivateEvents","attachEvents","detachEvents","parentContexts","changeDetector","inputBinder","INPUT_BINDER","supportsBindingToComponentInputs","activatedComponentRef","isTrackedInParentContexts","deactivate","initializeOutletWithName","_this$inputBinder","unsubscribeFromRouteData","_this$parentContexts$","activateWith","isActivated","activatedRoute","activatedRouteData","_this$inputBinder2","bindActivatedRouteToOutletComponent","_this$inputBinder3","childContexts","OutletInjector","RoutedComponentInputBinder","_RoutedComponentInputBinder","outletDataSubscriptions","subscribeToRouteData","_this$outletDataSubsc","dataSubscription","createNode","routeReuseStrategy","shouldReuseRoute","createOrReuseChildren","shouldAttach","detachedRouteHandle","retrieve","createActivatedRoute","NAVIGATION_CANCELING_ERROR","redirectingNavigationError","urlSerializer","navigationBehaviorOptions","navigationCancelingError","cancellationCode","isNavigationCancelingError$1","ɵEmptyOutletComponent","_ɵEmptyOutletComponent","standardizeConfig","loadComponent","getOutlet","getClosestRouteInjector","_snapshot$routeConfig","_loadedInjector","ActivateRoutes","futureState","currState","forwardEvent","inputBindingEnabled","activate","futureRoot","currRoot","deactivateChildRoutes","activateChildRoutes","futureNode","currNode","futureChild","childOutletName","deactivateRoutes","deactivateRouteAndItsChildren","future","shouldDetach","detachAndStoreRouteSubtree","deactivateRouteAndOutlet","activateRoutes","stored","CanActivate","CanDeactivate","getAllRouteGuards","getChildRouteGuards","getTokenOrFunctionIdentity","tokenOrFunction","ɵisInjectable","futurePath","canDeactivateChecks","canActivateChecks","prevChildren","getRouteGuards","shouldRun","shouldRunGuardsAndResolvers","runGuardsAndResolvers","isEmptyError","INITIAL_VALUE","prioritizedGuardValue","redirectIfUrlTree","NoMatch","AbsoluteRedirect","noMatch$1","absoluteRedirect","newTree","ApplyRedirects","noMatchError","lineralizeSegments","applyRedirectCommands","applyRedirectCreateUrlTree","createSegmentGroup","createQueryParams","redirectToParams","actualParams","updatedSegments","createSegments","redirectToSegments","actualSegments","findPosParam","findOrReturn","redirectToUrlSegment","consumedSegments","remainingSegments","positionalParamSegments","matchWithChecks","getOrCreateRouteInjectorIfNeeded","currentInjector","_route$_injector","runCanMatchGuards","canMatch","canMatchObservables","injectionToken","guard","isCanMatch","_res$posParams","_res$posParams2","matcher","slicedSegments","containsEmptyPathMatchesWithNamedOutlets","emptyPathMatch","createChildrenForEmptyPaths","containsEmptyPathMatches","addEmptyPathsToChildrenIfNeeded","primarySegment","Recognizer","configLoader","rootComponentType","allowRedirects","applyRedirects","recognize","processSegmentGroup","routeState","createUrlTreeFromSnapshot","inheritParamsAndData","routeNode","processSegment","sortedConfig","sortByMatchingOutlets","outletChildren","last$1","mergedChildren","mergeEmptyPathMatches","sortActivatedRouteSnapshots","_r$_injector","processSegmentAgainstRoute","noLeftoversInUrl","rawSegment","isImmediateMatch","matchSegmentAgainstRoute","expandSegmentAgainstRouteUsingRedirect","expandWildCardWithParamsAgainstRouteUsingRedirect","expandRegularSegmentAgainstRouteUsingRedirect","newSegments","_route$component","getData","_loadedComponent","getResolve","_route$component2","_route$_injector2","getChildConfig","childConfig","_route$_loadedInjecto","childInjector","matchedOnOutlet","_loadedRoutes","runCanLoadGuards","canLoad","canLoadObservables","isCanLoad","shouldLoadResult","canLoadFails","hasEmptyPathConfig","mergedNodes","duplicateEmptyPathNode","resultNode","mergedNode","hasStaticTitle","switchTap","nextResult","ROUTES","RouterConfigLoader","_RouterConfigLoader","componentLoaders","childrenLoaders","compiler","onLoadStartListener","loadRunner","maybeUnwrapDefaultExport","onLoadEndListener","factoryOrRoutes","rawRoutes","requireStandaloneComponents","isWrappedDefaultExport","NavigationTransitions","_NavigationTransitions","hasRequestedNavigation","navigationId","currentNavigation","lastSuccessfulNavigation","transitionAbortSubject","rootContexts","afterPreactivation","_this$transitions","handleNavigationRequest","_this$transitions2","setupNavigations","initialUrlTree","initialRouterState","currentUrlTree","currentRawUrl","currentBrowserUrl","extractedUrl","urlHandlingStrategy","rawUrl","targetSnapshot","currentRouterState","targetRouterState","guards","guardsResult","overallTransitionState","completed","initialUrl","previousNavigation","_t$extras$onSameUrlNa","browserUrlTree","urlTransition","navigated","onSameUrlNavigation","shouldProcessUrl","_this$transitions3","_this$transitions4","serializer","recognize$1","finalUrl","routesRecognized","navStart","skipLocationChange","replaceUrl","guardsStart","checkGuards","runCanDeactivateChecks","futureRSS","currRSS","runCanDeactivate","currARS","canDeactivate","canDeactivateObservables","_getClosestRouteInjec3","closestInjector","isCanDeactivate","isBoolean","runCanActivateChecks","fireChildActivationStart","fireActivationStart","runCanActivateChild","futureARS","canActivateChildGuardsMapped","getCanActivateChild","canActivateChild","guardsMapped","_getClosestRouteInjec2","isCanActivateChild","runCanActivate","canActivateObservables","_getClosestRouteInjec","isCanActivate","guardsEnd","cancelNavigationTransition","resolveStart","dataResolved","resolveData","canActivateChecksResolved","runResolve","resolveNode","getDataKeys","_getClosestRouteInjec4","resolvedData","resolveEnd","loadComponents","_route$routeConfig","loaders","loadedComponent","createRouterState","_router$titleStrategy","titleStrategy","updateTitle","_this$currentNavigati","isRedirectingNavigationCancelingError$1","_overallTransitionSta","ee","navCancel","isBrowserTriggeredNavigation","TitleStrategy","_TitleStrategy","buildTitle","pageTitle","_this$getResolvedTitl","getResolvedTitleForRoute","DefaultTitleStrategy","_DefaultTitleStrategy","RouteReuseStrategy","_RouteReuseStrategy","DefaultRouteReuseStrategy","BaseRouteReuseStrategy","detachedTree","_DefaultRouteReuseStrategy","ɵ_DefaultRouteReuseStrategy_BaseFactory","ROUTER_CONFIGURATION","UrlHandlingStrategy","_UrlHandlingStrategy","DefaultUrlHandlingStrategy","_DefaultUrlHandlingStrategy","newUrlPart","wholeUrl","NavigationResult","COMPLETE","FAILED","REDIRECTING","afterNextNavigation","defaultMalformedUriErrorHandler","exactMatchOptions","subsetMatchOptions","_Router","navigationTransitions","browserPageId","_this$location$getSta","_this$location$getSta2","canceledNavigationResolution","currentPageId","ɵrouterPageId","_events","_inject$flat","disposed","ɵConsole","isNgZoneEnabled","malformedUriErrorHandler","lastSuccessfulId","urlUpdateStrategy","componentInputBindingEnabled","eventsSubscription","resetConfig","rawUrlTree","routerState","subscribeToNavigationEvents","isPublicRouterEvent","setBrowserUrl","restoreHistory","mergedTree","scheduleNavigation","resetRootComponentType","initialNavigation","setUpLocationChangeListener","navigateToSyncWithBrowser","locationSubscription","stateCopy","parseUrl","serializeUrl","getCurrentNavigation","createUrlTree","navigationExtras","queryParamsHandling","preserveFragment","relativeToUrlSegmentGroup","removeEmptyProps","navigateByUrl","validateCommands","isActive","matchOptions","priorPromise","generateNgRouterState","restoringFromCaughtError","_this$getCurrentNavig","targetPagePosition","resetState","resetUrlToCurrentUrlTree","routerPageId","RouterLink","_RouterLink","tabIndexAttribute","_el$nativeElement$tag","onChanges","isAnchorElement","updateHref","setTabIndexIfNotOnNativeEl","newTabIndex","applyAttributeValue","routerLink","button","_this$subscription","_this$locationStrateg","sanitizedValue","PreloadingStrategy","RouterPreloader","_RouterPreloader","preloadingStrategy","setUpPreloading","preload","processRoutes","_route$_injector3","_route$_loadedInjecto2","injectorForCurrentRoute","injectorForChildren","_route$children","preloadConfig","loadedChildren$","recursiveLoadChildren$","_config$injector","loadComponent$","ROUTER_SCROLLER","RouterScroller","_RouterScroller","viewportScroller","lastId","lastSource","restoredId","scrollPositionRestoration","anchorScrolling","routerEventsSubscription","createScrollEvents","scrollEventsSubscription","consumeScrollEvents","scheduleScrollEvent","_this$routerEventsSub","_this$scrollEventsSub","routerFeature","getBootstrapListener","bootstrappedComponentRef","_injector$get","_injector$get2","bootstrapDone","BOOTSTRAP_DONE","INITIAL_NAVIGATION","ROUTER_PRELOADER","withPreloading","ROUTER_FORROOT_GUARD","ROUTER_PROVIDERS","rootRoute","routerNgProbeToken","_RouterModule","provideForRootGuard","scrollOffset","provideInitialNavigation","bindToComponentInputs","ROUTER_INITIALIZER","locationInitialized","enumerableOnly","symbols","sym","_objectSpread2","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_s","_arr","_n","_nonIterableRest","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","iter","_nonIterableSpread","_WINDOW","_DOCUMENT","_MUTATION_OBSERVER","_PERFORMANCE","measure","_familyProxy","_familyProxy2","_familyProxy3","_familyProxy4","_familyProxy5","_ref$userAgent","WINDOW","MUTATION_OBSERVER","PERFORMANCE","IS_DOM","IS_IE","NAMESPACE_IDENTIFIER","DEFAULT_CSS_PREFIX","DEFAULT_REPLACEMENT_CLASS","DATA_FA_I2SVG","DATA_FA_PSEUDO_ELEMENT","DATA_FA_PSEUDO_ELEMENT_PENDING","DATA_PREFIX","DATA_ICON","HTML_CLASS_I2SVG_BASE_CLASS","MUTATION_APPROACH_ASYNC","TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS","PRODUCTION","FAMILY_CLASSIC","FAMILY_SHARP","FAMILIES","familyProxy","PREFIX_TO_STYLE","fa","fas","far","fal","fat","fad","fab","fak","fakd","fass","fasr","fasl","fast","STYLE_TO_PREFIX","solid","regular","light","thin","duotone","kit","PREFIX_TO_LONG_STYLE","LONG_STYLE_TO_PREFIX","ICON_SELECTION_SYNTAX_PATTERN","LAYERS_TEXT_CLASSNAME","FONT_FAMILY_PATTERN","FONT_WEIGHT_TO_PREFIX","normal","oneToTen","oneToTwenty","ATTRIBUTES_WATCHED_FOR_MUTATION","DUOTONE_CLASSES","GROUP","SWAP_OPACITY","PRIMARY","SECONDARY","RESERVED_CLASSES","FontAwesomeConfig","coerce","getAttrConfig","_default","styleDefault","familyDefault","cssPrefix","replacementClass","autoReplaceSvg","autoAddCss","autoA11y","searchPseudoElements","observeMutations","mutateApproach","keepOriginalSource","measurePerformance","showMissingIcons","familyPrefix","_onChangeCb","meaninglessTransform","flipX","flipY","idPool","nextUniqueId","classArray","htmlEscape","joinStyles","styleName","transformIsMeaningful","baseStyles","dcp","drc","fp","rc","dPatt","customPropPatt","rPatt","_cssInserted","ensureCss","insertCss","headChildren","childNodes","beforeChild","InjectCSS","mixout","dom","beforeDOMElementCreation","beforeI2svg","shims","functions","toHtml","abstractNodes","_abstractNodes$attrib","_abstractNodes$childr","joinAttributes","attributeName","iconFromMapping","mapping","doScroll","thisContext","bindInternal4","toHex","unicode","decoded","ucs2decode","counter","normalizeIcons","icons","defineIcons","_params$skipHooks","skipHooks","addPack","_LONG_STYLE","_PREFIXES","_PREFIXES_FOR_FAMILY","LONG_STYLE","_defaultUsablePrefix","_byUnicode","_byLigature","_byOldName","_byOldUnicode","_byAlias","PREFIXES","aliases","hasRegular","autoFetchSvg","shimLookups","shim","maybeNameMaybeUnicode","unicodes","getCanonicalPrefix","byUnicode","byAlias","byOldName","getDefaultUsablePrefix","emptyCanonicalIcon","styleOrPrefix","_params$family","PREFIXES_FOR_FAMILY","getCanonicalIcon","_famProps","_params$skipLookups","skipLookups","famProps","givenPrefix","canonical","getIconName","isReserved","aliasIconName","Library","_classCallCheck","additions","_pullDefinitions","longPrefix","_normalized$key","_hooks","defaultProviderKeys","chainHooks","hookFns","hookFn","callProvided","findIconDefinition","iconLookup","library","i2svg","autoReplaceSvgRoot","domready","autoReplace","api","noAuto","_icon","canonicalIcon","_prefix","_params$autoReplaceSv","domVariants","abstractCreator","makeInlineSvgAbstract","_params$icons","main","maskId","titleId","_params$watchable","watchable","isUploadedIcon","attrClass","role","viewBox","uploadedIconWidthStyle","asSymbol","asIcon","makeLayersTextAbstract","_params$watchable2","transformForCss","_ref2$width","_ref2$height","_ref2$startCentered","startCentered","styleString","styles$1","asFoundIcon","vectorData","missingIconResolutionMixin","findIcon","maybeNotifyMissing","noop$1","preamble","perf","noop$2","isWatched","convertSVG","abstractObj","_params$ceFn","ceFn","mutators","_abstract","nodeAsComment","replaceChild","nest","_abstract2","forSvg","splitClasses","toSvg","toNode","newInnerHTML","performOperationSync","mutator","getMutator","disableObservation","enableObservation","mo","_options$treeCallback","treeCallback","_options$nodeCallback","nodeCallback","_options$pseudoElemen","pseudoElementsCallback","_options$observeMutat","observeMutationsRoot","defaultPrefix","mutationRecord","hasPrefixAndIcon","_getCanonicalIcon","hasBeenReplaced","characterData","parseMeta","styleParser","_classParser","classParser","existingPrefix","existingIconName","byLigature","ligature","extraClasses","extraAttributes","attributesParser","focusable","pluginMeta","extraStyles","styles$2","generateMutation","nodeMeta","knownPrefixes","onTree","htmlClassList","hclAdd","hclRemove","prefixesDomQuery","candidates","resolvedMutations","onNode","iconDefinition","_params$transform","_params$symbol","_params$mask","_params$maskId","_params$title","_params$titleId","_params$classes","_params$attributes","_params$styles","ReplaceElements","maybeIconDefinition","mutationObserverCallbacks","provides","providers$$1","_params$node","_params$callback","generateSvgReplacementMutation","generateAbstractIcon","nextChild","containerWidth","iconWidth","Layers","assembler","LayersCounter","makeLayersCounterAbstract","LayersText","generateLayersText","computedFontSize","boundingClientRect","CLEAN_CONTENT_PATTERN","SECONDARY_UNICODE_RANGE","replaceForPosition","pendingAttribute","alreadyProcessedPseudoElement","fontFamily","fontWeight","_content","_hexValueFromContent","hexValueFromContent","cleaned","codePoint","isPrependTen","isDoubled","isSecondary","hexValue","isV4","iconIdentifier","iconName4","byOldUnicode","oldUnicode","newUnicode","blankMeta","processable","_unwatched","parseTransformString","transformString","ALL_SPACE","fillBlack","registerPlugins","nextPlugins","mixoutsTo","tk","sk","pseudoElements2svg","unwatch","parseNodeAttributes","generateAbstractTransformGrouping","innerTranslate","innerScale","innerRotate","maskData","generateAbstractMask","explicitMaskId","mainPath","maskPath","trans","transformForSvg","maskRect","maskInnerGroupChildrenMixin","maskInnerGroup","maskOuterGroup","clipId","maskTag","maskUnits","maskContentUnits","reduceMotion","missingIconAbstract","gChildren","FILL","ANIMATION_BASE","attributeType","repeatCount","OPACITY_ANIMATE","dot","cx","cy","symbolData","parse$1","faClassList","fixedWidth","inverse","pull","stackItemSize","FaConfig","_FaConfig","fallbackIcon","FaIconLibrary","_FaIconLibrary","addIconPacks","packs","pack","getIconDefinition","FaStackItemSizeDirective","_FaStackItemSizeDirective","FaStackComponent","_FaStackComponent","FaIconComponent","_FaIconComponent","spin","pulse","iconLibrary","stackItem","buildParams","renderIcon","faWarnIfIconSpecMissing","faNormalizeIconSpec","iconSpec","isIconLookup","faWarnIfIconDefinitionMissing","classOpts","parsedTransform","a11yRole","renderedIcon","renderedIconHTML","_FontAwesomeModule","argsOrArgArray","zip","buffers","withLatestFrom","otherValues","_c32","reflow","transitionTimerDelayMs","noopFn","runningTransitions","ngbRunTransition","startFn","runningTransition","transition$","endFn","transitionProperty","runInZone","finishTransition$","stop$","endWith","transitionDurationMs","getTransitionDurationMs","transitionDelay","transitionDuration","transitionEnd$","race","raceInit","timer$","NgbConfig","_NgbConfig","Key","Tab","Enter","Escape","Space","PageUp","PageDown","End","Home","ArrowLeft","ArrowUp","ArrowRight","ArrowDown","maxTouchPoints","FOCUSABLE_ELEMENTS_SELECTOR","getFocusableBoundaryElements","tabIndex","ContentRef","NgbModalBackdrop","_NgbModalBackdrop","backdropClass","NgbActiveModal","dismiss","WINDOW_ATTRIBUTES","BACKDROP_ATTRIBUTES","NgbModalRef","_applyWindowOptions","windowInstance","optionName","_applyBackdropOptions","backdropInstance","_windowCmptRef","_backdropCmptRef","_contentRef","_closed","_hidden","dismissed","_dismissed","shown","_beforeDismiss","dismissEvent","_reject","_removeModalElements","_dismiss","windowTransition$","backdropTransition$","ModalDismissReasons","BACKDROP_CLICK","ESC","NgbModalWindow","_NgbModalWindow","_elRef","_closed$","_elWithFocus","fullscreenClass","fullscreen","activeElement","_show","_disableEventHandling","transitions$","_dialogEl","_restoreFocus","_enableEventHandling","_setFocus","defaultPrevented","_bumpBackdrop","preventClose","autoFocusable","firstFocusable","elWithFocus","elementToFocus","ariaLabelledBy","ariaDescribedBy","windowClass","centered","scrollable","modalDialogClass","ScrollBar","_ScrollBar","scrollbarWidth","bodyStyle","actualPadding","NgbModalStack","_NgbModalStack","_applicationRef","_scrollBar","_rendererFactory","_activeWindowCmptHasChanged","_ariaHiddenValues","_scrollBarRestoreFn","_modalRefs","_windowCmpts","_activeInstances","activeWindowCmpt","ngbFocusTrap","stopFocusTrap$","refocusOnClick","lastFocusedElement$","tabEvent","focusedElement","lastFocusedElement","_revertAriaHidden","_setAriaHidden","_restoreScrollBar","scrollBarRestoreFn","_hideScrollBar","contentInjector","containerEl","activeModal","contentRef","_getContentRef","backdropCmptRef","_attachBackdrop","windowCmptRef","_attachWindowComponent","ngbModalRef","beforeDismiss","_registerModalRef","_registerWindowCmpt","activeInstances","dismissAll","hasOpenModals","_createFromTemplateRef","_createFromString","_createFromComponent","componentNativeEl","sibling","unregisterModalRef","ngbWindowCmpt","NgbModalConfig","_NgbModalConfig","_ngbConfig","_animation","NgbModal","_NgbModal","_modalStack","NgbModalModule","_NgbModalModule","ARIA_LIVE_DELAY_FACTORY","ClickOutsideDirective","_ClickOutsideDirective","ClickOutside","onDocumentClick","targetElement","_ClickOutsideModule","ClickEscapeDirective","_ClickEscapeDirective","ClickEsc","onKeydownHandler","_ClickEscapeModule","_UsanaLoggingService","skipStack","isEnabled","logFn","hasStorage","loggingKey","loggingVal","removeItem","stackMsg","UsanaFullStoryService","_UsanaFullStoryService","platformService","platformWrappedWindowService","pollRate","mockedFs","mocked","anonymize","getFullStoryWindowObject","identifySessionWithFullStory","hasIdentity","currentIdentity","userVars","setIdentity","sendNow","setUserVars","_UsanaFullStoryModule","UsanaSsrModule","faFolder","_BrowserComponent_span_9_li_3_Template","base_r8","changeBaseDir","_BrowserComponent_span_9_li_14_Template","idx_r12","changeToParentDir","dir_r11","isBlacklistedDir","_BrowserComponent_span_9_universal_button_20_Template","_r16","createDirClicked","canCreate","_BrowserComponent_span_9_universal_button_21_Template","ctx_r17","clickEditPermissions","canEditPermissions","_c5","_BrowserComponent_span_9_div_30_li_2_Template","folder_r21","singleClick","doubleClick","isSelectedNode","_c6","_BrowserComponent_span_9_div_30_li_4_Template","file_r25","isImage","getThumbnailUrl","_BrowserComponent_span_9_div_30_Template","sortedDirs","sortedFiles","_BrowserComponent_span_9_span_32_div_19_Template","_r32","entry_r30","_c7","_c8","_BrowserComponent_span_9_span_32_Template","_r36","savePermissions","addRoleName","ctx_r38","addRole","selectedPermissionMap","_BrowserComponent_span_9_span_33_span_6_option_6_Template","dim_r43","ctx_r41","selectedSize","_BrowserComponent_span_9_span_33_span_6_universal_button_8_Template","_r45","ctx_r44","addImageSize","_BrowserComponent_span_9_span_33_span_6_Template","_r47","ctx_r46","selectedSizeChanged","ctx_r39","dimensionsList","canResize","_c9","_BrowserComponent_span_9_span_33_span_7_Template","_r49","ctx_r48","resizing","ctx_r50","ctx_r51","resizeImage","_c10","_BrowserComponent_span_9_span_33_Template","_r53","ctx_r52","selectFile","selectedUuid","selectedIsImage","urlPrefix","isAddingImgSize","_c11","_BrowserComponent_span_9_Template","_r55","ctx_r54","uploadFilesToDir","ctx_r56","deleteClicked","ctx_r57","createDirName","ctx_r58","createNewDir","baseDirectories","numberUploading","uploadIdx","currDirPath","mimeTypes","canUpload","canDelete","admin","isCreatingDir","hasDir","isEditingPermissions","isNodeSelected","selectedItem","directory","ErrorState","VISIBLE","DISMISSED","BASE_DIR","TRANSLATION_PKG","ImageBrowserErrorService","_ImageBrowserErrorService","setErrorMessageFromTranslation","tryFirst","getErrorMessageValueFromTag","translatedVal","setErrorMessage","currentErrorState","setErrorFromResponse","exception","dismissError","getErrorMessage","getErrorClass","tagsToTry","translateMultiAsPromise","ImageBrowserInternalService","_ImageBrowserInternalService","imageBrowserErrorService","backendUrl","publicUrl","PiTsRegex","JSON_CONTENT_HEADER","uploadCompletedSubject","getUploadCompletedSubject","completeUpload","getPathStorageKey","clearPath","storePath","loadPath","loadDir","newDirId","createDir","parentDirId","isDirectory","dirId","permissionMap","fileId","dims","uploadFile","uploadFileToUrl","getUploadUrl","uploadFileViaIframe","iframe","onload","contentDocument","convertIframeHtmlResponse","getAllSystems","calcInternalUrl","calcUrlPrefix","isSameInternalValue","chosenUrl","origUrl","lightweight","setMarketId","pArr","lightweightParam","overrideParams","isIframe","dirIdParam","ImageBrowserService","_ImageBrowserService","imageBrowserInternalService","pk","ImageBrowserModalService","InitializationResult","fromResponseArray","responses","baseDirsWrapper","filePathInfo","FileDimensionPK","FileDimension","fromWidthAndHeight","fd","dimensionPostFixWithoutExt","SizeSelection","fromFileDimensionAndExt","dim","postFix","BaseUploadComponent","_BaseUploadComponent","fileSelect","broken","doStartLoad","doFinishLoad","updateLastActionTimestamp","lastActionTimestamp","selectFileAndFinish","origFile","getFileChoice","dimensionsWithKey","lastActionTimestampParam","selectedItemSizeSelectionDummyObj","selectedFile","uploadFileRecursively","parentDirectoryId","recursiveUpload","toImgSizeSelection","sizeSelections","dimensions","dmap","selectedDirectory","fileUploadComplete","errMsg","userMessage","systemMessage","uploadForm","BrowsingState","NODE_SELECTED","UPLOADING","CREATING_DIR","EDITING_PERMISSIONS","ADDING_IMG_SIZE","ImagePreviewComponent","_ImagePreviewComponent","uuid","UploadForm","FileUploadComponent","_FileUploadComponent","fileChanged","randId","completedSubscription","possibleiframe","fileUploader","isIeLame","singleOnly","onchange","ieIframeAjaxUpload","standardAjaxUpload","clickUpload","click","iframeId","prepend","BrowserComponent","_BrowserComponent","generateSelectedUrlAndSelectDefaultSize","changeToChildDir","newDir","fileIdToSelect","resizePostFix","selectFileAndFinishWithOld","newBaseDir","savingDirectory","isUploadingFile","dimList","resizeOrig","selectItemSizeWithDimPostFix","imageAction","exit","pathSections","dName","defaultBaseDir","selectedUrl","dimPostFix","newFile","ɵ_BrowserComponent_BaseFactory","i1$2","ImageServiceBrowserModule","_ImageServiceBrowserModule","translationConfig","faIconLibrary","pconf","PackageConfig","pkg","primeMode","PackagePrimeMode","NO_PRIMING","showTagWhenMissing","allowLooseMarketDefinition","addPackage","UsanaTranslationsModule","BootstrapModalImageServiceBrowserComponent","_BootstrapModalImageServiceBrowserComponent","fileInfo","i1$4","ImageBrowserBootstrapModalService","_ImageBrowserBootstrapModalService","imageBrowserBootstrapModalServiceFactory","ngbModal","ImageServiceBrowserBootstrapModule","_ImageServiceBrowserBootstrapModule","URL_SITE_DOMAIN","HostParts","UrlService","_UrlService","platformWrappedLocationService","environmentSiteDomain","loadHostParts","getCurrentHost","getDomainWithSubdomain","subdomain","getHostParts","getCookieDomain","getPath","goTo","hostParts","localhost","https","hostIsLocalhost","_CookieService","documentIsAccessible","getCookieRegExp","escapedName","safeDecodeURIComponent","encodedURIComponent","cookies","currentCookie","expiresOrOptions","secure","sameSite","toUTCString","deleteAll","GRAPH_URL_MARKET","I18N_INFO_CONFIG","MarketActiveStatus","ACTIVE","INACTIVE","ANY","KEEP","I18nOrganization","USANA","BAOYING","BOTH","I18nInfoConfig","getLanguages","getCountries","getCurrent","getTranslationMarketId","getMarkets","getPcMarkets","getMarketRollup","getPcMarketRollup","org","honorCookie","activeStatus","largerOrg","org1","org2","largerActiveStatus","ms1","ms2","moreImportantCookie","hc1","hc2","combined","requestAnything","previousActiveStatus","activeStatusToBoolean","LOCALE_COOKIE","marketFragment","currentMarketFragment","marketsFragment","pcMarketsFragment","PRELOADED_INFO","I18nHonorCookie","ALWAYS","IF_URL_CONTAINS","NEVER","UsanaInternalMarketService","_UsanaInternalMarketService","urlService","graphUri","i18nInfoSubject","i18nInfo","currentConfig","marketId","findMarketById","correctedMarketId","useBackend","currentMarketId","getMarketFromBackend","backendMarketId","unsafeGetI18nInfo","geti18NInfoSubject","loadI18nInfo","usana","pcMarkets","marketOptions","findMarketOptionsByMultiId","getLocaleCookieAndNavLanguages","weightedOptions","possibleMarkets","possiblePcMarkets","minConfig","loadI18nInfoFromBackend","forceConfigLoad","graphQueries","getOrgProp","marketQuery","havingProperties","PageUrl","parseI18nInfo","languages","translationMarketId","marketRollup","pcMarketRollup","getLocaleCookie","cookieVal","theWindow","setTime","portalMarketId","includeOtherApps","findMarketOptionsById","marketIds","newPossibilities","odsyMarketId","phxMarketId","isoMarketId","pcMatches","propValue","matchOnNull","UsanaMarketService","_UsanaMarketService","usanaInternalMarketService","combinedConfig","forceReloadOfCurrentFromBackend","FullStoryAuthInformedService","_FullStoryAuthInformedService","fullStoryService","ssoLogoutService","getUserSubject","ssoUser","informOfUser","registerPreLogoutCallback","switchUserEmpId","previousUid","customerTitle","informOfIdToken","_SsoSwitchUserModule","SsoAuthModule","SsoSwitchUserConstants","AUTHORITIES","_SsoSwitchUserService","locationService","loginServiceUrl","loginRealm","idTokenName","switchUserChangeMarket","fullStoryAuthInformedService","usanaMarketService","NOT_ALLOWED_RESPONSE","canSwitchUser","roles","isSwitchedUser","switchUserUuid","switchUserPipe","switchUserRequest","sur","notifyOfNewUser","possibleRedirectUri","coreToken","refreshToken","ssoUserMarketId","language","redirectUriNewMarket","existingMarket","currentUri","SWITCH_USER_CHANGE_MARKET","SsoUser","fromJSON","_SsoAuthService","userSubject","getUserUnchecked","currentUser","getIdTokenUnchecked","currentIdToken","clearCurrent","setUserAndToken","initNoUser","b64","jsonPayload","atob","prevSub","subIfExists","SsoLogoutService","_SsoLogoutService","preCallbacks","postCallbacks","preCallback","deregisterPreLogoutCallback","cbUid","removeFromArrayWithUid","registerPostLogoutCallback","postCallback","deregisterPostLogoutCallback","handleAllCallbacks","ssoLogout","_SsoAuthModule","REQUEST","_UsanaSsrModule","PlatformService","_PlatformService","PlatformWrappedStorageService","_PlatformWrappedStorageService","PlatformWrappedLocationService","_PlatformWrappedLocationService","platformLocation","appBaseHref","baseAppUrl","PlatformWrappedWindowService","_PlatformWrappedWindowService","TranslationConfig","_TranslationConfig","processFreq","pkgConfig","getPackageSubject","setProcessFreq","freq","getProcessFreq","getMarketId","ON_INIT","ON_FIRST_REQUEST","TranslationPromiseWrapper","TranslationPackageRequests","needsPriming","TranslationKey","TranslationPackageState","platformWrappedStorageService","storageService","loadTKey","strg","pkgStorageTKey","keyInfo","dumpStorage","loadStorage","pkgStorageKey","saveStorage","makeValuesTags","missingTranslation","validTranslation","dump","requests","TranslationPackage","setNeedsPriming","priming","setProcessing","isProcessing","getTimestamp","setTimestamp","hasTag","getTagValue","resolveRequests","InternalTranslationService","_InternalTranslationService","pkgs","rejectedPkgs","pkgConfigSubject","pkgConf","initPackage","isDebugMode","debugMode","toggleDebugMode","translateAsPromise","promiseArr","getDirtyTranslationsForPackage","pkgName","bundle","processTranslationResults","dumpDataForPackage","hasMarket","hasPackage","anyRequestsAreProcessing","requestCount","buildDummyTranslationResponse","allMissing","requestTagsInPkg","primePackage","translationResult","requestTags","retLocale","internalTranslationService","I18nPipe","_I18nPipe","_UsanaTranslationsModule","DataTransformService","DataTransformWrapperService","_DataTransformWrapperService","dataTransformService","processLink","hasTransformService","_UniversalBaseComponent","dataSet","calculateAutomationId","_automationId","automationIdInput","_UniversalBaseModule","_DropdownButtonComponent_fa_icon_2_Template","_DropdownButtonComponent_span_3_Template","_DropdownButtonComponent_fa_icon_4_Template","TOGGLED_ARROW","_DropdownButtonComponent_ul_5_li_1_Template","item_r5","setToggleOpen","_DropdownButtonComponent_ul_5_Template","ButtonComponent","_ButtonComponent","buttonClass","ɵ_ButtonComponent_BaseFactory","_UniversalButtonModule","LoadingButtonComponent","_LoadingButtonComponent","buttonData","_UniversalLoadingButtonModule","DropdownButtonComponent","_DropdownButtonComponent","ARROW_DOWN_ICON","ARROW_UP_ICON","newToggle","toggled","_UniversalDropdownButtonModule","CircleLoadingSpinnerComponent","_CircleLoadingSpinnerComponent","colorType","DefaultLoadingSpinnerComponent","_DefaultLoadingSpinnerComponent","_UniversalLoadingSpinnerModule","_AlertComponent_ng_template_0_ng_template_1_Template","_AlertComponent_ng_template_0_Template","dismissible","AlertConfig","_AlertConfig","dismissOnTimeout","AlertComponent","_AlertComponent","onClosed","dismissibleChange","OnChange","_AlertModule","ComponentLoader","_componentFactoryResolver","_posService","onBeforeShow","onBeforeHide","_providers","_isHiding","containerDefaultSelector","_listenOpts","_globalListener","compType","_componentFactory","_subscribePositioning","_innerComponent","selectedElement","_registerOutsideClick","_componentEl$parentNo","_this$_contentRef","_this$_contentRef2","_this$_contentRef3","componentEl","_removeGlobalListener","_unsubscribePositioning","_unregisterListenersFn","listenOpts","_this$_elementRef","outsideEsc","registerHide","listenToTriggersV2","attachInline","vRef","_inlineViewRef","registerOutsideClick","targets","registerEscClick","getInnerComponent","_zoneSubscription","_this$_componentRef","appendToBody","contentCmptFactory","modalContentInjector","_ComponentLoaderFactory","absFloor","isDateValid","hasOwnProp","toInt","argumentForCoercion","coercedNumber","_mapUnits","addUnitAlias","shorthand","lowerCase","normalizeUnits","YEAR","MONTH","DATE","HOUR","MINUTE","MILLISECOND","WEEK","WEEKDAY","zeroFill","targetLength","forceSign","absNumber","formatFunctions","formatTokenFunctions","formattingTokens","addFormatToken","removeFormattingTokens","createUTCDate","isUTC","isSameMonth","date1","date2","isSameYear","isSameDay$1","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchShortOffset","matchTimestamp","matchWord","addRegexToken","strictRegex","isStrict","getParseRegexForToken","_strict","unescapeFormat","regexEscape","p3","addParseToken","_token","addWeekParseToken","_w","addTimeToArrayFromToken","priorities","addUnitPriority","priority","getParsingFlags","_pf","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","meridiem","weekdayMismatch","getYear","parseTwoDigitYear","mod","defaultTimeUnit","shiftDate","getNum","dayOfMonth","setUTCMonth","setUTCDate","cloneDate","setUTCMinutes","setSeconds","setUTCSeconds","setMilliseconds","setUTCMilliseconds","setLocaleDayOfWeek","getLocaleDayOfWeek","setISODayOfWeek","parseIsoWeekday","weekdaysParse","setDayOfWeek","getDayOfWeek","subtract","period","addSubtract","createDuration","getDayOfYear","dow","doy","fwd","weekOfYear","resWeek","resYear","weeksInYear","MONTHS_IN_FORMAT","defaultLocaleMonths","defaultLocaleMonthsShort","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultLongDateFormat","LTS","LT","LL","LLL","LLLL","defaultMonthsShortRegex","defaultMonthsRegex","confKey","_calendar","sameElse","longDateFormat","_longDateFormat","formatUpper","invalidDate","_invalidDate","_ordinal","preparse","postformat","relativeTime","withoutSuffix","isFuture","_relativeTime","pastFuture","_months","isFormat","_monthsShort","monthsParse","monthName","strict","_monthsParseExact","handleMonthStrictParse","_monthsParse","_longMonthsParse","_shortMonthsParse","_shortMonths","monthsRegex","computeMonthsParse","_monthsStrictRegex","_monthsRegex","monthsShortRegex","_monthsShortStrictRegex","_monthsShortRegex","_week","firstDayOfWeek","_weekdays","weekdaysMin","_weekdaysMin","_weekdaysShort","weekdayName","_weekdaysParseExact","handleWeekStrictParse","_weekdaysParse","_minWeekdaysParse","_shortWeekdaysParse","_fullWeekdaysParse","weekdaysRegex","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","weekdaysShortRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","weekdaysMinRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","isPM","isLower","formatLongDate","llc","toLocaleLowerCase","mom","shortPieces","longPieces","mixedPieces","cmpLenRev","minPieces","minp","shortp","longp","baseConfig","sameDay","nextDay","nextWeek","lastDay","lastWeek","dayOfMonthOrdinalParse","past","ss","mm","hh","MM","yy","meridiemParse","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","addWeekYearFormatToken","_getWeekYearFormatCb","getWeekYear","_getISOWeekYearFormatCb","getISOWeekYear","addOffsetFormatToken","getUTCOffset","_isUTC","getDateOffset","chunkOffset","localeFamilies","globalLocale","loadLocale","getSetGlobalLocale","defineLocale","_abbr","parentConfig","abbr","mergeConfigs","childProp","parentProp","setDefaultLocale","en","initWeek","getWeek","getISOWeek","initWeekYear","initYear","initTimezone","initTimestamp","unix","initSecond","initQuarter","getQuarter","initOffset","_useUTC","_tzm","offsetFromString","initMonth","initMinute","initMillisecond","parseMs","initHour","hFormat","lowercase","matchMeridiem","_meridiemParse","kFormat","_mm","_ss","_H","kInput","_isPm","_meridiem","bigHour","pos1","pos2","initDayOfYear","_dayOfYear","initDayOfWeek","getISODayOfWeek","invalidWeekday","initDayOfMonth","_dayOfMonthOrdinalParse","_ordinalParse","chooseLocale","ordering","orderingHash","mem","absCeil","daysToMonths","monthsToDays","thresholds","substituteTimeAgo","_isValid","isDurationValid","unitHasDecimal","_milliseconds","_days","bubble","monthsFromDays","humanize","withSuffix","localeData","posNegDuration","localeKey","mathAbs","_units","parsedParts","isNowValid","createInvalid","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","UT","configFromISO","allowTime","timeFormat","tzFormat","configFromStringAndFormat","configFromRFC2822","markInvalid","parsedArray","extractFromRFC2822Strings","checkWeekday","parsedInput","calculateOffset","militaryOffset","numOffset","hm","formatMoment","makeFormatFunction","formatArr","localFormattingTokens","replaceLongDateFormatTokens","configFromArray","yearToUse","currentDate","currentDateArray","nowValue","dayOfYearFromWeekInfo","weekdayOverflow","GG","curWeek","gg","_overflowWeeks","_overflowWeekday","dayOfYearFromWeeks","dayOfYear","resDayOfYear","_overflowDayOfYear","_nextDay","expectedWeekday","checkOverflow","ISO_8601","RFC_2822","totalParsedInputLength","inputLength","skipped","meridiemFixWrap","_hour","meridiemHour","isPm","createFromConfig","prepareConfig","_l","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","score","configFromInput","configFromString","configFromObject","normalizeObjectUnits","inputObject","normalizedInput","parseDate","createLocalOrUTC","_input","isObjectEmpty","utcAsLocal","absRound","isSame","aspNetRegex","isoRegex","convertDuration","parseIso","diffRes","momentsDifference","_other","cloneWithOffset","offsetDiff","positiveMomentsDifference","inp","isAdding","parseWeekday","_num","_weekDay","pluralForm","plurals","pluralize","months$1","monthsShort$6","thBeLocale","monthsParseExact","weekdaysParseExact","processHoursFunction","MiniState","actionsDispatcher$","MiniStore","_reducer","state$","pathOrMapFn","_this$source","_TimepickerComponent_td_6_Template","_TimepickerComponent_td_7_Template","changeMinutes","minuteStep","canIncrementMinutes","isEditable","_TimepickerComponent_td_8_Template","_TimepickerComponent_td_9_Template","changeSeconds","secondsStep","canIncrementSeconds","_TimepickerComponent_td_10_Template","_TimepickerComponent_td_11_Template","_TimepickerComponent_td_15_Template","_TimepickerComponent_td_16_Template","prevDef","wheelSign","updateMinutes","invalidMinutes","minutesPlaceholder","readonlyInput","labelMinutes","_TimepickerComponent_td_17_Template","_TimepickerComponent_td_18_Template","_r28","ctx_r27","ctx_r29","ctx_r31","updateSeconds","invalidSeconds","secondsPlaceholder","labelSeconds","_TimepickerComponent_td_19_Template","_TimepickerComponent_td_20_Template","toggleMeridian","canToggleMeridian","meridian","_TimepickerComponent_td_25_Template","_TimepickerComponent_td_26_Template","canDecrementMinutes","_TimepickerComponent_td_27_Template","_TimepickerComponent_td_28_Template","_r37","canDecrementSeconds","_TimepickerComponent_td_29_Template","_TimepickerComponent_td_30_Template","TimepickerActions","_TimepickerActions","WRITE_VALUE","changeHours","CHANGE_HOURS","CHANGE_MINUTES","CHANGE_SECONDS","SET_TIME_UNIT","updateControls","UPDATE_CONTROLS","dex","hoursPerDay","hoursPerDayHalf","minutesPerHour","secondsPerMinute","isValidLimit","toNumber","parseHours","parseMinutes","parseSeconds","parseTime","changeTime","isHourInputValid","isMinuteInputValid","isSecondInputValid","isInputValid","canChangeValue","mousewheel","arrowkeys","getControlsValue","hourStep","showSpinners","showMeridian","showSeconds","meridians","TimepickerConfig","_TimepickerConfig","allowEmptyTime","showMinutes","hoursPlaceholder","ariaLabelHours","ariaLabelMinutes","ariaLabelSeconds","canIncrementHours","canDecrementHours","timepickerReducer","canChangeHours","_newTime","canChangeMinutes","canChangeSeconds","_newControlsState","timepickerControls","_newHour","_newMinutes","_newSeconds","_newState","TimepickerStore","_TimepickerStore","TIMEPICKER_CONTROL_VALUE_ACCESSOR","TimepickerComponent","_TimepickerComponent","_timepickerActions","meridianChange","invalidHours","labelHours","timepickerSub","_renderTime","controlsState","isTimepickerInputValid","isOneOfDatesIsEmpty","isSpinnersVisible","resetValidation","updateHours","_updateTime","isInputLimitValid","isOneOfDatesEmpty","_this$timepickerSub","_hours","_BsCustomDatesViewComponent_button_1_Template","range_r1","selectFromRanges","_BsCalendarLayoutComponent_bs_current_date_0_Template","_BsCalendarLayoutComponent_bs_timepicker_5_Template","_BsDatepickerNavigationViewComponent_ng_container_3_Template","monthTitle","_BsDaysCalendarViewComponent_th_5_Template","_BsDaysCalendarViewComponent_th_6_Template","_BsDaysCalendarViewComponent_tr_8_td_1_span_1_Template","week_r5","selectWeek","weekNumbers","_BsDaysCalendarViewComponent_tr_8_td_1_span_2_Template","weekHoverHandler","_BsDaysCalendarViewComponent_tr_8_td_1_Template","isWeekHovered","isiOS","_BsDaysCalendarViewComponent_tr_8_td_2_span_1_Template","day_r23","selectDay","hoverDay","tooltipText","_BsDaysCalendarViewComponent_tr_8_td_2_span_2_Template","_BsDaysCalendarViewComponent_tr_8_td_2_span_3_Template","ctx_r43","_BsDaysCalendarViewComponent_tr_8_td_2_Template","isShowTooltip","_BsDaysCalendarViewComponent_tr_8_Template","_BsMonthCalendarViewComponent_tr_4_td_1_Template","month_r3","viewMonth","hoverMonth","isHovered","isSelected","_BsMonthCalendarViewComponent_tr_4_Template","row_r1","_BsYearsCalendarViewComponent_tr_4_td_1_Template","year_r3","viewYear","hoverYear","_BsYearsCalendarViewComponent_tr_4_Template","_BsDatepickerContainerComponent_div_0_ng_container_4_bs_days_calendar_view_2_Template","navigateTo","setViewMode","dayHoverHandler","daySelectHandler","calendar_r9","multipleCalendars","isDatePickerDisabled","options$","_BsDatepickerContainerComponent_div_0_ng_container_4_div_4_timepicker_3_Template","_BsDatepickerContainerComponent_div_0_ng_container_4_div_4_Template","isRangePicker","_BsDatepickerContainerComponent_div_0_ng_container_4_Template","daysCalendar$","withTimepicker","_BsDatepickerContainerComponent_div_0_div_5_bs_month_calendar_view_1_Template","monthHoverHandler","monthSelectHandler","calendar_r20","_BsDatepickerContainerComponent_div_0_div_5_Template","monthsCalendar","_BsDatepickerContainerComponent_div_0_div_6_bs_years_calendar_view_1_Template","yearHoverHandler","yearSelectHandler","calendar_r27","_BsDatepickerContainerComponent_div_0_div_6_Template","yearsCalendar","_BsDatepickerContainerComponent_div_0_div_7_Template","_BsDatepickerContainerComponent_div_0_div_8_div_1_Template","setToday","todayPos","todayBtnLbl","_BsDatepickerContainerComponent_div_0_div_8_div_2_Template","_r38","clearDate","clearPos","clearBtnLbl","_BsDatepickerContainerComponent_div_0_div_8_Template","showTodayBtn","showClearBtn","_BsDatepickerContainerComponent_div_0_div_9_Template","_r40","setRangeOnCalendar","chosenRange","customRanges","customRangeBtnLbl","_BsDatepickerContainerComponent_div_0_Template","_r42","positionServiceEnable","animationState","viewMode","_BsDaterangepickerContainerComponent_div_0_ng_container_4_bs_days_calendar_view_2_Template","_BsDaterangepickerContainerComponent_div_0_ng_container_4_div_4_timepicker_3_Template","_BsDaterangepickerContainerComponent_div_0_ng_container_4_div_4_Template","_BsDaterangepickerContainerComponent_div_0_ng_container_4_Template","_BsDaterangepickerContainerComponent_div_0_div_5_bs_month_calendar_view_1_Template","_BsDaterangepickerContainerComponent_div_0_div_5_Template","_BsDaterangepickerContainerComponent_div_0_div_6_bs_years_calendar_view_1_Template","_BsDaterangepickerContainerComponent_div_0_div_6_Template","_BsDaterangepickerContainerComponent_div_0_div_7_Template","_BsDaterangepickerContainerComponent_div_0_div_8_div_1_Template","_BsDaterangepickerContainerComponent_div_0_div_8_div_2_Template","_BsDaterangepickerContainerComponent_div_0_div_8_Template","_BsDaterangepickerContainerComponent_div_0_div_9_Template","_BsDaterangepickerContainerComponent_div_0_Template","BsDatepickerConfig","_BsDatepickerConfig","useUtc","returnFocusToInput","displayMonths","rangeSeparator","rangeInputFormat","yearTitle","dayLabel","monthLabel","yearLabel","showTodayButton","showClearButton","todayPosition","clearPosition","todayButtonLabel","clearButtonLabel","customRangeButtonLabel","allowedPositions","keepDatepickerOpened","keepDatesOutOfRules","DATEPICKER_ANIMATION_TIMING","datepickerAnimation","BsDatepickerAbstractComponent","_daysCalendarSub","selectedTimeSub","minDate","_this$_effects","_effects","setMinDate","maxDate","_this$_effects2","setMaxDate","daysDisabled","_this$_effects3","setDaysDisabled","datesDisabled","_this$_effects4","setDatesDisabled","datesEnabled","_this$_effects5","setDatesEnabled","_this$_effects6","setDisabled","dateCustomClasses","_this$_effects7","setDateCustomClasses","dateTooltipTexts","_this$_effects8","setDateTooltipTexts","_daysCalendar$","timeSelectHandler","dates","_stopPropagation","BsDatepickerActions","_BsDatepickerActions","calculate","CALCULATE","FORMAT","FLAG","SELECT","selectTime","SELECT_TIME","changeViewMode","CHANGE_VIEWMODE","NAVIGATE_TO","navigateStep","NAVIGATE_OFFSET","SET_OPTIONS","selectRange","SELECT_RANGE","HOVER","cell","SET_MIN_DATE","SET_MAX_DATE","SET_DAYSDISABLED","SET_DATESDISABLED","SET_DATESENABLED","SET_IS_DISABLED","SET_DATE_CUSTOM_CLASSES","SET_DATE_TOOLTIP_TEXTS","_BsLocaleService","_defaultLocale","_localeChange","localeChange","currentLocale","BsDatepickerEffects","_BsDatepickerEffects","_localeService","_subs","_bsDatepickerStore","_this$_store","setRangeValue","_this$_store2","_this$_store3","_this$_store4","_this$_store5","_this$_store6","_this$_store7","_this$_store8","_this$_store9","_this$_store10","_this$_store11","setBindings","selectedTime","times","flaggedMonths","flaggedMonthsCalendar","yearsCalendarFlagged","_state$view","setEventHandlers","_this$_store12","_this$_store13","_this$_store14","_cell","isOtherMonth","registerDatepickerSideEffects","_this$_store15","monthsModel","monthModel","_this$_store16","formattedMonths","_this$_store17","selectedDate","_this$_store18","_this$_store19","_this$_store20","yearsCalendarModel","_this$_store21","hoveredDate","_this$_store22","_this$_store23","_this$_store24","_this$_store25","_initialView","initialDatepickerState","monthViewOptions","isMonthDisabled","minBound","maxBound","isYearDisabled","isDisabledDate","dateDisabled","isEnabledDate","enabledDate","getYearsCalendarInitialDate","calendarIndex","checkRangesWithMaxDate","ranges","compareDateWithMaxDateHelper","checkBsValue","setCurrentTimeOnDateSelect","setCurrentTimeHelper","setDateRangesCurrentTimeOnDateSelect","createMatrix","prevValue","initialDate","calcDaysCalendar","startingDate","getFirstDayOfMonth","getStartingDayOfCalendar","isFirstDayOfWeek","calculateDateOffset","startingDayOffset","_startingDayOffset","daysMatrix","getWeekNumbers","getShiftedWeekdays","canSwitchMode","minMode","height$1","width$1","shift$1","formatMonthsCalendar","viewDate","formatOptions","hideRightArrow","hideLeftArrow","disableRightArrow","disableLeftArrow","yearsPerCalendar","initialYearShift","formatYearsCalendar","previousInitialDate","calculateInitialDate","yearsMatrix","formatYearRangeTitle","copyTime","sourceDate","bsDatepickerReducer","calculateReducer","displayOneMonthRange","isDisplayOneMonth","showPreviousMonth","monthIndex","preventChangeToNextMonth","getFormatOptions","formatReducer","formatDaysCalendar","daysCalendar","weekIndex","dayIndex","flagReducer","formattedMonth","flagDaysCalendar","isSameDay","isSelectionStart","isSelectionEnd","isDateInRange","isDisabledDay","isToday","customClasses","dcc","newDay","flagMonthsCalendar","monthCalendar","rowIndex","hoveredMonth","newMonth","yearIndex","flagYearsCalendar","hoveredYear","navigateOffsetReducer","shiftViewDate","middleDate","setFullDate","_time","getViewDate","_newState$selectedRan","dte","BsDatepickerStore","_BsDatepickerStore","BsCustomDatesViewComponent","_BsCustomDatesViewComponent","customRangeLabel","BsNavigationDirection","previousDate$1","BsCurrentDateViewComponent","_BsCurrentDateViewComponent","BsTimepickerViewComponent","_BsTimepickerViewComponent","ampm","BsCalendarLayoutComponent","_BsCalendarLayoutComponent","BsDatepickerDayDecoratorComponent","_BsDatepickerDayDecoratorComponent","_this$day","_this$day2","_this$day3","isOtherMonthHovered","BsDatepickerNavigationViewComponent","_BsDatepickerNavigationViewComponent","onNavigate","onViewMode","navTo","down","BsDaysCalendarViewComponent","_BsDaysCalendarViewComponent","onHoverWeek","selectWeekDateRange","selectFromOtherMonth","selectedDay","lastDayOfRange","dateData","BsMonthCalendarViewComponent","_BsMonthCalendarViewComponent","BsYearsCalendarViewComponent","_BsYearsCalendarViewComponent","BsDatepickerContainerComponent","_BsDatepickerContainerComponent","_this$_effects9","isDatepickerDisabled","isDatepickerReadonly","valueChange","_this$_positionServic","_this$_effects10","event$","isTopPosition","isOtherMonthsActive","_this$selectedTime","_this$startTimepicker2","_this$startTimepicker","startTimepicker","_this$_effects11","BsDatepickerDirective","_BsDatepickerDirective","readonlyValue","isDestroy$","bsValueChange","_dateInputFormat$","_datepicker","isOpen$","bsValue","_this$bsConfig","_bsValue","bsConfig","initCurrentTime","initPreviousValue","dateInputFormat$","setConfig","_changes$bsConfig$cur","_changes$bsConfig$cur2","_changes$bsConfig$pre","_datepickerRef","initSubscribes","keepDatepickerModalOpened","_this$bsConfig2","isDateSame","_this$_bsValue","_previousDate$","_this$_bsValue2","_previousDate$2","_this$_bsValue3","_previousDate$3","_this$bsConfig3","_this$bsConfig4","_this$bsConfig5","unsubscribeSubscriptions","_this$_subs","BsDaterangepickerContainerComponent","_BsDaterangepickerContainerComponent","_this$_effects12","_rangeStack","_this$_positionServic2","_this$_effects13","dateRange","_this$selectedTime2","_this$startTimepicker4","_this$endTimepicker2","_this$startTimepicker3","_this$endTimepicker","endTimepicker","rangesProcessing","maxDateRange","setMaxDateRangeOnCalendar","_this$_effects14","currentSelection","_this$_effects15","maxDateValueInMilliseconds","maxDateRangeInMilliseconds","BS_DATEPICKER_VALUE_ACCESSOR","BsDatepickerInputDirective","BS_DATEPICKER_VALIDATOR","previousDate","_BsDatepickerInputDirective","_picker","_onTouched","_validatorChange","setBsValue","_setInputValue","onKeydownEvent","bsDate","_localeKey","blur","BsDaterangepickerConfig","_BsDaterangepickerConfig","ɵ_BsDaterangepickerConfig_BaseFactory","BsDaterangepickerDirective","_BsDaterangepickerDirective","_this$bsConfig10","rangeInputFormat$","_rangeInputFormat$","_changes$bsConfig$cur5","_changes$bsConfig$cur6","_changes$bsConfig$pre3","_this$bsConfig11","_this$_bsValue4","_previousDate","_this$_bsValue5","_previousDate2","_this$_bsValue6","_previousDate3","_this$_bsValue7","_previousDate4","_this$_bsValue8","_previousDate5","_this$_bsValue9","_previousDate6","_this$bsConfig12","_this$bsConfig13","_this$bsConfig14","_this$bsConfig15","_this$_subs4","BS_DATERANGEPICKER_VALUE_ACCESSOR","BsDaterangepickerInputDirective","BS_DATERANGEPICKER_VALIDATOR","_BsDaterangepickerInputDirective","_isFirstDateValid","_isSecondDateValid","trimmedSeparator","_val","BsDropdownConfig","_BsDropdownConfig","autoClose","insideClick","stopOnClickPropagation","BsDropdownState","_BsDropdownState","isDisabledChange","toggleClick","counts","dropdownMenu","resolveDropdownMenu","dropdownAnimation","DROPDOWN_ANIMATION_TIMING","BsDropdownContainerComponent","_BsDropdownContainerComponent","_factoryDropDownAnimation","_contains","_BsDropdownDirective","_isDisabled","_showInline","_isInlineOpen","_dropdown","_cis","dropup","_subscriptions","_inlinedMenu","addBs4Polyfills","playAnimation","_dropup","removeShowClass","removeDropupStyles","navigationClick","firstActive","allRef","addShowClass","checkRightAlignment","addDropupStyles","isRightAligned","BsDropdownMenuDirective","_BsDropdownMenuDirective","BsDropdownToggleDirective","_BsDropdownToggleDirective","_documentClickListener","_escKeyUpListener","_BsDropdownModule","FocusTrapManager","_FocusTrapManager","_focusTrapStack","focusTrap","ft","_disable","_enable","InteractivityChecker","_InteractivityChecker","hasAttribute","hasGeometry","getClientRects","isTabbable","frameElement","getFrameElement","getTabIndexValue","tabIndexValue","isPotentiallyTabbableIOS","inputType","isFocusable","isPotentiallyFocusable","isHiddenInput","isInputElement","isNativeFormElement","isAnchorWithHref","hasValidTabIndex","ignoreVisibility","coerceBooleanProperty","FocusTrap","_startAnchor","_endAnchor","_toggleAnchorTabIndex","_checker","deferAnchors","_hasAttached","startAnchorListener","focusLastTabbableElement","endAnchorListener","focusFirstTabbableElement","attachAnchors","startAnchor","endAnchor","_createAnchor","focusInitialElementWhenReady","_executeOnStable","focusInitialElement","focusFirstTabbableElementWhenReady","focusLastTabbableElementWhenReady","_getRegionBoundary","bound","markers","_getFirstTabbableElement","_getLastTabbableElement","redirectToElement","focusableChild","hasAttached","tabbableChild","toggleAnchors","FocusTrapFactory","_FocusTrapFactory","deferCaptureElements","FocusTrapDirective","_FocusTrapDirective","autoCapture","_autoCapture","_focusTrapFactory","_previouslyFocusedElement","_captureFocus","autoCaptureChange","FocusTrapModule","_FocusTrapModule","BsModalRef","_BsModalRef","setClass","ModalOptions","_ModalOptions","modalConfigDefaults","MODAL_CONFIG_DEFAULT_OVERRIDE","CLASS_NAME","ModalContainerComponent","_ModalContainerComponent","_focusEl","isModalHiding","clickStartedInContent","bsModalService","getModalsCount","checkScrollbar","setScrollbar","onClickStarted","onClickStop","_this$bsModalService","setDismissReason","_this$bsModalService2","onEsc","_this$bsModalService3","_this$bsModalService4","_hide","_this$bsModalService5","_this$bsModalService6","ariaDescribedby","ModalBackdropComponent","_ModalBackdropComponent","_isAnimated","_isShown","Utils","ModalDirective","_ModalDirective","clf","modalDefaultOption","onShow","isBodyOverflowing","originalBodyPadding","timerHideModal","timerRmBackDrop","isNested","_backdrop","dismissReason","hideModal","showBackdrop","showElement","window$1","transitionComplete","resetScrollbar","resetAdjustments","focusOtherModal","callbackRemove","removeBackdrop","otherOpenedModals","getScrollbarWidth","scrollDiv","_BsModalService","modalsCount","_backdropLoader","_createLoaders","_showBackdrop","lastDismissReason","_showModal","_hideBackdrop","_hideModal","removeLoaders","isBackdropEnabled","isBackdropInDOM","backdropRef","modalLoader","modalContainerRef","_modalContainerRef$in","newClass","copyEvent","indexToRemove","_loader$instance","_loader$instance2","_ModalModule","animationFrameProvider","cancelAnimationFrame","animationFrameScheduler","AnimationFrameScheduler","flushId","_scheduled","AnimationFrameAction","MapPlacementInToRL","getStyleComputedProperty","nextElementSibling","findCommonOffsetParent","element1","element2","DOCUMENT_POSITION_FOLLOWING","createRange","setStart","setEnd","commonAncestorContainer","isOffsetContainer","firstElementChild","element1root","getFixedPositionOffsetParent","getBordersSize","sideA","sideB","computedStyle","_body","_html","getWindowSizes","getClientRect","horizScrollbar","vertScrollbar","getOffsetRectRelativeToArbitraryNode","fixedPosition","_childrenRect$top","_parentRect$top2","_childrenRect$left","_parentRect$left2","isHTML","childrenRect","parentRect","borderTopWidth","borderLeftWidth","_parentRect$top","_parentRect$left","marginTop","marginLeft","getScroll","side","upperSide","scrollingElement","getBoundaries","boundaries","getViewportOffsetRectRelativeToArtbitraryNode","excludeScroll","relativeOffset","boundariesNode","getArea","_boundaries$width","_refRect$top","_boundaries$top","_boundaries$right","_refRect$right","_boundaries$height","_boundaries$width2","_boundaries$bottom","_refRect$bottom","_refRect$left","_boundaries$left","_boundaries$height2","sortedAreas","filteredAreas","allowedPosition","computedPlacement","getOuterSizes","marginBottom","marginRight","getReferenceOffsets","getTargetOffsets","hostOffsets","_hostOffsets$mainSide","_hostOffsets$secondar","_hostOffsets$getOppos","targetRect","targetOffsets","isHoriz","secondarySide","measurement","secondaryMeasurement","isModifierEnabled","_options$modifiers$mo","availablePositions","checkPopoverMargin","checkPosition","isNumeric","_data$offsets$host$op","_targetOffsets$side","_targetOffsets$opSide","_targetOffsets$side3","sideCapitalized","opSide","arrowElementSize","placementVariation","_targetOffsets$side2","_data$offsets$host$op2","targetMarginSide","targetBorderSide","targetBorderRadius","targetSideArrowOffset","sideValue","et","gt","flipOrder","_data$offsets$target$5","_data$offsets$host$le","_data$offsets$target$6","_data$offsets$host$ri","_data$offsets$target$7","_data$offsets$host$to","_data$offsets$target$8","_data$offsets$host$bo","_data$offsets$target$9","_boundaries$left2","_data$offsets$target$10","_boundaries$right2","_data$offsets$target$11","_boundaries$top2","_data$offsets$target$12","_boundaries$bottom2","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariation","getOppositeVariation","_data$options$modifie","transformProp","targetStyles","T2","_data$offsets$target$13","_boundaries$placement","_data$offsets$target$14","_boundaries$placement2","_data$offsets$target$15","_boundaries$placement3","isPlacementHorizontal","_data$offsets$target$16","_boundaries$placement4","Et","shiftVariation","_host$side","shiftOffsets","Ne","positionService","Positioning","positionElements","chainOfModifiers","hostElPosition","placementAuto","positionFixed","modifiedData","_PositioningService","update$$","triggerEvent$","positionElement","getOffsets","_data$offsets$target$","_data$offsets$target$2","_data$offsets$target$3","_data$offsets$target$4","updateContainerClass","dataPlacement","_getHtmlElement","addPositionElement","elRef","TooltipConfig","_TooltipConfig","TooltipContainerComponent","_TooltipContainerComponent","classMap","fade","TooltipDirective","_TooltipDirective","_tooltip","htmlContent","warnOnce","_appendToBody","_popupClass","_tooltipContext","_tooltipPopupDelay","_tooltipTrigger","tooltipId","tooltipChange","tooltipAnimation","tooltipFadeDuration","tooltipStateChanged","showTooltip","_tooltipCancelShowFn","_delaySubscription","_this$_delaySubscript","_this$_tooltip$instan","_TooltipModule","Trigger","isManual","DEFAULT_ALIASES","trimmedTriggers","parsedTriggers","triggerPair","manualTriggers","_registerHide","useToggle","showFn","triggerClose","optionsHide","unsubscribeFn","BsVerions","isBs4","guessedVersion","_guessBsVersion","spanEl","checkPadding","asArray","_current2","_current","tail","currentPreviousNode","currentNextNode","createInternalArrayRepresentation","_this$tail","removedNode","findAll","_this$head","lastItem","_current3","outArray","propertyKey","getStyles","stackOverflowConfig","bsVer","currentBsVersion","resVersion","crossorigin","integrity","cdnLink","_messagesHash","_hideMsg","COOKIE_OPTIONS","COOKIE_WRITER","isNil","oldOptions","httpOnly","storeUnencoded","CookieOptionsProvider","optionsProvider","cookieWriterService","hasKey","_this$getAll","getObject","parseCookieString","currentCookieString","cookieArray","lastCookies","readAllAsString","putObject","removeAll","CookieWriterService","buildCookieString","cookieLength","cookieServiceFactory","cookieOptionsProvider","withOptions","extendStatics","metadataKey","metadataValue","_arguments","generator","fulfilled","rejected","throw","adopt","trys","ops","verb","ar","resume","fulfill","settle","__values","SuppressedError"],"sourceRoot":"webpack:///","sources":["./environments/environment.baoying.prod.ts","./node_modules/ts-invariant/lib/invariant.js","./node_modules/@apollo/client/version.js","./node_modules/@apollo/client/utilities/globals/maybe.js","./node_modules/@apollo/client/utilities/globals/global.js","./node_modules/@apollo/client/utilities/common/makeUniqueId.js","./node_modules/@apollo/client/utilities/common/stringifyForDisplay.js","./node_modules/@apollo/client/utilities/globals/invariantWrappers.js","./node_modules/zen-observable-ts/module.js","./node_modules/@apollo/client/utilities/globals/index.js","./node_modules/@apollo/client/utilities/common/objects.js","./node_modules/@apollo/client/utilities/graphql/fragments.js","./node_modules/@wry/caches/lib/weak.js","./node_modules/@wry/caches/lib/strong.js","./node_modules/@apollo/client/utilities/caching/caches.js","./node_modules/@apollo/client/utilities/caching/sizes.js","./node_modules/@apollo/client/utilities/caching/getMemoryInternals.js","./node_modules/@apollo/client/utilities/common/canonicalStringify.js","./node_modules/@apollo/client/utilities/graphql/storeUtils.js","./node_modules/@apollo/client/utilities/graphql/getFromAST.js","./node_modules/@apollo/client/link/core/ApolloLink.js","./node_modules/@apollo/client/link/utils/createOperation.js","./node_modules/@apollo/client/link/utils/transformOperation.js","./node_modules/@apollo/client/link/utils/validateOperation.js","./node_modules/optimism/node_modules/@wry/trie/lib/index.js","./node_modules/@wry/context/lib/slot.js","./node_modules/optimism/lib/context.js","./node_modules/optimism/lib/helpers.js","./node_modules/optimism/lib/entry.js","./node_modules/optimism/lib/dep.js","./node_modules/optimism/lib/index.js","./node_modules/@wry/equality/lib/index.js","./node_modules/@apollo/client/cache/core/cache.js","./node_modules/@apollo/client/cache/core/types/common.js","./node_modules/@wry/trie/lib/index.js","./node_modules/@apollo/client/utilities/common/canUse.js","./node_modules/@apollo/client/utilities/graphql/DocumentTransform.js","./node_modules/graphql/language/kinds.mjs","./node_modules/graphql/jsutils/devAssert.mjs","./node_modules/graphql/jsutils/inspect.mjs","./node_modules/graphql/language/ast.mjs","./node_modules/graphql/language/visitor.mjs","./node_modules/@apollo/client/utilities/common/arrays.js","./node_modules/@apollo/client/utilities/graphql/transform.js","./node_modules/graphql/language/characterClasses.mjs","./node_modules/graphql/language/blockString.mjs","./node_modules/graphql/language/printString.mjs","./node_modules/graphql/language/printer.mjs","./node_modules/@apollo/client/utilities/graphql/print.js","./node_modules/@apollo/client/utilities/common/compact.js","./node_modules/@apollo/client/utilities/common/mergeDeep.js","./node_modules/@apollo/client/utilities/graphql/directives.js","./node_modules/@apollo/client/utilities/common/maybeDeepFreeze.js","./node_modules/@apollo/client/cache/inmemory/helpers.js","./node_modules/@apollo/client/cache/inmemory/entityStore.js","./node_modules/@apollo/client/cache/inmemory/object-canon.js","./node_modules/@apollo/client/cache/inmemory/readFromStore.js","./node_modules/@apollo/client/utilities/common/cloneDeep.js","./node_modules/@apollo/client/cache/inmemory/reactiveVars.js","./node_modules/@apollo/client/cache/inmemory/key-extractor.js","./node_modules/@apollo/client/cache/inmemory/policies.js","./node_modules/@apollo/client/cache/inmemory/writeToStore.js","./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js","./node_modules/@angular/animations/fesm2022/browser.mjs","./node_modules/@angular/platform-browser/fesm2022/animations.mjs","./projects/shared/src/pipes/interpolate/interpolate.module.ts","./projects/common/src/authentication/authentication.module.ts","./projects/common/src/cms/earnings-opt-in/earnings-opt-in-item.service.ts","./projects/common/src/cms/earnings-opt-in/state/earnings-opt-in.state.ts","./projects/common/src/cms/earnings-opt-in/earnings-opt-in-item.module.ts","./projects/common/src/analytics/model/analytics.model.ts","./projects/common/src/analytics/service/analytics.service.ts","./projects/common/src/analytics/analytics.module.ts","./projects/common/src/cms/cms.constants.ts","./projects/common/src/cms/state/cms.actions.ts","./projects/common/src/cms/services/cms-edit.service.ts","./projects/common/src/cms/state/cms.operators.ts","./projects/common/src/cms/services/cms.service.ts","./projects/shared/src/confirmation-modal/confirmation-modal/confirmation-modal.component.html","./projects/shared/src/confirmation-modal/confirmation-modal/confirmation-modal.component.ts","./projects/common/src/cms/state/cms.state.ts","./projects/common/src/cms/state/cms.selectors.ts","./projects/common/src/cms/cms-child-edit-menu/cms-child-edit-menu.component.html","./projects/common/src/cms/cms-child-edit-menu/cms-child-edit-menu.component.ts","./projects/common/src/cms/services/cms-link.service.ts","./projects/common/src/cms/cms-link/cms-link.component.html","./projects/common/src/cms/cms-link/cms-link.component.ts","./projects/common/src/cms/cms-add-button/cms-add-button.component.html","./projects/common/src/cms/cms-add-button/cms-add-button.component.ts","./projects/common/src/cms/container-edit-menu/container-edit-menu.component.html","./projects/common/src/cms/container-edit-menu/container-edit-menu.component.ts","./projects/common/src/cms/cms-base.directive.ts","./projects/common/src/cms/containers/cms-base-interval-container.directive.ts","./projects/common/src/cms/state/cms.constants.ts","./projects/common/src/cms/containers/banner-slider/cms-hub-banner-slider-container.component.html","./projects/common/src/cms/containers/banner-slider/cms-hub-banner-slider-container.component.ts","./projects/common/src/cms/containers/cms-base-container.directive.ts","./projects/common/src/cms/containers/columned/cms-columned-container.component.html","./projects/common/src/cms/containers/columned/cms-columned-container.component.ts","./projects/common/src/cms/containers/gallery/cms-gallery-container.component.html","./projects/common/src/cms/containers/gallery/cms-gallery-container.component.ts","./projects/common/src/cms/containers/slide/cms-slide-container.component.html","./projects/common/src/cms/containers/slide/cms-slide-container.component.ts","./projects/common/src/cms/items/cms-item-base.directive.ts","./projects/common/src/cms/items/banner-item/cms-hub-banner-slider-item.component.html","./projects/common/src/cms/items/banner-item/cms-hub-banner-slider-item.component.ts","./projects/common/src/cms/cms-basic-container/cms-basic-container.component.html","./projects/common/src/cms/cms-basic-container/cms-basic-container.component.ts","./projects/common/src/cms/cms-basic-item/cms-basic-item.component.ts","./projects/common/src/cms/cms-basic-item/cms-basic-item.component.html","./projects/common/src/cms/cms-group-container/cms-group-container.component.html","./projects/common/src/cms/cms-group-container/cms-group-container.component.ts","./projects/common/src/cms/cms-group-page/cms-group-page.component.html","./projects/common/src/cms/cms-group-page/cms-group-page.component.ts","./node_modules/ngx-bootstrap/popover/fesm2022/ngx-bootstrap-popover.mjs","./projects/shared/src/popover/popover/popover.component.ts","./projects/shared/src/popover/popover/popover.component.html","./projects/common/src/cms/cms-hub-nav-item/cms-hub-nav-item.component.html","./projects/common/src/cms/cms-hub-nav-item/cms-hub-nav-item.component.ts","./projects/common/src/cms/cms-side-nav/cms-side-nav.component.html","./projects/common/src/cms/cms-side-nav/cms-side-nav.component.ts","./projects/common/src/cms/cms-hub-nav-block-container/cms-hub-nav-block-container.component.html","./projects/common/src/cms/cms-hub-nav-block-container/cms-hub-nav-block-container.component.ts","./projects/common/src/cms/cms-hub-nav-subgroup-container/cms-hub-nav-subgroup-container.component.html","./projects/common/src/cms/cms-hub-nav-subgroup-container/cms-hub-nav-subgroup-container.component.ts","./projects/common/src/cms/cms-image-link-item/cms-image-link-item.component.ts","./projects/common/src/cms/cms-image-link-item/cms-image-link-item.component.html","./projects/common/src/cms/cms-link-item/cms-link-item.component.ts","./projects/common/src/cms/cms-link-item/cms-link-item.component.html","./projects/common/src/cms/cms-panel-container/cms-panel-container.component.html","./projects/common/src/cms/cms-panel-container/cms-panel-container.component.ts","./projects/common/src/cms/earnings-opt-in/state/earnings-opt-in.selectors.ts","./projects/shared/src/toast/toast.model.ts","./projects/shared/src/toast/toast.service.ts","./projects/common/src/cms/earnings-opt-in/earnings-opt-in-item/earnings-opt-in-item.component.html","./projects/common/src/cms/earnings-opt-in/earnings-opt-in-item/earnings-opt-in-item.component.ts","./projects/common/src/cms/items/cms-item-binding-definitions.model.ts","./projects/common/src/contest/state/contest-service.actions.ts","./projects/common/src/contest/service/contest-api.service.ts","./projects/common/src/contest/state/contest-service.state.ts","./projects/common/src/contest/state/contest-service.selectors.ts","./projects/common/src/cms/items/contest-opt-in/cms-contest-opt-in.component.html","./projects/common/src/cms/items/contest-opt-in/cms-contest-opt-in.component.ts","./projects/common/src/cms/items/slide/cms-slide-item.component.html","./projects/common/src/cms/items/slide/cms-slide-item.component.ts","./projects/common/src/cms/items/titled-item/cms-titled-item.component.html","./projects/common/src/cms/items/titled-item/cms-titled-item.component.ts","./projects/common/src/cms/news/usana-news-container.component.html","./projects/common/src/cms/news/usana-news-container.component.ts","./projects/shared/src/bread-crumb/bread-crumb/bread-crumb.component.html","./projects/shared/src/bread-crumb/bread-crumb/bread-crumb.component.ts","./projects/common/src/cms/news/usana-news-item.component.html","./projects/common/src/cms/news/usana-news-item.component.ts","./projects/shared/src/pipes/html-to-plain-text/html-to-plain-text.pipe.ts","./projects/common/src/cms/news/usana-news-landing-item.component.ts","./projects/common/src/cms/news/usana-news-landing-item.component.html","./projects/common/src/cms/training/related-stories/related-stories-container/related-stories-container.component.html","./projects/common/src/cms/training/related-stories/related-stories-container/related-stories-container.component.ts","./projects/shared/src/cards/cards.directive.ts","./projects/shared/src/cards-horizontal/cards-horizontal/cards-horizontal.component.ts","./projects/shared/src/cards-horizontal/cards-horizontal/cards-horizontal.component.html","./projects/common/src/cms/training/related-stories/related-stories-item/related-stories-item.component.ts","./projects/common/src/cms/training/related-stories/related-stories-item/related-stories-item.component.html","./projects/common/src/cms/training/training.constants.ts","./projects/common/src/cms/training/training-sub-category/training-sub-category-container/training-sub-category-container.component.html","./projects/common/src/cms/training/training-sub-category/training-sub-category-container/training-sub-category-container.component.ts","./projects/shared/src/cards/cards/cards.component.html","./projects/shared/src/cards/cards/cards.component.ts","./projects/common/src/cms/training/training-sub-category/training-sub-category-item/training-sub-category-item.component.html","./projects/common/src/cms/training/training-sub-category/training-sub-category-item/training-sub-category-item.component.ts","./projects/common/src/constants/contest-types.ts","./node_modules/@babel/runtime/helpers/esm/typeof.js","./node_modules/@babel/runtime/helpers/esm/defineProperty.js","./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","./node_modules/@apollo/client/core/networkStatus.js","./node_modules/@apollo/client/link/core/execute.js","./node_modules/@apollo/client/link/http/serializeFetchParameter.js","./node_modules/@apollo/client/link/http/iterators/reader.js","./node_modules/@apollo/client/link/http/responseIterator.js","./node_modules/@apollo/client/link/http/iterators/async.js","./node_modules/@apollo/client/link/http/iterators/promise.js","./node_modules/@apollo/client/link/http/iterators/nodeStream.js","./node_modules/@apollo/client/link/utils/throwServerError.js","./node_modules/@apollo/client/errors/index.js","./node_modules/@apollo/client/utilities/common/incrementalResult.js","./node_modules/@apollo/client/link/http/parseAndCheckHttpResponse.js","./node_modules/@apollo/client/link/http/checkFetcher.js","./node_modules/@apollo/client/link/http/selectHttpOptionsAndBody.js","./node_modules/@apollo/client/link/utils/fromError.js","./node_modules/@apollo/client/link/http/createHttpLink.js","./node_modules/@apollo/client/link/http/selectURI.js","./node_modules/@apollo/client/link/utils/filterOperationVariables.js","./node_modules/@apollo/client/link/http/rewriteURIForGET.js","./node_modules/@apollo/client/link/http/HttpLink.js","./node_modules/@apollo/client/utilities/observables/asyncMap.js","./node_modules/@apollo/client/utilities/common/errorHandling.js","./node_modules/@apollo/client/utilities/observables/iteration.js","./node_modules/@apollo/client/utilities/observables/subclassing.js","./node_modules/@apollo/client/utilities/observables/Concast.js","./node_modules/@apollo/client/core/equalByQuery.js","./node_modules/@apollo/client/core/ObservableQuery.js","./node_modules/graphql/language/predicates.mjs","./node_modules/@apollo/client/core/LocalState.js","./node_modules/@apollo/client/core/QueryInfo.js","./node_modules/@apollo/client/core/QueryManager.js","./node_modules/@apollo/client/utilities/common/mergeOptions.js","./node_modules/@apollo/client/core/ApolloClient.js","./node_modules/graphql/jsutils/invariant.mjs","./node_modules/graphql/language/location.mjs","./node_modules/graphql/language/printLocation.mjs","./node_modules/graphql/error/GraphQLError.mjs","./node_modules/graphql/jsutils/isObjectLike.mjs","./node_modules/graphql/error/syntaxError.mjs","./node_modules/graphql/language/directiveLocation.mjs","./node_modules/graphql/language/tokenKind.mjs","./node_modules/graphql/language/lexer.mjs","./node_modules/graphql/jsutils/instanceOf.mjs","./node_modules/graphql/language/source.mjs","./node_modules/graphql/language/parser.mjs","./node_modules/graphql-tag/lib/index.js","./node_modules/apollo-angular/fesm2022/ngApollo.mjs","./projects/common/src/cms/constants/get-contest-stats-query.ts","./projects/common/src/cms/cms-stat-page/cms-contest-stat-page.component.html","./projects/common/src/cms/cms-stat-page/cms-contest-stat-page.component.ts","./projects/usana/src/app/task-tracker-widget/constants/task-tracker-widget-column-breakpoints.constants.ts","./projects/usana/src/app/task-tracker-widget/state/task-tracker.actions.ts","./projects/usana/src/app/task-tracker-widget/constants/task-tracker-program-key.enum.ts","./projects/usana/src/app/task-tracker-widget/constants/task-tracker.constants.ts","./projects/usana/src/app/task-tracker-widget/task-tracker-widget.tokens.ts","./projects/usana/src/app/task-tracker-widget/services/task-tracker.service.ts","./projects/usana/src/app/task-tracker-widget/state/task-tracker.state.ts","./projects/usana/src/app/task-tracker-widget/state/task-tracker.selectors.ts","./node_modules/@angular/cdk/fesm2022/coercion.mjs","./node_modules/@angular/cdk/fesm2022/platform.mjs","./node_modules/@angular/cdk/fesm2022/layout.mjs","./node_modules/rxjs/dist/esm/internal/operators/debounceTime.js","./projects/common/src/constants/modal-loading-spinner-style.ts","./projects/usana/src/app/task-tracker-widget/components/progress-percent-indicator/progress-percent-indicator.component.html","./projects/usana/src/app/task-tracker-widget/components/progress-percent-indicator/progress-percent-indicator.component.ts","./projects/usana/src/app/task-tracker-widget/components/task-tracker-item/task-tracker-item.component.html","./projects/usana/src/app/task-tracker-widget/components/task-tracker-item/task-tracker-item.component.ts","./projects/usana/src/app/task-tracker-widget/components/task-tracker-widget/task-tracker-widget-skeleton-loader/task-tracker-widget-skeleton-loader.component.ts","./projects/usana/src/app/task-tracker-widget/components/task-tracker-widget/task-tracker-widget-skeleton-loader/task-tracker-widget-skeleton-loader.component.html","./projects/shared/src/pipes/enhanced-replace/enhanced-replace.pipe.ts","./projects/usana/src/app/task-tracker-widget/pipes/order-tasks.pipe.ts","./projects/usana/src/app/task-tracker-widget/components/task-tracker-widget/task-tracker-widget.component.html","./projects/usana/src/app/task-tracker-widget/components/task-tracker-widget/task-tracker-widget.component.ts","./projects/usana/src/app/task-tracker-widget/components/task-tracker-widget-container/task-tracker-widget-container.component.html","./projects/usana/src/app/task-tracker-widget/components/task-tracker-widget-container/task-tracker-widget-container.component.ts","./projects/common/src/cms/cms-task-tracker/cms-task-tracker.component.ts","./projects/common/src/cms/cms-task-tracker/cms-task-tracker.component.html","./projects/common/src/cms/services/cms-component.service.ts","./projects/common/src/cms/items/cms-item.component.ts","./projects/common/src/cms/items/cms-item.component.html","./node_modules/ngx-bootstrap/carousel/fesm2022/ngx-bootstrap-carousel.mjs","./projects/common/src/cms/items/mini-card-carousel/mini-card-carousel.component.html","./projects/common/src/cms/items/mini-card-carousel/mini-card-carousel.component.ts","./projects/common/src/cms/page/cms-page.component.html","./projects/common/src/cms/page/cms-page.component.ts","./projects/common/src/contest/contest-service.module.ts","./projects/shared/src/bread-crumb/bread-crumb.module.ts","./projects/shared/src/pipes/html-to-plain-text/html-to-plain-text.module.ts","./projects/shared/src/popover/popover.module.ts","./projects/shared/src/pipes/enhanced-replace/enhanced-replace.module.ts","./projects/shared/src/pipes/replace/replace.module.ts","./projects/common/src/common-icons/common-icons.module.ts","./projects/usana/src/app/task-tracker-widget/services/task-tracker-navigation-task.service.ts","./projects/usana/src/app/task-tracker-widget/task-tracker-widget.module.ts","./projects/common/src/cms/news/usana-news-landing.component.ts","./projects/common/src/cms/news/usana-news-landing.component.html","./projects/common/src/cms/cms.module.ts","./projects/shared/src/cards-horizontal/cards-horizontal.module.ts","./projects/shared/src/cards/cards.module.ts","./projects/common/src/cms/training/training-cards.module.ts","./projects/common/src/my-account/my-account.module.ts","./projects/common/src/custom-locale-pipes/usana-date-pipe/usana-date-pipe.module.ts","./projects/shared/src/dropdown/dropdown.module.ts","./projects/shared/src/side-modal/side-modal.module.ts","./projects/common/src/notifications/notification-list-item/notification-list-item.module.ts","./node_modules/@usana/ux/fesm2022/usana-ux-universal-components-input-base.mjs","./node_modules/@usana/ux/fesm2022/usana-ux-common-regex.mjs","./node_modules/@usana/ux/fesm2022/usana-ux-common-pipes.mjs","./node_modules/@usana/ux/fesm2022/usana-ux-universal-components.mjs","./node_modules/@usana/ux/fesm2022/usana-ux-widget.mjs","./projects/common/src/notifications/notification-widget/notification-widget.module.ts","./projects/common/src/notifications/notification-bell/notification-bell.module.ts","./projects/common/src/notifications/notification-dashboard/notification-dashboard.module.ts","./projects/common/src/notifications/notification-settings/notification-settings.module.ts","./projects/common/src/notifications/notification-single-item/notification-single-item.module.ts","./node_modules/@ngxs-labs/actions-executing/fesm2020/ngxs-labs-actions-executing.mjs","./projects/common/src/notifications/notifications.module.ts","./projects/common/src/reports/reports.enum.ts","./projects/common/src/reports/reports.service.ts","./projects/common/src/reports/state/reports.actions.ts","./projects/common/src/reports/state/reports.operators.ts","./projects/common/src/reports/state/report-collections.ts","./projects/common/src/reports/state/reports.state.ts","./projects/common/src/reports/reports.module.ts","./projects/common/src/services/state-helper.service.ts","./node_modules/vlq/dist/vlq.es.js","./node_modules/ngx-logger/fesm2020/ngx-logger.mjs","./node_modules/rxjs/dist/esm/internal/operators/retry.js","./projects/shared/src/logger/logger.service.ts","./projects/common/src/system-alerts/system-alert.service.ts","./projects/common/src/system-alerts/state/system-alerts.state.ts","./projects/common/src/system-alerts/system-alerts.module.ts","./projects/common/src/upline-leader-placement/upline-leader-placement.module.ts","./node_modules/apollo-angular/fesm2022/ngApolloLinkHttp.mjs","./projects/common/src/error-pages/error-page.module.ts","./projects/common/src/navigation/state/navigation.state.ts","./node_modules/ngx-bootstrap/collapse/fesm2022/ngx-bootstrap-collapse.mjs","./node_modules/ngx-bootstrap/accordion/fesm2022/ngx-bootstrap-accordion.mjs","./projects/usana/src/app/usana-icons/usana-icons.module.ts","./projects/usana/src/app/change-market/change-market.module.ts","./projects/common/src/navigation/navigation.module.ts","./projects/common/src/tokens/hub-gateway-url.token.ts","./projects/common/src/common.module.ts","./projects/common/src/interceptors/with-credentials.interceptor.ts","./node_modules/@ngxs/devtools-plugin/fesm2015/ngxs-devtools-plugin.js","./projects/shared/src/pipes/order-by-property/order-by-property.pipe.ts","./projects/shared/src/pipes/order-by-property/order-by-property.module.ts","./projects/shared/src/pipes/pipes.module.ts","./projects/shared/src/confirmation-modal/confirmation-modal.module.ts","./projects/shared/src/footer/footer.module.ts","./projects/shared/src/hub-interrupt/hub-interrupt.module.ts","./projects/shared/src/logger/logger.module.ts","./projects/shared/src/toast/toast.module.ts","./projects/common/src/important-dates/important-dates.service.ts","./projects/shared/src/services/scroll-top-on-nav/scroll-top-on-nav.service.ts","./projects/usana/src/app/services/available-locales.service.ts","./projects/usana/src/app/state/app.state.ts","./projects/common/src/authentication/components/session-timeout-modal/session-timeout-modal.component.ts","./projects/common/src/authentication/components/session-timeout-modal/session-timeout-modal.component.html","./projects/common/src/authentication/model/AuthTimeoutHandler.ts","./projects/common/src/authentication/model/auth-timeout-status.ts","./node_modules/rxjs/dist/esm/internal/operators/timeout.js","./projects/common/src/authentication/services/authentication.service.ts","./projects/common/src/constants/create-session-with-consent-mutation.ts","./projects/common/src/constants/save-consent-mutation.ts","./projects/common/src/interceptors/auth-response.interceptor.ts","./projects/common/src/authentication/components/consent-dialog/consent-dialog.component.html","./projects/common/src/authentication/components/consent-dialog/consent-dialog.component.ts","./projects/shared/src/popup-modal/popup-modal.service.ts","./projects/common/src/authentication/components/login/login.component.html","./projects/common/src/authentication/components/login/login.component.ts","./projects/common/src/error-pages/error401.component.ts","./projects/common/src/error-pages/error401.component.html","./projects/common/src/error-pages/error404.component.ts","./projects/common/src/error-pages/error404.component.html","./projects/common/src/custom-locale-pipes/usana-date-pipe/usana-date.pipe.ts","./projects/common/src/notifications/notification-list-item/notification-list-item.component.html","./projects/common/src/notifications/notification-list-item/notification-list-item.component.ts","./projects/shared/src/loading-spinner/loading-spinner.component.ts","./projects/shared/src/loading-spinner/loading-spinner.component.html","./projects/common/src/notifications/notification-widget/notification-widget-content/notification-widget-content.component.html","./projects/common/src/notifications/notification-widget/notification-widget-content/notification-widget-content.component.ts","./projects/common/src/notifications/notification-widget/notification-widget.component.ts","./projects/common/src/notifications/notification-widget/notification-widget.component.html","./projects/common/src/notifications/notification-dashboard/notification-dashboard.component.ts","./projects/common/src/notifications/notification-dashboard/notification-dashboard.component.html","./projects/common/src/notifications/notification-settings/notification-settings-container/notification-settings-container.component.ts","./projects/common/src/notifications/notification-single-item/notification-single-item.component.html","./projects/common/src/notifications/notification-single-item/notification-single-item.component.ts","./projects/common/src/fpv-widget/state/fpv-report.actions.ts","./projects/common/src/fpv-widget/fpv-report.service.ts","./projects/common/src/fpv-widget/state/fpv-report.state.ts","./projects/common/src/fpv-widget/state/fpv-report.selectors.ts","./projects/baoying/src/app/baoying-fpv/baoying-fpv-report/baoying-fpv-report.component.html","./projects/baoying/src/app/baoying-fpv/baoying-fpv-report/baoying-fpv-report.component.ts","./projects/common/src/reports/reports.constants.ts","./projects/common/src/upline-leader-placement/upline-leader-placement.constants.ts","./projects/baoying/src/app/baoying-upline-leader-report/state/upline-leader.selectors.ts","./projects/common/src/upline-leader-placement/upline-leader-placement/upline-leader-placement.component.html","./projects/common/src/upline-leader-placement/upline-leader-placement/upline-leader-placement.component.ts","./projects/baoying/src/app/baoying-upline-leader-report/baoying-upline-leader-report/baoying-upline-leader-report.component.ts","./projects/baoying/src/app/baoying-upline-leader-report/baoying-upline-leader-report/baoying-upline-leader-report.component.html","./projects/baoying/src/app/baoying-volume/state/baoying-volume-report.actions.ts","./projects/baoying/src/app/baoying-volume/baoying-volume-report.service.ts","./projects/baoying/src/app/baoying-volume/state/baoying-volume-report.state.ts","./projects/baoying/src/app/baoying-volume/state/baoying-volume-report.selectors.ts","./projects/baoying/src/app/baoying-volume/baoying-volume-report/baoying-volume-report.component.html","./projects/baoying/src/app/baoying-volume/baoying-volume-report/baoying-volume-report.component.ts","./projects/common/src/navigation/state/navigation.selectors.ts","./projects/baoying/src/app/pages/home-page/baoying-home-page/pc-blocked-modal/pc-blocked-modal.component.ts","./projects/baoying/src/app/pages/home-page/baoying-home-page/pc-blocked-modal/pc-blocked-modal.component.html","./projects/common/src/home/home-banner/home-banner.component.ts","./projects/common/src/home/home-banner/home-banner.component.html","./projects/common/src/usana-news/usana-news.constants.ts","./projects/common/src/usana-news/usana-news.model.ts","./projects/common/src/cms/cms-item.service.ts","./projects/common/src/usana-news/usana-news-modal/usana-news-modal.component.html","./projects/common/src/usana-news/usana-news-modal/usana-news-modal.component.ts","./projects/common/src/usana-news/usana-news-widget/usana-news-widget.component.html","./projects/common/src/usana-news/usana-news-widget/usana-news-widget.component.ts","./projects/shared/src/quick-links/quick-links.service.ts","./projects/shared/src/quick-links/quick-links.component.html","./projects/shared/src/quick-links/quick-links.components.ts","./projects/common/src/pacesetter/state/pacesetter-widget.actions.ts","./projects/common/src/pacesetter/state/pacesetter-widget.state.ts","./projects/common/src/pacesetter/pacesetter-widget.constants.ts","./projects/common/src/pacesetter/state/pacesetter-widget.selectors.ts","./node_modules/ngx-bootstrap/progressbar/fesm2022/ngx-bootstrap-progressbar.mjs","./projects/common/src/pacesetter/pacesetter-widget/pacesetter-widget.component.html","./projects/common/src/pacesetter/pacesetter-widget/pacesetter-widget.component.ts","./projects/usana/src/app/state/app.selectors.ts","./projects/common/src/important-dates/important-dates.component.html","./projects/common/src/important-dates/important-dates.component.ts","./projects/baoying/src/app/constants/baoying-fpv-widget.constants.ts","./projects/common/src/fpv-widget/fpv-widget/fpv-widget.component.html","./projects/common/src/fpv-widget/fpv-widget/fpv-widget.component.ts","./projects/baoying/src/app/baoying-fpv/baoying-fpv-widget/baoying-fpv-widget.component.html","./projects/baoying/src/app/baoying-fpv/baoying-fpv-widget/baoying-fpv-widget.component.ts","./projects/baoying/src/app/baoying-volume/baoying-volume-widget/baoying-volume-widget.constants.ts","./projects/shared/src/data-view/data-view.decorator.ts","./projects/shared/src/data-view/data-view.component.ts","./projects/shared/src/data-view/data-view.component.html","./projects/baoying/src/app/baoying-volume/baoying-volume-widget/baoying-volume-widget.component.html","./projects/baoying/src/app/baoying-volume/baoying-volume-widget/baoying-volume-widget.component.ts","./projects/baoying/src/app/pages/home-page/baoying-home-page/baoying-home-page.component.html","./projects/baoying/src/app/pages/home-page/baoying-home-page/baoying-home-page.component.ts","./projects/baoying/src/app/baoying-app-hub-routing.module.ts","./projects/baoying/src/app/guards/non-pc-only.activate.ts","./projects/common/src/services/page-title.service.ts","./projects/baoying/src/app/constants/baoying-my-account.constants.ts","./projects/baoying/src/app/constants/baoying-quick-links.constants.ts","./projects/common/src/my-account/my-account.service.ts","./projects/baoying/src/app/constants/baoying-footer.constants.ts","./projects/shared/src/footer/footer.component.html","./projects/shared/src/footer/footer.component.ts","./projects/common/src/system-alerts/state/system-alerts.selectors.ts","./projects/common/src/system-alerts/system-alert.component.html","./projects/common/src/system-alerts/system-alert.component.ts","./projects/common/src/authentication/components/switch-user/switch-user.component.html","./projects/common/src/authentication/components/switch-user/switch-user.component.ts","./projects/common/src/notifications/notification-bell/notification-bell.component.html","./projects/common/src/notifications/notification-bell/notification-bell.component.ts","./projects/usana/src/app/change-market/change-market.constants.ts","./projects/usana/src/app/change-market/change-market-warning/change-market-warning.component.ts","./projects/usana/src/app/change-market/change-market-warning/change-market-warning.component.html","./projects/usana/src/app/change-market/market-list/market-list.component.html","./projects/usana/src/app/change-market/market-list/market-list.component.ts","./projects/usana/src/app/change-market/market-selector/market-selector.component.html","./projects/usana/src/app/change-market/market-selector/market-selector.component.ts","./projects/usana/src/app/change-market/change-market-icon/change-market-icon.component.html","./projects/usana/src/app/change-market/change-market-icon/change-market-icon.component.ts","./projects/common/src/my-account/my-account-details/my-account-details.component.html","./projects/common/src/my-account/my-account-details/my-account-details.component.ts","./projects/common/src/my-account/my-account-list/my-account-list.component.html","./projects/common/src/my-account/my-account-list/my-account-list.component.ts","./projects/common/src/my-account/my-account-icon/my-account-icon.component.html","./projects/common/src/my-account/my-account-icon/my-account-icon.component.ts","./projects/common/src/navigation/components/top-nav/top-nav.component.html","./projects/common/src/navigation/components/top-nav/top-nav.component.ts","./projects/common/src/navigation/components/navigation-header/navigation-header.component.ts","./projects/common/src/navigation/components/navigation-header/navigation-header.component.html","./projects/common/src/navigation/components/navigation/navigation.component.html","./projects/common/src/navigation/components/navigation/navigation.component.ts","./projects/shared/src/side-modal/side-modal-container/side-modal-container.component.ts","./projects/shared/src/side-modal/side-modal-container/side-modal-container.component.html","./projects/shared/src/toast/toast-display.component.html","./projects/shared/src/toast/toast-display.component.ts","./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","./projects/shared/src/hub-interrupt/hub-interrupt.model.ts","./node_modules/rxjs/dist/esm/internal/operators/flatMap.js","./projects/shared/src/hub-interrupt/hub-interrupt.component.ts","./projects/baoying/src/app/baoying-app-hub/baoying-hub-layout/baoying-hub-layout.component.html","./projects/baoying/src/app/baoying-app-hub/baoying-hub-layout/baoying-hub-layout.component.ts","./projects/baoying/src/app/baoying-app-hub/baoying-app-hub.component.ts","./projects/baoying/src/app/baoying-app-hub/baoying-app-hub.component.html","./projects/baoying/src/app/baoying-icons/baoying-icons.module.ts","./projects/baoying/src/app/baoying-upline-leader-report/baoying-upline-leader-report.module.ts","./projects/baoying/src/app/baoying-volume/baoying-volume-report/baoying-volume-report.module.ts","./projects/baoying/src/app/cbec/cbec-redirection.service.ts","./node_modules/@angular/common/locales/zh.mjs","./projects/baoying/src/app/constants/baoying-supported-locales.ts","./projects/common/src/home/state/home.state.ts","./projects/common/src/home/home.module.ts","./projects/common/src/important-dates/important-dates.module.ts","./projects/common/src/pacesetter/pacesetter-widget.module.ts","./projects/common/src/usana-news/usana-news.module.ts","./projects/shared/src/quick-links/quick-links.module.ts","./projects/baoying/src/app/baoying-fpv/baoying-fpv-report/baoying-fpv-report.module.ts","./projects/common/src/fpv-widget/fpv-widget.module.ts","./projects/baoying/src/app/baoying-fpv/baoying-fpv-widget/baoying-fpv-widget.module.ts","./projects/baoying/src/app/baoying-fpv/baoying-fpv.module.ts","./projects/shared/src/charts/bar-chart/bar-chart.metadata.ts","./node_modules/chart.js/dist/chunks/helpers.segment.mjs","./node_modules/chart.js/dist/chart.mjs","./projects/shared/src/charts/bar-chart/bar-chart.component.html","./projects/shared/src/charts/bar-chart/bar-chart.component.ts","./projects/shared/src/charts/bar-chart/bar-chart.module.ts","./projects/shared/src/data-view/data-view.module.ts","./projects/baoying/src/app/baoying-volume/baoying-volume-widget/baoying-volume-widget.module.ts","./projects/baoying/src/app/pages/home-page/baoying-home-page/baoying-home-page.module.ts","./projects/baoying/src/app/baoying-app-hub.module.ts","./projects/baoying/src/main.baoying.ts","./projects/common/src/authentication/authentication.constants.ts","./projects/common/src/authentication/state/user-profile.actions.ts","./projects/common/src/constants/date-picker-text-field-config.ts","./projects/common/src/authentication/state/user-profile.selectors.ts","./projects/common/src/authentication/services/user-profile.service.ts","./projects/common/src/paperwork/services/paperwork.service.ts","./projects/common/src/authentication/state/user-profile.state.ts","./projects/common/src/cms/earnings-opt-in/state/earnings-opt-in.actions.ts","./projects/common/src/constants/customer-type-codes.ts","./projects/common/src/constants/customer-types.ts","./projects/common/src/custom-locale-pipes/full-date-time-with-timezone/full-date-time-with-timezone.module.ts","./projects/common/src/custom-locale-pipes/full-date-time-with-timezone/full-date-time-with-timezone.service.ts","./projects/common/src/custom-locale-pipes/full-date-time-with-timezone/pipe/full-date-time-with-timezone.pipe.ts","./projects/common/src/home/state/home.actions.ts","./projects/common/src/navigation/state/navigation.actions.ts","./projects/common/src/navigation/state/navigation.state.model.ts","./projects/common/src/notifications/notification.constants.ts","./projects/common/src/notifications/notification.service.ts","./projects/common/src/notifications/state/notification.actions.ts","./projects/common/src/notifications/state/notification.selectors.ts","./projects/common/src/notifications/state/notification.state.utils.ts","./projects/common/src/notifications/state/notification.state.ts","./projects/common/src/notifications/state/notification.state.model.ts","./projects/common/src/pacesetter/pacesetter-widget.service.ts","./projects/common/src/resolvers/user-profile.resolver.ts","./projects/common/src/services/locale.service.ts","./projects/common/src/services/user-bas-access.service.ts","./projects/common/src/services/window-size.service.ts","./projects/common/src/system-alerts/state/system-alerts.actions.ts","./projects/common/src/translation/pipes/translate.pipe.ts","./projects/common/src/translation/translation.module.ts","./projects/common/src/translation/translation.service.ts","./projects/common/src/utils/window.ts","./projects/shared/src/loading-spinner/loading-spinner.module.ts","./projects/shared/src/performance/performance.service.ts","./node_modules/luxon/src/errors.js","./node_modules/luxon/src/impl/formats.js","./node_modules/luxon/src/zone.js","./node_modules/luxon/src/zones/systemZone.js","./node_modules/luxon/src/zones/IANAZone.js","./node_modules/luxon/src/impl/locale.js","./node_modules/luxon/src/impl/english.js","./node_modules/luxon/src/zones/fixedOffsetZone.js","./node_modules/luxon/src/zones/invalidZone.js","./node_modules/luxon/src/impl/zoneUtil.js","./node_modules/luxon/src/impl/util.js","./node_modules/luxon/src/settings.js","./node_modules/luxon/src/impl/invalid.js","./node_modules/luxon/src/impl/conversions.js","./node_modules/luxon/src/impl/formatter.js","./node_modules/luxon/src/impl/regexParser.js","./node_modules/luxon/src/duration.js","./node_modules/luxon/src/interval.js","./node_modules/luxon/src/info.js","./node_modules/luxon/src/impl/diff.js","./node_modules/luxon/src/impl/digits.js","./node_modules/luxon/src/impl/tokenParser.js","./node_modules/luxon/src/datetime.js","./projects/shared/src/pipes/abbreviate-timezone/abbreviate-timezone-name.pipe.ts","./projects/shared/src/pipes/interpolate/interpolate.pipe.ts","./projects/shared/src/pipes/replace/replace.pipe.ts","./projects/shared/src/pipes/unsafe/unsafe.module.ts","./projects/shared/src/pipes/unsafe/unsafe.pipe.ts","./projects/shared/src/purple-pages/purple-page.service.ts","./projects/shared/src/purple-pages/purple-page/purple-page.component.ts","./projects/shared/src/purple-pages/purple-page/purple-page.component.html","./projects/shared/src/dropdown/dropdown.component.html","./projects/shared/src/dropdown/dropdown.component.ts","./projects/shared/src/dropdown/dropdown.directive.ts","./projects/shared/src/side-modal/side-modal/side-modal.component.html","./projects/shared/src/side-modal/side-modal/side-modal.component.ts","./projects/shared/src/side-modal/side-modal.animations.ts","./projects/shared/src/side-modal/side-modal.service.ts","./projects/usana/src/app/state/app.actions.ts","./projects/usana/src/app/state/app.utils.ts","./node_modules/@fortawesome/free-solid-svg-icons/faChevronDown.js","./node_modules/@fortawesome/free-solid-svg-icons/faChevronUp.js","./node_modules/@fortawesome/free-solid-svg-icons/faEllipsis.js","./node_modules/@ngxs/store/fesm2015/ngxs-store-operators.js","./node_modules/@ngxs/store/fesm2015/ngxs-store-internals.js","./node_modules/rxjs/dist/esm/internal/operators/exhaustMap.js","./node_modules/@ngxs/store/fesm2015/ngxs-store.js","./node_modules/rxjs/dist/esm/internal/operators/pairwise.js","./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","./node_modules/@popperjs/core/lib/utils/orderModifiers.js","./node_modules/@popperjs/core/lib/utils/debounce.js","./node_modules/@popperjs/core/lib/createPopper.js","./node_modules/@popperjs/core/lib/utils/mergeByName.js","./node_modules/@popperjs/core/lib/dom-utils/contains.js","./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","./node_modules/@popperjs/core/lib/dom-utils/getWindow.js","./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","./node_modules/@popperjs/core/lib/enums.js","./node_modules/@popperjs/core/lib/modifiers/applyStyles.js","./node_modules/@popperjs/core/lib/modifiers/arrow.js","./node_modules/@popperjs/core/lib/modifiers/computeStyles.js","./node_modules/@popperjs/core/lib/modifiers/eventListeners.js","./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","./node_modules/@popperjs/core/lib/modifiers/flip.js","./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","./node_modules/@popperjs/core/lib/modifiers/offset.js","./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","./node_modules/@popperjs/core/lib/utils/getAltAxis.js","./node_modules/@popperjs/core/lib/utils/computeOffsets.js","./node_modules/@popperjs/core/lib/utils/rectToClientRect.js","./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","./node_modules/@popperjs/core/lib/utils/detectOverflow.js","./node_modules/@popperjs/core/lib/utils/expandToHashMap.js","./node_modules/@popperjs/core/lib/utils/getBasePlacement.js","./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","./node_modules/@popperjs/core/lib/utils/getVariation.js","./node_modules/@popperjs/core/lib/utils/math.js","./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","./node_modules/@popperjs/core/lib/utils/userAgent.js","./node_modules/@popperjs/core/lib/utils/within.js","./node_modules/lodash/_DataView.js","./node_modules/lodash/_Hash.js","./node_modules/lodash/_ListCache.js","./node_modules/lodash/_Map.js","./node_modules/lodash/_MapCache.js","./node_modules/lodash/_Promise.js","./node_modules/lodash/_Set.js","./node_modules/lodash/_Stack.js","./node_modules/lodash/_Symbol.js","./node_modules/lodash/_Uint8Array.js","./node_modules/lodash/_WeakMap.js","./node_modules/lodash/_arrayEach.js","./node_modules/lodash/_arrayFilter.js","./node_modules/lodash/_arrayLikeKeys.js","./node_modules/lodash/_arrayPush.js","./node_modules/lodash/_assignValue.js","./node_modules/lodash/_assocIndexOf.js","./node_modules/lodash/_baseAssign.js","./node_modules/lodash/_baseAssignIn.js","./node_modules/lodash/_baseAssignValue.js","./node_modules/lodash/_baseClone.js","./node_modules/lodash/_baseCreate.js","./node_modules/lodash/_baseGetAllKeys.js","./node_modules/lodash/_baseGetTag.js","./node_modules/lodash/_baseIsArguments.js","./node_modules/lodash/_baseIsMap.js","./node_modules/lodash/_baseIsNative.js","./node_modules/lodash/_baseIsSet.js","./node_modules/lodash/_baseIsTypedArray.js","./node_modules/lodash/_baseKeys.js","./node_modules/lodash/_baseKeysIn.js","./node_modules/lodash/_baseTimes.js","./node_modules/lodash/_baseUnary.js","./node_modules/lodash/_cloneArrayBuffer.js","./node_modules/lodash/_cloneBuffer.js","./node_modules/lodash/_cloneDataView.js","./node_modules/lodash/_cloneRegExp.js","./node_modules/lodash/_cloneSymbol.js","./node_modules/lodash/_cloneTypedArray.js","./node_modules/lodash/_copyArray.js","./node_modules/lodash/_copyObject.js","./node_modules/lodash/_copySymbols.js","./node_modules/lodash/_copySymbolsIn.js","./node_modules/lodash/_coreJsData.js","./node_modules/lodash/_defineProperty.js","./node_modules/lodash/_freeGlobal.js","./node_modules/lodash/_getAllKeys.js","./node_modules/lodash/_getAllKeysIn.js","./node_modules/lodash/_getMapData.js","./node_modules/lodash/_getNative.js","./node_modules/lodash/_getPrototype.js","./node_modules/lodash/_getRawTag.js","./node_modules/lodash/_getSymbols.js","./node_modules/lodash/_getSymbolsIn.js","./node_modules/lodash/_getTag.js","./node_modules/lodash/_getValue.js","./node_modules/lodash/_hashClear.js","./node_modules/lodash/_hashDelete.js","./node_modules/lodash/_hashGet.js","./node_modules/lodash/_hashHas.js","./node_modules/lodash/_hashSet.js","./node_modules/lodash/_initCloneArray.js","./node_modules/lodash/_initCloneByTag.js","./node_modules/lodash/_initCloneObject.js","./node_modules/lodash/_isIndex.js","./node_modules/lodash/_isKeyable.js","./node_modules/lodash/_isMasked.js","./node_modules/lodash/_isPrototype.js","./node_modules/lodash/_listCacheClear.js","./node_modules/lodash/_listCacheDelete.js","./node_modules/lodash/_listCacheGet.js","./node_modules/lodash/_listCacheHas.js","./node_modules/lodash/_listCacheSet.js","./node_modules/lodash/_mapCacheClear.js","./node_modules/lodash/_mapCacheDelete.js","./node_modules/lodash/_mapCacheGet.js","./node_modules/lodash/_mapCacheHas.js","./node_modules/lodash/_mapCacheSet.js","./node_modules/lodash/_nativeCreate.js","./node_modules/lodash/_nativeKeys.js","./node_modules/lodash/_nativeKeysIn.js","./node_modules/lodash/_nodeUtil.js","./node_modules/lodash/_objectToString.js","./node_modules/lodash/_overArg.js","./node_modules/lodash/_root.js","./node_modules/lodash/_stackClear.js","./node_modules/lodash/_stackDelete.js","./node_modules/lodash/_stackGet.js","./node_modules/lodash/_stackHas.js","./node_modules/lodash/_stackSet.js","./node_modules/lodash/_toSource.js","./node_modules/lodash/cloneDeep.js","./node_modules/lodash/eq.js","./node_modules/lodash/isArguments.js","./node_modules/lodash/isArray.js","./node_modules/lodash/isArrayLike.js","./node_modules/lodash/isBuffer.js","./node_modules/lodash/isFunction.js","./node_modules/lodash/isLength.js","./node_modules/lodash/isMap.js","./node_modules/lodash/isObject.js","./node_modules/lodash/isObjectLike.js","./node_modules/lodash/isSet.js","./node_modules/lodash/isTypedArray.js","./node_modules/lodash/keys.js","./node_modules/lodash/keysIn.js","./node_modules/lodash/stubArray.js","./node_modules/lodash/stubFalse.js","./node_modules/rxjs/dist/esm/internal/BehaviorSubject.js","./node_modules/rxjs/dist/esm/internal/Observable.js","./node_modules/rxjs/dist/esm/internal/ReplaySubject.js","./node_modules/rxjs/dist/esm/internal/util/ObjectUnsubscribedError.js","./node_modules/rxjs/dist/esm/internal/Subject.js","./node_modules/rxjs/dist/esm/internal/NotificationFactories.js","./node_modules/rxjs/dist/esm/internal/Subscriber.js","./node_modules/rxjs/dist/esm/internal/util/UnsubscriptionError.js","./node_modules/rxjs/dist/esm/internal/Subscription.js","./node_modules/rxjs/dist/esm/internal/config.js","./node_modules/rxjs/dist/esm/internal/observable/combineLatest.js","./node_modules/rxjs/dist/esm/internal/observable/concat.js","./node_modules/rxjs/dist/esm/internal/operators/concatAll.js","./node_modules/rxjs/dist/esm/internal/observable/empty.js","./node_modules/rxjs/dist/esm/internal/observable/forkJoin.js","./node_modules/rxjs/dist/esm/internal/operators/subscribeOn.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleAsyncIterable.js","./node_modules/rxjs/dist/esm/internal/observable/from.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduled.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleObservable.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleArray.js","./node_modules/rxjs/dist/esm/internal/scheduled/schedulePromise.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleIterable.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleReadableStreamLike.js","./node_modules/rxjs/dist/esm/internal/observable/fromEvent.js","./node_modules/rxjs/dist/esm/internal/observable/innerFrom.js","./node_modules/rxjs/dist/esm/internal/observable/merge.js","./node_modules/rxjs/dist/esm/internal/observable/of.js","./node_modules/rxjs/dist/esm/internal/observable/throwError.js","./node_modules/rxjs/dist/esm/internal/observable/timer.js","./node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js","./node_modules/rxjs/dist/esm/internal/operators/catchError.js","./node_modules/rxjs/dist/esm/internal/operators/concatMap.js","./node_modules/rxjs/dist/esm/internal/operators/defaultIfEmpty.js","./node_modules/rxjs/dist/esm/internal/operators/delayWhen.js","./node_modules/rxjs/dist/esm/internal/operators/ignoreElements.js","./node_modules/rxjs/dist/esm/internal/operators/delay.js","./node_modules/rxjs/dist/esm/internal/operators/distinctUntilChanged.js","./node_modules/rxjs/dist/esm/internal/operators/filter.js","./node_modules/rxjs/dist/esm/internal/operators/finalize.js","./node_modules/rxjs/dist/esm/internal/operators/first.js","./node_modules/rxjs/dist/esm/internal/operators/map.js","./node_modules/rxjs/dist/esm/internal/operators/mapTo.js","./node_modules/rxjs/dist/esm/internal/operators/mergeAll.js","./node_modules/rxjs/dist/esm/internal/operators/mergeMap.js","./node_modules/rxjs/dist/esm/internal/operators/mergeInternals.js","./node_modules/rxjs/dist/esm/internal/operators/observeOn.js","./node_modules/rxjs/dist/esm/internal/operators/scan.js","./node_modules/rxjs/dist/esm/internal/operators/scanInternals.js","./node_modules/rxjs/dist/esm/internal/operators/share.js","./node_modules/rxjs/dist/esm/internal/operators/shareReplay.js","./node_modules/rxjs/dist/esm/internal/operators/skip.js","./node_modules/rxjs/dist/esm/internal/operators/startWith.js","./node_modules/rxjs/dist/esm/internal/operators/switchMap.js","./node_modules/rxjs/dist/esm/internal/operators/take.js","./node_modules/rxjs/dist/esm/internal/operators/takeUntil.js","./node_modules/rxjs/dist/esm/internal/operators/tap.js","./node_modules/rxjs/dist/esm/internal/operators/throwIfEmpty.js","./node_modules/rxjs/dist/esm/internal/scheduler/Action.js","./node_modules/rxjs/dist/esm/internal/scheduler/intervalProvider.js","./node_modules/rxjs/dist/esm/internal/scheduler/AsyncAction.js","./node_modules/rxjs/dist/esm/internal/Scheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/AsyncScheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/async.js","./node_modules/rxjs/dist/esm/internal/scheduler/dateTimestampProvider.js","./node_modules/rxjs/dist/esm/internal/scheduler/queue.js","./node_modules/rxjs/dist/esm/internal/scheduler/QueueScheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/QueueAction.js","./node_modules/rxjs/dist/esm/internal/scheduler/timeoutProvider.js","./node_modules/rxjs/dist/esm/internal/symbol/iterator.js","./node_modules/rxjs/dist/esm/internal/symbol/observable.js","./node_modules/rxjs/dist/esm/internal/util/EmptyError.js","./node_modules/rxjs/dist/esm/internal/util/args.js","./node_modules/rxjs/dist/esm/internal/util/argsArgArrayOrObject.js","./node_modules/rxjs/dist/esm/internal/util/arrRemove.js","./node_modules/rxjs/dist/esm/internal/util/createErrorClass.js","./node_modules/rxjs/dist/esm/internal/util/createObject.js","./node_modules/rxjs/dist/esm/internal/util/errorContext.js","./node_modules/rxjs/dist/esm/internal/util/executeSchedule.js","./node_modules/rxjs/dist/esm/internal/util/identity.js","./node_modules/rxjs/dist/esm/internal/util/isArrayLike.js","./node_modules/rxjs/dist/esm/internal/util/isAsyncIterable.js","./node_modules/rxjs/dist/esm/internal/util/isDate.js","./node_modules/rxjs/dist/esm/internal/util/isFunction.js","./node_modules/rxjs/dist/esm/internal/util/isInteropObservable.js","./node_modules/rxjs/dist/esm/internal/util/isIterable.js","./node_modules/rxjs/dist/esm/internal/util/isObservable.js","./node_modules/rxjs/dist/esm/internal/util/isPromise.js","./node_modules/rxjs/dist/esm/internal/util/isReadableStreamLike.js","./node_modules/rxjs/dist/esm/internal/util/isScheduler.js","./node_modules/rxjs/dist/esm/internal/util/lift.js","./node_modules/rxjs/dist/esm/internal/util/mapOneOrManyArgs.js","./node_modules/rxjs/dist/esm/internal/util/noop.js","./node_modules/rxjs/dist/esm/internal/util/pipe.js","./node_modules/rxjs/dist/esm/internal/util/reportUnhandledError.js","./node_modules/rxjs/dist/esm/internal/util/throwUnobservableError.js","./node_modules/@angular/animations/fesm2022/animations.mjs","./node_modules/@angular/common/fesm2022/common.mjs","./node_modules/@angular/common/fesm2022/http.mjs","./node_modules/@angular/core/fesm2022/core.mjs","./node_modules/@angular/forms/fesm2022/forms.mjs","./node_modules/@angular/platform-browser/fesm2022/platform-browser.mjs","./node_modules/rxjs/dist/esm/internal/observable/defer.js","./node_modules/rxjs/dist/esm/internal/operators/refCount.js","./node_modules/rxjs/dist/esm/internal/observable/ConnectableObservable.js","./node_modules/rxjs/dist/esm/internal/operators/takeLast.js","./node_modules/@angular/router/fesm2022/router.mjs","./node_modules/rxjs/dist/esm/internal/operators/last.js","./node_modules/@fortawesome/fontawesome-svg-core/index.mjs","./node_modules/@fortawesome/angular-fontawesome/fesm2022/angular-fontawesome.mjs","./node_modules/@fortawesome/pro-solid-svg-icons/index.mjs","./node_modules/rxjs/dist/esm/internal/util/argsOrArgArray.js","./node_modules/rxjs/dist/esm/internal/observable/zip.js","./node_modules/rxjs/dist/esm/internal/operators/withLatestFrom.js","./node_modules/@ng-bootstrap/ng-bootstrap/fesm2022/ng-bootstrap.mjs","./node_modules/rxjs/dist/esm/internal/operators/endWith.js","./node_modules/rxjs/dist/esm/internal/observable/race.js","./node_modules/@usana/ux/fesm2022/usana-ux-common-directives.mjs","./node_modules/@usana/ux/fesm2022/usana-ux-common-logging.mjs","./node_modules/@usana/ux/fesm2022/usana-ux-common.mjs","./node_modules/@usana/ux/fesm2022/usana-ux-fullstory.mjs","./node_modules/@fortawesome/free-solid-svg-icons/index.mjs","./node_modules/@usana/ux/fesm2022/usana-ux-image-service-browser.mjs","./node_modules/@usana/ux/fesm2022/usana-ux-common-url.mjs","./node_modules/ngx-cookie-service/fesm2022/ngx-cookie-service.mjs","./node_modules/@usana/ux/fesm2022/usana-ux-markets.mjs","./node_modules/@usana/ux/fesm2022/usana-ux-sso-auth-fullstory.mjs","./node_modules/@usana/ux/fesm2022/usana-ux-sso-auth-switch-user.mjs","./node_modules/@usana/ux/fesm2022/usana-ux-sso-auth.mjs","./node_modules/@nguniversal/express-engine/fesm2022/tokens.mjs","./node_modules/@usana/ux/fesm2022/usana-ux-ssr.mjs","./node_modules/@usana/ux/fesm2022/usana-ux-translations.mjs","./node_modules/@usana/ux/fesm2022/usana-ux-universal-components-base.mjs","./node_modules/@usana/ux/fesm2022/usana-ux-universal-components-button.mjs","./node_modules/@usana/ux/fesm2022/usana-ux-universal-components-loading-spinner.mjs","./node_modules/ngx-bootstrap/alert/fesm2022/ngx-bootstrap-alert.mjs","./node_modules/ngx-bootstrap/component-loader/fesm2022/ngx-bootstrap-component-loader.mjs","./node_modules/ngx-bootstrap/chronos/fesm2022/ngx-bootstrap-chronos.mjs","./node_modules/ngx-bootstrap/mini-ngrx/fesm2022/ngx-bootstrap-mini-ngrx.mjs","./node_modules/ngx-bootstrap/timepicker/fesm2022/ngx-bootstrap-timepicker.mjs","./node_modules/ngx-bootstrap/datepicker/fesm2022/ngx-bootstrap-datepicker.mjs","./node_modules/ngx-bootstrap/dropdown/fesm2022/ngx-bootstrap-dropdown.mjs","./node_modules/ngx-bootstrap/focus-trap/fesm2022/ngx-bootstrap-focus-trap.mjs","./node_modules/ngx-bootstrap/modal/fesm2022/ngx-bootstrap-modal.mjs","./node_modules/rxjs/dist/esm/internal/scheduler/animationFrameProvider.js","./node_modules/rxjs/dist/esm/internal/scheduler/animationFrame.js","./node_modules/rxjs/dist/esm/internal/scheduler/AnimationFrameScheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/AnimationFrameAction.js","./node_modules/ngx-bootstrap/positioning/fesm2022/ngx-bootstrap-positioning.mjs","./node_modules/ngx-bootstrap/tooltip/fesm2022/ngx-bootstrap-tooltip.mjs","./node_modules/ngx-bootstrap/utils/fesm2022/ngx-bootstrap-utils.mjs","./node_modules/ngx-cookie/fesm2020/ngx-cookie.mjs","./node_modules/tslib/tslib.es6.mjs"],"sourcesContent":["// The file contents for the current environment will overwrite these during build.\n// The build system defaults to the dev environment which uses `environment.ts`, but if you do\n// `ng build --env=prod` then `environment.prod.ts` will be used instead.\n// The list of which env maps to which file can be found in `.angular-cli.json`.\nimport { HubEnvironmentConfig } from './hub-environment-config';\n\nconst dep = {\n siteDomain: '[___ key \"global/org_baoying_deploy_SiteDomain\" ___]',\n};\n\nexport const environment: HubEnvironmentConfig = {\n production: true,\n siteDomain: dep.siteDomain,\n subDomainESB: '[___ key \"global/deploy_SubDomain_esb\" ___]',\n cartService: '[___ key \"package/cart/OriginRootURI\" ___]',\n apiDomain: `https://api.${dep.siteDomain}`,\n hubGatewayUrl: `https://api.${dep.siteDomain}/hub-gateway/`,\n commEdgeUrl: '',\n taskTrackerServiceUrl: undefined,\n i18nServiceUrl: `https://api.${dep.siteDomain}/i18n`,\n imageServiceBackendUrl: `https://esb.${dep.siteDomain}/image-service`,\n imageServicePublicUrl: `https://www.${dep.siteDomain}/image-service`,\n APP_D_KEY: '[___ key \"package/hub/appdAppKey\" ___]',\n APP_D_BEACON_URL_HTTP: '[___ key \"global/appdBeaconUrlHttp\" ___]',\n APP_D_BEACON_URL_HTTPS: '[___ key \"global/appdBeaconUrlHttps\" ___]',\n APP_D_ADRUM_EXT_URL_HTTP: '[___ key \"global/appdAdrumExtUrlHttp\" ___]',\n APP_D_ADRUM_EXT_URL_HTTPS: '[___ key \"global/appdAdrumExtUrlHttps\" ___]',\n APP_D_ADRUM_FILE: '[___ key \"global/appdAdrumFile\" ___]',\n APP_D_ENABLED: '[___ key \"package/hub/appdEnabled\" ___]',\n GTM_CONTAINER_ID: '[___ key \"global/gtm_containerId\" ___]',\n SUBDOMAIN_ESB: '[___ key \"global/deploy_SubDomain_esb\" ___]',\n DEPLOY_SITEDOMAIN: dep.siteDomain,\n CBEC_DEPLOY_SITEDOMAIN: '[___ key \"global/org_cbec_deploy_SiteDomain\" ___]',\n CART_ORIGIN_SUBDOMAIN: '[___ key \"package/cart/OriginSubdomain\" ___]',\n CART_ORIGIN_ROOT_URI: '[___ key \"package/cart/OriginRootURI\" ___]',\n STATIC_CART_ORIGIN_SUBDOMAIN: '[___ key \"package/static-cart/OriginSubdomain\" ___]',\n STATIC_CART_ORIGIN_ROOT_URI: '[___ key \"package/static-cart/OriginRootURI\" ___]',\n isBaoying: true,\n};\n","import { __extends } from \"tslib\";\nvar genericMessage = \"Invariant Violation\";\nvar _a = Object.setPrototypeOf, setPrototypeOf = _a === void 0 ? function (obj, proto) {\n obj.__proto__ = proto;\n return obj;\n} : _a;\nvar InvariantError = /** @class */ (function (_super) {\n __extends(InvariantError, _super);\n function InvariantError(message) {\n if (message === void 0) { message = genericMessage; }\n var _this = _super.call(this, typeof message === \"number\"\n ? genericMessage + \": \" + message + \" (see https://github.com/apollographql/invariant-packages)\"\n : message) || this;\n _this.framesToPop = 1;\n _this.name = genericMessage;\n setPrototypeOf(_this, InvariantError.prototype);\n return _this;\n }\n return InvariantError;\n}(Error));\nexport { InvariantError };\nexport function invariant(condition, message) {\n if (!condition) {\n throw new InvariantError(message);\n }\n}\nvar verbosityLevels = [\"debug\", \"log\", \"warn\", \"error\", \"silent\"];\nvar verbosityLevel = verbosityLevels.indexOf(\"log\");\nfunction wrapConsoleMethod(name) {\n return function () {\n if (verbosityLevels.indexOf(name) >= verbosityLevel) {\n // Default to console.log if this host environment happens not to provide\n // all the console.* methods we need.\n var method = console[name] || console.log;\n return method.apply(console, arguments);\n }\n };\n}\n(function (invariant) {\n invariant.debug = wrapConsoleMethod(\"debug\");\n invariant.log = wrapConsoleMethod(\"log\");\n invariant.warn = wrapConsoleMethod(\"warn\");\n invariant.error = wrapConsoleMethod(\"error\");\n})(invariant || (invariant = {}));\nexport function setVerbosity(level) {\n var old = verbosityLevels[verbosityLevel];\n verbosityLevel = Math.max(0, verbosityLevels.indexOf(level));\n return old;\n}\nexport default invariant;\n","export var version = \"3.9.4\";\n","export function maybe(thunk) {\n try {\n return thunk();\n }\n catch (_a) { }\n}\n","import { maybe } from \"./maybe.js\";\nexport default (maybe(function () { return globalThis; }) ||\n maybe(function () { return window; }) ||\n maybe(function () { return self; }) ||\n maybe(function () { return global; }) || // We don't expect the Function constructor ever to be invoked at runtime, as\n// long as at least one of globalThis, window, self, or global is defined, so\n// we are under no obligation to make it easy for static analysis tools to\n// detect syntactic usage of the Function constructor. If you think you can\n// improve your static analysis to detect this obfuscation, think again. This\n// is an arms race you cannot win, at least not in JavaScript.\nmaybe(function () {\n return maybe.constructor(\"return this\")();\n}));\n","var prefixCounts = new Map();\n// These IDs won't be globally unique, but they will be unique within this\n// process, thanks to the counter, and unguessable thanks to the random suffix.\nexport function makeUniqueId(prefix) {\n var count = prefixCounts.get(prefix) || 1;\n prefixCounts.set(prefix, count + 1);\n return \"\".concat(prefix, \":\").concat(count, \":\").concat(Math.random().toString(36).slice(2));\n}\n","import { makeUniqueId } from \"./makeUniqueId.js\";\nexport function stringifyForDisplay(value, space) {\n if (space === void 0) { space = 0; }\n var undefId = makeUniqueId(\"stringifyForDisplay\");\n return JSON.stringify(value, function (key, value) {\n return value === void 0 ? undefId : value;\n }, space)\n .split(JSON.stringify(undefId))\n .join(\"\");\n}\n","import { invariant as originalInvariant, InvariantError } from \"ts-invariant\";\nimport { version } from \"../../version.js\";\nimport global from \"./global.js\";\nimport { stringifyForDisplay } from \"../common/stringifyForDisplay.js\";\nfunction wrap(fn) {\n return function (message) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (typeof message === \"number\") {\n var arg0 = message;\n message = getHandledErrorMsg(arg0);\n if (!message) {\n message = getFallbackErrorMsg(arg0, args);\n args = [];\n }\n }\n fn.apply(void 0, [message].concat(args));\n };\n}\nvar invariant = Object.assign(function invariant(condition, message) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n if (!condition) {\n originalInvariant(condition, getHandledErrorMsg(message, args) || getFallbackErrorMsg(message, args));\n }\n}, {\n debug: wrap(originalInvariant.debug),\n log: wrap(originalInvariant.log),\n warn: wrap(originalInvariant.warn),\n error: wrap(originalInvariant.error),\n});\n/**\n * Returns an InvariantError.\n *\n * `message` can only be a string, a concatenation of strings, or a ternary statement\n * that results in a string. This will be enforced on build, where the message will\n * be replaced with a message number.\n * String substitutions with %s are supported and will also return\n * pretty-stringified objects.\n * Excess `optionalParams` will be swallowed.\n */\nfunction newInvariantError(message) {\n var optionalParams = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n optionalParams[_i - 1] = arguments[_i];\n }\n return new InvariantError(getHandledErrorMsg(message, optionalParams) ||\n getFallbackErrorMsg(message, optionalParams));\n}\nvar ApolloErrorMessageHandler = Symbol.for(\"ApolloErrorMessageHandler_\" + version);\nfunction stringify(arg) {\n return typeof arg == \"string\" ? arg : (stringifyForDisplay(arg, 2).slice(0, 1000));\n}\nfunction getHandledErrorMsg(message, messageArgs) {\n if (messageArgs === void 0) { messageArgs = []; }\n if (!message)\n return;\n return (global[ApolloErrorMessageHandler] &&\n global[ApolloErrorMessageHandler](message, messageArgs.map(stringify)));\n}\nfunction getFallbackErrorMsg(message, messageArgs) {\n if (messageArgs === void 0) { messageArgs = []; }\n if (!message)\n return;\n return \"An error occurred! For more details, see the full error text at https://go.apollo.dev/c/err#\".concat(encodeURIComponent(JSON.stringify({\n version: version,\n message: message,\n args: messageArgs.map(stringify),\n })));\n}\nexport { invariant, InvariantError, newInvariantError, ApolloErrorMessageHandler, };\n","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n// === Symbol Support ===\nvar hasSymbols = function () {\n return typeof Symbol === 'function';\n};\n\nvar hasSymbol = function (name) {\n return hasSymbols() && Boolean(Symbol[name]);\n};\n\nvar getSymbol = function (name) {\n return hasSymbol(name) ? Symbol[name] : '@@' + name;\n};\n\nif (hasSymbols() && !hasSymbol('observable')) {\n Symbol.observable = Symbol('observable');\n}\n\nvar SymbolIterator = getSymbol('iterator');\nvar SymbolObservable = getSymbol('observable');\nvar SymbolSpecies = getSymbol('species'); // === Abstract Operations ===\n\nfunction getMethod(obj, key) {\n var value = obj[key];\n if (value == null) return undefined;\n if (typeof value !== 'function') throw new TypeError(value + ' is not a function');\n return value;\n}\n\nfunction getSpecies(obj) {\n var ctor = obj.constructor;\n\n if (ctor !== undefined) {\n ctor = ctor[SymbolSpecies];\n\n if (ctor === null) {\n ctor = undefined;\n }\n }\n\n return ctor !== undefined ? ctor : Observable;\n}\n\nfunction isObservable(x) {\n return x instanceof Observable; // SPEC: Brand check\n}\n\nfunction hostReportError(e) {\n if (hostReportError.log) {\n hostReportError.log(e);\n } else {\n setTimeout(function () {\n throw e;\n });\n }\n}\n\nfunction enqueue(fn) {\n Promise.resolve().then(function () {\n try {\n fn();\n } catch (e) {\n hostReportError(e);\n }\n });\n}\n\nfunction cleanupSubscription(subscription) {\n var cleanup = subscription._cleanup;\n if (cleanup === undefined) return;\n subscription._cleanup = undefined;\n\n if (!cleanup) {\n return;\n }\n\n try {\n if (typeof cleanup === 'function') {\n cleanup();\n } else {\n var unsubscribe = getMethod(cleanup, 'unsubscribe');\n\n if (unsubscribe) {\n unsubscribe.call(cleanup);\n }\n }\n } catch (e) {\n hostReportError(e);\n }\n}\n\nfunction closeSubscription(subscription) {\n subscription._observer = undefined;\n subscription._queue = undefined;\n subscription._state = 'closed';\n}\n\nfunction flushSubscription(subscription) {\n var queue = subscription._queue;\n\n if (!queue) {\n return;\n }\n\n subscription._queue = undefined;\n subscription._state = 'ready';\n\n for (var i = 0; i < queue.length; ++i) {\n notifySubscription(subscription, queue[i].type, queue[i].value);\n if (subscription._state === 'closed') break;\n }\n}\n\nfunction notifySubscription(subscription, type, value) {\n subscription._state = 'running';\n var observer = subscription._observer;\n\n try {\n var m = getMethod(observer, type);\n\n switch (type) {\n case 'next':\n if (m) m.call(observer, value);\n break;\n\n case 'error':\n closeSubscription(subscription);\n if (m) m.call(observer, value);else throw value;\n break;\n\n case 'complete':\n closeSubscription(subscription);\n if (m) m.call(observer);\n break;\n }\n } catch (e) {\n hostReportError(e);\n }\n\n if (subscription._state === 'closed') cleanupSubscription(subscription);else if (subscription._state === 'running') subscription._state = 'ready';\n}\n\nfunction onNotify(subscription, type, value) {\n if (subscription._state === 'closed') return;\n\n if (subscription._state === 'buffering') {\n subscription._queue.push({\n type: type,\n value: value\n });\n\n return;\n }\n\n if (subscription._state !== 'ready') {\n subscription._state = 'buffering';\n subscription._queue = [{\n type: type,\n value: value\n }];\n enqueue(function () {\n return flushSubscription(subscription);\n });\n return;\n }\n\n notifySubscription(subscription, type, value);\n}\n\nvar Subscription = /*#__PURE__*/function () {\n function Subscription(observer, subscriber) {\n // ASSERT: observer is an object\n // ASSERT: subscriber is callable\n this._cleanup = undefined;\n this._observer = observer;\n this._queue = undefined;\n this._state = 'initializing';\n var subscriptionObserver = new SubscriptionObserver(this);\n\n try {\n this._cleanup = subscriber.call(undefined, subscriptionObserver);\n } catch (e) {\n subscriptionObserver.error(e);\n }\n\n if (this._state === 'initializing') this._state = 'ready';\n }\n\n var _proto = Subscription.prototype;\n\n _proto.unsubscribe = function unsubscribe() {\n if (this._state !== 'closed') {\n closeSubscription(this);\n cleanupSubscription(this);\n }\n };\n\n _createClass(Subscription, [{\n key: \"closed\",\n get: function () {\n return this._state === 'closed';\n }\n }]);\n\n return Subscription;\n}();\n\nvar SubscriptionObserver = /*#__PURE__*/function () {\n function SubscriptionObserver(subscription) {\n this._subscription = subscription;\n }\n\n var _proto2 = SubscriptionObserver.prototype;\n\n _proto2.next = function next(value) {\n onNotify(this._subscription, 'next', value);\n };\n\n _proto2.error = function error(value) {\n onNotify(this._subscription, 'error', value);\n };\n\n _proto2.complete = function complete() {\n onNotify(this._subscription, 'complete');\n };\n\n _createClass(SubscriptionObserver, [{\n key: \"closed\",\n get: function () {\n return this._subscription._state === 'closed';\n }\n }]);\n\n return SubscriptionObserver;\n}();\n\nvar Observable = /*#__PURE__*/function () {\n function Observable(subscriber) {\n if (!(this instanceof Observable)) throw new TypeError('Observable cannot be called as a function');\n if (typeof subscriber !== 'function') throw new TypeError('Observable initializer must be a function');\n this._subscriber = subscriber;\n }\n\n var _proto3 = Observable.prototype;\n\n _proto3.subscribe = function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n observer = {\n next: observer,\n error: arguments[1],\n complete: arguments[2]\n };\n }\n\n return new Subscription(observer, this._subscriber);\n };\n\n _proto3.forEach = function forEach(fn) {\n var _this = this;\n\n return new Promise(function (resolve, reject) {\n if (typeof fn !== 'function') {\n reject(new TypeError(fn + ' is not a function'));\n return;\n }\n\n function done() {\n subscription.unsubscribe();\n resolve();\n }\n\n var subscription = _this.subscribe({\n next: function (value) {\n try {\n fn(value, done);\n } catch (e) {\n reject(e);\n subscription.unsubscribe();\n }\n },\n error: reject,\n complete: resolve\n });\n });\n };\n\n _proto3.map = function map(fn) {\n var _this2 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n var C = getSpecies(this);\n return new C(function (observer) {\n return _this2.subscribe({\n next: function (value) {\n try {\n value = fn(value);\n } catch (e) {\n return observer.error(e);\n }\n\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n observer.complete();\n }\n });\n });\n };\n\n _proto3.filter = function filter(fn) {\n var _this3 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n var C = getSpecies(this);\n return new C(function (observer) {\n return _this3.subscribe({\n next: function (value) {\n try {\n if (!fn(value)) return;\n } catch (e) {\n return observer.error(e);\n }\n\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n observer.complete();\n }\n });\n });\n };\n\n _proto3.reduce = function reduce(fn) {\n var _this4 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n var C = getSpecies(this);\n var hasSeed = arguments.length > 1;\n var hasValue = false;\n var seed = arguments[1];\n var acc = seed;\n return new C(function (observer) {\n return _this4.subscribe({\n next: function (value) {\n var first = !hasValue;\n hasValue = true;\n\n if (!first || hasSeed) {\n try {\n acc = fn(acc, value);\n } catch (e) {\n return observer.error(e);\n }\n } else {\n acc = value;\n }\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n if (!hasValue && !hasSeed) return observer.error(new TypeError('Cannot reduce an empty sequence'));\n observer.next(acc);\n observer.complete();\n }\n });\n });\n };\n\n _proto3.concat = function concat() {\n var _this5 = this;\n\n for (var _len = arguments.length, sources = new Array(_len), _key = 0; _key < _len; _key++) {\n sources[_key] = arguments[_key];\n }\n\n var C = getSpecies(this);\n return new C(function (observer) {\n var subscription;\n var index = 0;\n\n function startNext(next) {\n subscription = next.subscribe({\n next: function (v) {\n observer.next(v);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n if (index === sources.length) {\n subscription = undefined;\n observer.complete();\n } else {\n startNext(C.from(sources[index++]));\n }\n }\n });\n }\n\n startNext(_this5);\n return function () {\n if (subscription) {\n subscription.unsubscribe();\n subscription = undefined;\n }\n };\n });\n };\n\n _proto3.flatMap = function flatMap(fn) {\n var _this6 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n var C = getSpecies(this);\n return new C(function (observer) {\n var subscriptions = [];\n\n var outer = _this6.subscribe({\n next: function (value) {\n if (fn) {\n try {\n value = fn(value);\n } catch (e) {\n return observer.error(e);\n }\n }\n\n var inner = C.from(value).subscribe({\n next: function (value) {\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n var i = subscriptions.indexOf(inner);\n if (i >= 0) subscriptions.splice(i, 1);\n completeIfDone();\n }\n });\n subscriptions.push(inner);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n completeIfDone();\n }\n });\n\n function completeIfDone() {\n if (outer.closed && subscriptions.length === 0) observer.complete();\n }\n\n return function () {\n subscriptions.forEach(function (s) {\n return s.unsubscribe();\n });\n outer.unsubscribe();\n };\n });\n };\n\n _proto3[SymbolObservable] = function () {\n return this;\n };\n\n Observable.from = function from(x) {\n var C = typeof this === 'function' ? this : Observable;\n if (x == null) throw new TypeError(x + ' is not an object');\n var method = getMethod(x, SymbolObservable);\n\n if (method) {\n var observable = method.call(x);\n if (Object(observable) !== observable) throw new TypeError(observable + ' is not an object');\n if (isObservable(observable) && observable.constructor === C) return observable;\n return new C(function (observer) {\n return observable.subscribe(observer);\n });\n }\n\n if (hasSymbol('iterator')) {\n method = getMethod(x, SymbolIterator);\n\n if (method) {\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n\n for (var _iterator = _createForOfIteratorHelperLoose(method.call(x)), _step; !(_step = _iterator()).done;) {\n var item = _step.value;\n observer.next(item);\n if (observer.closed) return;\n }\n\n observer.complete();\n });\n });\n }\n }\n\n if (Array.isArray(x)) {\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n\n for (var i = 0; i < x.length; ++i) {\n observer.next(x[i]);\n if (observer.closed) return;\n }\n\n observer.complete();\n });\n });\n }\n\n throw new TypeError(x + ' is not observable');\n };\n\n Observable.of = function of() {\n for (var _len2 = arguments.length, items = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n items[_key2] = arguments[_key2];\n }\n\n var C = typeof this === 'function' ? this : Observable;\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n\n for (var i = 0; i < items.length; ++i) {\n observer.next(items[i]);\n if (observer.closed) return;\n }\n\n observer.complete();\n });\n });\n };\n\n _createClass(Observable, null, [{\n key: SymbolSpecies,\n get: function () {\n return this;\n }\n }]);\n\n return Observable;\n}();\n\nif (hasSymbols()) {\n Object.defineProperty(Observable, Symbol('extensions'), {\n value: {\n symbol: SymbolObservable,\n hostReportError: hostReportError\n },\n configurable: true\n });\n}\n\nexport { Observable };\n","import { invariant, newInvariantError, InvariantError, } from \"./invariantWrappers.js\";\nexport { maybe } from \"./maybe.js\";\nexport { default as global } from \"./global.js\";\nexport { invariant, newInvariantError, InvariantError };\n/**\n * @deprecated we do not use this internally anymore,\n * it is just exported for backwards compatibility\n */\n// this file is extempt from automatic `__DEV__` replacement\n// so we have to write it out here\n// @ts-ignore\nexport var DEV = globalThis.__DEV__ !== false;\nexport { DEV as __DEV__ };\n","export function isNonNullObject(obj) {\n return obj !== null && typeof obj === \"object\";\n}\nexport function isPlainObject(obj) {\n return (obj !== null &&\n typeof obj === \"object\" &&\n (Object.getPrototypeOf(obj) === Object.prototype ||\n Object.getPrototypeOf(obj) === null));\n}\n","import { __assign, __spreadArray } from \"tslib\";\nimport { invariant, newInvariantError } from \"../globals/index.js\";\n/**\n * Returns a query document which adds a single query operation that only\n * spreads the target fragment inside of it.\n *\n * So for example a document of:\n *\n * ```graphql\n * fragment foo on Foo { a b c }\n * ```\n *\n * Turns into:\n *\n * ```graphql\n * { ...foo }\n *\n * fragment foo on Foo { a b c }\n * ```\n *\n * The target fragment will either be the only fragment in the document, or a\n * fragment specified by the provided `fragmentName`. If there is more than one\n * fragment, but a `fragmentName` was not defined then an error will be thrown.\n */\nexport function getFragmentQueryDocument(document, fragmentName) {\n var actualFragmentName = fragmentName;\n // Build an array of all our fragment definitions that will be used for\n // validations. We also do some validations on the other definitions in the\n // document while building this list.\n var fragments = [];\n document.definitions.forEach(function (definition) {\n // Throw an error if we encounter an operation definition because we will\n // define our own operation definition later on.\n if (definition.kind === \"OperationDefinition\") {\n throw newInvariantError(\n 71,\n definition.operation,\n definition.name ? \" named '\".concat(definition.name.value, \"'\") : \"\"\n );\n }\n // Add our definition to the fragments array if it is a fragment\n // definition.\n if (definition.kind === \"FragmentDefinition\") {\n fragments.push(definition);\n }\n });\n // If the user did not give us a fragment name then let us try to get a\n // name from a single fragment in the definition.\n if (typeof actualFragmentName === \"undefined\") {\n invariant(fragments.length === 1, 72, fragments.length);\n actualFragmentName = fragments[0].name.value;\n }\n // Generate a query document with an operation that simply spreads the\n // fragment inside of it.\n var query = __assign(__assign({}, document), { definitions: __spreadArray([\n {\n kind: \"OperationDefinition\",\n // OperationTypeNode is an enum\n operation: \"query\",\n selectionSet: {\n kind: \"SelectionSet\",\n selections: [\n {\n kind: \"FragmentSpread\",\n name: {\n kind: \"Name\",\n value: actualFragmentName,\n },\n },\n ],\n },\n }\n ], document.definitions, true) });\n return query;\n}\n// Utility function that takes a list of fragment definitions and makes a hash out of them\n// that maps the name of the fragment to the fragment definition.\nexport function createFragmentMap(fragments) {\n if (fragments === void 0) { fragments = []; }\n var symTable = {};\n fragments.forEach(function (fragment) {\n symTable[fragment.name.value] = fragment;\n });\n return symTable;\n}\nexport function getFragmentFromSelection(selection, fragmentMap) {\n switch (selection.kind) {\n case \"InlineFragment\":\n return selection;\n case \"FragmentSpread\": {\n var fragmentName = selection.name.value;\n if (typeof fragmentMap === \"function\") {\n return fragmentMap(fragmentName);\n }\n var fragment = fragmentMap && fragmentMap[fragmentName];\n invariant(fragment, 73, fragmentName);\n return fragment || null;\n }\n default:\n return null;\n }\n}\n","function noop() { }\nconst defaultDispose = noop;\nconst _WeakRef = typeof WeakRef !== \"undefined\"\n ? WeakRef\n : function (value) {\n return { deref: () => value };\n };\nconst _WeakMap = typeof WeakMap !== \"undefined\" ? WeakMap : Map;\nconst _FinalizationRegistry = typeof FinalizationRegistry !== \"undefined\"\n ? FinalizationRegistry\n : function () {\n return {\n register: noop,\n unregister: noop,\n };\n };\nconst finalizationBatchSize = 10024;\nexport class WeakCache {\n constructor(max = Infinity, dispose = defaultDispose) {\n this.max = max;\n this.dispose = dispose;\n this.map = new _WeakMap();\n this.newest = null;\n this.oldest = null;\n this.unfinalizedNodes = new Set();\n this.finalizationScheduled = false;\n this.size = 0;\n this.finalize = () => {\n const iterator = this.unfinalizedNodes.values();\n for (let i = 0; i < finalizationBatchSize; i++) {\n const node = iterator.next().value;\n if (!node)\n break;\n this.unfinalizedNodes.delete(node);\n const key = node.key;\n delete node.key;\n node.keyRef = new _WeakRef(key);\n this.registry.register(key, node, node);\n }\n if (this.unfinalizedNodes.size > 0) {\n queueMicrotask(this.finalize);\n }\n else {\n this.finalizationScheduled = false;\n }\n };\n this.registry = new _FinalizationRegistry(this.deleteNode.bind(this));\n }\n has(key) {\n return this.map.has(key);\n }\n get(key) {\n const node = this.getNode(key);\n return node && node.value;\n }\n getNode(key) {\n const node = this.map.get(key);\n if (node && node !== this.newest) {\n const { older, newer } = node;\n if (newer) {\n newer.older = older;\n }\n if (older) {\n older.newer = newer;\n }\n node.older = this.newest;\n node.older.newer = node;\n node.newer = null;\n this.newest = node;\n if (node === this.oldest) {\n this.oldest = newer;\n }\n }\n return node;\n }\n set(key, value) {\n let node = this.getNode(key);\n if (node) {\n return (node.value = value);\n }\n node = {\n key,\n value,\n newer: null,\n older: this.newest,\n };\n if (this.newest) {\n this.newest.newer = node;\n }\n this.newest = node;\n this.oldest = this.oldest || node;\n this.scheduleFinalization(node);\n this.map.set(key, node);\n this.size++;\n return node.value;\n }\n clean() {\n while (this.oldest && this.size > this.max) {\n this.deleteNode(this.oldest);\n }\n }\n deleteNode(node) {\n if (node === this.newest) {\n this.newest = node.older;\n }\n if (node === this.oldest) {\n this.oldest = node.newer;\n }\n if (node.newer) {\n node.newer.older = node.older;\n }\n if (node.older) {\n node.older.newer = node.newer;\n }\n this.size--;\n const key = node.key || (node.keyRef && node.keyRef.deref());\n this.dispose(node.value, key);\n if (!node.keyRef) {\n this.unfinalizedNodes.delete(node);\n }\n else {\n this.registry.unregister(node);\n }\n if (key)\n this.map.delete(key);\n }\n delete(key) {\n const node = this.map.get(key);\n if (node) {\n this.deleteNode(node);\n return true;\n }\n return false;\n }\n scheduleFinalization(node) {\n this.unfinalizedNodes.add(node);\n if (!this.finalizationScheduled) {\n this.finalizationScheduled = true;\n queueMicrotask(this.finalize);\n }\n }\n}\n","function defaultDispose() { }\nexport class StrongCache {\n constructor(max = Infinity, dispose = defaultDispose) {\n this.max = max;\n this.dispose = dispose;\n this.map = new Map();\n this.newest = null;\n this.oldest = null;\n }\n has(key) {\n return this.map.has(key);\n }\n get(key) {\n const node = this.getNode(key);\n return node && node.value;\n }\n get size() {\n return this.map.size;\n }\n getNode(key) {\n const node = this.map.get(key);\n if (node && node !== this.newest) {\n const { older, newer } = node;\n if (newer) {\n newer.older = older;\n }\n if (older) {\n older.newer = newer;\n }\n node.older = this.newest;\n node.older.newer = node;\n node.newer = null;\n this.newest = node;\n if (node === this.oldest) {\n this.oldest = newer;\n }\n }\n return node;\n }\n set(key, value) {\n let node = this.getNode(key);\n if (node) {\n return node.value = value;\n }\n node = {\n key,\n value,\n newer: null,\n older: this.newest\n };\n if (this.newest) {\n this.newest.newer = node;\n }\n this.newest = node;\n this.oldest = this.oldest || node;\n this.map.set(key, node);\n return node.value;\n }\n clean() {\n while (this.oldest && this.map.size > this.max) {\n this.delete(this.oldest.key);\n }\n }\n delete(key) {\n const node = this.map.get(key);\n if (node) {\n if (node === this.newest) {\n this.newest = node.older;\n }\n if (node === this.oldest) {\n this.oldest = node.newer;\n }\n if (node.newer) {\n node.newer.older = node.older;\n }\n if (node.older) {\n node.older.newer = node.newer;\n }\n this.map.delete(key);\n this.dispose(node.value, key);\n return true;\n }\n return false;\n }\n}\n","import { WeakCache, StrongCache } from \"@wry/caches\";\nvar scheduledCleanup = new WeakSet();\nfunction schedule(cache) {\n if (!scheduledCleanup.has(cache)) {\n scheduledCleanup.add(cache);\n setTimeout(function () {\n cache.clean();\n scheduledCleanup.delete(cache);\n }, 100);\n }\n}\n/**\n * @internal\n * A version of WeakCache that will auto-schedule a cleanup of the cache when\n * a new item is added.\n * Throttled to once per 100ms.\n *\n * @privateRemarks\n * Should be used throughout the rest of the codebase instead of WeakCache,\n * with the notable exception of usage in `wrap` from `optimism` - that one\n * already handles cleanup and should remain a `WeakCache`.\n */\nexport var AutoCleanedWeakCache = function (max, dispose) {\n /*\n Some builds of `WeakCache` are function prototypes, some are classes.\n This library still builds with an ES5 target, so we can't extend the\n real classes.\n Instead, we have to use this workaround until we switch to a newer build\n target.\n */\n var cache = new WeakCache(max, dispose);\n cache.set = function (key, value) {\n schedule(this);\n return WeakCache.prototype.set.call(this, key, value);\n };\n return cache;\n};\n/**\n * @internal\n * A version of StrongCache that will auto-schedule a cleanup of the cache when\n * a new item is added.\n * Throttled to once per 100ms.\n *\n * @privateRemarks\n * Should be used throughout the rest of the codebase instead of StrongCache,\n * with the notable exception of usage in `wrap` from `optimism` - that one\n * already handles cleanup and should remain a `StrongCache`.\n */\nexport var AutoCleanedStrongCache = function (max, dispose) {\n /*\n Some builds of `StrongCache` are function prototypes, some are classes.\n This library still builds with an ES5 target, so we can't extend the\n real classes.\n Instead, we have to use this workaround until we switch to a newer build\n target.\n */\n var cache = new StrongCache(max, dispose);\n cache.set = function (key, value) {\n schedule(this);\n return StrongCache.prototype.set.call(this, key, value);\n };\n return cache;\n};\n","import { __assign } from \"tslib\";\nimport { global } from \"../globals/index.js\";\nvar cacheSizeSymbol = Symbol.for(\"apollo.cacheSize\");\n/**\n *\n * The global cache size configuration for Apollo Client.\n *\n * @remarks\n *\n * You can directly modify this object, but any modification will\n * only have an effect on caches that are created after the modification.\n *\n * So for global caches, such as `parser`, `canonicalStringify` and `print`,\n * you might need to call `.reset` on them, which will essentially re-create them.\n *\n * Alternatively, you can set `globalThis[Symbol.for(\"apollo.cacheSize\")]` before\n * you load the Apollo Client package:\n *\n * @example\n * ```ts\n * globalThis[Symbol.for(\"apollo.cacheSize\")] = {\n * parser: 100\n * } satisfies Partial // the `satisfies` is optional if using TypeScript\n * ```\n */\nexport var cacheSizes = __assign({}, global[cacheSizeSymbol]);\n","import { __assign, __spreadArray } from \"tslib\";\nimport { cacheSizes } from \"./sizes.js\";\nvar globalCaches = {};\nexport function registerGlobalCache(name, getSize) {\n globalCaches[name] = getSize;\n}\n/**\n * For internal purposes only - please call `ApolloClient.getMemoryInternals` instead\n * @internal\n */\nexport var getApolloClientMemoryInternals = globalThis.__DEV__ !== false ?\n _getApolloClientMemoryInternals\n : undefined;\n/**\n * For internal purposes only - please call `ApolloClient.getMemoryInternals` instead\n * @internal\n */\nexport var getInMemoryCacheMemoryInternals = globalThis.__DEV__ !== false ?\n _getInMemoryCacheMemoryInternals\n : undefined;\n/**\n * For internal purposes only - please call `ApolloClient.getMemoryInternals` instead\n * @internal\n */\nexport var getApolloCacheMemoryInternals = globalThis.__DEV__ !== false ?\n _getApolloCacheMemoryInternals\n : undefined;\nfunction getCurrentCacheSizes() {\n // `defaultCacheSizes` is a `const enum` that will be inlined during build, so we have to reconstruct it's shape here\n var defaults = {\n parser: 1000 /* defaultCacheSizes[\"parser\"] */,\n canonicalStringify: 1000 /* defaultCacheSizes[\"canonicalStringify\"] */,\n print: 2000 /* defaultCacheSizes[\"print\"] */,\n \"documentTransform.cache\": 2000 /* defaultCacheSizes[\"documentTransform.cache\"] */,\n \"queryManager.getDocumentInfo\": 2000 /* defaultCacheSizes[\"queryManager.getDocumentInfo\"] */,\n \"PersistedQueryLink.persistedQueryHashes\": 2000 /* defaultCacheSizes[\"PersistedQueryLink.persistedQueryHashes\"] */,\n \"fragmentRegistry.transform\": 2000 /* defaultCacheSizes[\"fragmentRegistry.transform\"] */,\n \"fragmentRegistry.lookup\": 1000 /* defaultCacheSizes[\"fragmentRegistry.lookup\"] */,\n \"fragmentRegistry.findFragmentSpreads\": 4000 /* defaultCacheSizes[\"fragmentRegistry.findFragmentSpreads\"] */,\n \"cache.fragmentQueryDocuments\": 1000 /* defaultCacheSizes[\"cache.fragmentQueryDocuments\"] */,\n \"removeTypenameFromVariables.getVariableDefinitions\": 2000 /* defaultCacheSizes[\"removeTypenameFromVariables.getVariableDefinitions\"] */,\n \"inMemoryCache.maybeBroadcastWatch\": 5000 /* defaultCacheSizes[\"inMemoryCache.maybeBroadcastWatch\"] */,\n \"inMemoryCache.executeSelectionSet\": 50000 /* defaultCacheSizes[\"inMemoryCache.executeSelectionSet\"] */,\n \"inMemoryCache.executeSubSelectedArray\": 10000 /* defaultCacheSizes[\"inMemoryCache.executeSubSelectedArray\"] */,\n };\n return Object.fromEntries(Object.entries(defaults).map(function (_a) {\n var k = _a[0], v = _a[1];\n return [\n k,\n cacheSizes[k] || v,\n ];\n }));\n}\nfunction _getApolloClientMemoryInternals() {\n var _a, _b, _c, _d, _e;\n if (!(globalThis.__DEV__ !== false))\n throw new Error(\"only supported in development mode\");\n return {\n limits: getCurrentCacheSizes(),\n sizes: __assign({ print: (_a = globalCaches.print) === null || _a === void 0 ? void 0 : _a.call(globalCaches), parser: (_b = globalCaches.parser) === null || _b === void 0 ? void 0 : _b.call(globalCaches), canonicalStringify: (_c = globalCaches.canonicalStringify) === null || _c === void 0 ? void 0 : _c.call(globalCaches), links: linkInfo(this.link), queryManager: {\n getDocumentInfo: this[\"queryManager\"][\"transformCache\"].size,\n documentTransforms: transformInfo(this[\"queryManager\"].documentTransform),\n } }, (_e = (_d = this.cache).getMemoryInternals) === null || _e === void 0 ? void 0 : _e.call(_d)),\n };\n}\nfunction _getApolloCacheMemoryInternals() {\n return {\n cache: {\n fragmentQueryDocuments: getWrapperInformation(this[\"getFragmentDoc\"]),\n },\n };\n}\nfunction _getInMemoryCacheMemoryInternals() {\n var fragments = this.config.fragments;\n return __assign(__assign({}, _getApolloCacheMemoryInternals.apply(this)), { addTypenameDocumentTransform: transformInfo(this[\"addTypenameTransform\"]), inMemoryCache: {\n executeSelectionSet: getWrapperInformation(this[\"storeReader\"][\"executeSelectionSet\"]),\n executeSubSelectedArray: getWrapperInformation(this[\"storeReader\"][\"executeSubSelectedArray\"]),\n maybeBroadcastWatch: getWrapperInformation(this[\"maybeBroadcastWatch\"]),\n }, fragmentRegistry: {\n findFragmentSpreads: getWrapperInformation(fragments === null || fragments === void 0 ? void 0 : fragments.findFragmentSpreads),\n lookup: getWrapperInformation(fragments === null || fragments === void 0 ? void 0 : fragments.lookup),\n transform: getWrapperInformation(fragments === null || fragments === void 0 ? void 0 : fragments.transform),\n } });\n}\nfunction isWrapper(f) {\n return !!f && \"dirtyKey\" in f;\n}\nfunction getWrapperInformation(f) {\n return isWrapper(f) ? f.size : undefined;\n}\nfunction isDefined(value) {\n return value != null;\n}\nfunction transformInfo(transform) {\n return recurseTransformInfo(transform).map(function (cache) { return ({ cache: cache }); });\n}\nfunction recurseTransformInfo(transform) {\n return transform ?\n __spreadArray(__spreadArray([\n getWrapperInformation(transform === null || transform === void 0 ? void 0 : transform[\"performWork\"])\n ], recurseTransformInfo(transform === null || transform === void 0 ? void 0 : transform[\"left\"]), true), recurseTransformInfo(transform === null || transform === void 0 ? void 0 : transform[\"right\"]), true).filter(isDefined)\n : [];\n}\nfunction linkInfo(link) {\n var _a;\n return link ?\n __spreadArray(__spreadArray([\n (_a = link === null || link === void 0 ? void 0 : link.getMemoryInternals) === null || _a === void 0 ? void 0 : _a.call(link)\n ], linkInfo(link === null || link === void 0 ? void 0 : link.left), true), linkInfo(link === null || link === void 0 ? void 0 : link.right), true).filter(isDefined)\n : [];\n}\n","import { AutoCleanedStrongCache, cacheSizes, } from \"../../utilities/caching/index.js\";\nimport { registerGlobalCache } from \"../caching/getMemoryInternals.js\";\n/**\n * Like JSON.stringify, but with object keys always sorted in the same order.\n *\n * To achieve performant sorting, this function uses a Map from JSON-serialized\n * arrays of keys (in any order) to sorted arrays of the same keys, with a\n * single sorted array reference shared by all permutations of the keys.\n *\n * As a drawback, this function will add a little bit more memory for every\n * object encountered that has different (more, less, a different order of) keys\n * than in the past.\n *\n * In a typical application, this extra memory usage should not play a\n * significant role, as `canonicalStringify` will be called for only a limited\n * number of object shapes, and the cache will not grow beyond a certain point.\n * But in some edge cases, this could be a problem, so we provide\n * canonicalStringify.reset() as a way of clearing the cache.\n * */\nexport var canonicalStringify = Object.assign(function canonicalStringify(value) {\n return JSON.stringify(value, stableObjectReplacer);\n}, {\n reset: function () {\n // Clearing the sortingMap will reclaim all cached memory, without\n // affecting the logical results of canonicalStringify, but potentially\n // sacrificing performance until the cache is refilled.\n sortingMap = new AutoCleanedStrongCache(cacheSizes.canonicalStringify || 1000 /* defaultCacheSizes.canonicalStringify */);\n },\n});\nif (globalThis.__DEV__ !== false) {\n registerGlobalCache(\"canonicalStringify\", function () { return sortingMap.size; });\n}\n// Values are JSON-serialized arrays of object keys (in any order), and values\n// are sorted arrays of the same keys.\nvar sortingMap;\ncanonicalStringify.reset();\n// The JSON.stringify function takes an optional second argument called a\n// replacer function. This function is called for each key-value pair in the\n// object being stringified, and its return value is used instead of the\n// original value. If the replacer function returns a new value, that value is\n// stringified as JSON instead of the original value of the property.\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#the_replacer_parameter\nfunction stableObjectReplacer(key, value) {\n if (value && typeof value === \"object\") {\n var proto = Object.getPrototypeOf(value);\n // We don't want to mess with objects that are not \"plain\" objects, which\n // means their prototype is either Object.prototype or null. This check also\n // prevents needlessly rearranging the indices of arrays.\n if (proto === Object.prototype || proto === null) {\n var keys = Object.keys(value);\n // If keys is already sorted, let JSON.stringify serialize the original\n // value instead of creating a new object with keys in the same order.\n if (keys.every(everyKeyInOrder))\n return value;\n var unsortedKey = JSON.stringify(keys);\n var sortedKeys = sortingMap.get(unsortedKey);\n if (!sortedKeys) {\n keys.sort();\n var sortedKey = JSON.stringify(keys);\n // Checking for sortedKey in the sortingMap allows us to share the same\n // sorted array reference for all permutations of the same set of keys.\n sortedKeys = sortingMap.get(sortedKey) || keys;\n sortingMap.set(unsortedKey, sortedKeys);\n sortingMap.set(sortedKey, sortedKeys);\n }\n var sortedObject_1 = Object.create(proto);\n // Reassigning the keys in sorted order will cause JSON.stringify to\n // serialize them in sorted order.\n sortedKeys.forEach(function (key) {\n sortedObject_1[key] = value[key];\n });\n return sortedObject_1;\n }\n }\n return value;\n}\n// Since everything that happens in stableObjectReplacer benefits from being as\n// efficient as possible, we use a static function as the callback for\n// keys.every in order to test if the provided keys are already sorted without\n// allocating extra memory for a callback.\nfunction everyKeyInOrder(key, i, keys) {\n return i === 0 || keys[i - 1] <= key;\n}\n","import { newInvariantError } from \"../globals/index.js\";\nimport { isNonNullObject } from \"../common/objects.js\";\nimport { getFragmentFromSelection } from \"./fragments.js\";\nimport { canonicalStringify } from \"../common/canonicalStringify.js\";\nexport function makeReference(id) {\n return { __ref: String(id) };\n}\nexport function isReference(obj) {\n return Boolean(obj && typeof obj === \"object\" && typeof obj.__ref === \"string\");\n}\nexport function isDocumentNode(value) {\n return (isNonNullObject(value) &&\n value.kind === \"Document\" &&\n Array.isArray(value.definitions));\n}\nfunction isStringValue(value) {\n return value.kind === \"StringValue\";\n}\nfunction isBooleanValue(value) {\n return value.kind === \"BooleanValue\";\n}\nfunction isIntValue(value) {\n return value.kind === \"IntValue\";\n}\nfunction isFloatValue(value) {\n return value.kind === \"FloatValue\";\n}\nfunction isVariable(value) {\n return value.kind === \"Variable\";\n}\nfunction isObjectValue(value) {\n return value.kind === \"ObjectValue\";\n}\nfunction isListValue(value) {\n return value.kind === \"ListValue\";\n}\nfunction isEnumValue(value) {\n return value.kind === \"EnumValue\";\n}\nfunction isNullValue(value) {\n return value.kind === \"NullValue\";\n}\nexport function valueToObjectRepresentation(argObj, name, value, variables) {\n if (isIntValue(value) || isFloatValue(value)) {\n argObj[name.value] = Number(value.value);\n }\n else if (isBooleanValue(value) || isStringValue(value)) {\n argObj[name.value] = value.value;\n }\n else if (isObjectValue(value)) {\n var nestedArgObj_1 = {};\n value.fields.map(function (obj) {\n return valueToObjectRepresentation(nestedArgObj_1, obj.name, obj.value, variables);\n });\n argObj[name.value] = nestedArgObj_1;\n }\n else if (isVariable(value)) {\n var variableValue = (variables || {})[value.name.value];\n argObj[name.value] = variableValue;\n }\n else if (isListValue(value)) {\n argObj[name.value] = value.values.map(function (listValue) {\n var nestedArgArrayObj = {};\n valueToObjectRepresentation(nestedArgArrayObj, name, listValue, variables);\n return nestedArgArrayObj[name.value];\n });\n }\n else if (isEnumValue(value)) {\n argObj[name.value] = value.value;\n }\n else if (isNullValue(value)) {\n argObj[name.value] = null;\n }\n else {\n throw newInvariantError(82, name.value, value.kind);\n }\n}\nexport function storeKeyNameFromField(field, variables) {\n var directivesObj = null;\n if (field.directives) {\n directivesObj = {};\n field.directives.forEach(function (directive) {\n directivesObj[directive.name.value] = {};\n if (directive.arguments) {\n directive.arguments.forEach(function (_a) {\n var name = _a.name, value = _a.value;\n return valueToObjectRepresentation(directivesObj[directive.name.value], name, value, variables);\n });\n }\n });\n }\n var argObj = null;\n if (field.arguments && field.arguments.length) {\n argObj = {};\n field.arguments.forEach(function (_a) {\n var name = _a.name, value = _a.value;\n return valueToObjectRepresentation(argObj, name, value, variables);\n });\n }\n return getStoreKeyName(field.name.value, argObj, directivesObj);\n}\nvar KNOWN_DIRECTIVES = [\n \"connection\",\n \"include\",\n \"skip\",\n \"client\",\n \"rest\",\n \"export\",\n \"nonreactive\",\n];\n// Default stable JSON.stringify implementation used by getStoreKeyName. Can be\n// updated/replaced with something better by calling\n// getStoreKeyName.setStringify(newStringifyFunction).\nvar storeKeyNameStringify = canonicalStringify;\nexport var getStoreKeyName = Object.assign(function (fieldName, args, directives) {\n if (args &&\n directives &&\n directives[\"connection\"] &&\n directives[\"connection\"][\"key\"]) {\n if (directives[\"connection\"][\"filter\"] &&\n directives[\"connection\"][\"filter\"].length > 0) {\n var filterKeys = directives[\"connection\"][\"filter\"] ?\n directives[\"connection\"][\"filter\"]\n : [];\n filterKeys.sort();\n var filteredArgs_1 = {};\n filterKeys.forEach(function (key) {\n filteredArgs_1[key] = args[key];\n });\n return \"\".concat(directives[\"connection\"][\"key\"], \"(\").concat(storeKeyNameStringify(filteredArgs_1), \")\");\n }\n else {\n return directives[\"connection\"][\"key\"];\n }\n }\n var completeFieldName = fieldName;\n if (args) {\n // We can't use `JSON.stringify` here since it's non-deterministic,\n // and can lead to different store key names being created even though\n // the `args` object used during creation has the same properties/values.\n var stringifiedArgs = storeKeyNameStringify(args);\n completeFieldName += \"(\".concat(stringifiedArgs, \")\");\n }\n if (directives) {\n Object.keys(directives).forEach(function (key) {\n if (KNOWN_DIRECTIVES.indexOf(key) !== -1)\n return;\n if (directives[key] && Object.keys(directives[key]).length) {\n completeFieldName += \"@\".concat(key, \"(\").concat(storeKeyNameStringify(directives[key]), \")\");\n }\n else {\n completeFieldName += \"@\".concat(key);\n }\n });\n }\n return completeFieldName;\n}, {\n setStringify: function (s) {\n var previous = storeKeyNameStringify;\n storeKeyNameStringify = s;\n return previous;\n },\n});\nexport function argumentsObjectFromField(field, variables) {\n if (field.arguments && field.arguments.length) {\n var argObj_1 = {};\n field.arguments.forEach(function (_a) {\n var name = _a.name, value = _a.value;\n return valueToObjectRepresentation(argObj_1, name, value, variables);\n });\n return argObj_1;\n }\n return null;\n}\nexport function resultKeyNameFromField(field) {\n return field.alias ? field.alias.value : field.name.value;\n}\nexport function getTypenameFromResult(result, selectionSet, fragmentMap) {\n var fragments;\n for (var _i = 0, _a = selectionSet.selections; _i < _a.length; _i++) {\n var selection = _a[_i];\n if (isField(selection)) {\n if (selection.name.value === \"__typename\") {\n return result[resultKeyNameFromField(selection)];\n }\n }\n else if (fragments) {\n fragments.push(selection);\n }\n else {\n fragments = [selection];\n }\n }\n if (typeof result.__typename === \"string\") {\n return result.__typename;\n }\n if (fragments) {\n for (var _b = 0, fragments_1 = fragments; _b < fragments_1.length; _b++) {\n var selection = fragments_1[_b];\n var typename = getTypenameFromResult(result, getFragmentFromSelection(selection, fragmentMap).selectionSet, fragmentMap);\n if (typeof typename === \"string\") {\n return typename;\n }\n }\n }\n}\nexport function isField(selection) {\n return selection.kind === \"Field\";\n}\nexport function isInlineFragment(selection) {\n return selection.kind === \"InlineFragment\";\n}\n","import { invariant, newInvariantError } from \"../globals/index.js\";\nimport { valueToObjectRepresentation } from \"./storeUtils.js\";\n// Checks the document for errors and throws an exception if there is an error.\nexport function checkDocument(doc) {\n invariant(doc && doc.kind === \"Document\", 74);\n var operations = doc.definitions\n .filter(function (d) { return d.kind !== \"FragmentDefinition\"; })\n .map(function (definition) {\n if (definition.kind !== \"OperationDefinition\") {\n throw newInvariantError(75, definition.kind);\n }\n return definition;\n });\n invariant(operations.length <= 1, 76, operations.length);\n return doc;\n}\nexport function getOperationDefinition(doc) {\n checkDocument(doc);\n return doc.definitions.filter(function (definition) {\n return definition.kind === \"OperationDefinition\";\n })[0];\n}\nexport function getOperationName(doc) {\n return (doc.definitions\n .filter(function (definition) {\n return definition.kind === \"OperationDefinition\" && !!definition.name;\n })\n .map(function (x) { return x.name.value; })[0] || null);\n}\n// Returns the FragmentDefinitions from a particular document as an array\nexport function getFragmentDefinitions(doc) {\n return doc.definitions.filter(function (definition) {\n return definition.kind === \"FragmentDefinition\";\n });\n}\nexport function getQueryDefinition(doc) {\n var queryDef = getOperationDefinition(doc);\n invariant(queryDef && queryDef.operation === \"query\", 77);\n return queryDef;\n}\nexport function getFragmentDefinition(doc) {\n invariant(doc.kind === \"Document\", 78);\n invariant(doc.definitions.length <= 1, 79);\n var fragmentDef = doc.definitions[0];\n invariant(fragmentDef.kind === \"FragmentDefinition\", 80);\n return fragmentDef;\n}\n/**\n * Returns the first operation definition found in this document.\n * If no operation definition is found, the first fragment definition will be returned.\n * If no definitions are found, an error will be thrown.\n */\nexport function getMainDefinition(queryDoc) {\n checkDocument(queryDoc);\n var fragmentDefinition;\n for (var _i = 0, _a = queryDoc.definitions; _i < _a.length; _i++) {\n var definition = _a[_i];\n if (definition.kind === \"OperationDefinition\") {\n var operation = definition.operation;\n if (operation === \"query\" ||\n operation === \"mutation\" ||\n operation === \"subscription\") {\n return definition;\n }\n }\n if (definition.kind === \"FragmentDefinition\" && !fragmentDefinition) {\n // we do this because we want to allow multiple fragment definitions\n // to precede an operation definition.\n fragmentDefinition = definition;\n }\n }\n if (fragmentDefinition) {\n return fragmentDefinition;\n }\n throw newInvariantError(81);\n}\nexport function getDefaultValues(definition) {\n var defaultValues = Object.create(null);\n var defs = definition && definition.variableDefinitions;\n if (defs && defs.length) {\n defs.forEach(function (def) {\n if (def.defaultValue) {\n valueToObjectRepresentation(defaultValues, def.variable.name, def.defaultValue);\n }\n });\n }\n return defaultValues;\n}\n","import { newInvariantError, invariant } from \"../../utilities/globals/index.js\";\nimport { Observable } from \"../../utilities/index.js\";\nimport { validateOperation, createOperation, transformOperation, } from \"../utils/index.js\";\nfunction passthrough(op, forward) {\n return (forward ? forward(op) : Observable.of());\n}\nfunction toLink(handler) {\n return typeof handler === \"function\" ? new ApolloLink(handler) : handler;\n}\nfunction isTerminating(link) {\n return link.request.length <= 1;\n}\nvar ApolloLink = /** @class */ (function () {\n function ApolloLink(request) {\n if (request)\n this.request = request;\n }\n ApolloLink.empty = function () {\n return new ApolloLink(function () { return Observable.of(); });\n };\n ApolloLink.from = function (links) {\n if (links.length === 0)\n return ApolloLink.empty();\n return links.map(toLink).reduce(function (x, y) { return x.concat(y); });\n };\n ApolloLink.split = function (test, left, right) {\n var leftLink = toLink(left);\n var rightLink = toLink(right || new ApolloLink(passthrough));\n var ret;\n if (isTerminating(leftLink) && isTerminating(rightLink)) {\n ret = new ApolloLink(function (operation) {\n return test(operation) ?\n leftLink.request(operation) || Observable.of()\n : rightLink.request(operation) || Observable.of();\n });\n }\n else {\n ret = new ApolloLink(function (operation, forward) {\n return test(operation) ?\n leftLink.request(operation, forward) || Observable.of()\n : rightLink.request(operation, forward) || Observable.of();\n });\n }\n return Object.assign(ret, { left: leftLink, right: rightLink });\n };\n ApolloLink.execute = function (link, operation) {\n return (link.request(createOperation(operation.context, transformOperation(validateOperation(operation)))) || Observable.of());\n };\n ApolloLink.concat = function (first, second) {\n var firstLink = toLink(first);\n if (isTerminating(firstLink)) {\n globalThis.__DEV__ !== false && invariant.warn(35, firstLink);\n return firstLink;\n }\n var nextLink = toLink(second);\n var ret;\n if (isTerminating(nextLink)) {\n ret = new ApolloLink(function (operation) {\n return firstLink.request(operation, function (op) { return nextLink.request(op) || Observable.of(); }) || Observable.of();\n });\n }\n else {\n ret = new ApolloLink(function (operation, forward) {\n return (firstLink.request(operation, function (op) {\n return nextLink.request(op, forward) || Observable.of();\n }) || Observable.of());\n });\n }\n return Object.assign(ret, { left: firstLink, right: nextLink });\n };\n ApolloLink.prototype.split = function (test, left, right) {\n return this.concat(ApolloLink.split(test, left, right || new ApolloLink(passthrough)));\n };\n ApolloLink.prototype.concat = function (next) {\n return ApolloLink.concat(this, next);\n };\n ApolloLink.prototype.request = function (operation, forward) {\n throw newInvariantError(36);\n };\n ApolloLink.prototype.onError = function (error, observer) {\n if (observer && observer.error) {\n observer.error(error);\n // Returning false indicates that observer.error does not need to be\n // called again, since it was already called (on the previous line).\n // Calling observer.error again would not cause any real problems,\n // since only the first call matters, but custom onError functions\n // might have other reasons for wanting to prevent the default\n // behavior by returning false.\n return false;\n }\n // Throw errors will be passed to observer.error.\n throw error;\n };\n ApolloLink.prototype.setOnError = function (fn) {\n this.onError = fn;\n return this;\n };\n return ApolloLink;\n}());\nexport { ApolloLink };\n","import { __assign } from \"tslib\";\nexport function createOperation(starting, operation) {\n var context = __assign({}, starting);\n var setContext = function (next) {\n if (typeof next === \"function\") {\n context = __assign(__assign({}, context), next(context));\n }\n else {\n context = __assign(__assign({}, context), next);\n }\n };\n var getContext = function () { return (__assign({}, context)); };\n Object.defineProperty(operation, \"setContext\", {\n enumerable: false,\n value: setContext,\n });\n Object.defineProperty(operation, \"getContext\", {\n enumerable: false,\n value: getContext,\n });\n return operation;\n}\n","import { getOperationName } from \"../../utilities/index.js\";\nexport function transformOperation(operation) {\n var transformedOperation = {\n variables: operation.variables || {},\n extensions: operation.extensions || {},\n operationName: operation.operationName,\n query: operation.query,\n };\n // Best guess at an operation name\n if (!transformedOperation.operationName) {\n transformedOperation.operationName =\n typeof transformedOperation.query !== \"string\" ?\n getOperationName(transformedOperation.query) || undefined\n : \"\";\n }\n return transformedOperation;\n}\n","import { newInvariantError } from \"../../utilities/globals/index.js\";\nexport function validateOperation(operation) {\n var OPERATION_FIELDS = [\n \"query\",\n \"operationName\",\n \"variables\",\n \"extensions\",\n \"context\",\n ];\n for (var _i = 0, _a = Object.keys(operation); _i < _a.length; _i++) {\n var key = _a[_i];\n if (OPERATION_FIELDS.indexOf(key) < 0) {\n throw newInvariantError(43, key);\n }\n }\n return operation;\n}\n","// A [trie](https://en.wikipedia.org/wiki/Trie) data structure that holds\n// object keys weakly, yet can also hold non-object keys, unlike the\n// native `WeakMap`.\n// If no makeData function is supplied, the looked-up data will be an empty,\n// null-prototype Object.\nconst defaultMakeData = () => Object.create(null);\n// Useful for processing arguments objects as well as arrays.\nconst { forEach, slice } = Array.prototype;\nconst { hasOwnProperty } = Object.prototype;\nexport class Trie {\n constructor(weakness = true, makeData = defaultMakeData) {\n this.weakness = weakness;\n this.makeData = makeData;\n }\n lookup(...array) {\n return this.lookupArray(array);\n }\n lookupArray(array) {\n let node = this;\n forEach.call(array, key => node = node.getChildTrie(key));\n return hasOwnProperty.call(node, \"data\")\n ? node.data\n : node.data = this.makeData(slice.call(array));\n }\n peek(...array) {\n return this.peekArray(array);\n }\n peekArray(array) {\n let node = this;\n for (let i = 0, len = array.length; node && i < len; ++i) {\n const map = this.weakness && isObjRef(array[i]) ? node.weak : node.strong;\n node = map && map.get(array[i]);\n }\n return node && node.data;\n }\n getChildTrie(key) {\n const map = this.weakness && isObjRef(key)\n ? this.weak || (this.weak = new WeakMap())\n : this.strong || (this.strong = new Map());\n let child = map.get(key);\n if (!child)\n map.set(key, child = new Trie(this.weakness, this.makeData));\n return child;\n }\n}\nfunction isObjRef(value) {\n switch (typeof value) {\n case \"object\":\n if (value === null)\n break;\n // Fall through to return true...\n case \"function\":\n return true;\n }\n return false;\n}\n","// This currentContext variable will only be used if the makeSlotClass\n// function is called, which happens only if this is the first copy of the\n// @wry/context package to be imported.\nlet currentContext = null;\n// This unique internal object is used to denote the absence of a value\n// for a given Slot, and is never exposed to outside code.\nconst MISSING_VALUE = {};\nlet idCounter = 1;\n// Although we can't do anything about the cost of duplicated code from\n// accidentally bundling multiple copies of the @wry/context package, we can\n// avoid creating the Slot class more than once using makeSlotClass.\nconst makeSlotClass = () => class Slot {\n constructor() {\n // If you have a Slot object, you can find out its slot.id, but you cannot\n // guess the slot.id of a Slot you don't have access to, thanks to the\n // randomized suffix.\n this.id = [\n \"slot\",\n idCounter++,\n Date.now(),\n Math.random().toString(36).slice(2),\n ].join(\":\");\n }\n hasValue() {\n for (let context = currentContext; context; context = context.parent) {\n // We use the Slot object iself as a key to its value, which means the\n // value cannot be obtained without a reference to the Slot object.\n if (this.id in context.slots) {\n const value = context.slots[this.id];\n if (value === MISSING_VALUE)\n break;\n if (context !== currentContext) {\n // Cache the value in currentContext.slots so the next lookup will\n // be faster. This caching is safe because the tree of contexts and\n // the values of the slots are logically immutable.\n currentContext.slots[this.id] = value;\n }\n return true;\n }\n }\n if (currentContext) {\n // If a value was not found for this Slot, it's never going to be found\n // no matter how many times we look it up, so we might as well cache\n // the absence of the value, too.\n currentContext.slots[this.id] = MISSING_VALUE;\n }\n return false;\n }\n getValue() {\n if (this.hasValue()) {\n return currentContext.slots[this.id];\n }\n }\n withValue(value, callback, \n // Given the prevalence of arrow functions, specifying arguments is likely\n // to be much more common than specifying `this`, hence this ordering:\n args, thisArg) {\n const slots = {\n __proto__: null,\n [this.id]: value,\n };\n const parent = currentContext;\n currentContext = { parent, slots };\n try {\n // Function.prototype.apply allows the arguments array argument to be\n // omitted or undefined, so args! is fine here.\n return callback.apply(thisArg, args);\n }\n finally {\n currentContext = parent;\n }\n }\n // Capture the current context and wrap a callback function so that it\n // reestablishes the captured context when called.\n static bind(callback) {\n const context = currentContext;\n return function () {\n const saved = currentContext;\n try {\n currentContext = context;\n return callback.apply(this, arguments);\n }\n finally {\n currentContext = saved;\n }\n };\n }\n // Immediately run a callback function without any captured context.\n static noContext(callback, \n // Given the prevalence of arrow functions, specifying arguments is likely\n // to be much more common than specifying `this`, hence this ordering:\n args, thisArg) {\n if (currentContext) {\n const saved = currentContext;\n try {\n currentContext = null;\n // Function.prototype.apply allows the arguments array argument to be\n // omitted or undefined, so args! is fine here.\n return callback.apply(thisArg, args);\n }\n finally {\n currentContext = saved;\n }\n }\n else {\n return callback.apply(thisArg, args);\n }\n }\n};\nfunction maybe(fn) {\n try {\n return fn();\n }\n catch (ignored) { }\n}\n// We store a single global implementation of the Slot class as a permanent\n// non-enumerable property of the globalThis object. This obfuscation does\n// nothing to prevent access to the Slot class, but at least it ensures the\n// implementation (i.e. currentContext) cannot be tampered with, and all copies\n// of the @wry/context package (hopefully just one) will share the same Slot\n// implementation. Since the first copy of the @wry/context package to be\n// imported wins, this technique imposes a steep cost for any future breaking\n// changes to the Slot class.\nconst globalKey = \"@wry/context:Slot\";\nconst host = \n// Prefer globalThis when available.\n// https://github.com/benjamn/wryware/issues/347\nmaybe(() => globalThis) ||\n // Fall back to global, which works in Node.js and may be converted by some\n // bundlers to the appropriate identifier (window, self, ...) depending on the\n // bundling target. https://github.com/endojs/endo/issues/576#issuecomment-1178515224\n maybe(() => global) ||\n // Otherwise, use a dummy host that's local to this module. We used to fall\n // back to using the Array constructor as a namespace, but that was flagged in\n // https://github.com/benjamn/wryware/issues/347, and can be avoided.\n Object.create(null);\n// Whichever globalHost we're using, make TypeScript happy about the additional\n// globalKey property.\nconst globalHost = host;\nexport const Slot = globalHost[globalKey] ||\n // Earlier versions of this package stored the globalKey property on the Array\n // constructor, so we check there as well, to prevent Slot class duplication.\n Array[globalKey] ||\n (function (Slot) {\n try {\n Object.defineProperty(globalHost, globalKey, {\n value: Slot,\n enumerable: false,\n writable: false,\n // When it was possible for globalHost to be the Array constructor (a\n // legacy Slot dedup strategy), it was important for the property to be\n // configurable:true so it could be deleted. That does not seem to be as\n // important when globalHost is the global object, but I don't want to\n // cause similar problems again, and configurable:true seems safest.\n // https://github.com/endojs/endo/issues/576#issuecomment-1178274008\n configurable: true\n });\n }\n finally {\n return Slot;\n }\n })(makeSlotClass());\n","import { Slot } from \"@wry/context\";\nexport const parentEntrySlot = new Slot();\nexport function nonReactive(fn) {\n return parentEntrySlot.withValue(void 0, fn);\n}\nexport { Slot };\nexport { bind as bindContext, noContext, setTimeout, asyncFromGen, } from \"@wry/context\";\n","export const { hasOwnProperty, } = Object.prototype;\nexport const arrayFromSet = Array.from ||\n function (set) {\n const array = [];\n set.forEach(item => array.push(item));\n return array;\n };\nexport function maybeUnsubscribe(entryOrDep) {\n const { unsubscribe } = entryOrDep;\n if (typeof unsubscribe === \"function\") {\n entryOrDep.unsubscribe = void 0;\n unsubscribe();\n }\n}\n","import { parentEntrySlot } from \"./context.js\";\nimport { maybeUnsubscribe, arrayFromSet } from \"./helpers.js\";\nconst emptySetPool = [];\nconst POOL_TARGET_SIZE = 100;\n// Since this package might be used browsers, we should avoid using the\n// Node built-in assert module.\nfunction assert(condition, optionalMessage) {\n if (!condition) {\n throw new Error(optionalMessage || \"assertion failure\");\n }\n}\nfunction valueIs(a, b) {\n const len = a.length;\n return (\n // Unknown values are not equal to each other.\n len > 0 &&\n // Both values must be ordinary (or both exceptional) to be equal.\n len === b.length &&\n // The underlying value or exception must be the same.\n a[len - 1] === b[len - 1]);\n}\nfunction valueGet(value) {\n switch (value.length) {\n case 0: throw new Error(\"unknown value\");\n case 1: return value[0];\n case 2: throw value[1];\n }\n}\nfunction valueCopy(value) {\n return value.slice(0);\n}\nexport class Entry {\n constructor(fn) {\n this.fn = fn;\n this.parents = new Set();\n this.childValues = new Map();\n // When this Entry has children that are dirty, this property becomes\n // a Set containing other Entry objects, borrowed from emptySetPool.\n // When the set becomes empty, it gets recycled back to emptySetPool.\n this.dirtyChildren = null;\n this.dirty = true;\n this.recomputing = false;\n this.value = [];\n this.deps = null;\n ++Entry.count;\n }\n peek() {\n if (this.value.length === 1 && !mightBeDirty(this)) {\n rememberParent(this);\n return this.value[0];\n }\n }\n // This is the most important method of the Entry API, because it\n // determines whether the cached this.value can be returned immediately,\n // or must be recomputed. The overall performance of the caching system\n // depends on the truth of the following observations: (1) this.dirty is\n // usually false, (2) this.dirtyChildren is usually null/empty, and thus\n // (3) valueGet(this.value) is usually returned without recomputation.\n recompute(args) {\n assert(!this.recomputing, \"already recomputing\");\n rememberParent(this);\n return mightBeDirty(this)\n ? reallyRecompute(this, args)\n : valueGet(this.value);\n }\n setDirty() {\n if (this.dirty)\n return;\n this.dirty = true;\n reportDirty(this);\n // We can go ahead and unsubscribe here, since any further dirty\n // notifications we receive will be redundant, and unsubscribing may\n // free up some resources, e.g. file watchers.\n maybeUnsubscribe(this);\n }\n dispose() {\n this.setDirty();\n // Sever any dependency relationships with our own children, so those\n // children don't retain this parent Entry in their child.parents sets,\n // thereby preventing it from being fully garbage collected.\n forgetChildren(this);\n // Because this entry has been kicked out of the cache (in index.js),\n // we've lost the ability to find out if/when this entry becomes dirty,\n // whether that happens through a subscription, because of a direct call\n // to entry.setDirty(), or because one of its children becomes dirty.\n // Because of this loss of future information, we have to assume the\n // worst (that this entry might have become dirty very soon), so we must\n // immediately mark this entry's parents as dirty. Normally we could\n // just call entry.setDirty() rather than calling parent.setDirty() for\n // each parent, but that would leave this entry in parent.childValues\n // and parent.dirtyChildren, which would prevent the child from being\n // truly forgotten.\n eachParent(this, (parent, child) => {\n parent.setDirty();\n forgetChild(parent, this);\n });\n }\n forget() {\n // The code that creates Entry objects in index.ts will replace this method\n // with one that actually removes the Entry from the cache, which will also\n // trigger the entry.dispose method.\n this.dispose();\n }\n dependOn(dep) {\n dep.add(this);\n if (!this.deps) {\n this.deps = emptySetPool.pop() || new Set();\n }\n this.deps.add(dep);\n }\n forgetDeps() {\n if (this.deps) {\n arrayFromSet(this.deps).forEach(dep => dep.delete(this));\n this.deps.clear();\n emptySetPool.push(this.deps);\n this.deps = null;\n }\n }\n}\nEntry.count = 0;\nfunction rememberParent(child) {\n const parent = parentEntrySlot.getValue();\n if (parent) {\n child.parents.add(parent);\n if (!parent.childValues.has(child)) {\n parent.childValues.set(child, []);\n }\n if (mightBeDirty(child)) {\n reportDirtyChild(parent, child);\n }\n else {\n reportCleanChild(parent, child);\n }\n return parent;\n }\n}\nfunction reallyRecompute(entry, args) {\n forgetChildren(entry);\n // Set entry as the parent entry while calling recomputeNewValue(entry).\n parentEntrySlot.withValue(entry, recomputeNewValue, [entry, args]);\n if (maybeSubscribe(entry, args)) {\n // If we successfully recomputed entry.value and did not fail to\n // (re)subscribe, then this Entry is no longer explicitly dirty.\n setClean(entry);\n }\n return valueGet(entry.value);\n}\nfunction recomputeNewValue(entry, args) {\n entry.recomputing = true;\n const { normalizeResult } = entry;\n let oldValueCopy;\n if (normalizeResult && entry.value.length === 1) {\n oldValueCopy = valueCopy(entry.value);\n }\n // Make entry.value an empty array, representing an unknown value.\n entry.value.length = 0;\n try {\n // If entry.fn succeeds, entry.value will become a normal Value.\n entry.value[0] = entry.fn.apply(null, args);\n // If we have a viable oldValueCopy to compare with the (successfully\n // recomputed) new entry.value, and they are not already === identical, give\n // normalizeResult a chance to pick/choose/reuse parts of oldValueCopy[0]\n // and/or entry.value[0] to determine the final cached entry.value.\n if (normalizeResult && oldValueCopy && !valueIs(oldValueCopy, entry.value)) {\n try {\n entry.value[0] = normalizeResult(entry.value[0], oldValueCopy[0]);\n }\n catch (_a) {\n // If normalizeResult throws, just use the newer value, rather than\n // saving the exception as entry.value[1].\n }\n }\n }\n catch (e) {\n // If entry.fn throws, entry.value will hold that exception.\n entry.value[1] = e;\n }\n // Either way, this line is always reached.\n entry.recomputing = false;\n}\nfunction mightBeDirty(entry) {\n return entry.dirty || !!(entry.dirtyChildren && entry.dirtyChildren.size);\n}\nfunction setClean(entry) {\n entry.dirty = false;\n if (mightBeDirty(entry)) {\n // This Entry may still have dirty children, in which case we can't\n // let our parents know we're clean just yet.\n return;\n }\n reportClean(entry);\n}\nfunction reportDirty(child) {\n eachParent(child, reportDirtyChild);\n}\nfunction reportClean(child) {\n eachParent(child, reportCleanChild);\n}\nfunction eachParent(child, callback) {\n const parentCount = child.parents.size;\n if (parentCount) {\n const parents = arrayFromSet(child.parents);\n for (let i = 0; i < parentCount; ++i) {\n callback(parents[i], child);\n }\n }\n}\n// Let a parent Entry know that one of its children may be dirty.\nfunction reportDirtyChild(parent, child) {\n // Must have called rememberParent(child) before calling\n // reportDirtyChild(parent, child).\n assert(parent.childValues.has(child));\n assert(mightBeDirty(child));\n const parentWasClean = !mightBeDirty(parent);\n if (!parent.dirtyChildren) {\n parent.dirtyChildren = emptySetPool.pop() || new Set;\n }\n else if (parent.dirtyChildren.has(child)) {\n // If we already know this child is dirty, then we must have already\n // informed our own parents that we are dirty, so we can terminate\n // the recursion early.\n return;\n }\n parent.dirtyChildren.add(child);\n // If parent was clean before, it just became (possibly) dirty (according to\n // mightBeDirty), since we just added child to parent.dirtyChildren.\n if (parentWasClean) {\n reportDirty(parent);\n }\n}\n// Let a parent Entry know that one of its children is no longer dirty.\nfunction reportCleanChild(parent, child) {\n // Must have called rememberChild(child) before calling\n // reportCleanChild(parent, child).\n assert(parent.childValues.has(child));\n assert(!mightBeDirty(child));\n const childValue = parent.childValues.get(child);\n if (childValue.length === 0) {\n parent.childValues.set(child, valueCopy(child.value));\n }\n else if (!valueIs(childValue, child.value)) {\n parent.setDirty();\n }\n removeDirtyChild(parent, child);\n if (mightBeDirty(parent)) {\n return;\n }\n reportClean(parent);\n}\nfunction removeDirtyChild(parent, child) {\n const dc = parent.dirtyChildren;\n if (dc) {\n dc.delete(child);\n if (dc.size === 0) {\n if (emptySetPool.length < POOL_TARGET_SIZE) {\n emptySetPool.push(dc);\n }\n parent.dirtyChildren = null;\n }\n }\n}\n// Removes all children from this entry and returns an array of the\n// removed children.\nfunction forgetChildren(parent) {\n if (parent.childValues.size > 0) {\n parent.childValues.forEach((_value, child) => {\n forgetChild(parent, child);\n });\n }\n // Remove this parent Entry from any sets to which it was added by the\n // addToSet method.\n parent.forgetDeps();\n // After we forget all our children, this.dirtyChildren must be empty\n // and therefore must have been reset to null.\n assert(parent.dirtyChildren === null);\n}\nfunction forgetChild(parent, child) {\n child.parents.delete(parent);\n parent.childValues.delete(child);\n removeDirtyChild(parent, child);\n}\nfunction maybeSubscribe(entry, args) {\n if (typeof entry.subscribe === \"function\") {\n try {\n maybeUnsubscribe(entry); // Prevent double subscriptions.\n entry.unsubscribe = entry.subscribe.apply(null, args);\n }\n catch (e) {\n // If this Entry has a subscribe function and it threw an exception\n // (or an unsubscribe function it previously returned now throws),\n // return false to indicate that we were not able to subscribe (or\n // unsubscribe), and this Entry should remain dirty.\n entry.setDirty();\n return false;\n }\n }\n // Returning true indicates either that there was no entry.subscribe\n // function or that it succeeded.\n return true;\n}\n","import { parentEntrySlot } from \"./context.js\";\nimport { hasOwnProperty, maybeUnsubscribe, arrayFromSet, } from \"./helpers.js\";\nconst EntryMethods = {\n setDirty: true,\n dispose: true,\n forget: true, // Fully remove parent Entry from LRU cache and computation graph\n};\nexport function dep(options) {\n const depsByKey = new Map();\n const subscribe = options && options.subscribe;\n function depend(key) {\n const parent = parentEntrySlot.getValue();\n if (parent) {\n let dep = depsByKey.get(key);\n if (!dep) {\n depsByKey.set(key, dep = new Set);\n }\n parent.dependOn(dep);\n if (typeof subscribe === \"function\") {\n maybeUnsubscribe(dep);\n dep.unsubscribe = subscribe(key);\n }\n }\n }\n depend.dirty = function dirty(key, entryMethodName) {\n const dep = depsByKey.get(key);\n if (dep) {\n const m = (entryMethodName &&\n hasOwnProperty.call(EntryMethods, entryMethodName)) ? entryMethodName : \"setDirty\";\n // We have to use arrayFromSet(dep).forEach instead of dep.forEach,\n // because modifying a Set while iterating over it can cause elements in\n // the Set to be removed from the Set before they've been iterated over.\n arrayFromSet(dep).forEach(entry => entry[m]());\n depsByKey.delete(key);\n maybeUnsubscribe(dep);\n }\n };\n return depend;\n}\n","import { Trie } from \"@wry/trie\";\nimport { StrongCache } from \"@wry/caches\";\nimport { Entry } from \"./entry.js\";\nimport { parentEntrySlot } from \"./context.js\";\n// These helper functions are important for making optimism work with\n// asynchronous code. In order to register parent-child dependencies,\n// optimism needs to know about any currently active parent computations.\n// In ordinary synchronous code, the parent context is implicit in the\n// execution stack, but asynchronous code requires some extra guidance in\n// order to propagate context from one async task segment to the next.\nexport { bindContext, noContext, nonReactive, setTimeout, asyncFromGen, Slot, } from \"./context.js\";\n// A lighter-weight dependency, similar to OptimisticWrapperFunction, except\n// with only one argument, no makeCacheKey, no wrapped function to recompute,\n// and no result value. Useful for representing dependency leaves in the graph\n// of computation. Subscriptions are supported.\nexport { dep } from \"./dep.js\";\n// The defaultMakeCacheKey function is remarkably powerful, because it gives\n// a unique object for any shallow-identical list of arguments. If you need\n// to implement a custom makeCacheKey function, you may find it helpful to\n// delegate the final work to defaultMakeCacheKey, which is why we export it\n// here. However, you may want to avoid defaultMakeCacheKey if your runtime\n// does not support WeakMap, or you have the ability to return a string key.\n// In those cases, just write your own custom makeCacheKey functions.\nlet defaultKeyTrie;\nexport function defaultMakeCacheKey(...args) {\n const trie = defaultKeyTrie || (defaultKeyTrie = new Trie(typeof WeakMap === \"function\"));\n return trie.lookupArray(args);\n}\n// If you're paranoid about memory leaks, or you want to avoid using WeakMap\n// under the hood, but you still need the behavior of defaultMakeCacheKey,\n// import this constructor to create your own tries.\nexport { Trie as KeyTrie };\n;\nconst caches = new Set();\nexport function wrap(originalFunction, { max = Math.pow(2, 16), keyArgs, makeCacheKey = defaultMakeCacheKey, normalizeResult, subscribe, cache: cacheOption = StrongCache, } = Object.create(null)) {\n const cache = typeof cacheOption === \"function\"\n ? new cacheOption(max, entry => entry.dispose())\n : cacheOption;\n const optimistic = function () {\n const key = makeCacheKey.apply(null, keyArgs ? keyArgs.apply(null, arguments) : arguments);\n if (key === void 0) {\n return originalFunction.apply(null, arguments);\n }\n let entry = cache.get(key);\n if (!entry) {\n cache.set(key, entry = new Entry(originalFunction));\n entry.normalizeResult = normalizeResult;\n entry.subscribe = subscribe;\n // Give the Entry the ability to trigger cache.delete(key), even though\n // the Entry itself does not know about key or cache.\n entry.forget = () => cache.delete(key);\n }\n const value = entry.recompute(Array.prototype.slice.call(arguments));\n // Move this entry to the front of the least-recently used queue,\n // since we just finished computing its value.\n cache.set(key, entry);\n caches.add(cache);\n // Clean up any excess entries in the cache, but only if there is no\n // active parent entry, meaning we're not in the middle of a larger\n // computation that might be flummoxed by the cleaning.\n if (!parentEntrySlot.hasValue()) {\n caches.forEach(cache => cache.clean());\n caches.clear();\n }\n return value;\n };\n Object.defineProperty(optimistic, \"size\", {\n get: () => cache.size,\n configurable: false,\n enumerable: false,\n });\n Object.freeze(optimistic.options = {\n max,\n keyArgs,\n makeCacheKey,\n normalizeResult,\n subscribe,\n cache,\n });\n function dirtyKey(key) {\n const entry = key && cache.get(key);\n if (entry) {\n entry.setDirty();\n }\n }\n optimistic.dirtyKey = dirtyKey;\n optimistic.dirty = function dirty() {\n dirtyKey(makeCacheKey.apply(null, arguments));\n };\n function peekKey(key) {\n const entry = key && cache.get(key);\n if (entry) {\n return entry.peek();\n }\n }\n optimistic.peekKey = peekKey;\n optimistic.peek = function peek() {\n return peekKey(makeCacheKey.apply(null, arguments));\n };\n function forgetKey(key) {\n return key ? cache.delete(key) : false;\n }\n optimistic.forgetKey = forgetKey;\n optimistic.forget = function forget() {\n return forgetKey(makeCacheKey.apply(null, arguments));\n };\n optimistic.makeCacheKey = makeCacheKey;\n optimistic.getKey = keyArgs ? function getKey() {\n return makeCacheKey.apply(null, keyArgs.apply(null, arguments));\n } : makeCacheKey;\n return Object.freeze(optimistic);\n}\n","const { toString, hasOwnProperty } = Object.prototype;\nconst fnToStr = Function.prototype.toString;\nconst previousComparisons = new Map();\n/**\n * Performs a deep equality check on two JavaScript values, tolerating cycles.\n */\nexport function equal(a, b) {\n try {\n return check(a, b);\n }\n finally {\n previousComparisons.clear();\n }\n}\n// Allow default imports as well.\nexport default equal;\nfunction check(a, b) {\n // If the two values are strictly equal, our job is easy.\n if (a === b) {\n return true;\n }\n // Object.prototype.toString returns a representation of the runtime type of\n // the given value that is considerably more precise than typeof.\n const aTag = toString.call(a);\n const bTag = toString.call(b);\n // If the runtime types of a and b are different, they could maybe be equal\n // under some interpretation of equality, but for simplicity and performance\n // we just return false instead.\n if (aTag !== bTag) {\n return false;\n }\n switch (aTag) {\n case '[object Array]':\n // Arrays are a lot like other objects, but we can cheaply compare their\n // lengths as a short-cut before comparing their elements.\n if (a.length !== b.length)\n return false;\n // Fall through to object case...\n case '[object Object]': {\n if (previouslyCompared(a, b))\n return true;\n const aKeys = definedKeys(a);\n const bKeys = definedKeys(b);\n // If `a` and `b` have a different number of enumerable keys, they\n // must be different.\n const keyCount = aKeys.length;\n if (keyCount !== bKeys.length)\n return false;\n // Now make sure they have the same keys.\n for (let k = 0; k < keyCount; ++k) {\n if (!hasOwnProperty.call(b, aKeys[k])) {\n return false;\n }\n }\n // Finally, check deep equality of all child properties.\n for (let k = 0; k < keyCount; ++k) {\n const key = aKeys[k];\n if (!check(a[key], b[key])) {\n return false;\n }\n }\n return true;\n }\n case '[object Error]':\n return a.name === b.name && a.message === b.message;\n case '[object Number]':\n // Handle NaN, which is !== itself.\n if (a !== a)\n return b !== b;\n // Fall through to shared +a === +b case...\n case '[object Boolean]':\n case '[object Date]':\n return +a === +b;\n case '[object RegExp]':\n case '[object String]':\n return a == `${b}`;\n case '[object Map]':\n case '[object Set]': {\n if (a.size !== b.size)\n return false;\n if (previouslyCompared(a, b))\n return true;\n const aIterator = a.entries();\n const isMap = aTag === '[object Map]';\n while (true) {\n const info = aIterator.next();\n if (info.done)\n break;\n // If a instanceof Set, aValue === aKey.\n const [aKey, aValue] = info.value;\n // So this works the same way for both Set and Map.\n if (!b.has(aKey)) {\n return false;\n }\n // However, we care about deep equality of values only when dealing\n // with Map structures.\n if (isMap && !check(aValue, b.get(aKey))) {\n return false;\n }\n }\n return true;\n }\n case '[object Uint16Array]':\n case '[object Uint8Array]': // Buffer, in Node.js.\n case '[object Uint32Array]':\n case '[object Int32Array]':\n case '[object Int8Array]':\n case '[object Int16Array]':\n case '[object ArrayBuffer]':\n // DataView doesn't need these conversions, but the equality check is\n // otherwise the same.\n a = new Uint8Array(a);\n b = new Uint8Array(b);\n // Fall through...\n case '[object DataView]': {\n let len = a.byteLength;\n if (len === b.byteLength) {\n while (len-- && a[len] === b[len]) {\n // Keep looping as long as the bytes are equal.\n }\n }\n return len === -1;\n }\n case '[object AsyncFunction]':\n case '[object GeneratorFunction]':\n case '[object AsyncGeneratorFunction]':\n case '[object Function]': {\n const aCode = fnToStr.call(a);\n if (aCode !== fnToStr.call(b)) {\n return false;\n }\n // We consider non-native functions equal if they have the same code\n // (native functions require === because their code is censored).\n // Note that this behavior is not entirely sound, since !== function\n // objects with the same code can behave differently depending on\n // their closure scope. However, any function can behave differently\n // depending on the values of its input arguments (including this)\n // and its calling context (including its closure scope), even\n // though the function object is === to itself; and it is entirely\n // possible for functions that are not === to behave exactly the\n // same under all conceivable circumstances. Because none of these\n // factors are statically decidable in JavaScript, JS function\n // equality is not well-defined. This ambiguity allows us to\n // consider the best possible heuristic among various imperfect\n // options, and equating non-native functions that have the same\n // code has enormous practical benefits, such as when comparing\n // functions that are repeatedly passed as fresh function\n // expressions within objects that are otherwise deeply equal. Since\n // any function created from the same syntactic expression (in the\n // same code location) will always stringify to the same code\n // according to fnToStr.call, we can reasonably expect these\n // repeatedly passed function expressions to have the same code, and\n // thus behave \"the same\" (with all the caveats mentioned above),\n // even though the runtime function objects are !== to one another.\n return !endsWith(aCode, nativeCodeSuffix);\n }\n }\n // Otherwise the values are not equal.\n return false;\n}\nfunction definedKeys(obj) {\n // Remember that the second argument to Array.prototype.filter will be\n // used as `this` within the callback function.\n return Object.keys(obj).filter(isDefinedKey, obj);\n}\nfunction isDefinedKey(key) {\n return this[key] !== void 0;\n}\nconst nativeCodeSuffix = \"{ [native code] }\";\nfunction endsWith(full, suffix) {\n const fromIndex = full.length - suffix.length;\n return fromIndex >= 0 &&\n full.indexOf(suffix, fromIndex) === fromIndex;\n}\nfunction previouslyCompared(a, b) {\n // Though cyclic references can make an object graph appear infinite from the\n // perspective of a depth-first traversal, the graph still contains a finite\n // number of distinct object references. We use the previousComparisons cache\n // to avoid comparing the same pair of object references more than once, which\n // guarantees termination (even if we end up comparing every object in one\n // graph to every object in the other graph, which is extremely unlikely),\n // while still allowing weird isomorphic structures (like rings with different\n // lengths) a chance to pass the equality test.\n let bSet = previousComparisons.get(a);\n if (bSet) {\n // Return true here because we can be sure false will be returned somewhere\n // else if the objects are not equivalent.\n if (bSet.has(b))\n return true;\n }\n else {\n previousComparisons.set(a, bSet = new Set);\n }\n bSet.add(b);\n return false;\n}\n","import { __assign, __rest } from \"tslib\";\nimport { wrap } from \"optimism\";\nimport { cacheSizes, getFragmentQueryDocument, } from \"../../utilities/index.js\";\nimport { WeakCache } from \"@wry/caches\";\nimport { getApolloCacheMemoryInternals } from \"../../utilities/caching/getMemoryInternals.js\";\nvar ApolloCache = /** @class */ (function () {\n function ApolloCache() {\n this.assumeImmutableResults = false;\n // Make sure we compute the same (===) fragment query document every\n // time we receive the same fragment in readFragment.\n this.getFragmentDoc = wrap(getFragmentQueryDocument, {\n max: cacheSizes[\"cache.fragmentQueryDocuments\"] ||\n 1000 /* defaultCacheSizes[\"cache.fragmentQueryDocuments\"] */,\n cache: WeakCache,\n });\n }\n // Transactional API\n // The batch method is intended to replace/subsume both performTransaction\n // and recordOptimisticTransaction, but performTransaction came first, so we\n // provide a default batch implementation that's just another way of calling\n // performTransaction. Subclasses of ApolloCache (such as InMemoryCache) can\n // override the batch method to do more interesting things with its options.\n ApolloCache.prototype.batch = function (options) {\n var _this = this;\n var optimisticId = typeof options.optimistic === \"string\" ? options.optimistic\n : options.optimistic === false ? null\n : void 0;\n var updateResult;\n this.performTransaction(function () { return (updateResult = options.update(_this)); }, optimisticId);\n return updateResult;\n };\n ApolloCache.prototype.recordOptimisticTransaction = function (transaction, optimisticId) {\n this.performTransaction(transaction, optimisticId);\n };\n // Optional API\n // Called once per input document, allowing the cache to make static changes\n // to the query, such as adding __typename fields.\n ApolloCache.prototype.transformDocument = function (document) {\n return document;\n };\n // Called before each ApolloLink request, allowing the cache to make dynamic\n // changes to the query, such as filling in missing fragment definitions.\n ApolloCache.prototype.transformForLink = function (document) {\n return document;\n };\n ApolloCache.prototype.identify = function (object) {\n return;\n };\n ApolloCache.prototype.gc = function () {\n return [];\n };\n ApolloCache.prototype.modify = function (options) {\n return false;\n };\n // DataProxy API\n ApolloCache.prototype.readQuery = function (options, optimistic) {\n if (optimistic === void 0) { optimistic = !!options.optimistic; }\n return this.read(__assign(__assign({}, options), { rootId: options.id || \"ROOT_QUERY\", optimistic: optimistic }));\n };\n ApolloCache.prototype.readFragment = function (options, optimistic) {\n if (optimistic === void 0) { optimistic = !!options.optimistic; }\n return this.read(__assign(__assign({}, options), { query: this.getFragmentDoc(options.fragment, options.fragmentName), rootId: options.id, optimistic: optimistic }));\n };\n ApolloCache.prototype.writeQuery = function (_a) {\n var id = _a.id, data = _a.data, options = __rest(_a, [\"id\", \"data\"]);\n return this.write(Object.assign(options, {\n dataId: id || \"ROOT_QUERY\",\n result: data,\n }));\n };\n ApolloCache.prototype.writeFragment = function (_a) {\n var id = _a.id, data = _a.data, fragment = _a.fragment, fragmentName = _a.fragmentName, options = __rest(_a, [\"id\", \"data\", \"fragment\", \"fragmentName\"]);\n return this.write(Object.assign(options, {\n query: this.getFragmentDoc(fragment, fragmentName),\n dataId: id,\n result: data,\n }));\n };\n ApolloCache.prototype.updateQuery = function (options, update) {\n return this.batch({\n update: function (cache) {\n var value = cache.readQuery(options);\n var data = update(value);\n if (data === void 0 || data === null)\n return value;\n cache.writeQuery(__assign(__assign({}, options), { data: data }));\n return data;\n },\n });\n };\n ApolloCache.prototype.updateFragment = function (options, update) {\n return this.batch({\n update: function (cache) {\n var value = cache.readFragment(options);\n var data = update(value);\n if (data === void 0 || data === null)\n return value;\n cache.writeFragment(__assign(__assign({}, options), { data: data }));\n return data;\n },\n });\n };\n return ApolloCache;\n}());\nexport { ApolloCache };\nif (globalThis.__DEV__ !== false) {\n ApolloCache.prototype.getMemoryInternals = getApolloCacheMemoryInternals;\n}\n","import { __extends } from \"tslib\";\nvar MissingFieldError = /** @class */ (function (_super) {\n __extends(MissingFieldError, _super);\n function MissingFieldError(message, path, query, variables) {\n var _a;\n // 'Error' breaks prototype chain here\n var _this = _super.call(this, message) || this;\n _this.message = message;\n _this.path = path;\n _this.query = query;\n _this.variables = variables;\n if (Array.isArray(_this.path)) {\n _this.missing = _this.message;\n for (var i = _this.path.length - 1; i >= 0; --i) {\n _this.missing = (_a = {}, _a[_this.path[i]] = _this.missing, _a);\n }\n }\n else {\n _this.missing = _this.path;\n }\n // We're not using `Object.setPrototypeOf` here as it isn't fully supported\n // on Android (see issue #3236).\n _this.__proto__ = MissingFieldError.prototype;\n return _this;\n }\n return MissingFieldError;\n}(Error));\nexport { MissingFieldError };\n","// A [trie](https://en.wikipedia.org/wiki/Trie) data structure that holds\n// object keys weakly, yet can also hold non-object keys, unlike the\n// native `WeakMap`.\n// If no makeData function is supplied, the looked-up data will be an empty,\n// null-prototype Object.\nconst defaultMakeData = () => Object.create(null);\n// Useful for processing arguments objects as well as arrays.\nconst { forEach, slice } = Array.prototype;\nconst { hasOwnProperty } = Object.prototype;\nexport class Trie {\n constructor(weakness = true, makeData = defaultMakeData) {\n this.weakness = weakness;\n this.makeData = makeData;\n }\n lookup() {\n return this.lookupArray(arguments);\n }\n lookupArray(array) {\n let node = this;\n forEach.call(array, key => node = node.getChildTrie(key));\n return hasOwnProperty.call(node, \"data\")\n ? node.data\n : node.data = this.makeData(slice.call(array));\n }\n peek() {\n return this.peekArray(arguments);\n }\n peekArray(array) {\n let node = this;\n for (let i = 0, len = array.length; node && i < len; ++i) {\n const map = node.mapFor(array[i], false);\n node = map && map.get(array[i]);\n }\n return node && node.data;\n }\n remove() {\n return this.removeArray(arguments);\n }\n removeArray(array) {\n let data;\n if (array.length) {\n const head = array[0];\n const map = this.mapFor(head, false);\n const child = map && map.get(head);\n if (child) {\n data = child.removeArray(slice.call(array, 1));\n if (!child.data && !child.weak && !(child.strong && child.strong.size)) {\n map.delete(head);\n }\n }\n }\n else {\n data = this.data;\n delete this.data;\n }\n return data;\n }\n getChildTrie(key) {\n const map = this.mapFor(key, true);\n let child = map.get(key);\n if (!child)\n map.set(key, child = new Trie(this.weakness, this.makeData));\n return child;\n }\n mapFor(key, create) {\n return this.weakness && isObjRef(key)\n ? this.weak || (create ? this.weak = new WeakMap : void 0)\n : this.strong || (create ? this.strong = new Map : void 0);\n }\n}\nfunction isObjRef(value) {\n switch (typeof value) {\n case \"object\":\n if (value === null)\n break;\n // Fall through to return true...\n case \"function\":\n return true;\n }\n return false;\n}\n","import { maybe } from \"../globals/index.js\";\nexport var canUseWeakMap = typeof WeakMap === \"function\" &&\n !maybe(function () { return navigator.product == \"ReactNative\" && !global.HermesInternal; });\nexport var canUseWeakSet = typeof WeakSet === \"function\";\nexport var canUseSymbol = typeof Symbol === \"function\" && typeof Symbol.for === \"function\";\nexport var canUseAsyncIteratorSymbol = canUseSymbol && Symbol.asyncIterator;\nexport var canUseDOM = typeof maybe(function () { return window.document.createElement; }) === \"function\";\nvar usingJSDOM = \n// Following advice found in this comment from @domenic (maintainer of jsdom):\n// https://github.com/jsdom/jsdom/issues/1537#issuecomment-229405327\n//\n// Since we control the version of Jest and jsdom used when running Apollo\n// Client tests, and that version is recent enought to include \" jsdom/x.y.z\"\n// at the end of the user agent string, I believe this case is all we need to\n// check. Testing for \"Node.js\" was recommended for backwards compatibility\n// with older version of jsdom, but we don't have that problem.\nmaybe(function () { return navigator.userAgent.indexOf(\"jsdom\") >= 0; }) || false;\n// Our tests should all continue to pass if we remove this !usingJSDOM\n// condition, thereby allowing useLayoutEffect when using jsdom. Unfortunately,\n// if we allow useLayoutEffect, then useSyncExternalStore generates many\n// warnings about useLayoutEffect doing nothing on the server. While these\n// warnings are harmless, this !usingJSDOM condition seems to be the best way to\n// prevent them (i.e. skipping useLayoutEffect when using jsdom).\nexport var canUseLayoutEffect = canUseDOM && !usingJSDOM;\n","import { Trie } from \"@wry/trie\";\nimport { canUseWeakMap, canUseWeakSet } from \"../common/canUse.js\";\nimport { checkDocument } from \"./getFromAST.js\";\nimport { invariant } from \"../globals/index.js\";\nimport { WeakCache } from \"@wry/caches\";\nimport { wrap } from \"optimism\";\nimport { cacheSizes } from \"../caching/index.js\";\nfunction identity(document) {\n return document;\n}\nvar DocumentTransform = /** @class */ (function () {\n function DocumentTransform(transform, options) {\n if (options === void 0) { options = Object.create(null); }\n this.resultCache = canUseWeakSet ? new WeakSet() : new Set();\n this.transform = transform;\n if (options.getCacheKey) {\n // Override default `getCacheKey` function, which returns [document].\n this.getCacheKey = options.getCacheKey;\n }\n this.cached = options.cache !== false;\n this.resetCache();\n }\n // This default implementation of getCacheKey can be overridden by providing\n // options.getCacheKey to the DocumentTransform constructor. In general, a\n // getCacheKey function may either return an array of keys (often including\n // the document) to be used as a cache key, or undefined to indicate the\n // transform for this document should not be cached.\n DocumentTransform.prototype.getCacheKey = function (document) {\n return [document];\n };\n DocumentTransform.identity = function () {\n // No need to cache this transform since it just returns the document\n // unchanged. This should save a bit of memory that would otherwise be\n // needed to populate the `documentCache` of this transform.\n return new DocumentTransform(identity, { cache: false });\n };\n DocumentTransform.split = function (predicate, left, right) {\n if (right === void 0) { right = DocumentTransform.identity(); }\n return Object.assign(new DocumentTransform(function (document) {\n var documentTransform = predicate(document) ? left : right;\n return documentTransform.transformDocument(document);\n }, \n // Reasonably assume both `left` and `right` transforms handle their own caching\n { cache: false }), { left: left, right: right });\n };\n /**\n * Resets the internal cache of this transform, if it has one.\n */\n DocumentTransform.prototype.resetCache = function () {\n var _this = this;\n if (this.cached) {\n var stableCacheKeys_1 = new Trie(canUseWeakMap);\n this.performWork = wrap(DocumentTransform.prototype.performWork.bind(this), {\n makeCacheKey: function (document) {\n var cacheKeys = _this.getCacheKey(document);\n if (cacheKeys) {\n invariant(Array.isArray(cacheKeys), 66);\n return stableCacheKeys_1.lookupArray(cacheKeys);\n }\n },\n max: cacheSizes[\"documentTransform.cache\"],\n cache: (WeakCache),\n });\n }\n };\n DocumentTransform.prototype.performWork = function (document) {\n checkDocument(document);\n return this.transform(document);\n };\n DocumentTransform.prototype.transformDocument = function (document) {\n // If a user passes an already transformed result back to this function,\n // immediately return it.\n if (this.resultCache.has(document)) {\n return document;\n }\n var transformedDocument = this.performWork(document);\n this.resultCache.add(transformedDocument);\n return transformedDocument;\n };\n DocumentTransform.prototype.concat = function (otherTransform) {\n var _this = this;\n return Object.assign(new DocumentTransform(function (document) {\n return otherTransform.transformDocument(_this.transformDocument(document));\n }, \n // Reasonably assume both transforms handle their own caching\n { cache: false }), {\n left: this,\n right: otherTransform,\n });\n };\n return DocumentTransform;\n}());\nexport { DocumentTransform };\n","/**\n * The set of allowed kind values for AST nodes.\n */\nvar Kind;\n\n(function (Kind) {\n Kind['NAME'] = 'Name';\n Kind['DOCUMENT'] = 'Document';\n Kind['OPERATION_DEFINITION'] = 'OperationDefinition';\n Kind['VARIABLE_DEFINITION'] = 'VariableDefinition';\n Kind['SELECTION_SET'] = 'SelectionSet';\n Kind['FIELD'] = 'Field';\n Kind['ARGUMENT'] = 'Argument';\n Kind['FRAGMENT_SPREAD'] = 'FragmentSpread';\n Kind['INLINE_FRAGMENT'] = 'InlineFragment';\n Kind['FRAGMENT_DEFINITION'] = 'FragmentDefinition';\n Kind['VARIABLE'] = 'Variable';\n Kind['INT'] = 'IntValue';\n Kind['FLOAT'] = 'FloatValue';\n Kind['STRING'] = 'StringValue';\n Kind['BOOLEAN'] = 'BooleanValue';\n Kind['NULL'] = 'NullValue';\n Kind['ENUM'] = 'EnumValue';\n Kind['LIST'] = 'ListValue';\n Kind['OBJECT'] = 'ObjectValue';\n Kind['OBJECT_FIELD'] = 'ObjectField';\n Kind['DIRECTIVE'] = 'Directive';\n Kind['NAMED_TYPE'] = 'NamedType';\n Kind['LIST_TYPE'] = 'ListType';\n Kind['NON_NULL_TYPE'] = 'NonNullType';\n Kind['SCHEMA_DEFINITION'] = 'SchemaDefinition';\n Kind['OPERATION_TYPE_DEFINITION'] = 'OperationTypeDefinition';\n Kind['SCALAR_TYPE_DEFINITION'] = 'ScalarTypeDefinition';\n Kind['OBJECT_TYPE_DEFINITION'] = 'ObjectTypeDefinition';\n Kind['FIELD_DEFINITION'] = 'FieldDefinition';\n Kind['INPUT_VALUE_DEFINITION'] = 'InputValueDefinition';\n Kind['INTERFACE_TYPE_DEFINITION'] = 'InterfaceTypeDefinition';\n Kind['UNION_TYPE_DEFINITION'] = 'UnionTypeDefinition';\n Kind['ENUM_TYPE_DEFINITION'] = 'EnumTypeDefinition';\n Kind['ENUM_VALUE_DEFINITION'] = 'EnumValueDefinition';\n Kind['INPUT_OBJECT_TYPE_DEFINITION'] = 'InputObjectTypeDefinition';\n Kind['DIRECTIVE_DEFINITION'] = 'DirectiveDefinition';\n Kind['SCHEMA_EXTENSION'] = 'SchemaExtension';\n Kind['SCALAR_TYPE_EXTENSION'] = 'ScalarTypeExtension';\n Kind['OBJECT_TYPE_EXTENSION'] = 'ObjectTypeExtension';\n Kind['INTERFACE_TYPE_EXTENSION'] = 'InterfaceTypeExtension';\n Kind['UNION_TYPE_EXTENSION'] = 'UnionTypeExtension';\n Kind['ENUM_TYPE_EXTENSION'] = 'EnumTypeExtension';\n Kind['INPUT_OBJECT_TYPE_EXTENSION'] = 'InputObjectTypeExtension';\n})(Kind || (Kind = {}));\n\nexport { Kind };\n/**\n * The enum type representing the possible kind values of AST nodes.\n *\n * @deprecated Please use `Kind`. Will be remove in v17.\n */\n","export function devAssert(condition, message) {\n const booleanCondition = Boolean(condition);\n\n if (!booleanCondition) {\n throw new Error(message);\n }\n}\n","const MAX_ARRAY_LENGTH = 10;\nconst MAX_RECURSIVE_DEPTH = 2;\n/**\n * Used to print values in error messages.\n */\n\nexport function inspect(value) {\n return formatValue(value, []);\n}\n\nfunction formatValue(value, seenValues) {\n switch (typeof value) {\n case 'string':\n return JSON.stringify(value);\n\n case 'function':\n return value.name ? `[function ${value.name}]` : '[function]';\n\n case 'object':\n return formatObjectValue(value, seenValues);\n\n default:\n return String(value);\n }\n}\n\nfunction formatObjectValue(value, previouslySeenValues) {\n if (value === null) {\n return 'null';\n }\n\n if (previouslySeenValues.includes(value)) {\n return '[Circular]';\n }\n\n const seenValues = [...previouslySeenValues, value];\n\n if (isJSONable(value)) {\n const jsonValue = value.toJSON(); // check for infinite recursion\n\n if (jsonValue !== value) {\n return typeof jsonValue === 'string'\n ? jsonValue\n : formatValue(jsonValue, seenValues);\n }\n } else if (Array.isArray(value)) {\n return formatArray(value, seenValues);\n }\n\n return formatObject(value, seenValues);\n}\n\nfunction isJSONable(value) {\n return typeof value.toJSON === 'function';\n}\n\nfunction formatObject(object, seenValues) {\n const entries = Object.entries(object);\n\n if (entries.length === 0) {\n return '{}';\n }\n\n if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n return '[' + getObjectTag(object) + ']';\n }\n\n const properties = entries.map(\n ([key, value]) => key + ': ' + formatValue(value, seenValues),\n );\n return '{ ' + properties.join(', ') + ' }';\n}\n\nfunction formatArray(array, seenValues) {\n if (array.length === 0) {\n return '[]';\n }\n\n if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n return '[Array]';\n }\n\n const len = Math.min(MAX_ARRAY_LENGTH, array.length);\n const remaining = array.length - len;\n const items = [];\n\n for (let i = 0; i < len; ++i) {\n items.push(formatValue(array[i], seenValues));\n }\n\n if (remaining === 1) {\n items.push('... 1 more item');\n } else if (remaining > 1) {\n items.push(`... ${remaining} more items`);\n }\n\n return '[' + items.join(', ') + ']';\n}\n\nfunction getObjectTag(object) {\n const tag = Object.prototype.toString\n .call(object)\n .replace(/^\\[object /, '')\n .replace(/]$/, '');\n\n if (tag === 'Object' && typeof object.constructor === 'function') {\n const name = object.constructor.name;\n\n if (typeof name === 'string' && name !== '') {\n return name;\n }\n }\n\n return tag;\n}\n","/**\n * Contains a range of UTF-8 character offsets and token references that\n * identify the region of the source from which the AST derived.\n */\nexport class Location {\n /**\n * The character offset at which this Node begins.\n */\n\n /**\n * The character offset at which this Node ends.\n */\n\n /**\n * The Token at which this Node begins.\n */\n\n /**\n * The Token at which this Node ends.\n */\n\n /**\n * The Source document the AST represents.\n */\n constructor(startToken, endToken, source) {\n this.start = startToken.start;\n this.end = endToken.end;\n this.startToken = startToken;\n this.endToken = endToken;\n this.source = source;\n }\n\n get [Symbol.toStringTag]() {\n return 'Location';\n }\n\n toJSON() {\n return {\n start: this.start,\n end: this.end,\n };\n }\n}\n/**\n * Represents a range of characters represented by a lexical token\n * within a Source.\n */\n\nexport class Token {\n /**\n * The kind of Token.\n */\n\n /**\n * The character offset at which this Node begins.\n */\n\n /**\n * The character offset at which this Node ends.\n */\n\n /**\n * The 1-indexed line number on which this Token appears.\n */\n\n /**\n * The 1-indexed column number at which this Token begins.\n */\n\n /**\n * For non-punctuation tokens, represents the interpreted value of the token.\n *\n * Note: is undefined for punctuation tokens, but typed as string for\n * convenience in the parser.\n */\n\n /**\n * Tokens exist as nodes in a double-linked-list amongst all tokens\n * including ignored tokens. is always the first node and \n * the last.\n */\n constructor(kind, start, end, line, column, value) {\n this.kind = kind;\n this.start = start;\n this.end = end;\n this.line = line;\n this.column = column; // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\n this.value = value;\n this.prev = null;\n this.next = null;\n }\n\n get [Symbol.toStringTag]() {\n return 'Token';\n }\n\n toJSON() {\n return {\n kind: this.kind,\n value: this.value,\n line: this.line,\n column: this.column,\n };\n }\n}\n/**\n * The list of all possible AST node types.\n */\n\n/**\n * @internal\n */\nexport const QueryDocumentKeys = {\n Name: [],\n Document: ['definitions'],\n OperationDefinition: [\n 'name',\n 'variableDefinitions',\n 'directives',\n 'selectionSet',\n ],\n VariableDefinition: ['variable', 'type', 'defaultValue', 'directives'],\n Variable: ['name'],\n SelectionSet: ['selections'],\n Field: ['alias', 'name', 'arguments', 'directives', 'selectionSet'],\n Argument: ['name', 'value'],\n FragmentSpread: ['name', 'directives'],\n InlineFragment: ['typeCondition', 'directives', 'selectionSet'],\n FragmentDefinition: [\n 'name', // Note: fragment variable definitions are deprecated and will removed in v17.0.0\n 'variableDefinitions',\n 'typeCondition',\n 'directives',\n 'selectionSet',\n ],\n IntValue: [],\n FloatValue: [],\n StringValue: [],\n BooleanValue: [],\n NullValue: [],\n EnumValue: [],\n ListValue: ['values'],\n ObjectValue: ['fields'],\n ObjectField: ['name', 'value'],\n Directive: ['name', 'arguments'],\n NamedType: ['name'],\n ListType: ['type'],\n NonNullType: ['type'],\n SchemaDefinition: ['description', 'directives', 'operationTypes'],\n OperationTypeDefinition: ['type'],\n ScalarTypeDefinition: ['description', 'name', 'directives'],\n ObjectTypeDefinition: [\n 'description',\n 'name',\n 'interfaces',\n 'directives',\n 'fields',\n ],\n FieldDefinition: ['description', 'name', 'arguments', 'type', 'directives'],\n InputValueDefinition: [\n 'description',\n 'name',\n 'type',\n 'defaultValue',\n 'directives',\n ],\n InterfaceTypeDefinition: [\n 'description',\n 'name',\n 'interfaces',\n 'directives',\n 'fields',\n ],\n UnionTypeDefinition: ['description', 'name', 'directives', 'types'],\n EnumTypeDefinition: ['description', 'name', 'directives', 'values'],\n EnumValueDefinition: ['description', 'name', 'directives'],\n InputObjectTypeDefinition: ['description', 'name', 'directives', 'fields'],\n DirectiveDefinition: ['description', 'name', 'arguments', 'locations'],\n SchemaExtension: ['directives', 'operationTypes'],\n ScalarTypeExtension: ['name', 'directives'],\n ObjectTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n InterfaceTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n UnionTypeExtension: ['name', 'directives', 'types'],\n EnumTypeExtension: ['name', 'directives', 'values'],\n InputObjectTypeExtension: ['name', 'directives', 'fields'],\n};\nconst kindValues = new Set(Object.keys(QueryDocumentKeys));\n/**\n * @internal\n */\n\nexport function isNode(maybeNode) {\n const maybeKind =\n maybeNode === null || maybeNode === void 0 ? void 0 : maybeNode.kind;\n return typeof maybeKind === 'string' && kindValues.has(maybeKind);\n}\n/** Name */\n\nvar OperationTypeNode;\n\n(function (OperationTypeNode) {\n OperationTypeNode['QUERY'] = 'query';\n OperationTypeNode['MUTATION'] = 'mutation';\n OperationTypeNode['SUBSCRIPTION'] = 'subscription';\n})(OperationTypeNode || (OperationTypeNode = {}));\n\nexport { OperationTypeNode };\n","import { devAssert } from '../jsutils/devAssert.mjs';\nimport { inspect } from '../jsutils/inspect.mjs';\nimport { isNode, QueryDocumentKeys } from './ast.mjs';\nimport { Kind } from './kinds.mjs';\n/**\n * A visitor is provided to visit, it contains the collection of\n * relevant functions to be called during the visitor's traversal.\n */\n\nexport const BREAK = Object.freeze({});\n/**\n * visit() will walk through an AST using a depth-first traversal, calling\n * the visitor's enter function at each node in the traversal, and calling the\n * leave function after visiting that node and all of its child nodes.\n *\n * By returning different values from the enter and leave functions, the\n * behavior of the visitor can be altered, including skipping over a sub-tree of\n * the AST (by returning false), editing the AST by returning a value or null\n * to remove the value, or to stop the whole traversal by returning BREAK.\n *\n * When using visit() to edit an AST, the original AST will not be modified, and\n * a new version of the AST with the changes applied will be returned from the\n * visit function.\n *\n * ```ts\n * const editedAST = visit(ast, {\n * enter(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: skip visiting this node\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * },\n * leave(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: no action\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * }\n * });\n * ```\n *\n * Alternatively to providing enter() and leave() functions, a visitor can\n * instead provide functions named the same as the kinds of AST nodes, or\n * enter/leave visitors at a named key, leading to three permutations of the\n * visitor API:\n *\n * 1) Named visitors triggered when entering a node of a specific kind.\n *\n * ```ts\n * visit(ast, {\n * Kind(node) {\n * // enter the \"Kind\" node\n * }\n * })\n * ```\n *\n * 2) Named visitors that trigger upon entering and leaving a node of a specific kind.\n *\n * ```ts\n * visit(ast, {\n * Kind: {\n * enter(node) {\n * // enter the \"Kind\" node\n * }\n * leave(node) {\n * // leave the \"Kind\" node\n * }\n * }\n * })\n * ```\n *\n * 3) Generic visitors that trigger upon entering and leaving any node.\n *\n * ```ts\n * visit(ast, {\n * enter(node) {\n * // enter any node\n * },\n * leave(node) {\n * // leave any node\n * }\n * })\n * ```\n */\n\nexport function visit(root, visitor, visitorKeys = QueryDocumentKeys) {\n const enterLeaveMap = new Map();\n\n for (const kind of Object.values(Kind)) {\n enterLeaveMap.set(kind, getEnterLeaveForKind(visitor, kind));\n }\n /* eslint-disable no-undef-init */\n\n let stack = undefined;\n let inArray = Array.isArray(root);\n let keys = [root];\n let index = -1;\n let edits = [];\n let node = root;\n let key = undefined;\n let parent = undefined;\n const path = [];\n const ancestors = [];\n /* eslint-enable no-undef-init */\n\n do {\n index++;\n const isLeaving = index === keys.length;\n const isEdited = isLeaving && edits.length !== 0;\n\n if (isLeaving) {\n key = ancestors.length === 0 ? undefined : path[path.length - 1];\n node = parent;\n parent = ancestors.pop();\n\n if (isEdited) {\n if (inArray) {\n node = node.slice();\n let editOffset = 0;\n\n for (const [editKey, editValue] of edits) {\n const arrayKey = editKey - editOffset;\n\n if (editValue === null) {\n node.splice(arrayKey, 1);\n editOffset++;\n } else {\n node[arrayKey] = editValue;\n }\n }\n } else {\n node = Object.defineProperties(\n {},\n Object.getOwnPropertyDescriptors(node),\n );\n\n for (const [editKey, editValue] of edits) {\n node[editKey] = editValue;\n }\n }\n }\n\n index = stack.index;\n keys = stack.keys;\n edits = stack.edits;\n inArray = stack.inArray;\n stack = stack.prev;\n } else if (parent) {\n key = inArray ? index : keys[index];\n node = parent[key];\n\n if (node === null || node === undefined) {\n continue;\n }\n\n path.push(key);\n }\n\n let result;\n\n if (!Array.isArray(node)) {\n var _enterLeaveMap$get, _enterLeaveMap$get2;\n\n isNode(node) || devAssert(false, `Invalid AST Node: ${inspect(node)}.`);\n const visitFn = isLeaving\n ? (_enterLeaveMap$get = enterLeaveMap.get(node.kind)) === null ||\n _enterLeaveMap$get === void 0\n ? void 0\n : _enterLeaveMap$get.leave\n : (_enterLeaveMap$get2 = enterLeaveMap.get(node.kind)) === null ||\n _enterLeaveMap$get2 === void 0\n ? void 0\n : _enterLeaveMap$get2.enter;\n result =\n visitFn === null || visitFn === void 0\n ? void 0\n : visitFn.call(visitor, node, key, parent, path, ancestors);\n\n if (result === BREAK) {\n break;\n }\n\n if (result === false) {\n if (!isLeaving) {\n path.pop();\n continue;\n }\n } else if (result !== undefined) {\n edits.push([key, result]);\n\n if (!isLeaving) {\n if (isNode(result)) {\n node = result;\n } else {\n path.pop();\n continue;\n }\n }\n }\n }\n\n if (result === undefined && isEdited) {\n edits.push([key, node]);\n }\n\n if (isLeaving) {\n path.pop();\n } else {\n var _node$kind;\n\n stack = {\n inArray,\n index,\n keys,\n edits,\n prev: stack,\n };\n inArray = Array.isArray(node);\n keys = inArray\n ? node\n : (_node$kind = visitorKeys[node.kind]) !== null &&\n _node$kind !== void 0\n ? _node$kind\n : [];\n index = -1;\n edits = [];\n\n if (parent) {\n ancestors.push(parent);\n }\n\n parent = node;\n }\n } while (stack !== undefined);\n\n if (edits.length !== 0) {\n // New root\n return edits[edits.length - 1][1];\n }\n\n return root;\n}\n/**\n * Creates a new visitor instance which delegates to many visitors to run in\n * parallel. Each visitor will be visited for each node before moving on.\n *\n * If a prior visitor edits a node, no following visitors will see that node.\n */\n\nexport function visitInParallel(visitors) {\n const skipping = new Array(visitors.length).fill(null);\n const mergedVisitor = Object.create(null);\n\n for (const kind of Object.values(Kind)) {\n let hasVisitor = false;\n const enterList = new Array(visitors.length).fill(undefined);\n const leaveList = new Array(visitors.length).fill(undefined);\n\n for (let i = 0; i < visitors.length; ++i) {\n const { enter, leave } = getEnterLeaveForKind(visitors[i], kind);\n hasVisitor || (hasVisitor = enter != null || leave != null);\n enterList[i] = enter;\n leaveList[i] = leave;\n }\n\n if (!hasVisitor) {\n continue;\n }\n\n const mergedEnterLeave = {\n enter(...args) {\n const node = args[0];\n\n for (let i = 0; i < visitors.length; i++) {\n if (skipping[i] === null) {\n var _enterList$i;\n\n const result =\n (_enterList$i = enterList[i]) === null || _enterList$i === void 0\n ? void 0\n : _enterList$i.apply(visitors[i], args);\n\n if (result === false) {\n skipping[i] = node;\n } else if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined) {\n return result;\n }\n }\n }\n },\n\n leave(...args) {\n const node = args[0];\n\n for (let i = 0; i < visitors.length; i++) {\n if (skipping[i] === null) {\n var _leaveList$i;\n\n const result =\n (_leaveList$i = leaveList[i]) === null || _leaveList$i === void 0\n ? void 0\n : _leaveList$i.apply(visitors[i], args);\n\n if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined && result !== false) {\n return result;\n }\n } else if (skipping[i] === node) {\n skipping[i] = null;\n }\n }\n },\n };\n mergedVisitor[kind] = mergedEnterLeave;\n }\n\n return mergedVisitor;\n}\n/**\n * Given a visitor instance and a node kind, return EnterLeaveVisitor for that kind.\n */\n\nexport function getEnterLeaveForKind(visitor, kind) {\n const kindVisitor = visitor[kind];\n\n if (typeof kindVisitor === 'object') {\n // { Kind: { enter() {}, leave() {} } }\n return kindVisitor;\n } else if (typeof kindVisitor === 'function') {\n // { Kind() {} }\n return {\n enter: kindVisitor,\n leave: undefined,\n };\n } // { enter() {}, leave() {} }\n\n return {\n enter: visitor.enter,\n leave: visitor.leave,\n };\n}\n/**\n * Given a visitor instance, if it is leaving or not, and a node kind, return\n * the function the visitor runtime should call.\n *\n * @deprecated Please use `getEnterLeaveForKind` instead. Will be removed in v17\n */\n\n/* c8 ignore next 8 */\n\nexport function getVisitFn(visitor, kind, isLeaving) {\n const { enter, leave } = getEnterLeaveForKind(visitor, kind);\n return isLeaving ? leave : enter;\n}\n","// A version of Array.isArray that works better with readonly arrays.\nexport var isArray = Array.isArray;\nexport function isNonEmptyArray(value) {\n return Array.isArray(value) && value.length > 0;\n}\n","import { __assign, __spreadArray } from \"tslib\";\nimport { invariant } from \"../globals/index.js\";\nimport { visit, Kind } from \"graphql\";\nimport { checkDocument, getOperationDefinition, getFragmentDefinition, getFragmentDefinitions, getMainDefinition, } from \"./getFromAST.js\";\nimport { isField } from \"./storeUtils.js\";\nimport { createFragmentMap } from \"./fragments.js\";\nimport { isArray, isNonEmptyArray } from \"../common/arrays.js\";\nvar TYPENAME_FIELD = {\n kind: Kind.FIELD,\n name: {\n kind: Kind.NAME,\n value: \"__typename\",\n },\n};\nfunction isEmpty(op, fragmentMap) {\n return (!op ||\n op.selectionSet.selections.every(function (selection) {\n return selection.kind === Kind.FRAGMENT_SPREAD &&\n isEmpty(fragmentMap[selection.name.value], fragmentMap);\n }));\n}\nfunction nullIfDocIsEmpty(doc) {\n return (isEmpty(getOperationDefinition(doc) || getFragmentDefinition(doc), createFragmentMap(getFragmentDefinitions(doc)))) ?\n null\n : doc;\n}\nfunction getDirectiveMatcher(configs) {\n var names = new Map();\n var tests = new Map();\n configs.forEach(function (directive) {\n if (directive) {\n if (directive.name) {\n names.set(directive.name, directive);\n }\n else if (directive.test) {\n tests.set(directive.test, directive);\n }\n }\n });\n return function (directive) {\n var config = names.get(directive.name.value);\n if (!config && tests.size) {\n tests.forEach(function (testConfig, test) {\n if (test(directive)) {\n config = testConfig;\n }\n });\n }\n return config;\n };\n}\nfunction makeInUseGetterFunction(defaultKey) {\n var map = new Map();\n return function inUseGetterFunction(key) {\n if (key === void 0) { key = defaultKey; }\n var inUse = map.get(key);\n if (!inUse) {\n map.set(key, (inUse = {\n // Variable and fragment spread names used directly within this\n // operation or fragment definition, as identified by key. These sets\n // will be populated during the first traversal of the document in\n // removeDirectivesFromDocument below.\n variables: new Set(),\n fragmentSpreads: new Set(),\n }));\n }\n return inUse;\n };\n}\nexport function removeDirectivesFromDocument(directives, doc) {\n checkDocument(doc);\n // Passing empty strings to makeInUseGetterFunction means we handle anonymous\n // operations as if their names were \"\". Anonymous fragment definitions are\n // not supposed to be possible, but the same default naming strategy seems\n // appropriate for that case as well.\n var getInUseByOperationName = makeInUseGetterFunction(\"\");\n var getInUseByFragmentName = makeInUseGetterFunction(\"\");\n var getInUse = function (ancestors) {\n for (var p = 0, ancestor = void 0; p < ancestors.length && (ancestor = ancestors[p]); ++p) {\n if (isArray(ancestor))\n continue;\n if (ancestor.kind === Kind.OPERATION_DEFINITION) {\n // If an operation is anonymous, we use the empty string as its key.\n return getInUseByOperationName(ancestor.name && ancestor.name.value);\n }\n if (ancestor.kind === Kind.FRAGMENT_DEFINITION) {\n return getInUseByFragmentName(ancestor.name.value);\n }\n }\n globalThis.__DEV__ !== false && invariant.error(83);\n return null;\n };\n var operationCount = 0;\n for (var i = doc.definitions.length - 1; i >= 0; --i) {\n if (doc.definitions[i].kind === Kind.OPERATION_DEFINITION) {\n ++operationCount;\n }\n }\n var directiveMatcher = getDirectiveMatcher(directives);\n var shouldRemoveField = function (nodeDirectives) {\n return isNonEmptyArray(nodeDirectives) &&\n nodeDirectives\n .map(directiveMatcher)\n .some(function (config) { return config && config.remove; });\n };\n var originalFragmentDefsByPath = new Map();\n // Any time the first traversal of the document below makes a change like\n // removing a fragment (by returning null), this variable should be set to\n // true. Once it becomes true, it should never be set to false again. If this\n // variable remains false throughout the traversal, then we can return the\n // original doc immediately without any modifications.\n var firstVisitMadeChanges = false;\n var fieldOrInlineFragmentVisitor = {\n enter: function (node) {\n if (shouldRemoveField(node.directives)) {\n firstVisitMadeChanges = true;\n return null;\n }\n },\n };\n var docWithoutDirectiveSubtrees = visit(doc, {\n // These two AST node types share the same implementation, defined above.\n Field: fieldOrInlineFragmentVisitor,\n InlineFragment: fieldOrInlineFragmentVisitor,\n VariableDefinition: {\n enter: function () {\n // VariableDefinition nodes do not count as variables in use, though\n // they do contain Variable nodes that might be visited below. To avoid\n // counting variable declarations as usages, we skip visiting the\n // contents of this VariableDefinition node by returning false.\n return false;\n },\n },\n Variable: {\n enter: function (node, _key, _parent, _path, ancestors) {\n var inUse = getInUse(ancestors);\n if (inUse) {\n inUse.variables.add(node.name.value);\n }\n },\n },\n FragmentSpread: {\n enter: function (node, _key, _parent, _path, ancestors) {\n if (shouldRemoveField(node.directives)) {\n firstVisitMadeChanges = true;\n return null;\n }\n var inUse = getInUse(ancestors);\n if (inUse) {\n inUse.fragmentSpreads.add(node.name.value);\n }\n // We might like to remove this FragmentSpread by returning null here if\n // the corresponding FragmentDefinition node is also going to be removed\n // by the logic below, but we can't control the relative order of those\n // events, so we have to postpone the removal of dangling FragmentSpread\n // nodes until after the current visit of the document has finished.\n },\n },\n FragmentDefinition: {\n enter: function (node, _key, _parent, path) {\n originalFragmentDefsByPath.set(JSON.stringify(path), node);\n },\n leave: function (node, _key, _parent, path) {\n var originalNode = originalFragmentDefsByPath.get(JSON.stringify(path));\n if (node === originalNode) {\n // If the FragmentNode received by this leave function is identical to\n // the one received by the corresponding enter function (above), then\n // the visitor must not have made any changes within this\n // FragmentDefinition node. This fragment definition may still be\n // removed if there are no ...spread references to it, but it won't be\n // removed just because it has only a __typename field.\n return node;\n }\n if (\n // This logic applies only if the document contains one or more\n // operations, since removing all fragments from a document containing\n // only fragments makes the document useless.\n operationCount > 0 &&\n node.selectionSet.selections.every(function (selection) {\n return selection.kind === Kind.FIELD &&\n selection.name.value === \"__typename\";\n })) {\n // This is a somewhat opinionated choice: if a FragmentDefinition ends\n // up having no fields other than __typename, we remove the whole\n // fragment definition, and later prune ...spread references to it.\n getInUseByFragmentName(node.name.value).removed = true;\n firstVisitMadeChanges = true;\n return null;\n }\n },\n },\n Directive: {\n leave: function (node) {\n // If a matching directive is found, remove the directive itself. Note\n // that this does not remove the target (field, argument, etc) of the\n // directive, but only the directive itself.\n if (directiveMatcher(node)) {\n firstVisitMadeChanges = true;\n return null;\n }\n },\n },\n });\n if (!firstVisitMadeChanges) {\n // If our first pass did not change anything about the document, then there\n // is no cleanup we need to do, and we can return the original doc.\n return doc;\n }\n // Utility for making sure inUse.transitiveVars is recursively populated.\n // Because this logic assumes inUse.fragmentSpreads has been completely\n // populated and inUse.removed has been set if appropriate,\n // populateTransitiveVars must be called after that information has been\n // collected by the first traversal of the document.\n var populateTransitiveVars = function (inUse) {\n if (!inUse.transitiveVars) {\n inUse.transitiveVars = new Set(inUse.variables);\n if (!inUse.removed) {\n inUse.fragmentSpreads.forEach(function (childFragmentName) {\n populateTransitiveVars(getInUseByFragmentName(childFragmentName)).transitiveVars.forEach(function (varName) {\n inUse.transitiveVars.add(varName);\n });\n });\n }\n }\n return inUse;\n };\n // Since we've been keeping track of fragment spreads used by particular\n // operations and fragment definitions, we now need to compute the set of all\n // spreads used (transitively) by any operations in the document.\n var allFragmentNamesUsed = new Set();\n docWithoutDirectiveSubtrees.definitions.forEach(function (def) {\n if (def.kind === Kind.OPERATION_DEFINITION) {\n populateTransitiveVars(getInUseByOperationName(def.name && def.name.value)).fragmentSpreads.forEach(function (childFragmentName) {\n allFragmentNamesUsed.add(childFragmentName);\n });\n }\n else if (def.kind === Kind.FRAGMENT_DEFINITION &&\n // If there are no operations in the document, then all fragment\n // definitions count as usages of their own fragment names. This heuristic\n // prevents accidentally removing all fragment definitions from the\n // document just because it contains no operations that use the fragments.\n operationCount === 0 &&\n !getInUseByFragmentName(def.name.value).removed) {\n allFragmentNamesUsed.add(def.name.value);\n }\n });\n // Now that we have added all fragment spreads used by operations to the\n // allFragmentNamesUsed set, we can complete the set by transitively adding\n // all fragment spreads used by those fragments, and so on.\n allFragmentNamesUsed.forEach(function (fragmentName) {\n // Once all the childFragmentName strings added here have been seen already,\n // the top-level allFragmentNamesUsed.forEach loop will terminate.\n populateTransitiveVars(getInUseByFragmentName(fragmentName)).fragmentSpreads.forEach(function (childFragmentName) {\n allFragmentNamesUsed.add(childFragmentName);\n });\n });\n var fragmentWillBeRemoved = function (fragmentName) {\n return !!(\n // A fragment definition will be removed if there are no spreads that refer\n // to it, or the fragment was explicitly removed because it had no fields\n // other than __typename.\n (!allFragmentNamesUsed.has(fragmentName) ||\n getInUseByFragmentName(fragmentName).removed));\n };\n var enterVisitor = {\n enter: function (node) {\n if (fragmentWillBeRemoved(node.name.value)) {\n return null;\n }\n },\n };\n return nullIfDocIsEmpty(visit(docWithoutDirectiveSubtrees, {\n // If the fragment is going to be removed, then leaving any dangling\n // FragmentSpread nodes with the same name would be a mistake.\n FragmentSpread: enterVisitor,\n // This is where the fragment definition is actually removed.\n FragmentDefinition: enterVisitor,\n OperationDefinition: {\n leave: function (node) {\n // Upon leaving each operation in the depth-first AST traversal, prune\n // any variables that are declared by the operation but unused within.\n if (node.variableDefinitions) {\n var usedVariableNames_1 = populateTransitiveVars(\n // If an operation is anonymous, we use the empty string as its key.\n getInUseByOperationName(node.name && node.name.value)).transitiveVars;\n // According to the GraphQL spec, all variables declared by an\n // operation must either be used by that operation or used by some\n // fragment included transitively into that operation:\n // https://spec.graphql.org/draft/#sec-All-Variables-Used\n //\n // To stay on the right side of this validation rule, if/when we\n // remove the last $var references from an operation or its fragments,\n // we must also remove the corresponding $var declaration from the\n // enclosing operation. This pruning applies only to operations and\n // not fragment definitions, at the moment. Fragments may be able to\n // declare variables eventually, but today they can only consume them.\n if (usedVariableNames_1.size < node.variableDefinitions.length) {\n return __assign(__assign({}, node), { variableDefinitions: node.variableDefinitions.filter(function (varDef) {\n return usedVariableNames_1.has(varDef.variable.name.value);\n }) });\n }\n }\n },\n },\n }));\n}\nexport var addTypenameToDocument = Object.assign(function (doc) {\n return visit(doc, {\n SelectionSet: {\n enter: function (node, _key, parent) {\n // Don't add __typename to OperationDefinitions.\n if (parent &&\n parent.kind ===\n Kind.OPERATION_DEFINITION) {\n return;\n }\n // No changes if no selections.\n var selections = node.selections;\n if (!selections) {\n return;\n }\n // If selections already have a __typename, or are part of an\n // introspection query, do nothing.\n var skip = selections.some(function (selection) {\n return (isField(selection) &&\n (selection.name.value === \"__typename\" ||\n selection.name.value.lastIndexOf(\"__\", 0) === 0));\n });\n if (skip) {\n return;\n }\n // If this SelectionSet is @export-ed as an input variable, it should\n // not have a __typename field (see issue #4691).\n var field = parent;\n if (isField(field) &&\n field.directives &&\n field.directives.some(function (d) { return d.name.value === \"export\"; })) {\n return;\n }\n // Create and return a new SelectionSet with a __typename Field.\n return __assign(__assign({}, node), { selections: __spreadArray(__spreadArray([], selections, true), [TYPENAME_FIELD], false) });\n },\n },\n });\n}, {\n added: function (field) {\n return field === TYPENAME_FIELD;\n },\n});\nvar connectionRemoveConfig = {\n test: function (directive) {\n var willRemove = directive.name.value === \"connection\";\n if (willRemove) {\n if (!directive.arguments ||\n !directive.arguments.some(function (arg) { return arg.name.value === \"key\"; })) {\n globalThis.__DEV__ !== false && invariant.warn(84);\n }\n }\n return willRemove;\n },\n};\nexport function removeConnectionDirectiveFromDocument(doc) {\n return removeDirectivesFromDocument([connectionRemoveConfig], checkDocument(doc));\n}\nfunction hasDirectivesInSelectionSet(directives, selectionSet, nestedCheck) {\n if (nestedCheck === void 0) { nestedCheck = true; }\n return (!!selectionSet &&\n selectionSet.selections &&\n selectionSet.selections.some(function (selection) {\n return hasDirectivesInSelection(directives, selection, nestedCheck);\n }));\n}\nfunction hasDirectivesInSelection(directives, selection, nestedCheck) {\n if (nestedCheck === void 0) { nestedCheck = true; }\n if (!isField(selection)) {\n return true;\n }\n if (!selection.directives) {\n return false;\n }\n return (selection.directives.some(getDirectiveMatcher(directives)) ||\n (nestedCheck &&\n hasDirectivesInSelectionSet(directives, selection.selectionSet, nestedCheck)));\n}\nfunction getArgumentMatcher(config) {\n return function argumentMatcher(argument) {\n return config.some(function (aConfig) {\n return argument.value &&\n argument.value.kind === Kind.VARIABLE &&\n argument.value.name &&\n (aConfig.name === argument.value.name.value ||\n (aConfig.test && aConfig.test(argument)));\n });\n };\n}\nexport function removeArgumentsFromDocument(config, doc) {\n var argMatcher = getArgumentMatcher(config);\n return nullIfDocIsEmpty(visit(doc, {\n OperationDefinition: {\n enter: function (node) {\n return __assign(__assign({}, node), { \n // Remove matching top level variables definitions.\n variableDefinitions: node.variableDefinitions ?\n node.variableDefinitions.filter(function (varDef) {\n return !config.some(function (arg) { return arg.name === varDef.variable.name.value; });\n })\n : [] });\n },\n },\n Field: {\n enter: function (node) {\n // If `remove` is set to true for an argument, and an argument match\n // is found for a field, remove the field as well.\n var shouldRemoveField = config.some(function (argConfig) { return argConfig.remove; });\n if (shouldRemoveField) {\n var argMatchCount_1 = 0;\n if (node.arguments) {\n node.arguments.forEach(function (arg) {\n if (argMatcher(arg)) {\n argMatchCount_1 += 1;\n }\n });\n }\n if (argMatchCount_1 === 1) {\n return null;\n }\n }\n },\n },\n Argument: {\n enter: function (node) {\n // Remove all matching arguments.\n if (argMatcher(node)) {\n return null;\n }\n },\n },\n }));\n}\nexport function removeFragmentSpreadFromDocument(config, doc) {\n function enter(node) {\n if (config.some(function (def) { return def.name === node.name.value; })) {\n return null;\n }\n }\n return nullIfDocIsEmpty(visit(doc, {\n FragmentSpread: { enter: enter },\n FragmentDefinition: { enter: enter },\n }));\n}\n// If the incoming document is a query, return it as is. Otherwise, build a\n// new document containing a query operation based on the selection set\n// of the previous main operation.\nexport function buildQueryFromSelectionSet(document) {\n var definition = getMainDefinition(document);\n var definitionOperation = definition.operation;\n if (definitionOperation === \"query\") {\n // Already a query, so return the existing document.\n return document;\n }\n // Build a new query using the selection set of the main operation.\n var modifiedDoc = visit(document, {\n OperationDefinition: {\n enter: function (node) {\n return __assign(__assign({}, node), { operation: \"query\" });\n },\n },\n });\n return modifiedDoc;\n}\n// Remove fields / selection sets that include an @client directive.\nexport function removeClientSetsFromDocument(document) {\n checkDocument(document);\n var modifiedDoc = removeDirectivesFromDocument([\n {\n test: function (directive) { return directive.name.value === \"client\"; },\n remove: true,\n },\n ], document);\n return modifiedDoc;\n}\n","/**\n * ```\n * WhiteSpace ::\n * - \"Horizontal Tab (U+0009)\"\n * - \"Space (U+0020)\"\n * ```\n * @internal\n */\nexport function isWhiteSpace(code) {\n return code === 0x0009 || code === 0x0020;\n}\n/**\n * ```\n * Digit :: one of\n * - `0` `1` `2` `3` `4` `5` `6` `7` `8` `9`\n * ```\n * @internal\n */\n\nexport function isDigit(code) {\n return code >= 0x0030 && code <= 0x0039;\n}\n/**\n * ```\n * Letter :: one of\n * - `A` `B` `C` `D` `E` `F` `G` `H` `I` `J` `K` `L` `M`\n * - `N` `O` `P` `Q` `R` `S` `T` `U` `V` `W` `X` `Y` `Z`\n * - `a` `b` `c` `d` `e` `f` `g` `h` `i` `j` `k` `l` `m`\n * - `n` `o` `p` `q` `r` `s` `t` `u` `v` `w` `x` `y` `z`\n * ```\n * @internal\n */\n\nexport function isLetter(code) {\n return (\n (code >= 0x0061 && code <= 0x007a) || // A-Z\n (code >= 0x0041 && code <= 0x005a) // a-z\n );\n}\n/**\n * ```\n * NameStart ::\n * - Letter\n * - `_`\n * ```\n * @internal\n */\n\nexport function isNameStart(code) {\n return isLetter(code) || code === 0x005f;\n}\n/**\n * ```\n * NameContinue ::\n * - Letter\n * - Digit\n * - `_`\n * ```\n * @internal\n */\n\nexport function isNameContinue(code) {\n return isLetter(code) || isDigit(code) || code === 0x005f;\n}\n","import { isWhiteSpace } from './characterClasses.mjs';\n/**\n * Produces the value of a block string from its parsed raw value, similar to\n * CoffeeScript's block string, Python's docstring trim or Ruby's strip_heredoc.\n *\n * This implements the GraphQL spec's BlockStringValue() static algorithm.\n *\n * @internal\n */\n\nexport function dedentBlockStringLines(lines) {\n var _firstNonEmptyLine2;\n\n let commonIndent = Number.MAX_SAFE_INTEGER;\n let firstNonEmptyLine = null;\n let lastNonEmptyLine = -1;\n\n for (let i = 0; i < lines.length; ++i) {\n var _firstNonEmptyLine;\n\n const line = lines[i];\n const indent = leadingWhitespace(line);\n\n if (indent === line.length) {\n continue; // skip empty lines\n }\n\n firstNonEmptyLine =\n (_firstNonEmptyLine = firstNonEmptyLine) !== null &&\n _firstNonEmptyLine !== void 0\n ? _firstNonEmptyLine\n : i;\n lastNonEmptyLine = i;\n\n if (i !== 0 && indent < commonIndent) {\n commonIndent = indent;\n }\n }\n\n return lines // Remove common indentation from all lines but first.\n .map((line, i) => (i === 0 ? line : line.slice(commonIndent))) // Remove leading and trailing blank lines.\n .slice(\n (_firstNonEmptyLine2 = firstNonEmptyLine) !== null &&\n _firstNonEmptyLine2 !== void 0\n ? _firstNonEmptyLine2\n : 0,\n lastNonEmptyLine + 1,\n );\n}\n\nfunction leadingWhitespace(str) {\n let i = 0;\n\n while (i < str.length && isWhiteSpace(str.charCodeAt(i))) {\n ++i;\n }\n\n return i;\n}\n/**\n * @internal\n */\n\nexport function isPrintableAsBlockString(value) {\n if (value === '') {\n return true; // empty string is printable\n }\n\n let isEmptyLine = true;\n let hasIndent = false;\n let hasCommonIndent = true;\n let seenNonEmptyLine = false;\n\n for (let i = 0; i < value.length; ++i) {\n switch (value.codePointAt(i)) {\n case 0x0000:\n case 0x0001:\n case 0x0002:\n case 0x0003:\n case 0x0004:\n case 0x0005:\n case 0x0006:\n case 0x0007:\n case 0x0008:\n case 0x000b:\n case 0x000c:\n case 0x000e:\n case 0x000f:\n return false;\n // Has non-printable characters\n\n case 0x000d:\n // \\r\n return false;\n // Has \\r or \\r\\n which will be replaced as \\n\n\n case 10:\n // \\n\n if (isEmptyLine && !seenNonEmptyLine) {\n return false; // Has leading new line\n }\n\n seenNonEmptyLine = true;\n isEmptyLine = true;\n hasIndent = false;\n break;\n\n case 9: // \\t\n\n case 32:\n // \n hasIndent || (hasIndent = isEmptyLine);\n break;\n\n default:\n hasCommonIndent && (hasCommonIndent = hasIndent);\n isEmptyLine = false;\n }\n }\n\n if (isEmptyLine) {\n return false; // Has trailing empty lines\n }\n\n if (hasCommonIndent && seenNonEmptyLine) {\n return false; // Has internal indent\n }\n\n return true;\n}\n/**\n * Print a block string in the indented block form by adding a leading and\n * trailing blank line. However, if a block string starts with whitespace and is\n * a single-line, adding a leading blank line would strip that whitespace.\n *\n * @internal\n */\n\nexport function printBlockString(value, options) {\n const escapedValue = value.replace(/\"\"\"/g, '\\\\\"\"\"'); // Expand a block string's raw value into independent lines.\n\n const lines = escapedValue.split(/\\r\\n|[\\n\\r]/g);\n const isSingleLine = lines.length === 1; // If common indentation is found we can fix some of those cases by adding leading new line\n\n const forceLeadingNewLine =\n lines.length > 1 &&\n lines\n .slice(1)\n .every((line) => line.length === 0 || isWhiteSpace(line.charCodeAt(0))); // Trailing triple quotes just looks confusing but doesn't force trailing new line\n\n const hasTrailingTripleQuotes = escapedValue.endsWith('\\\\\"\"\"'); // Trailing quote (single or double) or slash forces trailing new line\n\n const hasTrailingQuote = value.endsWith('\"') && !hasTrailingTripleQuotes;\n const hasTrailingSlash = value.endsWith('\\\\');\n const forceTrailingNewline = hasTrailingQuote || hasTrailingSlash;\n const printAsMultipleLines =\n !(options !== null && options !== void 0 && options.minimize) && // add leading and trailing new lines only if it improves readability\n (!isSingleLine ||\n value.length > 70 ||\n forceTrailingNewline ||\n forceLeadingNewLine ||\n hasTrailingTripleQuotes);\n let result = ''; // Format a multi-line block quote to account for leading space.\n\n const skipLeadingNewLine = isSingleLine && isWhiteSpace(value.charCodeAt(0));\n\n if ((printAsMultipleLines && !skipLeadingNewLine) || forceLeadingNewLine) {\n result += '\\n';\n }\n\n result += escapedValue;\n\n if (printAsMultipleLines || forceTrailingNewline) {\n result += '\\n';\n }\n\n return '\"\"\"' + result + '\"\"\"';\n}\n","/**\n * Prints a string as a GraphQL StringValue literal. Replaces control characters\n * and excluded characters (\" U+0022 and \\\\ U+005C) with escape sequences.\n */\nexport function printString(str) {\n return `\"${str.replace(escapedRegExp, escapedReplacer)}\"`;\n} // eslint-disable-next-line no-control-regex\n\nconst escapedRegExp = /[\\x00-\\x1f\\x22\\x5c\\x7f-\\x9f]/g;\n\nfunction escapedReplacer(str) {\n return escapeSequences[str.charCodeAt(0)];\n} // prettier-ignore\n\nconst escapeSequences = [\n '\\\\u0000',\n '\\\\u0001',\n '\\\\u0002',\n '\\\\u0003',\n '\\\\u0004',\n '\\\\u0005',\n '\\\\u0006',\n '\\\\u0007',\n '\\\\b',\n '\\\\t',\n '\\\\n',\n '\\\\u000B',\n '\\\\f',\n '\\\\r',\n '\\\\u000E',\n '\\\\u000F',\n '\\\\u0010',\n '\\\\u0011',\n '\\\\u0012',\n '\\\\u0013',\n '\\\\u0014',\n '\\\\u0015',\n '\\\\u0016',\n '\\\\u0017',\n '\\\\u0018',\n '\\\\u0019',\n '\\\\u001A',\n '\\\\u001B',\n '\\\\u001C',\n '\\\\u001D',\n '\\\\u001E',\n '\\\\u001F',\n '',\n '',\n '\\\\\"',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '', // 2F\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '', // 3F\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '', // 4F\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '\\\\\\\\',\n '',\n '',\n '', // 5F\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '', // 6F\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '\\\\u007F',\n '\\\\u0080',\n '\\\\u0081',\n '\\\\u0082',\n '\\\\u0083',\n '\\\\u0084',\n '\\\\u0085',\n '\\\\u0086',\n '\\\\u0087',\n '\\\\u0088',\n '\\\\u0089',\n '\\\\u008A',\n '\\\\u008B',\n '\\\\u008C',\n '\\\\u008D',\n '\\\\u008E',\n '\\\\u008F',\n '\\\\u0090',\n '\\\\u0091',\n '\\\\u0092',\n '\\\\u0093',\n '\\\\u0094',\n '\\\\u0095',\n '\\\\u0096',\n '\\\\u0097',\n '\\\\u0098',\n '\\\\u0099',\n '\\\\u009A',\n '\\\\u009B',\n '\\\\u009C',\n '\\\\u009D',\n '\\\\u009E',\n '\\\\u009F',\n];\n","import { printBlockString } from './blockString.mjs';\nimport { printString } from './printString.mjs';\nimport { visit } from './visitor.mjs';\n/**\n * Converts an AST into a string, using one set of reasonable\n * formatting rules.\n */\n\nexport function print(ast) {\n return visit(ast, printDocASTReducer);\n}\nconst MAX_LINE_LENGTH = 80;\nconst printDocASTReducer = {\n Name: {\n leave: (node) => node.value,\n },\n Variable: {\n leave: (node) => '$' + node.name,\n },\n // Document\n Document: {\n leave: (node) => join(node.definitions, '\\n\\n'),\n },\n OperationDefinition: {\n leave(node) {\n const varDefs = wrap('(', join(node.variableDefinitions, ', '), ')');\n const prefix = join(\n [\n node.operation,\n join([node.name, varDefs]),\n join(node.directives, ' '),\n ],\n ' ',\n ); // Anonymous queries with no directives or variable definitions can use\n // the query short form.\n\n return (prefix === 'query' ? '' : prefix + ' ') + node.selectionSet;\n },\n },\n VariableDefinition: {\n leave: ({ variable, type, defaultValue, directives }) =>\n variable +\n ': ' +\n type +\n wrap(' = ', defaultValue) +\n wrap(' ', join(directives, ' ')),\n },\n SelectionSet: {\n leave: ({ selections }) => block(selections),\n },\n Field: {\n leave({ alias, name, arguments: args, directives, selectionSet }) {\n const prefix = wrap('', alias, ': ') + name;\n let argsLine = prefix + wrap('(', join(args, ', '), ')');\n\n if (argsLine.length > MAX_LINE_LENGTH) {\n argsLine = prefix + wrap('(\\n', indent(join(args, '\\n')), '\\n)');\n }\n\n return join([argsLine, join(directives, ' '), selectionSet], ' ');\n },\n },\n Argument: {\n leave: ({ name, value }) => name + ': ' + value,\n },\n // Fragments\n FragmentSpread: {\n leave: ({ name, directives }) =>\n '...' + name + wrap(' ', join(directives, ' ')),\n },\n InlineFragment: {\n leave: ({ typeCondition, directives, selectionSet }) =>\n join(\n [\n '...',\n wrap('on ', typeCondition),\n join(directives, ' '),\n selectionSet,\n ],\n ' ',\n ),\n },\n FragmentDefinition: {\n leave: (\n { name, typeCondition, variableDefinitions, directives, selectionSet }, // Note: fragment variable definitions are experimental and may be changed\n ) =>\n // or removed in the future.\n `fragment ${name}${wrap('(', join(variableDefinitions, ', '), ')')} ` +\n `on ${typeCondition} ${wrap('', join(directives, ' '), ' ')}` +\n selectionSet,\n },\n // Value\n IntValue: {\n leave: ({ value }) => value,\n },\n FloatValue: {\n leave: ({ value }) => value,\n },\n StringValue: {\n leave: ({ value, block: isBlockString }) =>\n isBlockString ? printBlockString(value) : printString(value),\n },\n BooleanValue: {\n leave: ({ value }) => (value ? 'true' : 'false'),\n },\n NullValue: {\n leave: () => 'null',\n },\n EnumValue: {\n leave: ({ value }) => value,\n },\n ListValue: {\n leave: ({ values }) => '[' + join(values, ', ') + ']',\n },\n ObjectValue: {\n leave: ({ fields }) => '{' + join(fields, ', ') + '}',\n },\n ObjectField: {\n leave: ({ name, value }) => name + ': ' + value,\n },\n // Directive\n Directive: {\n leave: ({ name, arguments: args }) =>\n '@' + name + wrap('(', join(args, ', '), ')'),\n },\n // Type\n NamedType: {\n leave: ({ name }) => name,\n },\n ListType: {\n leave: ({ type }) => '[' + type + ']',\n },\n NonNullType: {\n leave: ({ type }) => type + '!',\n },\n // Type System Definitions\n SchemaDefinition: {\n leave: ({ description, directives, operationTypes }) =>\n wrap('', description, '\\n') +\n join(['schema', join(directives, ' '), block(operationTypes)], ' '),\n },\n OperationTypeDefinition: {\n leave: ({ operation, type }) => operation + ': ' + type,\n },\n ScalarTypeDefinition: {\n leave: ({ description, name, directives }) =>\n wrap('', description, '\\n') +\n join(['scalar', name, join(directives, ' ')], ' '),\n },\n ObjectTypeDefinition: {\n leave: ({ description, name, interfaces, directives, fields }) =>\n wrap('', description, '\\n') +\n join(\n [\n 'type',\n name,\n wrap('implements ', join(interfaces, ' & ')),\n join(directives, ' '),\n block(fields),\n ],\n ' ',\n ),\n },\n FieldDefinition: {\n leave: ({ description, name, arguments: args, type, directives }) =>\n wrap('', description, '\\n') +\n name +\n (hasMultilineItems(args)\n ? wrap('(\\n', indent(join(args, '\\n')), '\\n)')\n : wrap('(', join(args, ', '), ')')) +\n ': ' +\n type +\n wrap(' ', join(directives, ' ')),\n },\n InputValueDefinition: {\n leave: ({ description, name, type, defaultValue, directives }) =>\n wrap('', description, '\\n') +\n join(\n [name + ': ' + type, wrap('= ', defaultValue), join(directives, ' ')],\n ' ',\n ),\n },\n InterfaceTypeDefinition: {\n leave: ({ description, name, interfaces, directives, fields }) =>\n wrap('', description, '\\n') +\n join(\n [\n 'interface',\n name,\n wrap('implements ', join(interfaces, ' & ')),\n join(directives, ' '),\n block(fields),\n ],\n ' ',\n ),\n },\n UnionTypeDefinition: {\n leave: ({ description, name, directives, types }) =>\n wrap('', description, '\\n') +\n join(\n ['union', name, join(directives, ' '), wrap('= ', join(types, ' | '))],\n ' ',\n ),\n },\n EnumTypeDefinition: {\n leave: ({ description, name, directives, values }) =>\n wrap('', description, '\\n') +\n join(['enum', name, join(directives, ' '), block(values)], ' '),\n },\n EnumValueDefinition: {\n leave: ({ description, name, directives }) =>\n wrap('', description, '\\n') + join([name, join(directives, ' ')], ' '),\n },\n InputObjectTypeDefinition: {\n leave: ({ description, name, directives, fields }) =>\n wrap('', description, '\\n') +\n join(['input', name, join(directives, ' '), block(fields)], ' '),\n },\n DirectiveDefinition: {\n leave: ({ description, name, arguments: args, repeatable, locations }) =>\n wrap('', description, '\\n') +\n 'directive @' +\n name +\n (hasMultilineItems(args)\n ? wrap('(\\n', indent(join(args, '\\n')), '\\n)')\n : wrap('(', join(args, ', '), ')')) +\n (repeatable ? ' repeatable' : '') +\n ' on ' +\n join(locations, ' | '),\n },\n SchemaExtension: {\n leave: ({ directives, operationTypes }) =>\n join(\n ['extend schema', join(directives, ' '), block(operationTypes)],\n ' ',\n ),\n },\n ScalarTypeExtension: {\n leave: ({ name, directives }) =>\n join(['extend scalar', name, join(directives, ' ')], ' '),\n },\n ObjectTypeExtension: {\n leave: ({ name, interfaces, directives, fields }) =>\n join(\n [\n 'extend type',\n name,\n wrap('implements ', join(interfaces, ' & ')),\n join(directives, ' '),\n block(fields),\n ],\n ' ',\n ),\n },\n InterfaceTypeExtension: {\n leave: ({ name, interfaces, directives, fields }) =>\n join(\n [\n 'extend interface',\n name,\n wrap('implements ', join(interfaces, ' & ')),\n join(directives, ' '),\n block(fields),\n ],\n ' ',\n ),\n },\n UnionTypeExtension: {\n leave: ({ name, directives, types }) =>\n join(\n [\n 'extend union',\n name,\n join(directives, ' '),\n wrap('= ', join(types, ' | ')),\n ],\n ' ',\n ),\n },\n EnumTypeExtension: {\n leave: ({ name, directives, values }) =>\n join(['extend enum', name, join(directives, ' '), block(values)], ' '),\n },\n InputObjectTypeExtension: {\n leave: ({ name, directives, fields }) =>\n join(['extend input', name, join(directives, ' '), block(fields)], ' '),\n },\n};\n/**\n * Given maybeArray, print an empty string if it is null or empty, otherwise\n * print all items together separated by separator if provided\n */\n\nfunction join(maybeArray, separator = '') {\n var _maybeArray$filter$jo;\n\n return (_maybeArray$filter$jo =\n maybeArray === null || maybeArray === void 0\n ? void 0\n : maybeArray.filter((x) => x).join(separator)) !== null &&\n _maybeArray$filter$jo !== void 0\n ? _maybeArray$filter$jo\n : '';\n}\n/**\n * Given array, print each item on its own line, wrapped in an indented `{ }` block.\n */\n\nfunction block(array) {\n return wrap('{\\n', indent(join(array, '\\n')), '\\n}');\n}\n/**\n * If maybeString is not null or empty, then wrap with start and end, otherwise print an empty string.\n */\n\nfunction wrap(start, maybeString, end = '') {\n return maybeString != null && maybeString !== ''\n ? start + maybeString + end\n : '';\n}\n\nfunction indent(str) {\n return wrap(' ', str.replace(/\\n/g, '\\n '));\n}\n\nfunction hasMultilineItems(maybeArray) {\n var _maybeArray$some;\n\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n return (_maybeArray$some =\n maybeArray === null || maybeArray === void 0\n ? void 0\n : maybeArray.some((str) => str.includes('\\n'))) !== null &&\n _maybeArray$some !== void 0\n ? _maybeArray$some\n : false;\n}\n","import { print as origPrint } from \"graphql\";\nimport { AutoCleanedWeakCache, cacheSizes, } from \"../caching/index.js\";\nimport { registerGlobalCache } from \"../caching/getMemoryInternals.js\";\nvar printCache;\nexport var print = Object.assign(function (ast) {\n var result = printCache.get(ast);\n if (!result) {\n result = origPrint(ast);\n printCache.set(ast, result);\n }\n return result;\n}, {\n reset: function () {\n printCache = new AutoCleanedWeakCache(cacheSizes.print || 2000 /* defaultCacheSizes.print */);\n },\n});\nprint.reset();\nif (globalThis.__DEV__ !== false) {\n registerGlobalCache(\"print\", function () { return (printCache ? printCache.size : 0); });\n}\n","/**\n * Merges the provided objects shallowly and removes\n * all properties with an `undefined` value\n */\nexport function compact() {\n var objects = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n objects[_i] = arguments[_i];\n }\n var result = Object.create(null);\n objects.forEach(function (obj) {\n if (!obj)\n return;\n Object.keys(obj).forEach(function (key) {\n var value = obj[key];\n if (value !== void 0) {\n result[key] = value;\n }\n });\n });\n return result;\n}\n","import { __assign, __spreadArray } from \"tslib\";\nimport { isNonNullObject } from \"./objects.js\";\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nexport function mergeDeep() {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n return mergeDeepArray(sources);\n}\n// In almost any situation where you could succeed in getting the\n// TypeScript compiler to infer a tuple type for the sources array, you\n// could just use mergeDeep instead of mergeDeepArray, so instead of\n// trying to convert T[] to an intersection type we just infer the array\n// element type, which works perfectly when the sources array has a\n// consistent element type.\nexport function mergeDeepArray(sources) {\n var target = sources[0] || {};\n var count = sources.length;\n if (count > 1) {\n var merger = new DeepMerger();\n for (var i = 1; i < count; ++i) {\n target = merger.merge(target, sources[i]);\n }\n }\n return target;\n}\nvar defaultReconciler = function (target, source, property) {\n return this.merge(target[property], source[property]);\n};\nvar DeepMerger = /** @class */ (function () {\n function DeepMerger(reconciler) {\n if (reconciler === void 0) { reconciler = defaultReconciler; }\n this.reconciler = reconciler;\n this.isObject = isNonNullObject;\n this.pastCopies = new Set();\n }\n DeepMerger.prototype.merge = function (target, source) {\n var _this = this;\n var context = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n context[_i - 2] = arguments[_i];\n }\n if (isNonNullObject(source) && isNonNullObject(target)) {\n Object.keys(source).forEach(function (sourceKey) {\n if (hasOwnProperty.call(target, sourceKey)) {\n var targetValue = target[sourceKey];\n if (source[sourceKey] !== targetValue) {\n var result = _this.reconciler.apply(_this, __spreadArray([target,\n source,\n sourceKey], context, false));\n // A well-implemented reconciler may return targetValue to indicate\n // the merge changed nothing about the structure of the target.\n if (result !== targetValue) {\n target = _this.shallowCopyForMerge(target);\n target[sourceKey] = result;\n }\n }\n }\n else {\n // If there is no collision, the target can safely share memory with\n // the source, and the recursion can terminate here.\n target = _this.shallowCopyForMerge(target);\n target[sourceKey] = source[sourceKey];\n }\n });\n return target;\n }\n // If source (or target) is not an object, let source replace target.\n return source;\n };\n DeepMerger.prototype.shallowCopyForMerge = function (value) {\n if (isNonNullObject(value)) {\n if (!this.pastCopies.has(value)) {\n if (Array.isArray(value)) {\n value = value.slice(0);\n }\n else {\n value = __assign({ __proto__: Object.getPrototypeOf(value) }, value);\n }\n this.pastCopies.add(value);\n }\n }\n return value;\n };\n return DeepMerger;\n}());\nexport { DeepMerger };\n","import { invariant } from \"../globals/index.js\";\nimport { visit, BREAK } from \"graphql\";\nexport function shouldInclude(_a, variables) {\n var directives = _a.directives;\n if (!directives || !directives.length) {\n return true;\n }\n return getInclusionDirectives(directives).every(function (_a) {\n var directive = _a.directive, ifArgument = _a.ifArgument;\n var evaledValue = false;\n if (ifArgument.value.kind === \"Variable\") {\n evaledValue =\n variables && variables[ifArgument.value.name.value];\n invariant(evaledValue !== void 0, 67, directive.name.value);\n }\n else {\n evaledValue = ifArgument.value.value;\n }\n return directive.name.value === \"skip\" ? !evaledValue : evaledValue;\n });\n}\nexport function getDirectiveNames(root) {\n var names = [];\n visit(root, {\n Directive: function (node) {\n names.push(node.name.value);\n },\n });\n return names;\n}\nexport var hasAnyDirectives = function (names, root) {\n return hasDirectives(names, root, false);\n};\nexport var hasAllDirectives = function (names, root) {\n return hasDirectives(names, root, true);\n};\nexport function hasDirectives(names, root, all) {\n var nameSet = new Set(names);\n var uniqueCount = nameSet.size;\n visit(root, {\n Directive: function (node) {\n if (nameSet.delete(node.name.value) && (!all || !nameSet.size)) {\n return BREAK;\n }\n },\n });\n // If we found all the names, nameSet will be empty. If we only care about\n // finding some of them, the < condition is sufficient.\n return all ? !nameSet.size : nameSet.size < uniqueCount;\n}\nexport function hasClientExports(document) {\n return document && hasDirectives([\"client\", \"export\"], document, true);\n}\nfunction isInclusionDirective(_a) {\n var value = _a.name.value;\n return value === \"skip\" || value === \"include\";\n}\nexport function getInclusionDirectives(directives) {\n var result = [];\n if (directives && directives.length) {\n directives.forEach(function (directive) {\n if (!isInclusionDirective(directive))\n return;\n var directiveArguments = directive.arguments;\n var directiveName = directive.name.value;\n invariant(directiveArguments && directiveArguments.length === 1, 68, directiveName);\n var ifArgument = directiveArguments[0];\n invariant(ifArgument.name && ifArgument.name.value === \"if\", 69, directiveName);\n var ifValue = ifArgument.value;\n // means it has to be a variable value if this is a valid @skip or @include directive\n invariant(ifValue &&\n (ifValue.kind === \"Variable\" || ifValue.kind === \"BooleanValue\"), 70, directiveName);\n result.push({ directive: directive, ifArgument: ifArgument });\n });\n }\n return result;\n}\n","import { isNonNullObject } from \"./objects.js\";\nfunction deepFreeze(value) {\n var workSet = new Set([value]);\n workSet.forEach(function (obj) {\n if (isNonNullObject(obj) && shallowFreeze(obj) === obj) {\n Object.getOwnPropertyNames(obj).forEach(function (name) {\n if (isNonNullObject(obj[name]))\n workSet.add(obj[name]);\n });\n }\n });\n return value;\n}\nfunction shallowFreeze(obj) {\n if (globalThis.__DEV__ !== false && !Object.isFrozen(obj)) {\n try {\n Object.freeze(obj);\n }\n catch (e) {\n // Some types like Uint8Array and Node.js's Buffer cannot be frozen, but\n // they all throw a TypeError when you try, so we re-throw any exceptions\n // that are not TypeErrors, since that would be unexpected.\n if (e instanceof TypeError)\n return null;\n throw e;\n }\n }\n return obj;\n}\nexport function maybeDeepFreeze(obj) {\n if (globalThis.__DEV__ !== false) {\n deepFreeze(obj);\n }\n return obj;\n}\n","import { isReference, isField, DeepMerger, resultKeyNameFromField, shouldInclude, isNonNullObject, compact, createFragmentMap, getFragmentDefinitions, isArray, } from \"../../utilities/index.js\";\nexport var hasOwn = Object.prototype.hasOwnProperty;\nexport function isNullish(value) {\n return value === null || value === void 0;\n}\nexport { isArray };\nexport function defaultDataIdFromObject(_a, context) {\n var __typename = _a.__typename, id = _a.id, _id = _a._id;\n if (typeof __typename === \"string\") {\n if (context) {\n context.keyObject =\n !isNullish(id) ? { id: id }\n : !isNullish(_id) ? { _id: _id }\n : void 0;\n }\n // If there is no object.id, fall back to object._id.\n if (isNullish(id) && !isNullish(_id)) {\n id = _id;\n }\n if (!isNullish(id)) {\n return \"\".concat(__typename, \":\").concat(typeof id === \"number\" || typeof id === \"string\" ?\n id\n : JSON.stringify(id));\n }\n }\n}\nvar defaultConfig = {\n dataIdFromObject: defaultDataIdFromObject,\n addTypename: true,\n resultCaching: true,\n // Thanks to the shouldCanonizeResults helper, this should be the only line\n // you have to change to reenable canonization by default in the future.\n canonizeResults: false,\n};\nexport function normalizeConfig(config) {\n return compact(defaultConfig, config);\n}\nexport function shouldCanonizeResults(config) {\n var value = config.canonizeResults;\n return value === void 0 ? defaultConfig.canonizeResults : value;\n}\nexport function getTypenameFromStoreObject(store, objectOrReference) {\n return isReference(objectOrReference) ?\n store.get(objectOrReference.__ref, \"__typename\")\n : objectOrReference && objectOrReference.__typename;\n}\nexport var TypeOrFieldNameRegExp = /^[_a-z][_0-9a-z]*/i;\nexport function fieldNameFromStoreName(storeFieldName) {\n var match = storeFieldName.match(TypeOrFieldNameRegExp);\n return match ? match[0] : storeFieldName;\n}\nexport function selectionSetMatchesResult(selectionSet, result, variables) {\n if (isNonNullObject(result)) {\n return isArray(result) ?\n result.every(function (item) {\n return selectionSetMatchesResult(selectionSet, item, variables);\n })\n : selectionSet.selections.every(function (field) {\n if (isField(field) && shouldInclude(field, variables)) {\n var key = resultKeyNameFromField(field);\n return (hasOwn.call(result, key) &&\n (!field.selectionSet ||\n selectionSetMatchesResult(field.selectionSet, result[key], variables)));\n }\n // If the selection has been skipped with @skip(true) or\n // @include(false), it should not count against the matching. If\n // the selection is not a field, it must be a fragment (inline or\n // named). We will determine if selectionSetMatchesResult for that\n // fragment when we get to it, so for now we return true.\n return true;\n });\n }\n return false;\n}\nexport function storeValueIsStoreObject(value) {\n return isNonNullObject(value) && !isReference(value) && !isArray(value);\n}\nexport function makeProcessedFieldsMerger() {\n return new DeepMerger();\n}\nexport function extractFragmentContext(document, fragments) {\n // FragmentMap consisting only of fragments defined directly in document, not\n // including other fragments registered in the FragmentRegistry.\n var fragmentMap = createFragmentMap(getFragmentDefinitions(document));\n return {\n fragmentMap: fragmentMap,\n lookupFragment: function (name) {\n var def = fragmentMap[name];\n if (!def && fragments) {\n def = fragments.lookup(name);\n }\n return def || null;\n },\n };\n}\n","import { __assign, __extends, __rest } from \"tslib\";\nimport { invariant } from \"../../utilities/globals/index.js\";\nimport { dep } from \"optimism\";\nimport { equal } from \"@wry/equality\";\nimport { Trie } from \"@wry/trie\";\nimport { isReference, makeReference, DeepMerger, maybeDeepFreeze, canUseWeakMap, isNonNullObject, } from \"../../utilities/index.js\";\nimport { hasOwn, fieldNameFromStoreName } from \"./helpers.js\";\nvar DELETE = Object.create(null);\nvar delModifier = function () { return DELETE; };\nvar INVALIDATE = Object.create(null);\nvar EntityStore = /** @class */ (function () {\n function EntityStore(policies, group) {\n var _this = this;\n this.policies = policies;\n this.group = group;\n this.data = Object.create(null);\n // Maps root entity IDs to the number of times they have been retained, minus\n // the number of times they have been released. Retained entities keep other\n // entities they reference (even indirectly) from being garbage collected.\n this.rootIds = Object.create(null);\n // Lazily tracks { __ref: } strings contained by this.data[dataId].\n this.refs = Object.create(null);\n // Bound function that can be passed around to provide easy access to fields\n // of Reference objects as well as ordinary objects.\n this.getFieldValue = function (objectOrReference, storeFieldName) {\n return maybeDeepFreeze(isReference(objectOrReference) ?\n _this.get(objectOrReference.__ref, storeFieldName)\n : objectOrReference && objectOrReference[storeFieldName]);\n };\n // Returns true for non-normalized StoreObjects and non-dangling\n // References, indicating that readField(name, objOrRef) has a chance of\n // working. Useful for filtering out dangling references from lists.\n this.canRead = function (objOrRef) {\n return isReference(objOrRef) ?\n _this.has(objOrRef.__ref)\n : typeof objOrRef === \"object\";\n };\n // Bound function that converts an id or an object with a __typename and\n // primary key fields to a Reference object. If called with a Reference object,\n // that same Reference object is returned. Pass true for mergeIntoStore to persist\n // an object into the store.\n this.toReference = function (objOrIdOrRef, mergeIntoStore) {\n if (typeof objOrIdOrRef === \"string\") {\n return makeReference(objOrIdOrRef);\n }\n if (isReference(objOrIdOrRef)) {\n return objOrIdOrRef;\n }\n var id = _this.policies.identify(objOrIdOrRef)[0];\n if (id) {\n var ref = makeReference(id);\n if (mergeIntoStore) {\n _this.merge(id, objOrIdOrRef);\n }\n return ref;\n }\n };\n }\n // Although the EntityStore class is abstract, it contains concrete\n // implementations of the various NormalizedCache interface methods that\n // are inherited by the Root and Layer subclasses.\n EntityStore.prototype.toObject = function () {\n return __assign({}, this.data);\n };\n EntityStore.prototype.has = function (dataId) {\n return this.lookup(dataId, true) !== void 0;\n };\n EntityStore.prototype.get = function (dataId, fieldName) {\n this.group.depend(dataId, fieldName);\n if (hasOwn.call(this.data, dataId)) {\n var storeObject = this.data[dataId];\n if (storeObject && hasOwn.call(storeObject, fieldName)) {\n return storeObject[fieldName];\n }\n }\n if (fieldName === \"__typename\" &&\n hasOwn.call(this.policies.rootTypenamesById, dataId)) {\n return this.policies.rootTypenamesById[dataId];\n }\n if (this instanceof Layer) {\n return this.parent.get(dataId, fieldName);\n }\n };\n EntityStore.prototype.lookup = function (dataId, dependOnExistence) {\n // The has method (above) calls lookup with dependOnExistence = true, so\n // that it can later be invalidated when we add or remove a StoreObject for\n // this dataId. Any consumer who cares about the contents of the StoreObject\n // should not rely on this dependency, since the contents could change\n // without the object being added or removed.\n if (dependOnExistence)\n this.group.depend(dataId, \"__exists\");\n if (hasOwn.call(this.data, dataId)) {\n return this.data[dataId];\n }\n if (this instanceof Layer) {\n return this.parent.lookup(dataId, dependOnExistence);\n }\n if (this.policies.rootTypenamesById[dataId]) {\n return Object.create(null);\n }\n };\n EntityStore.prototype.merge = function (older, newer) {\n var _this = this;\n var dataId;\n // Convert unexpected references to ID strings.\n if (isReference(older))\n older = older.__ref;\n if (isReference(newer))\n newer = newer.__ref;\n var existing = typeof older === \"string\" ? this.lookup((dataId = older)) : older;\n var incoming = typeof newer === \"string\" ? this.lookup((dataId = newer)) : newer;\n // If newer was a string ID, but that ID was not defined in this store,\n // then there are no fields to be merged, so we're done.\n if (!incoming)\n return;\n invariant(typeof dataId === \"string\", 1);\n var merged = new DeepMerger(storeObjectReconciler).merge(existing, incoming);\n // Even if merged === existing, existing may have come from a lower\n // layer, so we always need to set this.data[dataId] on this level.\n this.data[dataId] = merged;\n if (merged !== existing) {\n delete this.refs[dataId];\n if (this.group.caching) {\n var fieldsToDirty_1 = Object.create(null);\n // If we added a new StoreObject where there was previously none, dirty\n // anything that depended on the existence of this dataId, such as the\n // EntityStore#has method.\n if (!existing)\n fieldsToDirty_1.__exists = 1;\n // Now invalidate dependents who called getFieldValue for any fields\n // that are changing as a result of this merge.\n Object.keys(incoming).forEach(function (storeFieldName) {\n if (!existing ||\n existing[storeFieldName] !== merged[storeFieldName]) {\n // Always dirty the full storeFieldName, which may include\n // serialized arguments following the fieldName prefix.\n fieldsToDirty_1[storeFieldName] = 1;\n // Also dirty fieldNameFromStoreName(storeFieldName) if it's\n // different from storeFieldName and this field does not have\n // keyArgs configured, because that means the cache can't make\n // any assumptions about how field values with the same field\n // name but different arguments might be interrelated, so it\n // must err on the side of invalidating all field values that\n // share the same short fieldName, regardless of arguments.\n var fieldName = fieldNameFromStoreName(storeFieldName);\n if (fieldName !== storeFieldName &&\n !_this.policies.hasKeyArgs(merged.__typename, fieldName)) {\n fieldsToDirty_1[fieldName] = 1;\n }\n // If merged[storeFieldName] has become undefined, and this is the\n // Root layer, actually delete the property from the merged object,\n // which is guaranteed to have been created fresh in this method.\n if (merged[storeFieldName] === void 0 && !(_this instanceof Layer)) {\n delete merged[storeFieldName];\n }\n }\n });\n if (fieldsToDirty_1.__typename &&\n !(existing && existing.__typename) &&\n // Since we return default root __typename strings\n // automatically from store.get, we don't need to dirty the\n // ROOT_QUERY.__typename field if merged.__typename is equal\n // to the default string (usually \"Query\").\n this.policies.rootTypenamesById[dataId] === merged.__typename) {\n delete fieldsToDirty_1.__typename;\n }\n Object.keys(fieldsToDirty_1).forEach(function (fieldName) {\n return _this.group.dirty(dataId, fieldName);\n });\n }\n }\n };\n EntityStore.prototype.modify = function (dataId, fields) {\n var _this = this;\n var storeObject = this.lookup(dataId);\n if (storeObject) {\n var changedFields_1 = Object.create(null);\n var needToMerge_1 = false;\n var allDeleted_1 = true;\n var sharedDetails_1 = {\n DELETE: DELETE,\n INVALIDATE: INVALIDATE,\n isReference: isReference,\n toReference: this.toReference,\n canRead: this.canRead,\n readField: function (fieldNameOrOptions, from) {\n return _this.policies.readField(typeof fieldNameOrOptions === \"string\" ?\n {\n fieldName: fieldNameOrOptions,\n from: from || makeReference(dataId),\n }\n : fieldNameOrOptions, { store: _this });\n },\n };\n Object.keys(storeObject).forEach(function (storeFieldName) {\n var fieldName = fieldNameFromStoreName(storeFieldName);\n var fieldValue = storeObject[storeFieldName];\n if (fieldValue === void 0)\n return;\n var modify = typeof fields === \"function\" ? fields : (fields[storeFieldName] || fields[fieldName]);\n if (modify) {\n var newValue = modify === delModifier ? DELETE : (modify(maybeDeepFreeze(fieldValue), __assign(__assign({}, sharedDetails_1), { fieldName: fieldName, storeFieldName: storeFieldName, storage: _this.getStorage(dataId, storeFieldName) })));\n if (newValue === INVALIDATE) {\n _this.group.dirty(dataId, storeFieldName);\n }\n else {\n if (newValue === DELETE)\n newValue = void 0;\n if (newValue !== fieldValue) {\n changedFields_1[storeFieldName] = newValue;\n needToMerge_1 = true;\n fieldValue = newValue;\n if (globalThis.__DEV__ !== false) {\n var checkReference = function (ref) {\n if (_this.lookup(ref.__ref) === undefined) {\n globalThis.__DEV__ !== false && invariant.warn(2, ref);\n return true;\n }\n };\n if (isReference(newValue)) {\n checkReference(newValue);\n }\n else if (Array.isArray(newValue)) {\n // Warn about writing \"mixed\" arrays of Reference and non-Reference objects\n var seenReference = false;\n var someNonReference = void 0;\n for (var _i = 0, newValue_1 = newValue; _i < newValue_1.length; _i++) {\n var value = newValue_1[_i];\n if (isReference(value)) {\n seenReference = true;\n if (checkReference(value))\n break;\n }\n else {\n // Do not warn on primitive values, since those could never be represented\n // by a reference. This is a valid (albeit uncommon) use case.\n if (typeof value === \"object\" && !!value) {\n var id = _this.policies.identify(value)[0];\n // check if object could even be referenced, otherwise we are not interested in it for this warning\n if (id) {\n someNonReference = value;\n }\n }\n }\n if (seenReference && someNonReference !== undefined) {\n globalThis.__DEV__ !== false && invariant.warn(3, someNonReference);\n break;\n }\n }\n }\n }\n }\n }\n }\n if (fieldValue !== void 0) {\n allDeleted_1 = false;\n }\n });\n if (needToMerge_1) {\n this.merge(dataId, changedFields_1);\n if (allDeleted_1) {\n if (this instanceof Layer) {\n this.data[dataId] = void 0;\n }\n else {\n delete this.data[dataId];\n }\n this.group.dirty(dataId, \"__exists\");\n }\n return true;\n }\n }\n return false;\n };\n // If called with only one argument, removes the entire entity\n // identified by dataId. If called with a fieldName as well, removes all\n // fields of that entity whose names match fieldName according to the\n // fieldNameFromStoreName helper function. If called with a fieldName\n // and variables, removes all fields of that entity whose names match fieldName\n // and whose arguments when cached exactly match the variables passed.\n EntityStore.prototype.delete = function (dataId, fieldName, args) {\n var _a;\n var storeObject = this.lookup(dataId);\n if (storeObject) {\n var typename = this.getFieldValue(storeObject, \"__typename\");\n var storeFieldName = fieldName && args ?\n this.policies.getStoreFieldName({ typename: typename, fieldName: fieldName, args: args })\n : fieldName;\n return this.modify(dataId, storeFieldName ? (_a = {},\n _a[storeFieldName] = delModifier,\n _a) : delModifier);\n }\n return false;\n };\n EntityStore.prototype.evict = function (options, limit) {\n var evicted = false;\n if (options.id) {\n if (hasOwn.call(this.data, options.id)) {\n evicted = this.delete(options.id, options.fieldName, options.args);\n }\n if (this instanceof Layer && this !== limit) {\n evicted = this.parent.evict(options, limit) || evicted;\n }\n // Always invalidate the field to trigger rereading of watched\n // queries, even if no cache data was modified by the eviction,\n // because queries may depend on computed fields with custom read\n // functions, whose values are not stored in the EntityStore.\n if (options.fieldName || evicted) {\n this.group.dirty(options.id, options.fieldName || \"__exists\");\n }\n }\n return evicted;\n };\n EntityStore.prototype.clear = function () {\n this.replace(null);\n };\n EntityStore.prototype.extract = function () {\n var _this = this;\n var obj = this.toObject();\n var extraRootIds = [];\n this.getRootIdSet().forEach(function (id) {\n if (!hasOwn.call(_this.policies.rootTypenamesById, id)) {\n extraRootIds.push(id);\n }\n });\n if (extraRootIds.length) {\n obj.__META = { extraRootIds: extraRootIds.sort() };\n }\n return obj;\n };\n EntityStore.prototype.replace = function (newData) {\n var _this = this;\n Object.keys(this.data).forEach(function (dataId) {\n if (!(newData && hasOwn.call(newData, dataId))) {\n _this.delete(dataId);\n }\n });\n if (newData) {\n var __META = newData.__META, rest_1 = __rest(newData, [\"__META\"]);\n Object.keys(rest_1).forEach(function (dataId) {\n _this.merge(dataId, rest_1[dataId]);\n });\n if (__META) {\n __META.extraRootIds.forEach(this.retain, this);\n }\n }\n };\n EntityStore.prototype.retain = function (rootId) {\n return (this.rootIds[rootId] = (this.rootIds[rootId] || 0) + 1);\n };\n EntityStore.prototype.release = function (rootId) {\n if (this.rootIds[rootId] > 0) {\n var count = --this.rootIds[rootId];\n if (!count)\n delete this.rootIds[rootId];\n return count;\n }\n return 0;\n };\n // Return a Set of all the ID strings that have been retained by\n // this layer/root *and* any layers/roots beneath it.\n EntityStore.prototype.getRootIdSet = function (ids) {\n if (ids === void 0) { ids = new Set(); }\n Object.keys(this.rootIds).forEach(ids.add, ids);\n if (this instanceof Layer) {\n this.parent.getRootIdSet(ids);\n }\n else {\n // Official singleton IDs like ROOT_QUERY and ROOT_MUTATION are\n // always considered roots for garbage collection, regardless of\n // their retainment counts in this.rootIds.\n Object.keys(this.policies.rootTypenamesById).forEach(ids.add, ids);\n }\n return ids;\n };\n // The goal of garbage collection is to remove IDs from the Root layer of the\n // store that are no longer reachable starting from any IDs that have been\n // explicitly retained (see retain and release, above). Returns an array of\n // dataId strings that were removed from the store.\n EntityStore.prototype.gc = function () {\n var _this = this;\n var ids = this.getRootIdSet();\n var snapshot = this.toObject();\n ids.forEach(function (id) {\n if (hasOwn.call(snapshot, id)) {\n // Because we are iterating over an ECMAScript Set, the IDs we add here\n // will be visited in later iterations of the forEach loop only if they\n // were not previously contained by the Set.\n Object.keys(_this.findChildRefIds(id)).forEach(ids.add, ids);\n // By removing IDs from the snapshot object here, we protect them from\n // getting removed from the root store layer below.\n delete snapshot[id];\n }\n });\n var idsToRemove = Object.keys(snapshot);\n if (idsToRemove.length) {\n var root_1 = this;\n while (root_1 instanceof Layer)\n root_1 = root_1.parent;\n idsToRemove.forEach(function (id) { return root_1.delete(id); });\n }\n return idsToRemove;\n };\n EntityStore.prototype.findChildRefIds = function (dataId) {\n if (!hasOwn.call(this.refs, dataId)) {\n var found_1 = (this.refs[dataId] = Object.create(null));\n var root = this.data[dataId];\n if (!root)\n return found_1;\n var workSet_1 = new Set([root]);\n // Within the store, only arrays and objects can contain child entity\n // references, so we can prune the traversal using this predicate:\n workSet_1.forEach(function (obj) {\n if (isReference(obj)) {\n found_1[obj.__ref] = true;\n // In rare cases, a { __ref } Reference object may have other fields.\n // This often indicates a mismerging of References with StoreObjects,\n // but garbage collection should not be fooled by a stray __ref\n // property in a StoreObject (ignoring all the other fields just\n // because the StoreObject looks like a Reference). To avoid this\n // premature termination of findChildRefIds recursion, we fall through\n // to the code below, which will handle any other properties of obj.\n }\n if (isNonNullObject(obj)) {\n Object.keys(obj).forEach(function (key) {\n var child = obj[key];\n // No need to add primitive values to the workSet, since they cannot\n // contain reference objects.\n if (isNonNullObject(child)) {\n workSet_1.add(child);\n }\n });\n }\n });\n }\n return this.refs[dataId];\n };\n EntityStore.prototype.makeCacheKey = function () {\n return this.group.keyMaker.lookupArray(arguments);\n };\n return EntityStore;\n}());\nexport { EntityStore };\n// A single CacheGroup represents a set of one or more EntityStore objects,\n// typically the Root store in a CacheGroup by itself, and all active Layer\n// stores in a group together. A single EntityStore object belongs to only\n// one CacheGroup, store.group. The CacheGroup is responsible for tracking\n// dependencies, so store.group is helpful for generating unique keys for\n// cached results that need to be invalidated when/if those dependencies\n// change. If we used the EntityStore objects themselves as cache keys (that\n// is, store rather than store.group), the cache would become unnecessarily\n// fragmented by all the different Layer objects. Instead, the CacheGroup\n// approach allows all optimistic Layer objects in the same linked list to\n// belong to one CacheGroup, with the non-optimistic Root object belonging\n// to another CacheGroup, allowing resultCaching dependencies to be tracked\n// separately for optimistic and non-optimistic entity data.\nvar CacheGroup = /** @class */ (function () {\n function CacheGroup(caching, parent) {\n if (parent === void 0) { parent = null; }\n this.caching = caching;\n this.parent = parent;\n this.d = null;\n this.resetCaching();\n }\n CacheGroup.prototype.resetCaching = function () {\n this.d = this.caching ? dep() : null;\n this.keyMaker = new Trie(canUseWeakMap);\n };\n CacheGroup.prototype.depend = function (dataId, storeFieldName) {\n if (this.d) {\n this.d(makeDepKey(dataId, storeFieldName));\n var fieldName = fieldNameFromStoreName(storeFieldName);\n if (fieldName !== storeFieldName) {\n // Fields with arguments that contribute extra identifying\n // information to the fieldName (thus forming the storeFieldName)\n // depend not only on the full storeFieldName but also on the\n // short fieldName, so the field can be invalidated using either\n // level of specificity.\n this.d(makeDepKey(dataId, fieldName));\n }\n if (this.parent) {\n this.parent.depend(dataId, storeFieldName);\n }\n }\n };\n CacheGroup.prototype.dirty = function (dataId, storeFieldName) {\n if (this.d) {\n this.d.dirty(makeDepKey(dataId, storeFieldName), \n // When storeFieldName === \"__exists\", that means the entity identified\n // by dataId has either disappeared from the cache or was newly added,\n // so the result caching system would do well to \"forget everything it\n // knows\" about that object. To achieve that kind of invalidation, we\n // not only dirty the associated result cache entry, but also remove it\n // completely from the dependency graph. For the optimism implementation\n // details, see https://github.com/benjamn/optimism/pull/195.\n storeFieldName === \"__exists\" ? \"forget\" : \"setDirty\");\n }\n };\n return CacheGroup;\n}());\nfunction makeDepKey(dataId, storeFieldName) {\n // Since field names cannot have '#' characters in them, this method\n // of joining the field name and the ID should be unambiguous, and much\n // cheaper than JSON.stringify([dataId, fieldName]).\n return storeFieldName + \"#\" + dataId;\n}\nexport function maybeDependOnExistenceOfEntity(store, entityId) {\n if (supportsResultCaching(store)) {\n // We use this pseudo-field __exists elsewhere in the EntityStore code to\n // represent changes in the existence of the entity object identified by\n // entityId. This dependency gets reliably dirtied whenever an object with\n // this ID is deleted (or newly created) within this group, so any result\n // cache entries (for example, StoreReader#executeSelectionSet results) that\n // depend on __exists for this entityId will get dirtied as well, leading to\n // the eventual recomputation (instead of reuse) of those result objects the\n // next time someone reads them from the cache.\n store.group.depend(entityId, \"__exists\");\n }\n}\n(function (EntityStore) {\n // Refer to this class as EntityStore.Root outside this namespace.\n var Root = /** @class */ (function (_super) {\n __extends(Root, _super);\n function Root(_a) {\n var policies = _a.policies, _b = _a.resultCaching, resultCaching = _b === void 0 ? true : _b, seed = _a.seed;\n var _this = _super.call(this, policies, new CacheGroup(resultCaching)) || this;\n _this.stump = new Stump(_this);\n _this.storageTrie = new Trie(canUseWeakMap);\n if (seed)\n _this.replace(seed);\n return _this;\n }\n Root.prototype.addLayer = function (layerId, replay) {\n // Adding an optimistic Layer on top of the Root actually adds the Layer\n // on top of the Stump, so the Stump always comes between the Root and\n // any Layer objects that we've added.\n return this.stump.addLayer(layerId, replay);\n };\n Root.prototype.removeLayer = function () {\n // Never remove the root layer.\n return this;\n };\n Root.prototype.getStorage = function () {\n return this.storageTrie.lookupArray(arguments);\n };\n return Root;\n }(EntityStore));\n EntityStore.Root = Root;\n})(EntityStore || (EntityStore = {}));\n// Not exported, since all Layer instances are created by the addLayer method\n// of the EntityStore.Root class.\nvar Layer = /** @class */ (function (_super) {\n __extends(Layer, _super);\n function Layer(id, parent, replay, group) {\n var _this = _super.call(this, parent.policies, group) || this;\n _this.id = id;\n _this.parent = parent;\n _this.replay = replay;\n _this.group = group;\n replay(_this);\n return _this;\n }\n Layer.prototype.addLayer = function (layerId, replay) {\n return new Layer(layerId, this, replay, this.group);\n };\n Layer.prototype.removeLayer = function (layerId) {\n var _this = this;\n // Remove all instances of the given id, not just the first one.\n var parent = this.parent.removeLayer(layerId);\n if (layerId === this.id) {\n if (this.group.caching) {\n // Dirty every ID we're removing. Technically we might be able to avoid\n // dirtying fields that have values in higher layers, but we don't have\n // easy access to higher layers here, and we're about to recreate those\n // layers anyway (see parent.addLayer below).\n Object.keys(this.data).forEach(function (dataId) {\n var ownStoreObject = _this.data[dataId];\n var parentStoreObject = parent[\"lookup\"](dataId);\n if (!parentStoreObject) {\n // The StoreObject identified by dataId was defined in this layer\n // but will be undefined in the parent layer, so we can delete the\n // whole entity using this.delete(dataId). Since we're about to\n // throw this layer away, the only goal of this deletion is to dirty\n // the removed fields.\n _this.delete(dataId);\n }\n else if (!ownStoreObject) {\n // This layer had an entry for dataId but it was undefined, which\n // means the entity was deleted in this layer, and it's about to\n // become undeleted when we remove this layer, so we need to dirty\n // all fields that are about to be reexposed.\n _this.group.dirty(dataId, \"__exists\");\n Object.keys(parentStoreObject).forEach(function (storeFieldName) {\n _this.group.dirty(dataId, storeFieldName);\n });\n }\n else if (ownStoreObject !== parentStoreObject) {\n // If ownStoreObject is not exactly the same as parentStoreObject,\n // dirty any fields whose values will change as a result of this\n // removal.\n Object.keys(ownStoreObject).forEach(function (storeFieldName) {\n if (!equal(ownStoreObject[storeFieldName], parentStoreObject[storeFieldName])) {\n _this.group.dirty(dataId, storeFieldName);\n }\n });\n }\n });\n }\n return parent;\n }\n // No changes are necessary if the parent chain remains identical.\n if (parent === this.parent)\n return this;\n // Recreate this layer on top of the new parent.\n return parent.addLayer(this.id, this.replay);\n };\n Layer.prototype.toObject = function () {\n return __assign(__assign({}, this.parent.toObject()), this.data);\n };\n Layer.prototype.findChildRefIds = function (dataId) {\n var fromParent = this.parent.findChildRefIds(dataId);\n return hasOwn.call(this.data, dataId) ? __assign(__assign({}, fromParent), _super.prototype.findChildRefIds.call(this, dataId)) : fromParent;\n };\n Layer.prototype.getStorage = function () {\n var p = this.parent;\n while (p.parent)\n p = p.parent;\n return p.getStorage.apply(p, \n // @ts-expect-error\n arguments);\n };\n return Layer;\n}(EntityStore));\n// Represents a Layer permanently installed just above the Root, which allows\n// reading optimistically (and registering optimistic dependencies) even when\n// no optimistic layers are currently active. The stump.group CacheGroup object\n// is shared by any/all Layer objects added on top of the Stump.\nvar Stump = /** @class */ (function (_super) {\n __extends(Stump, _super);\n function Stump(root) {\n return _super.call(this, \"EntityStore.Stump\", root, function () { }, new CacheGroup(root.group.caching, root.group)) || this;\n }\n Stump.prototype.removeLayer = function () {\n // Never remove the Stump layer.\n return this;\n };\n Stump.prototype.merge = function (older, newer) {\n // We never want to write any data into the Stump, so we forward any merge\n // calls to the Root instead. Another option here would be to throw an\n // exception, but the toReference(object, true) function can sometimes\n // trigger Stump writes (which used to be Root writes, before the Stump\n // concept was introduced).\n return this.parent.merge(older, newer);\n };\n return Stump;\n}(Layer));\nfunction storeObjectReconciler(existingObject, incomingObject, property) {\n var existingValue = existingObject[property];\n var incomingValue = incomingObject[property];\n // Wherever there is a key collision, prefer the incoming value, unless\n // it is deeply equal to the existing value. It's worth checking deep\n // equality here (even though blindly returning incoming would be\n // logically correct) because preserving the referential identity of\n // existing data can prevent needless rereading and rerendering.\n return equal(existingValue, incomingValue) ? existingValue : incomingValue;\n}\nexport function supportsResultCaching(store) {\n // When result caching is disabled, store.depend will be null.\n return !!(store instanceof EntityStore && store.group.caching);\n}\n","import { __assign } from \"tslib\";\nimport { Trie } from \"@wry/trie\";\nimport { canUseWeakMap, canUseWeakSet, isNonNullObject as isObjectOrArray, } from \"../../utilities/index.js\";\nimport { isArray } from \"./helpers.js\";\nfunction shallowCopy(value) {\n if (isObjectOrArray(value)) {\n return isArray(value) ?\n value.slice(0)\n : __assign({ __proto__: Object.getPrototypeOf(value) }, value);\n }\n return value;\n}\n// When programmers talk about the \"canonical form\" of an object, they\n// usually have the following meaning in mind, which I've copied from\n// https://en.wiktionary.org/wiki/canonical_form:\n//\n// 1. A standard or normal presentation of a mathematical entity [or\n// object]. A canonical form is an element of a set of representatives\n// of equivalence classes of forms such that there is a function or\n// procedure which projects every element of each equivalence class\n// onto that one element, the canonical form of that equivalence\n// class. The canonical form is expected to be simpler than the rest of\n// the forms in some way.\n//\n// That's a long-winded way of saying any two objects that have the same\n// canonical form may be considered equivalent, even if they are !==,\n// which usually means the objects are structurally equivalent (deeply\n// equal), but don't necessarily use the same memory.\n//\n// Like a literary or musical canon, this ObjectCanon class represents a\n// collection of unique canonical items (JavaScript objects), with the\n// important property that canon.admit(a) === canon.admit(b) if a and b\n// are deeply equal to each other. In terms of the definition above, the\n// canon.admit method is the \"function or procedure which projects every\"\n// object \"onto that one element, the canonical form.\"\n//\n// In the worst case, the canonicalization process may involve looking at\n// every property in the provided object tree, so it takes the same order\n// of time as deep equality checking. Fortunately, already-canonicalized\n// objects are returned immediately from canon.admit, so the presence of\n// canonical subtrees tends to speed up canonicalization.\n//\n// Since consumers of canonical objects can check for deep equality in\n// constant time, canonicalizing cache results can massively improve the\n// performance of application code that skips re-rendering unchanged\n// results, such as \"pure\" UI components in a framework like React.\n//\n// Of course, since canonical objects may be shared widely between\n// unrelated consumers, it's important to think of them as immutable, even\n// though they are not actually frozen with Object.freeze in production,\n// due to the extra performance overhead that comes with frozen objects.\n//\n// Custom scalar objects whose internal class name is neither Array nor\n// Object can be included safely in the admitted tree, but they will not\n// be replaced with a canonical version (to put it another way, they are\n// assumed to be canonical already).\n//\n// If we ignore custom objects, no detection of cycles or repeated object\n// references is currently required by the StoreReader class, since\n// GraphQL result objects are JSON-serializable trees (and thus contain\n// neither cycles nor repeated subtrees), so we can avoid the complexity\n// of keeping track of objects we've already seen during the recursion of\n// the admit method.\n//\n// In the future, we may consider adding additional cases to the switch\n// statement to handle other common object types, such as \"[object Date]\"\n// objects, as needed.\nvar ObjectCanon = /** @class */ (function () {\n function ObjectCanon() {\n // Set of all canonical objects this ObjectCanon has admitted, allowing\n // canon.admit to return previously-canonicalized objects immediately.\n this.known = new (canUseWeakSet ? WeakSet : Set)();\n // Efficient storage/lookup structure for canonical objects.\n this.pool = new Trie(canUseWeakMap);\n // Make the ObjectCanon assume this value has already been\n // canonicalized.\n this.passes = new WeakMap();\n // Arrays that contain the same elements in a different order can share\n // the same SortedKeysInfo object, to save memory.\n this.keysByJSON = new Map();\n // This has to come last because it depends on keysByJSON.\n this.empty = this.admit({});\n }\n ObjectCanon.prototype.isKnown = function (value) {\n return isObjectOrArray(value) && this.known.has(value);\n };\n ObjectCanon.prototype.pass = function (value) {\n if (isObjectOrArray(value)) {\n var copy = shallowCopy(value);\n this.passes.set(copy, value);\n return copy;\n }\n return value;\n };\n ObjectCanon.prototype.admit = function (value) {\n var _this = this;\n if (isObjectOrArray(value)) {\n var original = this.passes.get(value);\n if (original)\n return original;\n var proto = Object.getPrototypeOf(value);\n switch (proto) {\n case Array.prototype: {\n if (this.known.has(value))\n return value;\n var array = value.map(this.admit, this);\n // Arrays are looked up in the Trie using their recursively\n // canonicalized elements, and the known version of the array is\n // preserved as node.array.\n var node = this.pool.lookupArray(array);\n if (!node.array) {\n this.known.add((node.array = array));\n // Since canonical arrays may be shared widely between\n // unrelated consumers, it's important to regard them as\n // immutable, even if they are not frozen in production.\n if (globalThis.__DEV__ !== false) {\n Object.freeze(array);\n }\n }\n return node.array;\n }\n case null:\n case Object.prototype: {\n if (this.known.has(value))\n return value;\n var proto_1 = Object.getPrototypeOf(value);\n var array_1 = [proto_1];\n var keys = this.sortedKeys(value);\n array_1.push(keys.json);\n var firstValueIndex_1 = array_1.length;\n keys.sorted.forEach(function (key) {\n array_1.push(_this.admit(value[key]));\n });\n // Objects are looked up in the Trie by their prototype (which\n // is *not* recursively canonicalized), followed by a JSON\n // representation of their (sorted) keys, followed by the\n // sequence of recursively canonicalized values corresponding to\n // those keys. To keep the final results unambiguous with other\n // sequences (such as arrays that just happen to contain [proto,\n // keys.json, value1, value2, ...]), the known version of the\n // object is stored as node.object.\n var node = this.pool.lookupArray(array_1);\n if (!node.object) {\n var obj_1 = (node.object = Object.create(proto_1));\n this.known.add(obj_1);\n keys.sorted.forEach(function (key, i) {\n obj_1[key] = array_1[firstValueIndex_1 + i];\n });\n // Since canonical objects may be shared widely between\n // unrelated consumers, it's important to regard them as\n // immutable, even if they are not frozen in production.\n if (globalThis.__DEV__ !== false) {\n Object.freeze(obj_1);\n }\n }\n return node.object;\n }\n }\n }\n return value;\n };\n // It's worthwhile to cache the sorting of arrays of strings, since the\n // same initial unsorted arrays tend to be encountered many times.\n // Fortunately, we can reuse the Trie machinery to look up the sorted\n // arrays in linear time (which is faster than sorting large arrays).\n ObjectCanon.prototype.sortedKeys = function (obj) {\n var keys = Object.keys(obj);\n var node = this.pool.lookupArray(keys);\n if (!node.keys) {\n keys.sort();\n var json = JSON.stringify(keys);\n if (!(node.keys = this.keysByJSON.get(json))) {\n this.keysByJSON.set(json, (node.keys = { sorted: keys, json: json }));\n }\n }\n return node.keys;\n };\n return ObjectCanon;\n}());\nexport { ObjectCanon };\n","import { __assign } from \"tslib\";\nimport { invariant, newInvariantError } from \"../../utilities/globals/index.js\";\nimport { Kind } from \"graphql\";\nimport { wrap } from \"optimism\";\nimport { isField, resultKeyNameFromField, isReference, makeReference, shouldInclude, addTypenameToDocument, getDefaultValues, getMainDefinition, getQueryDefinition, getFragmentFromSelection, maybeDeepFreeze, mergeDeepArray, DeepMerger, isNonNullObject, canUseWeakMap, compact, canonicalStringify, cacheSizes, } from \"../../utilities/index.js\";\nimport { maybeDependOnExistenceOfEntity, supportsResultCaching, } from \"./entityStore.js\";\nimport { isArray, extractFragmentContext, getTypenameFromStoreObject, shouldCanonizeResults, } from \"./helpers.js\";\nimport { MissingFieldError } from \"../core/types/common.js\";\nimport { ObjectCanon } from \"./object-canon.js\";\nfunction execSelectionSetKeyArgs(options) {\n return [\n options.selectionSet,\n options.objectOrReference,\n options.context,\n // We split out this property so we can pass different values\n // independently without modifying options.context itself.\n options.context.canonizeResults,\n ];\n}\nvar StoreReader = /** @class */ (function () {\n function StoreReader(config) {\n var _this = this;\n this.knownResults = new (canUseWeakMap ? WeakMap : Map)();\n this.config = compact(config, {\n addTypename: config.addTypename !== false,\n canonizeResults: shouldCanonizeResults(config),\n });\n this.canon = config.canon || new ObjectCanon();\n // memoized functions in this class will be \"garbage-collected\"\n // by recreating the whole `StoreReader` in\n // `InMemoryCache.resetResultsCache`\n // (triggered from `InMemoryCache.gc` with `resetResultCache: true`)\n this.executeSelectionSet = wrap(function (options) {\n var _a;\n var canonizeResults = options.context.canonizeResults;\n var peekArgs = execSelectionSetKeyArgs(options);\n // Negate this boolean option so we can find out if we've already read\n // this result using the other boolean value.\n peekArgs[3] = !canonizeResults;\n var other = (_a = _this.executeSelectionSet).peek.apply(_a, peekArgs);\n if (other) {\n if (canonizeResults) {\n return __assign(__assign({}, other), { \n // If we previously read this result without canonizing it, we can\n // reuse that result simply by canonizing it now.\n result: _this.canon.admit(other.result) });\n }\n // If we previously read this result with canonization enabled, we can\n // return that canonized result as-is.\n return other;\n }\n maybeDependOnExistenceOfEntity(options.context.store, options.enclosingRef.__ref);\n // Finally, if we didn't find any useful previous results, run the real\n // execSelectionSetImpl method with the given options.\n return _this.execSelectionSetImpl(options);\n }, {\n max: this.config.resultCacheMaxSize ||\n cacheSizes[\"inMemoryCache.executeSelectionSet\"] ||\n 50000 /* defaultCacheSizes[\"inMemoryCache.executeSelectionSet\"] */,\n keyArgs: execSelectionSetKeyArgs,\n // Note that the parameters of makeCacheKey are determined by the\n // array returned by keyArgs.\n makeCacheKey: function (selectionSet, parent, context, canonizeResults) {\n if (supportsResultCaching(context.store)) {\n return context.store.makeCacheKey(selectionSet, isReference(parent) ? parent.__ref : parent, context.varString, canonizeResults);\n }\n },\n });\n this.executeSubSelectedArray = wrap(function (options) {\n maybeDependOnExistenceOfEntity(options.context.store, options.enclosingRef.__ref);\n return _this.execSubSelectedArrayImpl(options);\n }, {\n max: this.config.resultCacheMaxSize ||\n cacheSizes[\"inMemoryCache.executeSubSelectedArray\"] ||\n 10000 /* defaultCacheSizes[\"inMemoryCache.executeSubSelectedArray\"] */,\n makeCacheKey: function (_a) {\n var field = _a.field, array = _a.array, context = _a.context;\n if (supportsResultCaching(context.store)) {\n return context.store.makeCacheKey(field, array, context.varString);\n }\n },\n });\n }\n StoreReader.prototype.resetCanon = function () {\n this.canon = new ObjectCanon();\n };\n /**\n * Given a store and a query, return as much of the result as possible and\n * identify if any data was missing from the store.\n */\n StoreReader.prototype.diffQueryAgainstStore = function (_a) {\n var store = _a.store, query = _a.query, _b = _a.rootId, rootId = _b === void 0 ? \"ROOT_QUERY\" : _b, variables = _a.variables, _c = _a.returnPartialData, returnPartialData = _c === void 0 ? true : _c, _d = _a.canonizeResults, canonizeResults = _d === void 0 ? this.config.canonizeResults : _d;\n var policies = this.config.cache.policies;\n variables = __assign(__assign({}, getDefaultValues(getQueryDefinition(query))), variables);\n var rootRef = makeReference(rootId);\n var execResult = this.executeSelectionSet({\n selectionSet: getMainDefinition(query).selectionSet,\n objectOrReference: rootRef,\n enclosingRef: rootRef,\n context: __assign({ store: store, query: query, policies: policies, variables: variables, varString: canonicalStringify(variables), canonizeResults: canonizeResults }, extractFragmentContext(query, this.config.fragments)),\n });\n var missing;\n if (execResult.missing) {\n // For backwards compatibility we still report an array of\n // MissingFieldError objects, even though there will only ever be at most\n // one of them, now that all missing field error messages are grouped\n // together in the execResult.missing tree.\n missing = [\n new MissingFieldError(firstMissing(execResult.missing), execResult.missing, query, variables),\n ];\n if (!returnPartialData) {\n throw missing[0];\n }\n }\n return {\n result: execResult.result,\n complete: !missing,\n missing: missing,\n };\n };\n StoreReader.prototype.isFresh = function (result, parent, selectionSet, context) {\n if (supportsResultCaching(context.store) &&\n this.knownResults.get(result) === selectionSet) {\n var latest = this.executeSelectionSet.peek(selectionSet, parent, context, \n // If result is canonical, then it could only have been previously\n // cached by the canonizing version of executeSelectionSet, so we can\n // avoid checking both possibilities here.\n this.canon.isKnown(result));\n if (latest && result === latest.result) {\n return true;\n }\n }\n return false;\n };\n // Uncached version of executeSelectionSet.\n StoreReader.prototype.execSelectionSetImpl = function (_a) {\n var _this = this;\n var selectionSet = _a.selectionSet, objectOrReference = _a.objectOrReference, enclosingRef = _a.enclosingRef, context = _a.context;\n if (isReference(objectOrReference) &&\n !context.policies.rootTypenamesById[objectOrReference.__ref] &&\n !context.store.has(objectOrReference.__ref)) {\n return {\n result: this.canon.empty,\n missing: \"Dangling reference to missing \".concat(objectOrReference.__ref, \" object\"),\n };\n }\n var variables = context.variables, policies = context.policies, store = context.store;\n var typename = store.getFieldValue(objectOrReference, \"__typename\");\n var objectsToMerge = [];\n var missing;\n var missingMerger = new DeepMerger();\n if (this.config.addTypename &&\n typeof typename === \"string\" &&\n !policies.rootIdsByTypename[typename]) {\n // Ensure we always include a default value for the __typename\n // field, if we have one, and this.config.addTypename is true. Note\n // that this field can be overridden by other merged objects.\n objectsToMerge.push({ __typename: typename });\n }\n function handleMissing(result, resultName) {\n var _a;\n if (result.missing) {\n missing = missingMerger.merge(missing, (_a = {},\n _a[resultName] = result.missing,\n _a));\n }\n return result.result;\n }\n var workSet = new Set(selectionSet.selections);\n workSet.forEach(function (selection) {\n var _a, _b;\n // Omit fields with directives @skip(if: ) or\n // @include(if: ).\n if (!shouldInclude(selection, variables))\n return;\n if (isField(selection)) {\n var fieldValue = policies.readField({\n fieldName: selection.name.value,\n field: selection,\n variables: context.variables,\n from: objectOrReference,\n }, context);\n var resultName = resultKeyNameFromField(selection);\n if (fieldValue === void 0) {\n if (!addTypenameToDocument.added(selection)) {\n missing = missingMerger.merge(missing, (_a = {},\n _a[resultName] = \"Can't find field '\".concat(selection.name.value, \"' on \").concat(isReference(objectOrReference) ?\n objectOrReference.__ref + \" object\"\n : \"object \" + JSON.stringify(objectOrReference, null, 2)),\n _a));\n }\n }\n else if (isArray(fieldValue)) {\n fieldValue = handleMissing(_this.executeSubSelectedArray({\n field: selection,\n array: fieldValue,\n enclosingRef: enclosingRef,\n context: context,\n }), resultName);\n }\n else if (!selection.selectionSet) {\n // If the field does not have a selection set, then we handle it\n // as a scalar value. To keep this.canon from canonicalizing\n // this value, we use this.canon.pass to wrap fieldValue in a\n // Pass object that this.canon.admit will later unwrap as-is.\n if (context.canonizeResults) {\n fieldValue = _this.canon.pass(fieldValue);\n }\n }\n else if (fieldValue != null) {\n // In this case, because we know the field has a selection set,\n // it must be trying to query a GraphQLObjectType, which is why\n // fieldValue must be != null.\n fieldValue = handleMissing(_this.executeSelectionSet({\n selectionSet: selection.selectionSet,\n objectOrReference: fieldValue,\n enclosingRef: isReference(fieldValue) ? fieldValue : enclosingRef,\n context: context,\n }), resultName);\n }\n if (fieldValue !== void 0) {\n objectsToMerge.push((_b = {}, _b[resultName] = fieldValue, _b));\n }\n }\n else {\n var fragment = getFragmentFromSelection(selection, context.lookupFragment);\n if (!fragment && selection.kind === Kind.FRAGMENT_SPREAD) {\n throw newInvariantError(9, selection.name.value);\n }\n if (fragment && policies.fragmentMatches(fragment, typename)) {\n fragment.selectionSet.selections.forEach(workSet.add, workSet);\n }\n }\n });\n var result = mergeDeepArray(objectsToMerge);\n var finalResult = { result: result, missing: missing };\n var frozen = context.canonizeResults ?\n this.canon.admit(finalResult)\n // Since this.canon is normally responsible for freezing results (only in\n // development), freeze them manually if canonization is disabled.\n : maybeDeepFreeze(finalResult);\n // Store this result with its selection set so that we can quickly\n // recognize it again in the StoreReader#isFresh method.\n if (frozen.result) {\n this.knownResults.set(frozen.result, selectionSet);\n }\n return frozen;\n };\n // Uncached version of executeSubSelectedArray.\n StoreReader.prototype.execSubSelectedArrayImpl = function (_a) {\n var _this = this;\n var field = _a.field, array = _a.array, enclosingRef = _a.enclosingRef, context = _a.context;\n var missing;\n var missingMerger = new DeepMerger();\n function handleMissing(childResult, i) {\n var _a;\n if (childResult.missing) {\n missing = missingMerger.merge(missing, (_a = {}, _a[i] = childResult.missing, _a));\n }\n return childResult.result;\n }\n if (field.selectionSet) {\n array = array.filter(context.store.canRead);\n }\n array = array.map(function (item, i) {\n // null value in array\n if (item === null) {\n return null;\n }\n // This is a nested array, recurse\n if (isArray(item)) {\n return handleMissing(_this.executeSubSelectedArray({\n field: field,\n array: item,\n enclosingRef: enclosingRef,\n context: context,\n }), i);\n }\n // This is an object, run the selection set on it\n if (field.selectionSet) {\n return handleMissing(_this.executeSelectionSet({\n selectionSet: field.selectionSet,\n objectOrReference: item,\n enclosingRef: isReference(item) ? item : enclosingRef,\n context: context,\n }), i);\n }\n if (globalThis.__DEV__ !== false) {\n assertSelectionSetForIdValue(context.store, field, item);\n }\n return item;\n });\n return {\n result: context.canonizeResults ? this.canon.admit(array) : array,\n missing: missing,\n };\n };\n return StoreReader;\n}());\nexport { StoreReader };\nfunction firstMissing(tree) {\n try {\n JSON.stringify(tree, function (_, value) {\n if (typeof value === \"string\")\n throw value;\n return value;\n });\n }\n catch (result) {\n return result;\n }\n}\nfunction assertSelectionSetForIdValue(store, field, fieldValue) {\n if (!field.selectionSet) {\n var workSet_1 = new Set([fieldValue]);\n workSet_1.forEach(function (value) {\n if (isNonNullObject(value)) {\n invariant(\n !isReference(value),\n 10,\n getTypenameFromStoreObject(store, value),\n field.name.value\n );\n Object.values(value).forEach(workSet_1.add, workSet_1);\n }\n });\n }\n}\n","var toString = Object.prototype.toString;\n/**\n * Deeply clones a value to create a new instance.\n */\nexport function cloneDeep(value) {\n return cloneDeepHelper(value);\n}\nfunction cloneDeepHelper(val, seen) {\n switch (toString.call(val)) {\n case \"[object Array]\": {\n seen = seen || new Map();\n if (seen.has(val))\n return seen.get(val);\n var copy_1 = val.slice(0);\n seen.set(val, copy_1);\n copy_1.forEach(function (child, i) {\n copy_1[i] = cloneDeepHelper(child, seen);\n });\n return copy_1;\n }\n case \"[object Object]\": {\n seen = seen || new Map();\n if (seen.has(val))\n return seen.get(val);\n // High fidelity polyfills of Object.create and Object.getPrototypeOf are\n // possible in all JS environments, so we will assume they exist/work.\n var copy_2 = Object.create(Object.getPrototypeOf(val));\n seen.set(val, copy_2);\n Object.keys(val).forEach(function (key) {\n copy_2[key] = cloneDeepHelper(val[key], seen);\n });\n return copy_2;\n }\n default:\n return val;\n }\n}\n","import { dep, Slot } from \"optimism\";\n// Contextual Slot that acquires its value when custom read functions are\n// called in Policies#readField.\nexport var cacheSlot = new Slot();\nvar cacheInfoMap = new WeakMap();\nfunction getCacheInfo(cache) {\n var info = cacheInfoMap.get(cache);\n if (!info) {\n cacheInfoMap.set(cache, (info = {\n vars: new Set(),\n dep: dep(),\n }));\n }\n return info;\n}\nexport function forgetCache(cache) {\n getCacheInfo(cache).vars.forEach(function (rv) { return rv.forgetCache(cache); });\n}\n// Calling forgetCache(cache) serves to silence broadcasts and allows the\n// cache to be garbage collected. However, the varsByCache WeakMap\n// preserves the set of reactive variables that were previously associated\n// with this cache, which makes it possible to \"recall\" the cache at a\n// later time, by reattaching it to those variables. If the cache has been\n// garbage collected in the meantime, because it is no longer reachable,\n// you won't be able to call recallCache(cache), and the cache will\n// automatically disappear from the varsByCache WeakMap.\nexport function recallCache(cache) {\n getCacheInfo(cache).vars.forEach(function (rv) { return rv.attachCache(cache); });\n}\nexport function makeVar(value) {\n var caches = new Set();\n var listeners = new Set();\n var rv = function (newValue) {\n if (arguments.length > 0) {\n if (value !== newValue) {\n value = newValue;\n caches.forEach(function (cache) {\n // Invalidate any fields with custom read functions that\n // consumed this variable, so query results involving those\n // fields will be recomputed the next time we read them.\n getCacheInfo(cache).dep.dirty(rv);\n // Broadcast changes to any caches that have previously read\n // from this variable.\n broadcast(cache);\n });\n // Finally, notify any listeners added via rv.onNextChange.\n var oldListeners = Array.from(listeners);\n listeners.clear();\n oldListeners.forEach(function (listener) { return listener(value); });\n }\n }\n else {\n // When reading from the variable, obtain the current cache from\n // context via cacheSlot. This isn't entirely foolproof, but it's\n // the same system that powers varDep.\n var cache = cacheSlot.getValue();\n if (cache) {\n attach(cache);\n getCacheInfo(cache).dep(rv);\n }\n }\n return value;\n };\n rv.onNextChange = function (listener) {\n listeners.add(listener);\n return function () {\n listeners.delete(listener);\n };\n };\n var attach = (rv.attachCache = function (cache) {\n caches.add(cache);\n getCacheInfo(cache).vars.add(rv);\n return rv;\n });\n rv.forgetCache = function (cache) { return caches.delete(cache); };\n return rv;\n}\nfunction broadcast(cache) {\n if (cache.broadcastWatches) {\n cache.broadcastWatches();\n }\n}\n","import { invariant } from \"../../utilities/globals/index.js\";\nimport { argumentsObjectFromField, DeepMerger, isNonEmptyArray, isNonNullObject, } from \"../../utilities/index.js\";\nimport { hasOwn, isArray } from \"./helpers.js\";\n// Mapping from JSON-encoded KeySpecifier strings to associated information.\nvar specifierInfoCache = Object.create(null);\nfunction lookupSpecifierInfo(spec) {\n // It's safe to encode KeySpecifier arrays with JSON.stringify, since they're\n // just arrays of strings or nested KeySpecifier arrays, and the order of the\n // array elements is important (and suitably preserved by JSON.stringify).\n var cacheKey = JSON.stringify(spec);\n return (specifierInfoCache[cacheKey] ||\n (specifierInfoCache[cacheKey] = Object.create(null)));\n}\nexport function keyFieldsFnFromSpecifier(specifier) {\n var info = lookupSpecifierInfo(specifier);\n return (info.keyFieldsFn || (info.keyFieldsFn = function (object, context) {\n var extract = function (from, key) {\n return context.readField(key, from);\n };\n var keyObject = (context.keyObject = collectSpecifierPaths(specifier, function (schemaKeyPath) {\n var extracted = extractKeyPath(context.storeObject, schemaKeyPath, \n // Using context.readField to extract paths from context.storeObject\n // allows the extraction to see through Reference objects and respect\n // custom read functions.\n extract);\n if (extracted === void 0 &&\n object !== context.storeObject &&\n hasOwn.call(object, schemaKeyPath[0])) {\n // If context.storeObject fails to provide a value for the requested\n // path, fall back to the raw result object, if it has a top-level key\n // matching the first key in the path (schemaKeyPath[0]). This allows\n // key fields included in the written data to be saved in the cache\n // even if they are not selected explicitly in context.selectionSet.\n // Not being mentioned by context.selectionSet is convenient here,\n // since it means these extra fields cannot be affected by field\n // aliasing, which is why we can use extractKey instead of\n // context.readField for this extraction.\n extracted = extractKeyPath(object, schemaKeyPath, extractKey);\n }\n invariant(extracted !== void 0, 4, schemaKeyPath.join(\".\"), object);\n return extracted;\n }));\n return \"\".concat(context.typename, \":\").concat(JSON.stringify(keyObject));\n }));\n}\n// The keyArgs extraction process is roughly analogous to keyFields extraction,\n// but there are no aliases involved, missing fields are tolerated (by merely\n// omitting them from the key), and drawing from field.directives or variables\n// is allowed (in addition to drawing from the field's arguments object).\n// Concretely, these differences mean passing a different key path extractor\n// function to collectSpecifierPaths, reusing the shared extractKeyPath helper\n// wherever possible.\nexport function keyArgsFnFromSpecifier(specifier) {\n var info = lookupSpecifierInfo(specifier);\n return (info.keyArgsFn ||\n (info.keyArgsFn = function (args, _a) {\n var field = _a.field, variables = _a.variables, fieldName = _a.fieldName;\n var collected = collectSpecifierPaths(specifier, function (keyPath) {\n var firstKey = keyPath[0];\n var firstChar = firstKey.charAt(0);\n if (firstChar === \"@\") {\n if (field && isNonEmptyArray(field.directives)) {\n var directiveName_1 = firstKey.slice(1);\n // If the directive appears multiple times, only the first\n // occurrence's arguments will be used. TODO Allow repetition?\n // TODO Cache this work somehow, a la aliasMap?\n var d = field.directives.find(function (d) { return d.name.value === directiveName_1; });\n // Fortunately argumentsObjectFromField works for DirectiveNode!\n var directiveArgs = d && argumentsObjectFromField(d, variables);\n // For directives without arguments (d defined, but directiveArgs ===\n // null), the presence or absence of the directive still counts as\n // part of the field key, so we return null in those cases. If no\n // directive with this name was found for this field (d undefined and\n // thus directiveArgs undefined), we return undefined, which causes\n // this value to be omitted from the key object returned by\n // collectSpecifierPaths.\n return (directiveArgs &&\n extractKeyPath(directiveArgs, \n // If keyPath.length === 1, this code calls extractKeyPath with an\n // empty path, which works because it uses directiveArgs as the\n // extracted value.\n keyPath.slice(1)));\n }\n // If the key started with @ but there was no corresponding directive,\n // we want to omit this value from the key object, not fall through to\n // treating @whatever as a normal argument name.\n return;\n }\n if (firstChar === \"$\") {\n var variableName = firstKey.slice(1);\n if (variables && hasOwn.call(variables, variableName)) {\n var varKeyPath = keyPath.slice(0);\n varKeyPath[0] = variableName;\n return extractKeyPath(variables, varKeyPath);\n }\n // If the key started with $ but there was no corresponding variable, we\n // want to omit this value from the key object, not fall through to\n // treating $whatever as a normal argument name.\n return;\n }\n if (args) {\n return extractKeyPath(args, keyPath);\n }\n });\n var suffix = JSON.stringify(collected);\n // If no arguments were passed to this field, and it didn't have any other\n // field key contributions from directives or variables, hide the empty\n // :{} suffix from the field key. However, a field passed no arguments can\n // still end up with a non-empty :{...} suffix if its key configuration\n // refers to directives or variables.\n if (args || suffix !== \"{}\") {\n fieldName += \":\" + suffix;\n }\n return fieldName;\n }));\n}\nexport function collectSpecifierPaths(specifier, extractor) {\n // For each path specified by specifier, invoke the extractor, and repeatedly\n // merge the results together, with appropriate ancestor context.\n var merger = new DeepMerger();\n return getSpecifierPaths(specifier).reduce(function (collected, path) {\n var _a;\n var toMerge = extractor(path);\n if (toMerge !== void 0) {\n // This path is not expected to contain array indexes, so the toMerge\n // reconstruction will not contain arrays. TODO Fix this?\n for (var i = path.length - 1; i >= 0; --i) {\n toMerge = (_a = {}, _a[path[i]] = toMerge, _a);\n }\n collected = merger.merge(collected, toMerge);\n }\n return collected;\n }, Object.create(null));\n}\nexport function getSpecifierPaths(spec) {\n var info = lookupSpecifierInfo(spec);\n if (!info.paths) {\n var paths_1 = (info.paths = []);\n var currentPath_1 = [];\n spec.forEach(function (s, i) {\n if (isArray(s)) {\n getSpecifierPaths(s).forEach(function (p) { return paths_1.push(currentPath_1.concat(p)); });\n currentPath_1.length = 0;\n }\n else {\n currentPath_1.push(s);\n if (!isArray(spec[i + 1])) {\n paths_1.push(currentPath_1.slice(0));\n currentPath_1.length = 0;\n }\n }\n });\n }\n return info.paths;\n}\nfunction extractKey(object, key) {\n return object[key];\n}\nexport function extractKeyPath(object, path, extract) {\n // For each key in path, extract the corresponding child property from obj,\n // flattening arrays if encountered (uncommon for keyFields and keyArgs, but\n // possible). The final result of path.reduce is normalized so unexpected leaf\n // objects have their keys safely sorted. That final result is difficult to\n // type as anything other than any. You're welcome to try to improve the\n // return type, but keep in mind extractKeyPath is not a public function\n // (exported only for testing), so the effort may not be worthwhile unless the\n // limited set of actual callers (see above) pass arguments that TypeScript\n // can statically type. If we know only that path is some array of strings\n // (and not, say, a specific tuple of statically known strings), any (or\n // possibly unknown) is the honest answer.\n extract = extract || extractKey;\n return normalize(path.reduce(function reducer(obj, key) {\n return isArray(obj) ?\n obj.map(function (child) { return reducer(child, key); })\n : obj && extract(obj, key);\n }, object));\n}\nfunction normalize(value) {\n // Usually the extracted value will be a scalar value, since most primary\n // key fields are scalar, but just in case we get an object or an array, we\n // need to do some normalization of the order of (nested) keys.\n if (isNonNullObject(value)) {\n if (isArray(value)) {\n return value.map(normalize);\n }\n return collectSpecifierPaths(Object.keys(value).sort(), function (path) {\n return extractKeyPath(value, path);\n });\n }\n return value;\n}\n","import { __assign, __rest } from \"tslib\";\nimport { invariant, newInvariantError } from \"../../utilities/globals/index.js\";\nimport { storeKeyNameFromField, argumentsObjectFromField, isReference, getStoreKeyName, isNonNullObject, stringifyForDisplay, } from \"../../utilities/index.js\";\nimport { hasOwn, fieldNameFromStoreName, storeValueIsStoreObject, selectionSetMatchesResult, TypeOrFieldNameRegExp, defaultDataIdFromObject, isArray, } from \"./helpers.js\";\nimport { cacheSlot } from \"./reactiveVars.js\";\nimport { keyArgsFnFromSpecifier, keyFieldsFnFromSpecifier, } from \"./key-extractor.js\";\nfunction argsFromFieldSpecifier(spec) {\n return (spec.args !== void 0 ? spec.args\n : spec.field ? argumentsObjectFromField(spec.field, spec.variables)\n : null);\n}\nvar nullKeyFieldsFn = function () { return void 0; };\nvar simpleKeyArgsFn = function (_args, context) { return context.fieldName; };\n// These merge functions can be selected by specifying merge:true or\n// merge:false in a field policy.\nvar mergeTrueFn = function (existing, incoming, _a) {\n var mergeObjects = _a.mergeObjects;\n return mergeObjects(existing, incoming);\n};\nvar mergeFalseFn = function (_, incoming) { return incoming; };\nvar Policies = /** @class */ (function () {\n function Policies(config) {\n this.config = config;\n this.typePolicies = Object.create(null);\n this.toBeAdded = Object.create(null);\n // Map from subtype names to sets of supertype names. Note that this\n // representation inverts the structure of possibleTypes (whose keys are\n // supertypes and whose values are arrays of subtypes) because it tends\n // to be much more efficient to search upwards than downwards.\n this.supertypeMap = new Map();\n // Any fuzzy subtypes specified by possibleTypes will be converted to\n // RegExp objects and recorded here. Every key of this map can also be\n // found in supertypeMap. In many cases this Map will be empty, which\n // means no fuzzy subtype checking will happen in fragmentMatches.\n this.fuzzySubtypes = new Map();\n this.rootIdsByTypename = Object.create(null);\n this.rootTypenamesById = Object.create(null);\n this.usingPossibleTypes = false;\n this.config = __assign({ dataIdFromObject: defaultDataIdFromObject }, config);\n this.cache = this.config.cache;\n this.setRootTypename(\"Query\");\n this.setRootTypename(\"Mutation\");\n this.setRootTypename(\"Subscription\");\n if (config.possibleTypes) {\n this.addPossibleTypes(config.possibleTypes);\n }\n if (config.typePolicies) {\n this.addTypePolicies(config.typePolicies);\n }\n }\n Policies.prototype.identify = function (object, partialContext) {\n var _a;\n var policies = this;\n var typename = (partialContext &&\n (partialContext.typename || ((_a = partialContext.storeObject) === null || _a === void 0 ? void 0 : _a.__typename))) ||\n object.__typename;\n // It should be possible to write root Query fields with writeFragment,\n // using { __typename: \"Query\", ... } as the data, but it does not make\n // sense to allow the same identification behavior for the Mutation and\n // Subscription types, since application code should never be writing\n // directly to (or reading directly from) those root objects.\n if (typename === this.rootTypenamesById.ROOT_QUERY) {\n return [\"ROOT_QUERY\"];\n }\n // Default context.storeObject to object if not otherwise provided.\n var storeObject = (partialContext && partialContext.storeObject) || object;\n var context = __assign(__assign({}, partialContext), { typename: typename, storeObject: storeObject, readField: (partialContext && partialContext.readField) ||\n function () {\n var options = normalizeReadFieldOptions(arguments, storeObject);\n return policies.readField(options, {\n store: policies.cache[\"data\"],\n variables: options.variables,\n });\n } });\n var id;\n var policy = typename && this.getTypePolicy(typename);\n var keyFn = (policy && policy.keyFn) || this.config.dataIdFromObject;\n while (keyFn) {\n var specifierOrId = keyFn(__assign(__assign({}, object), storeObject), context);\n if (isArray(specifierOrId)) {\n keyFn = keyFieldsFnFromSpecifier(specifierOrId);\n }\n else {\n id = specifierOrId;\n break;\n }\n }\n id = id ? String(id) : void 0;\n return context.keyObject ? [id, context.keyObject] : [id];\n };\n Policies.prototype.addTypePolicies = function (typePolicies) {\n var _this = this;\n Object.keys(typePolicies).forEach(function (typename) {\n var _a = typePolicies[typename], queryType = _a.queryType, mutationType = _a.mutationType, subscriptionType = _a.subscriptionType, incoming = __rest(_a, [\"queryType\", \"mutationType\", \"subscriptionType\"]);\n // Though {query,mutation,subscription}Type configurations are rare,\n // it's important to call setRootTypename as early as possible,\n // since these configurations should apply consistently for the\n // entire lifetime of the cache. Also, since only one __typename can\n // qualify as one of these root types, these three properties cannot\n // be inherited, unlike the rest of the incoming properties. That\n // restriction is convenient, because the purpose of this.toBeAdded\n // is to delay the processing of type/field policies until the first\n // time they're used, allowing policies to be added in any order as\n // long as all relevant policies (including policies for supertypes)\n // have been added by the time a given policy is used for the first\n // time. In other words, since inheritance doesn't matter for these\n // properties, there's also no need to delay their processing using\n // the this.toBeAdded queue.\n if (queryType)\n _this.setRootTypename(\"Query\", typename);\n if (mutationType)\n _this.setRootTypename(\"Mutation\", typename);\n if (subscriptionType)\n _this.setRootTypename(\"Subscription\", typename);\n if (hasOwn.call(_this.toBeAdded, typename)) {\n _this.toBeAdded[typename].push(incoming);\n }\n else {\n _this.toBeAdded[typename] = [incoming];\n }\n });\n };\n Policies.prototype.updateTypePolicy = function (typename, incoming) {\n var _this = this;\n var existing = this.getTypePolicy(typename);\n var keyFields = incoming.keyFields, fields = incoming.fields;\n function setMerge(existing, merge) {\n existing.merge =\n typeof merge === \"function\" ? merge\n // Pass merge:true as a shorthand for a merge implementation\n // that returns options.mergeObjects(existing, incoming).\n : merge === true ? mergeTrueFn\n // Pass merge:false to make incoming always replace existing\n // without any warnings about data clobbering.\n : merge === false ? mergeFalseFn\n : existing.merge;\n }\n // Type policies can define merge functions, as an alternative to\n // using field policies to merge child objects.\n setMerge(existing, incoming.merge);\n existing.keyFn =\n // Pass false to disable normalization for this typename.\n keyFields === false ? nullKeyFieldsFn\n // Pass an array of strings to use those fields to compute a\n // composite ID for objects of this typename.\n : isArray(keyFields) ? keyFieldsFnFromSpecifier(keyFields)\n // Pass a function to take full control over identification.\n : typeof keyFields === \"function\" ? keyFields\n // Leave existing.keyFn unchanged if above cases fail.\n : existing.keyFn;\n if (fields) {\n Object.keys(fields).forEach(function (fieldName) {\n var existing = _this.getFieldPolicy(typename, fieldName, true);\n var incoming = fields[fieldName];\n if (typeof incoming === \"function\") {\n existing.read = incoming;\n }\n else {\n var keyArgs = incoming.keyArgs, read = incoming.read, merge = incoming.merge;\n existing.keyFn =\n // Pass false to disable argument-based differentiation of\n // field identities.\n keyArgs === false ? simpleKeyArgsFn\n // Pass an array of strings to use named arguments to\n // compute a composite identity for the field.\n : isArray(keyArgs) ? keyArgsFnFromSpecifier(keyArgs)\n // Pass a function to take full control over field identity.\n : typeof keyArgs === \"function\" ? keyArgs\n // Leave existing.keyFn unchanged if above cases fail.\n : existing.keyFn;\n if (typeof read === \"function\") {\n existing.read = read;\n }\n setMerge(existing, merge);\n }\n if (existing.read && existing.merge) {\n // If we have both a read and a merge function, assume\n // keyArgs:false, because read and merge together can take\n // responsibility for interpreting arguments in and out. This\n // default assumption can always be overridden by specifying\n // keyArgs explicitly in the FieldPolicy.\n existing.keyFn = existing.keyFn || simpleKeyArgsFn;\n }\n });\n }\n };\n Policies.prototype.setRootTypename = function (which, typename) {\n if (typename === void 0) { typename = which; }\n var rootId = \"ROOT_\" + which.toUpperCase();\n var old = this.rootTypenamesById[rootId];\n if (typename !== old) {\n invariant(!old || old === which, 5, which);\n // First, delete any old __typename associated with this rootId from\n // rootIdsByTypename.\n if (old)\n delete this.rootIdsByTypename[old];\n // Now make this the only __typename that maps to this rootId.\n this.rootIdsByTypename[typename] = rootId;\n // Finally, update the __typename associated with this rootId.\n this.rootTypenamesById[rootId] = typename;\n }\n };\n Policies.prototype.addPossibleTypes = function (possibleTypes) {\n var _this = this;\n this.usingPossibleTypes = true;\n Object.keys(possibleTypes).forEach(function (supertype) {\n // Make sure all types have an entry in this.supertypeMap, even if\n // their supertype set is empty, so we can return false immediately\n // from policies.fragmentMatches for unknown supertypes.\n _this.getSupertypeSet(supertype, true);\n possibleTypes[supertype].forEach(function (subtype) {\n _this.getSupertypeSet(subtype, true).add(supertype);\n var match = subtype.match(TypeOrFieldNameRegExp);\n if (!match || match[0] !== subtype) {\n // TODO Don't interpret just any invalid typename as a RegExp.\n _this.fuzzySubtypes.set(subtype, new RegExp(subtype));\n }\n });\n });\n };\n Policies.prototype.getTypePolicy = function (typename) {\n var _this = this;\n if (!hasOwn.call(this.typePolicies, typename)) {\n var policy_1 = (this.typePolicies[typename] = Object.create(null));\n policy_1.fields = Object.create(null);\n // When the TypePolicy for typename is first accessed, instead of\n // starting with an empty policy object, inherit any properties or\n // fields from the type policies of the supertypes of typename.\n //\n // Any properties or fields defined explicitly within the TypePolicy\n // for typename will take precedence, and if there are multiple\n // supertypes, the properties of policies whose types were added\n // later via addPossibleTypes will take precedence over those of\n // earlier supertypes. TODO Perhaps we should warn about these\n // conflicts in development, and recommend defining the property\n // explicitly in the subtype policy?\n //\n // Field policy inheritance is atomic/shallow: you can't inherit a\n // field policy and then override just its read function, since read\n // and merge functions often need to cooperate, so changing only one\n // of them would be a recipe for inconsistency.\n //\n // Once the TypePolicy for typename has been accessed, its properties can\n // still be updated directly using addTypePolicies, but future changes to\n // inherited supertype policies will not be reflected in this subtype\n // policy, because this code runs at most once per typename.\n var supertypes_1 = this.supertypeMap.get(typename);\n if (!supertypes_1 && this.fuzzySubtypes.size) {\n // To make the inheritance logic work for unknown typename strings that\n // may have fuzzy supertypes, we give this typename an empty supertype\n // set and then populate it with any fuzzy supertypes that match.\n supertypes_1 = this.getSupertypeSet(typename, true);\n // This only works for typenames that are directly matched by a fuzzy\n // supertype. What if there is an intermediate chain of supertypes?\n // While possible, that situation can only be solved effectively by\n // specifying the intermediate relationships via possibleTypes, manually\n // and in a non-fuzzy way.\n this.fuzzySubtypes.forEach(function (regExp, fuzzy) {\n if (regExp.test(typename)) {\n // The fuzzy parameter is just the original string version of regExp\n // (not a valid __typename string), but we can look up the\n // associated supertype(s) in this.supertypeMap.\n var fuzzySupertypes = _this.supertypeMap.get(fuzzy);\n if (fuzzySupertypes) {\n fuzzySupertypes.forEach(function (supertype) {\n return supertypes_1.add(supertype);\n });\n }\n }\n });\n }\n if (supertypes_1 && supertypes_1.size) {\n supertypes_1.forEach(function (supertype) {\n var _a = _this.getTypePolicy(supertype), fields = _a.fields, rest = __rest(_a, [\"fields\"]);\n Object.assign(policy_1, rest);\n Object.assign(policy_1.fields, fields);\n });\n }\n }\n var inbox = this.toBeAdded[typename];\n if (inbox && inbox.length) {\n // Merge the pending policies into this.typePolicies, in the order they\n // were originally passed to addTypePolicy.\n inbox.splice(0).forEach(function (policy) {\n _this.updateTypePolicy(typename, policy);\n });\n }\n return this.typePolicies[typename];\n };\n Policies.prototype.getFieldPolicy = function (typename, fieldName, createIfMissing) {\n if (typename) {\n var fieldPolicies = this.getTypePolicy(typename).fields;\n return (fieldPolicies[fieldName] ||\n (createIfMissing && (fieldPolicies[fieldName] = Object.create(null))));\n }\n };\n Policies.prototype.getSupertypeSet = function (subtype, createIfMissing) {\n var supertypeSet = this.supertypeMap.get(subtype);\n if (!supertypeSet && createIfMissing) {\n this.supertypeMap.set(subtype, (supertypeSet = new Set()));\n }\n return supertypeSet;\n };\n Policies.prototype.fragmentMatches = function (fragment, typename, result, variables) {\n var _this = this;\n if (!fragment.typeCondition)\n return true;\n // If the fragment has a type condition but the object we're matching\n // against does not have a __typename, the fragment cannot match.\n if (!typename)\n return false;\n var supertype = fragment.typeCondition.name.value;\n // Common case: fragment type condition and __typename are the same.\n if (typename === supertype)\n return true;\n if (this.usingPossibleTypes && this.supertypeMap.has(supertype)) {\n var typenameSupertypeSet = this.getSupertypeSet(typename, true);\n var workQueue_1 = [typenameSupertypeSet];\n var maybeEnqueue_1 = function (subtype) {\n var supertypeSet = _this.getSupertypeSet(subtype, false);\n if (supertypeSet &&\n supertypeSet.size &&\n workQueue_1.indexOf(supertypeSet) < 0) {\n workQueue_1.push(supertypeSet);\n }\n };\n // We need to check fuzzy subtypes only if we encountered fuzzy\n // subtype strings in addPossibleTypes, and only while writing to\n // the cache, since that's when selectionSetMatchesResult gives a\n // strong signal of fragment matching. The StoreReader class calls\n // policies.fragmentMatches without passing a result object, so\n // needToCheckFuzzySubtypes is always false while reading.\n var needToCheckFuzzySubtypes = !!(result && this.fuzzySubtypes.size);\n var checkingFuzzySubtypes = false;\n // It's important to keep evaluating workQueue.length each time through\n // the loop, because the queue can grow while we're iterating over it.\n for (var i = 0; i < workQueue_1.length; ++i) {\n var supertypeSet = workQueue_1[i];\n if (supertypeSet.has(supertype)) {\n if (!typenameSupertypeSet.has(supertype)) {\n if (checkingFuzzySubtypes) {\n globalThis.__DEV__ !== false && invariant.warn(6, typename, supertype);\n }\n // Record positive results for faster future lookup.\n // Unfortunately, we cannot safely cache negative results,\n // because new possibleTypes data could always be added to the\n // Policies class.\n typenameSupertypeSet.add(supertype);\n }\n return true;\n }\n supertypeSet.forEach(maybeEnqueue_1);\n if (needToCheckFuzzySubtypes &&\n // Start checking fuzzy subtypes only after exhausting all\n // non-fuzzy subtypes (after the final iteration of the loop).\n i === workQueue_1.length - 1 &&\n // We could wait to compare fragment.selectionSet to result\n // after we verify the supertype, but this check is often less\n // expensive than that search, and we will have to do the\n // comparison anyway whenever we find a potential match.\n selectionSetMatchesResult(fragment.selectionSet, result, variables)) {\n // We don't always need to check fuzzy subtypes (if no result\n // was provided, or !this.fuzzySubtypes.size), but, when we do,\n // we only want to check them once.\n needToCheckFuzzySubtypes = false;\n checkingFuzzySubtypes = true;\n // If we find any fuzzy subtypes that match typename, extend the\n // workQueue to search through the supertypes of those fuzzy\n // subtypes. Otherwise the for-loop will terminate and we'll\n // return false below.\n this.fuzzySubtypes.forEach(function (regExp, fuzzyString) {\n var match = typename.match(regExp);\n if (match && match[0] === typename) {\n maybeEnqueue_1(fuzzyString);\n }\n });\n }\n }\n }\n return false;\n };\n Policies.prototype.hasKeyArgs = function (typename, fieldName) {\n var policy = this.getFieldPolicy(typename, fieldName, false);\n return !!(policy && policy.keyFn);\n };\n Policies.prototype.getStoreFieldName = function (fieldSpec) {\n var typename = fieldSpec.typename, fieldName = fieldSpec.fieldName;\n var policy = this.getFieldPolicy(typename, fieldName, false);\n var storeFieldName;\n var keyFn = policy && policy.keyFn;\n if (keyFn && typename) {\n var context = {\n typename: typename,\n fieldName: fieldName,\n field: fieldSpec.field || null,\n variables: fieldSpec.variables,\n };\n var args = argsFromFieldSpecifier(fieldSpec);\n while (keyFn) {\n var specifierOrString = keyFn(args, context);\n if (isArray(specifierOrString)) {\n keyFn = keyArgsFnFromSpecifier(specifierOrString);\n }\n else {\n // If the custom keyFn returns a falsy value, fall back to\n // fieldName instead.\n storeFieldName = specifierOrString || fieldName;\n break;\n }\n }\n }\n if (storeFieldName === void 0) {\n storeFieldName =\n fieldSpec.field ?\n storeKeyNameFromField(fieldSpec.field, fieldSpec.variables)\n : getStoreKeyName(fieldName, argsFromFieldSpecifier(fieldSpec));\n }\n // Returning false from a keyArgs function is like configuring\n // keyArgs: false, but more dynamic.\n if (storeFieldName === false) {\n return fieldName;\n }\n // Make sure custom field names start with the actual field.name.value\n // of the field, so we can always figure out which properties of a\n // StoreObject correspond to which original field names.\n return fieldName === fieldNameFromStoreName(storeFieldName) ? storeFieldName\n : fieldName + \":\" + storeFieldName;\n };\n Policies.prototype.readField = function (options, context) {\n var objectOrReference = options.from;\n if (!objectOrReference)\n return;\n var nameOrField = options.field || options.fieldName;\n if (!nameOrField)\n return;\n if (options.typename === void 0) {\n var typename = context.store.getFieldValue(objectOrReference, \"__typename\");\n if (typename)\n options.typename = typename;\n }\n var storeFieldName = this.getStoreFieldName(options);\n var fieldName = fieldNameFromStoreName(storeFieldName);\n var existing = context.store.getFieldValue(objectOrReference, storeFieldName);\n var policy = this.getFieldPolicy(options.typename, fieldName, false);\n var read = policy && policy.read;\n if (read) {\n var readOptions = makeFieldFunctionOptions(this, objectOrReference, options, context, context.store.getStorage(isReference(objectOrReference) ?\n objectOrReference.__ref\n : objectOrReference, storeFieldName));\n // Call read(existing, readOptions) with cacheSlot holding this.cache.\n return cacheSlot.withValue(this.cache, read, [\n existing,\n readOptions,\n ]);\n }\n return existing;\n };\n Policies.prototype.getReadFunction = function (typename, fieldName) {\n var policy = this.getFieldPolicy(typename, fieldName, false);\n return policy && policy.read;\n };\n Policies.prototype.getMergeFunction = function (parentTypename, fieldName, childTypename) {\n var policy = this.getFieldPolicy(parentTypename, fieldName, false);\n var merge = policy && policy.merge;\n if (!merge && childTypename) {\n policy = this.getTypePolicy(childTypename);\n merge = policy && policy.merge;\n }\n return merge;\n };\n Policies.prototype.runMergeFunction = function (existing, incoming, _a, context, storage) {\n var field = _a.field, typename = _a.typename, merge = _a.merge;\n if (merge === mergeTrueFn) {\n // Instead of going to the trouble of creating a full\n // FieldFunctionOptions object and calling mergeTrueFn, we can\n // simply call mergeObjects, as mergeTrueFn would.\n return makeMergeObjectsFunction(context.store)(existing, incoming);\n }\n if (merge === mergeFalseFn) {\n // Likewise for mergeFalseFn, whose implementation is even simpler.\n return incoming;\n }\n // If cache.writeQuery or cache.writeFragment was called with\n // options.overwrite set to true, we still call merge functions, but\n // the existing data is always undefined, so the merge function will\n // not attempt to combine the incoming data with the existing data.\n if (context.overwrite) {\n existing = void 0;\n }\n return merge(existing, incoming, makeFieldFunctionOptions(this, \n // Unlike options.readField for read functions, we do not fall\n // back to the current object if no foreignObjOrRef is provided,\n // because it's not clear what the current object should be for\n // merge functions: the (possibly undefined) existing object, or\n // the incoming object? If you think your merge function needs\n // to read sibling fields in order to produce a new value for\n // the current field, you might want to rethink your strategy,\n // because that's a recipe for making merge behavior sensitive\n // to the order in which fields are written into the cache.\n // However, readField(name, ref) is useful for merge functions\n // that need to deduplicate child objects and references.\n void 0, {\n typename: typename,\n fieldName: field.name.value,\n field: field,\n variables: context.variables,\n }, context, storage || Object.create(null)));\n };\n return Policies;\n}());\nexport { Policies };\nfunction makeFieldFunctionOptions(policies, objectOrReference, fieldSpec, context, storage) {\n var storeFieldName = policies.getStoreFieldName(fieldSpec);\n var fieldName = fieldNameFromStoreName(storeFieldName);\n var variables = fieldSpec.variables || context.variables;\n var _a = context.store, toReference = _a.toReference, canRead = _a.canRead;\n return {\n args: argsFromFieldSpecifier(fieldSpec),\n field: fieldSpec.field || null,\n fieldName: fieldName,\n storeFieldName: storeFieldName,\n variables: variables,\n isReference: isReference,\n toReference: toReference,\n storage: storage,\n cache: policies.cache,\n canRead: canRead,\n readField: function () {\n return policies.readField(normalizeReadFieldOptions(arguments, objectOrReference, variables), context);\n },\n mergeObjects: makeMergeObjectsFunction(context.store),\n };\n}\nexport function normalizeReadFieldOptions(readFieldArgs, objectOrReference, variables) {\n var fieldNameOrOptions = readFieldArgs[0], from = readFieldArgs[1], argc = readFieldArgs.length;\n var options;\n if (typeof fieldNameOrOptions === \"string\") {\n options = {\n fieldName: fieldNameOrOptions,\n // Default to objectOrReference only when no second argument was\n // passed for the from parameter, not when undefined is explicitly\n // passed as the second argument.\n from: argc > 1 ? from : objectOrReference,\n };\n }\n else {\n options = __assign({}, fieldNameOrOptions);\n // Default to objectOrReference only when fieldNameOrOptions.from is\n // actually omitted, rather than just undefined.\n if (!hasOwn.call(options, \"from\")) {\n options.from = objectOrReference;\n }\n }\n if (globalThis.__DEV__ !== false && options.from === void 0) {\n globalThis.__DEV__ !== false && invariant.warn(7, stringifyForDisplay(Array.from(readFieldArgs)));\n }\n if (void 0 === options.variables) {\n options.variables = variables;\n }\n return options;\n}\nfunction makeMergeObjectsFunction(store) {\n return function mergeObjects(existing, incoming) {\n if (isArray(existing) || isArray(incoming)) {\n throw newInvariantError(8);\n }\n // These dynamic checks are necessary because the parameters of a\n // custom merge function can easily have the any type, so the type\n // system cannot always enforce the StoreObject | Reference parameter\n // types of options.mergeObjects.\n if (isNonNullObject(existing) && isNonNullObject(incoming)) {\n var eType = store.getFieldValue(existing, \"__typename\");\n var iType = store.getFieldValue(incoming, \"__typename\");\n var typesDiffer = eType && iType && eType !== iType;\n if (typesDiffer) {\n return incoming;\n }\n if (isReference(existing) && storeValueIsStoreObject(incoming)) {\n // Update the normalized EntityStore for the entity identified by\n // existing.__ref, preferring/overwriting any fields contributed by the\n // newer incoming StoreObject.\n store.merge(existing.__ref, incoming);\n return existing;\n }\n if (storeValueIsStoreObject(existing) && isReference(incoming)) {\n // Update the normalized EntityStore for the entity identified by\n // incoming.__ref, taking fields from the older existing object only if\n // those fields are not already present in the newer StoreObject\n // identified by incoming.__ref.\n store.merge(existing, incoming.__ref);\n return incoming;\n }\n if (storeValueIsStoreObject(existing) &&\n storeValueIsStoreObject(incoming)) {\n return __assign(__assign({}, existing), incoming);\n }\n }\n return incoming;\n };\n}\n","import { __assign } from \"tslib\";\nimport { invariant, newInvariantError } from \"../../utilities/globals/index.js\";\nimport { equal } from \"@wry/equality\";\nimport { Trie } from \"@wry/trie\";\nimport { Kind } from \"graphql\";\nimport { getFragmentFromSelection, getDefaultValues, getOperationDefinition, getTypenameFromResult, makeReference, isField, resultKeyNameFromField, isReference, shouldInclude, cloneDeep, addTypenameToDocument, isNonEmptyArray, argumentsObjectFromField, canonicalStringify, } from \"../../utilities/index.js\";\nimport { isArray, makeProcessedFieldsMerger, fieldNameFromStoreName, storeValueIsStoreObject, extractFragmentContext, } from \"./helpers.js\";\nimport { normalizeReadFieldOptions } from \"./policies.js\";\n// Since there are only four possible combinations of context.clientOnly and\n// context.deferred values, we should need at most four \"flavors\" of any given\n// WriteContext. To avoid creating multiple copies of the same context, we cache\n// the contexts in the context.flavors Map (shared by all flavors) according to\n// their clientOnly and deferred values (always in that order).\nfunction getContextFlavor(context, clientOnly, deferred) {\n var key = \"\".concat(clientOnly).concat(deferred);\n var flavored = context.flavors.get(key);\n if (!flavored) {\n context.flavors.set(key, (flavored =\n context.clientOnly === clientOnly && context.deferred === deferred ?\n context\n : __assign(__assign({}, context), { clientOnly: clientOnly, deferred: deferred })));\n }\n return flavored;\n}\nvar StoreWriter = /** @class */ (function () {\n function StoreWriter(cache, reader, fragments) {\n this.cache = cache;\n this.reader = reader;\n this.fragments = fragments;\n }\n StoreWriter.prototype.writeToStore = function (store, _a) {\n var _this = this;\n var query = _a.query, result = _a.result, dataId = _a.dataId, variables = _a.variables, overwrite = _a.overwrite;\n var operationDefinition = getOperationDefinition(query);\n var merger = makeProcessedFieldsMerger();\n variables = __assign(__assign({}, getDefaultValues(operationDefinition)), variables);\n var context = __assign(__assign({ store: store, written: Object.create(null), merge: function (existing, incoming) {\n return merger.merge(existing, incoming);\n }, variables: variables, varString: canonicalStringify(variables) }, extractFragmentContext(query, this.fragments)), { overwrite: !!overwrite, incomingById: new Map(), clientOnly: false, deferred: false, flavors: new Map() });\n var ref = this.processSelectionSet({\n result: result || Object.create(null),\n dataId: dataId,\n selectionSet: operationDefinition.selectionSet,\n mergeTree: { map: new Map() },\n context: context,\n });\n if (!isReference(ref)) {\n throw newInvariantError(11, result);\n }\n // So far, the store has not been modified, so now it's time to process\n // context.incomingById and merge those incoming fields into context.store.\n context.incomingById.forEach(function (_a, dataId) {\n var storeObject = _a.storeObject, mergeTree = _a.mergeTree, fieldNodeSet = _a.fieldNodeSet;\n var entityRef = makeReference(dataId);\n if (mergeTree && mergeTree.map.size) {\n var applied = _this.applyMerges(mergeTree, entityRef, storeObject, context);\n if (isReference(applied)) {\n // Assume References returned by applyMerges have already been merged\n // into the store. See makeMergeObjectsFunction in policies.ts for an\n // example of how this can happen.\n return;\n }\n // Otherwise, applyMerges returned a StoreObject, whose fields we should\n // merge into the store (see store.merge statement below).\n storeObject = applied;\n }\n if (globalThis.__DEV__ !== false && !context.overwrite) {\n var fieldsWithSelectionSets_1 = Object.create(null);\n fieldNodeSet.forEach(function (field) {\n if (field.selectionSet) {\n fieldsWithSelectionSets_1[field.name.value] = true;\n }\n });\n var hasSelectionSet_1 = function (storeFieldName) {\n return fieldsWithSelectionSets_1[fieldNameFromStoreName(storeFieldName)] ===\n true;\n };\n var hasMergeFunction_1 = function (storeFieldName) {\n var childTree = mergeTree && mergeTree.map.get(storeFieldName);\n return Boolean(childTree && childTree.info && childTree.info.merge);\n };\n Object.keys(storeObject).forEach(function (storeFieldName) {\n // If a merge function was defined for this field, trust that it\n // did the right thing about (not) clobbering data. If the field\n // has no selection set, it's a scalar field, so it doesn't need\n // a merge function (even if it's an object, like JSON data).\n if (hasSelectionSet_1(storeFieldName) &&\n !hasMergeFunction_1(storeFieldName)) {\n warnAboutDataLoss(entityRef, storeObject, storeFieldName, context.store);\n }\n });\n }\n store.merge(dataId, storeObject);\n });\n // Any IDs written explicitly to the cache will be retained as\n // reachable root IDs for garbage collection purposes. Although this\n // logic includes root IDs like ROOT_QUERY and ROOT_MUTATION, their\n // retainment counts are effectively ignored because cache.gc() always\n // includes them in its root ID set.\n store.retain(ref.__ref);\n return ref;\n };\n StoreWriter.prototype.processSelectionSet = function (_a) {\n var _this = this;\n var dataId = _a.dataId, result = _a.result, selectionSet = _a.selectionSet, context = _a.context, \n // This object allows processSelectionSet to report useful information\n // to its callers without explicitly returning that information.\n mergeTree = _a.mergeTree;\n var policies = this.cache.policies;\n // This variable will be repeatedly updated using context.merge to\n // accumulate all fields that need to be written into the store.\n var incoming = Object.create(null);\n // If typename was not passed in, infer it. Note that typename is\n // always passed in for tricky-to-infer cases such as \"Query\" for\n // ROOT_QUERY.\n var typename = (dataId && policies.rootTypenamesById[dataId]) ||\n getTypenameFromResult(result, selectionSet, context.fragmentMap) ||\n (dataId && context.store.get(dataId, \"__typename\"));\n if (\"string\" === typeof typename) {\n incoming.__typename = typename;\n }\n // This readField function will be passed as context.readField in the\n // KeyFieldsContext object created within policies.identify (called below).\n // In addition to reading from the existing context.store (thanks to the\n // policies.readField(options, context) line at the very bottom), this\n // version of readField can read from Reference objects that are currently\n // pending in context.incomingById, which is important whenever keyFields\n // need to be extracted from a child object that processSelectionSet has\n // turned into a Reference.\n var readField = function () {\n var options = normalizeReadFieldOptions(arguments, incoming, context.variables);\n if (isReference(options.from)) {\n var info = context.incomingById.get(options.from.__ref);\n if (info) {\n var result_1 = policies.readField(__assign(__assign({}, options), { from: info.storeObject }), context);\n if (result_1 !== void 0) {\n return result_1;\n }\n }\n }\n return policies.readField(options, context);\n };\n var fieldNodeSet = new Set();\n this.flattenFields(selectionSet, result, \n // This WriteContext will be the default context value for fields returned\n // by the flattenFields method, but some fields may be assigned a modified\n // context, depending on the presence of @client and other directives.\n context, typename).forEach(function (context, field) {\n var _a;\n var resultFieldKey = resultKeyNameFromField(field);\n var value = result[resultFieldKey];\n fieldNodeSet.add(field);\n if (value !== void 0) {\n var storeFieldName = policies.getStoreFieldName({\n typename: typename,\n fieldName: field.name.value,\n field: field,\n variables: context.variables,\n });\n var childTree = getChildMergeTree(mergeTree, storeFieldName);\n var incomingValue = _this.processFieldValue(value, field, \n // Reset context.clientOnly and context.deferred to their default\n // values before processing nested selection sets.\n field.selectionSet ?\n getContextFlavor(context, false, false)\n : context, childTree);\n // To determine if this field holds a child object with a merge function\n // defined in its type policy (see PR #7070), we need to figure out the\n // child object's __typename.\n var childTypename = void 0;\n // The field's value can be an object that has a __typename only if the\n // field has a selection set. Otherwise incomingValue is scalar.\n if (field.selectionSet &&\n (isReference(incomingValue) || storeValueIsStoreObject(incomingValue))) {\n childTypename = readField(\"__typename\", incomingValue);\n }\n var merge = policies.getMergeFunction(typename, field.name.value, childTypename);\n if (merge) {\n childTree.info = {\n // TODO Check compatibility against any existing childTree.field?\n field: field,\n typename: typename,\n merge: merge,\n };\n }\n else {\n maybeRecycleChildMergeTree(mergeTree, storeFieldName);\n }\n incoming = context.merge(incoming, (_a = {},\n _a[storeFieldName] = incomingValue,\n _a));\n }\n else if (globalThis.__DEV__ !== false &&\n !context.clientOnly &&\n !context.deferred &&\n !addTypenameToDocument.added(field) &&\n // If the field has a read function, it may be a synthetic field or\n // provide a default value, so its absence from the written data should\n // not be cause for alarm.\n !policies.getReadFunction(typename, field.name.value)) {\n globalThis.__DEV__ !== false && invariant.error(12, resultKeyNameFromField(field), result);\n }\n });\n // Identify the result object, even if dataId was already provided,\n // since we always need keyObject below.\n try {\n var _b = policies.identify(result, {\n typename: typename,\n selectionSet: selectionSet,\n fragmentMap: context.fragmentMap,\n storeObject: incoming,\n readField: readField,\n }), id = _b[0], keyObject = _b[1];\n // If dataId was not provided, fall back to the id just generated by\n // policies.identify.\n dataId = dataId || id;\n // Write any key fields that were used during identification, even if\n // they were not mentioned in the original query.\n if (keyObject) {\n // TODO Reverse the order of the arguments?\n incoming = context.merge(incoming, keyObject);\n }\n }\n catch (e) {\n // If dataId was provided, tolerate failure of policies.identify.\n if (!dataId)\n throw e;\n }\n if (\"string\" === typeof dataId) {\n var dataRef = makeReference(dataId);\n // Avoid processing the same entity object using the same selection\n // set more than once. We use an array instead of a Set since most\n // entity IDs will be written using only one selection set, so the\n // size of this array is likely to be very small, meaning indexOf is\n // likely to be faster than Set.prototype.has.\n var sets = context.written[dataId] || (context.written[dataId] = []);\n if (sets.indexOf(selectionSet) >= 0)\n return dataRef;\n sets.push(selectionSet);\n // If we're about to write a result object into the store, but we\n // happen to know that the exact same (===) result object would be\n // returned if we were to reread the result with the same inputs,\n // then we can skip the rest of the processSelectionSet work for\n // this object, and immediately return a Reference to it.\n if (this.reader &&\n this.reader.isFresh(result, dataRef, selectionSet, context)) {\n return dataRef;\n }\n var previous_1 = context.incomingById.get(dataId);\n if (previous_1) {\n previous_1.storeObject = context.merge(previous_1.storeObject, incoming);\n previous_1.mergeTree = mergeMergeTrees(previous_1.mergeTree, mergeTree);\n fieldNodeSet.forEach(function (field) { return previous_1.fieldNodeSet.add(field); });\n }\n else {\n context.incomingById.set(dataId, {\n storeObject: incoming,\n // Save a reference to mergeTree only if it is not empty, because\n // empty MergeTrees may be recycled by maybeRecycleChildMergeTree and\n // reused for entirely different parts of the result tree.\n mergeTree: mergeTreeIsEmpty(mergeTree) ? void 0 : mergeTree,\n fieldNodeSet: fieldNodeSet,\n });\n }\n return dataRef;\n }\n return incoming;\n };\n StoreWriter.prototype.processFieldValue = function (value, field, context, mergeTree) {\n var _this = this;\n if (!field.selectionSet || value === null) {\n // In development, we need to clone scalar values so that they can be\n // safely frozen with maybeDeepFreeze in readFromStore.ts. In production,\n // it's cheaper to store the scalar values directly in the cache.\n return globalThis.__DEV__ !== false ? cloneDeep(value) : value;\n }\n if (isArray(value)) {\n return value.map(function (item, i) {\n var value = _this.processFieldValue(item, field, context, getChildMergeTree(mergeTree, i));\n maybeRecycleChildMergeTree(mergeTree, i);\n return value;\n });\n }\n return this.processSelectionSet({\n result: value,\n selectionSet: field.selectionSet,\n context: context,\n mergeTree: mergeTree,\n });\n };\n // Implements https://spec.graphql.org/draft/#sec-Field-Collection, but with\n // some additions for tracking @client and @defer directives.\n StoreWriter.prototype.flattenFields = function (selectionSet, result, context, typename) {\n if (typename === void 0) { typename = getTypenameFromResult(result, selectionSet, context.fragmentMap); }\n var fieldMap = new Map();\n var policies = this.cache.policies;\n var limitingTrie = new Trie(false); // No need for WeakMap, since limitingTrie does not escape.\n (function flatten(selectionSet, inheritedContext) {\n var visitedNode = limitingTrie.lookup(selectionSet, \n // Because we take inheritedClientOnly and inheritedDeferred into\n // consideration here (in addition to selectionSet), it's possible for\n // the same selection set to be flattened more than once, if it appears\n // in the query with different @client and/or @directive configurations.\n inheritedContext.clientOnly, inheritedContext.deferred);\n if (visitedNode.visited)\n return;\n visitedNode.visited = true;\n selectionSet.selections.forEach(function (selection) {\n if (!shouldInclude(selection, context.variables))\n return;\n var clientOnly = inheritedContext.clientOnly, deferred = inheritedContext.deferred;\n if (\n // Since the presence of @client or @defer on this field can only\n // cause clientOnly or deferred to become true, we can skip the\n // forEach loop if both clientOnly and deferred are already true.\n !(clientOnly && deferred) &&\n isNonEmptyArray(selection.directives)) {\n selection.directives.forEach(function (dir) {\n var name = dir.name.value;\n if (name === \"client\")\n clientOnly = true;\n if (name === \"defer\") {\n var args = argumentsObjectFromField(dir, context.variables);\n // The @defer directive takes an optional args.if boolean\n // argument, similar to @include(if: boolean). Note that\n // @defer(if: false) does not make context.deferred false, but\n // instead behaves as if there was no @defer directive.\n if (!args || args.if !== false) {\n deferred = true;\n }\n // TODO In the future, we may want to record args.label using\n // context.deferred, if a label is specified.\n }\n });\n }\n if (isField(selection)) {\n var existing = fieldMap.get(selection);\n if (existing) {\n // If this field has been visited along another recursive path\n // before, the final context should have clientOnly or deferred set\n // to true only if *all* paths have the directive (hence the &&).\n clientOnly = clientOnly && existing.clientOnly;\n deferred = deferred && existing.deferred;\n }\n fieldMap.set(selection, getContextFlavor(context, clientOnly, deferred));\n }\n else {\n var fragment = getFragmentFromSelection(selection, context.lookupFragment);\n if (!fragment && selection.kind === Kind.FRAGMENT_SPREAD) {\n throw newInvariantError(13, selection.name.value);\n }\n if (fragment &&\n policies.fragmentMatches(fragment, typename, result, context.variables)) {\n flatten(fragment.selectionSet, getContextFlavor(context, clientOnly, deferred));\n }\n }\n });\n })(selectionSet, context);\n return fieldMap;\n };\n StoreWriter.prototype.applyMerges = function (mergeTree, existing, incoming, context, getStorageArgs) {\n var _a;\n var _this = this;\n if (mergeTree.map.size && !isReference(incoming)) {\n var e_1 = \n // Items in the same position in different arrays are not\n // necessarily related to each other, so when incoming is an array\n // we process its elements as if there was no existing data.\n (!isArray(incoming) &&\n // Likewise, existing must be either a Reference or a StoreObject\n // in order for its fields to be safe to merge with the fields of\n // the incoming object.\n (isReference(existing) || storeValueIsStoreObject(existing))) ?\n existing\n : void 0;\n // This narrowing is implied by mergeTree.map.size > 0 and\n // !isReference(incoming), though TypeScript understandably cannot\n // hope to infer this type.\n var i_1 = incoming;\n // The options.storage objects provided to read and merge functions\n // are derived from the identity of the parent object plus a\n // sequence of storeFieldName strings/numbers identifying the nested\n // field name path of each field value to be merged.\n if (e_1 && !getStorageArgs) {\n getStorageArgs = [isReference(e_1) ? e_1.__ref : e_1];\n }\n // It's possible that applying merge functions to this subtree will\n // not change the incoming data, so this variable tracks the fields\n // that did change, so we can create a new incoming object when (and\n // only when) at least one incoming field has changed. We use a Map\n // to preserve the type of numeric keys.\n var changedFields_1;\n var getValue_1 = function (from, name) {\n return (isArray(from) ?\n typeof name === \"number\" ?\n from[name]\n : void 0\n : context.store.getFieldValue(from, String(name)));\n };\n mergeTree.map.forEach(function (childTree, storeFieldName) {\n var eVal = getValue_1(e_1, storeFieldName);\n var iVal = getValue_1(i_1, storeFieldName);\n // If we have no incoming data, leave any existing data untouched.\n if (void 0 === iVal)\n return;\n if (getStorageArgs) {\n getStorageArgs.push(storeFieldName);\n }\n var aVal = _this.applyMerges(childTree, eVal, iVal, context, getStorageArgs);\n if (aVal !== iVal) {\n changedFields_1 = changedFields_1 || new Map();\n changedFields_1.set(storeFieldName, aVal);\n }\n if (getStorageArgs) {\n invariant(getStorageArgs.pop() === storeFieldName);\n }\n });\n if (changedFields_1) {\n // Shallow clone i so we can add changed fields to it.\n incoming = (isArray(i_1) ? i_1.slice(0) : __assign({}, i_1));\n changedFields_1.forEach(function (value, name) {\n incoming[name] = value;\n });\n }\n }\n if (mergeTree.info) {\n return this.cache.policies.runMergeFunction(existing, incoming, mergeTree.info, context, getStorageArgs && (_a = context.store).getStorage.apply(_a, getStorageArgs));\n }\n return incoming;\n };\n return StoreWriter;\n}());\nexport { StoreWriter };\nvar emptyMergeTreePool = [];\nfunction getChildMergeTree(_a, name) {\n var map = _a.map;\n if (!map.has(name)) {\n map.set(name, emptyMergeTreePool.pop() || { map: new Map() });\n }\n return map.get(name);\n}\nfunction mergeMergeTrees(left, right) {\n if (left === right || !right || mergeTreeIsEmpty(right))\n return left;\n if (!left || mergeTreeIsEmpty(left))\n return right;\n var info = left.info && right.info ? __assign(__assign({}, left.info), right.info) : left.info || right.info;\n var needToMergeMaps = left.map.size && right.map.size;\n var map = needToMergeMaps ? new Map()\n : left.map.size ? left.map\n : right.map;\n var merged = { info: info, map: map };\n if (needToMergeMaps) {\n var remainingRightKeys_1 = new Set(right.map.keys());\n left.map.forEach(function (leftTree, key) {\n merged.map.set(key, mergeMergeTrees(leftTree, right.map.get(key)));\n remainingRightKeys_1.delete(key);\n });\n remainingRightKeys_1.forEach(function (key) {\n merged.map.set(key, mergeMergeTrees(right.map.get(key), left.map.get(key)));\n });\n }\n return merged;\n}\nfunction mergeTreeIsEmpty(tree) {\n return !tree || !(tree.info || tree.map.size);\n}\nfunction maybeRecycleChildMergeTree(_a, name) {\n var map = _a.map;\n var childTree = map.get(name);\n if (childTree && mergeTreeIsEmpty(childTree)) {\n emptyMergeTreePool.push(childTree);\n map.delete(name);\n }\n}\nvar warnings = new Set();\n// Note that this function is unused in production, and thus should be\n// pruned by any well-configured minifier.\nfunction warnAboutDataLoss(existingRef, incomingObj, storeFieldName, store) {\n var getChild = function (objOrRef) {\n var child = store.getFieldValue(objOrRef, storeFieldName);\n return typeof child === \"object\" && child;\n };\n var existing = getChild(existingRef);\n if (!existing)\n return;\n var incoming = getChild(incomingObj);\n if (!incoming)\n return;\n // It's always safe to replace a reference, since it refers to data\n // safely stored elsewhere.\n if (isReference(existing))\n return;\n // If the values are structurally equivalent, we do not need to worry\n // about incoming replacing existing.\n if (equal(existing, incoming))\n return;\n // If we're replacing every key of the existing object, then the\n // existing data would be overwritten even if the objects were\n // normalized, so warning would not be helpful here.\n if (Object.keys(existing).every(function (key) { return store.getFieldValue(incoming, key) !== void 0; })) {\n return;\n }\n var parentType = store.getFieldValue(existingRef, \"__typename\") ||\n store.getFieldValue(incomingObj, \"__typename\");\n var fieldName = fieldNameFromStoreName(storeFieldName);\n var typeDotName = \"\".concat(parentType, \".\").concat(fieldName);\n // Avoid warning more than once for the same type and field name.\n if (warnings.has(typeDotName))\n return;\n warnings.add(typeDotName);\n var childTypenames = [];\n // Arrays do not have __typename fields, and always need a custom merge\n // function, even if their elements are normalized entities.\n if (!isArray(existing) && !isArray(incoming)) {\n [existing, incoming].forEach(function (child) {\n var typename = store.getFieldValue(child, \"__typename\");\n if (typeof typename === \"string\" && !childTypenames.includes(typename)) {\n childTypenames.push(typename);\n }\n });\n }\n globalThis.__DEV__ !== false && invariant.warn(14, fieldName, parentType, childTypenames.length ?\n \"either ensure all objects of type \" +\n childTypenames.join(\" and \") +\n \" have an ID or a custom merge function, or \"\n : \"\", typeDotName, existing, incoming);\n}\n","import { __assign, __extends } from \"tslib\";\nimport { invariant } from \"../../utilities/globals/index.js\";\n// Make builtins like Map and Set safe to use with non-extensible objects.\nimport \"./fixPolyfills.js\";\nimport { wrap } from \"optimism\";\nimport { equal } from \"@wry/equality\";\nimport { ApolloCache } from \"../core/cache.js\";\nimport { MissingFieldError } from \"../core/types/common.js\";\nimport { addTypenameToDocument, isReference, DocumentTransform, canonicalStringify, print, cacheSizes, } from \"../../utilities/index.js\";\nimport { StoreReader } from \"./readFromStore.js\";\nimport { StoreWriter } from \"./writeToStore.js\";\nimport { EntityStore, supportsResultCaching } from \"./entityStore.js\";\nimport { makeVar, forgetCache, recallCache } from \"./reactiveVars.js\";\nimport { Policies } from \"./policies.js\";\nimport { hasOwn, normalizeConfig, shouldCanonizeResults } from \"./helpers.js\";\nimport { getInMemoryCacheMemoryInternals } from \"../../utilities/caching/getMemoryInternals.js\";\nvar InMemoryCache = /** @class */ (function (_super) {\n __extends(InMemoryCache, _super);\n function InMemoryCache(config) {\n if (config === void 0) { config = {}; }\n var _this = _super.call(this) || this;\n _this.watches = new Set();\n _this.addTypenameTransform = new DocumentTransform(addTypenameToDocument);\n // Override the default value, since InMemoryCache result objects are frozen\n // in development and expected to remain logically immutable in production.\n _this.assumeImmutableResults = true;\n _this.makeVar = makeVar;\n _this.txCount = 0;\n _this.config = normalizeConfig(config);\n _this.addTypename = !!_this.config.addTypename;\n _this.policies = new Policies({\n cache: _this,\n dataIdFromObject: _this.config.dataIdFromObject,\n possibleTypes: _this.config.possibleTypes,\n typePolicies: _this.config.typePolicies,\n });\n _this.init();\n return _this;\n }\n InMemoryCache.prototype.init = function () {\n // Passing { resultCaching: false } in the InMemoryCache constructor options\n // will completely disable dependency tracking, which will improve memory\n // usage but worsen the performance of repeated reads.\n var rootStore = (this.data = new EntityStore.Root({\n policies: this.policies,\n resultCaching: this.config.resultCaching,\n }));\n // When no optimistic writes are currently active, cache.optimisticData ===\n // cache.data, so there are no additional layers on top of the actual data.\n // When an optimistic update happens, this.optimisticData will become a\n // linked list of EntityStore Layer objects that terminates with the\n // original this.data cache object.\n this.optimisticData = rootStore.stump;\n this.resetResultCache();\n };\n InMemoryCache.prototype.resetResultCache = function (resetResultIdentities) {\n var _this = this;\n var previousReader = this.storeReader;\n var fragments = this.config.fragments;\n // The StoreWriter is mostly stateless and so doesn't really need to be\n // reset, but it does need to have its writer.storeReader reference updated,\n // so it's simpler to update this.storeWriter as well.\n this.storeWriter = new StoreWriter(this, (this.storeReader = new StoreReader({\n cache: this,\n addTypename: this.addTypename,\n resultCacheMaxSize: this.config.resultCacheMaxSize,\n canonizeResults: shouldCanonizeResults(this.config),\n canon: resetResultIdentities ? void 0 : (previousReader && previousReader.canon),\n fragments: fragments,\n })), fragments);\n this.maybeBroadcastWatch = wrap(function (c, options) {\n return _this.broadcastWatch(c, options);\n }, {\n max: this.config.resultCacheMaxSize ||\n cacheSizes[\"inMemoryCache.maybeBroadcastWatch\"] ||\n 5000 /* defaultCacheSizes[\"inMemoryCache.maybeBroadcastWatch\"] */,\n makeCacheKey: function (c) {\n // Return a cache key (thus enabling result caching) only if we're\n // currently using a data store that can track cache dependencies.\n var store = c.optimistic ? _this.optimisticData : _this.data;\n if (supportsResultCaching(store)) {\n var optimistic = c.optimistic, id = c.id, variables = c.variables;\n return store.makeCacheKey(c.query, \n // Different watches can have the same query, optimistic\n // status, rootId, and variables, but if their callbacks are\n // different, the (identical) result needs to be delivered to\n // each distinct callback. The easiest way to achieve that\n // separation is to include c.callback in the cache key for\n // maybeBroadcastWatch calls. See issue #5733.\n c.callback, canonicalStringify({ optimistic: optimistic, id: id, variables: variables }));\n }\n },\n });\n // Since we have thrown away all the cached functions that depend on the\n // CacheGroup dependencies maintained by EntityStore, we should also reset\n // all CacheGroup dependency information.\n new Set([this.data.group, this.optimisticData.group]).forEach(function (group) {\n return group.resetCaching();\n });\n };\n InMemoryCache.prototype.restore = function (data) {\n this.init();\n // Since calling this.init() discards/replaces the entire StoreReader, along\n // with the result caches it maintains, this.data.replace(data) won't have\n // to bother deleting the old data.\n if (data)\n this.data.replace(data);\n return this;\n };\n InMemoryCache.prototype.extract = function (optimistic) {\n if (optimistic === void 0) { optimistic = false; }\n return (optimistic ? this.optimisticData : this.data).extract();\n };\n InMemoryCache.prototype.read = function (options) {\n var \n // Since read returns data or null, without any additional metadata\n // about whether/where there might have been missing fields, the\n // default behavior cannot be returnPartialData = true (like it is\n // for the diff method), since defaulting to true would violate the\n // integrity of the T in the return type. However, partial data may\n // be useful in some cases, so returnPartialData:true may be\n // specified explicitly.\n _a = options.returnPartialData, \n // Since read returns data or null, without any additional metadata\n // about whether/where there might have been missing fields, the\n // default behavior cannot be returnPartialData = true (like it is\n // for the diff method), since defaulting to true would violate the\n // integrity of the T in the return type. However, partial data may\n // be useful in some cases, so returnPartialData:true may be\n // specified explicitly.\n returnPartialData = _a === void 0 ? false : _a;\n try {\n return (this.storeReader.diffQueryAgainstStore(__assign(__assign({}, options), { store: options.optimistic ? this.optimisticData : this.data, config: this.config, returnPartialData: returnPartialData })).result || null);\n }\n catch (e) {\n if (e instanceof MissingFieldError) {\n // Swallow MissingFieldError and return null, so callers do not need to\n // worry about catching \"normal\" exceptions resulting from incomplete\n // cache data. Unexpected errors will be re-thrown. If you need more\n // information about which fields were missing, use cache.diff instead,\n // and examine diffResult.missing.\n return null;\n }\n throw e;\n }\n };\n InMemoryCache.prototype.write = function (options) {\n try {\n ++this.txCount;\n return this.storeWriter.writeToStore(this.data, options);\n }\n finally {\n if (!--this.txCount && options.broadcast !== false) {\n this.broadcastWatches();\n }\n }\n };\n InMemoryCache.prototype.modify = function (options) {\n if (hasOwn.call(options, \"id\") && !options.id) {\n // To my knowledge, TypeScript does not currently provide a way to\n // enforce that an optional property?:type must *not* be undefined\n // when present. That ability would be useful here, because we want\n // options.id to default to ROOT_QUERY only when no options.id was\n // provided. If the caller attempts to pass options.id with a\n // falsy/undefined value (perhaps because cache.identify failed), we\n // should not assume the goal was to modify the ROOT_QUERY object.\n // We could throw, but it seems natural to return false to indicate\n // that nothing was modified.\n return false;\n }\n var store = ((options.optimistic) // Defaults to false.\n ) ?\n this.optimisticData\n : this.data;\n try {\n ++this.txCount;\n return store.modify(options.id || \"ROOT_QUERY\", options.fields);\n }\n finally {\n if (!--this.txCount && options.broadcast !== false) {\n this.broadcastWatches();\n }\n }\n };\n InMemoryCache.prototype.diff = function (options) {\n return this.storeReader.diffQueryAgainstStore(__assign(__assign({}, options), { store: options.optimistic ? this.optimisticData : this.data, rootId: options.id || \"ROOT_QUERY\", config: this.config }));\n };\n InMemoryCache.prototype.watch = function (watch) {\n var _this = this;\n if (!this.watches.size) {\n // In case we previously called forgetCache(this) because\n // this.watches became empty (see below), reattach this cache to any\n // reactive variables on which it previously depended. It might seem\n // paradoxical that we're able to recall something we supposedly\n // forgot, but the point of calling forgetCache(this) is to silence\n // useless broadcasts while this.watches is empty, and to allow the\n // cache to be garbage collected. If, however, we manage to call\n // recallCache(this) here, this cache object must not have been\n // garbage collected yet, and should resume receiving updates from\n // reactive variables, now that it has a watcher to notify.\n recallCache(this);\n }\n this.watches.add(watch);\n if (watch.immediate) {\n this.maybeBroadcastWatch(watch);\n }\n return function () {\n // Once we remove the last watch from this.watches, cache.broadcastWatches\n // no longer does anything, so we preemptively tell the reactive variable\n // system to exclude this cache from future broadcasts.\n if (_this.watches.delete(watch) && !_this.watches.size) {\n forgetCache(_this);\n }\n // Remove this watch from the LRU cache managed by the\n // maybeBroadcastWatch OptimisticWrapperFunction, to prevent memory\n // leaks involving the closure of watch.callback.\n _this.maybeBroadcastWatch.forget(watch);\n };\n };\n InMemoryCache.prototype.gc = function (options) {\n var _a;\n canonicalStringify.reset();\n print.reset();\n this.addTypenameTransform.resetCache();\n (_a = this.config.fragments) === null || _a === void 0 ? void 0 : _a.resetCaches();\n var ids = this.optimisticData.gc();\n if (options && !this.txCount) {\n if (options.resetResultCache) {\n this.resetResultCache(options.resetResultIdentities);\n }\n else if (options.resetResultIdentities) {\n this.storeReader.resetCanon();\n }\n }\n return ids;\n };\n // Call this method to ensure the given root ID remains in the cache after\n // garbage collection, along with its transitive child entities. Note that\n // the cache automatically retains all directly written entities. By default,\n // the retainment persists after optimistic updates are removed. Pass true\n // for the optimistic argument if you would prefer for the retainment to be\n // discarded when the top-most optimistic layer is removed. Returns the\n // resulting (non-negative) retainment count.\n InMemoryCache.prototype.retain = function (rootId, optimistic) {\n return (optimistic ? this.optimisticData : this.data).retain(rootId);\n };\n // Call this method to undo the effect of the retain method, above. Once the\n // retainment count falls to zero, the given ID will no longer be preserved\n // during garbage collection, though it may still be preserved by other safe\n // entities that refer to it. Returns the resulting (non-negative) retainment\n // count, in case that's useful.\n InMemoryCache.prototype.release = function (rootId, optimistic) {\n return (optimistic ? this.optimisticData : this.data).release(rootId);\n };\n // Returns the canonical ID for a given StoreObject, obeying typePolicies\n // and keyFields (and dataIdFromObject, if you still use that). At minimum,\n // the object must contain a __typename and any primary key fields required\n // to identify entities of that type. If you pass a query result object, be\n // sure that none of the primary key fields have been renamed by aliasing.\n // If you pass a Reference object, its __ref ID string will be returned.\n InMemoryCache.prototype.identify = function (object) {\n if (isReference(object))\n return object.__ref;\n try {\n return this.policies.identify(object)[0];\n }\n catch (e) {\n globalThis.__DEV__ !== false && invariant.warn(e);\n }\n };\n InMemoryCache.prototype.evict = function (options) {\n if (!options.id) {\n if (hasOwn.call(options, \"id\")) {\n // See comment in modify method about why we return false when\n // options.id exists but is falsy/undefined.\n return false;\n }\n options = __assign(__assign({}, options), { id: \"ROOT_QUERY\" });\n }\n try {\n // It's unlikely that the eviction will end up invoking any other\n // cache update operations while it's running, but {in,de}crementing\n // this.txCount still seems like a good idea, for uniformity with\n // the other update methods.\n ++this.txCount;\n // Pass this.data as a limit on the depth of the eviction, so evictions\n // during optimistic updates (when this.data is temporarily set equal to\n // this.optimisticData) do not escape their optimistic Layer.\n return this.optimisticData.evict(options, this.data);\n }\n finally {\n if (!--this.txCount && options.broadcast !== false) {\n this.broadcastWatches();\n }\n }\n };\n InMemoryCache.prototype.reset = function (options) {\n var _this = this;\n this.init();\n canonicalStringify.reset();\n if (options && options.discardWatches) {\n // Similar to what happens in the unsubscribe function returned by\n // cache.watch, applied to all current watches.\n this.watches.forEach(function (watch) { return _this.maybeBroadcastWatch.forget(watch); });\n this.watches.clear();\n forgetCache(this);\n }\n else {\n // Calling this.init() above unblocks all maybeBroadcastWatch caching, so\n // this.broadcastWatches() triggers a broadcast to every current watcher\n // (letting them know their data is now missing). This default behavior is\n // convenient because it means the watches do not have to be manually\n // reestablished after resetting the cache. To prevent this broadcast and\n // cancel all watches, pass true for options.discardWatches.\n this.broadcastWatches();\n }\n return Promise.resolve();\n };\n InMemoryCache.prototype.removeOptimistic = function (idToRemove) {\n var newOptimisticData = this.optimisticData.removeLayer(idToRemove);\n if (newOptimisticData !== this.optimisticData) {\n this.optimisticData = newOptimisticData;\n this.broadcastWatches();\n }\n };\n InMemoryCache.prototype.batch = function (options) {\n var _this = this;\n var update = options.update, _a = options.optimistic, optimistic = _a === void 0 ? true : _a, removeOptimistic = options.removeOptimistic, onWatchUpdated = options.onWatchUpdated;\n var updateResult;\n var perform = function (layer) {\n var _a = _this, data = _a.data, optimisticData = _a.optimisticData;\n ++_this.txCount;\n if (layer) {\n _this.data = _this.optimisticData = layer;\n }\n try {\n return (updateResult = update(_this));\n }\n finally {\n --_this.txCount;\n _this.data = data;\n _this.optimisticData = optimisticData;\n }\n };\n var alreadyDirty = new Set();\n if (onWatchUpdated && !this.txCount) {\n // If an options.onWatchUpdated callback is provided, we want to call it\n // with only the Cache.WatchOptions objects affected by options.update,\n // but there might be dirty watchers already waiting to be broadcast that\n // have nothing to do with the update. To prevent including those watchers\n // in the post-update broadcast, we perform this initial broadcast to\n // collect the dirty watchers, so we can re-dirty them later, after the\n // post-update broadcast, allowing them to receive their pending\n // broadcasts the next time broadcastWatches is called, just as they would\n // if we never called cache.batch.\n this.broadcastWatches(__assign(__assign({}, options), { onWatchUpdated: function (watch) {\n alreadyDirty.add(watch);\n return false;\n } }));\n }\n if (typeof optimistic === \"string\") {\n // Note that there can be multiple layers with the same optimistic ID.\n // When removeOptimistic(id) is called for that id, all matching layers\n // will be removed, and the remaining layers will be reapplied.\n this.optimisticData = this.optimisticData.addLayer(optimistic, perform);\n }\n else if (optimistic === false) {\n // Ensure both this.data and this.optimisticData refer to the root\n // (non-optimistic) layer of the cache during the update. Note that\n // this.data could be a Layer if we are currently executing an optimistic\n // update function, but otherwise will always be an EntityStore.Root\n // instance.\n perform(this.data);\n }\n else {\n // Otherwise, leave this.data and this.optimisticData unchanged and run\n // the update with broadcast batching.\n perform();\n }\n if (typeof removeOptimistic === \"string\") {\n this.optimisticData = this.optimisticData.removeLayer(removeOptimistic);\n }\n // Note: if this.txCount > 0, then alreadyDirty.size === 0, so this code\n // takes the else branch and calls this.broadcastWatches(options), which\n // does nothing when this.txCount > 0.\n if (onWatchUpdated && alreadyDirty.size) {\n this.broadcastWatches(__assign(__assign({}, options), { onWatchUpdated: function (watch, diff) {\n var result = onWatchUpdated.call(this, watch, diff);\n if (result !== false) {\n // Since onWatchUpdated did not return false, this diff is\n // about to be broadcast to watch.callback, so we don't need\n // to re-dirty it with the other alreadyDirty watches below.\n alreadyDirty.delete(watch);\n }\n return result;\n } }));\n // Silently re-dirty any watches that were already dirty before the update\n // was performed, and were not broadcast just now.\n if (alreadyDirty.size) {\n alreadyDirty.forEach(function (watch) { return _this.maybeBroadcastWatch.dirty(watch); });\n }\n }\n else {\n // If alreadyDirty is empty or we don't have an onWatchUpdated\n // function, we don't need to go to the trouble of wrapping\n // options.onWatchUpdated.\n this.broadcastWatches(options);\n }\n return updateResult;\n };\n InMemoryCache.prototype.performTransaction = function (update, optimisticId) {\n return this.batch({\n update: update,\n optimistic: optimisticId || optimisticId !== null,\n });\n };\n InMemoryCache.prototype.transformDocument = function (document) {\n return this.addTypenameToDocument(this.addFragmentsToDocument(document));\n };\n InMemoryCache.prototype.broadcastWatches = function (options) {\n var _this = this;\n if (!this.txCount) {\n this.watches.forEach(function (c) { return _this.maybeBroadcastWatch(c, options); });\n }\n };\n InMemoryCache.prototype.addFragmentsToDocument = function (document) {\n var fragments = this.config.fragments;\n return fragments ? fragments.transform(document) : document;\n };\n InMemoryCache.prototype.addTypenameToDocument = function (document) {\n if (this.addTypename) {\n return this.addTypenameTransform.transformDocument(document);\n }\n return document;\n };\n // This method is wrapped by maybeBroadcastWatch, which is called by\n // broadcastWatches, so that we compute and broadcast results only when\n // the data that would be broadcast might have changed. It would be\n // simpler to check for changes after recomputing a result but before\n // broadcasting it, but this wrapping approach allows us to skip both\n // the recomputation and the broadcast, in most cases.\n InMemoryCache.prototype.broadcastWatch = function (c, options) {\n var lastDiff = c.lastDiff;\n // Both WatchOptions and DiffOptions extend ReadOptions, and DiffOptions\n // currently requires no additional properties, so we can use c (a\n // WatchOptions object) as DiffOptions, without having to allocate a new\n // object, and without having to enumerate the relevant properties (query,\n // variables, etc.) explicitly. There will be some additional properties\n // (lastDiff, callback, etc.), but cache.diff ignores them.\n var diff = this.diff(c);\n if (options) {\n if (c.optimistic && typeof options.optimistic === \"string\") {\n diff.fromOptimisticTransaction = true;\n }\n if (options.onWatchUpdated &&\n options.onWatchUpdated.call(this, c, diff, lastDiff) === false) {\n // Returning false from the onWatchUpdated callback will prevent\n // calling c.callback(diff) for this watcher.\n return;\n }\n }\n if (!lastDiff || !equal(lastDiff.result, diff.result)) {\n c.callback((c.lastDiff = diff), lastDiff);\n }\n };\n return InMemoryCache;\n}(ApolloCache));\nexport { InMemoryCache };\nif (globalThis.__DEV__ !== false) {\n InMemoryCache.prototype.getMemoryInternals = getInMemoryCacheMemoryInternals;\n}\n","/**\n * @license Angular v16.2.12\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport { ɵAnimationGroupPlayer, NoopAnimationPlayer, AUTO_STYLE, ɵPRE_STYLE, sequence, style } from '@angular/animations';\nimport * as i0 from '@angular/core';\nimport { ɵRuntimeError, Injectable } from '@angular/core';\n\nconst LINE_START = '\\n - ';\nfunction invalidTimingValue(exp) {\n return new ɵRuntimeError(3000 /* RuntimeErrorCode.INVALID_TIMING_VALUE */, ngDevMode && `The provided timing value \"${exp}\" is invalid.`);\n}\nfunction negativeStepValue() {\n return new ɵRuntimeError(3100 /* RuntimeErrorCode.NEGATIVE_STEP_VALUE */, ngDevMode && 'Duration values below 0 are not allowed for this animation step.');\n}\nfunction negativeDelayValue() {\n return new ɵRuntimeError(3101 /* RuntimeErrorCode.NEGATIVE_DELAY_VALUE */, ngDevMode && 'Delay values below 0 are not allowed for this animation step.');\n}\nfunction invalidStyleParams(varName) {\n return new ɵRuntimeError(3001 /* RuntimeErrorCode.INVALID_STYLE_PARAMS */, ngDevMode &&\n `Unable to resolve the local animation param ${varName} in the given list of values`);\n}\nfunction invalidParamValue(varName) {\n return new ɵRuntimeError(3003 /* RuntimeErrorCode.INVALID_PARAM_VALUE */, ngDevMode && `Please provide a value for the animation param ${varName}`);\n}\nfunction invalidNodeType(nodeType) {\n return new ɵRuntimeError(3004 /* RuntimeErrorCode.INVALID_NODE_TYPE */, ngDevMode && `Unable to resolve animation metadata node #${nodeType}`);\n}\nfunction invalidCssUnitValue(userProvidedProperty, value) {\n return new ɵRuntimeError(3005 /* RuntimeErrorCode.INVALID_CSS_UNIT_VALUE */, ngDevMode && `Please provide a CSS unit value for ${userProvidedProperty}:${value}`);\n}\nfunction invalidTrigger() {\n return new ɵRuntimeError(3006 /* RuntimeErrorCode.INVALID_TRIGGER */, ngDevMode &&\n 'animation triggers cannot be prefixed with an `@` sign (e.g. trigger(\\'@foo\\', [...]))');\n}\nfunction invalidDefinition() {\n return new ɵRuntimeError(3007 /* RuntimeErrorCode.INVALID_DEFINITION */, ngDevMode && 'only state() and transition() definitions can sit inside of a trigger()');\n}\nfunction invalidState(metadataName, missingSubs) {\n return new ɵRuntimeError(3008 /* RuntimeErrorCode.INVALID_STATE */, ngDevMode &&\n `state(\"${metadataName}\", ...) must define default values for all the following style substitutions: ${missingSubs.join(', ')}`);\n}\nfunction invalidStyleValue(value) {\n return new ɵRuntimeError(3002 /* RuntimeErrorCode.INVALID_STYLE_VALUE */, ngDevMode && `The provided style string value ${value} is not allowed.`);\n}\nfunction invalidProperty(prop) {\n return new ɵRuntimeError(3009 /* RuntimeErrorCode.INVALID_PROPERTY */, ngDevMode &&\n `The provided animation property \"${prop}\" is not a supported CSS property for animations`);\n}\nfunction invalidParallelAnimation(prop, firstStart, firstEnd, secondStart, secondEnd) {\n return new ɵRuntimeError(3010 /* RuntimeErrorCode.INVALID_PARALLEL_ANIMATION */, ngDevMode &&\n `The CSS property \"${prop}\" that exists between the times of \"${firstStart}ms\" and \"${firstEnd}ms\" is also being animated in a parallel animation between the times of \"${secondStart}ms\" and \"${secondEnd}ms\"`);\n}\nfunction invalidKeyframes() {\n return new ɵRuntimeError(3011 /* RuntimeErrorCode.INVALID_KEYFRAMES */, ngDevMode && `keyframes() must be placed inside of a call to animate()`);\n}\nfunction invalidOffset() {\n return new ɵRuntimeError(3012 /* RuntimeErrorCode.INVALID_OFFSET */, ngDevMode && `Please ensure that all keyframe offsets are between 0 and 1`);\n}\nfunction keyframeOffsetsOutOfOrder() {\n return new ɵRuntimeError(3200 /* RuntimeErrorCode.KEYFRAME_OFFSETS_OUT_OF_ORDER */, ngDevMode && `Please ensure that all keyframe offsets are in order`);\n}\nfunction keyframesMissingOffsets() {\n return new ɵRuntimeError(3202 /* RuntimeErrorCode.KEYFRAMES_MISSING_OFFSETS */, ngDevMode && `Not all style() steps within the declared keyframes() contain offsets`);\n}\nfunction invalidStagger() {\n return new ɵRuntimeError(3013 /* RuntimeErrorCode.INVALID_STAGGER */, ngDevMode && `stagger() can only be used inside of query()`);\n}\nfunction invalidQuery(selector) {\n return new ɵRuntimeError(3014 /* RuntimeErrorCode.INVALID_QUERY */, ngDevMode &&\n `\\`query(\"${selector}\")\\` returned zero elements. (Use \\`query(\"${selector}\", { optional: true })\\` if you wish to allow this.)`);\n}\nfunction invalidExpression(expr) {\n return new ɵRuntimeError(3015 /* RuntimeErrorCode.INVALID_EXPRESSION */, ngDevMode && `The provided transition expression \"${expr}\" is not supported`);\n}\nfunction invalidTransitionAlias(alias) {\n return new ɵRuntimeError(3016 /* RuntimeErrorCode.INVALID_TRANSITION_ALIAS */, ngDevMode && `The transition alias value \"${alias}\" is not supported`);\n}\nfunction validationFailed(errors) {\n return new ɵRuntimeError(3500 /* RuntimeErrorCode.VALIDATION_FAILED */, ngDevMode && `animation validation failed:\\n${errors.map(err => err.message).join('\\n')}`);\n}\nfunction buildingFailed(errors) {\n return new ɵRuntimeError(3501 /* RuntimeErrorCode.BUILDING_FAILED */, ngDevMode && `animation building failed:\\n${errors.map(err => err.message).join('\\n')}`);\n}\nfunction triggerBuildFailed(name, errors) {\n return new ɵRuntimeError(3404 /* RuntimeErrorCode.TRIGGER_BUILD_FAILED */, ngDevMode &&\n `The animation trigger \"${name}\" has failed to build due to the following errors:\\n - ${errors.map(err => err.message).join('\\n - ')}`);\n}\nfunction animationFailed(errors) {\n return new ɵRuntimeError(3502 /* RuntimeErrorCode.ANIMATION_FAILED */, ngDevMode &&\n `Unable to animate due to the following errors:${LINE_START}${errors.map(err => err.message).join(LINE_START)}`);\n}\nfunction registerFailed(errors) {\n return new ɵRuntimeError(3503 /* RuntimeErrorCode.REGISTRATION_FAILED */, ngDevMode &&\n `Unable to build the animation due to the following errors: ${errors.map(err => err.message).join('\\n')}`);\n}\nfunction missingOrDestroyedAnimation() {\n return new ɵRuntimeError(3300 /* RuntimeErrorCode.MISSING_OR_DESTROYED_ANIMATION */, ngDevMode && 'The requested animation doesn\\'t exist or has already been destroyed');\n}\nfunction createAnimationFailed(errors) {\n return new ɵRuntimeError(3504 /* RuntimeErrorCode.CREATE_ANIMATION_FAILED */, ngDevMode &&\n `Unable to create the animation due to the following errors:${errors.map(err => err.message).join('\\n')}`);\n}\nfunction missingPlayer(id) {\n return new ɵRuntimeError(3301 /* RuntimeErrorCode.MISSING_PLAYER */, ngDevMode && `Unable to find the timeline player referenced by ${id}`);\n}\nfunction missingTrigger(phase, name) {\n return new ɵRuntimeError(3302 /* RuntimeErrorCode.MISSING_TRIGGER */, ngDevMode &&\n `Unable to listen on the animation trigger event \"${phase}\" because the animation trigger \"${name}\" doesn\\'t exist!`);\n}\nfunction missingEvent(name) {\n return new ɵRuntimeError(3303 /* RuntimeErrorCode.MISSING_EVENT */, ngDevMode &&\n `Unable to listen on the animation trigger \"${name}\" because the provided event is undefined!`);\n}\nfunction unsupportedTriggerEvent(phase, name) {\n return new ɵRuntimeError(3400 /* RuntimeErrorCode.UNSUPPORTED_TRIGGER_EVENT */, ngDevMode &&\n `The provided animation trigger event \"${phase}\" for the animation trigger \"${name}\" is not supported!`);\n}\nfunction unregisteredTrigger(name) {\n return new ɵRuntimeError(3401 /* RuntimeErrorCode.UNREGISTERED_TRIGGER */, ngDevMode && `The provided animation trigger \"${name}\" has not been registered!`);\n}\nfunction triggerTransitionsFailed(errors) {\n return new ɵRuntimeError(3402 /* RuntimeErrorCode.TRIGGER_TRANSITIONS_FAILED */, ngDevMode &&\n `Unable to process animations due to the following failed trigger transitions\\n ${errors.map(err => err.message).join('\\n')}`);\n}\nfunction triggerParsingFailed(name, errors) {\n return new ɵRuntimeError(3403 /* RuntimeErrorCode.TRIGGER_PARSING_FAILED */, ngDevMode &&\n `Animation parsing for the ${name} trigger have failed:${LINE_START}${errors.map(err => err.message).join(LINE_START)}`);\n}\nfunction transitionFailed(name, errors) {\n return new ɵRuntimeError(3505 /* RuntimeErrorCode.TRANSITION_FAILED */, ngDevMode && `@${name} has failed due to:\\n ${errors.map(err => err.message).join('\\n- ')}`);\n}\n\n/**\n * Set of all animatable CSS properties\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_animated_properties\n */\nconst ANIMATABLE_PROP_SET = new Set([\n '-moz-outline-radius',\n '-moz-outline-radius-bottomleft',\n '-moz-outline-radius-bottomright',\n '-moz-outline-radius-topleft',\n '-moz-outline-radius-topright',\n '-ms-grid-columns',\n '-ms-grid-rows',\n '-webkit-line-clamp',\n '-webkit-text-fill-color',\n '-webkit-text-stroke',\n '-webkit-text-stroke-color',\n 'accent-color',\n 'all',\n 'backdrop-filter',\n 'background',\n 'background-color',\n 'background-position',\n 'background-size',\n 'block-size',\n 'border',\n 'border-block-end',\n 'border-block-end-color',\n 'border-block-end-width',\n 'border-block-start',\n 'border-block-start-color',\n 'border-block-start-width',\n 'border-bottom',\n 'border-bottom-color',\n 'border-bottom-left-radius',\n 'border-bottom-right-radius',\n 'border-bottom-width',\n 'border-color',\n 'border-end-end-radius',\n 'border-end-start-radius',\n 'border-image-outset',\n 'border-image-slice',\n 'border-image-width',\n 'border-inline-end',\n 'border-inline-end-color',\n 'border-inline-end-width',\n 'border-inline-start',\n 'border-inline-start-color',\n 'border-inline-start-width',\n 'border-left',\n 'border-left-color',\n 'border-left-width',\n 'border-radius',\n 'border-right',\n 'border-right-color',\n 'border-right-width',\n 'border-start-end-radius',\n 'border-start-start-radius',\n 'border-top',\n 'border-top-color',\n 'border-top-left-radius',\n 'border-top-right-radius',\n 'border-top-width',\n 'border-width',\n 'bottom',\n 'box-shadow',\n 'caret-color',\n 'clip',\n 'clip-path',\n 'color',\n 'column-count',\n 'column-gap',\n 'column-rule',\n 'column-rule-color',\n 'column-rule-width',\n 'column-width',\n 'columns',\n 'filter',\n 'flex',\n 'flex-basis',\n 'flex-grow',\n 'flex-shrink',\n 'font',\n 'font-size',\n 'font-size-adjust',\n 'font-stretch',\n 'font-variation-settings',\n 'font-weight',\n 'gap',\n 'grid-column-gap',\n 'grid-gap',\n 'grid-row-gap',\n 'grid-template-columns',\n 'grid-template-rows',\n 'height',\n 'inline-size',\n 'input-security',\n 'inset',\n 'inset-block',\n 'inset-block-end',\n 'inset-block-start',\n 'inset-inline',\n 'inset-inline-end',\n 'inset-inline-start',\n 'left',\n 'letter-spacing',\n 'line-clamp',\n 'line-height',\n 'margin',\n 'margin-block-end',\n 'margin-block-start',\n 'margin-bottom',\n 'margin-inline-end',\n 'margin-inline-start',\n 'margin-left',\n 'margin-right',\n 'margin-top',\n 'mask',\n 'mask-border',\n 'mask-position',\n 'mask-size',\n 'max-block-size',\n 'max-height',\n 'max-inline-size',\n 'max-lines',\n 'max-width',\n 'min-block-size',\n 'min-height',\n 'min-inline-size',\n 'min-width',\n 'object-position',\n 'offset',\n 'offset-anchor',\n 'offset-distance',\n 'offset-path',\n 'offset-position',\n 'offset-rotate',\n 'opacity',\n 'order',\n 'outline',\n 'outline-color',\n 'outline-offset',\n 'outline-width',\n 'padding',\n 'padding-block-end',\n 'padding-block-start',\n 'padding-bottom',\n 'padding-inline-end',\n 'padding-inline-start',\n 'padding-left',\n 'padding-right',\n 'padding-top',\n 'perspective',\n 'perspective-origin',\n 'right',\n 'rotate',\n 'row-gap',\n 'scale',\n 'scroll-margin',\n 'scroll-margin-block',\n 'scroll-margin-block-end',\n 'scroll-margin-block-start',\n 'scroll-margin-bottom',\n 'scroll-margin-inline',\n 'scroll-margin-inline-end',\n 'scroll-margin-inline-start',\n 'scroll-margin-left',\n 'scroll-margin-right',\n 'scroll-margin-top',\n 'scroll-padding',\n 'scroll-padding-block',\n 'scroll-padding-block-end',\n 'scroll-padding-block-start',\n 'scroll-padding-bottom',\n 'scroll-padding-inline',\n 'scroll-padding-inline-end',\n 'scroll-padding-inline-start',\n 'scroll-padding-left',\n 'scroll-padding-right',\n 'scroll-padding-top',\n 'scroll-snap-coordinate',\n 'scroll-snap-destination',\n 'scrollbar-color',\n 'shape-image-threshold',\n 'shape-margin',\n 'shape-outside',\n 'tab-size',\n 'text-decoration',\n 'text-decoration-color',\n 'text-decoration-thickness',\n 'text-emphasis',\n 'text-emphasis-color',\n 'text-indent',\n 'text-shadow',\n 'text-underline-offset',\n 'top',\n 'transform',\n 'transform-origin',\n 'translate',\n 'vertical-align',\n 'visibility',\n 'width',\n 'word-spacing',\n 'z-index',\n 'zoom',\n]);\n\nfunction optimizeGroupPlayer(players) {\n switch (players.length) {\n case 0:\n return new NoopAnimationPlayer();\n case 1:\n return players[0];\n default:\n return new ɵAnimationGroupPlayer(players);\n }\n}\nfunction normalizeKeyframes$1(normalizer, keyframes, preStyles = new Map(), postStyles = new Map()) {\n const errors = [];\n const normalizedKeyframes = [];\n let previousOffset = -1;\n let previousKeyframe = null;\n keyframes.forEach(kf => {\n const offset = kf.get('offset');\n const isSameOffset = offset == previousOffset;\n const normalizedKeyframe = (isSameOffset && previousKeyframe) || new Map();\n kf.forEach((val, prop) => {\n let normalizedProp = prop;\n let normalizedValue = val;\n if (prop !== 'offset') {\n normalizedProp = normalizer.normalizePropertyName(normalizedProp, errors);\n switch (normalizedValue) {\n case ɵPRE_STYLE:\n normalizedValue = preStyles.get(prop);\n break;\n case AUTO_STYLE:\n normalizedValue = postStyles.get(prop);\n break;\n default:\n normalizedValue =\n normalizer.normalizeStyleValue(prop, normalizedProp, normalizedValue, errors);\n break;\n }\n }\n normalizedKeyframe.set(normalizedProp, normalizedValue);\n });\n if (!isSameOffset) {\n normalizedKeyframes.push(normalizedKeyframe);\n }\n previousKeyframe = normalizedKeyframe;\n previousOffset = offset;\n });\n if (errors.length) {\n throw animationFailed(errors);\n }\n return normalizedKeyframes;\n}\nfunction listenOnPlayer(player, eventName, event, callback) {\n switch (eventName) {\n case 'start':\n player.onStart(() => callback(event && copyAnimationEvent(event, 'start', player)));\n break;\n case 'done':\n player.onDone(() => callback(event && copyAnimationEvent(event, 'done', player)));\n break;\n case 'destroy':\n player.onDestroy(() => callback(event && copyAnimationEvent(event, 'destroy', player)));\n break;\n }\n}\nfunction copyAnimationEvent(e, phaseName, player) {\n const totalTime = player.totalTime;\n const disabled = player.disabled ? true : false;\n const event = makeAnimationEvent(e.element, e.triggerName, e.fromState, e.toState, phaseName || e.phaseName, totalTime == undefined ? e.totalTime : totalTime, disabled);\n const data = e['_data'];\n if (data != null) {\n event['_data'] = data;\n }\n return event;\n}\nfunction makeAnimationEvent(element, triggerName, fromState, toState, phaseName = '', totalTime = 0, disabled) {\n return { element, triggerName, fromState, toState, phaseName, totalTime, disabled: !!disabled };\n}\nfunction getOrSetDefaultValue(map, key, defaultValue) {\n let value = map.get(key);\n if (!value) {\n map.set(key, value = defaultValue);\n }\n return value;\n}\nfunction parseTimelineCommand(command) {\n const separatorPos = command.indexOf(':');\n const id = command.substring(1, separatorPos);\n const action = command.slice(separatorPos + 1);\n return [id, action];\n}\nconst documentElement = \n/* @__PURE__ */ (() => typeof document === 'undefined' ? null : document.documentElement)();\nfunction getParentElement(element) {\n const parent = element.parentNode || element.host || null; // consider host to support shadow DOM\n if (parent === documentElement) {\n return null;\n }\n return parent;\n}\nfunction containsVendorPrefix(prop) {\n // Webkit is the only real popular vendor prefix nowadays\n // cc: http://shouldiprefix.com/\n return prop.substring(1, 6) == 'ebkit'; // webkit or Webkit\n}\nlet _CACHED_BODY = null;\nlet _IS_WEBKIT = false;\nfunction validateStyleProperty(prop) {\n if (!_CACHED_BODY) {\n _CACHED_BODY = getBodyNode() || {};\n _IS_WEBKIT = _CACHED_BODY.style ? ('WebkitAppearance' in _CACHED_BODY.style) : false;\n }\n let result = true;\n if (_CACHED_BODY.style && !containsVendorPrefix(prop)) {\n result = prop in _CACHED_BODY.style;\n if (!result && _IS_WEBKIT) {\n const camelProp = 'Webkit' + prop.charAt(0).toUpperCase() + prop.slice(1);\n result = camelProp in _CACHED_BODY.style;\n }\n }\n return result;\n}\nfunction validateWebAnimatableStyleProperty(prop) {\n return ANIMATABLE_PROP_SET.has(prop);\n}\nfunction getBodyNode() {\n if (typeof document != 'undefined') {\n return document.body;\n }\n return null;\n}\nfunction containsElement(elm1, elm2) {\n while (elm2) {\n if (elm2 === elm1) {\n return true;\n }\n elm2 = getParentElement(elm2);\n }\n return false;\n}\nfunction invokeQuery(element, selector, multi) {\n if (multi) {\n return Array.from(element.querySelectorAll(selector));\n }\n const elem = element.querySelector(selector);\n return elem ? [elem] : [];\n}\nfunction hypenatePropsKeys(original) {\n const newMap = new Map();\n original.forEach((val, prop) => {\n const newProp = prop.replace(/([a-z])([A-Z])/g, '$1-$2');\n newMap.set(newProp, val);\n });\n return newMap;\n}\n\n/**\n * @publicApi\n */\nclass NoopAnimationDriver {\n validateStyleProperty(prop) {\n return validateStyleProperty(prop);\n }\n matchesElement(_element, _selector) {\n // This method is deprecated and no longer in use so we return false.\n return false;\n }\n containsElement(elm1, elm2) {\n return containsElement(elm1, elm2);\n }\n getParentElement(element) {\n return getParentElement(element);\n }\n query(element, selector, multi) {\n return invokeQuery(element, selector, multi);\n }\n computeStyle(element, prop, defaultValue) {\n return defaultValue || '';\n }\n animate(element, keyframes, duration, delay, easing, previousPlayers = [], scrubberAccessRequested) {\n return new NoopAnimationPlayer(duration, delay);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NoopAnimationDriver, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NoopAnimationDriver }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NoopAnimationDriver, decorators: [{\n type: Injectable\n }] });\n/**\n * @publicApi\n */\nclass AnimationDriver {\n static { this.NOOP = ( /* @__PURE__ */new NoopAnimationDriver()); }\n}\n\nconst ONE_SECOND = 1000;\nconst SUBSTITUTION_EXPR_START = '{{';\nconst SUBSTITUTION_EXPR_END = '}}';\nconst ENTER_CLASSNAME = 'ng-enter';\nconst LEAVE_CLASSNAME = 'ng-leave';\nconst NG_TRIGGER_CLASSNAME = 'ng-trigger';\nconst NG_TRIGGER_SELECTOR = '.ng-trigger';\nconst NG_ANIMATING_CLASSNAME = 'ng-animating';\nconst NG_ANIMATING_SELECTOR = '.ng-animating';\nfunction resolveTimingValue(value) {\n if (typeof value == 'number')\n return value;\n const matches = value.match(/^(-?[\\.\\d]+)(m?s)/);\n if (!matches || matches.length < 2)\n return 0;\n return _convertTimeValueToMS(parseFloat(matches[1]), matches[2]);\n}\nfunction _convertTimeValueToMS(value, unit) {\n switch (unit) {\n case 's':\n return value * ONE_SECOND;\n default: // ms or something else\n return value;\n }\n}\nfunction resolveTiming(timings, errors, allowNegativeValues) {\n return timings.hasOwnProperty('duration') ?\n timings :\n parseTimeExpression(timings, errors, allowNegativeValues);\n}\nfunction parseTimeExpression(exp, errors, allowNegativeValues) {\n const regex = /^(-?[\\.\\d]+)(m?s)(?:\\s+(-?[\\.\\d]+)(m?s))?(?:\\s+([-a-z]+(?:\\(.+?\\))?))?$/i;\n let duration;\n let delay = 0;\n let easing = '';\n if (typeof exp === 'string') {\n const matches = exp.match(regex);\n if (matches === null) {\n errors.push(invalidTimingValue(exp));\n return { duration: 0, delay: 0, easing: '' };\n }\n duration = _convertTimeValueToMS(parseFloat(matches[1]), matches[2]);\n const delayMatch = matches[3];\n if (delayMatch != null) {\n delay = _convertTimeValueToMS(parseFloat(delayMatch), matches[4]);\n }\n const easingVal = matches[5];\n if (easingVal) {\n easing = easingVal;\n }\n }\n else {\n duration = exp;\n }\n if (!allowNegativeValues) {\n let containsErrors = false;\n let startIndex = errors.length;\n if (duration < 0) {\n errors.push(negativeStepValue());\n containsErrors = true;\n }\n if (delay < 0) {\n errors.push(negativeDelayValue());\n containsErrors = true;\n }\n if (containsErrors) {\n errors.splice(startIndex, 0, invalidTimingValue(exp));\n }\n }\n return { duration, delay, easing };\n}\nfunction copyObj(obj, destination = {}) {\n Object.keys(obj).forEach(prop => {\n destination[prop] = obj[prop];\n });\n return destination;\n}\nfunction convertToMap(obj) {\n const styleMap = new Map();\n Object.keys(obj).forEach(prop => {\n const val = obj[prop];\n styleMap.set(prop, val);\n });\n return styleMap;\n}\nfunction normalizeKeyframes(keyframes) {\n if (!keyframes.length) {\n return [];\n }\n if (keyframes[0] instanceof Map) {\n return keyframes;\n }\n return keyframes.map(kf => convertToMap(kf));\n}\nfunction normalizeStyles(styles) {\n const normalizedStyles = new Map();\n if (Array.isArray(styles)) {\n styles.forEach(data => copyStyles(data, normalizedStyles));\n }\n else {\n copyStyles(styles, normalizedStyles);\n }\n return normalizedStyles;\n}\nfunction copyStyles(styles, destination = new Map(), backfill) {\n if (backfill) {\n for (let [prop, val] of backfill) {\n destination.set(prop, val);\n }\n }\n for (let [prop, val] of styles) {\n destination.set(prop, val);\n }\n return destination;\n}\nfunction setStyles(element, styles, formerStyles) {\n styles.forEach((val, prop) => {\n const camelProp = dashCaseToCamelCase(prop);\n if (formerStyles && !formerStyles.has(prop)) {\n formerStyles.set(prop, element.style[camelProp]);\n }\n element.style[camelProp] = val;\n });\n}\nfunction eraseStyles(element, styles) {\n styles.forEach((_, prop) => {\n const camelProp = dashCaseToCamelCase(prop);\n element.style[camelProp] = '';\n });\n}\nfunction normalizeAnimationEntry(steps) {\n if (Array.isArray(steps)) {\n if (steps.length == 1)\n return steps[0];\n return sequence(steps);\n }\n return steps;\n}\nfunction validateStyleParams(value, options, errors) {\n const params = options.params || {};\n const matches = extractStyleParams(value);\n if (matches.length) {\n matches.forEach(varName => {\n if (!params.hasOwnProperty(varName)) {\n errors.push(invalidStyleParams(varName));\n }\n });\n }\n}\nconst PARAM_REGEX = new RegExp(`${SUBSTITUTION_EXPR_START}\\\\s*(.+?)\\\\s*${SUBSTITUTION_EXPR_END}`, 'g');\nfunction extractStyleParams(value) {\n let params = [];\n if (typeof value === 'string') {\n let match;\n while (match = PARAM_REGEX.exec(value)) {\n params.push(match[1]);\n }\n PARAM_REGEX.lastIndex = 0;\n }\n return params;\n}\nfunction interpolateParams(value, params, errors) {\n const original = value.toString();\n const str = original.replace(PARAM_REGEX, (_, varName) => {\n let localVal = params[varName];\n // this means that the value was never overridden by the data passed in by the user\n if (localVal == null) {\n errors.push(invalidParamValue(varName));\n localVal = '';\n }\n return localVal.toString();\n });\n // we do this to assert that numeric values stay as they are\n return str == original ? value : str;\n}\nfunction iteratorToArray(iterator) {\n const arr = [];\n let item = iterator.next();\n while (!item.done) {\n arr.push(item.value);\n item = iterator.next();\n }\n return arr;\n}\nconst DASH_CASE_REGEXP = /-+([a-z0-9])/g;\nfunction dashCaseToCamelCase(input) {\n return input.replace(DASH_CASE_REGEXP, (...m) => m[1].toUpperCase());\n}\nfunction camelCaseToDashCase(input) {\n return input.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n}\nfunction allowPreviousPlayerStylesMerge(duration, delay) {\n return duration === 0 || delay === 0;\n}\nfunction balancePreviousStylesIntoKeyframes(element, keyframes, previousStyles) {\n if (previousStyles.size && keyframes.length) {\n let startingKeyframe = keyframes[0];\n let missingStyleProps = [];\n previousStyles.forEach((val, prop) => {\n if (!startingKeyframe.has(prop)) {\n missingStyleProps.push(prop);\n }\n startingKeyframe.set(prop, val);\n });\n if (missingStyleProps.length) {\n for (let i = 1; i < keyframes.length; i++) {\n let kf = keyframes[i];\n missingStyleProps.forEach(prop => kf.set(prop, computeStyle(element, prop)));\n }\n }\n }\n return keyframes;\n}\nfunction visitDslNode(visitor, node, context) {\n switch (node.type) {\n case 7 /* AnimationMetadataType.Trigger */:\n return visitor.visitTrigger(node, context);\n case 0 /* AnimationMetadataType.State */:\n return visitor.visitState(node, context);\n case 1 /* AnimationMetadataType.Transition */:\n return visitor.visitTransition(node, context);\n case 2 /* AnimationMetadataType.Sequence */:\n return visitor.visitSequence(node, context);\n case 3 /* AnimationMetadataType.Group */:\n return visitor.visitGroup(node, context);\n case 4 /* AnimationMetadataType.Animate */:\n return visitor.visitAnimate(node, context);\n case 5 /* AnimationMetadataType.Keyframes */:\n return visitor.visitKeyframes(node, context);\n case 6 /* AnimationMetadataType.Style */:\n return visitor.visitStyle(node, context);\n case 8 /* AnimationMetadataType.Reference */:\n return visitor.visitReference(node, context);\n case 9 /* AnimationMetadataType.AnimateChild */:\n return visitor.visitAnimateChild(node, context);\n case 10 /* AnimationMetadataType.AnimateRef */:\n return visitor.visitAnimateRef(node, context);\n case 11 /* AnimationMetadataType.Query */:\n return visitor.visitQuery(node, context);\n case 12 /* AnimationMetadataType.Stagger */:\n return visitor.visitStagger(node, context);\n default:\n throw invalidNodeType(node.type);\n }\n}\nfunction computeStyle(element, prop) {\n return window.getComputedStyle(element)[prop];\n}\n\nfunction createListOfWarnings(warnings) {\n const LINE_START = '\\n - ';\n return `${LINE_START}${warnings.filter(Boolean).map(warning => warning).join(LINE_START)}`;\n}\nfunction warnValidation(warnings) {\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n console.warn(`animation validation warnings:${createListOfWarnings(warnings)}`);\n}\nfunction warnTriggerBuild(name, warnings) {\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n console.warn(`The animation trigger \"${name}\" has built with the following warnings:${createListOfWarnings(warnings)}`);\n}\nfunction warnRegister(warnings) {\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n console.warn(`Animation built with the following warnings:${createListOfWarnings(warnings)}`);\n}\nfunction triggerParsingWarnings(name, warnings) {\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n console.warn(`Animation parsing for the ${name} trigger presents the following warnings:${createListOfWarnings(warnings)}`);\n}\nfunction pushUnrecognizedPropertiesWarning(warnings, props) {\n if (props.length) {\n warnings.push(`The following provided properties are not recognized: ${props.join(', ')}`);\n }\n}\n\nconst ANY_STATE = '*';\nfunction parseTransitionExpr(transitionValue, errors) {\n const expressions = [];\n if (typeof transitionValue == 'string') {\n transitionValue.split(/\\s*,\\s*/).forEach(str => parseInnerTransitionStr(str, expressions, errors));\n }\n else {\n expressions.push(transitionValue);\n }\n return expressions;\n}\nfunction parseInnerTransitionStr(eventStr, expressions, errors) {\n if (eventStr[0] == ':') {\n const result = parseAnimationAlias(eventStr, errors);\n if (typeof result == 'function') {\n expressions.push(result);\n return;\n }\n eventStr = result;\n }\n const match = eventStr.match(/^(\\*|[-\\w]+)\\s*()\\s*(\\*|[-\\w]+)$/);\n if (match == null || match.length < 4) {\n errors.push(invalidExpression(eventStr));\n return expressions;\n }\n const fromState = match[1];\n const separator = match[2];\n const toState = match[3];\n expressions.push(makeLambdaFromStates(fromState, toState));\n const isFullAnyStateExpr = fromState == ANY_STATE && toState == ANY_STATE;\n if (separator[0] == '<' && !isFullAnyStateExpr) {\n expressions.push(makeLambdaFromStates(toState, fromState));\n }\n}\nfunction parseAnimationAlias(alias, errors) {\n switch (alias) {\n case ':enter':\n return 'void => *';\n case ':leave':\n return '* => void';\n case ':increment':\n return (fromState, toState) => parseFloat(toState) > parseFloat(fromState);\n case ':decrement':\n return (fromState, toState) => parseFloat(toState) < parseFloat(fromState);\n default:\n errors.push(invalidTransitionAlias(alias));\n return '* => *';\n }\n}\n// DO NOT REFACTOR ... keep the follow set instantiations\n// with the values intact (closure compiler for some reason\n// removes follow-up lines that add the values outside of\n// the constructor...\nconst TRUE_BOOLEAN_VALUES = new Set(['true', '1']);\nconst FALSE_BOOLEAN_VALUES = new Set(['false', '0']);\nfunction makeLambdaFromStates(lhs, rhs) {\n const LHS_MATCH_BOOLEAN = TRUE_BOOLEAN_VALUES.has(lhs) || FALSE_BOOLEAN_VALUES.has(lhs);\n const RHS_MATCH_BOOLEAN = TRUE_BOOLEAN_VALUES.has(rhs) || FALSE_BOOLEAN_VALUES.has(rhs);\n return (fromState, toState) => {\n let lhsMatch = lhs == ANY_STATE || lhs == fromState;\n let rhsMatch = rhs == ANY_STATE || rhs == toState;\n if (!lhsMatch && LHS_MATCH_BOOLEAN && typeof fromState === 'boolean') {\n lhsMatch = fromState ? TRUE_BOOLEAN_VALUES.has(lhs) : FALSE_BOOLEAN_VALUES.has(lhs);\n }\n if (!rhsMatch && RHS_MATCH_BOOLEAN && typeof toState === 'boolean') {\n rhsMatch = toState ? TRUE_BOOLEAN_VALUES.has(rhs) : FALSE_BOOLEAN_VALUES.has(rhs);\n }\n return lhsMatch && rhsMatch;\n };\n}\n\nconst SELF_TOKEN = ':self';\nconst SELF_TOKEN_REGEX = new RegExp(`s*${SELF_TOKEN}s*,?`, 'g');\n/*\n * [Validation]\n * The visitor code below will traverse the animation AST generated by the animation verb functions\n * (the output is a tree of objects) and attempt to perform a series of validations on the data. The\n * following corner-cases will be validated:\n *\n * 1. Overlap of animations\n * Given that a CSS property cannot be animated in more than one place at the same time, it's\n * important that this behavior is detected and validated. The way in which this occurs is that\n * each time a style property is examined, a string-map containing the property will be updated with\n * the start and end times for when the property is used within an animation step.\n *\n * If there are two or more parallel animations that are currently running (these are invoked by the\n * group()) on the same element then the validator will throw an error. Since the start/end timing\n * values are collected for each property then if the current animation step is animating the same\n * property and its timing values fall anywhere into the window of time that the property is\n * currently being animated within then this is what causes an error.\n *\n * 2. Timing values\n * The validator will validate to see if a timing value of `duration delay easing` or\n * `durationNumber` is valid or not.\n *\n * (note that upon validation the code below will replace the timing data with an object containing\n * {duration,delay,easing}.\n *\n * 3. Offset Validation\n * Each of the style() calls are allowed to have an offset value when placed inside of keyframes().\n * Offsets within keyframes() are considered valid when:\n *\n * - No offsets are used at all\n * - Each style() entry contains an offset value\n * - Each offset is between 0 and 1\n * - Each offset is greater to or equal than the previous one\n *\n * Otherwise an error will be thrown.\n */\nfunction buildAnimationAst(driver, metadata, errors, warnings) {\n return new AnimationAstBuilderVisitor(driver).build(metadata, errors, warnings);\n}\nconst ROOT_SELECTOR = '';\nclass AnimationAstBuilderVisitor {\n constructor(_driver) {\n this._driver = _driver;\n }\n build(metadata, errors, warnings) {\n const context = new AnimationAstBuilderContext(errors);\n this._resetContextStyleTimingState(context);\n const ast = visitDslNode(this, normalizeAnimationEntry(metadata), context);\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (context.unsupportedCSSPropertiesFound.size) {\n pushUnrecognizedPropertiesWarning(warnings, [...context.unsupportedCSSPropertiesFound.keys()]);\n }\n }\n return ast;\n }\n _resetContextStyleTimingState(context) {\n context.currentQuerySelector = ROOT_SELECTOR;\n context.collectedStyles = new Map();\n context.collectedStyles.set(ROOT_SELECTOR, new Map());\n context.currentTime = 0;\n }\n visitTrigger(metadata, context) {\n let queryCount = context.queryCount = 0;\n let depCount = context.depCount = 0;\n const states = [];\n const transitions = [];\n if (metadata.name.charAt(0) == '@') {\n context.errors.push(invalidTrigger());\n }\n metadata.definitions.forEach(def => {\n this._resetContextStyleTimingState(context);\n if (def.type == 0 /* AnimationMetadataType.State */) {\n const stateDef = def;\n const name = stateDef.name;\n name.toString().split(/\\s*,\\s*/).forEach(n => {\n stateDef.name = n;\n states.push(this.visitState(stateDef, context));\n });\n stateDef.name = name;\n }\n else if (def.type == 1 /* AnimationMetadataType.Transition */) {\n const transition = this.visitTransition(def, context);\n queryCount += transition.queryCount;\n depCount += transition.depCount;\n transitions.push(transition);\n }\n else {\n context.errors.push(invalidDefinition());\n }\n });\n return {\n type: 7 /* AnimationMetadataType.Trigger */,\n name: metadata.name,\n states,\n transitions,\n queryCount,\n depCount,\n options: null\n };\n }\n visitState(metadata, context) {\n const styleAst = this.visitStyle(metadata.styles, context);\n const astParams = (metadata.options && metadata.options.params) || null;\n if (styleAst.containsDynamicStyles) {\n const missingSubs = new Set();\n const params = astParams || {};\n styleAst.styles.forEach(style => {\n if (style instanceof Map) {\n style.forEach(value => {\n extractStyleParams(value).forEach(sub => {\n if (!params.hasOwnProperty(sub)) {\n missingSubs.add(sub);\n }\n });\n });\n }\n });\n if (missingSubs.size) {\n const missingSubsArr = iteratorToArray(missingSubs.values());\n context.errors.push(invalidState(metadata.name, missingSubsArr));\n }\n }\n return {\n type: 0 /* AnimationMetadataType.State */,\n name: metadata.name,\n style: styleAst,\n options: astParams ? { params: astParams } : null\n };\n }\n visitTransition(metadata, context) {\n context.queryCount = 0;\n context.depCount = 0;\n const animation = visitDslNode(this, normalizeAnimationEntry(metadata.animation), context);\n const matchers = parseTransitionExpr(metadata.expr, context.errors);\n return {\n type: 1 /* AnimationMetadataType.Transition */,\n matchers,\n animation,\n queryCount: context.queryCount,\n depCount: context.depCount,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitSequence(metadata, context) {\n return {\n type: 2 /* AnimationMetadataType.Sequence */,\n steps: metadata.steps.map(s => visitDslNode(this, s, context)),\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitGroup(metadata, context) {\n const currentTime = context.currentTime;\n let furthestTime = 0;\n const steps = metadata.steps.map(step => {\n context.currentTime = currentTime;\n const innerAst = visitDslNode(this, step, context);\n furthestTime = Math.max(furthestTime, context.currentTime);\n return innerAst;\n });\n context.currentTime = furthestTime;\n return {\n type: 3 /* AnimationMetadataType.Group */,\n steps,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitAnimate(metadata, context) {\n const timingAst = constructTimingAst(metadata.timings, context.errors);\n context.currentAnimateTimings = timingAst;\n let styleAst;\n let styleMetadata = metadata.styles ? metadata.styles : style({});\n if (styleMetadata.type == 5 /* AnimationMetadataType.Keyframes */) {\n styleAst = this.visitKeyframes(styleMetadata, context);\n }\n else {\n let styleMetadata = metadata.styles;\n let isEmpty = false;\n if (!styleMetadata) {\n isEmpty = true;\n const newStyleData = {};\n if (timingAst.easing) {\n newStyleData['easing'] = timingAst.easing;\n }\n styleMetadata = style(newStyleData);\n }\n context.currentTime += timingAst.duration + timingAst.delay;\n const _styleAst = this.visitStyle(styleMetadata, context);\n _styleAst.isEmptyStep = isEmpty;\n styleAst = _styleAst;\n }\n context.currentAnimateTimings = null;\n return {\n type: 4 /* AnimationMetadataType.Animate */,\n timings: timingAst,\n style: styleAst,\n options: null\n };\n }\n visitStyle(metadata, context) {\n const ast = this._makeStyleAst(metadata, context);\n this._validateStyleAst(ast, context);\n return ast;\n }\n _makeStyleAst(metadata, context) {\n const styles = [];\n const metadataStyles = Array.isArray(metadata.styles) ? metadata.styles : [metadata.styles];\n for (let styleTuple of metadataStyles) {\n if (typeof styleTuple === 'string') {\n if (styleTuple === AUTO_STYLE) {\n styles.push(styleTuple);\n }\n else {\n context.errors.push(invalidStyleValue(styleTuple));\n }\n }\n else {\n styles.push(convertToMap(styleTuple));\n }\n }\n let containsDynamicStyles = false;\n let collectedEasing = null;\n styles.forEach(styleData => {\n if (styleData instanceof Map) {\n if (styleData.has('easing')) {\n collectedEasing = styleData.get('easing');\n styleData.delete('easing');\n }\n if (!containsDynamicStyles) {\n for (let value of styleData.values()) {\n if (value.toString().indexOf(SUBSTITUTION_EXPR_START) >= 0) {\n containsDynamicStyles = true;\n break;\n }\n }\n }\n }\n });\n return {\n type: 6 /* AnimationMetadataType.Style */,\n styles,\n easing: collectedEasing,\n offset: metadata.offset,\n containsDynamicStyles,\n options: null\n };\n }\n _validateStyleAst(ast, context) {\n const timings = context.currentAnimateTimings;\n let endTime = context.currentTime;\n let startTime = context.currentTime;\n if (timings && startTime > 0) {\n startTime -= timings.duration + timings.delay;\n }\n ast.styles.forEach(tuple => {\n if (typeof tuple === 'string')\n return;\n tuple.forEach((value, prop) => {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this._driver.validateStyleProperty(prop)) {\n tuple.delete(prop);\n context.unsupportedCSSPropertiesFound.add(prop);\n return;\n }\n }\n // This is guaranteed to have a defined Map at this querySelector location making it\n // safe to add the assertion here. It is set as a default empty map in prior methods.\n const collectedStyles = context.collectedStyles.get(context.currentQuerySelector);\n const collectedEntry = collectedStyles.get(prop);\n let updateCollectedStyle = true;\n if (collectedEntry) {\n if (startTime != endTime && startTime >= collectedEntry.startTime &&\n endTime <= collectedEntry.endTime) {\n context.errors.push(invalidParallelAnimation(prop, collectedEntry.startTime, collectedEntry.endTime, startTime, endTime));\n updateCollectedStyle = false;\n }\n // we always choose the smaller start time value since we\n // want to have a record of the entire animation window where\n // the style property is being animated in between\n startTime = collectedEntry.startTime;\n }\n if (updateCollectedStyle) {\n collectedStyles.set(prop, { startTime, endTime });\n }\n if (context.options) {\n validateStyleParams(value, context.options, context.errors);\n }\n });\n });\n }\n visitKeyframes(metadata, context) {\n const ast = { type: 5 /* AnimationMetadataType.Keyframes */, styles: [], options: null };\n if (!context.currentAnimateTimings) {\n context.errors.push(invalidKeyframes());\n return ast;\n }\n const MAX_KEYFRAME_OFFSET = 1;\n let totalKeyframesWithOffsets = 0;\n const offsets = [];\n let offsetsOutOfOrder = false;\n let keyframesOutOfRange = false;\n let previousOffset = 0;\n const keyframes = metadata.steps.map(styles => {\n const style = this._makeStyleAst(styles, context);\n let offsetVal = style.offset != null ? style.offset : consumeOffset(style.styles);\n let offset = 0;\n if (offsetVal != null) {\n totalKeyframesWithOffsets++;\n offset = style.offset = offsetVal;\n }\n keyframesOutOfRange = keyframesOutOfRange || offset < 0 || offset > 1;\n offsetsOutOfOrder = offsetsOutOfOrder || offset < previousOffset;\n previousOffset = offset;\n offsets.push(offset);\n return style;\n });\n if (keyframesOutOfRange) {\n context.errors.push(invalidOffset());\n }\n if (offsetsOutOfOrder) {\n context.errors.push(keyframeOffsetsOutOfOrder());\n }\n const length = metadata.steps.length;\n let generatedOffset = 0;\n if (totalKeyframesWithOffsets > 0 && totalKeyframesWithOffsets < length) {\n context.errors.push(keyframesMissingOffsets());\n }\n else if (totalKeyframesWithOffsets == 0) {\n generatedOffset = MAX_KEYFRAME_OFFSET / (length - 1);\n }\n const limit = length - 1;\n const currentTime = context.currentTime;\n const currentAnimateTimings = context.currentAnimateTimings;\n const animateDuration = currentAnimateTimings.duration;\n keyframes.forEach((kf, i) => {\n const offset = generatedOffset > 0 ? (i == limit ? 1 : (generatedOffset * i)) : offsets[i];\n const durationUpToThisFrame = offset * animateDuration;\n context.currentTime = currentTime + currentAnimateTimings.delay + durationUpToThisFrame;\n currentAnimateTimings.duration = durationUpToThisFrame;\n this._validateStyleAst(kf, context);\n kf.offset = offset;\n ast.styles.push(kf);\n });\n return ast;\n }\n visitReference(metadata, context) {\n return {\n type: 8 /* AnimationMetadataType.Reference */,\n animation: visitDslNode(this, normalizeAnimationEntry(metadata.animation), context),\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitAnimateChild(metadata, context) {\n context.depCount++;\n return {\n type: 9 /* AnimationMetadataType.AnimateChild */,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitAnimateRef(metadata, context) {\n return {\n type: 10 /* AnimationMetadataType.AnimateRef */,\n animation: this.visitReference(metadata.animation, context),\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitQuery(metadata, context) {\n const parentSelector = context.currentQuerySelector;\n const options = (metadata.options || {});\n context.queryCount++;\n context.currentQuery = metadata;\n const [selector, includeSelf] = normalizeSelector(metadata.selector);\n context.currentQuerySelector =\n parentSelector.length ? (parentSelector + ' ' + selector) : selector;\n getOrSetDefaultValue(context.collectedStyles, context.currentQuerySelector, new Map());\n const animation = visitDslNode(this, normalizeAnimationEntry(metadata.animation), context);\n context.currentQuery = null;\n context.currentQuerySelector = parentSelector;\n return {\n type: 11 /* AnimationMetadataType.Query */,\n selector,\n limit: options.limit || 0,\n optional: !!options.optional,\n includeSelf,\n animation,\n originalSelector: metadata.selector,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitStagger(metadata, context) {\n if (!context.currentQuery) {\n context.errors.push(invalidStagger());\n }\n const timings = metadata.timings === 'full' ?\n { duration: 0, delay: 0, easing: 'full' } :\n resolveTiming(metadata.timings, context.errors, true);\n return {\n type: 12 /* AnimationMetadataType.Stagger */,\n animation: visitDslNode(this, normalizeAnimationEntry(metadata.animation), context),\n timings,\n options: null\n };\n }\n}\nfunction normalizeSelector(selector) {\n const hasAmpersand = selector.split(/\\s*,\\s*/).find(token => token == SELF_TOKEN) ? true : false;\n if (hasAmpersand) {\n selector = selector.replace(SELF_TOKEN_REGEX, '');\n }\n // Note: the :enter and :leave aren't normalized here since those\n // selectors are filled in at runtime during timeline building\n selector = selector.replace(/@\\*/g, NG_TRIGGER_SELECTOR)\n .replace(/@\\w+/g, match => NG_TRIGGER_SELECTOR + '-' + match.slice(1))\n .replace(/:animating/g, NG_ANIMATING_SELECTOR);\n return [selector, hasAmpersand];\n}\nfunction normalizeParams(obj) {\n return obj ? copyObj(obj) : null;\n}\nclass AnimationAstBuilderContext {\n constructor(errors) {\n this.errors = errors;\n this.queryCount = 0;\n this.depCount = 0;\n this.currentTransition = null;\n this.currentQuery = null;\n this.currentQuerySelector = null;\n this.currentAnimateTimings = null;\n this.currentTime = 0;\n this.collectedStyles = new Map();\n this.options = null;\n this.unsupportedCSSPropertiesFound = new Set();\n }\n}\nfunction consumeOffset(styles) {\n if (typeof styles == 'string')\n return null;\n let offset = null;\n if (Array.isArray(styles)) {\n styles.forEach(styleTuple => {\n if (styleTuple instanceof Map && styleTuple.has('offset')) {\n const obj = styleTuple;\n offset = parseFloat(obj.get('offset'));\n obj.delete('offset');\n }\n });\n }\n else if (styles instanceof Map && styles.has('offset')) {\n const obj = styles;\n offset = parseFloat(obj.get('offset'));\n obj.delete('offset');\n }\n return offset;\n}\nfunction constructTimingAst(value, errors) {\n if (value.hasOwnProperty('duration')) {\n return value;\n }\n if (typeof value == 'number') {\n const duration = resolveTiming(value, errors).duration;\n return makeTimingAst(duration, 0, '');\n }\n const strValue = value;\n const isDynamic = strValue.split(/\\s+/).some(v => v.charAt(0) == '{' && v.charAt(1) == '{');\n if (isDynamic) {\n const ast = makeTimingAst(0, 0, '');\n ast.dynamic = true;\n ast.strValue = strValue;\n return ast;\n }\n const timings = resolveTiming(strValue, errors);\n return makeTimingAst(timings.duration, timings.delay, timings.easing);\n}\nfunction normalizeAnimationOptions(options) {\n if (options) {\n options = copyObj(options);\n if (options['params']) {\n options['params'] = normalizeParams(options['params']);\n }\n }\n else {\n options = {};\n }\n return options;\n}\nfunction makeTimingAst(duration, delay, easing) {\n return { duration, delay, easing };\n}\n\nfunction createTimelineInstruction(element, keyframes, preStyleProps, postStyleProps, duration, delay, easing = null, subTimeline = false) {\n return {\n type: 1 /* AnimationTransitionInstructionType.TimelineAnimation */,\n element,\n keyframes,\n preStyleProps,\n postStyleProps,\n duration,\n delay,\n totalTime: duration + delay,\n easing,\n subTimeline\n };\n}\n\nclass ElementInstructionMap {\n constructor() {\n this._map = new Map();\n }\n get(element) {\n return this._map.get(element) || [];\n }\n append(element, instructions) {\n let existingInstructions = this._map.get(element);\n if (!existingInstructions) {\n this._map.set(element, existingInstructions = []);\n }\n existingInstructions.push(...instructions);\n }\n has(element) {\n return this._map.has(element);\n }\n clear() {\n this._map.clear();\n }\n}\n\nconst ONE_FRAME_IN_MILLISECONDS = 1;\nconst ENTER_TOKEN = ':enter';\nconst ENTER_TOKEN_REGEX = new RegExp(ENTER_TOKEN, 'g');\nconst LEAVE_TOKEN = ':leave';\nconst LEAVE_TOKEN_REGEX = new RegExp(LEAVE_TOKEN, 'g');\n/*\n * The code within this file aims to generate web-animations-compatible keyframes from Angular's\n * animation DSL code.\n *\n * The code below will be converted from:\n *\n * ```\n * sequence([\n * style({ opacity: 0 }),\n * animate(1000, style({ opacity: 0 }))\n * ])\n * ```\n *\n * To:\n * ```\n * keyframes = [{ opacity: 0, offset: 0 }, { opacity: 1, offset: 1 }]\n * duration = 1000\n * delay = 0\n * easing = ''\n * ```\n *\n * For this operation to cover the combination of animation verbs (style, animate, group, etc...) a\n * combination of AST traversal and merge-sort-like algorithms are used.\n *\n * [AST Traversal]\n * Each of the animation verbs, when executed, will return an string-map object representing what\n * type of action it is (style, animate, group, etc...) and the data associated with it. This means\n * that when functional composition mix of these functions is evaluated (like in the example above)\n * then it will end up producing a tree of objects representing the animation itself.\n *\n * When this animation object tree is processed by the visitor code below it will visit each of the\n * verb statements within the visitor. And during each visit it will build the context of the\n * animation keyframes by interacting with the `TimelineBuilder`.\n *\n * [TimelineBuilder]\n * This class is responsible for tracking the styles and building a series of keyframe objects for a\n * timeline between a start and end time. The builder starts off with an initial timeline and each\n * time the AST comes across a `group()`, `keyframes()` or a combination of the two within a\n * `sequence()` then it will generate a sub timeline for each step as well as a new one after\n * they are complete.\n *\n * As the AST is traversed, the timing state on each of the timelines will be incremented. If a sub\n * timeline was created (based on one of the cases above) then the parent timeline will attempt to\n * merge the styles used within the sub timelines into itself (only with group() this will happen).\n * This happens with a merge operation (much like how the merge works in mergeSort) and it will only\n * copy the most recently used styles from the sub timelines into the parent timeline. This ensures\n * that if the styles are used later on in another phase of the animation then they will be the most\n * up-to-date values.\n *\n * [How Missing Styles Are Updated]\n * Each timeline has a `backFill` property which is responsible for filling in new styles into\n * already processed keyframes if a new style shows up later within the animation sequence.\n *\n * ```\n * sequence([\n * style({ width: 0 }),\n * animate(1000, style({ width: 100 })),\n * animate(1000, style({ width: 200 })),\n * animate(1000, style({ width: 300 }))\n * animate(1000, style({ width: 400, height: 400 })) // notice how `height` doesn't exist anywhere\n * else\n * ])\n * ```\n *\n * What is happening here is that the `height` value is added later in the sequence, but is missing\n * from all previous animation steps. Therefore when a keyframe is created it would also be missing\n * from all previous keyframes up until where it is first used. For the timeline keyframe generation\n * to properly fill in the style it will place the previous value (the value from the parent\n * timeline) or a default value of `*` into the backFill map. The `copyStyles` method in util.ts\n * handles propagating that backfill map to the styles object.\n *\n * When a sub-timeline is created it will have its own backFill property. This is done so that\n * styles present within the sub-timeline do not accidentally seep into the previous/future timeline\n * keyframes\n *\n * [Validation]\n * The code in this file is not responsible for validation. That functionality happens with within\n * the `AnimationValidatorVisitor` code.\n */\nfunction buildAnimationTimelines(driver, rootElement, ast, enterClassName, leaveClassName, startingStyles = new Map(), finalStyles = new Map(), options, subInstructions, errors = []) {\n return new AnimationTimelineBuilderVisitor().buildKeyframes(driver, rootElement, ast, enterClassName, leaveClassName, startingStyles, finalStyles, options, subInstructions, errors);\n}\nclass AnimationTimelineBuilderVisitor {\n buildKeyframes(driver, rootElement, ast, enterClassName, leaveClassName, startingStyles, finalStyles, options, subInstructions, errors = []) {\n subInstructions = subInstructions || new ElementInstructionMap();\n const context = new AnimationTimelineContext(driver, rootElement, subInstructions, enterClassName, leaveClassName, errors, []);\n context.options = options;\n const delay = options.delay ? resolveTimingValue(options.delay) : 0;\n context.currentTimeline.delayNextStep(delay);\n context.currentTimeline.setStyles([startingStyles], null, context.errors, options);\n visitDslNode(this, ast, context);\n // this checks to see if an actual animation happened\n const timelines = context.timelines.filter(timeline => timeline.containsAnimation());\n // note: we just want to apply the final styles for the rootElement, so we do not\n // just apply the styles to the last timeline but the last timeline which\n // element is the root one (basically `*`-styles are replaced with the actual\n // state style values only for the root element)\n if (timelines.length && finalStyles.size) {\n let lastRootTimeline;\n for (let i = timelines.length - 1; i >= 0; i--) {\n const timeline = timelines[i];\n if (timeline.element === rootElement) {\n lastRootTimeline = timeline;\n break;\n }\n }\n if (lastRootTimeline && !lastRootTimeline.allowOnlyTimelineStyles()) {\n lastRootTimeline.setStyles([finalStyles], null, context.errors, options);\n }\n }\n return timelines.length ?\n timelines.map(timeline => timeline.buildKeyframes()) :\n [createTimelineInstruction(rootElement, [], [], [], 0, delay, '', false)];\n }\n visitTrigger(ast, context) {\n // these values are not visited in this AST\n }\n visitState(ast, context) {\n // these values are not visited in this AST\n }\n visitTransition(ast, context) {\n // these values are not visited in this AST\n }\n visitAnimateChild(ast, context) {\n const elementInstructions = context.subInstructions.get(context.element);\n if (elementInstructions) {\n const innerContext = context.createSubContext(ast.options);\n const startTime = context.currentTimeline.currentTime;\n const endTime = this._visitSubInstructions(elementInstructions, innerContext, innerContext.options);\n if (startTime != endTime) {\n // we do this on the upper context because we created a sub context for\n // the sub child animations\n context.transformIntoNewTimeline(endTime);\n }\n }\n context.previousNode = ast;\n }\n visitAnimateRef(ast, context) {\n const innerContext = context.createSubContext(ast.options);\n innerContext.transformIntoNewTimeline();\n this._applyAnimationRefDelays([ast.options, ast.animation.options], context, innerContext);\n this.visitReference(ast.animation, innerContext);\n context.transformIntoNewTimeline(innerContext.currentTimeline.currentTime);\n context.previousNode = ast;\n }\n _applyAnimationRefDelays(animationsRefsOptions, context, innerContext) {\n for (const animationRefOptions of animationsRefsOptions) {\n const animationDelay = animationRefOptions?.delay;\n if (animationDelay) {\n const animationDelayValue = typeof animationDelay === 'number' ?\n animationDelay :\n resolveTimingValue(interpolateParams(animationDelay, animationRefOptions?.params ?? {}, context.errors));\n innerContext.delayNextStep(animationDelayValue);\n }\n }\n }\n _visitSubInstructions(instructions, context, options) {\n const startTime = context.currentTimeline.currentTime;\n let furthestTime = startTime;\n // this is a special-case for when a user wants to skip a sub\n // animation from being fired entirely.\n const duration = options.duration != null ? resolveTimingValue(options.duration) : null;\n const delay = options.delay != null ? resolveTimingValue(options.delay) : null;\n if (duration !== 0) {\n instructions.forEach(instruction => {\n const instructionTimings = context.appendInstructionToTimeline(instruction, duration, delay);\n furthestTime =\n Math.max(furthestTime, instructionTimings.duration + instructionTimings.delay);\n });\n }\n return furthestTime;\n }\n visitReference(ast, context) {\n context.updateOptions(ast.options, true);\n visitDslNode(this, ast.animation, context);\n context.previousNode = ast;\n }\n visitSequence(ast, context) {\n const subContextCount = context.subContextCount;\n let ctx = context;\n const options = ast.options;\n if (options && (options.params || options.delay)) {\n ctx = context.createSubContext(options);\n ctx.transformIntoNewTimeline();\n if (options.delay != null) {\n if (ctx.previousNode.type == 6 /* AnimationMetadataType.Style */) {\n ctx.currentTimeline.snapshotCurrentStyles();\n ctx.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n }\n const delay = resolveTimingValue(options.delay);\n ctx.delayNextStep(delay);\n }\n }\n if (ast.steps.length) {\n ast.steps.forEach(s => visitDslNode(this, s, ctx));\n // this is here just in case the inner steps only contain or end with a style() call\n ctx.currentTimeline.applyStylesToKeyframe();\n // this means that some animation function within the sequence\n // ended up creating a sub timeline (which means the current\n // timeline cannot overlap with the contents of the sequence)\n if (ctx.subContextCount > subContextCount) {\n ctx.transformIntoNewTimeline();\n }\n }\n context.previousNode = ast;\n }\n visitGroup(ast, context) {\n const innerTimelines = [];\n let furthestTime = context.currentTimeline.currentTime;\n const delay = ast.options && ast.options.delay ? resolveTimingValue(ast.options.delay) : 0;\n ast.steps.forEach(s => {\n const innerContext = context.createSubContext(ast.options);\n if (delay) {\n innerContext.delayNextStep(delay);\n }\n visitDslNode(this, s, innerContext);\n furthestTime = Math.max(furthestTime, innerContext.currentTimeline.currentTime);\n innerTimelines.push(innerContext.currentTimeline);\n });\n // this operation is run after the AST loop because otherwise\n // if the parent timeline's collected styles were updated then\n // it would pass in invalid data into the new-to-be forked items\n innerTimelines.forEach(timeline => context.currentTimeline.mergeTimelineCollectedStyles(timeline));\n context.transformIntoNewTimeline(furthestTime);\n context.previousNode = ast;\n }\n _visitTiming(ast, context) {\n if (ast.dynamic) {\n const strValue = ast.strValue;\n const timingValue = context.params ? interpolateParams(strValue, context.params, context.errors) : strValue;\n return resolveTiming(timingValue, context.errors);\n }\n else {\n return { duration: ast.duration, delay: ast.delay, easing: ast.easing };\n }\n }\n visitAnimate(ast, context) {\n const timings = context.currentAnimateTimings = this._visitTiming(ast.timings, context);\n const timeline = context.currentTimeline;\n if (timings.delay) {\n context.incrementTime(timings.delay);\n timeline.snapshotCurrentStyles();\n }\n const style = ast.style;\n if (style.type == 5 /* AnimationMetadataType.Keyframes */) {\n this.visitKeyframes(style, context);\n }\n else {\n context.incrementTime(timings.duration);\n this.visitStyle(style, context);\n timeline.applyStylesToKeyframe();\n }\n context.currentAnimateTimings = null;\n context.previousNode = ast;\n }\n visitStyle(ast, context) {\n const timeline = context.currentTimeline;\n const timings = context.currentAnimateTimings;\n // this is a special case for when a style() call\n // directly follows an animate() call (but not inside of an animate() call)\n if (!timings && timeline.hasCurrentStyleProperties()) {\n timeline.forwardFrame();\n }\n const easing = (timings && timings.easing) || ast.easing;\n if (ast.isEmptyStep) {\n timeline.applyEmptyStep(easing);\n }\n else {\n timeline.setStyles(ast.styles, easing, context.errors, context.options);\n }\n context.previousNode = ast;\n }\n visitKeyframes(ast, context) {\n const currentAnimateTimings = context.currentAnimateTimings;\n const startTime = (context.currentTimeline).duration;\n const duration = currentAnimateTimings.duration;\n const innerContext = context.createSubContext();\n const innerTimeline = innerContext.currentTimeline;\n innerTimeline.easing = currentAnimateTimings.easing;\n ast.styles.forEach(step => {\n const offset = step.offset || 0;\n innerTimeline.forwardTime(offset * duration);\n innerTimeline.setStyles(step.styles, step.easing, context.errors, context.options);\n innerTimeline.applyStylesToKeyframe();\n });\n // this will ensure that the parent timeline gets all the styles from\n // the child even if the new timeline below is not used\n context.currentTimeline.mergeTimelineCollectedStyles(innerTimeline);\n // we do this because the window between this timeline and the sub timeline\n // should ensure that the styles within are exactly the same as they were before\n context.transformIntoNewTimeline(startTime + duration);\n context.previousNode = ast;\n }\n visitQuery(ast, context) {\n // in the event that the first step before this is a style step we need\n // to ensure the styles are applied before the children are animated\n const startTime = context.currentTimeline.currentTime;\n const options = (ast.options || {});\n const delay = options.delay ? resolveTimingValue(options.delay) : 0;\n if (delay &&\n (context.previousNode.type === 6 /* AnimationMetadataType.Style */ ||\n (startTime == 0 && context.currentTimeline.hasCurrentStyleProperties()))) {\n context.currentTimeline.snapshotCurrentStyles();\n context.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n }\n let furthestTime = startTime;\n const elms = context.invokeQuery(ast.selector, ast.originalSelector, ast.limit, ast.includeSelf, options.optional ? true : false, context.errors);\n context.currentQueryTotal = elms.length;\n let sameElementTimeline = null;\n elms.forEach((element, i) => {\n context.currentQueryIndex = i;\n const innerContext = context.createSubContext(ast.options, element);\n if (delay) {\n innerContext.delayNextStep(delay);\n }\n if (element === context.element) {\n sameElementTimeline = innerContext.currentTimeline;\n }\n visitDslNode(this, ast.animation, innerContext);\n // this is here just incase the inner steps only contain or end\n // with a style() call (which is here to signal that this is a preparatory\n // call to style an element before it is animated again)\n innerContext.currentTimeline.applyStylesToKeyframe();\n const endTime = innerContext.currentTimeline.currentTime;\n furthestTime = Math.max(furthestTime, endTime);\n });\n context.currentQueryIndex = 0;\n context.currentQueryTotal = 0;\n context.transformIntoNewTimeline(furthestTime);\n if (sameElementTimeline) {\n context.currentTimeline.mergeTimelineCollectedStyles(sameElementTimeline);\n context.currentTimeline.snapshotCurrentStyles();\n }\n context.previousNode = ast;\n }\n visitStagger(ast, context) {\n const parentContext = context.parentContext;\n const tl = context.currentTimeline;\n const timings = ast.timings;\n const duration = Math.abs(timings.duration);\n const maxTime = duration * (context.currentQueryTotal - 1);\n let delay = duration * context.currentQueryIndex;\n let staggerTransformer = timings.duration < 0 ? 'reverse' : timings.easing;\n switch (staggerTransformer) {\n case 'reverse':\n delay = maxTime - delay;\n break;\n case 'full':\n delay = parentContext.currentStaggerTime;\n break;\n }\n const timeline = context.currentTimeline;\n if (delay) {\n timeline.delayNextStep(delay);\n }\n const startingTime = timeline.currentTime;\n visitDslNode(this, ast.animation, context);\n context.previousNode = ast;\n // time = duration + delay\n // the reason why this computation is so complex is because\n // the inner timeline may either have a delay value or a stretched\n // keyframe depending on if a subtimeline is not used or is used.\n parentContext.currentStaggerTime =\n (tl.currentTime - startingTime) + (tl.startTime - parentContext.currentTimeline.startTime);\n }\n}\nconst DEFAULT_NOOP_PREVIOUS_NODE = {};\nclass AnimationTimelineContext {\n constructor(_driver, element, subInstructions, _enterClassName, _leaveClassName, errors, timelines, initialTimeline) {\n this._driver = _driver;\n this.element = element;\n this.subInstructions = subInstructions;\n this._enterClassName = _enterClassName;\n this._leaveClassName = _leaveClassName;\n this.errors = errors;\n this.timelines = timelines;\n this.parentContext = null;\n this.currentAnimateTimings = null;\n this.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n this.subContextCount = 0;\n this.options = {};\n this.currentQueryIndex = 0;\n this.currentQueryTotal = 0;\n this.currentStaggerTime = 0;\n this.currentTimeline = initialTimeline || new TimelineBuilder(this._driver, element, 0);\n timelines.push(this.currentTimeline);\n }\n get params() {\n return this.options.params;\n }\n updateOptions(options, skipIfExists) {\n if (!options)\n return;\n const newOptions = options;\n let optionsToUpdate = this.options;\n // NOTE: this will get patched up when other animation methods support duration overrides\n if (newOptions.duration != null) {\n optionsToUpdate.duration = resolveTimingValue(newOptions.duration);\n }\n if (newOptions.delay != null) {\n optionsToUpdate.delay = resolveTimingValue(newOptions.delay);\n }\n const newParams = newOptions.params;\n if (newParams) {\n let paramsToUpdate = optionsToUpdate.params;\n if (!paramsToUpdate) {\n paramsToUpdate = this.options.params = {};\n }\n Object.keys(newParams).forEach(name => {\n if (!skipIfExists || !paramsToUpdate.hasOwnProperty(name)) {\n paramsToUpdate[name] = interpolateParams(newParams[name], paramsToUpdate, this.errors);\n }\n });\n }\n }\n _copyOptions() {\n const options = {};\n if (this.options) {\n const oldParams = this.options.params;\n if (oldParams) {\n const params = options['params'] = {};\n Object.keys(oldParams).forEach(name => {\n params[name] = oldParams[name];\n });\n }\n }\n return options;\n }\n createSubContext(options = null, element, newTime) {\n const target = element || this.element;\n const context = new AnimationTimelineContext(this._driver, target, this.subInstructions, this._enterClassName, this._leaveClassName, this.errors, this.timelines, this.currentTimeline.fork(target, newTime || 0));\n context.previousNode = this.previousNode;\n context.currentAnimateTimings = this.currentAnimateTimings;\n context.options = this._copyOptions();\n context.updateOptions(options);\n context.currentQueryIndex = this.currentQueryIndex;\n context.currentQueryTotal = this.currentQueryTotal;\n context.parentContext = this;\n this.subContextCount++;\n return context;\n }\n transformIntoNewTimeline(newTime) {\n this.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n this.currentTimeline = this.currentTimeline.fork(this.element, newTime);\n this.timelines.push(this.currentTimeline);\n return this.currentTimeline;\n }\n appendInstructionToTimeline(instruction, duration, delay) {\n const updatedTimings = {\n duration: duration != null ? duration : instruction.duration,\n delay: this.currentTimeline.currentTime + (delay != null ? delay : 0) + instruction.delay,\n easing: ''\n };\n const builder = new SubTimelineBuilder(this._driver, instruction.element, instruction.keyframes, instruction.preStyleProps, instruction.postStyleProps, updatedTimings, instruction.stretchStartingKeyframe);\n this.timelines.push(builder);\n return updatedTimings;\n }\n incrementTime(time) {\n this.currentTimeline.forwardTime(this.currentTimeline.duration + time);\n }\n delayNextStep(delay) {\n // negative delays are not yet supported\n if (delay > 0) {\n this.currentTimeline.delayNextStep(delay);\n }\n }\n invokeQuery(selector, originalSelector, limit, includeSelf, optional, errors) {\n let results = [];\n if (includeSelf) {\n results.push(this.element);\n }\n if (selector.length > 0) { // only if :self is used then the selector can be empty\n selector = selector.replace(ENTER_TOKEN_REGEX, '.' + this._enterClassName);\n selector = selector.replace(LEAVE_TOKEN_REGEX, '.' + this._leaveClassName);\n const multi = limit != 1;\n let elements = this._driver.query(this.element, selector, multi);\n if (limit !== 0) {\n elements = limit < 0 ? elements.slice(elements.length + limit, elements.length) :\n elements.slice(0, limit);\n }\n results.push(...elements);\n }\n if (!optional && results.length == 0) {\n errors.push(invalidQuery(originalSelector));\n }\n return results;\n }\n}\nclass TimelineBuilder {\n constructor(_driver, element, startTime, _elementTimelineStylesLookup) {\n this._driver = _driver;\n this.element = element;\n this.startTime = startTime;\n this._elementTimelineStylesLookup = _elementTimelineStylesLookup;\n this.duration = 0;\n this.easing = null;\n this._previousKeyframe = new Map();\n this._currentKeyframe = new Map();\n this._keyframes = new Map();\n this._styleSummary = new Map();\n this._localTimelineStyles = new Map();\n this._pendingStyles = new Map();\n this._backFill = new Map();\n this._currentEmptyStepKeyframe = null;\n if (!this._elementTimelineStylesLookup) {\n this._elementTimelineStylesLookup = new Map();\n }\n this._globalTimelineStyles = this._elementTimelineStylesLookup.get(element);\n if (!this._globalTimelineStyles) {\n this._globalTimelineStyles = this._localTimelineStyles;\n this._elementTimelineStylesLookup.set(element, this._localTimelineStyles);\n }\n this._loadKeyframe();\n }\n containsAnimation() {\n switch (this._keyframes.size) {\n case 0:\n return false;\n case 1:\n return this.hasCurrentStyleProperties();\n default:\n return true;\n }\n }\n hasCurrentStyleProperties() {\n return this._currentKeyframe.size > 0;\n }\n get currentTime() {\n return this.startTime + this.duration;\n }\n delayNextStep(delay) {\n // in the event that a style() step is placed right before a stagger()\n // and that style() step is the very first style() value in the animation\n // then we need to make a copy of the keyframe [0, copy, 1] so that the delay\n // properly applies the style() values to work with the stagger...\n const hasPreStyleStep = this._keyframes.size === 1 && this._pendingStyles.size;\n if (this.duration || hasPreStyleStep) {\n this.forwardTime(this.currentTime + delay);\n if (hasPreStyleStep) {\n this.snapshotCurrentStyles();\n }\n }\n else {\n this.startTime += delay;\n }\n }\n fork(element, currentTime) {\n this.applyStylesToKeyframe();\n return new TimelineBuilder(this._driver, element, currentTime || this.currentTime, this._elementTimelineStylesLookup);\n }\n _loadKeyframe() {\n if (this._currentKeyframe) {\n this._previousKeyframe = this._currentKeyframe;\n }\n this._currentKeyframe = this._keyframes.get(this.duration);\n if (!this._currentKeyframe) {\n this._currentKeyframe = new Map();\n this._keyframes.set(this.duration, this._currentKeyframe);\n }\n }\n forwardFrame() {\n this.duration += ONE_FRAME_IN_MILLISECONDS;\n this._loadKeyframe();\n }\n forwardTime(time) {\n this.applyStylesToKeyframe();\n this.duration = time;\n this._loadKeyframe();\n }\n _updateStyle(prop, value) {\n this._localTimelineStyles.set(prop, value);\n this._globalTimelineStyles.set(prop, value);\n this._styleSummary.set(prop, { time: this.currentTime, value });\n }\n allowOnlyTimelineStyles() {\n return this._currentEmptyStepKeyframe !== this._currentKeyframe;\n }\n applyEmptyStep(easing) {\n if (easing) {\n this._previousKeyframe.set('easing', easing);\n }\n // special case for animate(duration):\n // all missing styles are filled with a `*` value then\n // if any destination styles are filled in later on the same\n // keyframe then they will override the overridden styles\n // We use `_globalTimelineStyles` here because there may be\n // styles in previous keyframes that are not present in this timeline\n for (let [prop, value] of this._globalTimelineStyles) {\n this._backFill.set(prop, value || AUTO_STYLE);\n this._currentKeyframe.set(prop, AUTO_STYLE);\n }\n this._currentEmptyStepKeyframe = this._currentKeyframe;\n }\n setStyles(input, easing, errors, options) {\n if (easing) {\n this._previousKeyframe.set('easing', easing);\n }\n const params = (options && options.params) || {};\n const styles = flattenStyles(input, this._globalTimelineStyles);\n for (let [prop, value] of styles) {\n const val = interpolateParams(value, params, errors);\n this._pendingStyles.set(prop, val);\n if (!this._localTimelineStyles.has(prop)) {\n this._backFill.set(prop, this._globalTimelineStyles.get(prop) ?? AUTO_STYLE);\n }\n this._updateStyle(prop, val);\n }\n }\n applyStylesToKeyframe() {\n if (this._pendingStyles.size == 0)\n return;\n this._pendingStyles.forEach((val, prop) => {\n this._currentKeyframe.set(prop, val);\n });\n this._pendingStyles.clear();\n this._localTimelineStyles.forEach((val, prop) => {\n if (!this._currentKeyframe.has(prop)) {\n this._currentKeyframe.set(prop, val);\n }\n });\n }\n snapshotCurrentStyles() {\n for (let [prop, val] of this._localTimelineStyles) {\n this._pendingStyles.set(prop, val);\n this._updateStyle(prop, val);\n }\n }\n getFinalKeyframe() {\n return this._keyframes.get(this.duration);\n }\n get properties() {\n const properties = [];\n for (let prop in this._currentKeyframe) {\n properties.push(prop);\n }\n return properties;\n }\n mergeTimelineCollectedStyles(timeline) {\n timeline._styleSummary.forEach((details1, prop) => {\n const details0 = this._styleSummary.get(prop);\n if (!details0 || details1.time > details0.time) {\n this._updateStyle(prop, details1.value);\n }\n });\n }\n buildKeyframes() {\n this.applyStylesToKeyframe();\n const preStyleProps = new Set();\n const postStyleProps = new Set();\n const isEmpty = this._keyframes.size === 1 && this.duration === 0;\n let finalKeyframes = [];\n this._keyframes.forEach((keyframe, time) => {\n const finalKeyframe = copyStyles(keyframe, new Map(), this._backFill);\n finalKeyframe.forEach((value, prop) => {\n if (value === ɵPRE_STYLE) {\n preStyleProps.add(prop);\n }\n else if (value === AUTO_STYLE) {\n postStyleProps.add(prop);\n }\n });\n if (!isEmpty) {\n finalKeyframe.set('offset', time / this.duration);\n }\n finalKeyframes.push(finalKeyframe);\n });\n const preProps = preStyleProps.size ? iteratorToArray(preStyleProps.values()) : [];\n const postProps = postStyleProps.size ? iteratorToArray(postStyleProps.values()) : [];\n // special case for a 0-second animation (which is designed just to place styles onscreen)\n if (isEmpty) {\n const kf0 = finalKeyframes[0];\n const kf1 = new Map(kf0);\n kf0.set('offset', 0);\n kf1.set('offset', 1);\n finalKeyframes = [kf0, kf1];\n }\n return createTimelineInstruction(this.element, finalKeyframes, preProps, postProps, this.duration, this.startTime, this.easing, false);\n }\n}\nclass SubTimelineBuilder extends TimelineBuilder {\n constructor(driver, element, keyframes, preStyleProps, postStyleProps, timings, _stretchStartingKeyframe = false) {\n super(driver, element, timings.delay);\n this.keyframes = keyframes;\n this.preStyleProps = preStyleProps;\n this.postStyleProps = postStyleProps;\n this._stretchStartingKeyframe = _stretchStartingKeyframe;\n this.timings = { duration: timings.duration, delay: timings.delay, easing: timings.easing };\n }\n containsAnimation() {\n return this.keyframes.length > 1;\n }\n buildKeyframes() {\n let keyframes = this.keyframes;\n let { delay, duration, easing } = this.timings;\n if (this._stretchStartingKeyframe && delay) {\n const newKeyframes = [];\n const totalTime = duration + delay;\n const startingGap = delay / totalTime;\n // the original starting keyframe now starts once the delay is done\n const newFirstKeyframe = copyStyles(keyframes[0]);\n newFirstKeyframe.set('offset', 0);\n newKeyframes.push(newFirstKeyframe);\n const oldFirstKeyframe = copyStyles(keyframes[0]);\n oldFirstKeyframe.set('offset', roundOffset(startingGap));\n newKeyframes.push(oldFirstKeyframe);\n /*\n When the keyframe is stretched then it means that the delay before the animation\n starts is gone. Instead the first keyframe is placed at the start of the animation\n and it is then copied to where it starts when the original delay is over. This basically\n means nothing animates during that delay, but the styles are still rendered. For this\n to work the original offset values that exist in the original keyframes must be \"warped\"\n so that they can take the new keyframe + delay into account.\n \n delay=1000, duration=1000, keyframes = 0 .5 1\n \n turns into\n \n delay=0, duration=2000, keyframes = 0 .33 .66 1\n */\n // offsets between 1 ... n -1 are all warped by the keyframe stretch\n const limit = keyframes.length - 1;\n for (let i = 1; i <= limit; i++) {\n let kf = copyStyles(keyframes[i]);\n const oldOffset = kf.get('offset');\n const timeAtKeyframe = delay + oldOffset * duration;\n kf.set('offset', roundOffset(timeAtKeyframe / totalTime));\n newKeyframes.push(kf);\n }\n // the new starting keyframe should be added at the start\n duration = totalTime;\n delay = 0;\n easing = '';\n keyframes = newKeyframes;\n }\n return createTimelineInstruction(this.element, keyframes, this.preStyleProps, this.postStyleProps, duration, delay, easing, true);\n }\n}\nfunction roundOffset(offset, decimalPoints = 3) {\n const mult = Math.pow(10, decimalPoints - 1);\n return Math.round(offset * mult) / mult;\n}\nfunction flattenStyles(input, allStyles) {\n const styles = new Map();\n let allProperties;\n input.forEach(token => {\n if (token === '*') {\n allProperties = allProperties || allStyles.keys();\n for (let prop of allProperties) {\n styles.set(prop, AUTO_STYLE);\n }\n }\n else {\n copyStyles(token, styles);\n }\n });\n return styles;\n}\n\nclass Animation {\n constructor(_driver, input) {\n this._driver = _driver;\n const errors = [];\n const warnings = [];\n const ast = buildAnimationAst(_driver, input, errors, warnings);\n if (errors.length) {\n throw validationFailed(errors);\n }\n if (warnings.length) {\n warnValidation(warnings);\n }\n this._animationAst = ast;\n }\n buildTimelines(element, startingStyles, destinationStyles, options, subInstructions) {\n const start = Array.isArray(startingStyles) ? normalizeStyles(startingStyles) :\n startingStyles;\n const dest = Array.isArray(destinationStyles) ? normalizeStyles(destinationStyles) :\n destinationStyles;\n const errors = [];\n subInstructions = subInstructions || new ElementInstructionMap();\n const result = buildAnimationTimelines(this._driver, element, this._animationAst, ENTER_CLASSNAME, LEAVE_CLASSNAME, start, dest, options, subInstructions, errors);\n if (errors.length) {\n throw buildingFailed(errors);\n }\n return result;\n }\n}\n\n/**\n * @publicApi\n */\nclass AnimationStyleNormalizer {\n}\n/**\n * @publicApi\n */\nclass NoopAnimationStyleNormalizer {\n normalizePropertyName(propertyName, errors) {\n return propertyName;\n }\n normalizeStyleValue(userProvidedProperty, normalizedProperty, value, errors) {\n return value;\n }\n}\n\nconst DIMENSIONAL_PROP_SET = new Set([\n 'width',\n 'height',\n 'minWidth',\n 'minHeight',\n 'maxWidth',\n 'maxHeight',\n 'left',\n 'top',\n 'bottom',\n 'right',\n 'fontSize',\n 'outlineWidth',\n 'outlineOffset',\n 'paddingTop',\n 'paddingLeft',\n 'paddingBottom',\n 'paddingRight',\n 'marginTop',\n 'marginLeft',\n 'marginBottom',\n 'marginRight',\n 'borderRadius',\n 'borderWidth',\n 'borderTopWidth',\n 'borderLeftWidth',\n 'borderRightWidth',\n 'borderBottomWidth',\n 'textIndent',\n 'perspective'\n]);\nclass WebAnimationsStyleNormalizer extends AnimationStyleNormalizer {\n normalizePropertyName(propertyName, errors) {\n return dashCaseToCamelCase(propertyName);\n }\n normalizeStyleValue(userProvidedProperty, normalizedProperty, value, errors) {\n let unit = '';\n const strVal = value.toString().trim();\n if (DIMENSIONAL_PROP_SET.has(normalizedProperty) && value !== 0 && value !== '0') {\n if (typeof value === 'number') {\n unit = 'px';\n }\n else {\n const valAndSuffixMatch = value.match(/^[+-]?[\\d\\.]+([a-z]*)$/);\n if (valAndSuffixMatch && valAndSuffixMatch[1].length == 0) {\n errors.push(invalidCssUnitValue(userProvidedProperty, value));\n }\n }\n }\n return strVal + unit;\n }\n}\n\nfunction createTransitionInstruction(element, triggerName, fromState, toState, isRemovalTransition, fromStyles, toStyles, timelines, queriedElements, preStyleProps, postStyleProps, totalTime, errors) {\n return {\n type: 0 /* AnimationTransitionInstructionType.TransitionAnimation */,\n element,\n triggerName,\n isRemovalTransition,\n fromState,\n fromStyles,\n toState,\n toStyles,\n timelines,\n queriedElements,\n preStyleProps,\n postStyleProps,\n totalTime,\n errors\n };\n}\n\nconst EMPTY_OBJECT = {};\nclass AnimationTransitionFactory {\n constructor(_triggerName, ast, _stateStyles) {\n this._triggerName = _triggerName;\n this.ast = ast;\n this._stateStyles = _stateStyles;\n }\n match(currentState, nextState, element, params) {\n return oneOrMoreTransitionsMatch(this.ast.matchers, currentState, nextState, element, params);\n }\n buildStyles(stateName, params, errors) {\n let styler = this._stateStyles.get('*');\n if (stateName !== undefined) {\n styler = this._stateStyles.get(stateName?.toString()) || styler;\n }\n return styler ? styler.buildStyles(params, errors) : new Map();\n }\n build(driver, element, currentState, nextState, enterClassName, leaveClassName, currentOptions, nextOptions, subInstructions, skipAstBuild) {\n const errors = [];\n const transitionAnimationParams = this.ast.options && this.ast.options.params || EMPTY_OBJECT;\n const currentAnimationParams = currentOptions && currentOptions.params || EMPTY_OBJECT;\n const currentStateStyles = this.buildStyles(currentState, currentAnimationParams, errors);\n const nextAnimationParams = nextOptions && nextOptions.params || EMPTY_OBJECT;\n const nextStateStyles = this.buildStyles(nextState, nextAnimationParams, errors);\n const queriedElements = new Set();\n const preStyleMap = new Map();\n const postStyleMap = new Map();\n const isRemoval = nextState === 'void';\n const animationOptions = {\n params: applyParamDefaults(nextAnimationParams, transitionAnimationParams),\n delay: this.ast.options?.delay,\n };\n const timelines = skipAstBuild ?\n [] :\n buildAnimationTimelines(driver, element, this.ast.animation, enterClassName, leaveClassName, currentStateStyles, nextStateStyles, animationOptions, subInstructions, errors);\n let totalTime = 0;\n timelines.forEach(tl => {\n totalTime = Math.max(tl.duration + tl.delay, totalTime);\n });\n if (errors.length) {\n return createTransitionInstruction(element, this._triggerName, currentState, nextState, isRemoval, currentStateStyles, nextStateStyles, [], [], preStyleMap, postStyleMap, totalTime, errors);\n }\n timelines.forEach(tl => {\n const elm = tl.element;\n const preProps = getOrSetDefaultValue(preStyleMap, elm, new Set());\n tl.preStyleProps.forEach(prop => preProps.add(prop));\n const postProps = getOrSetDefaultValue(postStyleMap, elm, new Set());\n tl.postStyleProps.forEach(prop => postProps.add(prop));\n if (elm !== element) {\n queriedElements.add(elm);\n }\n });\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n checkNonAnimatableInTimelines(timelines, this._triggerName, driver);\n }\n const queriedElementsList = iteratorToArray(queriedElements.values());\n return createTransitionInstruction(element, this._triggerName, currentState, nextState, isRemoval, currentStateStyles, nextStateStyles, timelines, queriedElementsList, preStyleMap, postStyleMap, totalTime);\n }\n}\n/**\n * Checks inside a set of timelines if they try to animate a css property which is not considered\n * animatable, in that case it prints a warning on the console.\n * Besides that the function doesn't have any other effect.\n *\n * Note: this check is done here after the timelines are built instead of doing on a lower level so\n * that we can make sure that the warning appears only once per instruction (we can aggregate here\n * all the issues instead of finding them separately).\n *\n * @param timelines The built timelines for the current instruction.\n * @param triggerName The name of the trigger for the current instruction.\n * @param driver Animation driver used to perform the check.\n *\n */\nfunction checkNonAnimatableInTimelines(timelines, triggerName, driver) {\n if (!driver.validateAnimatableStyleProperty) {\n return;\n }\n const allowedNonAnimatableProps = new Set([\n // 'easing' is a utility/synthetic prop we use to represent\n // easing functions, it represents a property of the animation\n // which is not animatable but different values can be used\n // in different steps\n 'easing'\n ]);\n const invalidNonAnimatableProps = new Set();\n timelines.forEach(({ keyframes }) => {\n const nonAnimatablePropsInitialValues = new Map();\n keyframes.forEach(keyframe => {\n const entriesToCheck = Array.from(keyframe.entries()).filter(([prop]) => !allowedNonAnimatableProps.has(prop));\n for (const [prop, value] of entriesToCheck) {\n if (!driver.validateAnimatableStyleProperty(prop)) {\n if (nonAnimatablePropsInitialValues.has(prop) && !invalidNonAnimatableProps.has(prop)) {\n const propInitialValue = nonAnimatablePropsInitialValues.get(prop);\n if (propInitialValue !== value) {\n invalidNonAnimatableProps.add(prop);\n }\n }\n else {\n nonAnimatablePropsInitialValues.set(prop, value);\n }\n }\n }\n });\n });\n if (invalidNonAnimatableProps.size > 0) {\n console.warn(`Warning: The animation trigger \"${triggerName}\" is attempting to animate the following` +\n ' not animatable properties: ' + Array.from(invalidNonAnimatableProps).join(', ') + '\\n' +\n '(to check the list of all animatable properties visit https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_animated_properties)');\n }\n}\nfunction oneOrMoreTransitionsMatch(matchFns, currentState, nextState, element, params) {\n return matchFns.some(fn => fn(currentState, nextState, element, params));\n}\nfunction applyParamDefaults(userParams, defaults) {\n const result = copyObj(defaults);\n for (const key in userParams) {\n if (userParams.hasOwnProperty(key) && userParams[key] != null) {\n result[key] = userParams[key];\n }\n }\n return result;\n}\nclass AnimationStateStyles {\n constructor(styles, defaultParams, normalizer) {\n this.styles = styles;\n this.defaultParams = defaultParams;\n this.normalizer = normalizer;\n }\n buildStyles(params, errors) {\n const finalStyles = new Map();\n const combinedParams = copyObj(this.defaultParams);\n Object.keys(params).forEach(key => {\n const value = params[key];\n if (value !== null) {\n combinedParams[key] = value;\n }\n });\n this.styles.styles.forEach(value => {\n if (typeof value !== 'string') {\n value.forEach((val, prop) => {\n if (val) {\n val = interpolateParams(val, combinedParams, errors);\n }\n const normalizedProp = this.normalizer.normalizePropertyName(prop, errors);\n val = this.normalizer.normalizeStyleValue(prop, normalizedProp, val, errors);\n finalStyles.set(prop, val);\n });\n }\n });\n return finalStyles;\n }\n}\n\nfunction buildTrigger(name, ast, normalizer) {\n return new AnimationTrigger(name, ast, normalizer);\n}\nclass AnimationTrigger {\n constructor(name, ast, _normalizer) {\n this.name = name;\n this.ast = ast;\n this._normalizer = _normalizer;\n this.transitionFactories = [];\n this.states = new Map();\n ast.states.forEach(ast => {\n const defaultParams = (ast.options && ast.options.params) || {};\n this.states.set(ast.name, new AnimationStateStyles(ast.style, defaultParams, _normalizer));\n });\n balanceProperties(this.states, 'true', '1');\n balanceProperties(this.states, 'false', '0');\n ast.transitions.forEach(ast => {\n this.transitionFactories.push(new AnimationTransitionFactory(name, ast, this.states));\n });\n this.fallbackTransition = createFallbackTransition(name, this.states, this._normalizer);\n }\n get containsQueries() {\n return this.ast.queryCount > 0;\n }\n matchTransition(currentState, nextState, element, params) {\n const entry = this.transitionFactories.find(f => f.match(currentState, nextState, element, params));\n return entry || null;\n }\n matchStyles(currentState, params, errors) {\n return this.fallbackTransition.buildStyles(currentState, params, errors);\n }\n}\nfunction createFallbackTransition(triggerName, states, normalizer) {\n const matchers = [(fromState, toState) => true];\n const animation = { type: 2 /* AnimationMetadataType.Sequence */, steps: [], options: null };\n const transition = {\n type: 1 /* AnimationMetadataType.Transition */,\n animation,\n matchers,\n options: null,\n queryCount: 0,\n depCount: 0\n };\n return new AnimationTransitionFactory(triggerName, transition, states);\n}\nfunction balanceProperties(stateMap, key1, key2) {\n if (stateMap.has(key1)) {\n if (!stateMap.has(key2)) {\n stateMap.set(key2, stateMap.get(key1));\n }\n }\n else if (stateMap.has(key2)) {\n stateMap.set(key1, stateMap.get(key2));\n }\n}\n\nconst EMPTY_INSTRUCTION_MAP = new ElementInstructionMap();\nclass TimelineAnimationEngine {\n constructor(bodyNode, _driver, _normalizer) {\n this.bodyNode = bodyNode;\n this._driver = _driver;\n this._normalizer = _normalizer;\n this._animations = new Map();\n this._playersById = new Map();\n this.players = [];\n }\n register(id, metadata) {\n const errors = [];\n const warnings = [];\n const ast = buildAnimationAst(this._driver, metadata, errors, warnings);\n if (errors.length) {\n throw registerFailed(errors);\n }\n else {\n if (warnings.length) {\n warnRegister(warnings);\n }\n this._animations.set(id, ast);\n }\n }\n _buildPlayer(i, preStyles, postStyles) {\n const element = i.element;\n const keyframes = normalizeKeyframes$1(this._normalizer, i.keyframes, preStyles, postStyles);\n return this._driver.animate(element, keyframes, i.duration, i.delay, i.easing, [], true);\n }\n create(id, element, options = {}) {\n const errors = [];\n const ast = this._animations.get(id);\n let instructions;\n const autoStylesMap = new Map();\n if (ast) {\n instructions = buildAnimationTimelines(this._driver, element, ast, ENTER_CLASSNAME, LEAVE_CLASSNAME, new Map(), new Map(), options, EMPTY_INSTRUCTION_MAP, errors);\n instructions.forEach(inst => {\n const styles = getOrSetDefaultValue(autoStylesMap, inst.element, new Map());\n inst.postStyleProps.forEach(prop => styles.set(prop, null));\n });\n }\n else {\n errors.push(missingOrDestroyedAnimation());\n instructions = [];\n }\n if (errors.length) {\n throw createAnimationFailed(errors);\n }\n autoStylesMap.forEach((styles, element) => {\n styles.forEach((_, prop) => {\n styles.set(prop, this._driver.computeStyle(element, prop, AUTO_STYLE));\n });\n });\n const players = instructions.map(i => {\n const styles = autoStylesMap.get(i.element);\n return this._buildPlayer(i, new Map(), styles);\n });\n const player = optimizeGroupPlayer(players);\n this._playersById.set(id, player);\n player.onDestroy(() => this.destroy(id));\n this.players.push(player);\n return player;\n }\n destroy(id) {\n const player = this._getPlayer(id);\n player.destroy();\n this._playersById.delete(id);\n const index = this.players.indexOf(player);\n if (index >= 0) {\n this.players.splice(index, 1);\n }\n }\n _getPlayer(id) {\n const player = this._playersById.get(id);\n if (!player) {\n throw missingPlayer(id);\n }\n return player;\n }\n listen(id, element, eventName, callback) {\n // triggerName, fromState, toState are all ignored for timeline animations\n const baseEvent = makeAnimationEvent(element, '', '', '');\n listenOnPlayer(this._getPlayer(id), eventName, baseEvent, callback);\n return () => { };\n }\n command(id, element, command, args) {\n if (command == 'register') {\n this.register(id, args[0]);\n return;\n }\n if (command == 'create') {\n const options = (args[0] || {});\n this.create(id, element, options);\n return;\n }\n const player = this._getPlayer(id);\n switch (command) {\n case 'play':\n player.play();\n break;\n case 'pause':\n player.pause();\n break;\n case 'reset':\n player.reset();\n break;\n case 'restart':\n player.restart();\n break;\n case 'finish':\n player.finish();\n break;\n case 'init':\n player.init();\n break;\n case 'setPosition':\n player.setPosition(parseFloat(args[0]));\n break;\n case 'destroy':\n this.destroy(id);\n break;\n }\n }\n}\n\nconst QUEUED_CLASSNAME = 'ng-animate-queued';\nconst QUEUED_SELECTOR = '.ng-animate-queued';\nconst DISABLED_CLASSNAME = 'ng-animate-disabled';\nconst DISABLED_SELECTOR = '.ng-animate-disabled';\nconst STAR_CLASSNAME = 'ng-star-inserted';\nconst STAR_SELECTOR = '.ng-star-inserted';\nconst EMPTY_PLAYER_ARRAY = [];\nconst NULL_REMOVAL_STATE = {\n namespaceId: '',\n setForRemoval: false,\n setForMove: false,\n hasAnimation: false,\n removedBeforeQueried: false\n};\nconst NULL_REMOVED_QUERIED_STATE = {\n namespaceId: '',\n setForMove: false,\n setForRemoval: false,\n hasAnimation: false,\n removedBeforeQueried: true\n};\nconst REMOVAL_FLAG = '__ng_removed';\nclass StateValue {\n get params() {\n return this.options.params;\n }\n constructor(input, namespaceId = '') {\n this.namespaceId = namespaceId;\n const isObj = input && input.hasOwnProperty('value');\n const value = isObj ? input['value'] : input;\n this.value = normalizeTriggerValue(value);\n if (isObj) {\n const options = copyObj(input);\n delete options['value'];\n this.options = options;\n }\n else {\n this.options = {};\n }\n if (!this.options.params) {\n this.options.params = {};\n }\n }\n absorbOptions(options) {\n const newParams = options.params;\n if (newParams) {\n const oldParams = this.options.params;\n Object.keys(newParams).forEach(prop => {\n if (oldParams[prop] == null) {\n oldParams[prop] = newParams[prop];\n }\n });\n }\n }\n}\nconst VOID_VALUE = 'void';\nconst DEFAULT_STATE_VALUE = new StateValue(VOID_VALUE);\nclass AnimationTransitionNamespace {\n constructor(id, hostElement, _engine) {\n this.id = id;\n this.hostElement = hostElement;\n this._engine = _engine;\n this.players = [];\n this._triggers = new Map();\n this._queue = [];\n this._elementListeners = new Map();\n this._hostClassName = 'ng-tns-' + id;\n addClass(hostElement, this._hostClassName);\n }\n listen(element, name, phase, callback) {\n if (!this._triggers.has(name)) {\n throw missingTrigger(phase, name);\n }\n if (phase == null || phase.length == 0) {\n throw missingEvent(name);\n }\n if (!isTriggerEventValid(phase)) {\n throw unsupportedTriggerEvent(phase, name);\n }\n const listeners = getOrSetDefaultValue(this._elementListeners, element, []);\n const data = { name, phase, callback };\n listeners.push(data);\n const triggersWithStates = getOrSetDefaultValue(this._engine.statesByElement, element, new Map());\n if (!triggersWithStates.has(name)) {\n addClass(element, NG_TRIGGER_CLASSNAME);\n addClass(element, NG_TRIGGER_CLASSNAME + '-' + name);\n triggersWithStates.set(name, DEFAULT_STATE_VALUE);\n }\n return () => {\n // the event listener is removed AFTER the flush has occurred such\n // that leave animations callbacks can fire (otherwise if the node\n // is removed in between then the listeners would be deregistered)\n this._engine.afterFlush(() => {\n const index = listeners.indexOf(data);\n if (index >= 0) {\n listeners.splice(index, 1);\n }\n if (!this._triggers.has(name)) {\n triggersWithStates.delete(name);\n }\n });\n };\n }\n register(name, ast) {\n if (this._triggers.has(name)) {\n // throw\n return false;\n }\n else {\n this._triggers.set(name, ast);\n return true;\n }\n }\n _getTrigger(name) {\n const trigger = this._triggers.get(name);\n if (!trigger) {\n throw unregisteredTrigger(name);\n }\n return trigger;\n }\n trigger(element, triggerName, value, defaultToFallback = true) {\n const trigger = this._getTrigger(triggerName);\n const player = new TransitionAnimationPlayer(this.id, triggerName, element);\n let triggersWithStates = this._engine.statesByElement.get(element);\n if (!triggersWithStates) {\n addClass(element, NG_TRIGGER_CLASSNAME);\n addClass(element, NG_TRIGGER_CLASSNAME + '-' + triggerName);\n this._engine.statesByElement.set(element, triggersWithStates = new Map());\n }\n let fromState = triggersWithStates.get(triggerName);\n const toState = new StateValue(value, this.id);\n const isObj = value && value.hasOwnProperty('value');\n if (!isObj && fromState) {\n toState.absorbOptions(fromState.options);\n }\n triggersWithStates.set(triggerName, toState);\n if (!fromState) {\n fromState = DEFAULT_STATE_VALUE;\n }\n const isRemoval = toState.value === VOID_VALUE;\n // normally this isn't reached by here, however, if an object expression\n // is passed in then it may be a new object each time. Comparing the value\n // is important since that will stay the same despite there being a new object.\n // The removal arc here is special cased because the same element is triggered\n // twice in the event that it contains animations on the outer/inner portions\n // of the host container\n if (!isRemoval && fromState.value === toState.value) {\n // this means that despite the value not changing, some inner params\n // have changed which means that the animation final styles need to be applied\n if (!objEquals(fromState.params, toState.params)) {\n const errors = [];\n const fromStyles = trigger.matchStyles(fromState.value, fromState.params, errors);\n const toStyles = trigger.matchStyles(toState.value, toState.params, errors);\n if (errors.length) {\n this._engine.reportError(errors);\n }\n else {\n this._engine.afterFlush(() => {\n eraseStyles(element, fromStyles);\n setStyles(element, toStyles);\n });\n }\n }\n return;\n }\n const playersOnElement = getOrSetDefaultValue(this._engine.playersByElement, element, []);\n playersOnElement.forEach(player => {\n // only remove the player if it is queued on the EXACT same trigger/namespace\n // we only also deal with queued players here because if the animation has\n // started then we want to keep the player alive until the flush happens\n // (which is where the previousPlayers are passed into the new player)\n if (player.namespaceId == this.id && player.triggerName == triggerName && player.queued) {\n player.destroy();\n }\n });\n let transition = trigger.matchTransition(fromState.value, toState.value, element, toState.params);\n let isFallbackTransition = false;\n if (!transition) {\n if (!defaultToFallback)\n return;\n transition = trigger.fallbackTransition;\n isFallbackTransition = true;\n }\n this._engine.totalQueuedPlayers++;\n this._queue.push({ element, triggerName, transition, fromState, toState, player, isFallbackTransition });\n if (!isFallbackTransition) {\n addClass(element, QUEUED_CLASSNAME);\n player.onStart(() => {\n removeClass(element, QUEUED_CLASSNAME);\n });\n }\n player.onDone(() => {\n let index = this.players.indexOf(player);\n if (index >= 0) {\n this.players.splice(index, 1);\n }\n const players = this._engine.playersByElement.get(element);\n if (players) {\n let index = players.indexOf(player);\n if (index >= 0) {\n players.splice(index, 1);\n }\n }\n });\n this.players.push(player);\n playersOnElement.push(player);\n return player;\n }\n deregister(name) {\n this._triggers.delete(name);\n this._engine.statesByElement.forEach(stateMap => stateMap.delete(name));\n this._elementListeners.forEach((listeners, element) => {\n this._elementListeners.set(element, listeners.filter(entry => {\n return entry.name != name;\n }));\n });\n }\n clearElementCache(element) {\n this._engine.statesByElement.delete(element);\n this._elementListeners.delete(element);\n const elementPlayers = this._engine.playersByElement.get(element);\n if (elementPlayers) {\n elementPlayers.forEach(player => player.destroy());\n this._engine.playersByElement.delete(element);\n }\n }\n _signalRemovalForInnerTriggers(rootElement, context) {\n const elements = this._engine.driver.query(rootElement, NG_TRIGGER_SELECTOR, true);\n // emulate a leave animation for all inner nodes within this node.\n // If there are no animations found for any of the nodes then clear the cache\n // for the element.\n elements.forEach(elm => {\n // this means that an inner remove() operation has already kicked off\n // the animation on this element...\n if (elm[REMOVAL_FLAG])\n return;\n const namespaces = this._engine.fetchNamespacesByElement(elm);\n if (namespaces.size) {\n namespaces.forEach(ns => ns.triggerLeaveAnimation(elm, context, false, true));\n }\n else {\n this.clearElementCache(elm);\n }\n });\n // If the child elements were removed along with the parent, their animations might not\n // have completed. Clear all the elements from the cache so we don't end up with a memory leak.\n this._engine.afterFlushAnimationsDone(() => elements.forEach(elm => this.clearElementCache(elm)));\n }\n triggerLeaveAnimation(element, context, destroyAfterComplete, defaultToFallback) {\n const triggerStates = this._engine.statesByElement.get(element);\n const previousTriggersValues = new Map();\n if (triggerStates) {\n const players = [];\n triggerStates.forEach((state, triggerName) => {\n previousTriggersValues.set(triggerName, state.value);\n // this check is here in the event that an element is removed\n // twice (both on the host level and the component level)\n if (this._triggers.has(triggerName)) {\n const player = this.trigger(element, triggerName, VOID_VALUE, defaultToFallback);\n if (player) {\n players.push(player);\n }\n }\n });\n if (players.length) {\n this._engine.markElementAsRemoved(this.id, element, true, context, previousTriggersValues);\n if (destroyAfterComplete) {\n optimizeGroupPlayer(players).onDone(() => this._engine.processLeaveNode(element));\n }\n return true;\n }\n }\n return false;\n }\n prepareLeaveAnimationListeners(element) {\n const listeners = this._elementListeners.get(element);\n const elementStates = this._engine.statesByElement.get(element);\n // if this statement fails then it means that the element was picked up\n // by an earlier flush (or there are no listeners at all to track the leave).\n if (listeners && elementStates) {\n const visitedTriggers = new Set();\n listeners.forEach(listener => {\n const triggerName = listener.name;\n if (visitedTriggers.has(triggerName))\n return;\n visitedTriggers.add(triggerName);\n const trigger = this._triggers.get(triggerName);\n const transition = trigger.fallbackTransition;\n const fromState = elementStates.get(triggerName) || DEFAULT_STATE_VALUE;\n const toState = new StateValue(VOID_VALUE);\n const player = new TransitionAnimationPlayer(this.id, triggerName, element);\n this._engine.totalQueuedPlayers++;\n this._queue.push({\n element,\n triggerName,\n transition,\n fromState,\n toState,\n player,\n isFallbackTransition: true\n });\n });\n }\n }\n removeNode(element, context) {\n const engine = this._engine;\n if (element.childElementCount) {\n this._signalRemovalForInnerTriggers(element, context);\n }\n // this means that a * => VOID animation was detected and kicked off\n if (this.triggerLeaveAnimation(element, context, true))\n return;\n // find the player that is animating and make sure that the\n // removal is delayed until that player has completed\n let containsPotentialParentTransition = false;\n if (engine.totalAnimations) {\n const currentPlayers = engine.players.length ? engine.playersByQueriedElement.get(element) : [];\n // when this `if statement` does not continue forward it means that\n // a previous animation query has selected the current element and\n // is animating it. In this situation want to continue forwards and\n // allow the element to be queued up for animation later.\n if (currentPlayers && currentPlayers.length) {\n containsPotentialParentTransition = true;\n }\n else {\n let parent = element;\n while (parent = parent.parentNode) {\n const triggers = engine.statesByElement.get(parent);\n if (triggers) {\n containsPotentialParentTransition = true;\n break;\n }\n }\n }\n }\n // at this stage we know that the element will either get removed\n // during flush or will be picked up by a parent query. Either way\n // we need to fire the listeners for this element when it DOES get\n // removed (once the query parent animation is done or after flush)\n this.prepareLeaveAnimationListeners(element);\n // whether or not a parent has an animation we need to delay the deferral of the leave\n // operation until we have more information (which we do after flush() has been called)\n if (containsPotentialParentTransition) {\n engine.markElementAsRemoved(this.id, element, false, context);\n }\n else {\n const removalFlag = element[REMOVAL_FLAG];\n if (!removalFlag || removalFlag === NULL_REMOVAL_STATE) {\n // we do this after the flush has occurred such\n // that the callbacks can be fired\n engine.afterFlush(() => this.clearElementCache(element));\n engine.destroyInnerAnimations(element);\n engine._onRemovalComplete(element, context);\n }\n }\n }\n insertNode(element, parent) {\n addClass(element, this._hostClassName);\n }\n drainQueuedTransitions(microtaskId) {\n const instructions = [];\n this._queue.forEach(entry => {\n const player = entry.player;\n if (player.destroyed)\n return;\n const element = entry.element;\n const listeners = this._elementListeners.get(element);\n if (listeners) {\n listeners.forEach((listener) => {\n if (listener.name == entry.triggerName) {\n const baseEvent = makeAnimationEvent(element, entry.triggerName, entry.fromState.value, entry.toState.value);\n baseEvent['_data'] = microtaskId;\n listenOnPlayer(entry.player, listener.phase, baseEvent, listener.callback);\n }\n });\n }\n if (player.markedForDestroy) {\n this._engine.afterFlush(() => {\n // now we can destroy the element properly since the event listeners have\n // been bound to the player\n player.destroy();\n });\n }\n else {\n instructions.push(entry);\n }\n });\n this._queue = [];\n return instructions.sort((a, b) => {\n // if depCount == 0 them move to front\n // otherwise if a contains b then move back\n const d0 = a.transition.ast.depCount;\n const d1 = b.transition.ast.depCount;\n if (d0 == 0 || d1 == 0) {\n return d0 - d1;\n }\n return this._engine.driver.containsElement(a.element, b.element) ? 1 : -1;\n });\n }\n destroy(context) {\n this.players.forEach(p => p.destroy());\n this._signalRemovalForInnerTriggers(this.hostElement, context);\n }\n}\nclass TransitionAnimationEngine {\n /** @internal */\n _onRemovalComplete(element, context) {\n this.onRemovalComplete(element, context);\n }\n constructor(bodyNode, driver, _normalizer) {\n this.bodyNode = bodyNode;\n this.driver = driver;\n this._normalizer = _normalizer;\n this.players = [];\n this.newHostElements = new Map();\n this.playersByElement = new Map();\n this.playersByQueriedElement = new Map();\n this.statesByElement = new Map();\n this.disabledNodes = new Set();\n this.totalAnimations = 0;\n this.totalQueuedPlayers = 0;\n this._namespaceLookup = {};\n this._namespaceList = [];\n this._flushFns = [];\n this._whenQuietFns = [];\n this.namespacesByHostElement = new Map();\n this.collectedEnterElements = [];\n this.collectedLeaveElements = [];\n // this method is designed to be overridden by the code that uses this engine\n this.onRemovalComplete = (element, context) => { };\n }\n get queuedPlayers() {\n const players = [];\n this._namespaceList.forEach(ns => {\n ns.players.forEach(player => {\n if (player.queued) {\n players.push(player);\n }\n });\n });\n return players;\n }\n createNamespace(namespaceId, hostElement) {\n const ns = new AnimationTransitionNamespace(namespaceId, hostElement, this);\n if (this.bodyNode && this.driver.containsElement(this.bodyNode, hostElement)) {\n this._balanceNamespaceList(ns, hostElement);\n }\n else {\n // defer this later until flush during when the host element has\n // been inserted so that we know exactly where to place it in\n // the namespace list\n this.newHostElements.set(hostElement, ns);\n // given that this host element is a part of the animation code, it\n // may or may not be inserted by a parent node that is of an\n // animation renderer type. If this happens then we can still have\n // access to this item when we query for :enter nodes. If the parent\n // is a renderer then the set data-structure will normalize the entry\n this.collectEnterElement(hostElement);\n }\n return this._namespaceLookup[namespaceId] = ns;\n }\n _balanceNamespaceList(ns, hostElement) {\n const namespaceList = this._namespaceList;\n const namespacesByHostElement = this.namespacesByHostElement;\n const limit = namespaceList.length - 1;\n if (limit >= 0) {\n let found = false;\n // Find the closest ancestor with an existing namespace so we can then insert `ns` after it,\n // establishing a top-down ordering of namespaces in `this._namespaceList`.\n let ancestor = this.driver.getParentElement(hostElement);\n while (ancestor) {\n const ancestorNs = namespacesByHostElement.get(ancestor);\n if (ancestorNs) {\n // An animation namespace has been registered for this ancestor, so we insert `ns`\n // right after it to establish top-down ordering of animation namespaces.\n const index = namespaceList.indexOf(ancestorNs);\n namespaceList.splice(index + 1, 0, ns);\n found = true;\n break;\n }\n ancestor = this.driver.getParentElement(ancestor);\n }\n if (!found) {\n // No namespace exists that is an ancestor of `ns`, so `ns` is inserted at the front to\n // ensure that any existing descendants are ordered after `ns`, retaining the desired\n // top-down ordering.\n namespaceList.unshift(ns);\n }\n }\n else {\n namespaceList.push(ns);\n }\n namespacesByHostElement.set(hostElement, ns);\n return ns;\n }\n register(namespaceId, hostElement) {\n let ns = this._namespaceLookup[namespaceId];\n if (!ns) {\n ns = this.createNamespace(namespaceId, hostElement);\n }\n return ns;\n }\n registerTrigger(namespaceId, name, trigger) {\n let ns = this._namespaceLookup[namespaceId];\n if (ns && ns.register(name, trigger)) {\n this.totalAnimations++;\n }\n }\n destroy(namespaceId, context) {\n if (!namespaceId)\n return;\n this.afterFlush(() => { });\n this.afterFlushAnimationsDone(() => {\n const ns = this._fetchNamespace(namespaceId);\n this.namespacesByHostElement.delete(ns.hostElement);\n const index = this._namespaceList.indexOf(ns);\n if (index >= 0) {\n this._namespaceList.splice(index, 1);\n }\n ns.destroy(context);\n delete this._namespaceLookup[namespaceId];\n });\n }\n _fetchNamespace(id) {\n return this._namespaceLookup[id];\n }\n fetchNamespacesByElement(element) {\n // normally there should only be one namespace per element, however\n // if @triggers are placed on both the component element and then\n // its host element (within the component code) then there will be\n // two namespaces returned. We use a set here to simply deduplicate\n // the namespaces in case (for the reason described above) there are multiple triggers\n const namespaces = new Set();\n const elementStates = this.statesByElement.get(element);\n if (elementStates) {\n for (let stateValue of elementStates.values()) {\n if (stateValue.namespaceId) {\n const ns = this._fetchNamespace(stateValue.namespaceId);\n if (ns) {\n namespaces.add(ns);\n }\n }\n }\n }\n return namespaces;\n }\n trigger(namespaceId, element, name, value) {\n if (isElementNode(element)) {\n const ns = this._fetchNamespace(namespaceId);\n if (ns) {\n ns.trigger(element, name, value);\n return true;\n }\n }\n return false;\n }\n insertNode(namespaceId, element, parent, insertBefore) {\n if (!isElementNode(element))\n return;\n // special case for when an element is removed and reinserted (move operation)\n // when this occurs we do not want to use the element for deletion later\n const details = element[REMOVAL_FLAG];\n if (details && details.setForRemoval) {\n details.setForRemoval = false;\n details.setForMove = true;\n const index = this.collectedLeaveElements.indexOf(element);\n if (index >= 0) {\n this.collectedLeaveElements.splice(index, 1);\n }\n }\n // in the event that the namespaceId is blank then the caller\n // code does not contain any animation code in it, but it is\n // just being called so that the node is marked as being inserted\n if (namespaceId) {\n const ns = this._fetchNamespace(namespaceId);\n // This if-statement is a workaround for router issue #21947.\n // The router sometimes hits a race condition where while a route\n // is being instantiated a new navigation arrives, triggering leave\n // animation of DOM that has not been fully initialized, until this\n // is resolved, we need to handle the scenario when DOM is not in a\n // consistent state during the animation.\n if (ns) {\n ns.insertNode(element, parent);\n }\n }\n // only *directives and host elements are inserted before\n if (insertBefore) {\n this.collectEnterElement(element);\n }\n }\n collectEnterElement(element) {\n this.collectedEnterElements.push(element);\n }\n markElementAsDisabled(element, value) {\n if (value) {\n if (!this.disabledNodes.has(element)) {\n this.disabledNodes.add(element);\n addClass(element, DISABLED_CLASSNAME);\n }\n }\n else if (this.disabledNodes.has(element)) {\n this.disabledNodes.delete(element);\n removeClass(element, DISABLED_CLASSNAME);\n }\n }\n removeNode(namespaceId, element, context) {\n if (isElementNode(element)) {\n const ns = namespaceId ? this._fetchNamespace(namespaceId) : null;\n if (ns) {\n ns.removeNode(element, context);\n }\n else {\n this.markElementAsRemoved(namespaceId, element, false, context);\n }\n const hostNS = this.namespacesByHostElement.get(element);\n if (hostNS && hostNS.id !== namespaceId) {\n hostNS.removeNode(element, context);\n }\n }\n else {\n this._onRemovalComplete(element, context);\n }\n }\n markElementAsRemoved(namespaceId, element, hasAnimation, context, previousTriggersValues) {\n this.collectedLeaveElements.push(element);\n element[REMOVAL_FLAG] = {\n namespaceId,\n setForRemoval: context,\n hasAnimation,\n removedBeforeQueried: false,\n previousTriggersValues\n };\n }\n listen(namespaceId, element, name, phase, callback) {\n if (isElementNode(element)) {\n return this._fetchNamespace(namespaceId).listen(element, name, phase, callback);\n }\n return () => { };\n }\n _buildInstruction(entry, subTimelines, enterClassName, leaveClassName, skipBuildAst) {\n return entry.transition.build(this.driver, entry.element, entry.fromState.value, entry.toState.value, enterClassName, leaveClassName, entry.fromState.options, entry.toState.options, subTimelines, skipBuildAst);\n }\n destroyInnerAnimations(containerElement) {\n let elements = this.driver.query(containerElement, NG_TRIGGER_SELECTOR, true);\n elements.forEach(element => this.destroyActiveAnimationsForElement(element));\n if (this.playersByQueriedElement.size == 0)\n return;\n elements = this.driver.query(containerElement, NG_ANIMATING_SELECTOR, true);\n elements.forEach(element => this.finishActiveQueriedAnimationOnElement(element));\n }\n destroyActiveAnimationsForElement(element) {\n const players = this.playersByElement.get(element);\n if (players) {\n players.forEach(player => {\n // special case for when an element is set for destruction, but hasn't started.\n // in this situation we want to delay the destruction until the flush occurs\n // so that any event listeners attached to the player are triggered.\n if (player.queued) {\n player.markedForDestroy = true;\n }\n else {\n player.destroy();\n }\n });\n }\n }\n finishActiveQueriedAnimationOnElement(element) {\n const players = this.playersByQueriedElement.get(element);\n if (players) {\n players.forEach(player => player.finish());\n }\n }\n whenRenderingDone() {\n return new Promise(resolve => {\n if (this.players.length) {\n return optimizeGroupPlayer(this.players).onDone(() => resolve());\n }\n else {\n resolve();\n }\n });\n }\n processLeaveNode(element) {\n const details = element[REMOVAL_FLAG];\n if (details && details.setForRemoval) {\n // this will prevent it from removing it twice\n element[REMOVAL_FLAG] = NULL_REMOVAL_STATE;\n if (details.namespaceId) {\n this.destroyInnerAnimations(element);\n const ns = this._fetchNamespace(details.namespaceId);\n if (ns) {\n ns.clearElementCache(element);\n }\n }\n this._onRemovalComplete(element, details.setForRemoval);\n }\n if (element.classList?.contains(DISABLED_CLASSNAME)) {\n this.markElementAsDisabled(element, false);\n }\n this.driver.query(element, DISABLED_SELECTOR, true).forEach(node => {\n this.markElementAsDisabled(node, false);\n });\n }\n flush(microtaskId = -1) {\n let players = [];\n if (this.newHostElements.size) {\n this.newHostElements.forEach((ns, element) => this._balanceNamespaceList(ns, element));\n this.newHostElements.clear();\n }\n if (this.totalAnimations && this.collectedEnterElements.length) {\n for (let i = 0; i < this.collectedEnterElements.length; i++) {\n const elm = this.collectedEnterElements[i];\n addClass(elm, STAR_CLASSNAME);\n }\n }\n if (this._namespaceList.length &&\n (this.totalQueuedPlayers || this.collectedLeaveElements.length)) {\n const cleanupFns = [];\n try {\n players = this._flushAnimations(cleanupFns, microtaskId);\n }\n finally {\n for (let i = 0; i < cleanupFns.length; i++) {\n cleanupFns[i]();\n }\n }\n }\n else {\n for (let i = 0; i < this.collectedLeaveElements.length; i++) {\n const element = this.collectedLeaveElements[i];\n this.processLeaveNode(element);\n }\n }\n this.totalQueuedPlayers = 0;\n this.collectedEnterElements.length = 0;\n this.collectedLeaveElements.length = 0;\n this._flushFns.forEach(fn => fn());\n this._flushFns = [];\n if (this._whenQuietFns.length) {\n // we move these over to a variable so that\n // if any new callbacks are registered in another\n // flush they do not populate the existing set\n const quietFns = this._whenQuietFns;\n this._whenQuietFns = [];\n if (players.length) {\n optimizeGroupPlayer(players).onDone(() => {\n quietFns.forEach(fn => fn());\n });\n }\n else {\n quietFns.forEach(fn => fn());\n }\n }\n }\n reportError(errors) {\n throw triggerTransitionsFailed(errors);\n }\n _flushAnimations(cleanupFns, microtaskId) {\n const subTimelines = new ElementInstructionMap();\n const skippedPlayers = [];\n const skippedPlayersMap = new Map();\n const queuedInstructions = [];\n const queriedElements = new Map();\n const allPreStyleElements = new Map();\n const allPostStyleElements = new Map();\n const disabledElementsSet = new Set();\n this.disabledNodes.forEach(node => {\n disabledElementsSet.add(node);\n const nodesThatAreDisabled = this.driver.query(node, QUEUED_SELECTOR, true);\n for (let i = 0; i < nodesThatAreDisabled.length; i++) {\n disabledElementsSet.add(nodesThatAreDisabled[i]);\n }\n });\n const bodyNode = this.bodyNode;\n const allTriggerElements = Array.from(this.statesByElement.keys());\n const enterNodeMap = buildRootMap(allTriggerElements, this.collectedEnterElements);\n // this must occur before the instructions are built below such that\n // the :enter queries match the elements (since the timeline queries\n // are fired during instruction building).\n const enterNodeMapIds = new Map();\n let i = 0;\n enterNodeMap.forEach((nodes, root) => {\n const className = ENTER_CLASSNAME + i++;\n enterNodeMapIds.set(root, className);\n nodes.forEach(node => addClass(node, className));\n });\n const allLeaveNodes = [];\n const mergedLeaveNodes = new Set();\n const leaveNodesWithoutAnimations = new Set();\n for (let i = 0; i < this.collectedLeaveElements.length; i++) {\n const element = this.collectedLeaveElements[i];\n const details = element[REMOVAL_FLAG];\n if (details && details.setForRemoval) {\n allLeaveNodes.push(element);\n mergedLeaveNodes.add(element);\n if (details.hasAnimation) {\n this.driver.query(element, STAR_SELECTOR, true).forEach(elm => mergedLeaveNodes.add(elm));\n }\n else {\n leaveNodesWithoutAnimations.add(element);\n }\n }\n }\n const leaveNodeMapIds = new Map();\n const leaveNodeMap = buildRootMap(allTriggerElements, Array.from(mergedLeaveNodes));\n leaveNodeMap.forEach((nodes, root) => {\n const className = LEAVE_CLASSNAME + i++;\n leaveNodeMapIds.set(root, className);\n nodes.forEach(node => addClass(node, className));\n });\n cleanupFns.push(() => {\n enterNodeMap.forEach((nodes, root) => {\n const className = enterNodeMapIds.get(root);\n nodes.forEach(node => removeClass(node, className));\n });\n leaveNodeMap.forEach((nodes, root) => {\n const className = leaveNodeMapIds.get(root);\n nodes.forEach(node => removeClass(node, className));\n });\n allLeaveNodes.forEach(element => {\n this.processLeaveNode(element);\n });\n });\n const allPlayers = [];\n const erroneousTransitions = [];\n for (let i = this._namespaceList.length - 1; i >= 0; i--) {\n const ns = this._namespaceList[i];\n ns.drainQueuedTransitions(microtaskId).forEach(entry => {\n const player = entry.player;\n const element = entry.element;\n allPlayers.push(player);\n if (this.collectedEnterElements.length) {\n const details = element[REMOVAL_FLAG];\n // animations for move operations (elements being removed and reinserted,\n // e.g. when the order of an *ngFor list changes) are currently not supported\n if (details && details.setForMove) {\n if (details.previousTriggersValues &&\n details.previousTriggersValues.has(entry.triggerName)) {\n const previousValue = details.previousTriggersValues.get(entry.triggerName);\n // we need to restore the previous trigger value since the element has\n // only been moved and hasn't actually left the DOM\n const triggersWithStates = this.statesByElement.get(entry.element);\n if (triggersWithStates && triggersWithStates.has(entry.triggerName)) {\n const state = triggersWithStates.get(entry.triggerName);\n state.value = previousValue;\n triggersWithStates.set(entry.triggerName, state);\n }\n }\n player.destroy();\n return;\n }\n }\n const nodeIsOrphaned = !bodyNode || !this.driver.containsElement(bodyNode, element);\n const leaveClassName = leaveNodeMapIds.get(element);\n const enterClassName = enterNodeMapIds.get(element);\n const instruction = this._buildInstruction(entry, subTimelines, enterClassName, leaveClassName, nodeIsOrphaned);\n if (instruction.errors && instruction.errors.length) {\n erroneousTransitions.push(instruction);\n return;\n }\n // even though the element may not be in the DOM, it may still\n // be added at a later point (due to the mechanics of content\n // projection and/or dynamic component insertion) therefore it's\n // important to still style the element.\n if (nodeIsOrphaned) {\n player.onStart(() => eraseStyles(element, instruction.fromStyles));\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n skippedPlayers.push(player);\n return;\n }\n // if an unmatched transition is queued and ready to go\n // then it SHOULD NOT render an animation and cancel the\n // previously running animations.\n if (entry.isFallbackTransition) {\n player.onStart(() => eraseStyles(element, instruction.fromStyles));\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n skippedPlayers.push(player);\n return;\n }\n // this means that if a parent animation uses this animation as a sub-trigger\n // then it will instruct the timeline builder not to add a player delay, but\n // instead stretch the first keyframe gap until the animation starts. This is\n // important in order to prevent extra initialization styles from being\n // required by the user for the animation.\n const timelines = [];\n instruction.timelines.forEach(tl => {\n tl.stretchStartingKeyframe = true;\n if (!this.disabledNodes.has(tl.element)) {\n timelines.push(tl);\n }\n });\n instruction.timelines = timelines;\n subTimelines.append(element, instruction.timelines);\n const tuple = { instruction, player, element };\n queuedInstructions.push(tuple);\n instruction.queriedElements.forEach(element => getOrSetDefaultValue(queriedElements, element, []).push(player));\n instruction.preStyleProps.forEach((stringMap, element) => {\n if (stringMap.size) {\n let setVal = allPreStyleElements.get(element);\n if (!setVal) {\n allPreStyleElements.set(element, setVal = new Set());\n }\n stringMap.forEach((_, prop) => setVal.add(prop));\n }\n });\n instruction.postStyleProps.forEach((stringMap, element) => {\n let setVal = allPostStyleElements.get(element);\n if (!setVal) {\n allPostStyleElements.set(element, setVal = new Set());\n }\n stringMap.forEach((_, prop) => setVal.add(prop));\n });\n });\n }\n if (erroneousTransitions.length) {\n const errors = [];\n erroneousTransitions.forEach(instruction => {\n errors.push(transitionFailed(instruction.triggerName, instruction.errors));\n });\n allPlayers.forEach(player => player.destroy());\n this.reportError(errors);\n }\n const allPreviousPlayersMap = new Map();\n // this map tells us which element in the DOM tree is contained by\n // which animation. Further down this map will get populated once\n // the players are built and in doing so we can use it to efficiently\n // figure out if a sub player is skipped due to a parent player having priority.\n const animationElementMap = new Map();\n queuedInstructions.forEach(entry => {\n const element = entry.element;\n if (subTimelines.has(element)) {\n animationElementMap.set(element, element);\n this._beforeAnimationBuild(entry.player.namespaceId, entry.instruction, allPreviousPlayersMap);\n }\n });\n skippedPlayers.forEach(player => {\n const element = player.element;\n const previousPlayers = this._getPreviousPlayers(element, false, player.namespaceId, player.triggerName, null);\n previousPlayers.forEach(prevPlayer => {\n getOrSetDefaultValue(allPreviousPlayersMap, element, []).push(prevPlayer);\n prevPlayer.destroy();\n });\n });\n // this is a special case for nodes that will be removed either by\n // having their own leave animations or by being queried in a container\n // that will be removed once a parent animation is complete. The idea\n // here is that * styles must be identical to ! styles because of\n // backwards compatibility (* is also filled in by default in many places).\n // Otherwise * styles will return an empty value or \"auto\" since the element\n // passed to getComputedStyle will not be visible (since * === destination)\n const replaceNodes = allLeaveNodes.filter(node => {\n return replacePostStylesAsPre(node, allPreStyleElements, allPostStyleElements);\n });\n // POST STAGE: fill the * styles\n const postStylesMap = new Map();\n const allLeaveQueriedNodes = cloakAndComputeStyles(postStylesMap, this.driver, leaveNodesWithoutAnimations, allPostStyleElements, AUTO_STYLE);\n allLeaveQueriedNodes.forEach(node => {\n if (replacePostStylesAsPre(node, allPreStyleElements, allPostStyleElements)) {\n replaceNodes.push(node);\n }\n });\n // PRE STAGE: fill the ! styles\n const preStylesMap = new Map();\n enterNodeMap.forEach((nodes, root) => {\n cloakAndComputeStyles(preStylesMap, this.driver, new Set(nodes), allPreStyleElements, ɵPRE_STYLE);\n });\n replaceNodes.forEach(node => {\n const post = postStylesMap.get(node);\n const pre = preStylesMap.get(node);\n postStylesMap.set(node, new Map([...(post?.entries() ?? []), ...(pre?.entries() ?? [])]));\n });\n const rootPlayers = [];\n const subPlayers = [];\n const NO_PARENT_ANIMATION_ELEMENT_DETECTED = {};\n queuedInstructions.forEach(entry => {\n const { element, player, instruction } = entry;\n // this means that it was never consumed by a parent animation which\n // means that it is independent and therefore should be set for animation\n if (subTimelines.has(element)) {\n if (disabledElementsSet.has(element)) {\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n player.disabled = true;\n player.overrideTotalTime(instruction.totalTime);\n skippedPlayers.push(player);\n return;\n }\n // this will flow up the DOM and query the map to figure out\n // if a parent animation has priority over it. In the situation\n // that a parent is detected then it will cancel the loop. If\n // nothing is detected, or it takes a few hops to find a parent,\n // then it will fill in the missing nodes and signal them as having\n // a detected parent (or a NO_PARENT value via a special constant).\n let parentWithAnimation = NO_PARENT_ANIMATION_ELEMENT_DETECTED;\n if (animationElementMap.size > 1) {\n let elm = element;\n const parentsToAdd = [];\n while (elm = elm.parentNode) {\n const detectedParent = animationElementMap.get(elm);\n if (detectedParent) {\n parentWithAnimation = detectedParent;\n break;\n }\n parentsToAdd.push(elm);\n }\n parentsToAdd.forEach(parent => animationElementMap.set(parent, parentWithAnimation));\n }\n const innerPlayer = this._buildAnimation(player.namespaceId, instruction, allPreviousPlayersMap, skippedPlayersMap, preStylesMap, postStylesMap);\n player.setRealPlayer(innerPlayer);\n if (parentWithAnimation === NO_PARENT_ANIMATION_ELEMENT_DETECTED) {\n rootPlayers.push(player);\n }\n else {\n const parentPlayers = this.playersByElement.get(parentWithAnimation);\n if (parentPlayers && parentPlayers.length) {\n player.parentPlayer = optimizeGroupPlayer(parentPlayers);\n }\n skippedPlayers.push(player);\n }\n }\n else {\n eraseStyles(element, instruction.fromStyles);\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n // there still might be a ancestor player animating this\n // element therefore we will still add it as a sub player\n // even if its animation may be disabled\n subPlayers.push(player);\n if (disabledElementsSet.has(element)) {\n skippedPlayers.push(player);\n }\n }\n });\n // find all of the sub players' corresponding inner animation players\n subPlayers.forEach(player => {\n // even if no players are found for a sub animation it\n // will still complete itself after the next tick since it's Noop\n const playersForElement = skippedPlayersMap.get(player.element);\n if (playersForElement && playersForElement.length) {\n const innerPlayer = optimizeGroupPlayer(playersForElement);\n player.setRealPlayer(innerPlayer);\n }\n });\n // the reason why we don't actually play the animation is\n // because all that a skipped player is designed to do is to\n // fire the start/done transition callback events\n skippedPlayers.forEach(player => {\n if (player.parentPlayer) {\n player.syncPlayerEvents(player.parentPlayer);\n }\n else {\n player.destroy();\n }\n });\n // run through all of the queued removals and see if they\n // were picked up by a query. If not then perform the removal\n // operation right away unless a parent animation is ongoing.\n for (let i = 0; i < allLeaveNodes.length; i++) {\n const element = allLeaveNodes[i];\n const details = element[REMOVAL_FLAG];\n removeClass(element, LEAVE_CLASSNAME);\n // this means the element has a removal animation that is being\n // taken care of and therefore the inner elements will hang around\n // until that animation is over (or the parent queried animation)\n if (details && details.hasAnimation)\n continue;\n let players = [];\n // if this element is queried or if it contains queried children\n // then we want for the element not to be removed from the page\n // until the queried animations have finished\n if (queriedElements.size) {\n let queriedPlayerResults = queriedElements.get(element);\n if (queriedPlayerResults && queriedPlayerResults.length) {\n players.push(...queriedPlayerResults);\n }\n let queriedInnerElements = this.driver.query(element, NG_ANIMATING_SELECTOR, true);\n for (let j = 0; j < queriedInnerElements.length; j++) {\n let queriedPlayers = queriedElements.get(queriedInnerElements[j]);\n if (queriedPlayers && queriedPlayers.length) {\n players.push(...queriedPlayers);\n }\n }\n }\n const activePlayers = players.filter(p => !p.destroyed);\n if (activePlayers.length) {\n removeNodesAfterAnimationDone(this, element, activePlayers);\n }\n else {\n this.processLeaveNode(element);\n }\n }\n // this is required so the cleanup method doesn't remove them\n allLeaveNodes.length = 0;\n rootPlayers.forEach(player => {\n this.players.push(player);\n player.onDone(() => {\n player.destroy();\n const index = this.players.indexOf(player);\n this.players.splice(index, 1);\n });\n player.play();\n });\n return rootPlayers;\n }\n afterFlush(callback) {\n this._flushFns.push(callback);\n }\n afterFlushAnimationsDone(callback) {\n this._whenQuietFns.push(callback);\n }\n _getPreviousPlayers(element, isQueriedElement, namespaceId, triggerName, toStateValue) {\n let players = [];\n if (isQueriedElement) {\n const queriedElementPlayers = this.playersByQueriedElement.get(element);\n if (queriedElementPlayers) {\n players = queriedElementPlayers;\n }\n }\n else {\n const elementPlayers = this.playersByElement.get(element);\n if (elementPlayers) {\n const isRemovalAnimation = !toStateValue || toStateValue == VOID_VALUE;\n elementPlayers.forEach(player => {\n if (player.queued)\n return;\n if (!isRemovalAnimation && player.triggerName != triggerName)\n return;\n players.push(player);\n });\n }\n }\n if (namespaceId || triggerName) {\n players = players.filter(player => {\n if (namespaceId && namespaceId != player.namespaceId)\n return false;\n if (triggerName && triggerName != player.triggerName)\n return false;\n return true;\n });\n }\n return players;\n }\n _beforeAnimationBuild(namespaceId, instruction, allPreviousPlayersMap) {\n const triggerName = instruction.triggerName;\n const rootElement = instruction.element;\n // when a removal animation occurs, ALL previous players are collected\n // and destroyed (even if they are outside of the current namespace)\n const targetNameSpaceId = instruction.isRemovalTransition ? undefined : namespaceId;\n const targetTriggerName = instruction.isRemovalTransition ? undefined : triggerName;\n for (const timelineInstruction of instruction.timelines) {\n const element = timelineInstruction.element;\n const isQueriedElement = element !== rootElement;\n const players = getOrSetDefaultValue(allPreviousPlayersMap, element, []);\n const previousPlayers = this._getPreviousPlayers(element, isQueriedElement, targetNameSpaceId, targetTriggerName, instruction.toState);\n previousPlayers.forEach(player => {\n const realPlayer = player.getRealPlayer();\n if (realPlayer.beforeDestroy) {\n realPlayer.beforeDestroy();\n }\n player.destroy();\n players.push(player);\n });\n }\n // this needs to be done so that the PRE/POST styles can be\n // computed properly without interfering with the previous animation\n eraseStyles(rootElement, instruction.fromStyles);\n }\n _buildAnimation(namespaceId, instruction, allPreviousPlayersMap, skippedPlayersMap, preStylesMap, postStylesMap) {\n const triggerName = instruction.triggerName;\n const rootElement = instruction.element;\n // we first run this so that the previous animation player\n // data can be passed into the successive animation players\n const allQueriedPlayers = [];\n const allConsumedElements = new Set();\n const allSubElements = new Set();\n const allNewPlayers = instruction.timelines.map(timelineInstruction => {\n const element = timelineInstruction.element;\n allConsumedElements.add(element);\n // FIXME (matsko): make sure to-be-removed animations are removed properly\n const details = element[REMOVAL_FLAG];\n if (details && details.removedBeforeQueried)\n return new NoopAnimationPlayer(timelineInstruction.duration, timelineInstruction.delay);\n const isQueriedElement = element !== rootElement;\n const previousPlayers = flattenGroupPlayers((allPreviousPlayersMap.get(element) || EMPTY_PLAYER_ARRAY)\n .map(p => p.getRealPlayer()))\n .filter(p => {\n // the `element` is not apart of the AnimationPlayer definition, but\n // Mock/WebAnimations\n // use the element within their implementation. This will be added in Angular5 to\n // AnimationPlayer\n const pp = p;\n return pp.element ? pp.element === element : false;\n });\n const preStyles = preStylesMap.get(element);\n const postStyles = postStylesMap.get(element);\n const keyframes = normalizeKeyframes$1(this._normalizer, timelineInstruction.keyframes, preStyles, postStyles);\n const player = this._buildPlayer(timelineInstruction, keyframes, previousPlayers);\n // this means that this particular player belongs to a sub trigger. It is\n // important that we match this player up with the corresponding (@trigger.listener)\n if (timelineInstruction.subTimeline && skippedPlayersMap) {\n allSubElements.add(element);\n }\n if (isQueriedElement) {\n const wrappedPlayer = new TransitionAnimationPlayer(namespaceId, triggerName, element);\n wrappedPlayer.setRealPlayer(player);\n allQueriedPlayers.push(wrappedPlayer);\n }\n return player;\n });\n allQueriedPlayers.forEach(player => {\n getOrSetDefaultValue(this.playersByQueriedElement, player.element, []).push(player);\n player.onDone(() => deleteOrUnsetInMap(this.playersByQueriedElement, player.element, player));\n });\n allConsumedElements.forEach(element => addClass(element, NG_ANIMATING_CLASSNAME));\n const player = optimizeGroupPlayer(allNewPlayers);\n player.onDestroy(() => {\n allConsumedElements.forEach(element => removeClass(element, NG_ANIMATING_CLASSNAME));\n setStyles(rootElement, instruction.toStyles);\n });\n // this basically makes all of the callbacks for sub element animations\n // be dependent on the upper players for when they finish\n allSubElements.forEach(element => {\n getOrSetDefaultValue(skippedPlayersMap, element, []).push(player);\n });\n return player;\n }\n _buildPlayer(instruction, keyframes, previousPlayers) {\n if (keyframes.length > 0) {\n return this.driver.animate(instruction.element, keyframes, instruction.duration, instruction.delay, instruction.easing, previousPlayers);\n }\n // special case for when an empty transition|definition is provided\n // ... there is no point in rendering an empty animation\n return new NoopAnimationPlayer(instruction.duration, instruction.delay);\n }\n}\nclass TransitionAnimationPlayer {\n constructor(namespaceId, triggerName, element) {\n this.namespaceId = namespaceId;\n this.triggerName = triggerName;\n this.element = element;\n this._player = new NoopAnimationPlayer();\n this._containsRealPlayer = false;\n this._queuedCallbacks = new Map();\n this.destroyed = false;\n this.parentPlayer = null;\n this.markedForDestroy = false;\n this.disabled = false;\n this.queued = true;\n this.totalTime = 0;\n }\n setRealPlayer(player) {\n if (this._containsRealPlayer)\n return;\n this._player = player;\n this._queuedCallbacks.forEach((callbacks, phase) => {\n callbacks.forEach(callback => listenOnPlayer(player, phase, undefined, callback));\n });\n this._queuedCallbacks.clear();\n this._containsRealPlayer = true;\n this.overrideTotalTime(player.totalTime);\n this.queued = false;\n }\n getRealPlayer() {\n return this._player;\n }\n overrideTotalTime(totalTime) {\n this.totalTime = totalTime;\n }\n syncPlayerEvents(player) {\n const p = this._player;\n if (p.triggerCallback) {\n player.onStart(() => p.triggerCallback('start'));\n }\n player.onDone(() => this.finish());\n player.onDestroy(() => this.destroy());\n }\n _queueEvent(name, callback) {\n getOrSetDefaultValue(this._queuedCallbacks, name, []).push(callback);\n }\n onDone(fn) {\n if (this.queued) {\n this._queueEvent('done', fn);\n }\n this._player.onDone(fn);\n }\n onStart(fn) {\n if (this.queued) {\n this._queueEvent('start', fn);\n }\n this._player.onStart(fn);\n }\n onDestroy(fn) {\n if (this.queued) {\n this._queueEvent('destroy', fn);\n }\n this._player.onDestroy(fn);\n }\n init() {\n this._player.init();\n }\n hasStarted() {\n return this.queued ? false : this._player.hasStarted();\n }\n play() {\n !this.queued && this._player.play();\n }\n pause() {\n !this.queued && this._player.pause();\n }\n restart() {\n !this.queued && this._player.restart();\n }\n finish() {\n this._player.finish();\n }\n destroy() {\n this.destroyed = true;\n this._player.destroy();\n }\n reset() {\n !this.queued && this._player.reset();\n }\n setPosition(p) {\n if (!this.queued) {\n this._player.setPosition(p);\n }\n }\n getPosition() {\n return this.queued ? 0 : this._player.getPosition();\n }\n /** @internal */\n triggerCallback(phaseName) {\n const p = this._player;\n if (p.triggerCallback) {\n p.triggerCallback(phaseName);\n }\n }\n}\nfunction deleteOrUnsetInMap(map, key, value) {\n let currentValues = map.get(key);\n if (currentValues) {\n if (currentValues.length) {\n const index = currentValues.indexOf(value);\n currentValues.splice(index, 1);\n }\n if (currentValues.length == 0) {\n map.delete(key);\n }\n }\n return currentValues;\n}\nfunction normalizeTriggerValue(value) {\n // we use `!= null` here because it's the most simple\n // way to test against a \"falsy\" value without mixing\n // in empty strings or a zero value. DO NOT OPTIMIZE.\n return value != null ? value : null;\n}\nfunction isElementNode(node) {\n return node && node['nodeType'] === 1;\n}\nfunction isTriggerEventValid(eventName) {\n return eventName == 'start' || eventName == 'done';\n}\nfunction cloakElement(element, value) {\n const oldValue = element.style.display;\n element.style.display = value != null ? value : 'none';\n return oldValue;\n}\nfunction cloakAndComputeStyles(valuesMap, driver, elements, elementPropsMap, defaultStyle) {\n const cloakVals = [];\n elements.forEach(element => cloakVals.push(cloakElement(element)));\n const failedElements = [];\n elementPropsMap.forEach((props, element) => {\n const styles = new Map();\n props.forEach(prop => {\n const value = driver.computeStyle(element, prop, defaultStyle);\n styles.set(prop, value);\n // there is no easy way to detect this because a sub element could be removed\n // by a parent animation element being detached.\n if (!value || value.length == 0) {\n element[REMOVAL_FLAG] = NULL_REMOVED_QUERIED_STATE;\n failedElements.push(element);\n }\n });\n valuesMap.set(element, styles);\n });\n // we use a index variable here since Set.forEach(a, i) does not return\n // an index value for the closure (but instead just the value)\n let i = 0;\n elements.forEach(element => cloakElement(element, cloakVals[i++]));\n return failedElements;\n}\n/*\nSince the Angular renderer code will return a collection of inserted\nnodes in all areas of a DOM tree, it's up to this algorithm to figure\nout which nodes are roots for each animation @trigger.\n\nBy placing each inserted node into a Set and traversing upwards, it\nis possible to find the @trigger elements and well any direct *star\ninsertion nodes, if a @trigger root is found then the enter element\nis placed into the Map[@trigger] spot.\n */\nfunction buildRootMap(roots, nodes) {\n const rootMap = new Map();\n roots.forEach(root => rootMap.set(root, []));\n if (nodes.length == 0)\n return rootMap;\n const NULL_NODE = 1;\n const nodeSet = new Set(nodes);\n const localRootMap = new Map();\n function getRoot(node) {\n if (!node)\n return NULL_NODE;\n let root = localRootMap.get(node);\n if (root)\n return root;\n const parent = node.parentNode;\n if (rootMap.has(parent)) { // ngIf inside @trigger\n root = parent;\n }\n else if (nodeSet.has(parent)) { // ngIf inside ngIf\n root = NULL_NODE;\n }\n else { // recurse upwards\n root = getRoot(parent);\n }\n localRootMap.set(node, root);\n return root;\n }\n nodes.forEach(node => {\n const root = getRoot(node);\n if (root !== NULL_NODE) {\n rootMap.get(root).push(node);\n }\n });\n return rootMap;\n}\nfunction addClass(element, className) {\n element.classList?.add(className);\n}\nfunction removeClass(element, className) {\n element.classList?.remove(className);\n}\nfunction removeNodesAfterAnimationDone(engine, element, players) {\n optimizeGroupPlayer(players).onDone(() => engine.processLeaveNode(element));\n}\nfunction flattenGroupPlayers(players) {\n const finalPlayers = [];\n _flattenGroupPlayersRecur(players, finalPlayers);\n return finalPlayers;\n}\nfunction _flattenGroupPlayersRecur(players, finalPlayers) {\n for (let i = 0; i < players.length; i++) {\n const player = players[i];\n if (player instanceof ɵAnimationGroupPlayer) {\n _flattenGroupPlayersRecur(player.players, finalPlayers);\n }\n else {\n finalPlayers.push(player);\n }\n }\n}\nfunction objEquals(a, b) {\n const k1 = Object.keys(a);\n const k2 = Object.keys(b);\n if (k1.length != k2.length)\n return false;\n for (let i = 0; i < k1.length; i++) {\n const prop = k1[i];\n if (!b.hasOwnProperty(prop) || a[prop] !== b[prop])\n return false;\n }\n return true;\n}\nfunction replacePostStylesAsPre(element, allPreStyleElements, allPostStyleElements) {\n const postEntry = allPostStyleElements.get(element);\n if (!postEntry)\n return false;\n let preEntry = allPreStyleElements.get(element);\n if (preEntry) {\n postEntry.forEach(data => preEntry.add(data));\n }\n else {\n allPreStyleElements.set(element, postEntry);\n }\n allPostStyleElements.delete(element);\n return true;\n}\n\nclass AnimationEngine {\n constructor(bodyNode, _driver, _normalizer) {\n this.bodyNode = bodyNode;\n this._driver = _driver;\n this._normalizer = _normalizer;\n this._triggerCache = {};\n // this method is designed to be overridden by the code that uses this engine\n this.onRemovalComplete = (element, context) => { };\n this._transitionEngine = new TransitionAnimationEngine(bodyNode, _driver, _normalizer);\n this._timelineEngine = new TimelineAnimationEngine(bodyNode, _driver, _normalizer);\n this._transitionEngine.onRemovalComplete = (element, context) => this.onRemovalComplete(element, context);\n }\n registerTrigger(componentId, namespaceId, hostElement, name, metadata) {\n const cacheKey = componentId + '-' + name;\n let trigger = this._triggerCache[cacheKey];\n if (!trigger) {\n const errors = [];\n const warnings = [];\n const ast = buildAnimationAst(this._driver, metadata, errors, warnings);\n if (errors.length) {\n throw triggerBuildFailed(name, errors);\n }\n if (warnings.length) {\n warnTriggerBuild(name, warnings);\n }\n trigger = buildTrigger(name, ast, this._normalizer);\n this._triggerCache[cacheKey] = trigger;\n }\n this._transitionEngine.registerTrigger(namespaceId, name, trigger);\n }\n register(namespaceId, hostElement) {\n this._transitionEngine.register(namespaceId, hostElement);\n }\n destroy(namespaceId, context) {\n this._transitionEngine.destroy(namespaceId, context);\n }\n onInsert(namespaceId, element, parent, insertBefore) {\n this._transitionEngine.insertNode(namespaceId, element, parent, insertBefore);\n }\n onRemove(namespaceId, element, context) {\n this._transitionEngine.removeNode(namespaceId, element, context);\n }\n disableAnimations(element, disable) {\n this._transitionEngine.markElementAsDisabled(element, disable);\n }\n process(namespaceId, element, property, value) {\n if (property.charAt(0) == '@') {\n const [id, action] = parseTimelineCommand(property);\n const args = value;\n this._timelineEngine.command(id, element, action, args);\n }\n else {\n this._transitionEngine.trigger(namespaceId, element, property, value);\n }\n }\n listen(namespaceId, element, eventName, eventPhase, callback) {\n // @@listen\n if (eventName.charAt(0) == '@') {\n const [id, action] = parseTimelineCommand(eventName);\n return this._timelineEngine.listen(id, element, action, callback);\n }\n return this._transitionEngine.listen(namespaceId, element, eventName, eventPhase, callback);\n }\n flush(microtaskId = -1) {\n this._transitionEngine.flush(microtaskId);\n }\n get players() {\n return [\n ...this._transitionEngine.players,\n ...this._timelineEngine.players,\n ];\n }\n whenRenderingDone() {\n return this._transitionEngine.whenRenderingDone();\n }\n afterFlushAnimationsDone(cb) {\n this._transitionEngine.afterFlushAnimationsDone(cb);\n }\n}\n\n/**\n * Returns an instance of `SpecialCasedStyles` if and when any special (non animateable) styles are\n * detected.\n *\n * In CSS there exist properties that cannot be animated within a keyframe animation\n * (whether it be via CSS keyframes or web-animations) and the animation implementation\n * will ignore them. This function is designed to detect those special cased styles and\n * return a container that will be executed at the start and end of the animation.\n *\n * @returns an instance of `SpecialCasedStyles` if any special styles are detected otherwise `null`\n */\nfunction packageNonAnimatableStyles(element, styles) {\n let startStyles = null;\n let endStyles = null;\n if (Array.isArray(styles) && styles.length) {\n startStyles = filterNonAnimatableStyles(styles[0]);\n if (styles.length > 1) {\n endStyles = filterNonAnimatableStyles(styles[styles.length - 1]);\n }\n }\n else if (styles instanceof Map) {\n startStyles = filterNonAnimatableStyles(styles);\n }\n return (startStyles || endStyles) ? new SpecialCasedStyles(element, startStyles, endStyles) :\n null;\n}\n/**\n * Designed to be executed during a keyframe-based animation to apply any special-cased styles.\n *\n * When started (when the `start()` method is run) then the provided `startStyles`\n * will be applied. When finished (when the `finish()` method is called) the\n * `endStyles` will be applied as well any any starting styles. Finally when\n * `destroy()` is called then all styles will be removed.\n */\nclass SpecialCasedStyles {\n static { this.initialStylesByElement = ( /* @__PURE__ */new WeakMap()); }\n constructor(_element, _startStyles, _endStyles) {\n this._element = _element;\n this._startStyles = _startStyles;\n this._endStyles = _endStyles;\n this._state = 0 /* SpecialCasedStylesState.Pending */;\n let initialStyles = SpecialCasedStyles.initialStylesByElement.get(_element);\n if (!initialStyles) {\n SpecialCasedStyles.initialStylesByElement.set(_element, initialStyles = new Map());\n }\n this._initialStyles = initialStyles;\n }\n start() {\n if (this._state < 1 /* SpecialCasedStylesState.Started */) {\n if (this._startStyles) {\n setStyles(this._element, this._startStyles, this._initialStyles);\n }\n this._state = 1 /* SpecialCasedStylesState.Started */;\n }\n }\n finish() {\n this.start();\n if (this._state < 2 /* SpecialCasedStylesState.Finished */) {\n setStyles(this._element, this._initialStyles);\n if (this._endStyles) {\n setStyles(this._element, this._endStyles);\n this._endStyles = null;\n }\n this._state = 1 /* SpecialCasedStylesState.Started */;\n }\n }\n destroy() {\n this.finish();\n if (this._state < 3 /* SpecialCasedStylesState.Destroyed */) {\n SpecialCasedStyles.initialStylesByElement.delete(this._element);\n if (this._startStyles) {\n eraseStyles(this._element, this._startStyles);\n this._endStyles = null;\n }\n if (this._endStyles) {\n eraseStyles(this._element, this._endStyles);\n this._endStyles = null;\n }\n setStyles(this._element, this._initialStyles);\n this._state = 3 /* SpecialCasedStylesState.Destroyed */;\n }\n }\n}\nfunction filterNonAnimatableStyles(styles) {\n let result = null;\n styles.forEach((val, prop) => {\n if (isNonAnimatableStyle(prop)) {\n result = result || new Map();\n result.set(prop, val);\n }\n });\n return result;\n}\nfunction isNonAnimatableStyle(prop) {\n return prop === 'display' || prop === 'position';\n}\n\nclass WebAnimationsPlayer {\n constructor(element, keyframes, options, _specialStyles) {\n this.element = element;\n this.keyframes = keyframes;\n this.options = options;\n this._specialStyles = _specialStyles;\n this._onDoneFns = [];\n this._onStartFns = [];\n this._onDestroyFns = [];\n this._initialized = false;\n this._finished = false;\n this._started = false;\n this._destroyed = false;\n // the following original fns are persistent copies of the _onStartFns and _onDoneFns\n // and are used to reset the fns to their original values upon reset()\n // (since the _onStartFns and _onDoneFns get deleted after they are called)\n this._originalOnDoneFns = [];\n this._originalOnStartFns = [];\n this.time = 0;\n this.parentPlayer = null;\n this.currentSnapshot = new Map();\n this._duration = options['duration'];\n this._delay = options['delay'] || 0;\n this.time = this._duration + this._delay;\n }\n _onFinish() {\n if (!this._finished) {\n this._finished = true;\n this._onDoneFns.forEach(fn => fn());\n this._onDoneFns = [];\n }\n }\n init() {\n this._buildPlayer();\n this._preparePlayerBeforeStart();\n }\n _buildPlayer() {\n if (this._initialized)\n return;\n this._initialized = true;\n const keyframes = this.keyframes;\n // @ts-expect-error overwriting a readonly property\n this.domPlayer = this._triggerWebAnimation(this.element, keyframes, this.options);\n this._finalKeyframe = keyframes.length ? keyframes[keyframes.length - 1] : new Map();\n const onFinish = () => this._onFinish();\n this.domPlayer.addEventListener('finish', onFinish);\n this.onDestroy(() => {\n // We must remove the `finish` event listener once an animation has completed all its\n // iterations. This action is necessary to prevent a memory leak since the listener captures\n // `this`, creating a closure that prevents `this` from being garbage collected.\n this.domPlayer.removeEventListener('finish', onFinish);\n });\n }\n _preparePlayerBeforeStart() {\n // this is required so that the player doesn't start to animate right away\n if (this._delay) {\n this._resetDomPlayerState();\n }\n else {\n this.domPlayer.pause();\n }\n }\n _convertKeyframesToObject(keyframes) {\n const kfs = [];\n keyframes.forEach(frame => {\n kfs.push(Object.fromEntries(frame));\n });\n return kfs;\n }\n /** @internal */\n _triggerWebAnimation(element, keyframes, options) {\n return element.animate(this._convertKeyframesToObject(keyframes), options);\n }\n onStart(fn) {\n this._originalOnStartFns.push(fn);\n this._onStartFns.push(fn);\n }\n onDone(fn) {\n this._originalOnDoneFns.push(fn);\n this._onDoneFns.push(fn);\n }\n onDestroy(fn) {\n this._onDestroyFns.push(fn);\n }\n play() {\n this._buildPlayer();\n if (!this.hasStarted()) {\n this._onStartFns.forEach(fn => fn());\n this._onStartFns = [];\n this._started = true;\n if (this._specialStyles) {\n this._specialStyles.start();\n }\n }\n this.domPlayer.play();\n }\n pause() {\n this.init();\n this.domPlayer.pause();\n }\n finish() {\n this.init();\n if (this._specialStyles) {\n this._specialStyles.finish();\n }\n this._onFinish();\n this.domPlayer.finish();\n }\n reset() {\n this._resetDomPlayerState();\n this._destroyed = false;\n this._finished = false;\n this._started = false;\n this._onStartFns = this._originalOnStartFns;\n this._onDoneFns = this._originalOnDoneFns;\n }\n _resetDomPlayerState() {\n if (this.domPlayer) {\n this.domPlayer.cancel();\n }\n }\n restart() {\n this.reset();\n this.play();\n }\n hasStarted() {\n return this._started;\n }\n destroy() {\n if (!this._destroyed) {\n this._destroyed = true;\n this._resetDomPlayerState();\n this._onFinish();\n if (this._specialStyles) {\n this._specialStyles.destroy();\n }\n this._onDestroyFns.forEach(fn => fn());\n this._onDestroyFns = [];\n }\n }\n setPosition(p) {\n if (this.domPlayer === undefined) {\n this.init();\n }\n this.domPlayer.currentTime = p * this.time;\n }\n getPosition() {\n // tsc is complaining with TS2362 without the conversion to number\n return +(this.domPlayer.currentTime ?? 0) / this.time;\n }\n get totalTime() {\n return this._delay + this._duration;\n }\n beforeDestroy() {\n const styles = new Map();\n if (this.hasStarted()) {\n // note: this code is invoked only when the `play` function was called prior to this\n // (thus `hasStarted` returns true), this implies that the code that initializes\n // `_finalKeyframe` has also been executed and the non-null assertion can be safely used here\n const finalKeyframe = this._finalKeyframe;\n finalKeyframe.forEach((val, prop) => {\n if (prop !== 'offset') {\n styles.set(prop, this._finished ? val : computeStyle(this.element, prop));\n }\n });\n }\n this.currentSnapshot = styles;\n }\n /** @internal */\n triggerCallback(phaseName) {\n const methods = phaseName === 'start' ? this._onStartFns : this._onDoneFns;\n methods.forEach(fn => fn());\n methods.length = 0;\n }\n}\n\nclass WebAnimationsDriver {\n validateStyleProperty(prop) {\n // Perform actual validation in dev mode only, in prod mode this check is a noop.\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n return validateStyleProperty(prop);\n }\n return true;\n }\n validateAnimatableStyleProperty(prop) {\n // Perform actual validation in dev mode only, in prod mode this check is a noop.\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const cssProp = camelCaseToDashCase(prop);\n return validateWebAnimatableStyleProperty(cssProp);\n }\n return true;\n }\n matchesElement(_element, _selector) {\n // This method is deprecated and no longer in use so we return false.\n return false;\n }\n containsElement(elm1, elm2) {\n return containsElement(elm1, elm2);\n }\n getParentElement(element) {\n return getParentElement(element);\n }\n query(element, selector, multi) {\n return invokeQuery(element, selector, multi);\n }\n computeStyle(element, prop, defaultValue) {\n return window.getComputedStyle(element)[prop];\n }\n animate(element, keyframes, duration, delay, easing, previousPlayers = []) {\n const fill = delay == 0 ? 'both' : 'forwards';\n const playerOptions = { duration, delay, fill };\n // we check for this to avoid having a null|undefined value be present\n // for the easing (which results in an error for certain browsers #9752)\n if (easing) {\n playerOptions['easing'] = easing;\n }\n const previousStyles = new Map();\n const previousWebAnimationPlayers = previousPlayers.filter(player => player instanceof WebAnimationsPlayer);\n if (allowPreviousPlayerStylesMerge(duration, delay)) {\n previousWebAnimationPlayers.forEach(player => {\n player.currentSnapshot.forEach((val, prop) => previousStyles.set(prop, val));\n });\n }\n let _keyframes = normalizeKeyframes(keyframes).map(styles => copyStyles(styles));\n _keyframes = balancePreviousStylesIntoKeyframes(element, _keyframes, previousStyles);\n const specialStyles = packageNonAnimatableStyles(element, _keyframes);\n return new WebAnimationsPlayer(element, _keyframes, playerOptions, specialStyles);\n }\n}\n\n/**\n * @module\n * @description\n * Entry point for all animation APIs of the animation browser package.\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\n\n// This file is not used to build this module. It is only used during editing\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AnimationDriver, Animation as ɵAnimation, AnimationEngine as ɵAnimationEngine, AnimationStyleNormalizer as ɵAnimationStyleNormalizer, NoopAnimationDriver as ɵNoopAnimationDriver, NoopAnimationStyleNormalizer as ɵNoopAnimationStyleNormalizer, WebAnimationsDriver as ɵWebAnimationsDriver, WebAnimationsPlayer as ɵWebAnimationsPlayer, WebAnimationsStyleNormalizer as ɵWebAnimationsStyleNormalizer, allowPreviousPlayerStylesMerge as ɵallowPreviousPlayerStylesMerge, containsElement as ɵcontainsElement, getParentElement as ɵgetParentElement, invokeQuery as ɵinvokeQuery, normalizeKeyframes as ɵnormalizeKeyframes, validateStyleProperty as ɵvalidateStyleProperty };\n","/**\n * @license Angular v16.2.12\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport * as i0 from '@angular/core';\nimport { ViewEncapsulation, Injectable, Inject, RendererFactory2, NgZone, ANIMATION_MODULE_TYPE, NgModule } from '@angular/core';\nexport { ANIMATION_MODULE_TYPE } from '@angular/core';\nimport { ɵDomRendererFactory2, BrowserModule } from '@angular/platform-browser';\nimport { AnimationBuilder, sequence, AnimationFactory } from '@angular/animations';\nimport * as i1 from '@angular/animations/browser';\nimport { ɵAnimationEngine, ɵWebAnimationsStyleNormalizer, ɵAnimationStyleNormalizer, AnimationDriver, ɵWebAnimationsDriver, ɵNoopAnimationDriver } from '@angular/animations/browser';\nimport { DOCUMENT } from '@angular/common';\n\nclass BrowserAnimationBuilder extends AnimationBuilder {\n constructor(rootRenderer, doc) {\n super();\n this._nextAnimationId = 0;\n const typeData = { id: '0', encapsulation: ViewEncapsulation.None, styles: [], data: { animation: [] } };\n this._renderer = rootRenderer.createRenderer(doc.body, typeData);\n }\n build(animation) {\n const id = this._nextAnimationId.toString();\n this._nextAnimationId++;\n const entry = Array.isArray(animation) ? sequence(animation) : animation;\n issueAnimationCommand(this._renderer, null, id, 'register', [entry]);\n return new BrowserAnimationFactory(id, this._renderer);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: BrowserAnimationBuilder, deps: [{ token: i0.RendererFactory2 }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: BrowserAnimationBuilder }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: BrowserAnimationBuilder, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.RendererFactory2 }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; } });\nclass BrowserAnimationFactory extends AnimationFactory {\n constructor(_id, _renderer) {\n super();\n this._id = _id;\n this._renderer = _renderer;\n }\n create(element, options) {\n return new RendererAnimationPlayer(this._id, element, options || {}, this._renderer);\n }\n}\nclass RendererAnimationPlayer {\n constructor(id, element, options, _renderer) {\n this.id = id;\n this.element = element;\n this._renderer = _renderer;\n this.parentPlayer = null;\n this._started = false;\n this.totalTime = 0;\n this._command('create', options);\n }\n _listen(eventName, callback) {\n return this._renderer.listen(this.element, `@@${this.id}:${eventName}`, callback);\n }\n _command(command, ...args) {\n return issueAnimationCommand(this._renderer, this.element, this.id, command, args);\n }\n onDone(fn) {\n this._listen('done', fn);\n }\n onStart(fn) {\n this._listen('start', fn);\n }\n onDestroy(fn) {\n this._listen('destroy', fn);\n }\n init() {\n this._command('init');\n }\n hasStarted() {\n return this._started;\n }\n play() {\n this._command('play');\n this._started = true;\n }\n pause() {\n this._command('pause');\n }\n restart() {\n this._command('restart');\n }\n finish() {\n this._command('finish');\n }\n destroy() {\n this._command('destroy');\n }\n reset() {\n this._command('reset');\n this._started = false;\n }\n setPosition(p) {\n this._command('setPosition', p);\n }\n getPosition() {\n return this._renderer.engine.players[+this.id]?.getPosition() ?? 0;\n }\n}\nfunction issueAnimationCommand(renderer, element, id, command, args) {\n return renderer.setProperty(element, `@@${id}:${command}`, args);\n}\n\nconst ANIMATION_PREFIX = '@';\nconst DISABLE_ANIMATIONS_FLAG = '@.disabled';\nclass AnimationRendererFactory {\n constructor(delegate, engine, _zone) {\n this.delegate = delegate;\n this.engine = engine;\n this._zone = _zone;\n this._currentId = 0;\n this._microtaskId = 1;\n this._animationCallbacksBuffer = [];\n this._rendererCache = new Map();\n this._cdRecurDepth = 0;\n engine.onRemovalComplete = (element, delegate) => {\n // Note: if a component element has a leave animation, and a host leave animation,\n // the view engine will call `removeChild` for the parent\n // component renderer as well as for the child component renderer.\n // Therefore, we need to check if we already removed the element.\n const parentNode = delegate?.parentNode(element);\n if (parentNode) {\n delegate.removeChild(parentNode, element);\n }\n };\n }\n createRenderer(hostElement, type) {\n const EMPTY_NAMESPACE_ID = '';\n // cache the delegates to find out which cached delegate can\n // be used by which cached renderer\n const delegate = this.delegate.createRenderer(hostElement, type);\n if (!hostElement || !type || !type.data || !type.data['animation']) {\n let renderer = this._rendererCache.get(delegate);\n if (!renderer) {\n // Ensure that the renderer is removed from the cache on destroy\n // since it may contain references to detached DOM nodes.\n const onRendererDestroy = () => this._rendererCache.delete(delegate);\n renderer =\n new BaseAnimationRenderer(EMPTY_NAMESPACE_ID, delegate, this.engine, onRendererDestroy);\n // only cache this result when the base renderer is used\n this._rendererCache.set(delegate, renderer);\n }\n return renderer;\n }\n const componentId = type.id;\n const namespaceId = type.id + '-' + this._currentId;\n this._currentId++;\n this.engine.register(namespaceId, hostElement);\n const registerTrigger = (trigger) => {\n if (Array.isArray(trigger)) {\n trigger.forEach(registerTrigger);\n }\n else {\n this.engine.registerTrigger(componentId, namespaceId, hostElement, trigger.name, trigger);\n }\n };\n const animationTriggers = type.data['animation'];\n animationTriggers.forEach(registerTrigger);\n return new AnimationRenderer(this, namespaceId, delegate, this.engine);\n }\n begin() {\n this._cdRecurDepth++;\n if (this.delegate.begin) {\n this.delegate.begin();\n }\n }\n _scheduleCountTask() {\n queueMicrotask(() => {\n this._microtaskId++;\n });\n }\n /** @internal */\n scheduleListenerCallback(count, fn, data) {\n if (count >= 0 && count < this._microtaskId) {\n this._zone.run(() => fn(data));\n return;\n }\n if (this._animationCallbacksBuffer.length == 0) {\n queueMicrotask(() => {\n this._zone.run(() => {\n this._animationCallbacksBuffer.forEach(tuple => {\n const [fn, data] = tuple;\n fn(data);\n });\n this._animationCallbacksBuffer = [];\n });\n });\n }\n this._animationCallbacksBuffer.push([fn, data]);\n }\n end() {\n this._cdRecurDepth--;\n // this is to prevent animations from running twice when an inner\n // component does CD when a parent component instead has inserted it\n if (this._cdRecurDepth == 0) {\n this._zone.runOutsideAngular(() => {\n this._scheduleCountTask();\n this.engine.flush(this._microtaskId);\n });\n }\n if (this.delegate.end) {\n this.delegate.end();\n }\n }\n whenRenderingDone() {\n return this.engine.whenRenderingDone();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: AnimationRendererFactory, deps: [{ token: i0.RendererFactory2 }, { token: i1.ɵAnimationEngine }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: AnimationRendererFactory }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: AnimationRendererFactory, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.RendererFactory2 }, { type: i1.ɵAnimationEngine }, { type: i0.NgZone }]; } });\nclass BaseAnimationRenderer {\n constructor(namespaceId, delegate, engine, _onDestroy) {\n this.namespaceId = namespaceId;\n this.delegate = delegate;\n this.engine = engine;\n this._onDestroy = _onDestroy;\n }\n get data() {\n return this.delegate.data;\n }\n destroyNode(node) {\n this.delegate.destroyNode?.(node);\n }\n destroy() {\n this.engine.destroy(this.namespaceId, this.delegate);\n this.engine.afterFlushAnimationsDone(() => {\n // Call the renderer destroy method after the animations has finished as otherwise\n // styles will be removed too early which will cause an unstyled animation.\n queueMicrotask(() => {\n this.delegate.destroy();\n });\n });\n this._onDestroy?.();\n }\n createElement(name, namespace) {\n return this.delegate.createElement(name, namespace);\n }\n createComment(value) {\n return this.delegate.createComment(value);\n }\n createText(value) {\n return this.delegate.createText(value);\n }\n appendChild(parent, newChild) {\n this.delegate.appendChild(parent, newChild);\n this.engine.onInsert(this.namespaceId, newChild, parent, false);\n }\n insertBefore(parent, newChild, refChild, isMove = true) {\n this.delegate.insertBefore(parent, newChild, refChild);\n // If `isMove` true than we should animate this insert.\n this.engine.onInsert(this.namespaceId, newChild, parent, isMove);\n }\n removeChild(parent, oldChild, isHostElement) {\n this.engine.onRemove(this.namespaceId, oldChild, this.delegate);\n }\n selectRootElement(selectorOrNode, preserveContent) {\n return this.delegate.selectRootElement(selectorOrNode, preserveContent);\n }\n parentNode(node) {\n return this.delegate.parentNode(node);\n }\n nextSibling(node) {\n return this.delegate.nextSibling(node);\n }\n setAttribute(el, name, value, namespace) {\n this.delegate.setAttribute(el, name, value, namespace);\n }\n removeAttribute(el, name, namespace) {\n this.delegate.removeAttribute(el, name, namespace);\n }\n addClass(el, name) {\n this.delegate.addClass(el, name);\n }\n removeClass(el, name) {\n this.delegate.removeClass(el, name);\n }\n setStyle(el, style, value, flags) {\n this.delegate.setStyle(el, style, value, flags);\n }\n removeStyle(el, style, flags) {\n this.delegate.removeStyle(el, style, flags);\n }\n setProperty(el, name, value) {\n if (name.charAt(0) == ANIMATION_PREFIX && name == DISABLE_ANIMATIONS_FLAG) {\n this.disableAnimations(el, !!value);\n }\n else {\n this.delegate.setProperty(el, name, value);\n }\n }\n setValue(node, value) {\n this.delegate.setValue(node, value);\n }\n listen(target, eventName, callback) {\n return this.delegate.listen(target, eventName, callback);\n }\n disableAnimations(element, value) {\n this.engine.disableAnimations(element, value);\n }\n}\nclass AnimationRenderer extends BaseAnimationRenderer {\n constructor(factory, namespaceId, delegate, engine, onDestroy) {\n super(namespaceId, delegate, engine, onDestroy);\n this.factory = factory;\n this.namespaceId = namespaceId;\n }\n setProperty(el, name, value) {\n if (name.charAt(0) == ANIMATION_PREFIX) {\n if (name.charAt(1) == '.' && name == DISABLE_ANIMATIONS_FLAG) {\n value = value === undefined ? true : !!value;\n this.disableAnimations(el, value);\n }\n else {\n this.engine.process(this.namespaceId, el, name.slice(1), value);\n }\n }\n else {\n this.delegate.setProperty(el, name, value);\n }\n }\n listen(target, eventName, callback) {\n if (eventName.charAt(0) == ANIMATION_PREFIX) {\n const element = resolveElementFromTarget(target);\n let name = eventName.slice(1);\n let phase = '';\n // @listener.phase is for trigger animation callbacks\n // @@listener is for animation builder callbacks\n if (name.charAt(0) != ANIMATION_PREFIX) {\n [name, phase] = parseTriggerCallbackName(name);\n }\n return this.engine.listen(this.namespaceId, element, name, phase, event => {\n const countId = event['_data'] || -1;\n this.factory.scheduleListenerCallback(countId, callback, event);\n });\n }\n return this.delegate.listen(target, eventName, callback);\n }\n}\nfunction resolveElementFromTarget(target) {\n switch (target) {\n case 'body':\n return document.body;\n case 'document':\n return document;\n case 'window':\n return window;\n default:\n return target;\n }\n}\nfunction parseTriggerCallbackName(triggerName) {\n const dotIndex = triggerName.indexOf('.');\n const trigger = triggerName.substring(0, dotIndex);\n const phase = triggerName.slice(dotIndex + 1);\n return [trigger, phase];\n}\n\nclass InjectableAnimationEngine extends ɵAnimationEngine {\n // The `ApplicationRef` is injected here explicitly to force the dependency ordering.\n // Since the `ApplicationRef` should be created earlier before the `AnimationEngine`, they\n // both have `ngOnDestroy` hooks and `flush()` must be called after all views are destroyed.\n constructor(doc, driver, normalizer, appRef) {\n super(doc.body, driver, normalizer);\n }\n ngOnDestroy() {\n this.flush();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: InjectableAnimationEngine, deps: [{ token: DOCUMENT }, { token: i1.AnimationDriver }, { token: i1.ɵAnimationStyleNormalizer }, { token: i0.ApplicationRef }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: InjectableAnimationEngine }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: InjectableAnimationEngine, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i1.AnimationDriver }, { type: i1.ɵAnimationStyleNormalizer }, { type: i0.ApplicationRef }]; } });\nfunction instantiateDefaultStyleNormalizer() {\n return new ɵWebAnimationsStyleNormalizer();\n}\nfunction instantiateRendererFactory(renderer, engine, zone) {\n return new AnimationRendererFactory(renderer, engine, zone);\n}\nconst SHARED_ANIMATION_PROVIDERS = [\n { provide: AnimationBuilder, useClass: BrowserAnimationBuilder },\n { provide: ɵAnimationStyleNormalizer, useFactory: instantiateDefaultStyleNormalizer },\n { provide: ɵAnimationEngine, useClass: InjectableAnimationEngine }, {\n provide: RendererFactory2,\n useFactory: instantiateRendererFactory,\n deps: [ɵDomRendererFactory2, ɵAnimationEngine, NgZone]\n }\n];\n/**\n * Separate providers from the actual module so that we can do a local modification in Google3 to\n * include them in the BrowserModule.\n */\nconst BROWSER_ANIMATIONS_PROVIDERS = [\n { provide: AnimationDriver, useFactory: () => new ɵWebAnimationsDriver() },\n { provide: ANIMATION_MODULE_TYPE, useValue: 'BrowserAnimations' }, ...SHARED_ANIMATION_PROVIDERS\n];\n/**\n * Separate providers from the actual module so that we can do a local modification in Google3 to\n * include them in the BrowserTestingModule.\n */\nconst BROWSER_NOOP_ANIMATIONS_PROVIDERS = [\n { provide: AnimationDriver, useClass: ɵNoopAnimationDriver },\n { provide: ANIMATION_MODULE_TYPE, useValue: 'NoopAnimations' }, ...SHARED_ANIMATION_PROVIDERS\n];\n\n/**\n * Exports `BrowserModule` with additional [dependency-injection providers](guide/glossary#provider)\n * for use with animations. See [Animations](guide/animations).\n * @publicApi\n */\nclass BrowserAnimationsModule {\n /**\n * Configures the module based on the specified object.\n *\n * @param config Object used to configure the behavior of the `BrowserAnimationsModule`.\n * @see {@link BrowserAnimationsModuleConfig}\n *\n * @usageNotes\n * When registering the `BrowserAnimationsModule`, you can use the `withConfig`\n * function as follows:\n * ```\n * @NgModule({\n * imports: [BrowserAnimationsModule.withConfig(config)]\n * })\n * class MyNgModule {}\n * ```\n */\n static withConfig(config) {\n return {\n ngModule: BrowserAnimationsModule,\n providers: config.disableAnimations ? BROWSER_NOOP_ANIMATIONS_PROVIDERS :\n BROWSER_ANIMATIONS_PROVIDERS\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: BrowserAnimationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: BrowserAnimationsModule, exports: [BrowserModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: BrowserAnimationsModule, providers: BROWSER_ANIMATIONS_PROVIDERS, imports: [BrowserModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: BrowserAnimationsModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [BrowserModule],\n providers: BROWSER_ANIMATIONS_PROVIDERS,\n }]\n }] });\n/**\n * Returns the set of [dependency-injection providers](guide/glossary#provider)\n * to enable animations in an application. See [animations guide](guide/animations)\n * to learn more about animations in Angular.\n *\n * @usageNotes\n *\n * The function is useful when you want to enable animations in an application\n * bootstrapped using the `bootstrapApplication` function. In this scenario there\n * is no need to import the `BrowserAnimationsModule` NgModule at all, just add\n * providers returned by this function to the `providers` list as show below.\n *\n * ```typescript\n * bootstrapApplication(RootComponent, {\n * providers: [\n * provideAnimations()\n * ]\n * });\n * ```\n *\n * @publicApi\n */\nfunction provideAnimations() {\n // Return a copy to prevent changes to the original array in case any in-place\n // alterations are performed to the `provideAnimations` call results in app code.\n return [...BROWSER_ANIMATIONS_PROVIDERS];\n}\n/**\n * A null player that must be imported to allow disabling of animations.\n * @publicApi\n */\nclass NoopAnimationsModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NoopAnimationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: NoopAnimationsModule, exports: [BrowserModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NoopAnimationsModule, providers: BROWSER_NOOP_ANIMATIONS_PROVIDERS, imports: [BrowserModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NoopAnimationsModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [BrowserModule],\n providers: BROWSER_NOOP_ANIMATIONS_PROVIDERS,\n }]\n }] });\n/**\n * Returns the set of [dependency-injection providers](guide/glossary#provider)\n * to disable animations in an application. See [animations guide](guide/animations)\n * to learn more about animations in Angular.\n *\n * @usageNotes\n *\n * The function is useful when you want to bootstrap an application using\n * the `bootstrapApplication` function, but you need to disable animations\n * (for example, when running tests).\n *\n * ```typescript\n * bootstrapApplication(RootComponent, {\n * providers: [\n * provideNoopAnimations()\n * ]\n * });\n * ```\n *\n * @publicApi\n */\nfunction provideNoopAnimations() {\n // Return a copy to prevent changes to the original array in case any in-place\n // alterations are performed to the `provideNoopAnimations` call results in app code.\n return [...BROWSER_NOOP_ANIMATIONS_PROVIDERS];\n}\n\n/**\n * @module\n * @description\n * Entry point for all animation APIs of the animation browser package.\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\n\n// This file is not used to build this module. It is only used during editing\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BrowserAnimationsModule, NoopAnimationsModule, provideAnimations, provideNoopAnimations, AnimationRenderer as ɵAnimationRenderer, AnimationRendererFactory as ɵAnimationRendererFactory, BrowserAnimationBuilder as ɵBrowserAnimationBuilder, BrowserAnimationFactory as ɵBrowserAnimationFactory, InjectableAnimationEngine as ɵInjectableAnimationEngine };\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { InterpolatePipe } from '@shared/pipes/interpolate/interpolate.pipe';\n\n@NgModule({\n declarations: [InterpolatePipe],\n imports: [CommonModule],\n exports: [InterpolatePipe],\n})\nexport class InterpolationPipeModule {}\n","import { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { SessionTimeoutModalComponent } from '@common/authentication/components/session-timeout-modal/session-timeout-modal.component';\nimport { SwitchUserComponent } from '@common/authentication/components/switch-user/switch-user.component';\nimport { UserProfileState } from '@common/authentication/state/user-profile.state';\nimport { TranslationModule } from '@common/translation/translation.module';\nimport { NgxsModule } from '@ngxs/store';\nimport { InterpolationPipeModule } from '@shared/pipes/interpolate/interpolate.module';\nimport { UnsafeModule } from '@shared/pipes/unsafe/unsafe.module';\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\nimport { ModalModule } from 'ngx-bootstrap/modal';\nimport { CookieModule } from 'ngx-cookie';\nimport { ConsentDialogComponent } from './components/consent-dialog/consent-dialog.component';\nimport { LoginComponent } from './components/login/login.component';\n\n@NgModule({\n declarations: [LoginComponent, SwitchUserComponent, SessionTimeoutModalComponent, ConsentDialogComponent],\n imports: [\n CommonModule,\n ModalModule.forRoot(),\n BrowserAnimationsModule,\n BsDropdownModule.forRoot(),\n FormsModule,\n HttpClientModule,\n InterpolationPipeModule,\n UnsafeModule,\n NgxsModule.forFeature([UserProfileState]),\n CookieModule.forRoot(),\n ReactiveFormsModule,\n TranslationModule,\n // in the future we might move this up to common.\n ],\n exports: [SwitchUserComponent],\n})\nexport class AuthenticationModule {}\n","import { HttpClient, HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { EarningsOptInStatus } from '@common/cms/earnings-opt-in/state/earnings-opt-in.model';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EarningsOptInItemService {\n constructor(private http: HttpClient) {}\n\n private static handleError(error: HttpErrorResponse) {\n return throwError(error.error.message);\n }\n\n getOptInStatus(): Observable {\n return this.http.get('/mvc/fpvCommissionOptIn/status').pipe(map((optInStatus: EarningsOptInStatus) => optInStatus));\n }\n\n earningsOptIn(): Observable {\n return this.http.put('/mvc/fpvCommissionOptIn/status/commission', '').pipe(\n map((optInStatus: EarningsOptInStatus) => optInStatus),\n catchError(EarningsOptInItemService.handleError)\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { EarningsOptInItemService } from '@common/cms/earnings-opt-in/earnings-opt-in-item.service';\nimport { LoadEarningsOptIn, LoadEarningsOptInStatus } from '@common/cms/earnings-opt-in/state/earnings-opt-in.actions';\nimport { EarningsOptInStateModel } from '@common/cms/earnings-opt-in/state/earnings-opt-in.model';\nimport { Action, State, StateContext } from '@ngxs/store';\nimport { map } from 'rxjs/operators';\n\n@State({\n name: 'earningsOptIn',\n defaults: {\n earningType: null,\n },\n})\n@Injectable()\nexport class EarningsOptInState {\n constructor(private earningsOptInService: EarningsOptInItemService) {}\n\n @Action(LoadEarningsOptInStatus)\n LoadEarningsOptInStatus({ patchState }: StateContext, action: LoadEarningsOptInStatus) {\n return this.earningsOptInService.getOptInStatus().pipe(\n map((earningType) => {\n if (earningType) {\n patchState({ earningType });\n }\n })\n );\n }\n\n @Action(LoadEarningsOptIn)\n EarningsOptIn(ctx: StateContext, action: LoadEarningsOptIn) {\n return this.earningsOptInService.earningsOptIn().pipe(\n map((earningType) => {\n if (earningType) {\n ctx.patchState({ earningType });\n }\n })\n );\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { EarningsOptInItemService } from '@common/cms/earnings-opt-in/earnings-opt-in-item.service';\nimport { EarningsOptInState } from '@common/cms/earnings-opt-in/state/earnings-opt-in.state';\nimport { NgxsModule } from '@ngxs/store';\nimport { EarningsOptInItemComponent } from './earnings-opt-in-item/earnings-opt-in-item.component';\n\n@NgModule({\n declarations: [EarningsOptInItemComponent],\n imports: [CommonModule, NgxsModule.forFeature([EarningsOptInState])],\n exports: [EarningsOptInItemComponent],\n providers: [EarningsOptInItemService],\n})\nexport class EarningsOptInItemModule {}\n","// this is using bits so everything should be base 2\nexport enum AnalyticsSystem {\n GTM = 1,\n FS = 2,\n GTM_FS = 3,\n ALL = 255,\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { AnalyticsSystem } from '@common/analytics/model/analytics.model';\nimport { WINDOW_TOKEN } from '@usana/ux/common';\nimport { UsanaFullStoryService } from '@usana/ux/fullstory';\n\n@Injectable()\nexport class AnalyticsService {\n constructor(\n @Inject(WINDOW_TOKEN) protected readonly window: any,\n @Optional() private readonly usanaFsService: UsanaFullStoryService\n ) {}\n\n /**\n * since we use a bitwise op for this, this helper method lets you convert an array of values to the op you need\n * @param systems list of systems you want to send an event to\n */\n getSystemsFromEnum(systems: AnalyticsSystem[]): number {\n let systemBits = 0;\n systems.forEach((s) => {\n // eslint-disable-next-line no-bitwise\n systemBits |= s;\n });\n\n return systemBits;\n }\n\n sendEventToAllSystems(eventName: string, eventProperties: any): void {\n this.sendEvent(AnalyticsSystem.ALL, eventName, eventProperties);\n }\n\n sendEvent(systems: number, eventName: string, eventProperties: any): void {\n // yes these are all & on purpose, thanks bitwise ops\n if (this.matchesSystem(systems, AnalyticsSystem.GTM)) {\n this.getDataLayer().push({\n event: eventName,\n ...eventProperties,\n });\n }\n if (this.matchesSystem(systems, AnalyticsSystem.FS)) {\n if (this.usanaFsService) {\n this.usanaFsService.sendEvent(eventName, eventProperties);\n }\n }\n }\n\n matchesSystem(systems: number, system: AnalyticsSystem): boolean {\n // yay bitwise op & if we have a non 0 value then it matches\n // eslint-disable-next-line no-bitwise\n return (systems & system) > 0;\n }\n\n // return the dataLayer if it exists or an empty array if it doesn't\n private getDataLayer(): any[] {\n return this.window.dataLayer || [];\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AnalyticsService } from '@common/analytics/service/analytics.service';\n\n@NgModule({\n imports: [CommonModule],\n providers: [AnalyticsService],\n})\nexport class AnalyticsModule {}\n","export const CmsConstants = {\n DEBUG: false,\n DIRECTIONS: {\n UP: 'up',\n TOP: 'top',\n LEFT: 'left',\n RIGHT: 'right',\n DOWN: 'down',\n BOTTOM: 'bottom',\n },\n PUBLISH_STATUS: {\n NONE: 0,\n PUBLISHED: 1,\n SUCCESS_PUBLISHING: 2,\n ERROR_PUBLISHING: 3,\n },\n MENU_SVG_PATHS: {\n 'business-hub-nav-block': {\n svgPath1: 'M0 0h24v24H0z',\n svgPath2: 'M10 20h4V4h-4v16zm-6 0h4v-8H4v8zM16 9v11h4V9h-4z',\n },\n 'shop-hub-nav-block': {\n svgPath1: 'M0 0h24v24H0zm18.31 6l-2.76 5z',\n svgPath2:\n 'M11 9h2V6h3V4h-3V1h-2v3H8v2h3v3zm-4 9c-1.1 0-1.99.9-1.99 2S5.9 22 7 22s2-.9 2-2-.9-2-2-2zm10 0c-1.1 0-1.99.9-1.99 2s.89 2 1.99 2 2-.9 2-2-.9-2-2-2zm-9.83-3.25l.03-.12.9-1.63h7.45c.75 0 1.41-.41 1.75-1.03l3.86-7.01L19.42 4h-.01l-1.1 2-2.76 5H8.53l-.13-.27L6.16 6l-.95-2-.94-2H1v2h2l3.6 7.59-1.35 2.45c-.16.28-.25.61-.25.96 0 1.1.9 2 2 2h12v-2H7.42c-.13 0-.25-.11-.25-.25z',\n },\n 'events-hub-nav-block': {\n svgPath1: 'M0 0h24v24H0z',\n svgPath2:\n 'M16.53 11.06L15.47 10l-4.88 4.88-2.12-2.12-1.06 1.06L10.59 17l5.94-5.94zM19 3h-1V1h-2v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V8h14v11z',\n },\n 'training-hub-nav-block': {\n svgPath1: 'M0 0h24v24H0z',\n svgPath2:\n 'M11.99 18.54l-7.37-5.73L3 14.07l9 7 9-7-1.63-1.27-7.38 5.74zM12 16l7.36-5.73L21 9l-9-7-9 7 1.63 1.27L12 16z',\n },\n 'media-and-internet-hub-nav-block': {\n svgPath1: 'M0 0h24v24H0z',\n svgPath2:\n 'M8.15384615,2 L5.07692308,2 C3.38461538,2 2,3.38461538 2,5.07692308 L2,8.15384615 C2,9.84615385 3.38461538,11.2307692 5.07692308,11.2307692 L8.15384615,11.2307692 C9.84615385,11.2307692 11.2307692,9.84615385 11.2307692,8.15384615 L11.2307692,5.07692308 C11.2307692,3.38461538 9.84615385,2 8.15384615,2 Z M18.9230769,2 L15.8461538,2 C14.1538462,2 12.7692308,3.38461538 12.7692308,5.07692308 L12.7692308,8.15384615 C12.7692308,9.84615385 14.1538462,11.2307692 15.8461538,11.2307692 L18.9230769,11.2307692 C20.6153846,11.2307692 22,9.84615385 22,8.15384615 L22,5.07692308 C22,3.38461538 20.6153846,2 18.9230769,2 Z M8.15384615,12.7692308 L5.07692308,12.7692308 C3.38461538,12.7692308 2,14.1538462 2,15.8461538 L2,18.9230769 C2,20.6153846 3.38461538,22 5.07692308,22 L8.15384615,22 C9.84615385,22 11.2307692,20.6153846 11.2307692,18.9230769 L11.2307692,15.8461538 C11.2307692,14.1538462 9.84615385,12.7692308 8.15384615,12.7692308 Z M18.9230769,12.7692308 L15.8461538,12.7692308 C14.1538462,12.7692308 12.7692308,14.1538462 12.7692308,15.8461538 L12.7692308,18.9230769 C12.7692308,20.6153846 14.1538462,22 15.8461538,22 L18.9230769,22 C20.6153846,22 22,20.6153846 22,18.9230769 L22,15.8461538 C22,14.1538462 20.6153846,12.7692308 18.9230769,12.7692308 Z',\n },\n 'news-hub-nav-block': {\n svgPath1: 'M0 0h24v24H0z',\n svgPath2:\n 'M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77z',\n },\n 'recognition-hub-nav-block': {\n svgPath1: 'M0 0h24v24H0z',\n svgPath2: 'M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z',\n },\n },\n};\n","/* eslint-disable max-classes-per-file */\nimport { CmsItemModel } from '@common/cms/cms.model';\n\nexport class SetActiveEditItemId {\n static readonly type = '[Cms] SET CURRENT EDIT ITEM ID';\n constructor(public activeEditItemId: string) {}\n}\n\nexport class LoadCmsItem {\n static readonly type = '[Cms] LOAD CMS ITEM';\n constructor(public itemId: string) {}\n}\n\nexport class RemoveCmsItem {\n static readonly type = '[Cms] REMOVE CMS ITEM';\n constructor(public itemId: string) {}\n}\n\nexport class ReloadCmsItem {\n static readonly type = '[Cms] RELOAD CMS ITEM';\n constructor(public itemId: string) {}\n}\n\nexport class MoveCmsItem {\n static readonly type = '[Cms] MOVE CMS ITEM';\n constructor(public relationshipId: string, public direction: string, public rootId: string) {}\n}\n\nexport class CopyParentToLocale {\n static readonly type = '[Cms] COPY PARENT TO LOCALE';\n\n constructor(\n public parentId: string,\n public fromLocale: string,\n public toLocale: string,\n public withChildData: boolean,\n public rootId: string\n ) {}\n}\n\nexport class CopyItemToLocale {\n static readonly type = '[Cms] COPY ITEM TO LOCALE';\n\n constructor(\n public relationshipId: string,\n public fromLocale: string,\n public targetLocale: string,\n public rootId: string\n ) {}\n}\n\nexport class DeleteCmsItem {\n static readonly type = '[Cms] DELETE CMS ITEM';\n constructor(public relationshipId: string, public rootId: string) {}\n}\n\nexport class PublishItem {\n static readonly type = '[Cms] PUBLISH CMS ITEM';\n constructor(public cmsItem: CmsItemModel, public rootId: string) {}\n}\n\nexport class ResetCmsDataEntries {\n static readonly type = '[Cms] RESET CMS STATE';\n}\n\nexport class UpdateCmsCurrentPage {\n static readonly type = '[Cms] UPDATE CURRENT PAGE';\n constructor(public pageId: string, public subPages?: string[]) {}\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable, Inject } from '@angular/core';\nimport { SetUserProfile } from '@common/authentication/state/user-profile.actions';\nimport { CmsRelationship } from '@common/cms/cms.model';\nimport { ReloadCmsItem } from '@common/cms/state/cms.actions';\nimport { ResetCmsDataEntries } from '@common/cms/state/cms.actions';\nimport { Store } from '@ngxs/store';\nimport { WINDOW_TOKEN } from '@usana/ux/common';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CmsEditService {\n constructor(private http: HttpClient, private store: Store, @Inject(WINDOW_TOKEN) readonly window: any) {\n // the edit.jsp page calls window.opener.openerCallback(openerCallbackParam) when it's saved\n this.window.reloadCmsRootItem = (rootId) => {\n this.store.dispatch(new ReloadCmsItem(rootId));\n };\n }\n\n /**\n * Create a new relationship and copy the data of an item from one locale to another\n * @param parentId The parent object whose children to copy\n * @param fromLocale The locale to copy the data and relationships from\n * @param toLocale The locale to copy the parent to\n * @param withChildData whether or not to update any existing stored data with the from data\n */\n copyParentToLocale(parentId, fromLocale, toLocale, withChildData): Observable {\n const headers = new HttpHeaders().set('Content-Type', 'text/plain; charset=utf-8');\n return this.http.get(\n `/mvc/cm/Manager/CopyParentToLocale/${parentId}?fromLocale=${fromLocale}&toLocale=${toLocale}&withChildData=${withChildData}`,\n\n { headers: headers, responseType: 'text' }\n );\n }\n\n /**\n * Create a new relationship and copy the data of an item from one locale to another\n * @param relId the relationship id\n * @param fromLocale The locale to copy data from, this is optional\n * @param targetLocale The locale of the parent\n */\n copyItemToLocale(relId, fromLocale, targetLocale): Observable {\n return this.http.get(`/mvc/cm/Manager/CopyToLocale/${relId}?locale=${targetLocale}&fromLocale=${fromLocale}`);\n }\n\n editChild(relId, openerCallback, openerCallbackParam) {\n this.cmPopup(\n `/mvc/cm/Manager/Edit/ItemRel/${relId}?site=${this.getSite()}${this.getOpenerCallback(\n openerCallback,\n openerCallbackParam,\n '&'\n )}`\n );\n }\n\n /**\n * Open the edit for some item in the given locale\n * @param itemId\n * @param locale\n * @param openerCallback a callback to be executed when the popup window is closed\n * @param openerCallbackParam The first (and only) parameter that will be passed to the opener callback\n */\n editItem(itemId, locale, openerCallback, openerCallbackParam) {\n this.cmPopup(\n `/mvc/cm/Manager/Edit/Item?itemId=${encodeURIComponent(\n itemId\n )}&locale=${locale}&site=${this.getSite()}${this.getOpenerCallback(openerCallback, openerCallbackParam, '&')}`\n );\n }\n\n /**\n * Popup a window that is 75% as big as it's parent and has limited decorations\n * @param url the url to open\n */\n cmPopup(url) {\n this.window.open(\n url,\n '_blank',\n 'height=' +\n this.window.innerHeight * 0.75 +\n ',width=' +\n this.window.innerWidth * 0.75 +\n ',scrollbars=1,left=20,top=20,resizable=yes,toolbar=no,menubar=no,directories=no,status=1'\n );\n }\n\n /**\n * Figure out what the current site is\n * @returns the site of the current window\n */\n getSite() {\n return this.getSiteFromPath(this.window.location.pathname);\n }\n\n getSiteFromPath(path) {\n return path === '/' ? 'dotCom' : path.split('/')[1];\n }\n\n /**\n * Figure out what our main context is on the site\n * @returns the main context of the opener\n */\n getSiteFromOpener() {\n return this.getSiteFromPath(this.window.opener.location.pathname);\n }\n\n /**\n * This function escapes any funky characters in item ids so that it will actually find the nodes\n * @param string The id to escape\n * @returns The escaped id\n */\n escapeSpecialSelectorChars(string) {\n // escape special characters in the id's so that we can always guarantee we get the right id\n return string.replace(/([ !\"#$%&'()*+,\\.\\/:;<=>?@[\\]^`{|}~])/g, '\\\\$1');\n }\n\n addToContainer(itemId, locale, column, openerCallback, openerCallbackParam) {\n this.cmPopup(\n `/mvc/cm/Manager/Add?parentId=${itemId}&locale=${locale}&column=${column}&site=${this.getSite()}${this.getOpenerCallback(\n openerCallback,\n openerCallbackParam,\n '&'\n )}`\n );\n }\n\n getOpenerCallback(openerCallback, openerCallbackParam, appendCharacter) {\n let callBackParams = !!openerCallback ? appendCharacter + 'openerCallback=' + openerCallback : '';\n callBackParams += !!openerCallbackParam ? '&openerCallbackParam=' + openerCallbackParam : '';\n return callBackParams;\n }\n\n /**\n * Remove a given relationship. This does not delete the item itself, just the relationship.\n * @param relationshipId The relationship id to publish\n */\n removeCm(relationshipId): Observable {\n return this.http.get(`/mvc/cm/Manager/Remove/${relationshipId}`);\n }\n\n /**\n * This is a simple wrapper for window.function.reload(true) to be used for callbacks and such\n */\n reloadLocation() {\n this.window.location.reload();\n }\n\n /**\n * This function will toggle page edit mode in the cms\n */\n togglePageEdit() {\n this.http\n .get('/mvc/cm/Manager/TogglePageEdit', this.getHeaders())\n .pipe(\n map(\n (response: any) => {\n this.store.dispatch(new ResetCmsDataEntries());\n this.store.dispatch(new SetUserProfile(response));\n },\n (error) => {\n console.log('The request failed: ', error);\n }\n )\n )\n .subscribe();\n }\n\n publishItem(cmItem): Observable {\n return this.http.post('/mvc/cm/Manager/Publish', cmItem.relationship).pipe(\n map(\n (response: CmsRelationship) => response,\n (error) => {\n console.log('There was an error publishing the cmItem', cmItem);\n console.log('The response was', error);\n throw new Error('There was an error publishing the item');\n }\n )\n );\n }\n\n /**\n * This method will move a cms item up one position\n * @param relationshipId the id of the cmsItem to update.\n * @param direction this must be one of CmsService.DIRECTIONS\n */\n moveCmsItem(relationshipId, direction) {\n return this.http.post('/mvc/cm/Manager/move/' + direction + '/' + relationshipId, {});\n }\n\n getHeaders() {\n return {\n headers: {\n 'Content-Type': 'application/json',\n 'Cache-Control': 'no-cache',\n Pragma: 'no-cache',\n },\n };\n }\n}\n","import { CmsItemEntry, CmsStateModel } from '@common/cms/state/cms.state.model';\nimport { StateOperator } from '@ngxs/store';\nimport cloneDeep from 'lodash/cloneDeep';\n\nexport const initializeCmsItemLoad =\n (collection: keyof CmsStateModel, cmsItemName: string): StateOperator =>\n (state: CmsStateModel) => {\n const entry: CmsItemEntry = {\n isLoading: true,\n error: false,\n data: null,\n };\n\n return modifyDataEntry(state, collection, cmsItemName, entry);\n };\n\n/**\n * used for a cms response to build out the cms item tree and add all of them to the state\n * @param cmsItemName the top level rootId\n * @param data the response data for that root Item.\n */\nexport const setCmsItemDataToState =\n (cmsItemName: string, data: any): StateOperator =>\n (state: CmsStateModel) => {\n const cmsIds = [];\n const entries = {};\n\n // let's flat map the cms item.\n const flatMapCms = {};\n flatMapCmsChildren(data, flatMapCms);\n for (const cmsItemId of Object.keys(flatMapCms)) {\n entries[cmsItemId] = {\n isLoading: false,\n error: false,\n data: flatMapCms[cmsItemId],\n };\n cmsIds.push(cmsItemId);\n }\n\n return {\n ...state,\n cmsDataEntries: {\n ...state.cmsDataEntries,\n ...entries,\n },\n updatedCmsIds: cmsIds,\n };\n };\n\nexport const setCmsItemEntryToState =\n (itemId: string, cmsItemEntry: CmsItemEntry): StateOperator =>\n (state: CmsStateModel) => ({\n ...state,\n cmsDataEntries: {\n ...state.cmsDataEntries,\n [itemId]: cmsItemEntry,\n },\n });\n\nexport const handleCmsItemLoadError =\n (collection: keyof CmsStateModel, cmsItemName: string) => (state: CmsStateModel) => {\n const entry: CmsItemEntry = {\n isLoading: false,\n error: true,\n data: null,\n };\n\n return modifyDataEntry(state, collection, cmsItemName, entry);\n };\n\nexport const getCmsItemIdsFromFlatMap = (state: CmsStateModel, itemId: string): string[] => {\n const cmsEntry = state.cmsDataEntries[itemId];\n if (!cmsEntry) {\n return [];\n }\n const { childIds } = cmsEntry.data;\n\n return (\n !childIds\n ? []\n : childIds.map((childId) => getCmsItemIdsFromFlatMap(state, childId)).reduce((pre, cur) => pre.concat(cur))\n ).concat(itemId);\n};\n\nexport const buildCmsItemFromFlatMap = (entries: { [key: string]: CmsItemEntry }, itemId: string): CmsItemEntry => {\n const cmsEntry = entries[itemId];\n if (!cmsEntry) {\n // if we don't have an entry return undefined so the cms loads it.\n return undefined;\n }\n if (!cmsEntry.data) {\n // if our data hasn't loaded just return the construct since we don't have anything to mess with\n return cmsEntry;\n }\n const { isLoading, error } = cmsEntry;\n\n const data = convertChildIdsToChildren(entries, itemId);\n\n return {\n isLoading,\n error,\n data,\n };\n};\n\n// eslint-disable-next-line prefer-arrow/prefer-arrow-functions\nexport function convertChildIdsToChildren(entries: { [key: string]: CmsItemEntry }, itemId: string) {\n const cmsEntry = entries[itemId];\n if (!cmsEntry || !cmsEntry.data) {\n return undefined;\n }\n if (!cmsEntry.data.childIds) {\n // if we have no childIds just return the data\n return cmsEntry.data;\n }\n\n try {\n const { childIds, ...restOfData } = cmsEntry.data;\n\n return {\n ...restOfData,\n children: !childIds\n ? null\n : childIds.map((childId) => convertChildIdsToChildren(entries, childId)).filter((c) => !!c),\n };\n } catch (er) {\n console.error(er);\n return undefined;\n }\n}\n\n// eslint-disable-next-line prefer-arrow/prefer-arrow-functions\nfunction modifyDataEntry(\n state: CmsStateModel,\n collection: keyof CmsStateModel,\n cmsItemName: string,\n dataEntry: CmsItemEntry\n) {\n const stateCopy: CmsStateModel = cloneDeep(state);\n const entries = stateCopy.cmsDataEntries;\n entries[cmsItemName] = dataEntry;\n stateCopy.cmsDataEntries = entries as any;\n return stateCopy;\n}\n\n// this function exists to help us take a cms tree\n// and flat map it, that is rather than having\n// 1 entry in the state with all the data and children\n// we have 1 + N entries, where N is the number of children\n// this makes it so that when child cms Items try to load their data\n// there is an entry in the cms for them so rather\n// eslint-disable-next-line prefer-arrow/prefer-arrow-functions\nfunction flatMapCmsChildren(data: any, cmsFlatMap: { [itemId: string]: any }) {\n // base case no children\n if (!data.children || data.children.length === 0) {\n cmsFlatMap[data.item.id] = data;\n } else {\n for (const child of data.children) {\n flatMapCmsChildren(child, cmsFlatMap);\n }\n cmsFlatMap[data.item.id] = {\n ...data,\n children: [],\n childIds: data.children.map((c) => c.item.id),\n };\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CmsService {\n constructor(private http: HttpClient) {}\n\n getCmsItem(itemId): Observable {\n return this.http.get('/mvc/cm/GetTree?rootId=' + itemId, this.getHeaders());\n }\n\n getHeaders() {\n return {\n headers: {\n 'Content-Type': 'application/json',\n 'Cache-Control': 'no-cache',\n Pragma: 'no-cache',\n },\n };\n }\n}\n","
\n

{{ modalOptions.title | translate }}

\n \n
\n\n
\n

\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
{{ modalOptions.inputFieldError | translate }}
\n
\n
\n
\n \n \n
\n
\n
\n","import { Component, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { ConfirmationModalOptions } from '@shared/confirmation-modal/confirmation-modal/confirmation-modal.model';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { BehaviorSubject } from 'rxjs';\n\n@Component({\n selector: 'u-confirmation-modal',\n templateUrl: './confirmation-modal.component.html',\n styleUrls: ['./confirmation-modal.component.scss'],\n})\nexport class ConfirmationModalComponent implements OnInit {\n public onClose: BehaviorSubject = new BehaviorSubject(false);\n modalOptions: ConfirmationModalOptions;\n confirmInputForm: FormGroup;\n\n constructor(public bsModalRef: BsModalRef, private formBuilder: FormBuilder) {}\n\n ngOnInit() {\n this.confirmInputForm = this.formBuilder.group({\n inputField: ['', { validators: Validators.required }],\n });\n this.confirmInputForm.patchValue({ inputField: this.modalOptions?.inputData }, { emitEvent: false });\n }\n\n confirm(): void {\n this.onClose.next(true);\n this.bsModalRef.hide();\n }\n\n cancel(): void {\n this.onClose.next(false);\n this.bsModalRef.hide();\n }\n\n get inputField() {\n return this.confirmInputForm.get('inputField');\n }\n\n confirmInputSubmit(): void {\n this.onClose.next(this.inputField.value);\n this.bsModalRef.hide();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CmsConstants } from '@common/cms/cms.constants';\nimport { CmsEditService } from '@common/cms/services/cms-edit.service';\nimport { CmsService } from '@common/cms/services/cms.service';\nimport {\n CopyItemToLocale,\n CopyParentToLocale,\n DeleteCmsItem,\n LoadCmsItem,\n MoveCmsItem,\n PublishItem,\n ReloadCmsItem,\n RemoveCmsItem,\n ResetCmsDataEntries,\n SetActiveEditItemId,\n UpdateCmsCurrentPage,\n} from '@common/cms/state/cms.actions';\nimport {\n getCmsItemIdsFromFlatMap,\n setCmsItemDataToState,\n setCmsItemEntryToState,\n} from '@common/cms/state/cms.operators';\nimport { CmsItemEntry, CmsStateModel } from '@common/cms/state/cms.state.model';\nimport { Action, State, StateContext, Store } from '@ngxs/store';\nimport { ConfirmationModalComponent } from '@shared/confirmation-modal/confirmation-modal/confirmation-modal.component';\nimport { DecrementLoading, IncrementLoading } from '@usanaHub/app/state/app.actions';\nimport cloneDeep from 'lodash/cloneDeep';\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';\nimport { of } from 'rxjs';\nimport { catchError, map, concatMap } from 'rxjs/operators';\n\n@State({\n name: 'cms',\n defaults: {\n activeEditItemId: '',\n cmsDataEntries: {},\n updatedCmsIds: [],\n currentPage: {\n pageId: undefined,\n subPages: [],\n },\n },\n})\n@Injectable()\nexport class CmsState {\n modalRef: BsModalRef;\n\n constructor(\n private cmsService: CmsService,\n private store: Store,\n private cmsEditService: CmsEditService,\n private modalService: BsModalService\n ) {}\n\n @Action(SetActiveEditItemId)\n setActiveEditItemId({ patchState }: StateContext, action: SetActiveEditItemId) {\n return patchState({ activeEditItemId: action.activeEditItemId });\n }\n\n @Action(LoadCmsItem)\n loadCmsItem(ctx: StateContext, action: LoadCmsItem) {\n const state = ctx.getState();\n\n if (!state.cmsDataEntries[action.itemId]) {\n ctx.setState(\n setCmsItemEntryToState(action.itemId, {\n isLoading: true,\n error: false,\n data: null,\n })\n );\n return this.cmsService.getCmsItem(action.itemId).pipe(\n map((cmsItem: { [key: string]: any[] }) => {\n const cmsState = setCmsItemDataToState(action.itemId, cmsItem)(ctx.getState());\n ctx.patchState({ cmsDataEntries: cmsState.cmsDataEntries, updatedCmsIds: cmsState.updatedCmsIds });\n }),\n catchError(() =>\n of(\n ctx.setState(\n setCmsItemEntryToState(action.itemId, {\n isLoading: false,\n error: true,\n data: null,\n })\n )\n )\n )\n );\n } else {\n return ctx.patchState({ updatedCmsIds: [action.itemId] });\n }\n }\n\n @Action(RemoveCmsItem)\n removeCmsItem(ctx: StateContext, action: RemoveCmsItem) {\n const state = ctx.getState();\n const newState = {\n cmsDataEntries: cloneDeep(state.cmsDataEntries),\n };\n\n for (const key of Object.keys(newState.cmsDataEntries)) {\n newState.cmsDataEntries[key] = { ...newState.cmsDataEntries[key] };\n }\n getCmsItemIdsFromFlatMap(state, action.itemId).forEach((itemId) => {\n delete newState.cmsDataEntries[itemId];\n });\n ctx.patchState({ cmsDataEntries: newState.cmsDataEntries });\n }\n\n @Action(ReloadCmsItem)\n reloadCmsItem(ctx: StateContext, action: ReloadCmsItem) {\n // usage of concat map ensures that each dispatch is called in sequence after the previous completes\n return this.store.dispatch(new IncrementLoading()).pipe(\n concatMap(() => this.store.dispatch(new RemoveCmsItem(action.itemId))),\n concatMap(() => this.store.dispatch(new LoadCmsItem(action.itemId))),\n concatMap(() => this.store.dispatch(new DecrementLoading()))\n );\n }\n\n @Action(ResetCmsDataEntries)\n resetCmsDataEntries(ctx: StateContext) {\n const state = ctx.getState();\n const newCmsDataEntries: { [key: string]: CmsItemEntry } = {};\n // todo when we upgrade cmsItem see if there is a way to make this simpler\n // if it removes the race condition of ctx.patchState({ cmsDataEntries: {} });\n const cmsKeys = Object.keys(state.cmsDataEntries);\n for (const key of cmsKeys) {\n // there are a few options here:\n // a) cms item entry parent is null, this means its a root cms item we want to REMOVE it so it gets cleanly reloaded\n // b) cms item entry is loading, lets REMOVE it and just have it get reloaded as needed\n // c) cms item entry has a parent, lets KEEP it but change its data to be null and mark it as loading so it doesn't reload (parent handles)\n const item = state.cmsDataEntries[key];\n\n if (!item.isLoading && item.data && item.data.parent != null) {\n newCmsDataEntries[key] = {\n isLoading: true,\n error: false,\n data: null,\n };\n }\n }\n\n ctx.patchState({ cmsDataEntries: newCmsDataEntries, updatedCmsIds: cmsKeys });\n }\n\n @Action(MoveCmsItem)\n moveCmsItem(ctx: StateContext, action: MoveCmsItem) {\n let validDirection = false;\n const dirs = Object.keys(CmsConstants.DIRECTIONS);\n for (const dir in dirs) {\n if (action.direction === CmsConstants.DIRECTIONS[dirs[dir]]) {\n validDirection = true;\n }\n }\n\n if (!validDirection) {\n throw new Error('Direction must be one of CmsService.DIRECTIONS');\n }\n return this.cmsEditService.moveCmsItem(action.relationshipId, action.direction).pipe(\n map(() => {\n this.store.dispatch(new ReloadCmsItem(action.rootId));\n })\n );\n }\n\n @Action(CopyParentToLocale)\n copyParentToLocale(ctx: StateContext, action: CopyParentToLocale) {\n this.openConfirmationModal('hub.cms.copyParentToLocale', 'hub.cms.copyParentToLocaleMessage');\n return this.modalRef.content.onClose.subscribe((result) => {\n if (result) {\n return this.cmsEditService\n .copyParentToLocale(action.parentId, action.fromLocale, action.toLocale, action.withChildData)\n .subscribe(() => {\n this.store.dispatch(new ReloadCmsItem(action.rootId));\n });\n }\n });\n }\n\n @Action(CopyItemToLocale)\n copyItemToLocale(ctx: StateContext, action: CopyItemToLocale) {\n this.openConfirmationModal('hub.cms.copyItemToLocale', 'hub.cms.copyItemToLocaleMessage');\n return this.modalRef.content.onClose.subscribe((result) => {\n if (result) {\n return this.cmsEditService\n .copyItemToLocale(action.relationshipId, action.fromLocale, action.targetLocale)\n .subscribe(() => {\n this.store.dispatch(new ReloadCmsItem(action.rootId));\n });\n }\n });\n }\n\n @Action(DeleteCmsItem)\n deleteCmsItem(ctx: StateContext, action: DeleteCmsItem) {\n this.openConfirmationModal('hub.cms.deleteItem', 'hub.cms.deleteItemMessage');\n return this.modalRef.content.onClose.subscribe((result) => {\n if (result) {\n return this.cmsEditService.removeCm(action.relationshipId).subscribe(() => {\n this.store.dispatch(new ReloadCmsItem(action.rootId));\n });\n }\n });\n }\n\n @Action(PublishItem)\n publishCmsItem(ctx: StateContext, action: PublishItem) {\n return this.cmsEditService.publishItem(action.cmsItem).subscribe(() => {\n this.store.dispatch(new ReloadCmsItem(action.rootId));\n });\n }\n\n @Action(UpdateCmsCurrentPage)\n updateCmsCurrentPage({ patchState }: StateContext, action: UpdateCmsCurrentPage) {\n return patchState({\n currentPage: {\n pageId: action.pageId,\n subPages: action.subPages || [],\n },\n });\n }\n\n openConfirmationModal(title: string, message: string): void {\n const initialState = {\n modalOptions: {\n title: title,\n message: message,\n confirmButton: 'hub.cms.confirmButton',\n cancelButton: 'hub.cms.cancelButton',\n },\n };\n this.modalRef = this.modalService.show(ConfirmationModalComponent, {\n class: 'modal-dialog-centered',\n animated: false,\n initialState: initialState,\n });\n }\n}\n","import { UserProfile } from '@common/authentication/model/user-profile';\nimport { UserProfileState } from '@common/authentication/state/user-profile.state';\nimport { buildCmsItemFromFlatMap } from '@common/cms/state/cms.operators';\nimport { CmsState } from '@common/cms/state/cms.state';\nimport { CmsCurrentPage, CmsItemEntry, CmsStateModel } from '@common/cms/state/cms.state.model';\nimport { Selector } from '@ngxs/store';\n\nexport class CmsSelectors {\n @Selector([UserProfileState])\n static getPageEdit(state: UserProfile): boolean {\n return state.pageEdit;\n }\n\n @Selector([CmsState, CmsSelectors.getPageEdit])\n static getActiveEditItemId(state: CmsStateModel, pageEdit: boolean): string {\n return pageEdit ? state.activeEditItemId : '';\n }\n\n @Selector([CmsState])\n static getCmsDataEntries(state: CmsStateModel) {\n return state.cmsDataEntries;\n }\n\n @Selector([CmsState])\n static getUpdatedCmsIds(state: CmsStateModel) {\n return state.updatedCmsIds;\n }\n\n @Selector([CmsSelectors.getUpdatedCmsIds])\n static cmsItemIsUpdatedFn(updatedCmsIds: string[]): (itemId: string) => boolean {\n return (itemId: string) => updatedCmsIds.includes(itemId);\n }\n\n @Selector([CmsSelectors.getCmsDataEntries])\n static getCmsItemByIdFn(entries: { [key: string]: CmsItemEntry }): (itemId: string) => CmsItemEntry {\n return (itemId: string) => buildCmsItemFromFlatMap(entries, itemId);\n }\n\n @Selector([CmsState])\n static getCmsCurrentPage(state: CmsStateModel): CmsCurrentPage {\n return state.currentPage;\n }\n}\n","\n \n
{{ cmsItemObj.item.name }}
\n
\n
\n {{ cmsItemObj.item.name }} \n
\n {{ cmsItemObj.localeName }}
\n {{ cmsItemObj.type.name }}
\n {{ cmsItemObj.relationship.startDate | date : 'dd-MMM-yyyy HH:mm' }}\n
\n {{ cmsItemObj.relationship.endDate | date : 'dd-MMM-yyyy HH:mm' }}\n Successfully Published!\n Failed to publish item!\n
\n\n
\n \n \n \n \n \n\n \n 0\"\n (click)=\"moveThis(CMS_DIRECTIONS.TOP)\"\n >
\n 0\"\n (click)=\"moveThis(CMS_DIRECTIONS.UP)\"\n >
\n 0\"\n (click)=\"moveThis(CMS_DIRECTIONS.LEFT)\"\n >\n \n \n \n \n \n\n \n \n \n\n \n \n \n\n","import { Component, Input, OnInit, OnDestroy } from '@angular/core';\nimport { UserProfile } from '@common/authentication/model/user-profile';\nimport { UserProfileSelectors } from '@common/authentication/state/user-profile.selectors';\nimport { CmsConstants } from '@common/cms/cms.constants';\nimport { CmsItemModel } from '@common/cms/cms.model';\nimport { CmsEditService } from '@common/cms/services/cms-edit.service';\nimport {\n CopyItemToLocale,\n CopyParentToLocale,\n DeleteCmsItem,\n MoveCmsItem,\n PublishItem,\n} from '@common/cms/state/cms.actions';\nimport { CmsSelectors } from '@common/cms/state/cms.selectors';\nimport { Select, Store } from '@ngxs/store';\nimport { Observable, Subscription } from 'rxjs';\n\n@Component({\n selector: 'u-cms-child-edit-menu',\n templateUrl: './cms-child-edit-menu.component.html',\n styleUrls: ['./cms-child-edit-menu.component.scss'],\n})\nexport class CmsChildEditMenuComponent implements OnInit, OnDestroy {\n @Select(CmsSelectors.getActiveEditItemId) activeEditItemId$: Observable;\n\n @Input() cmsItemObj: CmsItemModel;\n @Input() rootId: string;\n\n readonly CMS_DIRECTIONS = CmsConstants.DIRECTIONS;\n readonly CMS_PUBLISH_STATUSES = CmsConstants.PUBLISH_STATUS;\n\n publishStatus: number;\n requestAttrs: UserProfile;\n\n private storeSubs: Subscription;\n\n constructor(private cmsEditService: CmsEditService, private store: Store) {\n this.storeSubs = store.select(UserProfileSelectors.getUserProfile).subscribe((userProfile) => {\n this.requestAttrs = userProfile;\n });\n }\n\n ngOnInit(): void {\n this.publishStatus =\n !!this.cmsItemObj.relationship && !!this.cmsItemObj.relationship.publishedBy\n ? CmsConstants.PUBLISH_STATUS.PUBLISHED\n : CmsConstants.PUBLISH_STATUS.NONE;\n }\n\n moveThis(direction: string): void {\n this.store.dispatch(new MoveCmsItem(this.cmsItemObj.relationship.id.toString(), direction, this.rootId));\n }\n\n edit(): void {\n this.cmsEditService.editChild(this.cmsItemObj.relationship.id, 'reloadCmsRootItem', this.rootId);\n }\n\n deleteItem(): void {\n this.store.dispatch(new DeleteCmsItem(this.cmsItemObj.relationship.id.toString(), this.rootId));\n }\n\n copyableToLocale(): boolean {\n return !!this.cmsItemObj.relationship && this.requestAttrs && this.requestAttrs.locale !== this.cmsItemObj.locale;\n }\n\n parentCopyableToLocale(): boolean {\n // todo I'm not 100% sure why we check locale differing on the child, but locale matching on the parent\n return (\n !!this.cmsItemObj.relationship &&\n this.requestAttrs &&\n (this.requestAttrs.locale === this.cmsItemObj.relationship.locale ||\n this.cmsItemObj.relationship.locale !== this.cmsItemObj.locale)\n );\n }\n\n copyToLocale(): void {\n if (this.cmsItemObj.type.container) {\n this.store.dispatch(\n new CopyParentToLocale(\n this.cmsItemObj.item.id,\n this.cmsItemObj.locale,\n this.requestAttrs.locale,\n false,\n this.rootId\n )\n );\n } else {\n this.store.dispatch(\n new CopyItemToLocale(\n this.cmsItemObj.relationship.id.toString(),\n this.cmsItemObj.locale,\n this.requestAttrs.locale,\n this.rootId\n )\n );\n }\n }\n\n publish(): void {\n this.store.dispatch(new PublishItem(this.cmsItemObj, this.rootId)).subscribe(\n () => {\n this.publishStatus = CmsConstants.PUBLISH_STATUS.SUCCESS_PUBLISHING;\n },\n () => {\n this.publishStatus = CmsConstants.PUBLISH_STATUS.ERROR_PUBLISHING;\n }\n );\n }\n\n isPublished(): boolean {\n return this.cmsItemObj.relationship && !!this.cmsItemObj.relationship.publishedBy;\n }\n\n ngOnDestroy(): void {\n if (this.storeSubs) {\n this.storeSubs.unsubscribe();\n delete this.storeSubs;\n }\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class CmsLinkService {\n private readonly linkUrlRegex = new RegExp('^(?:[a-z]+:)?//', 'i');\n\n getTargetFromLinkData(cmsItem, linkCmsItem) {\n let linkData;\n\n try {\n // we don't care about the error sometimes this isn't json, and that is fine\n linkData = JSON.parse(cmsItem.data.linkData.data);\n } catch (e) {}\n if (linkData && linkData.target) {\n return linkData.target;\n } else if (linkCmsItem.linkUrl && linkCmsItem.linkUrl.match(this.linkUrlRegex)) {\n // if we start with a scheme (http://, https://, file://, etc) then we open in a new window\n return '_blank';\n }\n return '_self';\n }\n}\n","\n \n \n \n\n\n\n
\n \n
\n
\n\n\n \n\n","import { Component, Input, OnChanges } from '@angular/core';\nimport { AnalyticsSystem } from '@common/analytics/model/analytics.model';\nimport { AnalyticsService } from '@common/analytics/service/analytics.service';\nimport { CmsItemModel } from '@common/cms/cms.model';\nimport { CmsLinkService } from '@common/cms/services/cms-link.service';\n\n@Component({\n selector: 'u-cms-link',\n templateUrl: './cms-link.component.html',\n})\nexport class CmsLinkComponent implements OnChanges {\n @Input() cmsItemObj: CmsItemModel;\n\n @Input() cmsLinkClass = '';\n @Input() navClickEvent: string;\n\n linkTarget: string;\n\n constructor(private readonly cmsLinkService: CmsLinkService, private readonly analyticsService: AnalyticsService) {}\n\n // this is onChanges now rather than onInit because of how placeholder data works\n // we need to recalculate the link when the data is no longer placeholder data\n ngOnChanges(): void {\n this.calculateLink();\n }\n\n onNavClickEvent() {\n if (this.navClickEvent) {\n this.analyticsService.sendEvent(AnalyticsSystem.GTM_FS, this.navClickEvent, {\n navUrl: this.cmsItemObj.linkUrl.split('?')[0],\n });\n }\n }\n\n private calculateLink(): void {\n this.linkTarget = this.cmsLinkService.getTargetFromLinkData(this.cmsItemObj, this.cmsItemObj);\n }\n}\n","
\n \n \n {{ buttonText }}\n \n
\n","import { Component, Input, OnInit } from '@angular/core';\nimport { UserProfile } from '@common/authentication/model/user-profile';\nimport { UserProfileSelectors } from '@common/authentication/state/user-profile.selectors';\nimport { CmsEditService } from '@common/cms/services/cms-edit.service';\nimport { CmsSelectors } from '@common/cms/state/cms.selectors';\nimport { Select, Store } from '@ngxs/store';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'u-cms-add-button',\n templateUrl: './cms-add-button.component.html',\n styleUrls: ['./cms-add-button.component.scss'],\n})\nexport class CmsAddButtonComponent implements OnInit {\n @Select(UserProfileSelectors.getUserProfile) userProfile$: Observable;\n @Select(CmsSelectors.getActiveEditItemId) activeEditItemId$: Observable;\n\n @Input() buttonText;\n @Input() hideLabel;\n @Input() cmsItemObj;\n @Input() column;\n @Input() rootId;\n targetColumn = 0;\n\n constructor(private cmsEditService: CmsEditService, private store: Store) {}\n\n ngOnInit(): void {\n this.setButtonText();\n this.setColumn();\n }\n\n setButtonText() {\n this.buttonText =\n (this.buttonText ? 'Add ' + this.buttonText : 'Add') +\n (this.hideLabel ? '' : ' to: ' + this.cmsItemObj.item.name);\n }\n\n setColumn() {\n if (this.column) {\n this.targetColumn = this.column;\n }\n }\n\n showAddButton(cmsItem, event) {\n event.stopPropagation();\n\n const targetLocale = !!cmsItem.relationship\n ? cmsItem.locale\n : this.store.selectSnapshot(UserProfileSelectors.getLocale);\n\n this.cmsEditService.addToContainer(\n cmsItem.item.id,\n targetLocale,\n this.targetColumn,\n 'reloadCmsRootItem',\n this.rootId\n );\n }\n}\n","\n Item Name: {{ cmsItemObj.item.name }}\n
\n Item Locale: {{ cmsItemObj.localeName }}
\n Type: {{ cmsItemObj.type.name }}
\n \n \n \n\n
\n There are no published child containers that match this locale. Nothing will show in this container until either:\n
    \n
  • New content is created and published for this locale.
  • \n
  • The content from the default locale is published for this locale.
  • \n
  • The content from the default locale is copied over.
  • \n
\n
\n\n
\n
\n \n \n \n \n \n
\n \n \n \n \n \n
\n \n \n\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { UserProfile } from '@common/authentication/model/user-profile';\nimport { UserProfileSelectors } from '@common/authentication/state/user-profile.selectors';\nimport { CmsItemModel } from '@common/cms/cms.model';\nimport { CmsEditService } from '@common/cms/services/cms-edit.service';\nimport { CopyParentToLocale, SetActiveEditItemId } from '@common/cms/state/cms.actions';\nimport { CmsSelectors } from '@common/cms/state/cms.selectors';\nimport { Select, Store } from '@ngxs/store';\nimport { Observable, Subscription } from 'rxjs';\n\n@Component({\n selector: 'u-container-edit-menu',\n templateUrl: './container-edit-menu.component.html',\n styleUrls: ['./container-edit-menu.component.scss'],\n})\nexport class ContainerEditMenuComponent implements OnInit, OnDestroy {\n @Select(UserProfileSelectors.getUserProfile) userProfile$: Observable;\n @Select(CmsSelectors.getActiveEditItemId) activeEditItemId$: Observable;\n @Input() rootId;\n @Input() cmsItemObj: CmsItemModel;\n\n storeSubs = new Subscription();\n activeEditItemId: string;\n userProfile: UserProfile;\n\n constructor(private store: Store, private cmsEditService: CmsEditService) {}\n\n ngOnInit(): void {\n this.storeSubs.add(\n this.activeEditItemId$.subscribe((activeEditItemId) => (this.activeEditItemId = activeEditItemId))\n );\n this.storeSubs.add(this.userProfile$.subscribe((userProfile) => (this.userProfile = userProfile)));\n }\n\n copyableToLocale(): boolean {\n return this.userProfile.locale !== this.cmsItemObj.locale;\n }\n\n parentCopyableToLocale(): boolean {\n if (this.cmsItemObj.relationship) {\n const parentNotCopyable = this.userProfile.locale === this.cmsItemObj.relationship.locale;\n return this.cmsItemObj.relationship.locale !== this.cmsItemObj.locale || parentNotCopyable;\n } else {\n return true;\n }\n }\n\n hasPublishedChildren(): boolean {\n return this.cmsItemObj.children?.some((child) => child.relationship?.publishedBy);\n }\n\n editContainer(event): void {\n event.stopPropagation();\n if (this.cmsItemObj.relationship) {\n this.cmsEditService.editChild(this.cmsItemObj.relationship.id, 'reloadCmsRootItem', this.rootId);\n } else {\n this.cmsEditService.editItem(this.cmsItemObj.item.id, this.userProfile.locale, 'reloadCmsRootItem', this.rootId);\n }\n }\n\n toggleEdit(event): void {\n event.stopPropagation();\n const editItem = this.activeEditItemId !== this.cmsItemObj.item.id ? this.cmsItemObj.item.id : '';\n this.store.dispatch(new SetActiveEditItemId(editItem));\n }\n\n copyToLocale(cmsItem, event): void {\n event.stopPropagation();\n this.store.dispatch(\n new CopyParentToLocale(cmsItem.item.id, cmsItem.locale, this.userProfile.locale, false, this.rootId)\n );\n }\n\n copyChildrenToLocale(cmsItem, event): void {\n event.stopPropagation();\n this.store.dispatch(\n new CopyParentToLocale(cmsItem.item.id, cmsItem.children[0].locale, cmsItem.locale, true, this.rootId)\n );\n }\n\n ngOnDestroy(): void {\n if (this.storeSubs) {\n this.storeSubs.unsubscribe();\n }\n }\n}\n","import { Directive, Input, OnDestroy, OnInit } from '@angular/core';\nimport { UserProfile } from '@common/authentication/model/user-profile';\nimport { UserProfileSelectors } from '@common/authentication/state/user-profile.selectors';\nimport { CmsItemModel } from '@common/cms/cms.model';\nimport { Store } from '@ngxs/store';\nimport { Subscription } from 'rxjs';\n\n@Directive()\nexport class CmsBaseDirective implements OnInit, OnDestroy {\n @Input() cmsItemObj: CmsItemModel;\n @Input() navClickEvent: string;\n\n requestAttrs: UserProfile;\n\n protected storeSubs: Subscription;\n\n constructor(protected readonly store: Store) {}\n\n ngOnInit(): void {\n // we have to do it this way rather than a selector because of the interpolate pipe\n this.addSubscription(\n this.store.select(UserProfileSelectors.getUserProfile).subscribe((userProfile: UserProfile) => {\n this.requestAttrs = userProfile;\n })\n );\n }\n\n ngOnDestroy(): void {\n if (this.storeSubs) {\n this.storeSubs.unsubscribe();\n }\n }\n\n hasDataForAttribute(attr: string): boolean {\n return !!this.cmsItemObj.data[attr] && !!this.cmsItemObj.data[attr].data;\n }\n\n getDataForAttribute(attr: string): string {\n if (this.hasDataForAttribute(attr)) {\n return this.cmsItemObj.data[attr].data;\n }\n }\n\n addSubscription(sub: Subscription) {\n if (!this.storeSubs) {\n this.storeSubs = sub;\n } else {\n this.storeSubs.add(sub);\n }\n }\n\n trackByIndexAndItemId(index, item) {\n return `${index}_${item.item.id}`;\n }\n}\n","import { Directive, Inject, Input, OnDestroy, OnInit } from '@angular/core';\nimport { CmsBaseDirective } from '@common/cms/cms-base.directive';\nimport { SLIDE_INTERVAL } from '@common/cms/state/cms.constants';\nimport { CmsSelectors } from '@common/cms/state/cms.selectors';\nimport { Store } from '@ngxs/store';\nimport { WINDOW_TOKEN } from '@usana/ux/common';\n\n@Directive()\nexport class CmsBaseIntervalContainerDirective extends CmsBaseDirective implements OnInit, OnDestroy {\n @Input() rootId: string;\n activeEditItemId: string;\n slideIdx: number;\n\n protected slideInterval;\n\n constructor(protected readonly store: Store, @Inject(WINDOW_TOKEN) protected readonly window: any) {\n super(store);\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.addSubscription(\n this.store.select(CmsSelectors.getActiveEditItemId).subscribe((activeEditItemId) => {\n this.activeEditItemId = activeEditItemId;\n })\n );\n if (this.cmsItemObj.children && this.cmsItemObj.children.length > 0) {\n this.changeActiveSlide(0);\n this.initSlideInterval();\n }\n }\n\n /**\n * call this if a thumbnail is clicked to immediately advance to that slide\n * @param idx\n */\n forceActiveSlide(idx: number): void {\n this.changeActiveSlide(idx);\n this.initSlideInterval();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n this.window.clearInterval(this.slideInterval);\n }\n\n private changeActiveSlide(idx: number): void {\n this.slideIdx = idx;\n }\n\n private initSlideInterval(): void {\n this.window.clearInterval(this.slideInterval); // destroy existing if it exists\n this.slideInterval = this.window.setInterval(() => {\n // if we aren't editing.\n if (this.activeEditItemId !== this.cmsItemObj.item.id) {\n let newPosition = this.slideIdx + 1;\n if (newPosition >= this.cmsItemObj.children.length) {\n // if at the end lets wrap\n newPosition = 0;\n }\n this.changeActiveSlide(newPosition);\n }\n }, SLIDE_INTERVAL);\n }\n}\n","export const CMS_KEY_DATA = 'data\":\"';\nexport const CMS_KEY_SITE = 'site\":\"';\nexport const CMS_KEY_TARGET = 'target\":\"';\nexport const CMS_URL = '/hub/#/content/';\nexport const CMS_TARGET = {\n SELF: '_self',\n BLANK: '_blank',\n};\n\nexport const SLIDE_INTERVAL = 5000;\n","\n
\n \n
\n \n \n \n \n
\n \n\n
\n
\n \n
\n
\n
\n \n
\n \n
\n \n
\n","import { Component, Inject, OnDestroy, OnInit } from '@angular/core';\nimport { CmsBaseIntervalContainerDirective } from '@common/cms/containers/cms-base-interval-container.directive';\nimport { WindowSizingService } from '@common/services/window-size.service';\nimport { Store } from '@ngxs/store';\nimport { WINDOW_TOKEN } from '@usana/ux/common';\n\n@Component({\n selector: 'u-cms-hub-banner-slider-container',\n templateUrl: './cms-hub-banner-slider-container.component.html',\n styleUrls: ['./cms-hub-banner-slider-container.component.scss'],\n})\nexport class CmsHubBannerSliderContainerComponent\n extends CmsBaseIntervalContainerDirective\n implements OnInit, OnDestroy\n{\n constructor(\n private readonly windowSizingService: WindowSizingService,\n protected readonly store: Store,\n @Inject(WINDOW_TOKEN) readonly window: any\n ) {\n super(store, window);\n }\n\n isBannerDesktopSize(): boolean {\n return this.windowSizingService.isBannerDesktopSize();\n }\n}\n","import { Directive, Input } from '@angular/core';\nimport { CmsBaseDirective } from '@common/cms/cms-base.directive';\n\n@Directive()\nexport class CmsBaseContainerDirective extends CmsBaseDirective {\n @Input() rootId: string;\n}\n","\n
\n
\n \n \n \n \n \n
\n
\n\n","import { Component, OnInit } from '@angular/core';\nimport { CmsBaseContainerDirective } from '@common/cms/containers/cms-base-container.directive';\nimport { CmsColumnedItem } from '@common/cms/containers/columned/cms-columned-item';\nimport { CmsSelectors } from '@common/cms/state/cms.selectors';\nimport { CmsItemEntry } from '@common/cms/state/cms.state.model';\nimport { Store } from '@ngxs/store';\nimport { map } from 'rxjs/operators';\n\n@Component({\n selector: 'u-cms-columned-container',\n templateUrl: './cms-columned-container.component.html',\n styleUrls: ['./cms-columned-container.component.scss'],\n})\nexport class CmsColumnedContainerComponent extends CmsBaseContainerDirective implements OnInit {\n columns: CmsColumnedItem[];\n\n constructor(protected readonly store: Store) {\n super(store);\n }\n\n ngOnInit(): void {\n this.addSubscription(\n this.store\n .select(CmsSelectors.getCmsItemByIdFn)\n .pipe(map((fn) => fn(this.cmsItemObj.item.id)))\n .subscribe((cmsItem: CmsItemEntry) => {\n if (!cmsItem || cmsItem.isLoading) {\n this.columns = undefined; // no value we are loading or missing\n } else {\n const colCount = parseInt(cmsItem.data.data?.colCount?.data, 10);\n\n this.columns = this.decideColumnClasses(colCount, cmsItem.data.data?.colLayout?.data).map(\n (colClass, colIdx) => {\n // for each column find the items with the corresponding xCoord\n const itemIds = cmsItem.data.children\n .filter((child) => child.relationship.xCoord === colIdx)\n .map((child) => child.item.id);\n return {\n cssClass: colClass,\n // pre calculate this\n trackBy: `${colIdx}_${itemIds.join('-')}`,\n itemIds: itemIds,\n };\n }\n );\n }\n })\n );\n }\n\n trackByColumn(idx, item): string {\n return item.trackBy;\n }\n\n private decideColumnClasses(colCount: number, colLayout: string): string[] {\n switch (colCount) {\n case 1:\n return ['col-12'];\n case 2:\n switch (colLayout) {\n case '30-70':\n return ['col-md-4', 'col-md-8'];\n case '70-30':\n return ['col-md-8', 'col-md-4'];\n case '50-50':\n return ['col-md-6', 'col-md-6'];\n }\n break;\n case 3:\n return new Array(3).fill('col-md-4');\n }\n\n // no class.\n return new Array(colCount).fill('');\n }\n}\n","\n \n \n \n \n \n \n \n \n \n \n\n","import { Component } from '@angular/core';\nimport { CmsBaseIntervalContainerDirective } from '@common/cms/containers/cms-base-interval-container.directive';\n\n@Component({\n selector: 'u-cms-gallery-container',\n templateUrl: './cms-gallery-container.component.html',\n styleUrls: ['./cms-gallery-container.component.scss'],\n})\nexport class CmsGalleryContainerComponent extends CmsBaseIntervalContainerDirective {}\n","\n \n
\n
    \n \n \n \n \n \n \n
\n
\n
\n
\n \n \n
\n","import { Component } from '@angular/core';\nimport { CmsBaseIntervalContainerDirective } from '@common/cms/containers/cms-base-interval-container.directive';\n\n@Component({\n selector: 'u-cms-slide-container',\n templateUrl: './cms-slide-container.component.html',\n styleUrls: ['./cms-slide-container.component.scss'],\n})\nexport class CmsSlideContainerComponent extends CmsBaseIntervalContainerDirective {}\n","import { Directive } from '@angular/core';\nimport { CmsBaseDirective } from '@common/cms/cms-base.directive';\n\n@Directive()\nexport class CmsBaseItemDirective extends CmsBaseDirective {}\n","
\n
\n \n \n \n
\n
\n
\n

\n {{ cmsItemObj.data.Title?.data }}\n

\n \n {{ cmsItemObj.data.buttonLabel?.data }}\n \n
\n
\n
\n","import { Component } from '@angular/core';\nimport { CmsBaseItemDirective } from '@common/cms/items/cms-item-base.directive';\n\n@Component({\n selector: 'u-cms-hub-banner-slider-item',\n templateUrl: './cms-hub-banner-slider-item.component.html',\n styleUrls: ['./cms-hub-banner-slider-item.component.scss'],\n})\nexport class CmsHubBannerSliderItemComponent extends CmsBaseItemDirective {\n trackByIndex(index) {\n return index;\n }\n}\n","\n\n \n \n\n\n","import { Component } from '@angular/core';\nimport { CmsBaseContainerDirective } from '../containers/cms-base-container.directive';\n\n@Component({\n selector: 'u-cms-basic-container',\n templateUrl: './cms-basic-container.component.html',\n})\nexport class CmsBasicContainerComponent extends CmsBaseContainerDirective {}\n","import { Component } from '@angular/core';\nimport { CmsBaseDirective } from '../cms-base.directive';\n\n@Component({\n selector: 'u-cms-basic-item',\n templateUrl: './cms-basic-item.component.html',\n styleUrls: ['./cms-basic-item.component.scss'],\n})\nexport class CmsBasicItemComponent extends CmsBaseDirective {}\n","\n","
\n
\n \n
\n
\n
\n \n
\n \n
\n \n \n
\n
\n
\n
\n
\n
\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { CmsSelectors } from '@common/cms/state/cms.selectors';\nimport { CmsCurrentPage } from '@common/cms/state/cms.state.model';\nimport { Store } from '@ngxs/store';\nimport { CmsBaseContainerDirective } from '../containers/cms-base-container.directive';\n\n@Component({\n selector: 'u-cms-group-container',\n templateUrl: './cms-group-container.component.html',\n styleUrls: ['./cms-group-container.component.scss'],\n})\nexport class CmsGroupContainerComponent extends CmsBaseContainerDirective implements OnInit, OnDestroy {\n currentItemIds: string;\n firstSubPage: string;\n showCmsItem: string | null;\n pageId: string;\n\n constructor(protected readonly store: Store) {\n super(store);\n }\n\n ngOnInit(): void {\n if (this.cmsItemObj.children.length > 0) {\n this.firstSubPage = this.cmsItemObj.children[0].item.id;\n }\n this.addSubscription(\n this.store.select(CmsSelectors.getCmsCurrentPage).subscribe((currentPage: CmsCurrentPage) => {\n // when the page changes update the selected subpage.\n if (currentPage.subPages.length > 0) {\n this.showCmsItem = currentPage.subPages[0];\n this.defaultIfSubPageDoesntExist();\n } else {\n this.showCmsItem = this.firstSubPage;\n }\n this.pageId = currentPage.pageId;\n })\n );\n }\n\n defaultIfSubPageDoesntExist() {\n // first if we have a null or empty id, don't do the rest of the work\n if (!this.showCmsItem) {\n this.showCmsItem = this.firstSubPage;\n return;\n }\n let childExists = false;\n for (const item of this.cmsItemObj.children) {\n if (item.item.id === this.showCmsItem) {\n childExists = true;\n break;\n }\n }\n if (!childExists) {\n this.showCmsItem = this.firstSubPage;\n }\n }\n}\n","\n\n \n \n\n\n","import { Component } from '@angular/core';\nimport { CmsBaseContainerDirective } from '../containers/cms-base-container.directive';\n\n@Component({\n selector: 'u-cms-group-page',\n templateUrl: './cms-group-page.component.html',\n})\nexport class CmsGroupPageComponent extends CmsBaseContainerDirective {}\n","import * as i0 from '@angular/core';\nimport { Injectable, Component, ChangeDetectionStrategy, Input, Directive, Output, NgModule } from '@angular/core';\nimport * as i2$1 from 'ngx-bootstrap/component-loader';\nimport { ComponentLoaderFactory } from 'ngx-bootstrap/component-loader';\nimport { getBsVer, parseTriggers } from 'ngx-bootstrap/utils';\nimport * as i3 from 'ngx-bootstrap/positioning';\nimport { PlacementForBs5, checkMargins, PositioningService } from 'ngx-bootstrap/positioning';\nimport * as i2 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport { timer } from 'rxjs';\n\n/**\n * Configuration service for the Popover directive.\n * You can inject this service, typically in your root component, and customize\n * the values of its properties in order to provide default values for all the\n * popovers used in the application.\n */\nclass PopoverConfig {\n constructor() {\n /** sets disable adaptive position */\n this.adaptivePosition = true;\n /**\n * Placement of a popover. Accepts: \"top\", \"bottom\", \"left\", \"right\", \"auto\"\n */\n this.placement = 'top';\n /**\n * Specifies events that should trigger. Supports a space separated list of\n * event names.\n */\n this.triggers = 'click';\n this.outsideClick = false;\n /** delay before showing the tooltip */\n this.delay = 0;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.4\", ngImport: i0, type: PopoverConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.4\", ngImport: i0, type: PopoverConfig, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.4\", ngImport: i0, type: PopoverConfig, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }] });\n\nclass PopoverContainerComponent {\n set placement(value) {\n if (!this._bsVersions.isBs5) {\n this._placement = value;\n }\n else {\n this._placement = PlacementForBs5[value];\n }\n }\n ;\n get _bsVersions() {\n return getBsVer();\n }\n constructor(config) {\n this._placement = 'top';\n Object.assign(this, config);\n }\n checkMarginNecessity() {\n return checkMargins(this._placement);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.4\", ngImport: i0, type: PopoverContainerComponent, deps: [{ token: PopoverConfig }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.1.4\", type: PopoverContainerComponent, selector: \"popover-container\", inputs: { placement: \"placement\", title: \"title\" }, host: { attributes: { \"role\": \"tooltip\" }, properties: { \"attr.id\": \"popoverId\", \"class\": \"\\\"popover in popover-\\\" + _placement + \\\" \\\" + \\\"bs-popover-\\\" + _placement + \\\" \\\" + _placement + \\\" \\\" + containerClass + \\\" \\\" + checkMarginNecessity()\", \"class.show\": \"!_bsVersions.isBs3\", \"class.bs3\": \"_bsVersions.isBs3\" }, styleAttribute: \"display:block; position:absolute\" }, ngImport: i0, template: \"
\\n

{{ title }}

\\n
\\n \\n
\\n\", styles: [\":host.popover.bottom>.arrow{margin-left:-4px}:host .popover-arrow{position:absolute}\\n\"], dependencies: [{ kind: \"directive\", type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.4\", ngImport: i0, type: PopoverContainerComponent, decorators: [{\n type: Component,\n args: [{ selector: 'popover-container', changeDetection: ChangeDetectionStrategy.OnPush, host: {\n '[attr.id]': 'popoverId',\n '[class]': '\"popover in popover-\" + _placement + \" \" + \"bs-popover-\" + _placement + \" \" + _placement + \" \" + containerClass + \" \" + checkMarginNecessity()',\n '[class.show]': '!_bsVersions.isBs3',\n '[class.bs3]': '_bsVersions.isBs3',\n role: 'tooltip',\n style: 'display:block; position:absolute'\n }, template: \"
\\n

{{ title }}

\\n
\\n \\n
\\n\", styles: [\":host.popover.bottom>.arrow{margin-left:-4px}:host .popover-arrow{position:absolute}\\n\"] }]\n }], ctorParameters: function () { return [{ type: PopoverConfig }]; }, propDecorators: { placement: [{\n type: Input\n }], title: [{\n type: Input\n }] } });\n\nlet id = 0;\n/**\n * A lightweight, extensible directive for fancy popover creation.\n */\nclass PopoverDirective {\n /**\n * Returns whether or not the popover is currently being shown\n */\n get isOpen() {\n return this._popover.isShown;\n }\n set isOpen(value) {\n if (value) {\n this.show();\n }\n else {\n this.hide();\n }\n }\n constructor(_config, _elementRef, _renderer, _viewContainerRef, cis, _positionService) {\n this._elementRef = _elementRef;\n this._renderer = _renderer;\n this._positionService = _positionService;\n /** unique id popover - use for aria-describedby */\n this.popoverId = id++;\n /** sets disable adaptive position */\n this.adaptivePosition = true;\n /**\n * Placement of a popover. Accepts: \"top\", \"bottom\", \"left\", \"right\"\n */\n this.placement = 'top';\n /**\n * Close popover on outside click\n */\n this.outsideClick = false;\n /**\n * Specifies events that should trigger. Supports a space separated list of\n * event names.\n */\n this.triggers = 'click';\n /**\n * Css class for popover container\n */\n this.containerClass = '';\n /**\n * Delay before showing the tooltip\n */\n this.delay = 0;\n this._isInited = false;\n this._popover = cis\n .createLoader(_elementRef, _viewContainerRef, _renderer)\n .provide({ provide: PopoverConfig, useValue: _config });\n Object.assign(this, _config);\n this.onShown = this._popover.onShown;\n this.onHidden = this._popover.onHidden;\n // fix: no focus on button on Mac OS #1795\n if (typeof window !== 'undefined') {\n _elementRef.nativeElement.addEventListener('click', function () {\n try {\n _elementRef.nativeElement.focus();\n }\n catch (err) {\n return;\n }\n });\n }\n }\n /**\n * Set attribute aria-describedBy for element directive and\n * set id for the popover\n */\n setAriaDescribedBy() {\n this._ariaDescribedby = this.isOpen ? `ngx-popover-${this.popoverId}` : void 0;\n if (this._ariaDescribedby) {\n if (this._popover.instance) {\n this._popover.instance.popoverId = this._ariaDescribedby;\n }\n this._renderer.setAttribute(this._elementRef.nativeElement, 'aria-describedby', this._ariaDescribedby);\n }\n else {\n this._renderer.removeAttribute(this._elementRef.nativeElement, 'aria-describedby');\n }\n }\n /**\n * Opens an element’s popover. This is considered a “manual” triggering of\n * the popover.\n */\n show() {\n if (this._popover.isShown || !this.popover || this._delayTimeoutId) {\n return;\n }\n this._positionService.setOptions({\n modifiers: {\n flip: {\n enabled: this.adaptivePosition\n },\n preventOverflow: {\n enabled: this.adaptivePosition,\n boundariesElement: this.boundariesElement || 'scrollParent'\n }\n }\n });\n const showPopover = () => {\n if (this._delayTimeoutId) {\n this._delayTimeoutId = undefined;\n }\n this._popover\n .attach(PopoverContainerComponent)\n .to(this.container)\n .position({ attachment: this.placement })\n .show({\n content: this.popover,\n context: this.popoverContext,\n placement: this.placement,\n title: this.popoverTitle,\n containerClass: this.containerClass\n });\n if (!this.adaptivePosition && this._popover._componentRef) {\n this._positionService.calcPosition();\n this._positionService.deletePositionElement(this._popover._componentRef.location);\n }\n this.isOpen = true;\n this.setAriaDescribedBy();\n };\n const cancelDelayedTooltipShowing = () => {\n if (this._popoverCancelShowFn) {\n this._popoverCancelShowFn();\n }\n };\n if (this.delay) {\n const _timer = timer(this.delay).subscribe(() => {\n showPopover();\n cancelDelayedTooltipShowing();\n });\n if (this.triggers) {\n parseTriggers(this.triggers)\n .forEach((trigger) => {\n if (!trigger.close) {\n return;\n }\n this._popoverCancelShowFn = this._renderer.listen(this._elementRef.nativeElement, trigger.close, () => {\n _timer.unsubscribe();\n cancelDelayedTooltipShowing();\n });\n });\n }\n }\n else {\n showPopover();\n }\n }\n /**\n * Closes an element’s popover. This is considered a “manual” triggering of\n * the popover.\n */\n hide() {\n if (this._delayTimeoutId) {\n clearTimeout(this._delayTimeoutId);\n this._delayTimeoutId = undefined;\n }\n if (this.isOpen) {\n this._popover.hide();\n this.setAriaDescribedBy();\n this.isOpen = false;\n }\n }\n /**\n * Toggles an element’s popover. This is considered a “manual” triggering of\n * the popover.\n */\n toggle() {\n if (this.isOpen) {\n return this.hide();\n }\n this.show();\n }\n ngOnInit() {\n // fix: seems there are an issue with `routerLinkActive`\n // which result in duplicated call ngOnInit without call to ngOnDestroy\n // read more: https://github.com/valor-software/ngx-bootstrap/issues/1885\n if (this._isInited) {\n return;\n }\n this._isInited = true;\n this._popover.listen({\n triggers: this.triggers,\n outsideClick: this.outsideClick,\n show: () => this.show(),\n hide: () => this.hide()\n });\n }\n ngOnDestroy() {\n this._popover.dispose();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.4\", ngImport: i0, type: PopoverDirective, deps: [{ token: PopoverConfig }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ViewContainerRef }, { token: i2$1.ComponentLoaderFactory }, { token: i3.PositioningService }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.4\", type: PopoverDirective, selector: \"[popover]\", inputs: { adaptivePosition: \"adaptivePosition\", boundariesElement: \"boundariesElement\", popover: \"popover\", popoverContext: \"popoverContext\", popoverTitle: \"popoverTitle\", placement: \"placement\", outsideClick: \"outsideClick\", triggers: \"triggers\", container: \"container\", containerClass: \"containerClass\", isOpen: \"isOpen\", delay: \"delay\" }, outputs: { onShown: \"onShown\", onHidden: \"onHidden\" }, exportAs: [\"bs-popover\"], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.4\", ngImport: i0, type: PopoverDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[popover]', exportAs: 'bs-popover' }]\n }], ctorParameters: function () { return [{ type: PopoverConfig }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ViewContainerRef }, { type: i2$1.ComponentLoaderFactory }, { type: i3.PositioningService }]; }, propDecorators: { adaptivePosition: [{\n type: Input\n }], boundariesElement: [{\n type: Input\n }], popover: [{\n type: Input\n }], popoverContext: [{\n type: Input\n }], popoverTitle: [{\n type: Input\n }], placement: [{\n type: Input\n }], outsideClick: [{\n type: Input\n }], triggers: [{\n type: Input\n }], container: [{\n type: Input\n }], containerClass: [{\n type: Input\n }], isOpen: [{\n type: Input\n }], delay: [{\n type: Input\n }], onShown: [{\n type: Output\n }], onHidden: [{\n type: Output\n }] } });\n\nclass PopoverModule {\n static forRoot() {\n return {\n ngModule: PopoverModule,\n providers: [ComponentLoaderFactory, PositioningService]\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.4\", ngImport: i0, type: PopoverModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.1.4\", ngImport: i0, type: PopoverModule, declarations: [PopoverDirective, PopoverContainerComponent], imports: [CommonModule], exports: [PopoverDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.1.4\", ngImport: i0, type: PopoverModule, imports: [CommonModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.4\", ngImport: i0, type: PopoverModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n declarations: [PopoverDirective, PopoverContainerComponent],\n exports: [PopoverDirective]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { PopoverConfig, PopoverContainerComponent, PopoverDirective, PopoverModule };\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'u-popover',\n templateUrl: './popover.component.html',\n styleUrls: ['./popover.component.scss'],\n})\nexport class UsanaPopoverComponent {\n @Input() message: string;\n @Input() placement = 'left';\n\n isOpen = false;\n\n onBlur(): void {\n this.hidePopover();\n }\n\n onFocus(): void {\n this.showPopover();\n }\n\n onMouseEnter(): void {\n this.showPopover();\n }\n\n onMouseLeave(): void {\n this.hidePopover();\n }\n\n showPopover(): void {\n this.isOpen = true;\n }\n\n hidePopover(): void {\n this.isOpen = false;\n }\n}\n","\n \n\n","
\n \n
\n \n \n \n \n
\n
\n
\n {{ title }}\n
\n \n \n \n
\n","import { Component, Input, OnInit } from '@angular/core';\nimport { document } from 'ngx-bootstrap/utils';\n\n@Component({\n selector: 'u-cms-hub-nav-item',\n templateUrl: './cms-hub-nav-item.component.html',\n styleUrls: ['./cms-hub-nav-item.component.scss'],\n})\nexport class CmsHubNavItemComponent implements OnInit {\n @Input() title: string;\n @Input() svgPath1: string;\n @Input() svgPath2: string;\n @Input() hasChildren: boolean;\n\n get isFirstNavOpen() {\n // Will return false when requestAttrs.user is false\n return !!document.querySelector('#side-nav')?.classList.contains('col-side-nav');\n }\n\n ngOnInit(): void {\n // Set to false if the value is not set (default)\n this.hasChildren = this.hasChildren !== undefined;\n }\n}\n","\n
\n
\n {{ childItem.data.label ? childItem.data.label.data : cmsItemObj.children[0].data.label?.data }}\n
\n\n \n \n
{{ childItem.data.searchTags?.data }}
\n
\n","import { Component, Input } from '@angular/core';\nimport { CmsItemModel } from '@common/cms/cms.model';\n\n@Component({\n selector: 'u-cms-side-nav',\n templateUrl: './cms-side-nav.component.html',\n})\nexport class CmsSideNavComponent {\n @Input() cmsItemObj: CmsItemModel;\n @Input() rootId: string;\n}\n","\n

{{ cmsItemObj.data.subLabel?.data }}

\n
\n\n \n\n
\n \n
\n","import { Component, Input, OnInit, TemplateRef } from '@angular/core';\nimport { CmsConstants } from '@common/cms/cms.constants';\nimport { CmsItemModel } from '@common/cms/cms.model';\nimport { WindowSizingService } from '@common/services/window-size.service';\nimport { SideModalService } from '@shared/side-modal/side-modal.service';\n\n@Component({\n selector: 'u-cms-hub-nav-block-container',\n templateUrl: './cms-hub-nav-block-container.component.html',\n styleUrls: ['./cms-hub-nav-block-container.component.scss'],\n})\nexport class CmsHubNavBlockContainerComponent implements OnInit {\n @Input() cmsItemObj: CmsItemModel;\n @Input() rootId: string;\n svgPath1: string;\n svgPath2: string;\n\n constructor(private sideModalService: SideModalService, private readonly windowSizingService: WindowSizingService) {}\n\n ngOnInit(): void {\n // I don't love that we do this here, but I like it more than\n // having an edge case in cms-item to bind 2 input variables\n // that are only used in 1 item type.\n const menuPath = CmsConstants.MENU_SVG_PATHS[this.rootId];\n if (menuPath) {\n this.svgPath1 = menuPath.svgPath1;\n this.svgPath2 = menuPath.svgPath2;\n }\n }\n\n openSideModalDetails(bodyTemplate: TemplateRef, headerTemplate: TemplateRef) {\n this.sideModalService.open({\n bodyTemplate: bodyTemplate,\n headerTemplate: headerTemplate,\n placement: this.windowSizingService.isMobileSize() ? null : 'left',\n });\n }\n}\n","\n
    \n \n
    \n \n
  • \n
    \n {{ linkItem.data.label.data }}\n
    \n
  • \n
    \n
    \n
\n","import { Component } from '@angular/core';\nimport { CmsBaseContainerDirective } from '@common/cms/containers/cms-base-container.directive';\nimport { Store } from '@ngxs/store';\nimport { SideModalService } from '@shared/side-modal/side-modal.service';\n\n@Component({\n selector: 'u-cms-hub-nav-subgroup-container',\n templateUrl: './cms-hub-nav-subgroup-container.component.html',\n styleUrls: ['./cms-hub-nav-subgroup-container.component.scss'],\n})\nexport class CmsHubNavSubgroupContainerComponent extends CmsBaseContainerDirective {\n constructor(protected readonly store: Store, private sideModalService: SideModalService) {\n super(store);\n }\n\n close(): void {\n this.sideModalService.close();\n }\n}\n","import { Component } from '@angular/core';\nimport { CmsBaseDirective } from '../cms-base.directive';\n\n@Component({\n selector: 'u-cms-image-link-item',\n templateUrl: './cms-image-link-item.component.html',\n styleUrls: ['./cms-image-link-item.component.scss'],\n})\nexport class CmsImageLinkItemComponent extends CmsBaseDirective {}\n","\n","import { Component, Input } from '@angular/core';\nimport { CmsItemModel } from '@common/cms/cms.model';\n\n@Component({\n selector: 'u-cms-link-item',\n templateUrl: './cms-link-item.component.html',\n})\nexport class CmsLinkItemComponent {\n @Input() cmsItemObj: CmsItemModel;\n}\n","\n","\n
\n
\n \n {{ cmsItemObj.data.Title?.data }}\n
\n \n \n \n \n
\n\n","import { Component } from '@angular/core';\nimport { faTh } from '@fortawesome/pro-solid-svg-icons';\nimport { CmsBaseContainerDirective } from '../containers/cms-base-container.directive';\n\n@Component({\n selector: 'u-cms-panel-container',\n templateUrl: './cms-panel-container.component.html',\n})\nexport class CmsPanelContainerComponent extends CmsBaseContainerDirective {\n readonly TABLE_HEADER_ICON = faTh;\n}\n","import { EarningsOptInStateModel } from '@common/cms/earnings-opt-in/state/earnings-opt-in.model';\nimport { EarningsOptInState } from '@common/cms/earnings-opt-in/state/earnings-opt-in.state';\nimport { Selector } from '@ngxs/store';\n\nexport class EarningsOptInSelectors {\n @Selector([EarningsOptInState])\n public static getEarningsOptInStatus(state: EarningsOptInStateModel) {\n return state.earningType;\n }\n\n @Selector([EarningsOptInState])\n public static earningsOptIn(state: EarningsOptInStateModel) {\n return state.earningType;\n }\n}\n","import { IconDefinition } from '@fortawesome/fontawesome-common-types';\nimport { faCheck, faExclamation, faExclamationTriangle } from '@fortawesome/pro-solid-svg-icons';\n\nexport class Toast {\n internalId: number;\n type: string;\n msgTag: string;\n title?: string;\n interpolateTitle?: string;\n interpolateMsg?: string;\n\n constructor(\n internalId: number,\n type: string,\n msgTag: string,\n title?: string,\n interpolateTitle?: string,\n interpolateMsg?: string\n ) {\n this.internalId = internalId;\n this.type = type;\n this.msgTag = msgTag;\n this.title = title || null;\n this.interpolateTitle = interpolateTitle || null;\n this.interpolateMsg = interpolateMsg || null;\n }\n\n getIcon(): IconDefinition {\n switch (this.type) {\n case 'success':\n return faCheck;\n case 'danger':\n return faExclamation;\n case 'warning':\n return faExclamationTriangle;\n default:\n return undefined;\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport cloneDeep from 'lodash/cloneDeep';\nimport { ReplaySubject } from 'rxjs';\nimport { Toast } from './toast.model';\n\n@Injectable({ providedIn: 'root' })\nexport class ToastService {\n private cnt: number;\n\n private toasts: Toast[];\n\n private readonly toastSubject: ReplaySubject;\n\n constructor() {\n this.cnt = 0;\n this.toasts = [];\n this.toastSubject = new ReplaySubject(1);\n }\n\n getToastSubject(): ReplaySubject {\n return this.toastSubject;\n }\n\n /**\n * add the specified toast\n * @param type - toast type, see toast types for bootstrap\n * @param msgTag - translation tag to display for message\n * @param duration - duration in ms, 0 means stay until manually closed, if none is provided 2500 will be used\n * @param title - translation tag to display for title\n * @param interpolateTitle - interpolate text for the title translation\n * @param interpolateMsg - interpolate text for the message translation\n */\n add(\n type: string,\n msgTag: string,\n duration: number = 2500,\n title?: string,\n interpolateTitle?: string,\n interpolateMsg?: string\n ): void {\n const internalId: number = this.cnt++;\n\n this.toasts.push(new Toast(internalId, type, msgTag, title, interpolateTitle, interpolateMsg));\n this.updateSubject();\n\n if (duration !== 0) {\n setTimeout(() => {\n this.removeWithInternalId(internalId);\n }, duration);\n }\n }\n\n removeWithInternalId(internalId: number): void {\n this.toasts = this.toasts.filter((alert) => alert.internalId !== internalId);\n this.updateSubject();\n }\n\n private updateSubject(): void {\n this.toastSubject.next(cloneDeep(this.toasts));\n }\n}\n","
\n
\n
\n
\n
\n
\n
\n
\n
\n \n {{ 'hub.earnings.currentEarningsPlan' | translate }}\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n {{ 'hub.earnings.currentEarningsPlan' | translate }}\n
\n
\n
\n
\n
\n \n
\n
\n
\n","import { Component, Input, OnInit } from '@angular/core';\nimport { CmsItemModel } from '@common/cms/cms.model';\nimport { LoadEarningsOptIn, LoadEarningsOptInStatus } from '@common/cms/earnings-opt-in/state/earnings-opt-in.actions';\nimport { EarningsOptInStatus } from '@common/cms/earnings-opt-in/state/earnings-opt-in.model';\nimport { EarningsOptInSelectors } from '@common/cms/earnings-opt-in/state/earnings-opt-in.selectors';\nimport { faCheck } from '@fortawesome/pro-solid-svg-icons';\nimport { Select, Store } from '@ngxs/store';\nimport { ConfirmationModalComponent } from '@shared/confirmation-modal/confirmation-modal/confirmation-modal.component';\nimport { ToastService } from '@shared/toast/toast.service';\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'u-earnings-opt-in',\n templateUrl: './earnings-opt-in-item.component.html',\n styleUrls: ['./earnings-opt-in-item.component.scss'],\n})\nexport class EarningsOptInItemComponent implements OnInit {\n readonly CHECK_ICON = faCheck;\n\n @Select(EarningsOptInSelectors.getEarningsOptInStatus) optInStatus$: Observable;\n @Input() cmsItemObj: CmsItemModel;\n modalRef: BsModalRef;\n\n constructor(private modalService: BsModalService, private toastService: ToastService, private store: Store) {}\n\n ngOnInit() {\n this.store.dispatch(new LoadEarningsOptInStatus());\n }\n\n confirmChoice() {\n const initialState = {\n modalOptions: {\n title: 'hub.earnings.optInConfirmationTitle',\n message: 'hub.earnings.optInConfirmationMessage',\n confirmButton: 'hub.earnings.optInConfirmationConfirmButton',\n cancelButton: 'hub.earnings.optInConfirmationCancelButton',\n },\n };\n this.modalRef = this.modalService.show(ConfirmationModalComponent, {\n class: 'modal-dialog-centered',\n animated: false,\n initialState: initialState,\n });\n this.modalRef.content.onClose.subscribe((result) => {\n if (result) {\n this.store.dispatch(new LoadEarningsOptIn()).subscribe(\n () =>\n this.toastService.add(\n 'success',\n 'hub.earnings.toastMsg.successMessage',\n 2500,\n 'hub.earnings.toastMsg.successTitle'\n ),\n (error) => {\n this.toastService.add('danger', error, 2500, 'hub.earnings.toastTitle.optInError');\n }\n );\n }\n });\n }\n}\n","// eslint-disable-next-line max-classes-per-file\nimport { CmsBaseDirective } from '@common/cms/cms-base.directive';\nimport { CmsBaseContainerDirective } from '@common/cms/containers/cms-base-container.directive';\nimport { CmsBaseItemDirective } from '@common/cms/items/cms-item-base.directive';\nimport { PurplePageComponent } from '@shared/purple-pages/purple-page/purple-page.component';\nimport { CmsBindingDefinition } from '../cms.model';\n\nexport class CmsComponentBindingDefinition implements CmsBindingDefinition {\n componentClass: any;\n\n constructor(componentClass) {\n this.componentClass = componentClass;\n }\n\n bindData(componentRef, cmsItem, navClickEvent): CmsBaseDirective {\n if (componentRef != null) {\n let component;\n if (cmsItem.data.type.container) {\n component = componentRef.instance as CmsBaseContainerDirective;\n component.rootId = cmsItem.data.item.id;\n } else {\n component = componentRef.instance as CmsBaseItemDirective;\n }\n component.cmsItemObj = cmsItem.data;\n component.navClickEvent = navClickEvent;\n return component;\n }\n return null;\n }\n}\n\nexport class CmsPurplePageBindingDefinition implements CmsBindingDefinition {\n componentClass: any;\n\n constructor(componentClass) {\n this.componentClass = componentClass;\n }\n\n bindData(componentRef, cmsItem, navClickEvent): any {\n if (componentRef != null) {\n const component = componentRef.instance as PurplePageComponent;\n component.fullPath = `/mvc/cm/view?Id=${cmsItem.data.item.id}&relLocale=${cmsItem.data.relationship.locale}`;\n return component;\n }\n return null;\n }\n}\n","/* eslint-disable max-classes-per-file */\n\nexport class LoadContestServiceRegistration {\n static readonly type = '[CONTEST-SERVICE] LOAD REGISTRATION';\n constructor(public contestId: number) {}\n}\n\nexport class CompleteContestServiceRegistration {\n static readonly type = '[CONTEST-SERVICE] COMPLETE REGISTRATION';\n constructor(public contestId: number) {}\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { ContestRegistration, ContestResponse } from '@common/contest/state/contest-service.state.model';\nimport { Observable } from 'rxjs';\nimport { environment } from '../../../../../environments/environment';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ContestApiService {\n constructor(private readonly httpClient: HttpClient) {}\n\n isRegistered(contestId: number): Observable> {\n return this.httpClient.get>(\n `${environment.apiDomain}/contest/registration/${contestId}`,\n {\n withCredentials: true,\n }\n );\n }\n\n registerForContest(contestId: number): Observable> {\n return this.httpClient.put>(\n `${environment.apiDomain}/contest/registration/${contestId}/reg/1`,\n {\n withCredentials: true,\n }\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ContestApiService } from '@common/contest/service/contest-api.service';\nimport {\n CompleteContestServiceRegistration,\n LoadContestServiceRegistration,\n} from '@common/contest/state/contest-service.actions';\nimport { ContestServiceStateModel } from '@common/contest/state/contest-service.state.model';\nimport { Action, State, StateContext } from '@ngxs/store';\nimport { of } from 'rxjs';\nimport { catchError, map, tap } from 'rxjs/operators';\n\n@State({\n name: 'contestService',\n defaults: {\n registrations: {},\n },\n})\n@Injectable({\n providedIn: 'root',\n})\nexport class ContestServiceState {\n constructor(private readonly contestApiService: ContestApiService) {}\n\n @Action(LoadContestServiceRegistration)\n loadRegistration(ctx: StateContext, action: LoadContestServiceRegistration) {\n const state = ctx.getState();\n\n if (!state.registrations[action.contestId]) {\n // patch that we are loading\n ctx.patchState({\n registrations: {\n [action.contestId]: {\n loading: true,\n response: null,\n },\n },\n });\n // brand new registration thing lets load it.\n return this.contestApiService.isRegistered(action.contestId).pipe(\n map((response) =>\n ctx.patchState({\n registrations: {\n [action.contestId]: {\n loading: false,\n response: response,\n },\n },\n })\n ),\n catchError(() => of(ctx.patchState(this.genericCatchError(action.contestId))))\n );\n } else {\n return ctx.patchState({\n registrations: state.registrations,\n });\n }\n }\n\n @Action(CompleteContestServiceRegistration)\n completeRegistration(ctx: StateContext, action: CompleteContestServiceRegistration) {\n return this.contestApiService.registerForContest(action.contestId).pipe(\n map((response) =>\n ctx.patchState({\n registrations: {\n [action.contestId]: {\n loading: false,\n response: response,\n },\n },\n })\n ),\n catchError(() => of(ctx.patchState(this.genericCatchError(action.contestId))))\n );\n }\n\n private genericCatchError(contestId: number) {\n // previous logic shows the unavailable in your market error\n // lets keep that\n return {\n registrations: {\n [contestId]: {\n loading: false,\n response: {\n responseObject: {\n contestId: contestId,\n registered: false,\n canRegister: false,\n },\n message: 'myUsana.contestOptIn.error2',\n type: null,\n },\n },\n },\n };\n }\n}\n","import { ContestServiceState } from '@common/contest/state/contest-service.state';\nimport {\n ContestDetail,\n ContestRegistration,\n ContestServiceStateModel,\n} from '@common/contest/state/contest-service.state.model';\nimport { Selector } from '@ngxs/store';\n\nexport class ContestServiceSelectors {\n @Selector([ContestServiceState])\n public static getRegistrations(state: ContestServiceStateModel): {\n [contestId: number]: ContestDetail;\n } {\n return state.registrations;\n }\n\n @Selector([ContestServiceSelectors.getRegistrations])\n public static getRegistrationByIdFn(registrations: {\n [contestId: number]: ContestDetail;\n }): (contestId: number) => ContestDetail {\n return (contestId: number) => registrations[contestId];\n }\n}\n","
\n
\n \n
\n
\n \n\n {{ getDataForAttribute('Title') }}: {{ 'frame.cm.items.OptInItem.jsp.checkBox.instruction' | translate }}\n
\n\n {{ 'myUsana.contestOptIn.register' | translate }}\n \n
\n {{ contestRegDetail.response.message | translate }}\n
\n
\n
\n
\n\n\n \n\n","import { Component, ElementRef, OnInit, ViewChild } from '@angular/core';\nimport { CmsBaseItemDirective } from '@common/cms/items/cms-item-base.directive';\nimport {\n CompleteContestServiceRegistration,\n LoadContestServiceRegistration,\n} from '@common/contest/state/contest-service.actions';\nimport { ContestServiceSelectors } from '@common/contest/state/contest-service.selectors';\nimport { ContestDetail, ContestRegistration } from '@common/contest/state/contest-service.state.model';\nimport { Store } from '@ngxs/store';\nimport { map } from 'rxjs/operators';\n\n@Component({\n selector: 'u-cms-contest-opt-in-item',\n templateUrl: './cms-contest-opt-in.component.html',\n styleUrls: ['./cms-contest-opt-in.component.scss'],\n})\nexport class CmsContestOptInComponent extends CmsBaseItemDirective implements OnInit {\n contestRegDetail: ContestDetail;\n saving: boolean;\n\n @ViewChild('optInCheck', { static: false }) optInCheckInput: ElementRef;\n\n constructor(protected readonly store: Store) {\n super(store);\n this.saving = false;\n }\n\n ngOnInit() {\n super.ngOnInit();\n\n const contestId = +this.getDataForAttribute('contestId');\n\n if (!isNaN(contestId)) {\n this.addSubscription(\n this.store\n .select(ContestServiceSelectors.getRegistrationByIdFn)\n .pipe(map((fn: (contestId: number) => ContestDetail) => fn(contestId)))\n .subscribe((cd) => {\n this.saving = false;\n this.contestRegDetail = cd;\n })\n );\n this.store.dispatch(new LoadContestServiceRegistration(contestId));\n }\n }\n\n // return whether or not the checkbox is checked\n // NOTE: we do this rather than angular forms because the cms module\n // does not use FormsModule and for one checkbox it doesn't seem worth bringing\n // all of that in.\n optInChecked(): boolean {\n return this.optInCheckInput?.nativeElement?.checked;\n }\n\n optIn(): void {\n if (this.optInChecked()) {\n this.saving = true;\n this.store.dispatch(\n new CompleteContestServiceRegistration(this.contestRegDetail.response.responseObject.contestId)\n );\n }\n }\n}\n","
\n \n \n
\n

{{ cmsItemObj.data.Title?.data }}

\n
\n
\n
\n","import { Component } from '@angular/core';\nimport { CmsBaseItemDirective } from '@common/cms/items/cms-item-base.directive';\n\n@Component({\n selector: 'u-cms-slide-item',\n templateUrl: './cms-slide-item.component.html',\n styleUrls: ['./cms-slide-item.component.scss'],\n})\nexport class CmsSlideItemComponent extends CmsBaseItemDirective {}\n","
\n
\n
\n

\n
\n
\n
\n
\n
\n
\n
\n \n
\n

{{ cmsItemObj.data.bannerImageText?.data }}

\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n","import { Component } from '@angular/core';\nimport { CmsBaseItemDirective } from '@common/cms/items/cms-item-base.directive';\n\n@Component({\n selector: 'u-cms-titled-item',\n templateUrl: './cms-titled-item.component.html',\n styleUrls: ['./cms-titled-item.component.scss'],\n})\nexport class CmsTitledItemComponent extends CmsBaseItemDirective {}\n","\n\n
    \n
  • \n \n \n
    \n
    \n {{ 'hub.news.landing.content.title' | translate }}\n
    \n
    \n
    \n
  • \n
\n\n\n","import { Component } from '@angular/core';\nimport { CmsBaseContainerDirective } from '../containers/cms-base-container.directive';\n\n@Component({\n selector: 'u-cms-usana-news-container',\n templateUrl: './usana-news-container.component.html',\n styleUrls: ['./usana-news-container.component.scss'],\n})\nexport class CmsUsanaNewsContainerComponent extends CmsBaseContainerDirective {}\n","
\n
\n
\n {{ 'usana.hub.home' | translate }}\n \n \n /\n \n {{\n child.isTranslationTag ? (child.name | translate) : child.name\n }}\n \n {{ child.isTranslationTag ? (child.name | translate) : child.name }}\n \n
\n
\n
\n","import { Component, Input } from '@angular/core';\nimport { BreadCrumbModel } from '@shared/bread-crumb/bread-crumb.model';\n\n@Component({\n selector: 'u-bread-crumb',\n templateUrl: './bread-crumb.component.html',\n styleUrls: ['./bread-crumb.component.scss'],\n})\nexport class BreadCrumbComponent {\n @Input() children: BreadCrumbModel[];\n\n trackByIndex(index) {\n return index;\n }\n}\n","
\n \n
\n
\n
\n
\n \n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n \n \n \n\n","import { Component } from '@angular/core';\nimport { CmsBaseDirective } from '../cms-base.directive';\n\n@Component({\n selector: 'u-cms-usana-news-item',\n templateUrl: './usana-news-item.component.html',\n styleUrls: ['./usana-news-item.component.scss'],\n})\nexport class CmsUsanaNewsItemComponent extends CmsBaseDirective {}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'htmlToPlainText',\n})\nexport class HtmlToPlainTextPipe implements PipeTransform {\n transform(html: string) {\n const temp = document.createElement('div');\n temp.innerHTML = html;\n return temp.textContent || temp.innerText || '';\n }\n}\n","import { Component } from '@angular/core';\nimport { Select, Store } from '@ngxs/store';\nimport { Observable } from 'rxjs';\nimport { CmsBaseDirective } from '../cms-base.directive';\nimport { CmsSelectors } from '../state/cms.selectors';\n\n@Component({\n selector: 'u-cms-usana-news-landing-item',\n templateUrl: './usana-news-landing-item.component.html',\n styleUrls: ['./usana-news-landing-item.component.scss'],\n})\nexport class CmsUsanaNewsLandingItemComponent extends CmsBaseDirective {\n @Select(CmsSelectors.getActiveEditItemId) activeEditItemId$: Observable;\n\n constructor(protected readonly store: Store) {\n super(store);\n }\n}\n","\n
\n \n
\n
\n
\n
\n \n \"{{\n \n
\n
\n
{{ cmsItemObj.data.title?.data }}
\n 180 }\"\n [innerHTML]=\"cmsItemObj.data.summary?.data | htmlToPlainText | slice : 0 : 180 | unsafe : 'html'\"\n >
\n
\n \n {{ 'hub.news.read-more' | translate }}\n \n \n
\n
\n
\n
\n
\n \n\n","\n \n\n
\n

{{ cmsItemObj.data.title?.data }}

\n
\n\n \n
\n \n\n \n\n \n\n","import { Component } from '@angular/core';\nimport { CmsBaseContainerDirective } from '@common/cms/containers/cms-base-container.directive';\nimport { Store } from '@ngxs/store';\n\n@Component({\n selector: 'u-related-stories-container',\n templateUrl: './related-stories-container.component.html',\n styleUrls: ['./related-stories-container.component.scss'],\n})\nexport class RelatedStoriesContainerComponent extends CmsBaseContainerDirective {\n constructor(protected readonly store: Store) {\n super(store);\n }\n}\n","import { Directive, Input } from '@angular/core';\nimport {AnalyticsSystem} from '@common/analytics/model/analytics.model';\nimport {AnalyticsService} from '@common/analytics/service/analytics.service';\n\n@Directive()\nexport class CardsDirective {\n @Input() imgUrl: string;\n @Input() alt: string;\n @Input() title: string;\n @Input() summary: string;\n @Input() linkText: string;\n @Input() link: string;\n @Input() target: string;\n @Input() navClickEvent: string;\n\n constructor(private readonly analyticsService: AnalyticsService) {}\n\n onNavClickEvent() {\n if (this.navClickEvent) {\n this.analyticsService.sendEvent(AnalyticsSystem.GTM_FS, this.navClickEvent, {\n navUrl: this.link.split('?')[0],\n });\n }\n }\n}\n","import { Component } from '@angular/core';\nimport { CardsDirective } from '@shared/cards/cards.directive';\n\n@Component({\n selector: 'u-cards-horizontal',\n templateUrl: './cards-horizontal.component.html',\n styleUrls: ['./cards-horizontal.component.scss'],\n})\nexport class CardsHorizontalComponent extends CardsDirective {}\n","\n","import { Component, Input } from '@angular/core';\nimport { CmsItemModel } from '@common/cms/cms.model';\n\n@Component({\n selector: 'u-related-stories-item',\n templateUrl: './related-stories-item.component.html',\n styleUrls: ['./related-stories-item.component.scss'],\n})\nexport class RelatedStoriesItemComponent {\n @Input() cmsItemObj: CmsItemModel;\n @Input() target: string;\n}\n","
\n
\n
\n \n
\n
\n
\n","export const TRAINING_CARD_SIZE = {\n VERTICAL: 'Vertical',\n HORIZONTAL: 'Horizontal',\n};\n","\n \n
\n \n
\n
\n

{{ cmsItemObj.data.title?.data }}

\n
\n \n \n \n
\n \n \n
\n
\n \n \n \n \n \n \n
\n \n\n \n
\n","import { Component } from '@angular/core';\nimport { CmsBaseContainerDirective } from '@common/cms/containers/cms-base-container.directive';\nimport { TRAINING_CARD_SIZE } from '@common/cms/training/training.constants';\nimport { Store } from '@ngxs/store';\n\n@Component({\n selector: 'u-training-sub-category-container',\n templateUrl: './training-sub-category-container.component.html',\n styleUrls: ['./training-sub-category-container.component.scss'],\n})\nexport class TrainingSubCategoryContainerComponent extends CmsBaseContainerDirective {\n vertical = TRAINING_CARD_SIZE.VERTICAL;\n\n constructor(protected readonly store: Store) {\n super(store);\n }\n}\n","\n","import { Component } from '@angular/core';\nimport { CardsDirective } from '@shared/cards/cards.directive';\n\n@Component({\n selector: 'u-cards',\n templateUrl: './cards.component.html',\n styleUrls: ['./cards.component.scss'],\n})\nexport class CardsComponent extends CardsDirective {}\n","\n\n\n","import { Component, Input, OnInit } from '@angular/core';\nimport { CmsBaseDirective } from '@common/cms/cms-base.directive';\nimport { CmsLinkService } from '@common/cms/services/cms-link.service';\nimport { CmsSelectors } from '@common/cms/state/cms.selectors';\nimport { CmsItemEntry } from '@common/cms/state/cms.state.model';\nimport { TRAINING_CARD_SIZE } from '@common/cms/training/training.constants';\nimport { Select, Store } from '@ngxs/store';\nimport { Observable, Subscription } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Component({\n selector: 'u-training-sub-category-item',\n templateUrl: './training-sub-category-item.component.html',\n})\nexport class TrainingSubCategoryItemComponent extends CmsBaseDirective implements OnInit {\n @Select(CmsSelectors.getCmsItemByIdFn) cmsItemByIdFn$: Observable<(cmsItemId: string) => CmsItemEntry>;\n target: string;\n private trainingSub = new Subscription();\n cmsItemById$: Observable;\n trainingCardSize: string;\n cardSize = TRAINING_CARD_SIZE;\n\n constructor(protected readonly store: Store, private readonly cmsLinkService: CmsLinkService) {\n super(store);\n }\n\n ngOnInit(): void {\n // yes we pass in the same object twice, its what we used to do.\n this.target = this.cmsLinkService.getTargetFromLinkData(this.cmsItemObj, this.cmsItemObj);\n if (this.cmsItemObj) {\n this.getParentData();\n }\n }\n\n getParentData() {\n this.cmsItemById$ = this.cmsItemByIdFn$.pipe(map((lookupFn) => lookupFn(this.cmsItemObj.parent.id)));\n\n this.trainingSub = this.cmsItemById$.subscribe((parent) => {\n if (parent && parent.data && parent.data.data.trainingCardSize) {\n this.trainingCardSize = parent.data.data.trainingCardSize.data;\n }\n });\n }\n}\n","export enum ContestTypes {\n CVP = 'CVP',\n SVP = 'SVP',\n}\n","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\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 return obj;\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","/**\n * The current status of a query’s execution in our system.\n */\nexport var NetworkStatus;\n(function (NetworkStatus) {\n /**\n * The query has never been run before and the query is now currently running. A query will still\n * have this network status even if a partial data result was returned from the cache, but a\n * query was dispatched anyway.\n */\n NetworkStatus[NetworkStatus[\"loading\"] = 1] = \"loading\";\n /**\n * If `setVariables` was called and a query was fired because of that then the network status\n * will be `setVariables` until the result of that query comes back.\n */\n NetworkStatus[NetworkStatus[\"setVariables\"] = 2] = \"setVariables\";\n /**\n * Indicates that `fetchMore` was called on this query and that the query created is currently in\n * flight.\n */\n NetworkStatus[NetworkStatus[\"fetchMore\"] = 3] = \"fetchMore\";\n /**\n * Similar to the `setVariables` network status. It means that `refetch` was called on a query\n * and the refetch request is currently in flight.\n */\n NetworkStatus[NetworkStatus[\"refetch\"] = 4] = \"refetch\";\n /**\n * Indicates that a polling query is currently in flight. So for example if you are polling a\n * query every 10 seconds then the network status will switch to `poll` every 10 seconds whenever\n * a poll request has been sent but not resolved.\n */\n NetworkStatus[NetworkStatus[\"poll\"] = 6] = \"poll\";\n /**\n * No request is in flight for this query, and no errors happened. Everything is OK.\n */\n NetworkStatus[NetworkStatus[\"ready\"] = 7] = \"ready\";\n /**\n * No request is in flight for this query, but one or more errors were detected.\n */\n NetworkStatus[NetworkStatus[\"error\"] = 8] = \"error\";\n})(NetworkStatus || (NetworkStatus = {}));\n/**\n * Returns true if there is currently a network request in flight according to a given network\n * status.\n */\nexport function isNetworkRequestInFlight(networkStatus) {\n return networkStatus ? networkStatus < 7 : false;\n}\n/**\n * Returns true if the network request is in ready or error state according to a given network\n * status.\n */\nexport function isNetworkRequestSettled(networkStatus) {\n return networkStatus === 7 || networkStatus === 8;\n}\n","import { ApolloLink } from \"./ApolloLink.js\";\nexport var execute = ApolloLink.execute;\n","import { newInvariantError } from \"../../utilities/globals/index.js\";\nexport var serializeFetchParameter = function (p, label) {\n var serialized;\n try {\n serialized = JSON.stringify(p);\n }\n catch (e) {\n var parseError = newInvariantError(39, label, e.message);\n parseError.parseError = e;\n throw parseError;\n }\n return serialized;\n};\n","/**\n * Original source:\n * https://github.com/kmalakoff/response-iterator/blob/master/src/iterators/reader.ts\n */\nimport { canUseAsyncIteratorSymbol } from \"../../../utilities/index.js\";\nexport default function readerIterator(reader) {\n var iterator = {\n next: function () {\n return reader.read();\n },\n };\n if (canUseAsyncIteratorSymbol) {\n iterator[Symbol.asyncIterator] = function () {\n return this;\n };\n }\n return iterator;\n}\n","/**\n * Original source:\n * https://github.com/kmalakoff/response-iterator/blob/master/src/index.ts\n */\nimport { canUseAsyncIteratorSymbol } from \"../../utilities/index.js\";\nimport asyncIterator from \"./iterators/async.js\";\nimport nodeStreamIterator from \"./iterators/nodeStream.js\";\nimport promiseIterator from \"./iterators/promise.js\";\nimport readerIterator from \"./iterators/reader.js\";\nfunction isNodeResponse(value) {\n return !!value.body;\n}\nfunction isReadableStream(value) {\n return !!value.getReader;\n}\nfunction isAsyncIterableIterator(value) {\n return !!(canUseAsyncIteratorSymbol &&\n value[Symbol.asyncIterator]);\n}\nfunction isStreamableBlob(value) {\n return !!value.stream;\n}\nfunction isBlob(value) {\n return !!value.arrayBuffer;\n}\nfunction isNodeReadableStream(value) {\n return !!value.pipe;\n}\nexport function responseIterator(response) {\n var body = response;\n if (isNodeResponse(response))\n body = response.body;\n if (isAsyncIterableIterator(body))\n return asyncIterator(body);\n if (isReadableStream(body))\n return readerIterator(body.getReader());\n // this errors without casting to ReadableStream\n // because Blob.stream() returns a NodeJS ReadableStream\n if (isStreamableBlob(body)) {\n return readerIterator(body.stream().getReader());\n }\n if (isBlob(body))\n return promiseIterator(body.arrayBuffer());\n if (isNodeReadableStream(body))\n return nodeStreamIterator(body);\n throw new Error(\"Unknown body type for responseIterator. Please pass a streamable response.\");\n}\n","/**\n * Original source:\n * https://github.com/kmalakoff/response-iterator/blob/master/src/iterators/async.ts\n */\nexport default function asyncIterator(source) {\n var _a;\n var iterator = source[Symbol.asyncIterator]();\n return _a = {\n next: function () {\n return iterator.next();\n }\n },\n _a[Symbol.asyncIterator] = function () {\n return this;\n },\n _a;\n}\n","/**\n * Original source:\n * https://github.com/kmalakoff/response-iterator/blob/master/src/iterators/promise.ts\n */\nimport { canUseAsyncIteratorSymbol } from \"../../../utilities/index.js\";\nexport default function promiseIterator(promise) {\n var resolved = false;\n var iterator = {\n next: function () {\n if (resolved)\n return Promise.resolve({\n value: undefined,\n done: true,\n });\n resolved = true;\n return new Promise(function (resolve, reject) {\n promise\n .then(function (value) {\n resolve({ value: value, done: false });\n })\n .catch(reject);\n });\n },\n };\n if (canUseAsyncIteratorSymbol) {\n iterator[Symbol.asyncIterator] = function () {\n return this;\n };\n }\n return iterator;\n}\n","/**\n * Original source:\n * https://github.com/kmalakoff/response-iterator/blob/master/src/iterators/nodeStream.ts\n */\nimport { canUseAsyncIteratorSymbol } from \"../../../utilities/index.js\";\nexport default function nodeStreamIterator(stream) {\n var cleanup = null;\n var error = null;\n var done = false;\n var data = [];\n var waiting = [];\n function onData(chunk) {\n if (error)\n return;\n if (waiting.length) {\n var shiftedArr = waiting.shift();\n if (Array.isArray(shiftedArr) && shiftedArr[0]) {\n return shiftedArr[0]({ value: chunk, done: false });\n }\n }\n data.push(chunk);\n }\n function onError(err) {\n error = err;\n var all = waiting.slice();\n all.forEach(function (pair) {\n pair[1](err);\n });\n !cleanup || cleanup();\n }\n function onEnd() {\n done = true;\n var all = waiting.slice();\n all.forEach(function (pair) {\n pair[0]({ value: undefined, done: true });\n });\n !cleanup || cleanup();\n }\n cleanup = function () {\n cleanup = null;\n stream.removeListener(\"data\", onData);\n stream.removeListener(\"error\", onError);\n stream.removeListener(\"end\", onEnd);\n stream.removeListener(\"finish\", onEnd);\n stream.removeListener(\"close\", onEnd);\n };\n stream.on(\"data\", onData);\n stream.on(\"error\", onError);\n stream.on(\"end\", onEnd);\n stream.on(\"finish\", onEnd);\n stream.on(\"close\", onEnd);\n function getNext() {\n return new Promise(function (resolve, reject) {\n if (error)\n return reject(error);\n if (data.length)\n return resolve({ value: data.shift(), done: false });\n if (done)\n return resolve({ value: undefined, done: true });\n waiting.push([resolve, reject]);\n });\n }\n var iterator = {\n next: function () {\n return getNext();\n },\n };\n if (canUseAsyncIteratorSymbol) {\n iterator[Symbol.asyncIterator] = function () {\n return this;\n };\n }\n return iterator;\n}\n","export var throwServerError = function (response, result, message) {\n var error = new Error(message);\n error.name = \"ServerError\";\n error.response = response;\n error.statusCode = response.status;\n error.result = result;\n throw error;\n};\n","import { __extends, __spreadArray } from \"tslib\";\nimport \"../utilities/globals/index.js\";\nimport { isNonNullObject } from \"../utilities/index.js\";\n// This Symbol allows us to pass transport-specific errors from the link chain\n// into QueryManager/client internals without risking a naming collision within\n// extensions (which implementers can use as they see fit).\nexport var PROTOCOL_ERRORS_SYMBOL = Symbol();\nexport function graphQLResultHasProtocolErrors(result) {\n if (result.extensions) {\n return Array.isArray(result.extensions[PROTOCOL_ERRORS_SYMBOL]);\n }\n return false;\n}\nexport function isApolloError(err) {\n return err.hasOwnProperty(\"graphQLErrors\");\n}\n// Sets the error message on this error according to the\n// the GraphQL and network errors that are present.\n// If the error message has already been set through the\n// constructor or otherwise, this function is a nop.\nvar generateErrorMessage = function (err) {\n var errors = __spreadArray(__spreadArray(__spreadArray([], err.graphQLErrors, true), err.clientErrors, true), err.protocolErrors, true);\n if (err.networkError)\n errors.push(err.networkError);\n return (errors\n // The rest of the code sometimes unsafely types non-Error objects as GraphQLErrors\n .map(function (err) {\n return (isNonNullObject(err) && err.message) || \"Error message not found.\";\n })\n .join(\"\\n\"));\n};\nvar ApolloError = /** @class */ (function (_super) {\n __extends(ApolloError, _super);\n // Constructs an instance of ApolloError given a GraphQLError\n // or a network error. Note that one of these has to be a valid\n // value or the constructed error will be meaningless.\n function ApolloError(_a) {\n var graphQLErrors = _a.graphQLErrors, protocolErrors = _a.protocolErrors, clientErrors = _a.clientErrors, networkError = _a.networkError, errorMessage = _a.errorMessage, extraInfo = _a.extraInfo;\n var _this = _super.call(this, errorMessage) || this;\n _this.name = \"ApolloError\";\n _this.graphQLErrors = graphQLErrors || [];\n _this.protocolErrors = protocolErrors || [];\n _this.clientErrors = clientErrors || [];\n _this.networkError = networkError || null;\n _this.message = errorMessage || generateErrorMessage(_this);\n _this.extraInfo = extraInfo;\n // We're not using `Object.setPrototypeOf` here as it isn't fully\n // supported on Android (see issue #3236).\n _this.__proto__ = ApolloError.prototype;\n return _this;\n }\n return ApolloError;\n}(Error));\nexport { ApolloError };\n","import { isNonNullObject } from \"./objects.js\";\nimport { isNonEmptyArray } from \"./arrays.js\";\nimport { DeepMerger } from \"./mergeDeep.js\";\nexport function isExecutionPatchIncrementalResult(value) {\n return \"incremental\" in value;\n}\nexport function isExecutionPatchInitialResult(value) {\n return \"hasNext\" in value && \"data\" in value;\n}\nexport function isExecutionPatchResult(value) {\n return (isExecutionPatchIncrementalResult(value) ||\n isExecutionPatchInitialResult(value));\n}\n// This function detects an Apollo payload result before it is transformed\n// into a FetchResult via HttpLink; it cannot detect an ApolloPayloadResult\n// once it leaves the link chain.\nexport function isApolloPayloadResult(value) {\n return isNonNullObject(value) && \"payload\" in value;\n}\nexport function mergeIncrementalData(prevResult, result) {\n var mergedData = prevResult;\n var merger = new DeepMerger();\n if (isExecutionPatchIncrementalResult(result) &&\n isNonEmptyArray(result.incremental)) {\n result.incremental.forEach(function (_a) {\n var data = _a.data, path = _a.path;\n for (var i = path.length - 1; i >= 0; --i) {\n var key = path[i];\n var isNumericKey = !isNaN(+key);\n var parent_1 = isNumericKey ? [] : {};\n parent_1[key] = data;\n data = parent_1;\n }\n mergedData = merger.merge(mergedData, data);\n });\n }\n return mergedData;\n}\n","import { __assign, __awaiter, __generator } from \"tslib\";\nimport { responseIterator } from \"./responseIterator.js\";\nimport { throwServerError } from \"../utils/index.js\";\nimport { PROTOCOL_ERRORS_SYMBOL } from \"../../errors/index.js\";\nimport { isApolloPayloadResult } from \"../../utilities/common/incrementalResult.js\";\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nexport function readMultipartBody(response, nextValue) {\n var _a;\n return __awaiter(this, void 0, void 0, function () {\n var decoder, contentType, delimiter, boundaryVal, boundary, buffer, iterator, running, _b, value, done, chunk, searchFrom, bi, message, i, headers, contentType_1, body, result, next;\n var _c, _d;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n if (TextDecoder === undefined) {\n throw new Error(\"TextDecoder must be defined in the environment: please import a polyfill.\");\n }\n decoder = new TextDecoder(\"utf-8\");\n contentType = (_a = response.headers) === null || _a === void 0 ? void 0 : _a.get(\"content-type\");\n delimiter = \"boundary=\";\n boundaryVal = (contentType === null || contentType === void 0 ? void 0 : contentType.includes(delimiter)) ?\n contentType === null || contentType === void 0 ? void 0 : contentType.substring((contentType === null || contentType === void 0 ? void 0 : contentType.indexOf(delimiter)) + delimiter.length).replace(/['\"]/g, \"\").replace(/\\;(.*)/gm, \"\").trim()\n : \"-\";\n boundary = \"\\r\\n--\".concat(boundaryVal);\n buffer = \"\";\n iterator = responseIterator(response);\n running = true;\n _e.label = 1;\n case 1:\n if (!running) return [3 /*break*/, 3];\n return [4 /*yield*/, iterator.next()];\n case 2:\n _b = _e.sent(), value = _b.value, done = _b.done;\n chunk = typeof value === \"string\" ? value : decoder.decode(value);\n searchFrom = buffer.length - boundary.length + 1;\n running = !done;\n buffer += chunk;\n bi = buffer.indexOf(boundary, searchFrom);\n while (bi > -1) {\n message = void 0;\n _c = [\n buffer.slice(0, bi),\n buffer.slice(bi + boundary.length),\n ], message = _c[0], buffer = _c[1];\n i = message.indexOf(\"\\r\\n\\r\\n\");\n headers = parseHeaders(message.slice(0, i));\n contentType_1 = headers[\"content-type\"];\n if (contentType_1 &&\n contentType_1.toLowerCase().indexOf(\"application/json\") === -1) {\n throw new Error(\"Unsupported patch content type: application/json is required.\");\n }\n body = message.slice(i);\n if (body) {\n result = parseJsonBody(response, body);\n if (Object.keys(result).length > 1 ||\n \"data\" in result ||\n \"incremental\" in result ||\n \"errors\" in result ||\n \"payload\" in result) {\n if (isApolloPayloadResult(result)) {\n next = {};\n if (\"payload\" in result) {\n next = __assign({}, result.payload);\n }\n if (\"errors\" in result) {\n next = __assign(__assign({}, next), { extensions: __assign(__assign({}, (\"extensions\" in next ? next.extensions : null)), (_d = {}, _d[PROTOCOL_ERRORS_SYMBOL] = result.errors, _d)) });\n }\n nextValue(next);\n }\n else {\n // for the last chunk with only `hasNext: false`\n // we don't need to call observer.next as there is no data/errors\n nextValue(result);\n }\n }\n else if (\n // If the chunk contains only a \"hasNext: false\", we can call\n // observer.complete() immediately.\n Object.keys(result).length === 1 &&\n \"hasNext\" in result &&\n !result.hasNext) {\n return [2 /*return*/];\n }\n }\n bi = buffer.indexOf(boundary);\n }\n return [3 /*break*/, 1];\n case 3: return [2 /*return*/];\n }\n });\n });\n}\nexport function parseHeaders(headerText) {\n var headersInit = {};\n headerText.split(\"\\n\").forEach(function (line) {\n var i = line.indexOf(\":\");\n if (i > -1) {\n // normalize headers to lowercase\n var name_1 = line.slice(0, i).trim().toLowerCase();\n var value = line.slice(i + 1).trim();\n headersInit[name_1] = value;\n }\n });\n return headersInit;\n}\nexport function parseJsonBody(response, bodyText) {\n if (response.status >= 300) {\n // Network error\n var getResult = function () {\n try {\n return JSON.parse(bodyText);\n }\n catch (err) {\n return bodyText;\n }\n };\n throwServerError(response, getResult(), \"Response not successful: Received status code \".concat(response.status));\n }\n try {\n return JSON.parse(bodyText);\n }\n catch (err) {\n var parseError = err;\n parseError.name = \"ServerParseError\";\n parseError.response = response;\n parseError.statusCode = response.status;\n parseError.bodyText = bodyText;\n throw parseError;\n }\n}\nexport function handleError(err, observer) {\n // if it is a network error, BUT there is graphql result info fire\n // the next observer before calling error this gives apollo-client\n // (and react-apollo) the `graphqlErrors` and `networkErrors` to\n // pass to UI this should only happen if we *also* have data as\n // part of the response key per the spec\n if (err.result && err.result.errors && err.result.data) {\n // if we don't call next, the UI can only show networkError\n // because AC didn't get any graphqlErrors this is graphql\n // execution result info (i.e errors and possibly data) this is\n // because there is no formal spec how errors should translate to\n // http status codes. So an auth error (401) could have both data\n // from a public field, errors from a private field, and a status\n // of 401\n // {\n // user { // this will have errors\n // firstName\n // }\n // products { // this is public so will have data\n // cost\n // }\n // }\n //\n // the result of above *could* look like this:\n // {\n // data: { products: [{ cost: \"$10\" }] },\n // errors: [{\n // message: 'your session has timed out',\n // path: []\n // }]\n // }\n // status code of above would be a 401\n // in the UI you want to show data where you can, errors as data where you can\n // and use correct http status codes\n observer.next(err.result);\n }\n observer.error(err);\n}\nexport function parseAndCheckHttpResponse(operations) {\n return function (response) {\n return response\n .text()\n .then(function (bodyText) { return parseJsonBody(response, bodyText); })\n .then(function (result) {\n if (!Array.isArray(result) &&\n !hasOwnProperty.call(result, \"data\") &&\n !hasOwnProperty.call(result, \"errors\")) {\n // Data error\n throwServerError(response, result, \"Server response was missing for query '\".concat(Array.isArray(operations) ?\n operations.map(function (op) { return op.operationName; })\n : operations.operationName, \"'.\"));\n }\n return result;\n });\n };\n}\n","import { newInvariantError } from \"../../utilities/globals/index.js\";\nexport var checkFetcher = function (fetcher) {\n if (!fetcher && typeof fetch === \"undefined\") {\n throw newInvariantError(37);\n }\n};\n","import { __assign, __spreadArray } from \"tslib\";\nimport { print } from \"../../utilities/index.js\";\nvar defaultHttpOptions = {\n includeQuery: true,\n includeExtensions: false,\n preserveHeaderCase: false,\n};\nvar defaultHeaders = {\n // headers are case insensitive (https://stackoverflow.com/a/5259004)\n accept: \"*/*\",\n // The content-type header describes the type of the body of the request, and\n // so it typically only is sent with requests that actually have bodies. One\n // could imagine that Apollo Client would remove this header when constructing\n // a GET request (which has no body), but we historically have not done that.\n // This means that browsers will preflight all Apollo Client requests (even\n // GET requests). Apollo Server's CSRF prevention feature (introduced in\n // AS3.7) takes advantage of this fact and does not block requests with this\n // header. If you want to drop this header from GET requests, then you should\n // probably replace it with a `apollo-require-preflight` header, or servers\n // with CSRF prevention enabled might block your GET request. See\n // https://www.apollographql.com/docs/apollo-server/security/cors/#preventing-cross-site-request-forgery-csrf\n // for more details.\n \"content-type\": \"application/json\",\n};\nvar defaultOptions = {\n method: \"POST\",\n};\nexport var fallbackHttpConfig = {\n http: defaultHttpOptions,\n headers: defaultHeaders,\n options: defaultOptions,\n};\nexport var defaultPrinter = function (ast, printer) { return printer(ast); };\nexport function selectHttpOptionsAndBody(operation, fallbackConfig) {\n var configs = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n configs[_i - 2] = arguments[_i];\n }\n configs.unshift(fallbackConfig);\n return selectHttpOptionsAndBodyInternal.apply(void 0, __spreadArray([operation,\n defaultPrinter], configs, false));\n}\nexport function selectHttpOptionsAndBodyInternal(operation, printer) {\n var configs = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n configs[_i - 2] = arguments[_i];\n }\n var options = {};\n var http = {};\n configs.forEach(function (config) {\n options = __assign(__assign(__assign({}, options), config.options), { headers: __assign(__assign({}, options.headers), config.headers) });\n if (config.credentials) {\n options.credentials = config.credentials;\n }\n http = __assign(__assign({}, http), config.http);\n });\n if (options.headers) {\n options.headers = removeDuplicateHeaders(options.headers, http.preserveHeaderCase);\n }\n //The body depends on the http options\n var operationName = operation.operationName, extensions = operation.extensions, variables = operation.variables, query = operation.query;\n var body = { operationName: operationName, variables: variables };\n if (http.includeExtensions)\n body.extensions = extensions;\n // not sending the query (i.e persisted queries)\n if (http.includeQuery)\n body.query = printer(query, print);\n return {\n options: options,\n body: body,\n };\n}\n// Remove potential duplicate header names, preserving last (by insertion order).\n// This is done to prevent unintentionally duplicating a header instead of\n// overwriting it (See #8447 and #8449).\nfunction removeDuplicateHeaders(headers, preserveHeaderCase) {\n // If we're not preserving the case, just remove duplicates w/ normalization.\n if (!preserveHeaderCase) {\n var normalizedHeaders_1 = Object.create(null);\n Object.keys(Object(headers)).forEach(function (name) {\n normalizedHeaders_1[name.toLowerCase()] = headers[name];\n });\n return normalizedHeaders_1;\n }\n // If we are preserving the case, remove duplicates w/ normalization,\n // preserving the original name.\n // This allows for non-http-spec-compliant servers that expect intentionally\n // capitalized header names (See #6741).\n var headerData = Object.create(null);\n Object.keys(Object(headers)).forEach(function (name) {\n headerData[name.toLowerCase()] = {\n originalName: name,\n value: headers[name],\n };\n });\n var normalizedHeaders = Object.create(null);\n Object.keys(headerData).forEach(function (name) {\n normalizedHeaders[headerData[name].originalName] = headerData[name].value;\n });\n return normalizedHeaders;\n}\n","import { Observable } from \"../../utilities/index.js\";\nexport function fromError(errorValue) {\n return new Observable(function (observer) {\n observer.error(errorValue);\n });\n}\n","import { __assign, __rest } from \"tslib\";\nimport { invariant } from \"../../utilities/globals/index.js\";\nimport { ApolloLink } from \"../core/index.js\";\nimport { Observable, hasDirectives } from \"../../utilities/index.js\";\nimport { serializeFetchParameter } from \"./serializeFetchParameter.js\";\nimport { selectURI } from \"./selectURI.js\";\nimport { handleError, readMultipartBody, parseAndCheckHttpResponse, } from \"./parseAndCheckHttpResponse.js\";\nimport { checkFetcher } from \"./checkFetcher.js\";\nimport { selectHttpOptionsAndBodyInternal, defaultPrinter, fallbackHttpConfig, } from \"./selectHttpOptionsAndBody.js\";\nimport { rewriteURIForGET } from \"./rewriteURIForGET.js\";\nimport { fromError, filterOperationVariables } from \"../utils/index.js\";\nimport { maybe, getMainDefinition, removeClientSetsFromDocument, } from \"../../utilities/index.js\";\nvar backupFetch = maybe(function () { return fetch; });\nexport var createHttpLink = function (linkOptions) {\n if (linkOptions === void 0) { linkOptions = {}; }\n var _a = linkOptions.uri, uri = _a === void 0 ? \"/graphql\" : _a, \n // use default global fetch if nothing passed in\n preferredFetch = linkOptions.fetch, _b = linkOptions.print, print = _b === void 0 ? defaultPrinter : _b, includeExtensions = linkOptions.includeExtensions, preserveHeaderCase = linkOptions.preserveHeaderCase, useGETForQueries = linkOptions.useGETForQueries, _c = linkOptions.includeUnusedVariables, includeUnusedVariables = _c === void 0 ? false : _c, requestOptions = __rest(linkOptions, [\"uri\", \"fetch\", \"print\", \"includeExtensions\", \"preserveHeaderCase\", \"useGETForQueries\", \"includeUnusedVariables\"]);\n if (globalThis.__DEV__ !== false) {\n // Make sure at least one of preferredFetch, window.fetch, or backupFetch is\n // defined, so requests won't fail at runtime.\n checkFetcher(preferredFetch || backupFetch);\n }\n var linkConfig = {\n http: { includeExtensions: includeExtensions, preserveHeaderCase: preserveHeaderCase },\n options: requestOptions.fetchOptions,\n credentials: requestOptions.credentials,\n headers: requestOptions.headers,\n };\n return new ApolloLink(function (operation) {\n var chosenURI = selectURI(operation, uri);\n var context = operation.getContext();\n // `apollographql-client-*` headers are automatically set if a\n // `clientAwareness` object is found in the context. These headers are\n // set first, followed by the rest of the headers pulled from\n // `context.headers`. If desired, `apollographql-client-*` headers set by\n // the `clientAwareness` object can be overridden by\n // `apollographql-client-*` headers set in `context.headers`.\n var clientAwarenessHeaders = {};\n if (context.clientAwareness) {\n var _a = context.clientAwareness, name_1 = _a.name, version = _a.version;\n if (name_1) {\n clientAwarenessHeaders[\"apollographql-client-name\"] = name_1;\n }\n if (version) {\n clientAwarenessHeaders[\"apollographql-client-version\"] = version;\n }\n }\n var contextHeaders = __assign(__assign({}, clientAwarenessHeaders), context.headers);\n var contextConfig = {\n http: context.http,\n options: context.fetchOptions,\n credentials: context.credentials,\n headers: contextHeaders,\n };\n if (hasDirectives([\"client\"], operation.query)) {\n var transformedQuery = removeClientSetsFromDocument(operation.query);\n if (!transformedQuery) {\n return fromError(new Error(\"HttpLink: Trying to send a client-only query to the server. To send to the server, ensure a non-client field is added to the query or set the `transformOptions.removeClientFields` option to `true`.\"));\n }\n operation.query = transformedQuery;\n }\n //uses fallback, link, and then context to build options\n var _b = selectHttpOptionsAndBodyInternal(operation, print, fallbackHttpConfig, linkConfig, contextConfig), options = _b.options, body = _b.body;\n if (body.variables && !includeUnusedVariables) {\n body.variables = filterOperationVariables(body.variables, operation.query);\n }\n var controller;\n if (!options.signal && typeof AbortController !== \"undefined\") {\n controller = new AbortController();\n options.signal = controller.signal;\n }\n // If requested, set method to GET if there are no mutations.\n var definitionIsMutation = function (d) {\n return d.kind === \"OperationDefinition\" && d.operation === \"mutation\";\n };\n var definitionIsSubscription = function (d) {\n return d.kind === \"OperationDefinition\" && d.operation === \"subscription\";\n };\n var isSubscription = definitionIsSubscription(getMainDefinition(operation.query));\n // does not match custom directives beginning with @defer\n var hasDefer = hasDirectives([\"defer\"], operation.query);\n if (useGETForQueries &&\n !operation.query.definitions.some(definitionIsMutation)) {\n options.method = \"GET\";\n }\n if (hasDefer || isSubscription) {\n options.headers = options.headers || {};\n var acceptHeader = \"multipart/mixed;\";\n // Omit defer-specific headers if the user attempts to defer a selection\n // set on a subscription and log a warning.\n if (isSubscription && hasDefer) {\n globalThis.__DEV__ !== false && invariant.warn(38);\n }\n if (isSubscription) {\n acceptHeader +=\n \"boundary=graphql;subscriptionSpec=1.0,application/json\";\n }\n else if (hasDefer) {\n acceptHeader += \"deferSpec=20220824,application/json\";\n }\n options.headers.accept = acceptHeader;\n }\n if (options.method === \"GET\") {\n var _c = rewriteURIForGET(chosenURI, body), newURI = _c.newURI, parseError = _c.parseError;\n if (parseError) {\n return fromError(parseError);\n }\n chosenURI = newURI;\n }\n else {\n try {\n options.body = serializeFetchParameter(body, \"Payload\");\n }\n catch (parseError) {\n return fromError(parseError);\n }\n }\n return new Observable(function (observer) {\n // Prefer linkOptions.fetch (preferredFetch) if provided, and otherwise\n // fall back to the *current* global window.fetch function (see issue\n // #7832), or (if all else fails) the backupFetch function we saved when\n // this module was first evaluated. This last option protects against the\n // removal of window.fetch, which is unlikely but not impossible.\n var currentFetch = preferredFetch || maybe(function () { return fetch; }) || backupFetch;\n var observerNext = observer.next.bind(observer);\n currentFetch(chosenURI, options)\n .then(function (response) {\n var _a;\n operation.setContext({ response: response });\n var ctype = (_a = response.headers) === null || _a === void 0 ? void 0 : _a.get(\"content-type\");\n if (ctype !== null && /^multipart\\/mixed/i.test(ctype)) {\n return readMultipartBody(response, observerNext);\n }\n else {\n return parseAndCheckHttpResponse(operation)(response).then(observerNext);\n }\n })\n .then(function () {\n controller = undefined;\n observer.complete();\n })\n .catch(function (err) {\n controller = undefined;\n handleError(err, observer);\n });\n return function () {\n // XXX support canceling this request\n // https://developers.google.com/web/updates/2017/09/abortable-fetch\n if (controller)\n controller.abort();\n };\n });\n });\n};\n","export var selectURI = function (operation, fallbackURI) {\n var context = operation.getContext();\n var contextURI = context.uri;\n if (contextURI) {\n return contextURI;\n }\n else if (typeof fallbackURI === \"function\") {\n return fallbackURI(operation);\n }\n else {\n return fallbackURI || \"/graphql\";\n }\n};\n","import { __assign } from \"tslib\";\nimport { visit } from \"graphql\";\nexport function filterOperationVariables(variables, query) {\n var result = __assign({}, variables);\n var unusedNames = new Set(Object.keys(variables));\n visit(query, {\n Variable: function (node, _key, parent) {\n // A variable type definition at the top level of a query is not\n // enough to silence server-side errors about the variable being\n // unused, so variable definitions do not count as usage.\n // https://spec.graphql.org/draft/#sec-All-Variables-Used\n if (parent &&\n parent.kind !== \"VariableDefinition\") {\n unusedNames.delete(node.name.value);\n }\n },\n });\n unusedNames.forEach(function (name) {\n delete result[name];\n });\n return result;\n}\n","import { serializeFetchParameter } from \"./serializeFetchParameter.js\";\n// For GET operations, returns the given URI rewritten with parameters, or a\n// parse error.\nexport function rewriteURIForGET(chosenURI, body) {\n // Implement the standard HTTP GET serialization, plus 'extensions'. Note\n // the extra level of JSON serialization!\n var queryParams = [];\n var addQueryParam = function (key, value) {\n queryParams.push(\"\".concat(key, \"=\").concat(encodeURIComponent(value)));\n };\n if (\"query\" in body) {\n addQueryParam(\"query\", body.query);\n }\n if (body.operationName) {\n addQueryParam(\"operationName\", body.operationName);\n }\n if (body.variables) {\n var serializedVariables = void 0;\n try {\n serializedVariables = serializeFetchParameter(body.variables, \"Variables map\");\n }\n catch (parseError) {\n return { parseError: parseError };\n }\n addQueryParam(\"variables\", serializedVariables);\n }\n if (body.extensions) {\n var serializedExtensions = void 0;\n try {\n serializedExtensions = serializeFetchParameter(body.extensions, \"Extensions map\");\n }\n catch (parseError) {\n return { parseError: parseError };\n }\n addQueryParam(\"extensions\", serializedExtensions);\n }\n // Reconstruct the URI with added query params.\n // XXX This assumes that the URI is well-formed and that it doesn't\n // already contain any of these query params. We could instead use the\n // URL API and take a polyfill (whatwg-url@6) for older browsers that\n // don't support URLSearchParams. Note that some browsers (and\n // versions of whatwg-url) support URL but not URLSearchParams!\n var fragment = \"\", preFragment = chosenURI;\n var fragmentStart = chosenURI.indexOf(\"#\");\n if (fragmentStart !== -1) {\n fragment = chosenURI.substr(fragmentStart);\n preFragment = chosenURI.substr(0, fragmentStart);\n }\n var queryParamsPrefix = preFragment.indexOf(\"?\") === -1 ? \"?\" : \"&\";\n var newURI = preFragment + queryParamsPrefix + queryParams.join(\"&\") + fragment;\n return { newURI: newURI };\n}\n","import { __extends } from \"tslib\";\nimport { ApolloLink } from \"../core/index.js\";\nimport { createHttpLink } from \"./createHttpLink.js\";\nvar HttpLink = /** @class */ (function (_super) {\n __extends(HttpLink, _super);\n function HttpLink(options) {\n if (options === void 0) { options = {}; }\n var _this = _super.call(this, createHttpLink(options).request) || this;\n _this.options = options;\n return _this;\n }\n return HttpLink;\n}(ApolloLink));\nexport { HttpLink };\n","import { Observable } from \"./Observable.js\";\n// Like Observable.prototype.map, except that the mapping function can\n// optionally return a Promise (or be async).\nexport function asyncMap(observable, mapFn, catchFn) {\n return new Observable(function (observer) {\n var promiseQueue = {\n // Normally we would initialize promiseQueue to Promise.resolve(), but\n // in this case, for backwards compatibility, we need to be careful to\n // invoke the first callback synchronously.\n then: function (callback) {\n return new Promise(function (resolve) { return resolve(callback()); });\n },\n };\n function makeCallback(examiner, key) {\n return function (arg) {\n if (examiner) {\n var both = function () {\n // If the observer is closed, we don't want to continue calling the\n // mapping function - it's result will be swallowed anyways.\n return observer.closed ?\n /* will be swallowed */ 0\n : examiner(arg);\n };\n promiseQueue = promiseQueue.then(both, both).then(function (result) { return observer.next(result); }, function (error) { return observer.error(error); });\n }\n else {\n observer[key](arg);\n }\n };\n }\n var handler = {\n next: makeCallback(mapFn, \"next\"),\n error: makeCallback(catchFn, \"error\"),\n complete: function () {\n // no need to reassign `promiseQueue`, after `observer.complete`,\n // the observer will be closed and short-circuit everything anyways\n /*promiseQueue = */ promiseQueue.then(function () { return observer.complete(); });\n },\n };\n var sub = observable.subscribe(handler);\n return function () { return sub.unsubscribe(); };\n });\n}\n","import { isNonEmptyArray } from \"./arrays.js\";\nimport { isExecutionPatchIncrementalResult } from \"./incrementalResult.js\";\nexport function graphQLResultHasError(result) {\n var errors = getGraphQLErrorsFromResult(result);\n return isNonEmptyArray(errors);\n}\nexport function getGraphQLErrorsFromResult(result) {\n var graphQLErrors = isNonEmptyArray(result.errors) ? result.errors.slice(0) : [];\n if (isExecutionPatchIncrementalResult(result) &&\n isNonEmptyArray(result.incremental)) {\n result.incremental.forEach(function (incrementalResult) {\n if (incrementalResult.errors) {\n graphQLErrors.push.apply(graphQLErrors, incrementalResult.errors);\n }\n });\n }\n return graphQLErrors;\n}\n","export function iterateObserversSafely(observers, method, argument) {\n // In case observers is modified during iteration, we need to commit to the\n // original elements, which also provides an opportunity to filter them down\n // to just the observers with the given method.\n var observersWithMethod = [];\n observers.forEach(function (obs) { return obs[method] && observersWithMethod.push(obs); });\n observersWithMethod.forEach(function (obs) { return obs[method](argument); });\n}\n","import { Observable } from \"./Observable.js\";\nimport { canUseSymbol } from \"../common/canUse.js\";\n// Generic implementations of Observable.prototype methods like map and\n// filter need to know how to create a new Observable from an Observable\n// subclass (like Concast or ObservableQuery). Those methods assume\n// (perhaps unwisely?) that they can call the subtype's constructor with a\n// Subscriber function, even though the subclass constructor might expect\n// different parameters. Defining this static Symbol.species property on\n// the subclass is a hint to generic Observable code to use the default\n// constructor instead of trying to do `new Subclass(observer => ...)`.\nexport function fixObservableSubclass(subclass) {\n function set(key) {\n // Object.defineProperty is necessary because the Symbol.species\n // property is a getter by default in modern JS environments, so we\n // can't assign to it with a normal assignment expression.\n Object.defineProperty(subclass, key, { value: Observable });\n }\n if (canUseSymbol && Symbol.species) {\n set(Symbol.species);\n }\n // The \"@@species\" string is used as a fake Symbol.species value in some\n // polyfill systems (including the SymbolSpecies variable used by\n // zen-observable), so we should set it as well, to be safe.\n set(\"@@species\");\n return subclass;\n}\n","import { __extends } from \"tslib\";\nimport { Observable } from \"./Observable.js\";\nimport { iterateObserversSafely } from \"./iteration.js\";\nimport { fixObservableSubclass } from \"./subclassing.js\";\nfunction isPromiseLike(value) {\n return value && typeof value.then === \"function\";\n}\n// A Concast observable concatenates the given sources into a single\n// non-overlapping sequence of Ts, automatically unwrapping any promises,\n// and broadcasts the T elements of that sequence to any number of\n// subscribers, all without creating a bunch of intermediary Observable\n// wrapper objects.\n//\n// Even though any number of observers can subscribe to the Concast, each\n// source observable is guaranteed to receive at most one subscribe call,\n// and the results are multicast to all observers.\n//\n// In addition to broadcasting every next/error message to this.observers,\n// the Concast stores the most recent message using this.latest, so any\n// new observers can immediately receive the latest message, even if it\n// was originally delivered in the past. This behavior means we can assume\n// every active observer in this.observers has received the same most\n// recent message.\n//\n// With the exception of this.latest replay, a Concast is a \"hot\"\n// observable in the sense that it does not replay past results from the\n// beginning of time for each new observer.\n//\n// Could we have used some existing RxJS class instead? Concast is\n// similar to a BehaviorSubject, because it is multicast and redelivers\n// the latest next/error message to new subscribers. Unlike Subject,\n// Concast does not expose an Observer interface (this.handlers is\n// intentionally private), since Concast gets its inputs from the\n// concatenated sources. If we ever switch to RxJS, there may be some\n// value in reusing their code, but for now we use zen-observable, which\n// does not contain any Subject implementations.\nvar Concast = /** @class */ (function (_super) {\n __extends(Concast, _super);\n // Not only can the individual elements of the iterable be promises, but\n // also the iterable itself can be wrapped in a promise.\n function Concast(sources) {\n var _this = _super.call(this, function (observer) {\n _this.addObserver(observer);\n return function () { return _this.removeObserver(observer); };\n }) || this;\n // Active observers receiving broadcast messages. Thanks to this.latest,\n // we can assume all observers in this Set have received the same most\n // recent message, though possibly at different times in the past.\n _this.observers = new Set();\n _this.promise = new Promise(function (resolve, reject) {\n _this.resolve = resolve;\n _this.reject = reject;\n });\n // Bound handler functions that can be reused for every internal\n // subscription.\n _this.handlers = {\n next: function (result) {\n if (_this.sub !== null) {\n _this.latest = [\"next\", result];\n _this.notify(\"next\", result);\n iterateObserversSafely(_this.observers, \"next\", result);\n }\n },\n error: function (error) {\n var sub = _this.sub;\n if (sub !== null) {\n // Delay unsubscribing from the underlying subscription slightly,\n // so that immediately subscribing another observer can keep the\n // subscription active.\n if (sub)\n setTimeout(function () { return sub.unsubscribe(); });\n _this.sub = null;\n _this.latest = [\"error\", error];\n _this.reject(error);\n _this.notify(\"error\", error);\n iterateObserversSafely(_this.observers, \"error\", error);\n }\n },\n complete: function () {\n var _a = _this, sub = _a.sub, _b = _a.sources, sources = _b === void 0 ? [] : _b;\n if (sub !== null) {\n // If complete is called before concast.start, this.sources may be\n // undefined, so we use a default value of [] for sources. That works\n // here because it falls into the if (!value) {...} block, which\n // appropriately terminates the Concast, even if this.sources might\n // eventually have been initialized to a non-empty array.\n var value = sources.shift();\n if (!value) {\n if (sub)\n setTimeout(function () { return sub.unsubscribe(); });\n _this.sub = null;\n if (_this.latest && _this.latest[0] === \"next\") {\n _this.resolve(_this.latest[1]);\n }\n else {\n _this.resolve();\n }\n _this.notify(\"complete\");\n // We do not store this.latest = [\"complete\"], because doing so\n // discards useful information about the previous next (or\n // error) message. Instead, if new observers subscribe after\n // this Concast has completed, they will receive the final\n // 'next' message (unless there was an error) immediately\n // followed by a 'complete' message (see addObserver).\n iterateObserversSafely(_this.observers, \"complete\");\n }\n else if (isPromiseLike(value)) {\n value.then(function (obs) { return (_this.sub = obs.subscribe(_this.handlers)); }, _this.handlers.error);\n }\n else {\n _this.sub = value.subscribe(_this.handlers);\n }\n }\n },\n };\n _this.nextResultListeners = new Set();\n // A public way to abort observation and broadcast.\n _this.cancel = function (reason) {\n _this.reject(reason);\n _this.sources = [];\n _this.handlers.complete();\n };\n // Suppress rejection warnings for this.promise, since it's perfectly\n // acceptable to pay no attention to this.promise if you're consuming\n // the results through the normal observable API.\n _this.promise.catch(function (_) { });\n // If someone accidentally tries to create a Concast using a subscriber\n // function, recover by creating an Observable from that subscriber and\n // using it as the source.\n if (typeof sources === \"function\") {\n sources = [new Observable(sources)];\n }\n if (isPromiseLike(sources)) {\n sources.then(function (iterable) { return _this.start(iterable); }, _this.handlers.error);\n }\n else {\n _this.start(sources);\n }\n return _this;\n }\n Concast.prototype.start = function (sources) {\n if (this.sub !== void 0)\n return;\n // In practice, sources is most often simply an Array of observables.\n // TODO Consider using sources[Symbol.iterator]() to take advantage\n // of the laziness of non-Array iterables.\n this.sources = Array.from(sources);\n // Calling this.handlers.complete() kicks off consumption of the first\n // source observable. It's tempting to do this step lazily in\n // addObserver, but this.promise can be accessed without calling\n // addObserver, so consumption needs to begin eagerly.\n this.handlers.complete();\n };\n Concast.prototype.deliverLastMessage = function (observer) {\n if (this.latest) {\n var nextOrError = this.latest[0];\n var method = observer[nextOrError];\n if (method) {\n method.call(observer, this.latest[1]);\n }\n // If the subscription is already closed, and the last message was\n // a 'next' message, simulate delivery of the final 'complete'\n // message again.\n if (this.sub === null && nextOrError === \"next\" && observer.complete) {\n observer.complete();\n }\n }\n };\n Concast.prototype.addObserver = function (observer) {\n if (!this.observers.has(observer)) {\n // Immediately deliver the most recent message, so we can always\n // be sure all observers have the latest information.\n this.deliverLastMessage(observer);\n this.observers.add(observer);\n }\n };\n Concast.prototype.removeObserver = function (observer) {\n if (this.observers.delete(observer) && this.observers.size < 1) {\n // In case there are still any listeners in this.nextResultListeners, and\n // no error or completion has been broadcast yet, make sure those\n // observers have a chance to run and then remove themselves from\n // this.observers.\n this.handlers.complete();\n }\n };\n Concast.prototype.notify = function (method, arg) {\n var nextResultListeners = this.nextResultListeners;\n if (nextResultListeners.size) {\n // Replacing this.nextResultListeners first ensures it does not grow while\n // we are iterating over it, potentially leading to infinite loops.\n this.nextResultListeners = new Set();\n nextResultListeners.forEach(function (listener) { return listener(method, arg); });\n }\n };\n // We need a way to run callbacks just *before* the next result (or error or\n // completion) is delivered by this Concast, so we can be sure any code that\n // runs as a result of delivering that result/error observes the effects of\n // running the callback(s). It was tempting to reuse the Observer type instead\n // of introducing NextResultListener, but that messes with the sizing and\n // maintenance of this.observers, and ends up being more code overall.\n Concast.prototype.beforeNext = function (callback) {\n var called = false;\n this.nextResultListeners.add(function (method, arg) {\n if (!called) {\n called = true;\n callback(method, arg);\n }\n });\n };\n return Concast;\n}(Observable));\nexport { Concast };\n// Necessary because the Concast constructor has a different signature\n// than the Observable constructor.\nfixObservableSubclass(Concast);\n","import { __rest } from \"tslib\";\nimport equal from \"@wry/equality\";\nimport { createFragmentMap, getFragmentDefinitions, getFragmentFromSelection, getMainDefinition, isField, resultKeyNameFromField, shouldInclude, } from \"../utilities/index.js\";\n// Returns true if aResult and bResult are deeply equal according to the fields\n// selected by the given query, ignoring any fields marked as @nonreactive.\nexport function equalByQuery(query, _a, _b, variables) {\n var aData = _a.data, aRest = __rest(_a, [\"data\"]);\n var bData = _b.data, bRest = __rest(_b, [\"data\"]);\n return (equal(aRest, bRest) &&\n equalBySelectionSet(getMainDefinition(query).selectionSet, aData, bData, {\n fragmentMap: createFragmentMap(getFragmentDefinitions(query)),\n variables: variables,\n }));\n}\nfunction equalBySelectionSet(selectionSet, aResult, bResult, context) {\n if (aResult === bResult) {\n return true;\n }\n var seenSelections = new Set();\n // Returning true from this Array.prototype.every callback function skips the\n // current field/subtree. Returning false aborts the entire traversal\n // immediately, causing equalBySelectionSet to return false.\n return selectionSet.selections.every(function (selection) {\n // Avoid re-processing the same selection at the same level of recursion, in\n // case the same field gets included via multiple indirect fragment spreads.\n if (seenSelections.has(selection))\n return true;\n seenSelections.add(selection);\n // Ignore @skip(if: true) and @include(if: false) fields.\n if (!shouldInclude(selection, context.variables))\n return true;\n // If the field or (named) fragment spread has a @nonreactive directive on\n // it, we don't care if it's different, so we pretend it's the same.\n if (selectionHasNonreactiveDirective(selection))\n return true;\n if (isField(selection)) {\n var resultKey = resultKeyNameFromField(selection);\n var aResultChild = aResult && aResult[resultKey];\n var bResultChild = bResult && bResult[resultKey];\n var childSelectionSet = selection.selectionSet;\n if (!childSelectionSet) {\n // These are scalar values, so we can compare them with deep equal\n // without redoing the main recursive work.\n return equal(aResultChild, bResultChild);\n }\n var aChildIsArray = Array.isArray(aResultChild);\n var bChildIsArray = Array.isArray(bResultChild);\n if (aChildIsArray !== bChildIsArray)\n return false;\n if (aChildIsArray && bChildIsArray) {\n var length_1 = aResultChild.length;\n if (bResultChild.length !== length_1) {\n return false;\n }\n for (var i = 0; i < length_1; ++i) {\n if (!equalBySelectionSet(childSelectionSet, aResultChild[i], bResultChild[i], context)) {\n return false;\n }\n }\n return true;\n }\n return equalBySelectionSet(childSelectionSet, aResultChild, bResultChild, context);\n }\n else {\n var fragment = getFragmentFromSelection(selection, context.fragmentMap);\n if (fragment) {\n // The fragment might === selection if it's an inline fragment, but\n // could be !== if it's a named fragment ...spread.\n if (selectionHasNonreactiveDirective(fragment))\n return true;\n return equalBySelectionSet(fragment.selectionSet, \n // Notice that we reuse the same aResult and bResult values here,\n // since the fragment ...spread does not specify a field name, but\n // consists of multiple fields (within the fragment's selection set)\n // that should be applied to the current result value(s).\n aResult, bResult, context);\n }\n }\n });\n}\nfunction selectionHasNonreactiveDirective(selection) {\n return (!!selection.directives && selection.directives.some(directiveIsNonreactive));\n}\nfunction directiveIsNonreactive(dir) {\n return dir.name.value === \"nonreactive\";\n}\n","import { __assign, __extends } from \"tslib\";\nimport { invariant } from \"../utilities/globals/index.js\";\nimport { equal } from \"@wry/equality\";\nimport { NetworkStatus, isNetworkRequestInFlight } from \"./networkStatus.js\";\nimport { cloneDeep, compact, getOperationDefinition, Observable, iterateObserversSafely, fixObservableSubclass, getQueryDefinition, } from \"../utilities/index.js\";\nimport { equalByQuery } from \"./equalByQuery.js\";\nvar assign = Object.assign, hasOwnProperty = Object.hasOwnProperty;\nvar ObservableQuery = /** @class */ (function (_super) {\n __extends(ObservableQuery, _super);\n function ObservableQuery(_a) {\n var queryManager = _a.queryManager, queryInfo = _a.queryInfo, options = _a.options;\n var _this = _super.call(this, function (observer) {\n // Zen Observable has its own error function, so in order to log correctly\n // we need to provide a custom error callback.\n try {\n var subObserver = observer._subscription._observer;\n if (subObserver && !subObserver.error) {\n subObserver.error = defaultSubscriptionObserverErrorCallback;\n }\n }\n catch (_a) { }\n var first = !_this.observers.size;\n _this.observers.add(observer);\n // Deliver most recent error or result.\n var last = _this.last;\n if (last && last.error) {\n observer.error && observer.error(last.error);\n }\n else if (last && last.result) {\n observer.next && observer.next(last.result);\n }\n // Initiate observation of this query if it hasn't been reported to\n // the QueryManager yet.\n if (first) {\n // Blindly catching here prevents unhandled promise rejections,\n // and is safe because the ObservableQuery handles this error with\n // this.observer.error, so we're not just swallowing the error by\n // ignoring it here.\n _this.reobserve().catch(function () { });\n }\n return function () {\n if (_this.observers.delete(observer) && !_this.observers.size) {\n _this.tearDownQuery();\n }\n };\n }) || this;\n _this.observers = new Set();\n _this.subscriptions = new Set();\n // related classes\n _this.queryInfo = queryInfo;\n _this.queryManager = queryManager;\n // active state\n _this.waitForOwnResult = skipCacheDataFor(options.fetchPolicy);\n _this.isTornDown = false;\n var _b = queryManager.defaultOptions.watchQuery, _c = _b === void 0 ? {} : _b, _d = _c.fetchPolicy, defaultFetchPolicy = _d === void 0 ? \"cache-first\" : _d;\n var _e = options.fetchPolicy, fetchPolicy = _e === void 0 ? defaultFetchPolicy : _e, \n // Make sure we don't store \"standby\" as the initialFetchPolicy.\n _f = options.initialFetchPolicy, \n // Make sure we don't store \"standby\" as the initialFetchPolicy.\n initialFetchPolicy = _f === void 0 ? fetchPolicy === \"standby\" ? defaultFetchPolicy : (fetchPolicy) : _f;\n _this.options = __assign(__assign({}, options), { \n // Remember the initial options.fetchPolicy so we can revert back to this\n // policy when variables change. This information can also be specified\n // (or overridden) by providing options.initialFetchPolicy explicitly.\n initialFetchPolicy: initialFetchPolicy, \n // This ensures this.options.fetchPolicy always has a string value, in\n // case options.fetchPolicy was not provided.\n fetchPolicy: fetchPolicy });\n _this.queryId = queryInfo.queryId || queryManager.generateQueryId();\n var opDef = getOperationDefinition(_this.query);\n _this.queryName = opDef && opDef.name && opDef.name.value;\n return _this;\n }\n Object.defineProperty(ObservableQuery.prototype, \"query\", {\n // The `query` computed property will always reflect the document transformed\n // by the last run query. `this.options.query` will always reflect the raw\n // untransformed query to ensure document transforms with runtime conditionals\n // are run on the original document.\n get: function () {\n return this.lastQuery || this.options.query;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ObservableQuery.prototype, \"variables\", {\n // Computed shorthand for this.options.variables, preserved for\n // backwards compatibility.\n /**\n * An object containing the variables that were provided for the query.\n */\n get: function () {\n return this.options.variables;\n },\n enumerable: false,\n configurable: true\n });\n ObservableQuery.prototype.result = function () {\n var _this = this;\n return new Promise(function (resolve, reject) {\n // TODO: this code doesn’t actually make sense insofar as the observer\n // will never exist in this.observers due how zen-observable wraps observables.\n // https://github.com/zenparsing/zen-observable/blob/master/src/Observable.js#L169\n var observer = {\n next: function (result) {\n resolve(result);\n // Stop the query within the QueryManager if we can before\n // this function returns.\n //\n // We do this in order to prevent observers piling up within\n // the QueryManager. Notice that we only fully unsubscribe\n // from the subscription in a setTimeout(..., 0) call. This call can\n // actually be handled by the browser at a much later time. If queries\n // are fired in the meantime, observers that should have been removed\n // from the QueryManager will continue to fire, causing an unnecessary\n // performance hit.\n _this.observers.delete(observer);\n if (!_this.observers.size) {\n _this.queryManager.removeQuery(_this.queryId);\n }\n setTimeout(function () {\n subscription.unsubscribe();\n }, 0);\n },\n error: reject,\n };\n var subscription = _this.subscribe(observer);\n });\n };\n /** @internal */\n ObservableQuery.prototype.resetDiff = function () {\n this.queryInfo.resetDiff();\n };\n ObservableQuery.prototype.getCurrentResult = function (saveAsLastResult) {\n if (saveAsLastResult === void 0) { saveAsLastResult = true; }\n // Use the last result as long as the variables match this.variables.\n var lastResult = this.getLastResult(true);\n var networkStatus = this.queryInfo.networkStatus ||\n (lastResult && lastResult.networkStatus) ||\n NetworkStatus.ready;\n var result = __assign(__assign({}, lastResult), { loading: isNetworkRequestInFlight(networkStatus), networkStatus: networkStatus });\n var _a = this.options.fetchPolicy, fetchPolicy = _a === void 0 ? \"cache-first\" : _a;\n if (\n // These fetch policies should never deliver data from the cache, unless\n // redelivering a previously delivered result.\n skipCacheDataFor(fetchPolicy) ||\n // If this.options.query has @client(always: true) fields, we cannot\n // trust diff.result, since it was read from the cache without running\n // local resolvers (and it's too late to run resolvers now, since we must\n // return a result synchronously).\n this.queryManager.getDocumentInfo(this.query).hasForcedResolvers) {\n // Fall through.\n }\n else if (this.waitForOwnResult) {\n // This would usually be a part of `QueryInfo.getDiff()`.\n // which we skip in the waitForOwnResult case since we are not\n // interested in the diff.\n this.queryInfo[\"updateWatch\"]();\n }\n else {\n var diff = this.queryInfo.getDiff();\n if (diff.complete || this.options.returnPartialData) {\n result.data = diff.result;\n }\n if (equal(result.data, {})) {\n result.data = void 0;\n }\n if (diff.complete) {\n // Similar to setting result.partial to false, but taking advantage of the\n // falsiness of missing fields.\n delete result.partial;\n // If the diff is complete, and we're using a FetchPolicy that\n // terminates after a complete cache read, we can assume the next result\n // we receive will have NetworkStatus.ready and !loading.\n if (diff.complete &&\n result.networkStatus === NetworkStatus.loading &&\n (fetchPolicy === \"cache-first\" || fetchPolicy === \"cache-only\")) {\n result.networkStatus = NetworkStatus.ready;\n result.loading = false;\n }\n }\n else {\n result.partial = true;\n }\n if (globalThis.__DEV__ !== false &&\n !diff.complete &&\n !this.options.partialRefetch &&\n !result.loading &&\n !result.data &&\n !result.error) {\n logMissingFieldErrors(diff.missing);\n }\n }\n if (saveAsLastResult) {\n this.updateLastResult(result);\n }\n return result;\n };\n // Compares newResult to the snapshot we took of this.lastResult when it was\n // first received.\n ObservableQuery.prototype.isDifferentFromLastResult = function (newResult, variables) {\n if (!this.last) {\n return true;\n }\n var resultIsDifferent = this.queryManager.getDocumentInfo(this.query).hasNonreactiveDirective ?\n !equalByQuery(this.query, this.last.result, newResult, this.variables)\n : !equal(this.last.result, newResult);\n return (resultIsDifferent || (variables && !equal(this.last.variables, variables)));\n };\n ObservableQuery.prototype.getLast = function (key, variablesMustMatch) {\n var last = this.last;\n if (last &&\n last[key] &&\n (!variablesMustMatch || equal(last.variables, this.variables))) {\n return last[key];\n }\n };\n ObservableQuery.prototype.getLastResult = function (variablesMustMatch) {\n return this.getLast(\"result\", variablesMustMatch);\n };\n ObservableQuery.prototype.getLastError = function (variablesMustMatch) {\n return this.getLast(\"error\", variablesMustMatch);\n };\n ObservableQuery.prototype.resetLastResults = function () {\n delete this.last;\n this.isTornDown = false;\n };\n ObservableQuery.prototype.resetQueryStoreErrors = function () {\n this.queryManager.resetErrors(this.queryId);\n };\n /**\n * Update the variables of this observable query, and fetch the new results.\n * This method should be preferred over `setVariables` in most use cases.\n *\n * @param variables - The new set of variables. If there are missing variables,\n * the previous values of those variables will be used.\n */\n ObservableQuery.prototype.refetch = function (variables) {\n var _a;\n var reobserveOptions = {\n // Always disable polling for refetches.\n pollInterval: 0,\n };\n // Unless the provided fetchPolicy always consults the network\n // (no-cache, network-only, or cache-and-network), override it with\n // network-only to force the refetch for this fetchQuery call.\n var fetchPolicy = this.options.fetchPolicy;\n if (fetchPolicy === \"cache-and-network\") {\n reobserveOptions.fetchPolicy = fetchPolicy;\n }\n else if (fetchPolicy === \"no-cache\") {\n reobserveOptions.fetchPolicy = \"no-cache\";\n }\n else {\n reobserveOptions.fetchPolicy = \"network-only\";\n }\n if (globalThis.__DEV__ !== false && variables && hasOwnProperty.call(variables, \"variables\")) {\n var queryDef = getQueryDefinition(this.query);\n var vars = queryDef.variableDefinitions;\n if (!vars || !vars.some(function (v) { return v.variable.name.value === \"variables\"; })) {\n globalThis.__DEV__ !== false && invariant.warn(\n 20,\n variables,\n ((_a = queryDef.name) === null || _a === void 0 ? void 0 : _a.value) || queryDef\n );\n }\n }\n if (variables && !equal(this.options.variables, variables)) {\n // Update the existing options with new variables\n reobserveOptions.variables = this.options.variables = __assign(__assign({}, this.options.variables), variables);\n }\n this.queryInfo.resetLastWrite();\n return this.reobserve(reobserveOptions, NetworkStatus.refetch);\n };\n /**\n * A function that helps you fetch the next set of results for a [paginated list field](https://www.apollographql.com/docs/react/pagination/core-api/).\n */\n ObservableQuery.prototype.fetchMore = function (fetchMoreOptions) {\n var _this = this;\n var combinedOptions = __assign(__assign({}, (fetchMoreOptions.query ? fetchMoreOptions : (__assign(__assign(__assign(__assign({}, this.options), { query: this.options.query }), fetchMoreOptions), { variables: __assign(__assign({}, this.options.variables), fetchMoreOptions.variables) })))), { \n // The fetchMore request goes immediately to the network and does\n // not automatically write its result to the cache (hence no-cache\n // instead of network-only), because we allow the caller of\n // fetchMore to provide an updateQuery callback that determines how\n // the data gets written to the cache.\n fetchPolicy: \"no-cache\" });\n combinedOptions.query = this.transformDocument(combinedOptions.query);\n var qid = this.queryManager.generateQueryId();\n // If a temporary query is passed to `fetchMore`, we don't want to store\n // it as the last query result since it may be an optimized query for\n // pagination. We will however run the transforms on the original document\n // as well as the document passed in `fetchMoreOptions` to ensure the cache\n // uses the most up-to-date document which may rely on runtime conditionals.\n this.lastQuery =\n fetchMoreOptions.query ?\n this.transformDocument(this.options.query)\n : combinedOptions.query;\n // Simulate a loading result for the original query with\n // result.networkStatus === NetworkStatus.fetchMore.\n var queryInfo = this.queryInfo;\n var originalNetworkStatus = queryInfo.networkStatus;\n queryInfo.networkStatus = NetworkStatus.fetchMore;\n if (combinedOptions.notifyOnNetworkStatusChange) {\n this.observe();\n }\n var updatedQuerySet = new Set();\n return this.queryManager\n .fetchQuery(qid, combinedOptions, NetworkStatus.fetchMore)\n .then(function (fetchMoreResult) {\n _this.queryManager.removeQuery(qid);\n if (queryInfo.networkStatus === NetworkStatus.fetchMore) {\n queryInfo.networkStatus = originalNetworkStatus;\n }\n // Performing this cache update inside a cache.batch transaction ensures\n // any affected cache.watch watchers are notified at most once about any\n // updates. Most watchers will be using the QueryInfo class, which\n // responds to notifications by calling reobserveCacheFirst to deliver\n // fetchMore cache results back to this ObservableQuery.\n _this.queryManager.cache.batch({\n update: function (cache) {\n var updateQuery = fetchMoreOptions.updateQuery;\n if (updateQuery) {\n cache.updateQuery({\n query: _this.query,\n variables: _this.variables,\n returnPartialData: true,\n optimistic: false,\n }, function (previous) {\n return updateQuery(previous, {\n fetchMoreResult: fetchMoreResult.data,\n variables: combinedOptions.variables,\n });\n });\n }\n else {\n // If we're using a field policy instead of updateQuery, the only\n // thing we need to do is write the new data to the cache using\n // combinedOptions.variables (instead of this.variables, which is\n // what this.updateQuery uses, because it works by abusing the\n // original field value, keyed by the original variables).\n cache.writeQuery({\n query: combinedOptions.query,\n variables: combinedOptions.variables,\n data: fetchMoreResult.data,\n });\n }\n },\n onWatchUpdated: function (watch) {\n // Record the DocumentNode associated with any watched query whose\n // data were updated by the cache writes above.\n updatedQuerySet.add(watch.query);\n },\n });\n return fetchMoreResult;\n })\n .finally(function () {\n // In case the cache writes above did not generate a broadcast\n // notification (which would have been intercepted by onWatchUpdated),\n // likely because the written data were the same as what was already in\n // the cache, we still want fetchMore to deliver its final loading:false\n // result with the unchanged data.\n if (!updatedQuerySet.has(_this.query)) {\n reobserveCacheFirst(_this);\n }\n });\n };\n // XXX the subscription variables are separate from the query variables.\n // if you want to update subscription variables, right now you have to do that separately,\n // and you can only do it by stopping the subscription and then subscribing again with new variables.\n /**\n * A function that enables you to execute a [subscription](https://www.apollographql.com/docs/react/data/subscriptions/), usually to subscribe to specific fields that were included in the query.\n *\n * This function returns _another_ function that you can call to terminate the subscription.\n */\n ObservableQuery.prototype.subscribeToMore = function (options) {\n var _this = this;\n var subscription = this.queryManager\n .startGraphQLSubscription({\n query: options.document,\n variables: options.variables,\n context: options.context,\n })\n .subscribe({\n next: function (subscriptionData) {\n var updateQuery = options.updateQuery;\n if (updateQuery) {\n _this.updateQuery(function (previous, _a) {\n var variables = _a.variables;\n return updateQuery(previous, {\n subscriptionData: subscriptionData,\n variables: variables,\n });\n });\n }\n },\n error: function (err) {\n if (options.onError) {\n options.onError(err);\n return;\n }\n globalThis.__DEV__ !== false && invariant.error(21, err);\n },\n });\n this.subscriptions.add(subscription);\n return function () {\n if (_this.subscriptions.delete(subscription)) {\n subscription.unsubscribe();\n }\n };\n };\n ObservableQuery.prototype.setOptions = function (newOptions) {\n return this.reobserve(newOptions);\n };\n ObservableQuery.prototype.silentSetOptions = function (newOptions) {\n var mergedOptions = compact(this.options, newOptions || {});\n assign(this.options, mergedOptions);\n };\n /**\n * Update the variables of this observable query, and fetch the new results\n * if they've changed. Most users should prefer `refetch` instead of\n * `setVariables` in order to to be properly notified of results even when\n * they come from the cache.\n *\n * Note: the `next` callback will *not* fire if the variables have not changed\n * or if the result is coming from cache.\n *\n * Note: the promise will return the old results immediately if the variables\n * have not changed.\n *\n * Note: the promise will return null immediately if the query is not active\n * (there are no subscribers).\n *\n * @param variables - The new set of variables. If there are missing variables,\n * the previous values of those variables will be used.\n */\n ObservableQuery.prototype.setVariables = function (variables) {\n if (equal(this.variables, variables)) {\n // If we have no observers, then we don't actually want to make a network\n // request. As soon as someone observes the query, the request will kick\n // off. For now, we just store any changes. (See #1077)\n return this.observers.size ? this.result() : Promise.resolve();\n }\n this.options.variables = variables;\n // See comment above\n if (!this.observers.size) {\n return Promise.resolve();\n }\n return this.reobserve({\n // Reset options.fetchPolicy to its original value.\n fetchPolicy: this.options.initialFetchPolicy,\n variables: variables,\n }, NetworkStatus.setVariables);\n };\n /**\n * A function that enables you to update the query's cached result without executing a followup GraphQL operation.\n *\n * See [using updateQuery and updateFragment](https://www.apollographql.com/docs/react/caching/cache-interaction/#using-updatequery-and-updatefragment) for additional information.\n */\n ObservableQuery.prototype.updateQuery = function (mapFn) {\n var queryManager = this.queryManager;\n var result = queryManager.cache.diff({\n query: this.options.query,\n variables: this.variables,\n returnPartialData: true,\n optimistic: false,\n }).result;\n var newResult = mapFn(result, {\n variables: this.variables,\n });\n if (newResult) {\n queryManager.cache.writeQuery({\n query: this.options.query,\n data: newResult,\n variables: this.variables,\n });\n queryManager.broadcastQueries();\n }\n };\n /**\n * A function that instructs the query to begin re-executing at a specified interval (in milliseconds).\n */\n ObservableQuery.prototype.startPolling = function (pollInterval) {\n this.options.pollInterval = pollInterval;\n this.updatePolling();\n };\n /**\n * A function that instructs the query to stop polling after a previous call to `startPolling`.\n */\n ObservableQuery.prototype.stopPolling = function () {\n this.options.pollInterval = 0;\n this.updatePolling();\n };\n // Update options.fetchPolicy according to options.nextFetchPolicy.\n ObservableQuery.prototype.applyNextFetchPolicy = function (reason, \n // It's possible to use this method to apply options.nextFetchPolicy to\n // options.fetchPolicy even if options !== this.options, though that happens\n // most often when the options are temporary, used for only one request and\n // then thrown away, so nextFetchPolicy may not end up mattering.\n options) {\n if (options.nextFetchPolicy) {\n var _a = options.fetchPolicy, fetchPolicy = _a === void 0 ? \"cache-first\" : _a, _b = options.initialFetchPolicy, initialFetchPolicy = _b === void 0 ? fetchPolicy : _b;\n if (fetchPolicy === \"standby\") {\n // Do nothing, leaving options.fetchPolicy unchanged.\n }\n else if (typeof options.nextFetchPolicy === \"function\") {\n // When someone chooses \"cache-and-network\" or \"network-only\" as their\n // initial FetchPolicy, they often do not want future cache updates to\n // trigger unconditional network requests, which is what repeatedly\n // applying the \"cache-and-network\" or \"network-only\" policies would\n // seem to imply. Instead, when the cache reports an update after the\n // initial network request, it may be desirable for subsequent network\n // requests to be triggered only if the cache result is incomplete. To\n // that end, the options.nextFetchPolicy option provides an easy way to\n // update options.fetchPolicy after the initial network request, without\n // having to call observableQuery.setOptions.\n options.fetchPolicy = options.nextFetchPolicy(fetchPolicy, {\n reason: reason,\n options: options,\n observable: this,\n initialFetchPolicy: initialFetchPolicy,\n });\n }\n else if (reason === \"variables-changed\") {\n options.fetchPolicy = initialFetchPolicy;\n }\n else {\n options.fetchPolicy = options.nextFetchPolicy;\n }\n }\n return options.fetchPolicy;\n };\n ObservableQuery.prototype.fetch = function (options, newNetworkStatus, query) {\n // TODO Make sure we update the networkStatus (and infer fetchVariables)\n // before actually committing to the fetch.\n this.queryManager.setObservableQuery(this);\n return this.queryManager[\"fetchConcastWithInfo\"](this.queryId, options, newNetworkStatus, query);\n };\n // Turns polling on or off based on this.options.pollInterval.\n ObservableQuery.prototype.updatePolling = function () {\n var _this = this;\n // Avoid polling in SSR mode\n if (this.queryManager.ssrMode) {\n return;\n }\n var _a = this, pollingInfo = _a.pollingInfo, pollInterval = _a.options.pollInterval;\n if (!pollInterval) {\n if (pollingInfo) {\n clearTimeout(pollingInfo.timeout);\n delete this.pollingInfo;\n }\n return;\n }\n if (pollingInfo && pollingInfo.interval === pollInterval) {\n return;\n }\n invariant(pollInterval, 22);\n var info = pollingInfo || (this.pollingInfo = {});\n info.interval = pollInterval;\n var maybeFetch = function () {\n var _a, _b;\n if (_this.pollingInfo) {\n if (!isNetworkRequestInFlight(_this.queryInfo.networkStatus) &&\n !((_b = (_a = _this.options).skipPollAttempt) === null || _b === void 0 ? void 0 : _b.call(_a))) {\n _this.reobserve({\n // Most fetchPolicy options don't make sense to use in a polling context, as\n // users wouldn't want to be polling the cache directly. However, network-only and\n // no-cache are both useful for when the user wants to control whether or not the\n // polled results are written to the cache.\n fetchPolicy: _this.options.initialFetchPolicy === \"no-cache\" ?\n \"no-cache\"\n : \"network-only\",\n }, NetworkStatus.poll).then(poll, poll);\n }\n else {\n poll();\n }\n }\n };\n var poll = function () {\n var info = _this.pollingInfo;\n if (info) {\n clearTimeout(info.timeout);\n info.timeout = setTimeout(maybeFetch, info.interval);\n }\n };\n poll();\n };\n ObservableQuery.prototype.updateLastResult = function (newResult, variables) {\n if (variables === void 0) { variables = this.variables; }\n var error = this.getLastError();\n // Preserve this.last.error unless the variables have changed.\n if (error && this.last && !equal(variables, this.last.variables)) {\n error = void 0;\n }\n return (this.last = __assign({ result: this.queryManager.assumeImmutableResults ?\n newResult\n : cloneDeep(newResult), variables: variables }, (error ? { error: error } : null)));\n };\n ObservableQuery.prototype.reobserveAsConcast = function (newOptions, newNetworkStatus) {\n var _this = this;\n this.isTornDown = false;\n var useDisposableConcast = \n // Refetching uses a disposable Concast to allow refetches using different\n // options/variables, without permanently altering the options of the\n // original ObservableQuery.\n newNetworkStatus === NetworkStatus.refetch ||\n // The fetchMore method does not actually call the reobserve method, but,\n // if it did, it would definitely use a disposable Concast.\n newNetworkStatus === NetworkStatus.fetchMore ||\n // Polling uses a disposable Concast so the polling options (which force\n // fetchPolicy to be \"network-only\" or \"no-cache\") won't override the original options.\n newNetworkStatus === NetworkStatus.poll;\n // Save the old variables, since Object.assign may modify them below.\n var oldVariables = this.options.variables;\n var oldFetchPolicy = this.options.fetchPolicy;\n var mergedOptions = compact(this.options, newOptions || {});\n var options = useDisposableConcast ?\n // Disposable Concast fetches receive a shallow copy of this.options\n // (merged with newOptions), leaving this.options unmodified.\n mergedOptions\n : assign(this.options, mergedOptions);\n // Don't update options.query with the transformed query to avoid\n // overwriting this.options.query when we aren't using a disposable concast.\n // We want to ensure we can re-run the custom document transforms the next\n // time a request is made against the original query.\n var query = this.transformDocument(options.query);\n this.lastQuery = query;\n if (!useDisposableConcast) {\n // We can skip calling updatePolling if we're not changing this.options.\n this.updatePolling();\n // Reset options.fetchPolicy to its original value when variables change,\n // unless a new fetchPolicy was provided by newOptions.\n if (newOptions &&\n newOptions.variables &&\n !equal(newOptions.variables, oldVariables) &&\n // Don't mess with the fetchPolicy if it's currently \"standby\".\n options.fetchPolicy !== \"standby\" &&\n // If we're changing the fetchPolicy anyway, don't try to change it here\n // using applyNextFetchPolicy. The explicit options.fetchPolicy wins.\n options.fetchPolicy === oldFetchPolicy) {\n this.applyNextFetchPolicy(\"variables-changed\", options);\n if (newNetworkStatus === void 0) {\n newNetworkStatus = NetworkStatus.setVariables;\n }\n }\n }\n this.waitForOwnResult && (this.waitForOwnResult = skipCacheDataFor(options.fetchPolicy));\n var finishWaitingForOwnResult = function () {\n if (_this.concast === concast) {\n _this.waitForOwnResult = false;\n }\n };\n var variables = options.variables && __assign({}, options.variables);\n var _a = this.fetch(options, newNetworkStatus, query), concast = _a.concast, fromLink = _a.fromLink;\n var observer = {\n next: function (result) {\n if (equal(_this.variables, variables)) {\n finishWaitingForOwnResult();\n _this.reportResult(result, variables);\n }\n },\n error: function (error) {\n if (equal(_this.variables, variables)) {\n finishWaitingForOwnResult();\n _this.reportError(error, variables);\n }\n },\n };\n if (!useDisposableConcast && (fromLink || !this.concast)) {\n // We use the {add,remove}Observer methods directly to avoid wrapping\n // observer with an unnecessary SubscriptionObserver object.\n if (this.concast && this.observer) {\n this.concast.removeObserver(this.observer);\n }\n this.concast = concast;\n this.observer = observer;\n }\n concast.addObserver(observer);\n return concast;\n };\n ObservableQuery.prototype.reobserve = function (newOptions, newNetworkStatus) {\n return this.reobserveAsConcast(newOptions, newNetworkStatus)\n .promise;\n };\n ObservableQuery.prototype.resubscribeAfterError = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n // If `lastError` is set in the current when the subscription is re-created,\n // the subscription will immediately receive the error, which will\n // cause it to terminate again. To avoid this, we first clear\n // the last error/result from the `observableQuery` before re-starting\n // the subscription, and restore the last value afterwards so that the\n // subscription has a chance to stay open.\n var last = this.last;\n this.resetLastResults();\n var subscription = this.subscribe.apply(this, args);\n this.last = last;\n return subscription;\n };\n // (Re)deliver the current result to this.observers without applying fetch\n // policies or making network requests.\n ObservableQuery.prototype.observe = function () {\n this.reportResult(\n // Passing false is important so that this.getCurrentResult doesn't\n // save the fetchMore result as this.lastResult, causing it to be\n // ignored due to the this.isDifferentFromLastResult check in\n // this.reportResult.\n this.getCurrentResult(false), this.variables);\n };\n ObservableQuery.prototype.reportResult = function (result, variables) {\n var lastError = this.getLastError();\n var isDifferent = this.isDifferentFromLastResult(result, variables);\n // Update the last result even when isDifferentFromLastResult returns false,\n // because the query may be using the @nonreactive directive, and we want to\n // save the the latest version of any nonreactive subtrees (in case\n // getCurrentResult is called), even though we skip broadcasting changes.\n if (lastError || !result.partial || this.options.returnPartialData) {\n this.updateLastResult(result, variables);\n }\n if (lastError || isDifferent) {\n iterateObserversSafely(this.observers, \"next\", result);\n }\n };\n ObservableQuery.prototype.reportError = function (error, variables) {\n // Since we don't get the current result on errors, only the error, we\n // must mirror the updates that occur in QueryStore.markQueryError here\n var errorResult = __assign(__assign({}, this.getLastResult()), { error: error, errors: error.graphQLErrors, networkStatus: NetworkStatus.error, loading: false });\n this.updateLastResult(errorResult, variables);\n iterateObserversSafely(this.observers, \"error\", (this.last.error = error));\n };\n ObservableQuery.prototype.hasObservers = function () {\n return this.observers.size > 0;\n };\n ObservableQuery.prototype.tearDownQuery = function () {\n if (this.isTornDown)\n return;\n if (this.concast && this.observer) {\n this.concast.removeObserver(this.observer);\n delete this.concast;\n delete this.observer;\n }\n this.stopPolling();\n // stop all active GraphQL subscriptions\n this.subscriptions.forEach(function (sub) { return sub.unsubscribe(); });\n this.subscriptions.clear();\n this.queryManager.stopQuery(this.queryId);\n this.observers.clear();\n this.isTornDown = true;\n };\n ObservableQuery.prototype.transformDocument = function (document) {\n return this.queryManager.transform(document);\n };\n return ObservableQuery;\n}(Observable));\nexport { ObservableQuery };\n// Necessary because the ObservableQuery constructor has a different\n// signature than the Observable constructor.\nfixObservableSubclass(ObservableQuery);\n// Reobserve with fetchPolicy effectively set to \"cache-first\", triggering\n// delivery of any new data from the cache, possibly falling back to the network\n// if any cache data are missing. This allows _complete_ cache results to be\n// delivered without also kicking off unnecessary network requests when\n// this.options.fetchPolicy is \"cache-and-network\" or \"network-only\". When\n// this.options.fetchPolicy is any other policy (\"cache-first\", \"cache-only\",\n// \"standby\", or \"no-cache\"), we call this.reobserve() as usual.\nexport function reobserveCacheFirst(obsQuery) {\n var _a = obsQuery.options, fetchPolicy = _a.fetchPolicy, nextFetchPolicy = _a.nextFetchPolicy;\n if (fetchPolicy === \"cache-and-network\" || fetchPolicy === \"network-only\") {\n return obsQuery.reobserve({\n fetchPolicy: \"cache-first\",\n // Use a temporary nextFetchPolicy function that replaces itself with the\n // previous nextFetchPolicy value and returns the original fetchPolicy.\n nextFetchPolicy: function (currentFetchPolicy, context) {\n // Replace this nextFetchPolicy function in the options object with the\n // original this.options.nextFetchPolicy value.\n this.nextFetchPolicy = nextFetchPolicy;\n // If the original nextFetchPolicy value was a function, give it a\n // chance to decide what happens here.\n if (typeof this.nextFetchPolicy === \"function\") {\n return this.nextFetchPolicy(currentFetchPolicy, context);\n }\n // Otherwise go back to the original this.options.fetchPolicy.\n return fetchPolicy;\n },\n });\n }\n return obsQuery.reobserve();\n}\nfunction defaultSubscriptionObserverErrorCallback(error) {\n globalThis.__DEV__ !== false && invariant.error(23, error.message, error.stack);\n}\nexport function logMissingFieldErrors(missing) {\n if (globalThis.__DEV__ !== false && missing) {\n globalThis.__DEV__ !== false && invariant.debug(24, missing);\n }\n}\nfunction skipCacheDataFor(fetchPolicy /* `undefined` would mean `\"cache-first\"` */) {\n return (fetchPolicy === \"network-only\" ||\n fetchPolicy === \"no-cache\" ||\n fetchPolicy === \"standby\");\n}\n","import { Kind } from './kinds.mjs';\nexport function isDefinitionNode(node) {\n return (\n isExecutableDefinitionNode(node) ||\n isTypeSystemDefinitionNode(node) ||\n isTypeSystemExtensionNode(node)\n );\n}\nexport function isExecutableDefinitionNode(node) {\n return (\n node.kind === Kind.OPERATION_DEFINITION ||\n node.kind === Kind.FRAGMENT_DEFINITION\n );\n}\nexport function isSelectionNode(node) {\n return (\n node.kind === Kind.FIELD ||\n node.kind === Kind.FRAGMENT_SPREAD ||\n node.kind === Kind.INLINE_FRAGMENT\n );\n}\nexport function isValueNode(node) {\n return (\n node.kind === Kind.VARIABLE ||\n node.kind === Kind.INT ||\n node.kind === Kind.FLOAT ||\n node.kind === Kind.STRING ||\n node.kind === Kind.BOOLEAN ||\n node.kind === Kind.NULL ||\n node.kind === Kind.ENUM ||\n node.kind === Kind.LIST ||\n node.kind === Kind.OBJECT\n );\n}\nexport function isConstValueNode(node) {\n return (\n isValueNode(node) &&\n (node.kind === Kind.LIST\n ? node.values.some(isConstValueNode)\n : node.kind === Kind.OBJECT\n ? node.fields.some((field) => isConstValueNode(field.value))\n : node.kind !== Kind.VARIABLE)\n );\n}\nexport function isTypeNode(node) {\n return (\n node.kind === Kind.NAMED_TYPE ||\n node.kind === Kind.LIST_TYPE ||\n node.kind === Kind.NON_NULL_TYPE\n );\n}\nexport function isTypeSystemDefinitionNode(node) {\n return (\n node.kind === Kind.SCHEMA_DEFINITION ||\n isTypeDefinitionNode(node) ||\n node.kind === Kind.DIRECTIVE_DEFINITION\n );\n}\nexport function isTypeDefinitionNode(node) {\n return (\n node.kind === Kind.SCALAR_TYPE_DEFINITION ||\n node.kind === Kind.OBJECT_TYPE_DEFINITION ||\n node.kind === Kind.INTERFACE_TYPE_DEFINITION ||\n node.kind === Kind.UNION_TYPE_DEFINITION ||\n node.kind === Kind.ENUM_TYPE_DEFINITION ||\n node.kind === Kind.INPUT_OBJECT_TYPE_DEFINITION\n );\n}\nexport function isTypeSystemExtensionNode(node) {\n return node.kind === Kind.SCHEMA_EXTENSION || isTypeExtensionNode(node);\n}\nexport function isTypeExtensionNode(node) {\n return (\n node.kind === Kind.SCALAR_TYPE_EXTENSION ||\n node.kind === Kind.OBJECT_TYPE_EXTENSION ||\n node.kind === Kind.INTERFACE_TYPE_EXTENSION ||\n node.kind === Kind.UNION_TYPE_EXTENSION ||\n node.kind === Kind.ENUM_TYPE_EXTENSION ||\n node.kind === Kind.INPUT_OBJECT_TYPE_EXTENSION\n );\n}\n","import { __assign, __awaiter, __generator } from \"tslib\";\nimport { invariant } from \"../utilities/globals/index.js\";\nimport { visit, BREAK, isSelectionNode } from \"graphql\";\nimport { argumentsObjectFromField, buildQueryFromSelectionSet, createFragmentMap, getFragmentDefinitions, getMainDefinition, hasDirectives, isField, isInlineFragment, mergeDeep, mergeDeepArray, removeClientSetsFromDocument, resultKeyNameFromField, shouldInclude, } from \"../utilities/index.js\";\nimport { cacheSlot } from \"../cache/index.js\";\nvar LocalState = /** @class */ (function () {\n function LocalState(_a) {\n var cache = _a.cache, client = _a.client, resolvers = _a.resolvers, fragmentMatcher = _a.fragmentMatcher;\n this.selectionsToResolveCache = new WeakMap();\n this.cache = cache;\n if (client) {\n this.client = client;\n }\n if (resolvers) {\n this.addResolvers(resolvers);\n }\n if (fragmentMatcher) {\n this.setFragmentMatcher(fragmentMatcher);\n }\n }\n LocalState.prototype.addResolvers = function (resolvers) {\n var _this = this;\n this.resolvers = this.resolvers || {};\n if (Array.isArray(resolvers)) {\n resolvers.forEach(function (resolverGroup) {\n _this.resolvers = mergeDeep(_this.resolvers, resolverGroup);\n });\n }\n else {\n this.resolvers = mergeDeep(this.resolvers, resolvers);\n }\n };\n LocalState.prototype.setResolvers = function (resolvers) {\n this.resolvers = {};\n this.addResolvers(resolvers);\n };\n LocalState.prototype.getResolvers = function () {\n return this.resolvers || {};\n };\n // Run local client resolvers against the incoming query and remote data.\n // Locally resolved field values are merged with the incoming remote data,\n // and returned. Note that locally resolved fields will overwrite\n // remote data using the same field name.\n LocalState.prototype.runResolvers = function (_a) {\n var document = _a.document, remoteResult = _a.remoteResult, context = _a.context, variables = _a.variables, _b = _a.onlyRunForcedResolvers, onlyRunForcedResolvers = _b === void 0 ? false : _b;\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_c) {\n if (document) {\n return [2 /*return*/, this.resolveDocument(document, remoteResult.data, context, variables, this.fragmentMatcher, onlyRunForcedResolvers).then(function (localResult) { return (__assign(__assign({}, remoteResult), { data: localResult.result })); })];\n }\n return [2 /*return*/, remoteResult];\n });\n });\n };\n LocalState.prototype.setFragmentMatcher = function (fragmentMatcher) {\n this.fragmentMatcher = fragmentMatcher;\n };\n LocalState.prototype.getFragmentMatcher = function () {\n return this.fragmentMatcher;\n };\n // Client queries contain everything in the incoming document (if a @client\n // directive is found).\n LocalState.prototype.clientQuery = function (document) {\n if (hasDirectives([\"client\"], document)) {\n if (this.resolvers) {\n return document;\n }\n }\n return null;\n };\n // Server queries are stripped of all @client based selection sets.\n LocalState.prototype.serverQuery = function (document) {\n return removeClientSetsFromDocument(document);\n };\n LocalState.prototype.prepareContext = function (context) {\n var cache = this.cache;\n return __assign(__assign({}, context), { cache: cache, \n // Getting an entry's cache key is useful for local state resolvers.\n getCacheKey: function (obj) {\n return cache.identify(obj);\n } });\n };\n // To support `@client @export(as: \"someVar\")` syntax, we'll first resolve\n // @client @export fields locally, then pass the resolved values back to be\n // used alongside the original operation variables.\n LocalState.prototype.addExportedVariables = function (document, variables, context) {\n if (variables === void 0) { variables = {}; }\n if (context === void 0) { context = {}; }\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (document) {\n return [2 /*return*/, this.resolveDocument(document, this.buildRootValueFromCache(document, variables) || {}, this.prepareContext(context), variables).then(function (data) { return (__assign(__assign({}, variables), data.exportedVariables)); })];\n }\n return [2 /*return*/, __assign({}, variables)];\n });\n });\n };\n LocalState.prototype.shouldForceResolvers = function (document) {\n var forceResolvers = false;\n visit(document, {\n Directive: {\n enter: function (node) {\n if (node.name.value === \"client\" && node.arguments) {\n forceResolvers = node.arguments.some(function (arg) {\n return arg.name.value === \"always\" &&\n arg.value.kind === \"BooleanValue\" &&\n arg.value.value === true;\n });\n if (forceResolvers) {\n return BREAK;\n }\n }\n },\n },\n });\n return forceResolvers;\n };\n // Query the cache and return matching data.\n LocalState.prototype.buildRootValueFromCache = function (document, variables) {\n return this.cache.diff({\n query: buildQueryFromSelectionSet(document),\n variables: variables,\n returnPartialData: true,\n optimistic: false,\n }).result;\n };\n LocalState.prototype.resolveDocument = function (document, rootValue, context, variables, fragmentMatcher, onlyRunForcedResolvers) {\n if (context === void 0) { context = {}; }\n if (variables === void 0) { variables = {}; }\n if (fragmentMatcher === void 0) { fragmentMatcher = function () { return true; }; }\n if (onlyRunForcedResolvers === void 0) { onlyRunForcedResolvers = false; }\n return __awaiter(this, void 0, void 0, function () {\n var mainDefinition, fragments, fragmentMap, selectionsToResolve, definitionOperation, defaultOperationType, _a, cache, client, execContext, isClientFieldDescendant;\n return __generator(this, function (_b) {\n mainDefinition = getMainDefinition(document);\n fragments = getFragmentDefinitions(document);\n fragmentMap = createFragmentMap(fragments);\n selectionsToResolve = this.collectSelectionsToResolve(mainDefinition, fragmentMap);\n definitionOperation = mainDefinition.operation;\n defaultOperationType = definitionOperation ?\n definitionOperation.charAt(0).toUpperCase() +\n definitionOperation.slice(1)\n : \"Query\";\n _a = this, cache = _a.cache, client = _a.client;\n execContext = {\n fragmentMap: fragmentMap,\n context: __assign(__assign({}, context), { cache: cache, client: client }),\n variables: variables,\n fragmentMatcher: fragmentMatcher,\n defaultOperationType: defaultOperationType,\n exportedVariables: {},\n selectionsToResolve: selectionsToResolve,\n onlyRunForcedResolvers: onlyRunForcedResolvers,\n };\n isClientFieldDescendant = false;\n return [2 /*return*/, this.resolveSelectionSet(mainDefinition.selectionSet, isClientFieldDescendant, rootValue, execContext).then(function (result) { return ({\n result: result,\n exportedVariables: execContext.exportedVariables,\n }); })];\n });\n });\n };\n LocalState.prototype.resolveSelectionSet = function (selectionSet, isClientFieldDescendant, rootValue, execContext) {\n return __awaiter(this, void 0, void 0, function () {\n var fragmentMap, context, variables, resultsToMerge, execute;\n var _this = this;\n return __generator(this, function (_a) {\n fragmentMap = execContext.fragmentMap, context = execContext.context, variables = execContext.variables;\n resultsToMerge = [rootValue];\n execute = function (selection) { return __awaiter(_this, void 0, void 0, function () {\n var fragment, typeCondition;\n return __generator(this, function (_a) {\n if (!isClientFieldDescendant &&\n !execContext.selectionsToResolve.has(selection)) {\n // Skip selections without @client directives\n // (still processing if one of the ancestors or one of the child fields has @client directive)\n return [2 /*return*/];\n }\n if (!shouldInclude(selection, variables)) {\n // Skip this entirely.\n return [2 /*return*/];\n }\n if (isField(selection)) {\n return [2 /*return*/, this.resolveField(selection, isClientFieldDescendant, rootValue, execContext).then(function (fieldResult) {\n var _a;\n if (typeof fieldResult !== \"undefined\") {\n resultsToMerge.push((_a = {},\n _a[resultKeyNameFromField(selection)] = fieldResult,\n _a));\n }\n })];\n }\n if (isInlineFragment(selection)) {\n fragment = selection;\n }\n else {\n // This is a named fragment.\n fragment = fragmentMap[selection.name.value];\n invariant(fragment, 18, selection.name.value);\n }\n if (fragment && fragment.typeCondition) {\n typeCondition = fragment.typeCondition.name.value;\n if (execContext.fragmentMatcher(rootValue, typeCondition, context)) {\n return [2 /*return*/, this.resolveSelectionSet(fragment.selectionSet, isClientFieldDescendant, rootValue, execContext).then(function (fragmentResult) {\n resultsToMerge.push(fragmentResult);\n })];\n }\n }\n return [2 /*return*/];\n });\n }); };\n return [2 /*return*/, Promise.all(selectionSet.selections.map(execute)).then(function () {\n return mergeDeepArray(resultsToMerge);\n })];\n });\n });\n };\n LocalState.prototype.resolveField = function (field, isClientFieldDescendant, rootValue, execContext) {\n return __awaiter(this, void 0, void 0, function () {\n var variables, fieldName, aliasedFieldName, aliasUsed, defaultResult, resultPromise, resolverType, resolverMap, resolve;\n var _this = this;\n return __generator(this, function (_a) {\n if (!rootValue) {\n return [2 /*return*/, null];\n }\n variables = execContext.variables;\n fieldName = field.name.value;\n aliasedFieldName = resultKeyNameFromField(field);\n aliasUsed = fieldName !== aliasedFieldName;\n defaultResult = rootValue[aliasedFieldName] || rootValue[fieldName];\n resultPromise = Promise.resolve(defaultResult);\n // Usually all local resolvers are run when passing through here, but\n // if we've specifically identified that we only want to run forced\n // resolvers (that is, resolvers for fields marked with\n // `@client(always: true)`), then we'll skip running non-forced resolvers.\n if (!execContext.onlyRunForcedResolvers ||\n this.shouldForceResolvers(field)) {\n resolverType = rootValue.__typename || execContext.defaultOperationType;\n resolverMap = this.resolvers && this.resolvers[resolverType];\n if (resolverMap) {\n resolve = resolverMap[aliasUsed ? fieldName : aliasedFieldName];\n if (resolve) {\n resultPromise = Promise.resolve(\n // In case the resolve function accesses reactive variables,\n // set cacheSlot to the current cache instance.\n cacheSlot.withValue(this.cache, resolve, [\n rootValue,\n argumentsObjectFromField(field, variables),\n execContext.context,\n { field: field, fragmentMap: execContext.fragmentMap },\n ]));\n }\n }\n }\n return [2 /*return*/, resultPromise.then(function (result) {\n var _a, _b;\n if (result === void 0) { result = defaultResult; }\n // If an @export directive is associated with the current field, store\n // the `as` export variable name and current result for later use.\n if (field.directives) {\n field.directives.forEach(function (directive) {\n if (directive.name.value === \"export\" && directive.arguments) {\n directive.arguments.forEach(function (arg) {\n if (arg.name.value === \"as\" && arg.value.kind === \"StringValue\") {\n execContext.exportedVariables[arg.value.value] = result;\n }\n });\n }\n });\n }\n // Handle all scalar types here.\n if (!field.selectionSet) {\n return result;\n }\n // From here down, the field has a selection set, which means it's trying\n // to query a GraphQLObjectType.\n if (result == null) {\n // Basically any field in a GraphQL response can be null, or missing\n return result;\n }\n var isClientField = (_b = (_a = field.directives) === null || _a === void 0 ? void 0 : _a.some(function (d) { return d.name.value === \"client\"; })) !== null && _b !== void 0 ? _b : false;\n if (Array.isArray(result)) {\n return _this.resolveSubSelectedArray(field, isClientFieldDescendant || isClientField, result, execContext);\n }\n // Returned value is an object, and the query has a sub-selection. Recurse.\n if (field.selectionSet) {\n return _this.resolveSelectionSet(field.selectionSet, isClientFieldDescendant || isClientField, result, execContext);\n }\n })];\n });\n });\n };\n LocalState.prototype.resolveSubSelectedArray = function (field, isClientFieldDescendant, result, execContext) {\n var _this = this;\n return Promise.all(result.map(function (item) {\n if (item === null) {\n return null;\n }\n // This is a nested array, recurse.\n if (Array.isArray(item)) {\n return _this.resolveSubSelectedArray(field, isClientFieldDescendant, item, execContext);\n }\n // This is an object, run the selection set on it.\n if (field.selectionSet) {\n return _this.resolveSelectionSet(field.selectionSet, isClientFieldDescendant, item, execContext);\n }\n }));\n };\n // Collect selection nodes on paths from document root down to all @client directives.\n // This function takes into account transitive fragment spreads.\n // Complexity equals to a single `visit` over the full document.\n LocalState.prototype.collectSelectionsToResolve = function (mainDefinition, fragmentMap) {\n var isSingleASTNode = function (node) { return !Array.isArray(node); };\n var selectionsToResolveCache = this.selectionsToResolveCache;\n function collectByDefinition(definitionNode) {\n if (!selectionsToResolveCache.has(definitionNode)) {\n var matches_1 = new Set();\n selectionsToResolveCache.set(definitionNode, matches_1);\n visit(definitionNode, {\n Directive: function (node, _, __, ___, ancestors) {\n if (node.name.value === \"client\") {\n ancestors.forEach(function (node) {\n if (isSingleASTNode(node) && isSelectionNode(node)) {\n matches_1.add(node);\n }\n });\n }\n },\n FragmentSpread: function (spread, _, __, ___, ancestors) {\n var fragment = fragmentMap[spread.name.value];\n invariant(fragment, 19, spread.name.value);\n var fragmentSelections = collectByDefinition(fragment);\n if (fragmentSelections.size > 0) {\n // Fragment for this spread contains @client directive (either directly or transitively)\n // Collect selection nodes on paths from the root down to fields with the @client directive\n ancestors.forEach(function (node) {\n if (isSingleASTNode(node) && isSelectionNode(node)) {\n matches_1.add(node);\n }\n });\n matches_1.add(spread);\n fragmentSelections.forEach(function (selection) {\n matches_1.add(selection);\n });\n }\n },\n });\n }\n return selectionsToResolveCache.get(definitionNode);\n }\n return collectByDefinition(mainDefinition);\n };\n return LocalState;\n}());\nexport { LocalState };\n","import { __assign } from \"tslib\";\nimport { equal } from \"@wry/equality\";\nimport { DeepMerger } from \"../utilities/index.js\";\nimport { mergeIncrementalData } from \"../utilities/index.js\";\nimport { reobserveCacheFirst } from \"./ObservableQuery.js\";\nimport { isNonEmptyArray, graphQLResultHasError, canUseWeakMap, } from \"../utilities/index.js\";\nimport { NetworkStatus, isNetworkRequestInFlight } from \"./networkStatus.js\";\nvar destructiveMethodCounts = new (canUseWeakMap ? WeakMap : Map)();\nfunction wrapDestructiveCacheMethod(cache, methodName) {\n var original = cache[methodName];\n if (typeof original === \"function\") {\n // @ts-expect-error this is just too generic to be typed correctly\n cache[methodName] = function () {\n destructiveMethodCounts.set(cache, \n // The %1e15 allows the count to wrap around to 0 safely every\n // quadrillion evictions, so there's no risk of overflow. To be\n // clear, this is more of a pedantic principle than something\n // that matters in any conceivable practical scenario.\n (destructiveMethodCounts.get(cache) + 1) % 1e15);\n // @ts-expect-error this is just too generic to be typed correctly\n return original.apply(this, arguments);\n };\n }\n}\nfunction cancelNotifyTimeout(info) {\n if (info[\"notifyTimeout\"]) {\n clearTimeout(info[\"notifyTimeout\"]);\n info[\"notifyTimeout\"] = void 0;\n }\n}\n// A QueryInfo object represents a single query managed by the\n// QueryManager, which tracks all QueryInfo objects by queryId in its\n// this.queries Map. QueryInfo objects store the latest results and errors\n// for the given query, and are responsible for reporting those results to\n// the corresponding ObservableQuery, via the QueryInfo.notify method.\n// Results are reported asynchronously whenever setDiff marks the\n// QueryInfo object as dirty, though a call to the QueryManager's\n// broadcastQueries method may trigger the notification before it happens\n// automatically. This class used to be a simple interface type without\n// any field privacy or meaningful methods, which is why it still has so\n// many public fields. The effort to lock down and simplify the QueryInfo\n// interface is ongoing, and further improvements are welcome.\nvar QueryInfo = /** @class */ (function () {\n function QueryInfo(queryManager, queryId) {\n if (queryId === void 0) { queryId = queryManager.generateQueryId(); }\n this.queryId = queryId;\n this.listeners = new Set();\n this.document = null;\n this.lastRequestId = 1;\n this.stopped = false;\n this.dirty = false;\n this.observableQuery = null;\n var cache = (this.cache = queryManager.cache);\n // Track how often cache.evict is called, since we want eviction to\n // override the feud-stopping logic in the markResult method, by\n // causing shouldWrite to return true. Wrapping the cache.evict method\n // is a bit of a hack, but it saves us from having to make eviction\n // counting an official part of the ApolloCache API.\n if (!destructiveMethodCounts.has(cache)) {\n destructiveMethodCounts.set(cache, 0);\n wrapDestructiveCacheMethod(cache, \"evict\");\n wrapDestructiveCacheMethod(cache, \"modify\");\n wrapDestructiveCacheMethod(cache, \"reset\");\n }\n }\n QueryInfo.prototype.init = function (query) {\n var networkStatus = query.networkStatus || NetworkStatus.loading;\n if (this.variables &&\n this.networkStatus !== NetworkStatus.loading &&\n !equal(this.variables, query.variables)) {\n networkStatus = NetworkStatus.setVariables;\n }\n if (!equal(query.variables, this.variables)) {\n this.lastDiff = void 0;\n }\n Object.assign(this, {\n document: query.document,\n variables: query.variables,\n networkError: null,\n graphQLErrors: this.graphQLErrors || [],\n networkStatus: networkStatus,\n });\n if (query.observableQuery) {\n this.setObservableQuery(query.observableQuery);\n }\n if (query.lastRequestId) {\n this.lastRequestId = query.lastRequestId;\n }\n return this;\n };\n QueryInfo.prototype.reset = function () {\n cancelNotifyTimeout(this);\n this.dirty = false;\n };\n QueryInfo.prototype.resetDiff = function () {\n this.lastDiff = void 0;\n };\n QueryInfo.prototype.getDiff = function () {\n var options = this.getDiffOptions();\n if (this.lastDiff && equal(options, this.lastDiff.options)) {\n return this.lastDiff.diff;\n }\n this.updateWatch(this.variables);\n var oq = this.observableQuery;\n if (oq && oq.options.fetchPolicy === \"no-cache\") {\n return { complete: false };\n }\n var diff = this.cache.diff(options);\n this.updateLastDiff(diff, options);\n return diff;\n };\n QueryInfo.prototype.updateLastDiff = function (diff, options) {\n this.lastDiff =\n diff ?\n {\n diff: diff,\n options: options || this.getDiffOptions(),\n }\n : void 0;\n };\n QueryInfo.prototype.getDiffOptions = function (variables) {\n var _a;\n if (variables === void 0) { variables = this.variables; }\n return {\n query: this.document,\n variables: variables,\n returnPartialData: true,\n optimistic: true,\n canonizeResults: (_a = this.observableQuery) === null || _a === void 0 ? void 0 : _a.options.canonizeResults,\n };\n };\n QueryInfo.prototype.setDiff = function (diff) {\n var _this = this;\n var oldDiff = this.lastDiff && this.lastDiff.diff;\n this.updateLastDiff(diff);\n if (!this.dirty && !equal(oldDiff && oldDiff.result, diff && diff.result)) {\n this.dirty = true;\n if (!this.notifyTimeout) {\n this.notifyTimeout = setTimeout(function () { return _this.notify(); }, 0);\n }\n }\n };\n QueryInfo.prototype.setObservableQuery = function (oq) {\n var _this = this;\n if (oq === this.observableQuery)\n return;\n if (this.oqListener) {\n this.listeners.delete(this.oqListener);\n }\n this.observableQuery = oq;\n if (oq) {\n oq[\"queryInfo\"] = this;\n this.listeners.add((this.oqListener = function () {\n var diff = _this.getDiff();\n if (diff.fromOptimisticTransaction) {\n // If this diff came from an optimistic transaction, deliver the\n // current cache data to the ObservableQuery, but don't perform a\n // reobservation, since oq.reobserveCacheFirst might make a network\n // request, and we never want to trigger network requests in the\n // middle of optimistic updates.\n oq[\"observe\"]();\n }\n else {\n // Otherwise, make the ObservableQuery \"reobserve\" the latest data\n // using a temporary fetch policy of \"cache-first\", so complete cache\n // results have a chance to be delivered without triggering additional\n // network requests, even when options.fetchPolicy is \"network-only\"\n // or \"cache-and-network\". All other fetch policies are preserved by\n // this method, and are handled by calling oq.reobserve(). If this\n // reobservation is spurious, isDifferentFromLastResult still has a\n // chance to catch it before delivery to ObservableQuery subscribers.\n reobserveCacheFirst(oq);\n }\n }));\n }\n else {\n delete this.oqListener;\n }\n };\n QueryInfo.prototype.notify = function () {\n var _this = this;\n cancelNotifyTimeout(this);\n if (this.shouldNotify()) {\n this.listeners.forEach(function (listener) { return listener(_this); });\n }\n this.dirty = false;\n };\n QueryInfo.prototype.shouldNotify = function () {\n if (!this.dirty || !this.listeners.size) {\n return false;\n }\n if (isNetworkRequestInFlight(this.networkStatus) && this.observableQuery) {\n var fetchPolicy = this.observableQuery.options.fetchPolicy;\n if (fetchPolicy !== \"cache-only\" && fetchPolicy !== \"cache-and-network\") {\n return false;\n }\n }\n return true;\n };\n QueryInfo.prototype.stop = function () {\n if (!this.stopped) {\n this.stopped = true;\n // Cancel the pending notify timeout\n this.reset();\n this.cancel();\n // Revert back to the no-op version of cancel inherited from\n // QueryInfo.prototype.\n this.cancel = QueryInfo.prototype.cancel;\n var oq = this.observableQuery;\n if (oq)\n oq.stopPolling();\n }\n };\n // This method is a no-op by default, until/unless overridden by the\n // updateWatch method.\n QueryInfo.prototype.cancel = function () { };\n QueryInfo.prototype.updateWatch = function (variables) {\n var _this = this;\n if (variables === void 0) { variables = this.variables; }\n var oq = this.observableQuery;\n if (oq && oq.options.fetchPolicy === \"no-cache\") {\n return;\n }\n var watchOptions = __assign(__assign({}, this.getDiffOptions(variables)), { watcher: this, callback: function (diff) { return _this.setDiff(diff); } });\n if (!this.lastWatch || !equal(watchOptions, this.lastWatch)) {\n this.cancel();\n this.cancel = this.cache.watch((this.lastWatch = watchOptions));\n }\n };\n QueryInfo.prototype.resetLastWrite = function () {\n this.lastWrite = void 0;\n };\n QueryInfo.prototype.shouldWrite = function (result, variables) {\n var lastWrite = this.lastWrite;\n return !(lastWrite &&\n // If cache.evict has been called since the last time we wrote this\n // data into the cache, there's a chance writing this result into\n // the cache will repair what was evicted.\n lastWrite.dmCount === destructiveMethodCounts.get(this.cache) &&\n equal(variables, lastWrite.variables) &&\n equal(result.data, lastWrite.result.data));\n };\n QueryInfo.prototype.markResult = function (result, document, options, cacheWriteBehavior) {\n var _this = this;\n var merger = new DeepMerger();\n var graphQLErrors = isNonEmptyArray(result.errors) ? result.errors.slice(0) : [];\n // Cancel the pending notify timeout (if it exists) to prevent extraneous network\n // requests. To allow future notify timeouts, diff and dirty are reset as well.\n this.reset();\n if (\"incremental\" in result && isNonEmptyArray(result.incremental)) {\n var mergedData = mergeIncrementalData(this.getDiff().result, result);\n result.data = mergedData;\n // Detect the first chunk of a deferred query and merge it with existing\n // cache data. This ensures a `cache-first` fetch policy that returns\n // partial cache data or a `cache-and-network` fetch policy that already\n // has full data in the cache does not complain when trying to merge the\n // initial deferred server data with existing cache data.\n }\n else if (\"hasNext\" in result && result.hasNext) {\n var diff = this.getDiff();\n result.data = merger.merge(diff.result, result.data);\n }\n this.graphQLErrors = graphQLErrors;\n if (options.fetchPolicy === \"no-cache\") {\n this.updateLastDiff({ result: result.data, complete: true }, this.getDiffOptions(options.variables));\n }\n else if (cacheWriteBehavior !== 0 /* CacheWriteBehavior.FORBID */) {\n if (shouldWriteResult(result, options.errorPolicy)) {\n // Using a transaction here so we have a chance to read the result\n // back from the cache before the watch callback fires as a result\n // of writeQuery, so we can store the new diff quietly and ignore\n // it when we receive it redundantly from the watch callback.\n this.cache.performTransaction(function (cache) {\n if (_this.shouldWrite(result, options.variables)) {\n cache.writeQuery({\n query: document,\n data: result.data,\n variables: options.variables,\n overwrite: cacheWriteBehavior === 1 /* CacheWriteBehavior.OVERWRITE */,\n });\n _this.lastWrite = {\n result: result,\n variables: options.variables,\n dmCount: destructiveMethodCounts.get(_this.cache),\n };\n }\n else {\n // If result is the same as the last result we received from\n // the network (and the variables match too), avoid writing\n // result into the cache again. The wisdom of skipping this\n // cache write is far from obvious, since any cache write\n // could be the one that puts the cache back into a desired\n // state, fixing corruption or missing data. However, if we\n // always write every network result into the cache, we enable\n // feuds between queries competing to update the same data in\n // incompatible ways, which can lead to an endless cycle of\n // cache broadcasts and useless network requests. As with any\n // feud, eventually one side must step back from the brink,\n // letting the other side(s) have the last word(s). There may\n // be other points where we could break this cycle, such as\n // silencing the broadcast for cache.writeQuery (not a good\n // idea, since it just delays the feud a bit) or somehow\n // avoiding the network request that just happened (also bad,\n // because the server could return useful new data). All\n // options considered, skipping this cache write seems to be\n // the least damaging place to break the cycle, because it\n // reflects the intuition that we recently wrote this exact\n // result into the cache, so the cache *should* already/still\n // contain this data. If some other query has clobbered that\n // data in the meantime, that's too bad, but there will be no\n // winners if every query blindly reverts to its own version\n // of the data. This approach also gives the network a chance\n // to return new data, which will be written into the cache as\n // usual, notifying only those queries that are directly\n // affected by the cache updates, as usual. In the future, an\n // even more sophisticated cache could perhaps prevent or\n // mitigate the clobbering somehow, but that would make this\n // particular cache write even less important, and thus\n // skipping it would be even safer than it is today.\n if (_this.lastDiff && _this.lastDiff.diff.complete) {\n // Reuse data from the last good (complete) diff that we\n // received, when possible.\n result.data = _this.lastDiff.diff.result;\n return;\n }\n // If the previous this.diff was incomplete, fall through to\n // re-reading the latest data with cache.diff, below.\n }\n var diffOptions = _this.getDiffOptions(options.variables);\n var diff = cache.diff(diffOptions);\n // In case the QueryManager stops this QueryInfo before its\n // results are delivered, it's important to avoid restarting the\n // cache watch when markResult is called. We also avoid updating\n // the watch if we are writing a result that doesn't match the current\n // variables to avoid race conditions from broadcasting the wrong\n // result.\n if (!_this.stopped && equal(_this.variables, options.variables)) {\n // Any time we're about to update this.diff, we need to make\n // sure we've started watching the cache.\n _this.updateWatch(options.variables);\n }\n // If we're allowed to write to the cache, and we can read a\n // complete result from the cache, update result.data to be the\n // result from the cache, rather than the raw network result.\n // Set without setDiff to avoid triggering a notify call, since\n // we have other ways of notifying for this result.\n _this.updateLastDiff(diff, diffOptions);\n if (diff.complete) {\n result.data = diff.result;\n }\n });\n }\n else {\n this.lastWrite = void 0;\n }\n }\n };\n QueryInfo.prototype.markReady = function () {\n this.networkError = null;\n return (this.networkStatus = NetworkStatus.ready);\n };\n QueryInfo.prototype.markError = function (error) {\n this.networkStatus = NetworkStatus.error;\n this.lastWrite = void 0;\n this.reset();\n if (error.graphQLErrors) {\n this.graphQLErrors = error.graphQLErrors;\n }\n if (error.networkError) {\n this.networkError = error.networkError;\n }\n return error;\n };\n return QueryInfo;\n}());\nexport { QueryInfo };\nexport function shouldWriteResult(result, errorPolicy) {\n if (errorPolicy === void 0) { errorPolicy = \"none\"; }\n var ignoreErrors = errorPolicy === \"ignore\" || errorPolicy === \"all\";\n var writeWithErrors = !graphQLResultHasError(result);\n if (!writeWithErrors && ignoreErrors && result.data) {\n writeWithErrors = true;\n }\n return writeWithErrors;\n}\n","import { __assign, __awaiter, __generator } from \"tslib\";\nimport { invariant, newInvariantError } from \"../utilities/globals/index.js\";\nimport { equal } from \"@wry/equality\";\nimport { execute } from \"../link/core/index.js\";\nimport { hasDirectives, isExecutionPatchIncrementalResult, isExecutionPatchResult, removeDirectivesFromDocument, } from \"../utilities/index.js\";\nimport { canonicalStringify } from \"../cache/index.js\";\nimport { getDefaultValues, getOperationDefinition, getOperationName, hasClientExports, graphQLResultHasError, getGraphQLErrorsFromResult, Observable, asyncMap, isNonEmptyArray, Concast, makeUniqueId, isDocumentNode, isNonNullObject, DocumentTransform, } from \"../utilities/index.js\";\nimport { mergeIncrementalData } from \"../utilities/common/incrementalResult.js\";\nimport { ApolloError, isApolloError, graphQLResultHasProtocolErrors, } from \"../errors/index.js\";\nimport { ObservableQuery, logMissingFieldErrors } from \"./ObservableQuery.js\";\nimport { NetworkStatus, isNetworkRequestInFlight } from \"./networkStatus.js\";\nimport { LocalState } from \"./LocalState.js\";\nimport { QueryInfo, shouldWriteResult, } from \"./QueryInfo.js\";\nimport { PROTOCOL_ERRORS_SYMBOL } from \"../errors/index.js\";\nimport { print } from \"../utilities/index.js\";\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar IGNORE = Object.create(null);\nimport { Trie } from \"@wry/trie\";\nimport { AutoCleanedWeakCache, cacheSizes } from \"../utilities/index.js\";\nvar QueryManager = /** @class */ (function () {\n function QueryManager(_a) {\n var cache = _a.cache, link = _a.link, defaultOptions = _a.defaultOptions, documentTransform = _a.documentTransform, _b = _a.queryDeduplication, queryDeduplication = _b === void 0 ? false : _b, onBroadcast = _a.onBroadcast, _c = _a.ssrMode, ssrMode = _c === void 0 ? false : _c, _d = _a.clientAwareness, clientAwareness = _d === void 0 ? {} : _d, localState = _a.localState, _e = _a.assumeImmutableResults, assumeImmutableResults = _e === void 0 ? !!cache.assumeImmutableResults : _e, defaultContext = _a.defaultContext;\n var _this = this;\n this.clientAwareness = {};\n // All the queries that the QueryManager is currently managing (not\n // including mutations and subscriptions).\n this.queries = new Map();\n // Maps from queryId strings to Promise rejection functions for\n // currently active queries and fetches.\n // Use protected instead of private field so\n // @apollo/experimental-nextjs-app-support can access type info.\n this.fetchCancelFns = new Map();\n this.transformCache = new AutoCleanedWeakCache(cacheSizes[\"queryManager.getDocumentInfo\"] ||\n 2000 /* defaultCacheSizes[\"queryManager.getDocumentInfo\"] */);\n this.queryIdCounter = 1;\n this.requestIdCounter = 1;\n this.mutationIdCounter = 1;\n // Use protected instead of private field so\n // @apollo/experimental-nextjs-app-support can access type info.\n this.inFlightLinkObservables = new Trie(false);\n var defaultDocumentTransform = new DocumentTransform(function (document) { return _this.cache.transformDocument(document); }, \n // Allow the apollo cache to manage its own transform caches\n { cache: false });\n this.cache = cache;\n this.link = link;\n this.defaultOptions = defaultOptions || Object.create(null);\n this.queryDeduplication = queryDeduplication;\n this.clientAwareness = clientAwareness;\n this.localState = localState || new LocalState({ cache: cache });\n this.ssrMode = ssrMode;\n this.assumeImmutableResults = assumeImmutableResults;\n this.documentTransform =\n documentTransform ?\n defaultDocumentTransform\n .concat(documentTransform)\n // The custom document transform may add new fragment spreads or new\n // field selections, so we want to give the cache a chance to run\n // again. For example, the InMemoryCache adds __typename to field\n // selections and fragments from the fragment registry.\n .concat(defaultDocumentTransform)\n : defaultDocumentTransform;\n this.defaultContext = defaultContext || Object.create(null);\n if ((this.onBroadcast = onBroadcast)) {\n this.mutationStore = Object.create(null);\n }\n }\n /**\n * Call this method to terminate any active query processes, making it safe\n * to dispose of this QueryManager instance.\n */\n QueryManager.prototype.stop = function () {\n var _this = this;\n this.queries.forEach(function (_info, queryId) {\n _this.stopQueryNoBroadcast(queryId);\n });\n this.cancelPendingFetches(newInvariantError(25));\n };\n QueryManager.prototype.cancelPendingFetches = function (error) {\n this.fetchCancelFns.forEach(function (cancel) { return cancel(error); });\n this.fetchCancelFns.clear();\n };\n QueryManager.prototype.mutate = function (_a) {\n var _b, _c;\n var mutation = _a.mutation, variables = _a.variables, optimisticResponse = _a.optimisticResponse, updateQueries = _a.updateQueries, _d = _a.refetchQueries, refetchQueries = _d === void 0 ? [] : _d, _e = _a.awaitRefetchQueries, awaitRefetchQueries = _e === void 0 ? false : _e, updateWithProxyFn = _a.update, onQueryUpdated = _a.onQueryUpdated, _f = _a.fetchPolicy, fetchPolicy = _f === void 0 ? ((_b = this.defaultOptions.mutate) === null || _b === void 0 ? void 0 : _b.fetchPolicy) || \"network-only\" : _f, _g = _a.errorPolicy, errorPolicy = _g === void 0 ? ((_c = this.defaultOptions.mutate) === null || _c === void 0 ? void 0 : _c.errorPolicy) || \"none\" : _g, keepRootFields = _a.keepRootFields, context = _a.context;\n return __awaiter(this, void 0, void 0, function () {\n var mutationId, hasClientExports, mutationStoreValue, isOptimistic, self;\n return __generator(this, function (_h) {\n switch (_h.label) {\n case 0:\n invariant(mutation, 26);\n invariant(fetchPolicy === \"network-only\" || fetchPolicy === \"no-cache\", 27);\n mutationId = this.generateMutationId();\n mutation = this.cache.transformForLink(this.transform(mutation));\n hasClientExports = this.getDocumentInfo(mutation).hasClientExports;\n variables = this.getVariables(mutation, variables);\n if (!hasClientExports) return [3 /*break*/, 2];\n return [4 /*yield*/, this.localState.addExportedVariables(mutation, variables, context)];\n case 1:\n variables = (_h.sent());\n _h.label = 2;\n case 2:\n mutationStoreValue = this.mutationStore &&\n (this.mutationStore[mutationId] = {\n mutation: mutation,\n variables: variables,\n loading: true,\n error: null,\n });\n isOptimistic = optimisticResponse &&\n this.markMutationOptimistic(optimisticResponse, {\n mutationId: mutationId,\n document: mutation,\n variables: variables,\n fetchPolicy: fetchPolicy,\n errorPolicy: errorPolicy,\n context: context,\n updateQueries: updateQueries,\n update: updateWithProxyFn,\n keepRootFields: keepRootFields,\n });\n this.broadcastQueries();\n self = this;\n return [2 /*return*/, new Promise(function (resolve, reject) {\n return asyncMap(self.getObservableFromLink(mutation, __assign(__assign({}, context), { optimisticResponse: isOptimistic ? optimisticResponse : void 0 }), variables, false), function (result) {\n if (graphQLResultHasError(result) && errorPolicy === \"none\") {\n throw new ApolloError({\n graphQLErrors: getGraphQLErrorsFromResult(result),\n });\n }\n if (mutationStoreValue) {\n mutationStoreValue.loading = false;\n mutationStoreValue.error = null;\n }\n var storeResult = __assign({}, result);\n if (typeof refetchQueries === \"function\") {\n refetchQueries = refetchQueries(storeResult);\n }\n if (errorPolicy === \"ignore\" && graphQLResultHasError(storeResult)) {\n delete storeResult.errors;\n }\n return self.markMutationResult({\n mutationId: mutationId,\n result: storeResult,\n document: mutation,\n variables: variables,\n fetchPolicy: fetchPolicy,\n errorPolicy: errorPolicy,\n context: context,\n update: updateWithProxyFn,\n updateQueries: updateQueries,\n awaitRefetchQueries: awaitRefetchQueries,\n refetchQueries: refetchQueries,\n removeOptimistic: isOptimistic ? mutationId : void 0,\n onQueryUpdated: onQueryUpdated,\n keepRootFields: keepRootFields,\n });\n }).subscribe({\n next: function (storeResult) {\n self.broadcastQueries();\n // Since mutations might receive multiple payloads from the\n // ApolloLink chain (e.g. when used with @defer),\n // we resolve with a SingleExecutionResult or after the final\n // ExecutionPatchResult has arrived and we have assembled the\n // multipart response into a single result.\n if (!(\"hasNext\" in storeResult) || storeResult.hasNext === false) {\n resolve(storeResult);\n }\n },\n error: function (err) {\n if (mutationStoreValue) {\n mutationStoreValue.loading = false;\n mutationStoreValue.error = err;\n }\n if (isOptimistic) {\n self.cache.removeOptimistic(mutationId);\n }\n self.broadcastQueries();\n reject(err instanceof ApolloError ? err : (new ApolloError({\n networkError: err,\n })));\n },\n });\n })];\n }\n });\n });\n };\n QueryManager.prototype.markMutationResult = function (mutation, cache) {\n var _this = this;\n if (cache === void 0) { cache = this.cache; }\n var result = mutation.result;\n var cacheWrites = [];\n var skipCache = mutation.fetchPolicy === \"no-cache\";\n if (!skipCache && shouldWriteResult(result, mutation.errorPolicy)) {\n if (!isExecutionPatchIncrementalResult(result)) {\n cacheWrites.push({\n result: result.data,\n dataId: \"ROOT_MUTATION\",\n query: mutation.document,\n variables: mutation.variables,\n });\n }\n if (isExecutionPatchIncrementalResult(result) &&\n isNonEmptyArray(result.incremental)) {\n var diff = cache.diff({\n id: \"ROOT_MUTATION\",\n // The cache complains if passed a mutation where it expects a\n // query, so we transform mutations and subscriptions to queries\n // (only once, thanks to this.transformCache).\n query: this.getDocumentInfo(mutation.document).asQuery,\n variables: mutation.variables,\n optimistic: false,\n returnPartialData: true,\n });\n var mergedData = void 0;\n if (diff.result) {\n mergedData = mergeIncrementalData(diff.result, result);\n }\n if (typeof mergedData !== \"undefined\") {\n // cast the ExecutionPatchResult to FetchResult here since\n // ExecutionPatchResult never has `data` when returned from the server\n result.data = mergedData;\n cacheWrites.push({\n result: mergedData,\n dataId: \"ROOT_MUTATION\",\n query: mutation.document,\n variables: mutation.variables,\n });\n }\n }\n var updateQueries_1 = mutation.updateQueries;\n if (updateQueries_1) {\n this.queries.forEach(function (_a, queryId) {\n var observableQuery = _a.observableQuery;\n var queryName = observableQuery && observableQuery.queryName;\n if (!queryName || !hasOwnProperty.call(updateQueries_1, queryName)) {\n return;\n }\n var updater = updateQueries_1[queryName];\n var _b = _this.queries.get(queryId), document = _b.document, variables = _b.variables;\n // Read the current query result from the store.\n var _c = cache.diff({\n query: document,\n variables: variables,\n returnPartialData: true,\n optimistic: false,\n }), currentQueryResult = _c.result, complete = _c.complete;\n if (complete && currentQueryResult) {\n // Run our reducer using the current query result and the mutation result.\n var nextQueryResult = updater(currentQueryResult, {\n mutationResult: result,\n queryName: (document && getOperationName(document)) || void 0,\n queryVariables: variables,\n });\n // Write the modified result back into the store if we got a new result.\n if (nextQueryResult) {\n cacheWrites.push({\n result: nextQueryResult,\n dataId: \"ROOT_QUERY\",\n query: document,\n variables: variables,\n });\n }\n }\n });\n }\n }\n if (cacheWrites.length > 0 ||\n (mutation.refetchQueries || \"\").length > 0 ||\n mutation.update ||\n mutation.onQueryUpdated ||\n mutation.removeOptimistic) {\n var results_1 = [];\n this.refetchQueries({\n updateCache: function (cache) {\n if (!skipCache) {\n cacheWrites.forEach(function (write) { return cache.write(write); });\n }\n // If the mutation has some writes associated with it then we need to\n // apply those writes to the store by running this reducer again with\n // a write action.\n var update = mutation.update;\n // Determine whether result is a SingleExecutionResult,\n // or the final ExecutionPatchResult.\n var isFinalResult = !isExecutionPatchResult(result) ||\n (isExecutionPatchIncrementalResult(result) && !result.hasNext);\n if (update) {\n if (!skipCache) {\n // Re-read the ROOT_MUTATION data we just wrote into the cache\n // (the first cache.write call in the cacheWrites.forEach loop\n // above), so field read functions have a chance to run for\n // fields within mutation result objects.\n var diff = cache.diff({\n id: \"ROOT_MUTATION\",\n // The cache complains if passed a mutation where it expects a\n // query, so we transform mutations and subscriptions to queries\n // (only once, thanks to this.transformCache).\n query: _this.getDocumentInfo(mutation.document).asQuery,\n variables: mutation.variables,\n optimistic: false,\n returnPartialData: true,\n });\n if (diff.complete) {\n result = __assign(__assign({}, result), { data: diff.result });\n if (\"incremental\" in result) {\n delete result.incremental;\n }\n if (\"hasNext\" in result) {\n delete result.hasNext;\n }\n }\n }\n // If we've received the whole response,\n // either a SingleExecutionResult or the final ExecutionPatchResult,\n // call the update function.\n if (isFinalResult) {\n update(cache, result, {\n context: mutation.context,\n variables: mutation.variables,\n });\n }\n }\n // TODO Do this with cache.evict({ id: 'ROOT_MUTATION' }) but make it\n // shallow to allow rolling back optimistic evictions.\n if (!skipCache && !mutation.keepRootFields && isFinalResult) {\n cache.modify({\n id: \"ROOT_MUTATION\",\n fields: function (value, _a) {\n var fieldName = _a.fieldName, DELETE = _a.DELETE;\n return fieldName === \"__typename\" ? value : DELETE;\n },\n });\n }\n },\n include: mutation.refetchQueries,\n // Write the final mutation.result to the root layer of the cache.\n optimistic: false,\n // Remove the corresponding optimistic layer at the same time as we\n // write the final non-optimistic result.\n removeOptimistic: mutation.removeOptimistic,\n // Let the caller of client.mutate optionally determine the refetching\n // behavior for watched queries after the mutation.update function runs.\n // If no onQueryUpdated function was provided for this mutation, pass\n // null instead of undefined to disable the default refetching behavior.\n onQueryUpdated: mutation.onQueryUpdated || null,\n }).forEach(function (result) { return results_1.push(result); });\n if (mutation.awaitRefetchQueries || mutation.onQueryUpdated) {\n // Returning a promise here makes the mutation await that promise, so we\n // include results in that promise's work if awaitRefetchQueries or an\n // onQueryUpdated function was specified.\n return Promise.all(results_1).then(function () { return result; });\n }\n }\n return Promise.resolve(result);\n };\n QueryManager.prototype.markMutationOptimistic = function (optimisticResponse, mutation) {\n var _this = this;\n var data = typeof optimisticResponse === \"function\" ?\n optimisticResponse(mutation.variables, { IGNORE: IGNORE })\n : optimisticResponse;\n if (data === IGNORE) {\n return false;\n }\n this.cache.recordOptimisticTransaction(function (cache) {\n try {\n _this.markMutationResult(__assign(__assign({}, mutation), { result: { data: data } }), cache);\n }\n catch (error) {\n globalThis.__DEV__ !== false && invariant.error(error);\n }\n }, mutation.mutationId);\n return true;\n };\n QueryManager.prototype.fetchQuery = function (queryId, options, networkStatus) {\n return this.fetchConcastWithInfo(queryId, options, networkStatus).concast\n .promise;\n };\n QueryManager.prototype.getQueryStore = function () {\n var store = Object.create(null);\n this.queries.forEach(function (info, queryId) {\n store[queryId] = {\n variables: info.variables,\n networkStatus: info.networkStatus,\n networkError: info.networkError,\n graphQLErrors: info.graphQLErrors,\n };\n });\n return store;\n };\n QueryManager.prototype.resetErrors = function (queryId) {\n var queryInfo = this.queries.get(queryId);\n if (queryInfo) {\n queryInfo.networkError = undefined;\n queryInfo.graphQLErrors = [];\n }\n };\n QueryManager.prototype.transform = function (document) {\n return this.documentTransform.transformDocument(document);\n };\n QueryManager.prototype.getDocumentInfo = function (document) {\n var transformCache = this.transformCache;\n if (!transformCache.has(document)) {\n var cacheEntry = {\n // TODO These three calls (hasClientExports, shouldForceResolvers, and\n // usesNonreactiveDirective) are performing independent full traversals\n // of the transformed document. We should consider merging these\n // traversals into a single pass in the future, though the work is\n // cached after the first time.\n hasClientExports: hasClientExports(document),\n hasForcedResolvers: this.localState.shouldForceResolvers(document),\n hasNonreactiveDirective: hasDirectives([\"nonreactive\"], document),\n clientQuery: this.localState.clientQuery(document),\n serverQuery: removeDirectivesFromDocument([\n { name: \"client\", remove: true },\n { name: \"connection\" },\n { name: \"nonreactive\" },\n ], document),\n defaultVars: getDefaultValues(getOperationDefinition(document)),\n // Transform any mutation or subscription operations to query operations\n // so we can read/write them from/to the cache.\n asQuery: __assign(__assign({}, document), { definitions: document.definitions.map(function (def) {\n if (def.kind === \"OperationDefinition\" &&\n def.operation !== \"query\") {\n return __assign(__assign({}, def), { operation: \"query\" });\n }\n return def;\n }) }),\n };\n transformCache.set(document, cacheEntry);\n }\n return transformCache.get(document);\n };\n QueryManager.prototype.getVariables = function (document, variables) {\n return __assign(__assign({}, this.getDocumentInfo(document).defaultVars), variables);\n };\n QueryManager.prototype.watchQuery = function (options) {\n var query = this.transform(options.query);\n // assign variable default values if supplied\n // NOTE: We don't modify options.query here with the transformed query to\n // ensure observable.options.query is set to the raw untransformed query.\n options = __assign(__assign({}, options), { variables: this.getVariables(query, options.variables) });\n if (typeof options.notifyOnNetworkStatusChange === \"undefined\") {\n options.notifyOnNetworkStatusChange = false;\n }\n var queryInfo = new QueryInfo(this);\n var observable = new ObservableQuery({\n queryManager: this,\n queryInfo: queryInfo,\n options: options,\n });\n observable[\"lastQuery\"] = query;\n this.queries.set(observable.queryId, queryInfo);\n // We give queryInfo the transformed query to ensure the first cache diff\n // uses the transformed query instead of the raw query\n queryInfo.init({\n document: query,\n observableQuery: observable,\n variables: observable.variables,\n });\n return observable;\n };\n QueryManager.prototype.query = function (options, queryId) {\n var _this = this;\n if (queryId === void 0) { queryId = this.generateQueryId(); }\n invariant(options.query, 28);\n invariant(options.query.kind === \"Document\", 29);\n invariant(!options.returnPartialData, 30);\n invariant(!options.pollInterval, 31);\n return this.fetchQuery(queryId, __assign(__assign({}, options), { query: this.transform(options.query) })).finally(function () { return _this.stopQuery(queryId); });\n };\n QueryManager.prototype.generateQueryId = function () {\n return String(this.queryIdCounter++);\n };\n QueryManager.prototype.generateRequestId = function () {\n return this.requestIdCounter++;\n };\n QueryManager.prototype.generateMutationId = function () {\n return String(this.mutationIdCounter++);\n };\n QueryManager.prototype.stopQueryInStore = function (queryId) {\n this.stopQueryInStoreNoBroadcast(queryId);\n this.broadcastQueries();\n };\n QueryManager.prototype.stopQueryInStoreNoBroadcast = function (queryId) {\n var queryInfo = this.queries.get(queryId);\n if (queryInfo)\n queryInfo.stop();\n };\n QueryManager.prototype.clearStore = function (options) {\n if (options === void 0) { options = {\n discardWatches: true,\n }; }\n // Before we have sent the reset action to the store, we can no longer\n // rely on the results returned by in-flight requests since these may\n // depend on values that previously existed in the data portion of the\n // store. So, we cancel the promises and observers that we have issued\n // so far and not yet resolved (in the case of queries).\n this.cancelPendingFetches(newInvariantError(32));\n this.queries.forEach(function (queryInfo) {\n if (queryInfo.observableQuery) {\n // Set loading to true so listeners don't trigger unless they want\n // results with partial data.\n queryInfo.networkStatus = NetworkStatus.loading;\n }\n else {\n queryInfo.stop();\n }\n });\n if (this.mutationStore) {\n this.mutationStore = Object.create(null);\n }\n // begin removing data from the store\n return this.cache.reset(options);\n };\n QueryManager.prototype.getObservableQueries = function (include) {\n var _this = this;\n if (include === void 0) { include = \"active\"; }\n var queries = new Map();\n var queryNamesAndDocs = new Map();\n var legacyQueryOptions = new Set();\n if (Array.isArray(include)) {\n include.forEach(function (desc) {\n if (typeof desc === \"string\") {\n queryNamesAndDocs.set(desc, false);\n }\n else if (isDocumentNode(desc)) {\n queryNamesAndDocs.set(_this.transform(desc), false);\n }\n else if (isNonNullObject(desc) && desc.query) {\n legacyQueryOptions.add(desc);\n }\n });\n }\n this.queries.forEach(function (_a, queryId) {\n var oq = _a.observableQuery, document = _a.document;\n if (oq) {\n if (include === \"all\") {\n queries.set(queryId, oq);\n return;\n }\n var queryName = oq.queryName, fetchPolicy = oq.options.fetchPolicy;\n if (fetchPolicy === \"standby\" ||\n (include === \"active\" && !oq.hasObservers())) {\n return;\n }\n if (include === \"active\" ||\n (queryName && queryNamesAndDocs.has(queryName)) ||\n (document && queryNamesAndDocs.has(document))) {\n queries.set(queryId, oq);\n if (queryName)\n queryNamesAndDocs.set(queryName, true);\n if (document)\n queryNamesAndDocs.set(document, true);\n }\n }\n });\n if (legacyQueryOptions.size) {\n legacyQueryOptions.forEach(function (options) {\n // We will be issuing a fresh network request for this query, so we\n // pre-allocate a new query ID here, using a special prefix to enable\n // cleaning up these temporary queries later, after fetching.\n var queryId = makeUniqueId(\"legacyOneTimeQuery\");\n var queryInfo = _this.getQuery(queryId).init({\n document: options.query,\n variables: options.variables,\n });\n var oq = new ObservableQuery({\n queryManager: _this,\n queryInfo: queryInfo,\n options: __assign(__assign({}, options), { fetchPolicy: \"network-only\" }),\n });\n invariant(oq.queryId === queryId);\n queryInfo.setObservableQuery(oq);\n queries.set(queryId, oq);\n });\n }\n if (globalThis.__DEV__ !== false && queryNamesAndDocs.size) {\n queryNamesAndDocs.forEach(function (included, nameOrDoc) {\n if (!included) {\n globalThis.__DEV__ !== false && invariant.warn(typeof nameOrDoc === \"string\" ? 33 : 34, nameOrDoc);\n }\n });\n }\n return queries;\n };\n QueryManager.prototype.reFetchObservableQueries = function (includeStandby) {\n var _this = this;\n if (includeStandby === void 0) { includeStandby = false; }\n var observableQueryPromises = [];\n this.getObservableQueries(includeStandby ? \"all\" : \"active\").forEach(function (observableQuery, queryId) {\n var fetchPolicy = observableQuery.options.fetchPolicy;\n observableQuery.resetLastResults();\n if (includeStandby ||\n (fetchPolicy !== \"standby\" && fetchPolicy !== \"cache-only\")) {\n observableQueryPromises.push(observableQuery.refetch());\n }\n _this.getQuery(queryId).setDiff(null);\n });\n this.broadcastQueries();\n return Promise.all(observableQueryPromises);\n };\n QueryManager.prototype.setObservableQuery = function (observableQuery) {\n this.getQuery(observableQuery.queryId).setObservableQuery(observableQuery);\n };\n QueryManager.prototype.startGraphQLSubscription = function (_a) {\n var _this = this;\n var query = _a.query, fetchPolicy = _a.fetchPolicy, _b = _a.errorPolicy, errorPolicy = _b === void 0 ? \"none\" : _b, variables = _a.variables, _c = _a.context, context = _c === void 0 ? {} : _c;\n query = this.transform(query);\n variables = this.getVariables(query, variables);\n var makeObservable = function (variables) {\n return _this.getObservableFromLink(query, context, variables).map(function (result) {\n if (fetchPolicy !== \"no-cache\") {\n // the subscription interface should handle not sending us results we no longer subscribe to.\n // XXX I don't think we ever send in an object with errors, but we might in the future...\n if (shouldWriteResult(result, errorPolicy)) {\n _this.cache.write({\n query: query,\n result: result.data,\n dataId: \"ROOT_SUBSCRIPTION\",\n variables: variables,\n });\n }\n _this.broadcastQueries();\n }\n var hasErrors = graphQLResultHasError(result);\n var hasProtocolErrors = graphQLResultHasProtocolErrors(result);\n if (hasErrors || hasProtocolErrors) {\n var errors = {};\n if (hasErrors) {\n errors.graphQLErrors = result.errors;\n }\n if (hasProtocolErrors) {\n errors.protocolErrors = result.extensions[PROTOCOL_ERRORS_SYMBOL];\n }\n // `errorPolicy` is a mechanism for handling GraphQL errors, according\n // to our documentation, so we throw protocol errors regardless of the\n // set error policy.\n if (errorPolicy === \"none\" || hasProtocolErrors) {\n throw new ApolloError(errors);\n }\n }\n if (errorPolicy === \"ignore\") {\n delete result.errors;\n }\n return result;\n });\n };\n if (this.getDocumentInfo(query).hasClientExports) {\n var observablePromise_1 = this.localState\n .addExportedVariables(query, variables, context)\n .then(makeObservable);\n return new Observable(function (observer) {\n var sub = null;\n observablePromise_1.then(function (observable) { return (sub = observable.subscribe(observer)); }, observer.error);\n return function () { return sub && sub.unsubscribe(); };\n });\n }\n return makeObservable(variables);\n };\n QueryManager.prototype.stopQuery = function (queryId) {\n this.stopQueryNoBroadcast(queryId);\n this.broadcastQueries();\n };\n QueryManager.prototype.stopQueryNoBroadcast = function (queryId) {\n this.stopQueryInStoreNoBroadcast(queryId);\n this.removeQuery(queryId);\n };\n QueryManager.prototype.removeQuery = function (queryId) {\n // teardown all links\n // Both `QueryManager.fetchRequest` and `QueryManager.query` create separate promises\n // that each add their reject functions to fetchCancelFns.\n // A query created with `QueryManager.query()` could trigger a `QueryManager.fetchRequest`.\n // The same queryId could have two rejection fns for two promises\n this.fetchCancelFns.delete(queryId);\n if (this.queries.has(queryId)) {\n this.getQuery(queryId).stop();\n this.queries.delete(queryId);\n }\n };\n QueryManager.prototype.broadcastQueries = function () {\n if (this.onBroadcast)\n this.onBroadcast();\n this.queries.forEach(function (info) { return info.notify(); });\n };\n QueryManager.prototype.getLocalState = function () {\n return this.localState;\n };\n QueryManager.prototype.getObservableFromLink = function (query, context, variables, \n // Prefer context.queryDeduplication if specified.\n deduplication) {\n var _this = this;\n var _a;\n if (deduplication === void 0) { deduplication = (_a = context === null || context === void 0 ? void 0 : context.queryDeduplication) !== null && _a !== void 0 ? _a : this.queryDeduplication; }\n var observable;\n var _b = this.getDocumentInfo(query), serverQuery = _b.serverQuery, clientQuery = _b.clientQuery;\n if (serverQuery) {\n var _c = this, inFlightLinkObservables_1 = _c.inFlightLinkObservables, link = _c.link;\n var operation = {\n query: serverQuery,\n variables: variables,\n operationName: getOperationName(serverQuery) || void 0,\n context: this.prepareContext(__assign(__assign({}, context), { forceFetch: !deduplication })),\n };\n context = operation.context;\n if (deduplication) {\n var printedServerQuery_1 = print(serverQuery);\n var varJson_1 = canonicalStringify(variables);\n var entry = inFlightLinkObservables_1.lookup(printedServerQuery_1, varJson_1);\n observable = entry.observable;\n if (!observable) {\n var concast = new Concast([\n execute(link, operation),\n ]);\n observable = entry.observable = concast;\n concast.beforeNext(function () {\n inFlightLinkObservables_1.remove(printedServerQuery_1, varJson_1);\n });\n }\n }\n else {\n observable = new Concast([\n execute(link, operation),\n ]);\n }\n }\n else {\n observable = new Concast([Observable.of({ data: {} })]);\n context = this.prepareContext(context);\n }\n if (clientQuery) {\n observable = asyncMap(observable, function (result) {\n return _this.localState.runResolvers({\n document: clientQuery,\n remoteResult: result,\n context: context,\n variables: variables,\n });\n });\n }\n return observable;\n };\n QueryManager.prototype.getResultsFromLink = function (queryInfo, cacheWriteBehavior, options) {\n var requestId = (queryInfo.lastRequestId = this.generateRequestId());\n // Performing transformForLink here gives this.cache a chance to fill in\n // missing fragment definitions (for example) before sending this document\n // through the link chain.\n var linkDocument = this.cache.transformForLink(options.query);\n return asyncMap(this.getObservableFromLink(linkDocument, options.context, options.variables), function (result) {\n var graphQLErrors = getGraphQLErrorsFromResult(result);\n var hasErrors = graphQLErrors.length > 0;\n // If we interrupted this request by calling getResultsFromLink again\n // with the same QueryInfo object, we ignore the old results.\n if (requestId >= queryInfo.lastRequestId) {\n if (hasErrors && options.errorPolicy === \"none\") {\n // Throwing here effectively calls observer.error.\n throw queryInfo.markError(new ApolloError({\n graphQLErrors: graphQLErrors,\n }));\n }\n // Use linkDocument rather than queryInfo.document so the\n // operation/fragments used to write the result are the same as the\n // ones used to obtain it from the link.\n queryInfo.markResult(result, linkDocument, options, cacheWriteBehavior);\n queryInfo.markReady();\n }\n var aqr = {\n data: result.data,\n loading: false,\n networkStatus: NetworkStatus.ready,\n };\n if (hasErrors && options.errorPolicy !== \"ignore\") {\n aqr.errors = graphQLErrors;\n aqr.networkStatus = NetworkStatus.error;\n }\n return aqr;\n }, function (networkError) {\n var error = isApolloError(networkError) ? networkError : (new ApolloError({ networkError: networkError }));\n // Avoid storing errors from older interrupted queries.\n if (requestId >= queryInfo.lastRequestId) {\n queryInfo.markError(error);\n }\n throw error;\n });\n };\n QueryManager.prototype.fetchConcastWithInfo = function (queryId, options, \n // The initial networkStatus for this fetch, most often\n // NetworkStatus.loading, but also possibly fetchMore, poll, refetch,\n // or setVariables.\n networkStatus, query) {\n var _this = this;\n if (networkStatus === void 0) { networkStatus = NetworkStatus.loading; }\n if (query === void 0) { query = options.query; }\n var variables = this.getVariables(query, options.variables);\n var queryInfo = this.getQuery(queryId);\n var defaults = this.defaultOptions.watchQuery;\n var _a = options.fetchPolicy, fetchPolicy = _a === void 0 ? (defaults && defaults.fetchPolicy) || \"cache-first\" : _a, _b = options.errorPolicy, errorPolicy = _b === void 0 ? (defaults && defaults.errorPolicy) || \"none\" : _b, _c = options.returnPartialData, returnPartialData = _c === void 0 ? false : _c, _d = options.notifyOnNetworkStatusChange, notifyOnNetworkStatusChange = _d === void 0 ? false : _d, _e = options.context, context = _e === void 0 ? {} : _e;\n var normalized = Object.assign({}, options, {\n query: query,\n variables: variables,\n fetchPolicy: fetchPolicy,\n errorPolicy: errorPolicy,\n returnPartialData: returnPartialData,\n notifyOnNetworkStatusChange: notifyOnNetworkStatusChange,\n context: context,\n });\n var fromVariables = function (variables) {\n // Since normalized is always a fresh copy of options, it's safe to\n // modify its properties here, rather than creating yet another new\n // WatchQueryOptions object.\n normalized.variables = variables;\n var sourcesWithInfo = _this.fetchQueryByPolicy(queryInfo, normalized, networkStatus);\n if (\n // If we're in standby, postpone advancing options.fetchPolicy using\n // applyNextFetchPolicy.\n normalized.fetchPolicy !== \"standby\" &&\n // The \"standby\" policy currently returns [] from fetchQueryByPolicy, so\n // this is another way to detect when nothing was done/fetched.\n sourcesWithInfo.sources.length > 0 &&\n queryInfo.observableQuery) {\n queryInfo.observableQuery[\"applyNextFetchPolicy\"](\"after-fetch\", options);\n }\n return sourcesWithInfo;\n };\n // This cancel function needs to be set before the concast is created,\n // in case concast creation synchronously cancels the request.\n var cleanupCancelFn = function () { return _this.fetchCancelFns.delete(queryId); };\n this.fetchCancelFns.set(queryId, function (reason) {\n cleanupCancelFn();\n // This delay ensures the concast variable has been initialized.\n setTimeout(function () { return concast.cancel(reason); });\n });\n var concast, containsDataFromLink;\n // If the query has @export(as: ...) directives, then we need to\n // process those directives asynchronously. When there are no\n // @export directives (the common case), we deliberately avoid\n // wrapping the result of this.fetchQueryByPolicy in a Promise,\n // since the timing of result delivery is (unfortunately) important\n // for backwards compatibility. TODO This code could be simpler if\n // we deprecated and removed LocalState.\n if (this.getDocumentInfo(normalized.query).hasClientExports) {\n concast = new Concast(this.localState\n .addExportedVariables(normalized.query, normalized.variables, normalized.context)\n .then(fromVariables)\n .then(function (sourcesWithInfo) { return sourcesWithInfo.sources; }));\n // there is just no way we can synchronously get the *right* value here,\n // so we will assume `true`, which is the behaviour before the bug fix in\n // #10597. This means that bug is not fixed in that case, and is probably\n // un-fixable with reasonable effort for the edge case of @export as\n // directives.\n containsDataFromLink = true;\n }\n else {\n var sourcesWithInfo = fromVariables(normalized.variables);\n containsDataFromLink = sourcesWithInfo.fromLink;\n concast = new Concast(sourcesWithInfo.sources);\n }\n concast.promise.then(cleanupCancelFn, cleanupCancelFn);\n return {\n concast: concast,\n fromLink: containsDataFromLink,\n };\n };\n QueryManager.prototype.refetchQueries = function (_a) {\n var _this = this;\n var updateCache = _a.updateCache, include = _a.include, _b = _a.optimistic, optimistic = _b === void 0 ? false : _b, _c = _a.removeOptimistic, removeOptimistic = _c === void 0 ? optimistic ? makeUniqueId(\"refetchQueries\") : void 0 : _c, onQueryUpdated = _a.onQueryUpdated;\n var includedQueriesById = new Map();\n if (include) {\n this.getObservableQueries(include).forEach(function (oq, queryId) {\n includedQueriesById.set(queryId, {\n oq: oq,\n lastDiff: _this.getQuery(queryId).getDiff(),\n });\n });\n }\n var results = new Map();\n if (updateCache) {\n this.cache.batch({\n update: updateCache,\n // Since you can perform any combination of cache reads and/or writes in\n // the cache.batch update function, its optimistic option can be either\n // a boolean or a string, representing three distinct modes of\n // operation:\n //\n // * false: read/write only the root layer\n // * true: read/write the topmost layer\n // * string: read/write a fresh optimistic layer with that ID string\n //\n // When typeof optimistic === \"string\", a new optimistic layer will be\n // temporarily created within cache.batch with that string as its ID. If\n // we then pass that same string as the removeOptimistic option, we can\n // make cache.batch immediately remove the optimistic layer after\n // running the updateCache function, triggering only one broadcast.\n //\n // However, the refetchQueries method accepts only true or false for its\n // optimistic option (not string). We interpret true to mean a temporary\n // optimistic layer should be created, to allow efficiently rolling back\n // the effect of the updateCache function, which involves passing a\n // string instead of true as the optimistic option to cache.batch, when\n // refetchQueries receives optimistic: true.\n //\n // In other words, we are deliberately not supporting the use case of\n // writing to an *existing* optimistic layer (using the refetchQueries\n // updateCache function), since that would potentially interfere with\n // other optimistic updates in progress. Instead, you can read/write\n // only the root layer by passing optimistic: false to refetchQueries,\n // or you can read/write a brand new optimistic layer that will be\n // automatically removed by passing optimistic: true.\n optimistic: (optimistic && removeOptimistic) || false,\n // The removeOptimistic option can also be provided by itself, even if\n // optimistic === false, to remove some previously-added optimistic\n // layer safely and efficiently, like we do in markMutationResult.\n //\n // If an explicit removeOptimistic string is provided with optimistic:\n // true, the removeOptimistic string will determine the ID of the\n // temporary optimistic layer, in case that ever matters.\n removeOptimistic: removeOptimistic,\n onWatchUpdated: function (watch, diff, lastDiff) {\n var oq = watch.watcher instanceof QueryInfo && watch.watcher.observableQuery;\n if (oq) {\n if (onQueryUpdated) {\n // Since we're about to handle this query now, remove it from\n // includedQueriesById, in case it was added earlier because of\n // options.include.\n includedQueriesById.delete(oq.queryId);\n var result = onQueryUpdated(oq, diff, lastDiff);\n if (result === true) {\n // The onQueryUpdated function requested the default refetching\n // behavior by returning true.\n result = oq.refetch();\n }\n // Record the result in the results Map, as long as onQueryUpdated\n // did not return false to skip/ignore this result.\n if (result !== false) {\n results.set(oq, result);\n }\n // Allow the default cache broadcast to happen, except when\n // onQueryUpdated returns false.\n return result;\n }\n if (onQueryUpdated !== null) {\n // If we don't have an onQueryUpdated function, and onQueryUpdated\n // was not disabled by passing null, make sure this query is\n // \"included\" like any other options.include-specified query.\n includedQueriesById.set(oq.queryId, { oq: oq, lastDiff: lastDiff, diff: diff });\n }\n }\n },\n });\n }\n if (includedQueriesById.size) {\n includedQueriesById.forEach(function (_a, queryId) {\n var oq = _a.oq, lastDiff = _a.lastDiff, diff = _a.diff;\n var result;\n // If onQueryUpdated is provided, we want to use it for all included\n // queries, even the QueryOptions ones.\n if (onQueryUpdated) {\n if (!diff) {\n var info = oq[\"queryInfo\"];\n info.reset(); // Force info.getDiff() to read from cache.\n diff = info.getDiff();\n }\n result = onQueryUpdated(oq, diff, lastDiff);\n }\n // Otherwise, we fall back to refetching.\n if (!onQueryUpdated || result === true) {\n result = oq.refetch();\n }\n if (result !== false) {\n results.set(oq, result);\n }\n if (queryId.indexOf(\"legacyOneTimeQuery\") >= 0) {\n _this.stopQueryNoBroadcast(queryId);\n }\n });\n }\n if (removeOptimistic) {\n // In case no updateCache callback was provided (so cache.batch was not\n // called above, and thus did not already remove the optimistic layer),\n // remove it here. Since this is a no-op when the layer has already been\n // removed, we do it even if we called cache.batch above, since it's\n // possible this.cache is an instance of some ApolloCache subclass other\n // than InMemoryCache, and does not fully support the removeOptimistic\n // option for cache.batch.\n this.cache.removeOptimistic(removeOptimistic);\n }\n return results;\n };\n QueryManager.prototype.fetchQueryByPolicy = function (queryInfo, _a, \n // The initial networkStatus for this fetch, most often\n // NetworkStatus.loading, but also possibly fetchMore, poll, refetch,\n // or setVariables.\n networkStatus) {\n var _this = this;\n var query = _a.query, variables = _a.variables, fetchPolicy = _a.fetchPolicy, refetchWritePolicy = _a.refetchWritePolicy, errorPolicy = _a.errorPolicy, returnPartialData = _a.returnPartialData, context = _a.context, notifyOnNetworkStatusChange = _a.notifyOnNetworkStatusChange;\n var oldNetworkStatus = queryInfo.networkStatus;\n queryInfo.init({\n document: query,\n variables: variables,\n networkStatus: networkStatus,\n });\n var readCache = function () { return queryInfo.getDiff(); };\n var resultsFromCache = function (diff, networkStatus) {\n if (networkStatus === void 0) { networkStatus = queryInfo.networkStatus || NetworkStatus.loading; }\n var data = diff.result;\n if (globalThis.__DEV__ !== false && !returnPartialData && !equal(data, {})) {\n logMissingFieldErrors(diff.missing);\n }\n var fromData = function (data) {\n return Observable.of(__assign({ data: data, loading: isNetworkRequestInFlight(networkStatus), networkStatus: networkStatus }, (diff.complete ? null : { partial: true })));\n };\n if (data && _this.getDocumentInfo(query).hasForcedResolvers) {\n return _this.localState\n .runResolvers({\n document: query,\n remoteResult: { data: data },\n context: context,\n variables: variables,\n onlyRunForcedResolvers: true,\n })\n .then(function (resolved) { return fromData(resolved.data || void 0); });\n }\n // Resolves https://github.com/apollographql/apollo-client/issues/10317.\n // If errorPolicy is 'none' and notifyOnNetworkStatusChange is true,\n // data was incorrectly returned from the cache on refetch:\n // if diff.missing exists, we should not return cache data.\n if (errorPolicy === \"none\" &&\n networkStatus === NetworkStatus.refetch &&\n Array.isArray(diff.missing)) {\n return fromData(void 0);\n }\n return fromData(data);\n };\n var cacheWriteBehavior = fetchPolicy === \"no-cache\" ? 0 /* CacheWriteBehavior.FORBID */\n // Watched queries must opt into overwriting existing data on refetch,\n // by passing refetchWritePolicy: \"overwrite\" in their WatchQueryOptions.\n : (networkStatus === NetworkStatus.refetch &&\n refetchWritePolicy !== \"merge\") ?\n 1 /* CacheWriteBehavior.OVERWRITE */\n : 2 /* CacheWriteBehavior.MERGE */;\n var resultsFromLink = function () {\n return _this.getResultsFromLink(queryInfo, cacheWriteBehavior, {\n query: query,\n variables: variables,\n context: context,\n fetchPolicy: fetchPolicy,\n errorPolicy: errorPolicy,\n });\n };\n var shouldNotify = notifyOnNetworkStatusChange &&\n typeof oldNetworkStatus === \"number\" &&\n oldNetworkStatus !== networkStatus &&\n isNetworkRequestInFlight(networkStatus);\n switch (fetchPolicy) {\n default:\n case \"cache-first\": {\n var diff = readCache();\n if (diff.complete) {\n return {\n fromLink: false,\n sources: [resultsFromCache(diff, queryInfo.markReady())],\n };\n }\n if (returnPartialData || shouldNotify) {\n return {\n fromLink: true,\n sources: [resultsFromCache(diff), resultsFromLink()],\n };\n }\n return { fromLink: true, sources: [resultsFromLink()] };\n }\n case \"cache-and-network\": {\n var diff = readCache();\n if (diff.complete || returnPartialData || shouldNotify) {\n return {\n fromLink: true,\n sources: [resultsFromCache(diff), resultsFromLink()],\n };\n }\n return { fromLink: true, sources: [resultsFromLink()] };\n }\n case \"cache-only\":\n return {\n fromLink: false,\n sources: [resultsFromCache(readCache(), queryInfo.markReady())],\n };\n case \"network-only\":\n if (shouldNotify) {\n return {\n fromLink: true,\n sources: [resultsFromCache(readCache()), resultsFromLink()],\n };\n }\n return { fromLink: true, sources: [resultsFromLink()] };\n case \"no-cache\":\n if (shouldNotify) {\n return {\n fromLink: true,\n // Note that queryInfo.getDiff() for no-cache queries does not call\n // cache.diff, but instead returns a { complete: false } stub result\n // when there is no queryInfo.diff already defined.\n sources: [resultsFromCache(queryInfo.getDiff()), resultsFromLink()],\n };\n }\n return { fromLink: true, sources: [resultsFromLink()] };\n case \"standby\":\n return { fromLink: false, sources: [] };\n }\n };\n QueryManager.prototype.getQuery = function (queryId) {\n if (queryId && !this.queries.has(queryId)) {\n this.queries.set(queryId, new QueryInfo(this, queryId));\n }\n return this.queries.get(queryId);\n };\n QueryManager.prototype.prepareContext = function (context) {\n if (context === void 0) { context = {}; }\n var newContext = this.localState.prepareContext(context);\n return __assign(__assign(__assign({}, this.defaultContext), newContext), { clientAwareness: this.clientAwareness });\n };\n return QueryManager;\n}());\nexport { QueryManager };\n","import { __assign } from \"tslib\";\nimport { compact } from \"./compact.js\";\nexport function mergeOptions(defaults, options) {\n return compact(defaults, options, options.variables && {\n variables: compact(__assign(__assign({}, (defaults && defaults.variables)), options.variables)),\n });\n}\n","import { __assign } from \"tslib\";\nimport { invariant, newInvariantError } from \"../utilities/globals/index.js\";\nimport { ApolloLink, execute } from \"../link/core/index.js\";\nimport { version } from \"../version.js\";\nimport { HttpLink } from \"../link/http/index.js\";\nimport { QueryManager } from \"./QueryManager.js\";\nimport { LocalState } from \"./LocalState.js\";\nvar hasSuggestedDevtools = false;\n// Though mergeOptions now resides in @apollo/client/utilities, it was\n// previously declared and exported from this module, and then reexported from\n// @apollo/client/core. Since we need to preserve that API anyway, the easiest\n// solution is to reexport mergeOptions where it was previously declared (here).\nimport { mergeOptions } from \"../utilities/index.js\";\nimport { getApolloClientMemoryInternals } from \"../utilities/caching/getMemoryInternals.js\";\nexport { mergeOptions };\n/**\n * This is the primary Apollo Client class. It is used to send GraphQL documents (i.e. queries\n * and mutations) to a GraphQL spec-compliant server over an {@link ApolloLink} instance,\n * receive results from the server and cache the results in a store. It also delivers updates\n * to GraphQL queries through {@link Observable} instances.\n */\nvar ApolloClient = /** @class */ (function () {\n /**\n * Constructs an instance of {@link ApolloClient}.\n *\n * @example\n * ```js\n * import { ApolloClient, InMemoryCache } from '@apollo/client';\n *\n * const cache = new InMemoryCache();\n *\n * const client = new ApolloClient({\n * // Provide required constructor fields\n * cache: cache,\n * uri: 'http://localhost:4000/',\n *\n * // Provide some optional constructor fields\n * name: 'react-web-client',\n * version: '1.3',\n * queryDeduplication: false,\n * defaultOptions: {\n * watchQuery: {\n * fetchPolicy: 'cache-and-network',\n * },\n * },\n * });\n * ```\n */\n function ApolloClient(options) {\n var _this = this;\n this.resetStoreCallbacks = [];\n this.clearStoreCallbacks = [];\n if (!options.cache) {\n throw newInvariantError(15);\n }\n var uri = options.uri, credentials = options.credentials, headers = options.headers, cache = options.cache, documentTransform = options.documentTransform, _a = options.ssrMode, ssrMode = _a === void 0 ? false : _a, _b = options.ssrForceFetchDelay, ssrForceFetchDelay = _b === void 0 ? 0 : _b, \n // Expose the client instance as window.__APOLLO_CLIENT__ and call\n // onBroadcast in queryManager.broadcastQueries to enable browser\n // devtools, but disable them by default in production.\n _c = options.connectToDevTools, \n // Expose the client instance as window.__APOLLO_CLIENT__ and call\n // onBroadcast in queryManager.broadcastQueries to enable browser\n // devtools, but disable them by default in production.\n connectToDevTools = _c === void 0 ? typeof window === \"object\" &&\n !window.__APOLLO_CLIENT__ &&\n globalThis.__DEV__ !== false : _c, _d = options.queryDeduplication, queryDeduplication = _d === void 0 ? true : _d, defaultOptions = options.defaultOptions, defaultContext = options.defaultContext, _e = options.assumeImmutableResults, assumeImmutableResults = _e === void 0 ? cache.assumeImmutableResults : _e, resolvers = options.resolvers, typeDefs = options.typeDefs, fragmentMatcher = options.fragmentMatcher, clientAwarenessName = options.name, clientAwarenessVersion = options.version;\n var link = options.link;\n if (!link) {\n link =\n uri ? new HttpLink({ uri: uri, credentials: credentials, headers: headers }) : ApolloLink.empty();\n }\n this.link = link;\n this.cache = cache;\n this.disableNetworkFetches = ssrMode || ssrForceFetchDelay > 0;\n this.queryDeduplication = queryDeduplication;\n this.defaultOptions = defaultOptions || Object.create(null);\n this.typeDefs = typeDefs;\n if (ssrForceFetchDelay) {\n setTimeout(function () { return (_this.disableNetworkFetches = false); }, ssrForceFetchDelay);\n }\n this.watchQuery = this.watchQuery.bind(this);\n this.query = this.query.bind(this);\n this.mutate = this.mutate.bind(this);\n this.resetStore = this.resetStore.bind(this);\n this.reFetchObservableQueries = this.reFetchObservableQueries.bind(this);\n this.version = version;\n this.localState = new LocalState({\n cache: cache,\n client: this,\n resolvers: resolvers,\n fragmentMatcher: fragmentMatcher,\n });\n this.queryManager = new QueryManager({\n cache: this.cache,\n link: this.link,\n defaultOptions: this.defaultOptions,\n defaultContext: defaultContext,\n documentTransform: documentTransform,\n queryDeduplication: queryDeduplication,\n ssrMode: ssrMode,\n clientAwareness: {\n name: clientAwarenessName,\n version: clientAwarenessVersion,\n },\n localState: this.localState,\n assumeImmutableResults: assumeImmutableResults,\n onBroadcast: connectToDevTools ?\n function () {\n if (_this.devToolsHookCb) {\n _this.devToolsHookCb({\n action: {},\n state: {\n queries: _this.queryManager.getQueryStore(),\n mutations: _this.queryManager.mutationStore || {},\n },\n dataWithOptimisticResults: _this.cache.extract(true),\n });\n }\n }\n : void 0,\n });\n if (connectToDevTools)\n this.connectToDevTools();\n }\n ApolloClient.prototype.connectToDevTools = function () {\n if (typeof window === \"object\") {\n var windowWithDevTools = window;\n var devtoolsSymbol = Symbol.for(\"apollo.devtools\");\n (windowWithDevTools[devtoolsSymbol] =\n windowWithDevTools[devtoolsSymbol] || []).push(this);\n windowWithDevTools.__APOLLO_CLIENT__ = this;\n }\n /**\n * Suggest installing the devtools for developers who don't have them\n */\n if (!hasSuggestedDevtools && globalThis.__DEV__ !== false) {\n hasSuggestedDevtools = true;\n setTimeout(function () {\n if (typeof window !== \"undefined\" &&\n window.document &&\n window.top === window.self &&\n !window.__APOLLO_DEVTOOLS_GLOBAL_HOOK__) {\n var nav = window.navigator;\n var ua = nav && nav.userAgent;\n var url = void 0;\n if (typeof ua === \"string\") {\n if (ua.indexOf(\"Chrome/\") > -1) {\n url =\n \"https://chrome.google.com/webstore/detail/\" +\n \"apollo-client-developer-t/jdkknkkbebbapilgoeccciglkfbmbnfm\";\n }\n else if (ua.indexOf(\"Firefox/\") > -1) {\n url =\n \"https://addons.mozilla.org/en-US/firefox/addon/apollo-developer-tools/\";\n }\n }\n if (url) {\n globalThis.__DEV__ !== false && invariant.log(\"Download the Apollo DevTools for a better development \" +\n \"experience: %s\", url);\n }\n }\n }, 10000);\n }\n };\n Object.defineProperty(ApolloClient.prototype, \"documentTransform\", {\n /**\n * The `DocumentTransform` used to modify GraphQL documents before a request\n * is made. If a custom `DocumentTransform` is not provided, this will be the\n * default document transform.\n */\n get: function () {\n return this.queryManager.documentTransform;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Call this method to terminate any active client processes, making it safe\n * to dispose of this `ApolloClient` instance.\n */\n ApolloClient.prototype.stop = function () {\n this.queryManager.stop();\n };\n /**\n * This watches the cache store of the query according to the options specified and\n * returns an {@link ObservableQuery}. We can subscribe to this {@link ObservableQuery} and\n * receive updated results through a GraphQL observer when the cache store changes.\n *\n * Note that this method is not an implementation of GraphQL subscriptions. Rather,\n * it uses Apollo's store in order to reactively deliver updates to your query results.\n *\n * For example, suppose you call watchQuery on a GraphQL query that fetches a person's\n * first and last name and this person has a particular object identifier, provided by\n * dataIdFromObject. Later, a different query fetches that same person's\n * first and last name and the first name has now changed. Then, any observers associated\n * with the results of the first query will be updated with a new result object.\n *\n * Note that if the cache does not change, the subscriber will *not* be notified.\n *\n * See [here](https://medium.com/apollo-stack/the-concepts-of-graphql-bc68bd819be3#.3mb0cbcmc) for\n * a description of store reactivity.\n */\n ApolloClient.prototype.watchQuery = function (options) {\n if (this.defaultOptions.watchQuery) {\n options = mergeOptions(this.defaultOptions.watchQuery, options);\n }\n // XXX Overwriting options is probably not the best way to do this long term...\n if (this.disableNetworkFetches &&\n (options.fetchPolicy === \"network-only\" ||\n options.fetchPolicy === \"cache-and-network\")) {\n options = __assign(__assign({}, options), { fetchPolicy: \"cache-first\" });\n }\n return this.queryManager.watchQuery(options);\n };\n /**\n * This resolves a single query according to the options specified and\n * returns a `Promise` which is either resolved with the resulting data\n * or rejected with an error.\n *\n * @param options - An object of type {@link QueryOptions} that allows us to\n * describe how this query should be treated e.g. whether it should hit the\n * server at all or just resolve from the cache, etc.\n */\n ApolloClient.prototype.query = function (options) {\n if (this.defaultOptions.query) {\n options = mergeOptions(this.defaultOptions.query, options);\n }\n invariant(options.fetchPolicy !== \"cache-and-network\", 16);\n if (this.disableNetworkFetches && options.fetchPolicy === \"network-only\") {\n options = __assign(__assign({}, options), { fetchPolicy: \"cache-first\" });\n }\n return this.queryManager.query(options);\n };\n /**\n * This resolves a single mutation according to the options specified and returns a\n * Promise which is either resolved with the resulting data or rejected with an\n * error. In some cases both `data` and `errors` might be undefined, for example\n * when `errorPolicy` is set to `'ignore'`.\n *\n * It takes options as an object with the following keys and values:\n */\n ApolloClient.prototype.mutate = function (options) {\n if (this.defaultOptions.mutate) {\n options = mergeOptions(this.defaultOptions.mutate, options);\n }\n return this.queryManager.mutate(options);\n };\n /**\n * This subscribes to a graphql subscription according to the options specified and returns an\n * {@link Observable} which either emits received data or an error.\n */\n ApolloClient.prototype.subscribe = function (options) {\n return this.queryManager.startGraphQLSubscription(options);\n };\n /**\n * Tries to read some data from the store in the shape of the provided\n * GraphQL query without making a network request. This method will start at\n * the root query. To start at a specific id returned by `dataIdFromObject`\n * use `readFragment`.\n *\n * @param optimistic - Set to `true` to allow `readQuery` to return\n * optimistic results. Is `false` by default.\n */\n ApolloClient.prototype.readQuery = function (options, optimistic) {\n if (optimistic === void 0) { optimistic = false; }\n return this.cache.readQuery(options, optimistic);\n };\n /**\n * Tries to read some data from the store in the shape of the provided\n * GraphQL fragment without making a network request. This method will read a\n * GraphQL fragment from any arbitrary id that is currently cached, unlike\n * `readQuery` which will only read from the root query.\n *\n * You must pass in a GraphQL document with a single fragment or a document\n * with multiple fragments that represent what you are reading. If you pass\n * in a document with multiple fragments then you must also specify a\n * `fragmentName`.\n *\n * @param optimistic - Set to `true` to allow `readFragment` to return\n * optimistic results. Is `false` by default.\n */\n ApolloClient.prototype.readFragment = function (options, optimistic) {\n if (optimistic === void 0) { optimistic = false; }\n return this.cache.readFragment(options, optimistic);\n };\n /**\n * Writes some data in the shape of the provided GraphQL query directly to\n * the store. This method will start at the root query. To start at a\n * specific id returned by `dataIdFromObject` then use `writeFragment`.\n */\n ApolloClient.prototype.writeQuery = function (options) {\n var ref = this.cache.writeQuery(options);\n if (options.broadcast !== false) {\n this.queryManager.broadcastQueries();\n }\n return ref;\n };\n /**\n * Writes some data in the shape of the provided GraphQL fragment directly to\n * the store. This method will write to a GraphQL fragment from any arbitrary\n * id that is currently cached, unlike `writeQuery` which will only write\n * from the root query.\n *\n * You must pass in a GraphQL document with a single fragment or a document\n * with multiple fragments that represent what you are writing. If you pass\n * in a document with multiple fragments then you must also specify a\n * `fragmentName`.\n */\n ApolloClient.prototype.writeFragment = function (options) {\n var ref = this.cache.writeFragment(options);\n if (options.broadcast !== false) {\n this.queryManager.broadcastQueries();\n }\n return ref;\n };\n ApolloClient.prototype.__actionHookForDevTools = function (cb) {\n this.devToolsHookCb = cb;\n };\n ApolloClient.prototype.__requestRaw = function (payload) {\n return execute(this.link, payload);\n };\n /**\n * Resets your entire store by clearing out your cache and then re-executing\n * all of your active queries. This makes it so that you may guarantee that\n * there is no data left in your store from a time before you called this\n * method.\n *\n * `resetStore()` is useful when your user just logged out. You’ve removed the\n * user session, and you now want to make sure that any references to data you\n * might have fetched while the user session was active is gone.\n *\n * It is important to remember that `resetStore()` *will* refetch any active\n * queries. This means that any components that might be mounted will execute\n * their queries again using your network interface. If you do not want to\n * re-execute any queries then you should make sure to stop watching any\n * active queries.\n */\n ApolloClient.prototype.resetStore = function () {\n var _this = this;\n return Promise.resolve()\n .then(function () {\n return _this.queryManager.clearStore({\n discardWatches: false,\n });\n })\n .then(function () { return Promise.all(_this.resetStoreCallbacks.map(function (fn) { return fn(); })); })\n .then(function () { return _this.reFetchObservableQueries(); });\n };\n /**\n * Remove all data from the store. Unlike `resetStore`, `clearStore` will\n * not refetch any active queries.\n */\n ApolloClient.prototype.clearStore = function () {\n var _this = this;\n return Promise.resolve()\n .then(function () {\n return _this.queryManager.clearStore({\n discardWatches: true,\n });\n })\n .then(function () { return Promise.all(_this.clearStoreCallbacks.map(function (fn) { return fn(); })); });\n };\n /**\n * Allows callbacks to be registered that are executed when the store is\n * reset. `onResetStore` returns an unsubscribe function that can be used\n * to remove registered callbacks.\n */\n ApolloClient.prototype.onResetStore = function (cb) {\n var _this = this;\n this.resetStoreCallbacks.push(cb);\n return function () {\n _this.resetStoreCallbacks = _this.resetStoreCallbacks.filter(function (c) { return c !== cb; });\n };\n };\n /**\n * Allows callbacks to be registered that are executed when the store is\n * cleared. `onClearStore` returns an unsubscribe function that can be used\n * to remove registered callbacks.\n */\n ApolloClient.prototype.onClearStore = function (cb) {\n var _this = this;\n this.clearStoreCallbacks.push(cb);\n return function () {\n _this.clearStoreCallbacks = _this.clearStoreCallbacks.filter(function (c) { return c !== cb; });\n };\n };\n /**\n * Refetches all of your active queries.\n *\n * `reFetchObservableQueries()` is useful if you want to bring the client back to proper state in case of a network outage\n *\n * It is important to remember that `reFetchObservableQueries()` *will* refetch any active\n * queries. This means that any components that might be mounted will execute\n * their queries again using your network interface. If you do not want to\n * re-execute any queries then you should make sure to stop watching any\n * active queries.\n * Takes optional parameter `includeStandby` which will include queries in standby-mode when refetching.\n */\n ApolloClient.prototype.reFetchObservableQueries = function (includeStandby) {\n return this.queryManager.reFetchObservableQueries(includeStandby);\n };\n /**\n * Refetches specified active queries. Similar to \"reFetchObservableQueries()\" but with a specific list of queries.\n *\n * `refetchQueries()` is useful for use cases to imperatively refresh a selection of queries.\n *\n * It is important to remember that `refetchQueries()` *will* refetch specified active\n * queries. This means that any components that might be mounted will execute\n * their queries again using your network interface. If you do not want to\n * re-execute any queries then you should make sure to stop watching any\n * active queries.\n */\n ApolloClient.prototype.refetchQueries = function (options) {\n var map = this.queryManager.refetchQueries(options);\n var queries = [];\n var results = [];\n map.forEach(function (result, obsQuery) {\n queries.push(obsQuery);\n results.push(result);\n });\n var result = Promise.all(results);\n // In case you need the raw results immediately, without awaiting\n // Promise.all(results):\n result.queries = queries;\n result.results = results;\n // If you decide to ignore the result Promise because you're using\n // result.queries and result.results instead, you shouldn't have to worry\n // about preventing uncaught rejections for the Promise.all result.\n result.catch(function (error) {\n globalThis.__DEV__ !== false && invariant.debug(17, error);\n });\n return result;\n };\n /**\n * Get all currently active `ObservableQuery` objects, in a `Map` keyed by\n * query ID strings.\n *\n * An \"active\" query is one that has observers and a `fetchPolicy` other than\n * \"standby\" or \"cache-only\".\n *\n * You can include all `ObservableQuery` objects (including the inactive ones)\n * by passing \"all\" instead of \"active\", or you can include just a subset of\n * active queries by passing an array of query names or DocumentNode objects.\n */\n ApolloClient.prototype.getObservableQueries = function (include) {\n if (include === void 0) { include = \"active\"; }\n return this.queryManager.getObservableQueries(include);\n };\n /**\n * Exposes the cache's complete state, in a serializable format for later restoration.\n */\n ApolloClient.prototype.extract = function (optimistic) {\n return this.cache.extract(optimistic);\n };\n /**\n * Replaces existing state in the cache (if any) with the values expressed by\n * `serializedState`.\n *\n * Called when hydrating a cache (server side rendering, or offline storage),\n * and also (potentially) during hot reloads.\n */\n ApolloClient.prototype.restore = function (serializedState) {\n return this.cache.restore(serializedState);\n };\n /**\n * Add additional local resolvers.\n */\n ApolloClient.prototype.addResolvers = function (resolvers) {\n this.localState.addResolvers(resolvers);\n };\n /**\n * Set (override existing) local resolvers.\n */\n ApolloClient.prototype.setResolvers = function (resolvers) {\n this.localState.setResolvers(resolvers);\n };\n /**\n * Get all registered local resolvers.\n */\n ApolloClient.prototype.getResolvers = function () {\n return this.localState.getResolvers();\n };\n /**\n * Set a custom local state fragment matcher.\n */\n ApolloClient.prototype.setLocalStateFragmentMatcher = function (fragmentMatcher) {\n this.localState.setFragmentMatcher(fragmentMatcher);\n };\n /**\n * Define a new ApolloLink (or link chain) that Apollo Client will use.\n */\n ApolloClient.prototype.setLink = function (newLink) {\n this.link = this.queryManager.link = newLink;\n };\n Object.defineProperty(ApolloClient.prototype, \"defaultContext\", {\n get: function () {\n return this.queryManager.defaultContext;\n },\n enumerable: false,\n configurable: true\n });\n return ApolloClient;\n}());\nexport { ApolloClient };\nif (globalThis.__DEV__ !== false) {\n ApolloClient.prototype.getMemoryInternals = getApolloClientMemoryInternals;\n}\n","export function invariant(condition, message) {\n const booleanCondition = Boolean(condition);\n\n if (!booleanCondition) {\n throw new Error(\n message != null ? message : 'Unexpected invariant triggered.',\n );\n }\n}\n","import { invariant } from '../jsutils/invariant.mjs';\nconst LineRegExp = /\\r\\n|[\\n\\r]/g;\n/**\n * Represents a location in a Source.\n */\n\n/**\n * Takes a Source and a UTF-8 character offset, and returns the corresponding\n * line and column as a SourceLocation.\n */\nexport function getLocation(source, position) {\n let lastLineStart = 0;\n let line = 1;\n\n for (const match of source.body.matchAll(LineRegExp)) {\n typeof match.index === 'number' || invariant(false);\n\n if (match.index >= position) {\n break;\n }\n\n lastLineStart = match.index + match[0].length;\n line += 1;\n }\n\n return {\n line,\n column: position + 1 - lastLineStart,\n };\n}\n","import { getLocation } from './location.mjs';\n\n/**\n * Render a helpful description of the location in the GraphQL Source document.\n */\nexport function printLocation(location) {\n return printSourceLocation(\n location.source,\n getLocation(location.source, location.start),\n );\n}\n/**\n * Render a helpful description of the location in the GraphQL Source document.\n */\n\nexport function printSourceLocation(source, sourceLocation) {\n const firstLineColumnOffset = source.locationOffset.column - 1;\n const body = ''.padStart(firstLineColumnOffset) + source.body;\n const lineIndex = sourceLocation.line - 1;\n const lineOffset = source.locationOffset.line - 1;\n const lineNum = sourceLocation.line + lineOffset;\n const columnOffset = sourceLocation.line === 1 ? firstLineColumnOffset : 0;\n const columnNum = sourceLocation.column + columnOffset;\n const locationStr = `${source.name}:${lineNum}:${columnNum}\\n`;\n const lines = body.split(/\\r\\n|[\\n\\r]/g);\n const locationLine = lines[lineIndex]; // Special case for minified documents\n\n if (locationLine.length > 120) {\n const subLineIndex = Math.floor(columnNum / 80);\n const subLineColumnNum = columnNum % 80;\n const subLines = [];\n\n for (let i = 0; i < locationLine.length; i += 80) {\n subLines.push(locationLine.slice(i, i + 80));\n }\n\n return (\n locationStr +\n printPrefixedLines([\n [`${lineNum} |`, subLines[0]],\n ...subLines.slice(1, subLineIndex + 1).map((subLine) => ['|', subLine]),\n ['|', '^'.padStart(subLineColumnNum)],\n ['|', subLines[subLineIndex + 1]],\n ])\n );\n }\n\n return (\n locationStr +\n printPrefixedLines([\n // Lines specified like this: [\"prefix\", \"string\"],\n [`${lineNum - 1} |`, lines[lineIndex - 1]],\n [`${lineNum} |`, locationLine],\n ['|', '^'.padStart(columnNum)],\n [`${lineNum + 1} |`, lines[lineIndex + 1]],\n ])\n );\n}\n\nfunction printPrefixedLines(lines) {\n const existingLines = lines.filter(([_, line]) => line !== undefined);\n const padLen = Math.max(...existingLines.map(([prefix]) => prefix.length));\n return existingLines\n .map(([prefix, line]) => prefix.padStart(padLen) + (line ? ' ' + line : ''))\n .join('\\n');\n}\n","import { isObjectLike } from '../jsutils/isObjectLike.mjs';\nimport { getLocation } from '../language/location.mjs';\nimport {\n printLocation,\n printSourceLocation,\n} from '../language/printLocation.mjs';\n\nfunction toNormalizedOptions(args) {\n const firstArg = args[0];\n\n if (firstArg == null || 'kind' in firstArg || 'length' in firstArg) {\n return {\n nodes: firstArg,\n source: args[1],\n positions: args[2],\n path: args[3],\n originalError: args[4],\n extensions: args[5],\n };\n }\n\n return firstArg;\n}\n/**\n * A GraphQLError describes an Error found during the parse, validate, or\n * execute phases of performing a GraphQL operation. In addition to a message\n * and stack trace, it also includes information about the locations in a\n * GraphQL document and/or execution result that correspond to the Error.\n */\n\nexport class GraphQLError extends Error {\n /**\n * An array of `{ line, column }` locations within the source GraphQL document\n * which correspond to this error.\n *\n * Errors during validation often contain multiple locations, for example to\n * point out two things with the same name. Errors during execution include a\n * single location, the field which produced the error.\n *\n * Enumerable, and appears in the result of JSON.stringify().\n */\n\n /**\n * An array describing the JSON-path into the execution response which\n * corresponds to this error. Only included for errors during execution.\n *\n * Enumerable, and appears in the result of JSON.stringify().\n */\n\n /**\n * An array of GraphQL AST Nodes corresponding to this error.\n */\n\n /**\n * The source GraphQL document for the first location of this error.\n *\n * Note that if this Error represents more than one node, the source may not\n * represent nodes after the first node.\n */\n\n /**\n * An array of character offsets within the source GraphQL document\n * which correspond to this error.\n */\n\n /**\n * The original error thrown from a field resolver during execution.\n */\n\n /**\n * Extension fields to add to the formatted error.\n */\n\n /**\n * @deprecated Please use the `GraphQLErrorOptions` constructor overload instead.\n */\n constructor(message, ...rawArgs) {\n var _this$nodes, _nodeLocations$, _ref;\n\n const { nodes, source, positions, path, originalError, extensions } =\n toNormalizedOptions(rawArgs);\n super(message);\n this.name = 'GraphQLError';\n this.path = path !== null && path !== void 0 ? path : undefined;\n this.originalError =\n originalError !== null && originalError !== void 0\n ? originalError\n : undefined; // Compute list of blame nodes.\n\n this.nodes = undefinedIfEmpty(\n Array.isArray(nodes) ? nodes : nodes ? [nodes] : undefined,\n );\n const nodeLocations = undefinedIfEmpty(\n (_this$nodes = this.nodes) === null || _this$nodes === void 0\n ? void 0\n : _this$nodes.map((node) => node.loc).filter((loc) => loc != null),\n ); // Compute locations in the source for the given nodes/positions.\n\n this.source =\n source !== null && source !== void 0\n ? source\n : nodeLocations === null || nodeLocations === void 0\n ? void 0\n : (_nodeLocations$ = nodeLocations[0]) === null ||\n _nodeLocations$ === void 0\n ? void 0\n : _nodeLocations$.source;\n this.positions =\n positions !== null && positions !== void 0\n ? positions\n : nodeLocations === null || nodeLocations === void 0\n ? void 0\n : nodeLocations.map((loc) => loc.start);\n this.locations =\n positions && source\n ? positions.map((pos) => getLocation(source, pos))\n : nodeLocations === null || nodeLocations === void 0\n ? void 0\n : nodeLocations.map((loc) => getLocation(loc.source, loc.start));\n const originalExtensions = isObjectLike(\n originalError === null || originalError === void 0\n ? void 0\n : originalError.extensions,\n )\n ? originalError === null || originalError === void 0\n ? void 0\n : originalError.extensions\n : undefined;\n this.extensions =\n (_ref =\n extensions !== null && extensions !== void 0\n ? extensions\n : originalExtensions) !== null && _ref !== void 0\n ? _ref\n : Object.create(null); // Only properties prescribed by the spec should be enumerable.\n // Keep the rest as non-enumerable.\n\n Object.defineProperties(this, {\n message: {\n writable: true,\n enumerable: true,\n },\n name: {\n enumerable: false,\n },\n nodes: {\n enumerable: false,\n },\n source: {\n enumerable: false,\n },\n positions: {\n enumerable: false,\n },\n originalError: {\n enumerable: false,\n },\n }); // Include (non-enumerable) stack trace.\n\n /* c8 ignore start */\n // FIXME: https://github.com/graphql/graphql-js/issues/2317\n\n if (\n originalError !== null &&\n originalError !== void 0 &&\n originalError.stack\n ) {\n Object.defineProperty(this, 'stack', {\n value: originalError.stack,\n writable: true,\n configurable: true,\n });\n } else if (Error.captureStackTrace) {\n Error.captureStackTrace(this, GraphQLError);\n } else {\n Object.defineProperty(this, 'stack', {\n value: Error().stack,\n writable: true,\n configurable: true,\n });\n }\n /* c8 ignore stop */\n }\n\n get [Symbol.toStringTag]() {\n return 'GraphQLError';\n }\n\n toString() {\n let output = this.message;\n\n if (this.nodes) {\n for (const node of this.nodes) {\n if (node.loc) {\n output += '\\n\\n' + printLocation(node.loc);\n }\n }\n } else if (this.source && this.locations) {\n for (const location of this.locations) {\n output += '\\n\\n' + printSourceLocation(this.source, location);\n }\n }\n\n return output;\n }\n\n toJSON() {\n const formattedError = {\n message: this.message,\n };\n\n if (this.locations != null) {\n formattedError.locations = this.locations;\n }\n\n if (this.path != null) {\n formattedError.path = this.path;\n }\n\n if (this.extensions != null && Object.keys(this.extensions).length > 0) {\n formattedError.extensions = this.extensions;\n }\n\n return formattedError;\n }\n}\n\nfunction undefinedIfEmpty(array) {\n return array === undefined || array.length === 0 ? undefined : array;\n}\n/**\n * See: https://spec.graphql.org/draft/#sec-Errors\n */\n\n/**\n * Prints a GraphQLError to a string, representing useful location information\n * about the error's position in the source.\n *\n * @deprecated Please use `error.toString` instead. Will be removed in v17\n */\nexport function printError(error) {\n return error.toString();\n}\n/**\n * Given a GraphQLError, format it according to the rules described by the\n * Response Format, Errors section of the GraphQL Specification.\n *\n * @deprecated Please use `error.toJSON` instead. Will be removed in v17\n */\n\nexport function formatError(error) {\n return error.toJSON();\n}\n","/**\n * Return true if `value` is object-like. A value is object-like if it's not\n * `null` and has a `typeof` result of \"object\".\n */\nexport function isObjectLike(value) {\n return typeof value == 'object' && value !== null;\n}\n","import { GraphQLError } from './GraphQLError.mjs';\n/**\n * Produces a GraphQLError representing a syntax error, containing useful\n * descriptive information about the syntax error's position in the source.\n */\n\nexport function syntaxError(source, position, description) {\n return new GraphQLError(`Syntax Error: ${description}`, {\n source,\n positions: [position],\n });\n}\n","/**\n * The set of allowed directive location values.\n */\nvar DirectiveLocation;\n\n(function (DirectiveLocation) {\n DirectiveLocation['QUERY'] = 'QUERY';\n DirectiveLocation['MUTATION'] = 'MUTATION';\n DirectiveLocation['SUBSCRIPTION'] = 'SUBSCRIPTION';\n DirectiveLocation['FIELD'] = 'FIELD';\n DirectiveLocation['FRAGMENT_DEFINITION'] = 'FRAGMENT_DEFINITION';\n DirectiveLocation['FRAGMENT_SPREAD'] = 'FRAGMENT_SPREAD';\n DirectiveLocation['INLINE_FRAGMENT'] = 'INLINE_FRAGMENT';\n DirectiveLocation['VARIABLE_DEFINITION'] = 'VARIABLE_DEFINITION';\n DirectiveLocation['SCHEMA'] = 'SCHEMA';\n DirectiveLocation['SCALAR'] = 'SCALAR';\n DirectiveLocation['OBJECT'] = 'OBJECT';\n DirectiveLocation['FIELD_DEFINITION'] = 'FIELD_DEFINITION';\n DirectiveLocation['ARGUMENT_DEFINITION'] = 'ARGUMENT_DEFINITION';\n DirectiveLocation['INTERFACE'] = 'INTERFACE';\n DirectiveLocation['UNION'] = 'UNION';\n DirectiveLocation['ENUM'] = 'ENUM';\n DirectiveLocation['ENUM_VALUE'] = 'ENUM_VALUE';\n DirectiveLocation['INPUT_OBJECT'] = 'INPUT_OBJECT';\n DirectiveLocation['INPUT_FIELD_DEFINITION'] = 'INPUT_FIELD_DEFINITION';\n})(DirectiveLocation || (DirectiveLocation = {}));\n\nexport { DirectiveLocation };\n/**\n * The enum type representing the directive location values.\n *\n * @deprecated Please use `DirectiveLocation`. Will be remove in v17.\n */\n","/**\n * An exported enum describing the different kinds of tokens that the\n * lexer emits.\n */\nvar TokenKind;\n\n(function (TokenKind) {\n TokenKind['SOF'] = '';\n TokenKind['EOF'] = '';\n TokenKind['BANG'] = '!';\n TokenKind['DOLLAR'] = '$';\n TokenKind['AMP'] = '&';\n TokenKind['PAREN_L'] = '(';\n TokenKind['PAREN_R'] = ')';\n TokenKind['SPREAD'] = '...';\n TokenKind['COLON'] = ':';\n TokenKind['EQUALS'] = '=';\n TokenKind['AT'] = '@';\n TokenKind['BRACKET_L'] = '[';\n TokenKind['BRACKET_R'] = ']';\n TokenKind['BRACE_L'] = '{';\n TokenKind['PIPE'] = '|';\n TokenKind['BRACE_R'] = '}';\n TokenKind['NAME'] = 'Name';\n TokenKind['INT'] = 'Int';\n TokenKind['FLOAT'] = 'Float';\n TokenKind['STRING'] = 'String';\n TokenKind['BLOCK_STRING'] = 'BlockString';\n TokenKind['COMMENT'] = 'Comment';\n})(TokenKind || (TokenKind = {}));\n\nexport { TokenKind };\n/**\n * The enum type representing the token kinds values.\n *\n * @deprecated Please use `TokenKind`. Will be remove in v17.\n */\n","import { syntaxError } from '../error/syntaxError.mjs';\nimport { Token } from './ast.mjs';\nimport { dedentBlockStringLines } from './blockString.mjs';\nimport { isDigit, isNameContinue, isNameStart } from './characterClasses.mjs';\nimport { TokenKind } from './tokenKind.mjs';\n/**\n * Given a Source object, creates a Lexer for that source.\n * A Lexer is a stateful stream generator in that every time\n * it is advanced, it returns the next token in the Source. Assuming the\n * source lexes, the final Token emitted by the lexer will be of kind\n * EOF, after which the lexer will repeatedly return the same EOF token\n * whenever called.\n */\n\nexport class Lexer {\n /**\n * The previously focused non-ignored token.\n */\n\n /**\n * The currently focused non-ignored token.\n */\n\n /**\n * The (1-indexed) line containing the current token.\n */\n\n /**\n * The character offset at which the current line begins.\n */\n constructor(source) {\n const startOfFileToken = new Token(TokenKind.SOF, 0, 0, 0, 0);\n this.source = source;\n this.lastToken = startOfFileToken;\n this.token = startOfFileToken;\n this.line = 1;\n this.lineStart = 0;\n }\n\n get [Symbol.toStringTag]() {\n return 'Lexer';\n }\n /**\n * Advances the token stream to the next non-ignored token.\n */\n\n advance() {\n this.lastToken = this.token;\n const token = (this.token = this.lookahead());\n return token;\n }\n /**\n * Looks ahead and returns the next non-ignored token, but does not change\n * the state of Lexer.\n */\n\n lookahead() {\n let token = this.token;\n\n if (token.kind !== TokenKind.EOF) {\n do {\n if (token.next) {\n token = token.next;\n } else {\n // Read the next token and form a link in the token linked-list.\n const nextToken = readNextToken(this, token.end); // @ts-expect-error next is only mutable during parsing.\n\n token.next = nextToken; // @ts-expect-error prev is only mutable during parsing.\n\n nextToken.prev = token;\n token = nextToken;\n }\n } while (token.kind === TokenKind.COMMENT);\n }\n\n return token;\n }\n}\n/**\n * @internal\n */\n\nexport function isPunctuatorTokenKind(kind) {\n return (\n kind === TokenKind.BANG ||\n kind === TokenKind.DOLLAR ||\n kind === TokenKind.AMP ||\n kind === TokenKind.PAREN_L ||\n kind === TokenKind.PAREN_R ||\n kind === TokenKind.SPREAD ||\n kind === TokenKind.COLON ||\n kind === TokenKind.EQUALS ||\n kind === TokenKind.AT ||\n kind === TokenKind.BRACKET_L ||\n kind === TokenKind.BRACKET_R ||\n kind === TokenKind.BRACE_L ||\n kind === TokenKind.PIPE ||\n kind === TokenKind.BRACE_R\n );\n}\n/**\n * A Unicode scalar value is any Unicode code point except surrogate code\n * points. In other words, the inclusive ranges of values 0x0000 to 0xD7FF and\n * 0xE000 to 0x10FFFF.\n *\n * SourceCharacter ::\n * - \"Any Unicode scalar value\"\n */\n\nfunction isUnicodeScalarValue(code) {\n return (\n (code >= 0x0000 && code <= 0xd7ff) || (code >= 0xe000 && code <= 0x10ffff)\n );\n}\n/**\n * The GraphQL specification defines source text as a sequence of unicode scalar\n * values (which Unicode defines to exclude surrogate code points). However\n * JavaScript defines strings as a sequence of UTF-16 code units which may\n * include surrogates. A surrogate pair is a valid source character as it\n * encodes a supplementary code point (above U+FFFF), but unpaired surrogate\n * code points are not valid source characters.\n */\n\nfunction isSupplementaryCodePoint(body, location) {\n return (\n isLeadingSurrogate(body.charCodeAt(location)) &&\n isTrailingSurrogate(body.charCodeAt(location + 1))\n );\n}\n\nfunction isLeadingSurrogate(code) {\n return code >= 0xd800 && code <= 0xdbff;\n}\n\nfunction isTrailingSurrogate(code) {\n return code >= 0xdc00 && code <= 0xdfff;\n}\n/**\n * Prints the code point (or end of file reference) at a given location in a\n * source for use in error messages.\n *\n * Printable ASCII is printed quoted, while other points are printed in Unicode\n * code point form (ie. U+1234).\n */\n\nfunction printCodePointAt(lexer, location) {\n const code = lexer.source.body.codePointAt(location);\n\n if (code === undefined) {\n return TokenKind.EOF;\n } else if (code >= 0x0020 && code <= 0x007e) {\n // Printable ASCII\n const char = String.fromCodePoint(code);\n return char === '\"' ? \"'\\\"'\" : `\"${char}\"`;\n } // Unicode code point\n\n return 'U+' + code.toString(16).toUpperCase().padStart(4, '0');\n}\n/**\n * Create a token with line and column location information.\n */\n\nfunction createToken(lexer, kind, start, end, value) {\n const line = lexer.line;\n const col = 1 + start - lexer.lineStart;\n return new Token(kind, start, end, line, col, value);\n}\n/**\n * Gets the next token from the source starting at the given position.\n *\n * This skips over whitespace until it finds the next lexable token, then lexes\n * punctuators immediately or calls the appropriate helper function for more\n * complicated tokens.\n */\n\nfunction readNextToken(lexer, start) {\n const body = lexer.source.body;\n const bodyLength = body.length;\n let position = start;\n\n while (position < bodyLength) {\n const code = body.charCodeAt(position); // SourceCharacter\n\n switch (code) {\n // Ignored ::\n // - UnicodeBOM\n // - WhiteSpace\n // - LineTerminator\n // - Comment\n // - Comma\n //\n // UnicodeBOM :: \"Byte Order Mark (U+FEFF)\"\n //\n // WhiteSpace ::\n // - \"Horizontal Tab (U+0009)\"\n // - \"Space (U+0020)\"\n //\n // Comma :: ,\n case 0xfeff: // \n\n case 0x0009: // \\t\n\n case 0x0020: // \n\n case 0x002c:\n // ,\n ++position;\n continue;\n // LineTerminator ::\n // - \"New Line (U+000A)\"\n // - \"Carriage Return (U+000D)\" [lookahead != \"New Line (U+000A)\"]\n // - \"Carriage Return (U+000D)\" \"New Line (U+000A)\"\n\n case 0x000a:\n // \\n\n ++position;\n ++lexer.line;\n lexer.lineStart = position;\n continue;\n\n case 0x000d:\n // \\r\n if (body.charCodeAt(position + 1) === 0x000a) {\n position += 2;\n } else {\n ++position;\n }\n\n ++lexer.line;\n lexer.lineStart = position;\n continue;\n // Comment\n\n case 0x0023:\n // #\n return readComment(lexer, position);\n // Token ::\n // - Punctuator\n // - Name\n // - IntValue\n // - FloatValue\n // - StringValue\n //\n // Punctuator :: one of ! $ & ( ) ... : = @ [ ] { | }\n\n case 0x0021:\n // !\n return createToken(lexer, TokenKind.BANG, position, position + 1);\n\n case 0x0024:\n // $\n return createToken(lexer, TokenKind.DOLLAR, position, position + 1);\n\n case 0x0026:\n // &\n return createToken(lexer, TokenKind.AMP, position, position + 1);\n\n case 0x0028:\n // (\n return createToken(lexer, TokenKind.PAREN_L, position, position + 1);\n\n case 0x0029:\n // )\n return createToken(lexer, TokenKind.PAREN_R, position, position + 1);\n\n case 0x002e:\n // .\n if (\n body.charCodeAt(position + 1) === 0x002e &&\n body.charCodeAt(position + 2) === 0x002e\n ) {\n return createToken(lexer, TokenKind.SPREAD, position, position + 3);\n }\n\n break;\n\n case 0x003a:\n // :\n return createToken(lexer, TokenKind.COLON, position, position + 1);\n\n case 0x003d:\n // =\n return createToken(lexer, TokenKind.EQUALS, position, position + 1);\n\n case 0x0040:\n // @\n return createToken(lexer, TokenKind.AT, position, position + 1);\n\n case 0x005b:\n // [\n return createToken(lexer, TokenKind.BRACKET_L, position, position + 1);\n\n case 0x005d:\n // ]\n return createToken(lexer, TokenKind.BRACKET_R, position, position + 1);\n\n case 0x007b:\n // {\n return createToken(lexer, TokenKind.BRACE_L, position, position + 1);\n\n case 0x007c:\n // |\n return createToken(lexer, TokenKind.PIPE, position, position + 1);\n\n case 0x007d:\n // }\n return createToken(lexer, TokenKind.BRACE_R, position, position + 1);\n // StringValue\n\n case 0x0022:\n // \"\n if (\n body.charCodeAt(position + 1) === 0x0022 &&\n body.charCodeAt(position + 2) === 0x0022\n ) {\n return readBlockString(lexer, position);\n }\n\n return readString(lexer, position);\n } // IntValue | FloatValue (Digit | -)\n\n if (isDigit(code) || code === 0x002d) {\n return readNumber(lexer, position, code);\n } // Name\n\n if (isNameStart(code)) {\n return readName(lexer, position);\n }\n\n throw syntaxError(\n lexer.source,\n position,\n code === 0x0027\n ? 'Unexpected single quote character (\\'), did you mean to use a double quote (\")?'\n : isUnicodeScalarValue(code) || isSupplementaryCodePoint(body, position)\n ? `Unexpected character: ${printCodePointAt(lexer, position)}.`\n : `Invalid character: ${printCodePointAt(lexer, position)}.`,\n );\n }\n\n return createToken(lexer, TokenKind.EOF, bodyLength, bodyLength);\n}\n/**\n * Reads a comment token from the source file.\n *\n * ```\n * Comment :: # CommentChar* [lookahead != CommentChar]\n *\n * CommentChar :: SourceCharacter but not LineTerminator\n * ```\n */\n\nfunction readComment(lexer, start) {\n const body = lexer.source.body;\n const bodyLength = body.length;\n let position = start + 1;\n\n while (position < bodyLength) {\n const code = body.charCodeAt(position); // LineTerminator (\\n | \\r)\n\n if (code === 0x000a || code === 0x000d) {\n break;\n } // SourceCharacter\n\n if (isUnicodeScalarValue(code)) {\n ++position;\n } else if (isSupplementaryCodePoint(body, position)) {\n position += 2;\n } else {\n break;\n }\n }\n\n return createToken(\n lexer,\n TokenKind.COMMENT,\n start,\n position,\n body.slice(start + 1, position),\n );\n}\n/**\n * Reads a number token from the source file, either a FloatValue or an IntValue\n * depending on whether a FractionalPart or ExponentPart is encountered.\n *\n * ```\n * IntValue :: IntegerPart [lookahead != {Digit, `.`, NameStart}]\n *\n * IntegerPart ::\n * - NegativeSign? 0\n * - NegativeSign? NonZeroDigit Digit*\n *\n * NegativeSign :: -\n *\n * NonZeroDigit :: Digit but not `0`\n *\n * FloatValue ::\n * - IntegerPart FractionalPart ExponentPart [lookahead != {Digit, `.`, NameStart}]\n * - IntegerPart FractionalPart [lookahead != {Digit, `.`, NameStart}]\n * - IntegerPart ExponentPart [lookahead != {Digit, `.`, NameStart}]\n *\n * FractionalPart :: . Digit+\n *\n * ExponentPart :: ExponentIndicator Sign? Digit+\n *\n * ExponentIndicator :: one of `e` `E`\n *\n * Sign :: one of + -\n * ```\n */\n\nfunction readNumber(lexer, start, firstCode) {\n const body = lexer.source.body;\n let position = start;\n let code = firstCode;\n let isFloat = false; // NegativeSign (-)\n\n if (code === 0x002d) {\n code = body.charCodeAt(++position);\n } // Zero (0)\n\n if (code === 0x0030) {\n code = body.charCodeAt(++position);\n\n if (isDigit(code)) {\n throw syntaxError(\n lexer.source,\n position,\n `Invalid number, unexpected digit after 0: ${printCodePointAt(\n lexer,\n position,\n )}.`,\n );\n }\n } else {\n position = readDigits(lexer, position, code);\n code = body.charCodeAt(position);\n } // Full stop (.)\n\n if (code === 0x002e) {\n isFloat = true;\n code = body.charCodeAt(++position);\n position = readDigits(lexer, position, code);\n code = body.charCodeAt(position);\n } // E e\n\n if (code === 0x0045 || code === 0x0065) {\n isFloat = true;\n code = body.charCodeAt(++position); // + -\n\n if (code === 0x002b || code === 0x002d) {\n code = body.charCodeAt(++position);\n }\n\n position = readDigits(lexer, position, code);\n code = body.charCodeAt(position);\n } // Numbers cannot be followed by . or NameStart\n\n if (code === 0x002e || isNameStart(code)) {\n throw syntaxError(\n lexer.source,\n position,\n `Invalid number, expected digit but got: ${printCodePointAt(\n lexer,\n position,\n )}.`,\n );\n }\n\n return createToken(\n lexer,\n isFloat ? TokenKind.FLOAT : TokenKind.INT,\n start,\n position,\n body.slice(start, position),\n );\n}\n/**\n * Returns the new position in the source after reading one or more digits.\n */\n\nfunction readDigits(lexer, start, firstCode) {\n if (!isDigit(firstCode)) {\n throw syntaxError(\n lexer.source,\n start,\n `Invalid number, expected digit but got: ${printCodePointAt(\n lexer,\n start,\n )}.`,\n );\n }\n\n const body = lexer.source.body;\n let position = start + 1; // +1 to skip first firstCode\n\n while (isDigit(body.charCodeAt(position))) {\n ++position;\n }\n\n return position;\n}\n/**\n * Reads a single-quote string token from the source file.\n *\n * ```\n * StringValue ::\n * - `\"\"` [lookahead != `\"`]\n * - `\"` StringCharacter+ `\"`\n *\n * StringCharacter ::\n * - SourceCharacter but not `\"` or `\\` or LineTerminator\n * - `\\u` EscapedUnicode\n * - `\\` EscapedCharacter\n *\n * EscapedUnicode ::\n * - `{` HexDigit+ `}`\n * - HexDigit HexDigit HexDigit HexDigit\n *\n * EscapedCharacter :: one of `\"` `\\` `/` `b` `f` `n` `r` `t`\n * ```\n */\n\nfunction readString(lexer, start) {\n const body = lexer.source.body;\n const bodyLength = body.length;\n let position = start + 1;\n let chunkStart = position;\n let value = '';\n\n while (position < bodyLength) {\n const code = body.charCodeAt(position); // Closing Quote (\")\n\n if (code === 0x0022) {\n value += body.slice(chunkStart, position);\n return createToken(lexer, TokenKind.STRING, start, position + 1, value);\n } // Escape Sequence (\\)\n\n if (code === 0x005c) {\n value += body.slice(chunkStart, position);\n const escape =\n body.charCodeAt(position + 1) === 0x0075 // u\n ? body.charCodeAt(position + 2) === 0x007b // {\n ? readEscapedUnicodeVariableWidth(lexer, position)\n : readEscapedUnicodeFixedWidth(lexer, position)\n : readEscapedCharacter(lexer, position);\n value += escape.value;\n position += escape.size;\n chunkStart = position;\n continue;\n } // LineTerminator (\\n | \\r)\n\n if (code === 0x000a || code === 0x000d) {\n break;\n } // SourceCharacter\n\n if (isUnicodeScalarValue(code)) {\n ++position;\n } else if (isSupplementaryCodePoint(body, position)) {\n position += 2;\n } else {\n throw syntaxError(\n lexer.source,\n position,\n `Invalid character within String: ${printCodePointAt(\n lexer,\n position,\n )}.`,\n );\n }\n }\n\n throw syntaxError(lexer.source, position, 'Unterminated string.');\n} // The string value and lexed size of an escape sequence.\n\nfunction readEscapedUnicodeVariableWidth(lexer, position) {\n const body = lexer.source.body;\n let point = 0;\n let size = 3; // Cannot be larger than 12 chars (\\u{00000000}).\n\n while (size < 12) {\n const code = body.charCodeAt(position + size++); // Closing Brace (})\n\n if (code === 0x007d) {\n // Must be at least 5 chars (\\u{0}) and encode a Unicode scalar value.\n if (size < 5 || !isUnicodeScalarValue(point)) {\n break;\n }\n\n return {\n value: String.fromCodePoint(point),\n size,\n };\n } // Append this hex digit to the code point.\n\n point = (point << 4) | readHexDigit(code);\n\n if (point < 0) {\n break;\n }\n }\n\n throw syntaxError(\n lexer.source,\n position,\n `Invalid Unicode escape sequence: \"${body.slice(\n position,\n position + size,\n )}\".`,\n );\n}\n\nfunction readEscapedUnicodeFixedWidth(lexer, position) {\n const body = lexer.source.body;\n const code = read16BitHexCode(body, position + 2);\n\n if (isUnicodeScalarValue(code)) {\n return {\n value: String.fromCodePoint(code),\n size: 6,\n };\n } // GraphQL allows JSON-style surrogate pair escape sequences, but only when\n // a valid pair is formed.\n\n if (isLeadingSurrogate(code)) {\n // \\u\n if (\n body.charCodeAt(position + 6) === 0x005c &&\n body.charCodeAt(position + 7) === 0x0075\n ) {\n const trailingCode = read16BitHexCode(body, position + 8);\n\n if (isTrailingSurrogate(trailingCode)) {\n // JavaScript defines strings as a sequence of UTF-16 code units and\n // encodes Unicode code points above U+FFFF using a surrogate pair of\n // code units. Since this is a surrogate pair escape sequence, just\n // include both codes into the JavaScript string value. Had JavaScript\n // not been internally based on UTF-16, then this surrogate pair would\n // be decoded to retrieve the supplementary code point.\n return {\n value: String.fromCodePoint(code, trailingCode),\n size: 12,\n };\n }\n }\n }\n\n throw syntaxError(\n lexer.source,\n position,\n `Invalid Unicode escape sequence: \"${body.slice(position, position + 6)}\".`,\n );\n}\n/**\n * Reads four hexadecimal characters and returns the positive integer that 16bit\n * hexadecimal string represents. For example, \"000f\" will return 15, and \"dead\"\n * will return 57005.\n *\n * Returns a negative number if any char was not a valid hexadecimal digit.\n */\n\nfunction read16BitHexCode(body, position) {\n // readHexDigit() returns -1 on error. ORing a negative value with any other\n // value always produces a negative value.\n return (\n (readHexDigit(body.charCodeAt(position)) << 12) |\n (readHexDigit(body.charCodeAt(position + 1)) << 8) |\n (readHexDigit(body.charCodeAt(position + 2)) << 4) |\n readHexDigit(body.charCodeAt(position + 3))\n );\n}\n/**\n * Reads a hexadecimal character and returns its positive integer value (0-15).\n *\n * '0' becomes 0, '9' becomes 9\n * 'A' becomes 10, 'F' becomes 15\n * 'a' becomes 10, 'f' becomes 15\n *\n * Returns -1 if the provided character code was not a valid hexadecimal digit.\n *\n * HexDigit :: one of\n * - `0` `1` `2` `3` `4` `5` `6` `7` `8` `9`\n * - `A` `B` `C` `D` `E` `F`\n * - `a` `b` `c` `d` `e` `f`\n */\n\nfunction readHexDigit(code) {\n return code >= 0x0030 && code <= 0x0039 // 0-9\n ? code - 0x0030\n : code >= 0x0041 && code <= 0x0046 // A-F\n ? code - 0x0037\n : code >= 0x0061 && code <= 0x0066 // a-f\n ? code - 0x0057\n : -1;\n}\n/**\n * | Escaped Character | Code Point | Character Name |\n * | ----------------- | ---------- | ---------------------------- |\n * | `\"` | U+0022 | double quote |\n * | `\\` | U+005C | reverse solidus (back slash) |\n * | `/` | U+002F | solidus (forward slash) |\n * | `b` | U+0008 | backspace |\n * | `f` | U+000C | form feed |\n * | `n` | U+000A | line feed (new line) |\n * | `r` | U+000D | carriage return |\n * | `t` | U+0009 | horizontal tab |\n */\n\nfunction readEscapedCharacter(lexer, position) {\n const body = lexer.source.body;\n const code = body.charCodeAt(position + 1);\n\n switch (code) {\n case 0x0022:\n // \"\n return {\n value: '\\u0022',\n size: 2,\n };\n\n case 0x005c:\n // \\\n return {\n value: '\\u005c',\n size: 2,\n };\n\n case 0x002f:\n // /\n return {\n value: '\\u002f',\n size: 2,\n };\n\n case 0x0062:\n // b\n return {\n value: '\\u0008',\n size: 2,\n };\n\n case 0x0066:\n // f\n return {\n value: '\\u000c',\n size: 2,\n };\n\n case 0x006e:\n // n\n return {\n value: '\\u000a',\n size: 2,\n };\n\n case 0x0072:\n // r\n return {\n value: '\\u000d',\n size: 2,\n };\n\n case 0x0074:\n // t\n return {\n value: '\\u0009',\n size: 2,\n };\n }\n\n throw syntaxError(\n lexer.source,\n position,\n `Invalid character escape sequence: \"${body.slice(\n position,\n position + 2,\n )}\".`,\n );\n}\n/**\n * Reads a block string token from the source file.\n *\n * ```\n * StringValue ::\n * - `\"\"\"` BlockStringCharacter* `\"\"\"`\n *\n * BlockStringCharacter ::\n * - SourceCharacter but not `\"\"\"` or `\\\"\"\"`\n * - `\\\"\"\"`\n * ```\n */\n\nfunction readBlockString(lexer, start) {\n const body = lexer.source.body;\n const bodyLength = body.length;\n let lineStart = lexer.lineStart;\n let position = start + 3;\n let chunkStart = position;\n let currentLine = '';\n const blockLines = [];\n\n while (position < bodyLength) {\n const code = body.charCodeAt(position); // Closing Triple-Quote (\"\"\")\n\n if (\n code === 0x0022 &&\n body.charCodeAt(position + 1) === 0x0022 &&\n body.charCodeAt(position + 2) === 0x0022\n ) {\n currentLine += body.slice(chunkStart, position);\n blockLines.push(currentLine);\n const token = createToken(\n lexer,\n TokenKind.BLOCK_STRING,\n start,\n position + 3, // Return a string of the lines joined with U+000A.\n dedentBlockStringLines(blockLines).join('\\n'),\n );\n lexer.line += blockLines.length - 1;\n lexer.lineStart = lineStart;\n return token;\n } // Escaped Triple-Quote (\\\"\"\")\n\n if (\n code === 0x005c &&\n body.charCodeAt(position + 1) === 0x0022 &&\n body.charCodeAt(position + 2) === 0x0022 &&\n body.charCodeAt(position + 3) === 0x0022\n ) {\n currentLine += body.slice(chunkStart, position);\n chunkStart = position + 1; // skip only slash\n\n position += 4;\n continue;\n } // LineTerminator\n\n if (code === 0x000a || code === 0x000d) {\n currentLine += body.slice(chunkStart, position);\n blockLines.push(currentLine);\n\n if (code === 0x000d && body.charCodeAt(position + 1) === 0x000a) {\n position += 2;\n } else {\n ++position;\n }\n\n currentLine = '';\n chunkStart = position;\n lineStart = position;\n continue;\n } // SourceCharacter\n\n if (isUnicodeScalarValue(code)) {\n ++position;\n } else if (isSupplementaryCodePoint(body, position)) {\n position += 2;\n } else {\n throw syntaxError(\n lexer.source,\n position,\n `Invalid character within String: ${printCodePointAt(\n lexer,\n position,\n )}.`,\n );\n }\n }\n\n throw syntaxError(lexer.source, position, 'Unterminated string.');\n}\n/**\n * Reads an alphanumeric + underscore name from the source.\n *\n * ```\n * Name ::\n * - NameStart NameContinue* [lookahead != NameContinue]\n * ```\n */\n\nfunction readName(lexer, start) {\n const body = lexer.source.body;\n const bodyLength = body.length;\n let position = start + 1;\n\n while (position < bodyLength) {\n const code = body.charCodeAt(position);\n\n if (isNameContinue(code)) {\n ++position;\n } else {\n break;\n }\n }\n\n return createToken(\n lexer,\n TokenKind.NAME,\n start,\n position,\n body.slice(start, position),\n );\n}\n","import { inspect } from './inspect.mjs';\n/**\n * A replacement for instanceof which includes an error warning when multi-realm\n * constructors are detected.\n * See: https://expressjs.com/en/advanced/best-practice-performance.html#set-node_env-to-production\n * See: https://webpack.js.org/guides/production/\n */\n\nexport const instanceOf =\n /* c8 ignore next 6 */\n // FIXME: https://github.com/graphql/graphql-js/issues/2317\n globalThis.process && globalThis.process.env.NODE_ENV === 'production'\n ? function instanceOf(value, constructor) {\n return value instanceof constructor;\n }\n : function instanceOf(value, constructor) {\n if (value instanceof constructor) {\n return true;\n }\n\n if (typeof value === 'object' && value !== null) {\n var _value$constructor;\n\n // Prefer Symbol.toStringTag since it is immune to minification.\n const className = constructor.prototype[Symbol.toStringTag];\n const valueClassName = // We still need to support constructor's name to detect conflicts with older versions of this library.\n Symbol.toStringTag in value // @ts-expect-error TS bug see, https://github.com/microsoft/TypeScript/issues/38009\n ? value[Symbol.toStringTag]\n : (_value$constructor = value.constructor) === null ||\n _value$constructor === void 0\n ? void 0\n : _value$constructor.name;\n\n if (className === valueClassName) {\n const stringifiedValue = inspect(value);\n throw new Error(`Cannot use ${className} \"${stringifiedValue}\" from another module or realm.\n\nEnsure that there is only one instance of \"graphql\" in the node_modules\ndirectory. If different versions of \"graphql\" are the dependencies of other\nrelied on modules, use \"resolutions\" to ensure only one version is installed.\n\nhttps://yarnpkg.com/en/docs/selective-version-resolutions\n\nDuplicate \"graphql\" modules cannot be used at the same time since different\nversions may have different capabilities and behavior. The data from one\nversion used in the function from another could produce confusing and\nspurious results.`);\n }\n }\n\n return false;\n };\n","import { devAssert } from '../jsutils/devAssert.mjs';\nimport { inspect } from '../jsutils/inspect.mjs';\nimport { instanceOf } from '../jsutils/instanceOf.mjs';\n\n/**\n * A representation of source input to GraphQL. The `name` and `locationOffset` parameters are\n * optional, but they are useful for clients who store GraphQL documents in source files.\n * For example, if the GraphQL input starts at line 40 in a file named `Foo.graphql`, it might\n * be useful for `name` to be `\"Foo.graphql\"` and location to be `{ line: 40, column: 1 }`.\n * The `line` and `column` properties in `locationOffset` are 1-indexed.\n */\nexport class Source {\n constructor(\n body,\n name = 'GraphQL request',\n locationOffset = {\n line: 1,\n column: 1,\n },\n ) {\n typeof body === 'string' ||\n devAssert(false, `Body must be a string. Received: ${inspect(body)}.`);\n this.body = body;\n this.name = name;\n this.locationOffset = locationOffset;\n this.locationOffset.line > 0 ||\n devAssert(\n false,\n 'line in locationOffset is 1-indexed and must be positive.',\n );\n this.locationOffset.column > 0 ||\n devAssert(\n false,\n 'column in locationOffset is 1-indexed and must be positive.',\n );\n }\n\n get [Symbol.toStringTag]() {\n return 'Source';\n }\n}\n/**\n * Test if the given value is a Source object.\n *\n * @internal\n */\n\nexport function isSource(source) {\n return instanceOf(source, Source);\n}\n","import { syntaxError } from '../error/syntaxError.mjs';\nimport { Location, OperationTypeNode } from './ast.mjs';\nimport { DirectiveLocation } from './directiveLocation.mjs';\nimport { Kind } from './kinds.mjs';\nimport { isPunctuatorTokenKind, Lexer } from './lexer.mjs';\nimport { isSource, Source } from './source.mjs';\nimport { TokenKind } from './tokenKind.mjs';\n/**\n * Configuration options to control parser behavior\n */\n\n/**\n * Given a GraphQL source, parses it into a Document.\n * Throws GraphQLError if a syntax error is encountered.\n */\nexport function parse(source, options) {\n const parser = new Parser(source, options);\n return parser.parseDocument();\n}\n/**\n * Given a string containing a GraphQL value (ex. `[42]`), parse the AST for\n * that value.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Values directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: valueFromAST().\n */\n\nexport function parseValue(source, options) {\n const parser = new Parser(source, options);\n parser.expectToken(TokenKind.SOF);\n const value = parser.parseValueLiteral(false);\n parser.expectToken(TokenKind.EOF);\n return value;\n}\n/**\n * Similar to parseValue(), but raises a parse error if it encounters a\n * variable. The return type will be a constant value.\n */\n\nexport function parseConstValue(source, options) {\n const parser = new Parser(source, options);\n parser.expectToken(TokenKind.SOF);\n const value = parser.parseConstValueLiteral();\n parser.expectToken(TokenKind.EOF);\n return value;\n}\n/**\n * Given a string containing a GraphQL Type (ex. `[Int!]`), parse the AST for\n * that type.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Types directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: typeFromAST().\n */\n\nexport function parseType(source, options) {\n const parser = new Parser(source, options);\n parser.expectToken(TokenKind.SOF);\n const type = parser.parseTypeReference();\n parser.expectToken(TokenKind.EOF);\n return type;\n}\n/**\n * This class is exported only to assist people in implementing their own parsers\n * without duplicating too much code and should be used only as last resort for cases\n * such as experimental syntax or if certain features could not be contributed upstream.\n *\n * It is still part of the internal API and is versioned, so any changes to it are never\n * considered breaking changes. If you still need to support multiple versions of the\n * library, please use the `versionInfo` variable for version detection.\n *\n * @internal\n */\n\nexport class Parser {\n constructor(source, options = {}) {\n const sourceObj = isSource(source) ? source : new Source(source);\n this._lexer = new Lexer(sourceObj);\n this._options = options;\n this._tokenCounter = 0;\n }\n /**\n * Converts a name lex token into a name parse node.\n */\n\n parseName() {\n const token = this.expectToken(TokenKind.NAME);\n return this.node(token, {\n kind: Kind.NAME,\n value: token.value,\n });\n } // Implements the parsing rules in the Document section.\n\n /**\n * Document : Definition+\n */\n\n parseDocument() {\n return this.node(this._lexer.token, {\n kind: Kind.DOCUMENT,\n definitions: this.many(\n TokenKind.SOF,\n this.parseDefinition,\n TokenKind.EOF,\n ),\n });\n }\n /**\n * Definition :\n * - ExecutableDefinition\n * - TypeSystemDefinition\n * - TypeSystemExtension\n *\n * ExecutableDefinition :\n * - OperationDefinition\n * - FragmentDefinition\n *\n * TypeSystemDefinition :\n * - SchemaDefinition\n * - TypeDefinition\n * - DirectiveDefinition\n *\n * TypeDefinition :\n * - ScalarTypeDefinition\n * - ObjectTypeDefinition\n * - InterfaceTypeDefinition\n * - UnionTypeDefinition\n * - EnumTypeDefinition\n * - InputObjectTypeDefinition\n */\n\n parseDefinition() {\n if (this.peek(TokenKind.BRACE_L)) {\n return this.parseOperationDefinition();\n } // Many definitions begin with a description and require a lookahead.\n\n const hasDescription = this.peekDescription();\n const keywordToken = hasDescription\n ? this._lexer.lookahead()\n : this._lexer.token;\n\n if (keywordToken.kind === TokenKind.NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return this.parseSchemaDefinition();\n\n case 'scalar':\n return this.parseScalarTypeDefinition();\n\n case 'type':\n return this.parseObjectTypeDefinition();\n\n case 'interface':\n return this.parseInterfaceTypeDefinition();\n\n case 'union':\n return this.parseUnionTypeDefinition();\n\n case 'enum':\n return this.parseEnumTypeDefinition();\n\n case 'input':\n return this.parseInputObjectTypeDefinition();\n\n case 'directive':\n return this.parseDirectiveDefinition();\n }\n\n if (hasDescription) {\n throw syntaxError(\n this._lexer.source,\n this._lexer.token.start,\n 'Unexpected description, descriptions are supported only on type definitions.',\n );\n }\n\n switch (keywordToken.value) {\n case 'query':\n case 'mutation':\n case 'subscription':\n return this.parseOperationDefinition();\n\n case 'fragment':\n return this.parseFragmentDefinition();\n\n case 'extend':\n return this.parseTypeSystemExtension();\n }\n }\n\n throw this.unexpected(keywordToken);\n } // Implements the parsing rules in the Operations section.\n\n /**\n * OperationDefinition :\n * - SelectionSet\n * - OperationType Name? VariableDefinitions? Directives? SelectionSet\n */\n\n parseOperationDefinition() {\n const start = this._lexer.token;\n\n if (this.peek(TokenKind.BRACE_L)) {\n return this.node(start, {\n kind: Kind.OPERATION_DEFINITION,\n operation: OperationTypeNode.QUERY,\n name: undefined,\n variableDefinitions: [],\n directives: [],\n selectionSet: this.parseSelectionSet(),\n });\n }\n\n const operation = this.parseOperationType();\n let name;\n\n if (this.peek(TokenKind.NAME)) {\n name = this.parseName();\n }\n\n return this.node(start, {\n kind: Kind.OPERATION_DEFINITION,\n operation,\n name,\n variableDefinitions: this.parseVariableDefinitions(),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n });\n }\n /**\n * OperationType : one of query mutation subscription\n */\n\n parseOperationType() {\n const operationToken = this.expectToken(TokenKind.NAME);\n\n switch (operationToken.value) {\n case 'query':\n return OperationTypeNode.QUERY;\n\n case 'mutation':\n return OperationTypeNode.MUTATION;\n\n case 'subscription':\n return OperationTypeNode.SUBSCRIPTION;\n }\n\n throw this.unexpected(operationToken);\n }\n /**\n * VariableDefinitions : ( VariableDefinition+ )\n */\n\n parseVariableDefinitions() {\n return this.optionalMany(\n TokenKind.PAREN_L,\n this.parseVariableDefinition,\n TokenKind.PAREN_R,\n );\n }\n /**\n * VariableDefinition : Variable : Type DefaultValue? Directives[Const]?\n */\n\n parseVariableDefinition() {\n return this.node(this._lexer.token, {\n kind: Kind.VARIABLE_DEFINITION,\n variable: this.parseVariable(),\n type: (this.expectToken(TokenKind.COLON), this.parseTypeReference()),\n defaultValue: this.expectOptionalToken(TokenKind.EQUALS)\n ? this.parseConstValueLiteral()\n : undefined,\n directives: this.parseConstDirectives(),\n });\n }\n /**\n * Variable : $ Name\n */\n\n parseVariable() {\n const start = this._lexer.token;\n this.expectToken(TokenKind.DOLLAR);\n return this.node(start, {\n kind: Kind.VARIABLE,\n name: this.parseName(),\n });\n }\n /**\n * ```\n * SelectionSet : { Selection+ }\n * ```\n */\n\n parseSelectionSet() {\n return this.node(this._lexer.token, {\n kind: Kind.SELECTION_SET,\n selections: this.many(\n TokenKind.BRACE_L,\n this.parseSelection,\n TokenKind.BRACE_R,\n ),\n });\n }\n /**\n * Selection :\n * - Field\n * - FragmentSpread\n * - InlineFragment\n */\n\n parseSelection() {\n return this.peek(TokenKind.SPREAD)\n ? this.parseFragment()\n : this.parseField();\n }\n /**\n * Field : Alias? Name Arguments? Directives? SelectionSet?\n *\n * Alias : Name :\n */\n\n parseField() {\n const start = this._lexer.token;\n const nameOrAlias = this.parseName();\n let alias;\n let name;\n\n if (this.expectOptionalToken(TokenKind.COLON)) {\n alias = nameOrAlias;\n name = this.parseName();\n } else {\n name = nameOrAlias;\n }\n\n return this.node(start, {\n kind: Kind.FIELD,\n alias,\n name,\n arguments: this.parseArguments(false),\n directives: this.parseDirectives(false),\n selectionSet: this.peek(TokenKind.BRACE_L)\n ? this.parseSelectionSet()\n : undefined,\n });\n }\n /**\n * Arguments[Const] : ( Argument[?Const]+ )\n */\n\n parseArguments(isConst) {\n const item = isConst ? this.parseConstArgument : this.parseArgument;\n return this.optionalMany(TokenKind.PAREN_L, item, TokenKind.PAREN_R);\n }\n /**\n * Argument[Const] : Name : Value[?Const]\n */\n\n parseArgument(isConst = false) {\n const start = this._lexer.token;\n const name = this.parseName();\n this.expectToken(TokenKind.COLON);\n return this.node(start, {\n kind: Kind.ARGUMENT,\n name,\n value: this.parseValueLiteral(isConst),\n });\n }\n\n parseConstArgument() {\n return this.parseArgument(true);\n } // Implements the parsing rules in the Fragments section.\n\n /**\n * Corresponds to both FragmentSpread and InlineFragment in the spec.\n *\n * FragmentSpread : ... FragmentName Directives?\n *\n * InlineFragment : ... TypeCondition? Directives? SelectionSet\n */\n\n parseFragment() {\n const start = this._lexer.token;\n this.expectToken(TokenKind.SPREAD);\n const hasTypeCondition = this.expectOptionalKeyword('on');\n\n if (!hasTypeCondition && this.peek(TokenKind.NAME)) {\n return this.node(start, {\n kind: Kind.FRAGMENT_SPREAD,\n name: this.parseFragmentName(),\n directives: this.parseDirectives(false),\n });\n }\n\n return this.node(start, {\n kind: Kind.INLINE_FRAGMENT,\n typeCondition: hasTypeCondition ? this.parseNamedType() : undefined,\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n });\n }\n /**\n * FragmentDefinition :\n * - fragment FragmentName on TypeCondition Directives? SelectionSet\n *\n * TypeCondition : NamedType\n */\n\n parseFragmentDefinition() {\n const start = this._lexer.token;\n this.expectKeyword('fragment'); // Legacy support for defining variables within fragments changes\n // the grammar of FragmentDefinition:\n // - fragment FragmentName VariableDefinitions? on TypeCondition Directives? SelectionSet\n\n if (this._options.allowLegacyFragmentVariables === true) {\n return this.node(start, {\n kind: Kind.FRAGMENT_DEFINITION,\n name: this.parseFragmentName(),\n variableDefinitions: this.parseVariableDefinitions(),\n typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n });\n }\n\n return this.node(start, {\n kind: Kind.FRAGMENT_DEFINITION,\n name: this.parseFragmentName(),\n typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n });\n }\n /**\n * FragmentName : Name but not `on`\n */\n\n parseFragmentName() {\n if (this._lexer.token.value === 'on') {\n throw this.unexpected();\n }\n\n return this.parseName();\n } // Implements the parsing rules in the Values section.\n\n /**\n * Value[Const] :\n * - [~Const] Variable\n * - IntValue\n * - FloatValue\n * - StringValue\n * - BooleanValue\n * - NullValue\n * - EnumValue\n * - ListValue[?Const]\n * - ObjectValue[?Const]\n *\n * BooleanValue : one of `true` `false`\n *\n * NullValue : `null`\n *\n * EnumValue : Name but not `true`, `false` or `null`\n */\n\n parseValueLiteral(isConst) {\n const token = this._lexer.token;\n\n switch (token.kind) {\n case TokenKind.BRACKET_L:\n return this.parseList(isConst);\n\n case TokenKind.BRACE_L:\n return this.parseObject(isConst);\n\n case TokenKind.INT:\n this.advanceLexer();\n return this.node(token, {\n kind: Kind.INT,\n value: token.value,\n });\n\n case TokenKind.FLOAT:\n this.advanceLexer();\n return this.node(token, {\n kind: Kind.FLOAT,\n value: token.value,\n });\n\n case TokenKind.STRING:\n case TokenKind.BLOCK_STRING:\n return this.parseStringLiteral();\n\n case TokenKind.NAME:\n this.advanceLexer();\n\n switch (token.value) {\n case 'true':\n return this.node(token, {\n kind: Kind.BOOLEAN,\n value: true,\n });\n\n case 'false':\n return this.node(token, {\n kind: Kind.BOOLEAN,\n value: false,\n });\n\n case 'null':\n return this.node(token, {\n kind: Kind.NULL,\n });\n\n default:\n return this.node(token, {\n kind: Kind.ENUM,\n value: token.value,\n });\n }\n\n case TokenKind.DOLLAR:\n if (isConst) {\n this.expectToken(TokenKind.DOLLAR);\n\n if (this._lexer.token.kind === TokenKind.NAME) {\n const varName = this._lexer.token.value;\n throw syntaxError(\n this._lexer.source,\n token.start,\n `Unexpected variable \"$${varName}\" in constant value.`,\n );\n } else {\n throw this.unexpected(token);\n }\n }\n\n return this.parseVariable();\n\n default:\n throw this.unexpected();\n }\n }\n\n parseConstValueLiteral() {\n return this.parseValueLiteral(true);\n }\n\n parseStringLiteral() {\n const token = this._lexer.token;\n this.advanceLexer();\n return this.node(token, {\n kind: Kind.STRING,\n value: token.value,\n block: token.kind === TokenKind.BLOCK_STRING,\n });\n }\n /**\n * ListValue[Const] :\n * - [ ]\n * - [ Value[?Const]+ ]\n */\n\n parseList(isConst) {\n const item = () => this.parseValueLiteral(isConst);\n\n return this.node(this._lexer.token, {\n kind: Kind.LIST,\n values: this.any(TokenKind.BRACKET_L, item, TokenKind.BRACKET_R),\n });\n }\n /**\n * ```\n * ObjectValue[Const] :\n * - { }\n * - { ObjectField[?Const]+ }\n * ```\n */\n\n parseObject(isConst) {\n const item = () => this.parseObjectField(isConst);\n\n return this.node(this._lexer.token, {\n kind: Kind.OBJECT,\n fields: this.any(TokenKind.BRACE_L, item, TokenKind.BRACE_R),\n });\n }\n /**\n * ObjectField[Const] : Name : Value[?Const]\n */\n\n parseObjectField(isConst) {\n const start = this._lexer.token;\n const name = this.parseName();\n this.expectToken(TokenKind.COLON);\n return this.node(start, {\n kind: Kind.OBJECT_FIELD,\n name,\n value: this.parseValueLiteral(isConst),\n });\n } // Implements the parsing rules in the Directives section.\n\n /**\n * Directives[Const] : Directive[?Const]+\n */\n\n parseDirectives(isConst) {\n const directives = [];\n\n while (this.peek(TokenKind.AT)) {\n directives.push(this.parseDirective(isConst));\n }\n\n return directives;\n }\n\n parseConstDirectives() {\n return this.parseDirectives(true);\n }\n /**\n * ```\n * Directive[Const] : @ Name Arguments[?Const]?\n * ```\n */\n\n parseDirective(isConst) {\n const start = this._lexer.token;\n this.expectToken(TokenKind.AT);\n return this.node(start, {\n kind: Kind.DIRECTIVE,\n name: this.parseName(),\n arguments: this.parseArguments(isConst),\n });\n } // Implements the parsing rules in the Types section.\n\n /**\n * Type :\n * - NamedType\n * - ListType\n * - NonNullType\n */\n\n parseTypeReference() {\n const start = this._lexer.token;\n let type;\n\n if (this.expectOptionalToken(TokenKind.BRACKET_L)) {\n const innerType = this.parseTypeReference();\n this.expectToken(TokenKind.BRACKET_R);\n type = this.node(start, {\n kind: Kind.LIST_TYPE,\n type: innerType,\n });\n } else {\n type = this.parseNamedType();\n }\n\n if (this.expectOptionalToken(TokenKind.BANG)) {\n return this.node(start, {\n kind: Kind.NON_NULL_TYPE,\n type,\n });\n }\n\n return type;\n }\n /**\n * NamedType : Name\n */\n\n parseNamedType() {\n return this.node(this._lexer.token, {\n kind: Kind.NAMED_TYPE,\n name: this.parseName(),\n });\n } // Implements the parsing rules in the Type Definition section.\n\n peekDescription() {\n return this.peek(TokenKind.STRING) || this.peek(TokenKind.BLOCK_STRING);\n }\n /**\n * Description : StringValue\n */\n\n parseDescription() {\n if (this.peekDescription()) {\n return this.parseStringLiteral();\n }\n }\n /**\n * ```\n * SchemaDefinition : Description? schema Directives[Const]? { OperationTypeDefinition+ }\n * ```\n */\n\n parseSchemaDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('schema');\n const directives = this.parseConstDirectives();\n const operationTypes = this.many(\n TokenKind.BRACE_L,\n this.parseOperationTypeDefinition,\n TokenKind.BRACE_R,\n );\n return this.node(start, {\n kind: Kind.SCHEMA_DEFINITION,\n description,\n directives,\n operationTypes,\n });\n }\n /**\n * OperationTypeDefinition : OperationType : NamedType\n */\n\n parseOperationTypeDefinition() {\n const start = this._lexer.token;\n const operation = this.parseOperationType();\n this.expectToken(TokenKind.COLON);\n const type = this.parseNamedType();\n return this.node(start, {\n kind: Kind.OPERATION_TYPE_DEFINITION,\n operation,\n type,\n });\n }\n /**\n * ScalarTypeDefinition : Description? scalar Name Directives[Const]?\n */\n\n parseScalarTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('scalar');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n return this.node(start, {\n kind: Kind.SCALAR_TYPE_DEFINITION,\n description,\n name,\n directives,\n });\n }\n /**\n * ObjectTypeDefinition :\n * Description?\n * type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition?\n */\n\n parseObjectTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('type');\n const name = this.parseName();\n const interfaces = this.parseImplementsInterfaces();\n const directives = this.parseConstDirectives();\n const fields = this.parseFieldsDefinition();\n return this.node(start, {\n kind: Kind.OBJECT_TYPE_DEFINITION,\n description,\n name,\n interfaces,\n directives,\n fields,\n });\n }\n /**\n * ImplementsInterfaces :\n * - implements `&`? NamedType\n * - ImplementsInterfaces & NamedType\n */\n\n parseImplementsInterfaces() {\n return this.expectOptionalKeyword('implements')\n ? this.delimitedMany(TokenKind.AMP, this.parseNamedType)\n : [];\n }\n /**\n * ```\n * FieldsDefinition : { FieldDefinition+ }\n * ```\n */\n\n parseFieldsDefinition() {\n return this.optionalMany(\n TokenKind.BRACE_L,\n this.parseFieldDefinition,\n TokenKind.BRACE_R,\n );\n }\n /**\n * FieldDefinition :\n * - Description? Name ArgumentsDefinition? : Type Directives[Const]?\n */\n\n parseFieldDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n const name = this.parseName();\n const args = this.parseArgumentDefs();\n this.expectToken(TokenKind.COLON);\n const type = this.parseTypeReference();\n const directives = this.parseConstDirectives();\n return this.node(start, {\n kind: Kind.FIELD_DEFINITION,\n description,\n name,\n arguments: args,\n type,\n directives,\n });\n }\n /**\n * ArgumentsDefinition : ( InputValueDefinition+ )\n */\n\n parseArgumentDefs() {\n return this.optionalMany(\n TokenKind.PAREN_L,\n this.parseInputValueDef,\n TokenKind.PAREN_R,\n );\n }\n /**\n * InputValueDefinition :\n * - Description? Name : Type DefaultValue? Directives[Const]?\n */\n\n parseInputValueDef() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n const name = this.parseName();\n this.expectToken(TokenKind.COLON);\n const type = this.parseTypeReference();\n let defaultValue;\n\n if (this.expectOptionalToken(TokenKind.EQUALS)) {\n defaultValue = this.parseConstValueLiteral();\n }\n\n const directives = this.parseConstDirectives();\n return this.node(start, {\n kind: Kind.INPUT_VALUE_DEFINITION,\n description,\n name,\n type,\n defaultValue,\n directives,\n });\n }\n /**\n * InterfaceTypeDefinition :\n * - Description? interface Name Directives[Const]? FieldsDefinition?\n */\n\n parseInterfaceTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('interface');\n const name = this.parseName();\n const interfaces = this.parseImplementsInterfaces();\n const directives = this.parseConstDirectives();\n const fields = this.parseFieldsDefinition();\n return this.node(start, {\n kind: Kind.INTERFACE_TYPE_DEFINITION,\n description,\n name,\n interfaces,\n directives,\n fields,\n });\n }\n /**\n * UnionTypeDefinition :\n * - Description? union Name Directives[Const]? UnionMemberTypes?\n */\n\n parseUnionTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('union');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const types = this.parseUnionMemberTypes();\n return this.node(start, {\n kind: Kind.UNION_TYPE_DEFINITION,\n description,\n name,\n directives,\n types,\n });\n }\n /**\n * UnionMemberTypes :\n * - = `|`? NamedType\n * - UnionMemberTypes | NamedType\n */\n\n parseUnionMemberTypes() {\n return this.expectOptionalToken(TokenKind.EQUALS)\n ? this.delimitedMany(TokenKind.PIPE, this.parseNamedType)\n : [];\n }\n /**\n * EnumTypeDefinition :\n * - Description? enum Name Directives[Const]? EnumValuesDefinition?\n */\n\n parseEnumTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('enum');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const values = this.parseEnumValuesDefinition();\n return this.node(start, {\n kind: Kind.ENUM_TYPE_DEFINITION,\n description,\n name,\n directives,\n values,\n });\n }\n /**\n * ```\n * EnumValuesDefinition : { EnumValueDefinition+ }\n * ```\n */\n\n parseEnumValuesDefinition() {\n return this.optionalMany(\n TokenKind.BRACE_L,\n this.parseEnumValueDefinition,\n TokenKind.BRACE_R,\n );\n }\n /**\n * EnumValueDefinition : Description? EnumValue Directives[Const]?\n */\n\n parseEnumValueDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n const name = this.parseEnumValueName();\n const directives = this.parseConstDirectives();\n return this.node(start, {\n kind: Kind.ENUM_VALUE_DEFINITION,\n description,\n name,\n directives,\n });\n }\n /**\n * EnumValue : Name but not `true`, `false` or `null`\n */\n\n parseEnumValueName() {\n if (\n this._lexer.token.value === 'true' ||\n this._lexer.token.value === 'false' ||\n this._lexer.token.value === 'null'\n ) {\n throw syntaxError(\n this._lexer.source,\n this._lexer.token.start,\n `${getTokenDesc(\n this._lexer.token,\n )} is reserved and cannot be used for an enum value.`,\n );\n }\n\n return this.parseName();\n }\n /**\n * InputObjectTypeDefinition :\n * - Description? input Name Directives[Const]? InputFieldsDefinition?\n */\n\n parseInputObjectTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('input');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const fields = this.parseInputFieldsDefinition();\n return this.node(start, {\n kind: Kind.INPUT_OBJECT_TYPE_DEFINITION,\n description,\n name,\n directives,\n fields,\n });\n }\n /**\n * ```\n * InputFieldsDefinition : { InputValueDefinition+ }\n * ```\n */\n\n parseInputFieldsDefinition() {\n return this.optionalMany(\n TokenKind.BRACE_L,\n this.parseInputValueDef,\n TokenKind.BRACE_R,\n );\n }\n /**\n * TypeSystemExtension :\n * - SchemaExtension\n * - TypeExtension\n *\n * TypeExtension :\n * - ScalarTypeExtension\n * - ObjectTypeExtension\n * - InterfaceTypeExtension\n * - UnionTypeExtension\n * - EnumTypeExtension\n * - InputObjectTypeDefinition\n */\n\n parseTypeSystemExtension() {\n const keywordToken = this._lexer.lookahead();\n\n if (keywordToken.kind === TokenKind.NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return this.parseSchemaExtension();\n\n case 'scalar':\n return this.parseScalarTypeExtension();\n\n case 'type':\n return this.parseObjectTypeExtension();\n\n case 'interface':\n return this.parseInterfaceTypeExtension();\n\n case 'union':\n return this.parseUnionTypeExtension();\n\n case 'enum':\n return this.parseEnumTypeExtension();\n\n case 'input':\n return this.parseInputObjectTypeExtension();\n }\n }\n\n throw this.unexpected(keywordToken);\n }\n /**\n * ```\n * SchemaExtension :\n * - extend schema Directives[Const]? { OperationTypeDefinition+ }\n * - extend schema Directives[Const]\n * ```\n */\n\n parseSchemaExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('schema');\n const directives = this.parseConstDirectives();\n const operationTypes = this.optionalMany(\n TokenKind.BRACE_L,\n this.parseOperationTypeDefinition,\n TokenKind.BRACE_R,\n );\n\n if (directives.length === 0 && operationTypes.length === 0) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: Kind.SCHEMA_EXTENSION,\n directives,\n operationTypes,\n });\n }\n /**\n * ScalarTypeExtension :\n * - extend scalar Name Directives[Const]\n */\n\n parseScalarTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('scalar');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n\n if (directives.length === 0) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: Kind.SCALAR_TYPE_EXTENSION,\n name,\n directives,\n });\n }\n /**\n * ObjectTypeExtension :\n * - extend type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n * - extend type Name ImplementsInterfaces? Directives[Const]\n * - extend type Name ImplementsInterfaces\n */\n\n parseObjectTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('type');\n const name = this.parseName();\n const interfaces = this.parseImplementsInterfaces();\n const directives = this.parseConstDirectives();\n const fields = this.parseFieldsDefinition();\n\n if (\n interfaces.length === 0 &&\n directives.length === 0 &&\n fields.length === 0\n ) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: Kind.OBJECT_TYPE_EXTENSION,\n name,\n interfaces,\n directives,\n fields,\n });\n }\n /**\n * InterfaceTypeExtension :\n * - extend interface Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n * - extend interface Name ImplementsInterfaces? Directives[Const]\n * - extend interface Name ImplementsInterfaces\n */\n\n parseInterfaceTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('interface');\n const name = this.parseName();\n const interfaces = this.parseImplementsInterfaces();\n const directives = this.parseConstDirectives();\n const fields = this.parseFieldsDefinition();\n\n if (\n interfaces.length === 0 &&\n directives.length === 0 &&\n fields.length === 0\n ) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: Kind.INTERFACE_TYPE_EXTENSION,\n name,\n interfaces,\n directives,\n fields,\n });\n }\n /**\n * UnionTypeExtension :\n * - extend union Name Directives[Const]? UnionMemberTypes\n * - extend union Name Directives[Const]\n */\n\n parseUnionTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('union');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const types = this.parseUnionMemberTypes();\n\n if (directives.length === 0 && types.length === 0) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: Kind.UNION_TYPE_EXTENSION,\n name,\n directives,\n types,\n });\n }\n /**\n * EnumTypeExtension :\n * - extend enum Name Directives[Const]? EnumValuesDefinition\n * - extend enum Name Directives[Const]\n */\n\n parseEnumTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('enum');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const values = this.parseEnumValuesDefinition();\n\n if (directives.length === 0 && values.length === 0) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: Kind.ENUM_TYPE_EXTENSION,\n name,\n directives,\n values,\n });\n }\n /**\n * InputObjectTypeExtension :\n * - extend input Name Directives[Const]? InputFieldsDefinition\n * - extend input Name Directives[Const]\n */\n\n parseInputObjectTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('input');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const fields = this.parseInputFieldsDefinition();\n\n if (directives.length === 0 && fields.length === 0) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: Kind.INPUT_OBJECT_TYPE_EXTENSION,\n name,\n directives,\n fields,\n });\n }\n /**\n * ```\n * DirectiveDefinition :\n * - Description? directive @ Name ArgumentsDefinition? `repeatable`? on DirectiveLocations\n * ```\n */\n\n parseDirectiveDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('directive');\n this.expectToken(TokenKind.AT);\n const name = this.parseName();\n const args = this.parseArgumentDefs();\n const repeatable = this.expectOptionalKeyword('repeatable');\n this.expectKeyword('on');\n const locations = this.parseDirectiveLocations();\n return this.node(start, {\n kind: Kind.DIRECTIVE_DEFINITION,\n description,\n name,\n arguments: args,\n repeatable,\n locations,\n });\n }\n /**\n * DirectiveLocations :\n * - `|`? DirectiveLocation\n * - DirectiveLocations | DirectiveLocation\n */\n\n parseDirectiveLocations() {\n return this.delimitedMany(TokenKind.PIPE, this.parseDirectiveLocation);\n }\n /*\n * DirectiveLocation :\n * - ExecutableDirectiveLocation\n * - TypeSystemDirectiveLocation\n *\n * ExecutableDirectiveLocation : one of\n * `QUERY`\n * `MUTATION`\n * `SUBSCRIPTION`\n * `FIELD`\n * `FRAGMENT_DEFINITION`\n * `FRAGMENT_SPREAD`\n * `INLINE_FRAGMENT`\n *\n * TypeSystemDirectiveLocation : one of\n * `SCHEMA`\n * `SCALAR`\n * `OBJECT`\n * `FIELD_DEFINITION`\n * `ARGUMENT_DEFINITION`\n * `INTERFACE`\n * `UNION`\n * `ENUM`\n * `ENUM_VALUE`\n * `INPUT_OBJECT`\n * `INPUT_FIELD_DEFINITION`\n */\n\n parseDirectiveLocation() {\n const start = this._lexer.token;\n const name = this.parseName();\n\n if (Object.prototype.hasOwnProperty.call(DirectiveLocation, name.value)) {\n return name;\n }\n\n throw this.unexpected(start);\n } // Core parsing utility functions\n\n /**\n * Returns a node that, if configured to do so, sets a \"loc\" field as a\n * location object, used to identify the place in the source that created a\n * given parsed object.\n */\n\n node(startToken, node) {\n if (this._options.noLocation !== true) {\n node.loc = new Location(\n startToken,\n this._lexer.lastToken,\n this._lexer.source,\n );\n }\n\n return node;\n }\n /**\n * Determines if the next token is of a given kind\n */\n\n peek(kind) {\n return this._lexer.token.kind === kind;\n }\n /**\n * If the next token is of the given kind, return that token after advancing the lexer.\n * Otherwise, do not change the parser state and throw an error.\n */\n\n expectToken(kind) {\n const token = this._lexer.token;\n\n if (token.kind === kind) {\n this.advanceLexer();\n return token;\n }\n\n throw syntaxError(\n this._lexer.source,\n token.start,\n `Expected ${getTokenKindDesc(kind)}, found ${getTokenDesc(token)}.`,\n );\n }\n /**\n * If the next token is of the given kind, return \"true\" after advancing the lexer.\n * Otherwise, do not change the parser state and return \"false\".\n */\n\n expectOptionalToken(kind) {\n const token = this._lexer.token;\n\n if (token.kind === kind) {\n this.advanceLexer();\n return true;\n }\n\n return false;\n }\n /**\n * If the next token is a given keyword, advance the lexer.\n * Otherwise, do not change the parser state and throw an error.\n */\n\n expectKeyword(value) {\n const token = this._lexer.token;\n\n if (token.kind === TokenKind.NAME && token.value === value) {\n this.advanceLexer();\n } else {\n throw syntaxError(\n this._lexer.source,\n token.start,\n `Expected \"${value}\", found ${getTokenDesc(token)}.`,\n );\n }\n }\n /**\n * If the next token is a given keyword, return \"true\" after advancing the lexer.\n * Otherwise, do not change the parser state and return \"false\".\n */\n\n expectOptionalKeyword(value) {\n const token = this._lexer.token;\n\n if (token.kind === TokenKind.NAME && token.value === value) {\n this.advanceLexer();\n return true;\n }\n\n return false;\n }\n /**\n * Helper function for creating an error when an unexpected lexed token is encountered.\n */\n\n unexpected(atToken) {\n const token =\n atToken !== null && atToken !== void 0 ? atToken : this._lexer.token;\n return syntaxError(\n this._lexer.source,\n token.start,\n `Unexpected ${getTokenDesc(token)}.`,\n );\n }\n /**\n * Returns a possibly empty list of parse nodes, determined by the parseFn.\n * This list begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n\n any(openKind, parseFn, closeKind) {\n this.expectToken(openKind);\n const nodes = [];\n\n while (!this.expectOptionalToken(closeKind)) {\n nodes.push(parseFn.call(this));\n }\n\n return nodes;\n }\n /**\n * Returns a list of parse nodes, determined by the parseFn.\n * It can be empty only if open token is missing otherwise it will always return non-empty list\n * that begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n\n optionalMany(openKind, parseFn, closeKind) {\n if (this.expectOptionalToken(openKind)) {\n const nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (!this.expectOptionalToken(closeKind));\n\n return nodes;\n }\n\n return [];\n }\n /**\n * Returns a non-empty list of parse nodes, determined by the parseFn.\n * This list begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n\n many(openKind, parseFn, closeKind) {\n this.expectToken(openKind);\n const nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (!this.expectOptionalToken(closeKind));\n\n return nodes;\n }\n /**\n * Returns a non-empty list of parse nodes, determined by the parseFn.\n * This list may begin with a lex token of delimiterKind followed by items separated by lex tokens of tokenKind.\n * Advances the parser to the next lex token after last item in the list.\n */\n\n delimitedMany(delimiterKind, parseFn) {\n this.expectOptionalToken(delimiterKind);\n const nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (this.expectOptionalToken(delimiterKind));\n\n return nodes;\n }\n\n advanceLexer() {\n const { maxTokens } = this._options;\n\n const token = this._lexer.advance();\n\n if (maxTokens !== undefined && token.kind !== TokenKind.EOF) {\n ++this._tokenCounter;\n\n if (this._tokenCounter > maxTokens) {\n throw syntaxError(\n this._lexer.source,\n token.start,\n `Document contains more that ${maxTokens} tokens. Parsing aborted.`,\n );\n }\n }\n }\n}\n/**\n * A helper function to describe a token as a string for debugging.\n */\n\nfunction getTokenDesc(token) {\n const value = token.value;\n return getTokenKindDesc(token.kind) + (value != null ? ` \"${value}\"` : '');\n}\n/**\n * A helper function to describe a token kind as a string for debugging.\n */\n\nfunction getTokenKindDesc(kind) {\n return isPunctuatorTokenKind(kind) ? `\"${kind}\"` : kind;\n}\n","import { __assign } from \"tslib\";\nimport { parse } from 'graphql';\nvar docCache = new Map();\nvar fragmentSourceMap = new Map();\nvar printFragmentWarnings = true;\nvar experimentalFragmentVariables = false;\nfunction normalize(string) {\n return string.replace(/[\\s,]+/g, ' ').trim();\n}\nfunction cacheKeyFromLoc(loc) {\n return normalize(loc.source.body.substring(loc.start, loc.end));\n}\nfunction processFragments(ast) {\n var seenKeys = new Set();\n var definitions = [];\n ast.definitions.forEach(function (fragmentDefinition) {\n if (fragmentDefinition.kind === 'FragmentDefinition') {\n var fragmentName = fragmentDefinition.name.value;\n var sourceKey = cacheKeyFromLoc(fragmentDefinition.loc);\n var sourceKeySet = fragmentSourceMap.get(fragmentName);\n if (sourceKeySet && !sourceKeySet.has(sourceKey)) {\n if (printFragmentWarnings) {\n console.warn(\"Warning: fragment with name \" + fragmentName + \" already exists.\\n\"\n + \"graphql-tag enforces all fragment names across your application to be unique; read more about\\n\"\n + \"this in the docs: http://dev.apollodata.com/core/fragments.html#unique-names\");\n }\n }\n else if (!sourceKeySet) {\n fragmentSourceMap.set(fragmentName, sourceKeySet = new Set);\n }\n sourceKeySet.add(sourceKey);\n if (!seenKeys.has(sourceKey)) {\n seenKeys.add(sourceKey);\n definitions.push(fragmentDefinition);\n }\n }\n else {\n definitions.push(fragmentDefinition);\n }\n });\n return __assign(__assign({}, ast), { definitions: definitions });\n}\nfunction stripLoc(doc) {\n var workSet = new Set(doc.definitions);\n workSet.forEach(function (node) {\n if (node.loc)\n delete node.loc;\n Object.keys(node).forEach(function (key) {\n var value = node[key];\n if (value && typeof value === 'object') {\n workSet.add(value);\n }\n });\n });\n var loc = doc.loc;\n if (loc) {\n delete loc.startToken;\n delete loc.endToken;\n }\n return doc;\n}\nfunction parseDocument(source) {\n var cacheKey = normalize(source);\n if (!docCache.has(cacheKey)) {\n var parsed = parse(source, {\n experimentalFragmentVariables: experimentalFragmentVariables,\n allowLegacyFragmentVariables: experimentalFragmentVariables\n });\n if (!parsed || parsed.kind !== 'Document') {\n throw new Error('Not a valid GraphQL document.');\n }\n docCache.set(cacheKey, stripLoc(processFragments(parsed)));\n }\n return docCache.get(cacheKey);\n}\nexport function gql(literals) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (typeof literals === 'string') {\n literals = [literals];\n }\n var result = literals[0];\n args.forEach(function (arg, i) {\n if (arg && arg.kind === 'Document') {\n result += arg.loc.source.body;\n }\n else {\n result += arg;\n }\n result += literals[i + 1];\n });\n return parseDocument(result);\n}\nexport function resetCaches() {\n docCache.clear();\n fragmentSourceMap.clear();\n}\nexport function disableFragmentWarnings() {\n printFragmentWarnings = false;\n}\nexport function enableExperimentalFragmentVariables() {\n experimentalFragmentVariables = true;\n}\nexport function disableExperimentalFragmentVariables() {\n experimentalFragmentVariables = false;\n}\nvar extras = {\n gql: gql,\n resetCaches: resetCaches,\n disableFragmentWarnings: disableFragmentWarnings,\n enableExperimentalFragmentVariables: enableExperimentalFragmentVariables,\n disableExperimentalFragmentVariables: disableExperimentalFragmentVariables\n};\n(function (gql_1) {\n gql_1.gql = extras.gql, gql_1.resetCaches = extras.resetCaches, gql_1.disableFragmentWarnings = extras.disableFragmentWarnings, gql_1.enableExperimentalFragmentVariables = extras.enableExperimentalFragmentVariables, gql_1.disableExperimentalFragmentVariables = extras.disableExperimentalFragmentVariables;\n})(gql || (gql = {}));\ngql[\"default\"] = gql;\nexport default gql;\n","import * as i0 from '@angular/core';\nimport { InjectionToken, Injectable, Optional, Inject, NgModule } from '@angular/core';\nimport { Observable, queueScheduler, observable, from } from 'rxjs';\nimport { NetworkStatus, ApolloClient, gql as gql$1 } from '@apollo/client/core';\nimport { map, startWith, observeOn } from 'rxjs/operators';\n\nfunction fromPromise(promiseFn) {\n return new Observable(subscriber => {\n promiseFn().then(result => {\n if (!subscriber.closed) {\n subscriber.next(result);\n subscriber.complete();\n }\n }, error => {\n if (!subscriber.closed) {\n subscriber.error(error);\n }\n });\n return () => subscriber.unsubscribe();\n });\n}\nfunction useMutationLoading(source, enabled) {\n if (!enabled) {\n return source.pipe(map(result => ({\n ...result,\n loading: false,\n })));\n }\n return source.pipe(startWith({\n loading: true,\n }), map(result => ({\n ...result,\n loading: !!result.loading,\n })));\n}\nclass ZoneScheduler {\n zone;\n constructor(zone) {\n this.zone = zone;\n }\n now = Date.now ? Date.now : () => +new Date();\n schedule(work, delay = 0, state) {\n return this.zone.run(() => queueScheduler.schedule(work, delay, state));\n }\n}\nfunction fixObservable(obs) {\n obs[observable] = () => obs;\n return obs;\n}\nfunction wrapWithZone(obs, ngZone) {\n return obs.pipe(observeOn(new ZoneScheduler(ngZone)));\n}\nfunction pickFlag(flags, flag, defaultValue) {\n return flags && typeof flags[flag] !== 'undefined' ? flags[flag] : defaultValue;\n}\n\nfunction useInitialLoading(obsQuery) {\n return function useInitialLoadingOperator(source) {\n return new Observable(function useInitialLoadingSubscription(subscriber) {\n const currentResult = obsQuery.getCurrentResult();\n const { loading, errors, error, partial, data } = currentResult;\n const { partialRefetch, fetchPolicy } = obsQuery.options;\n const hasError = errors || error;\n if (partialRefetch &&\n partial &&\n (!data || Object.keys(data).length === 0) &&\n fetchPolicy !== 'cache-only' &&\n !loading &&\n !hasError) {\n subscriber.next({\n ...currentResult,\n loading: true,\n networkStatus: NetworkStatus.loading,\n });\n }\n return source.subscribe(subscriber);\n });\n };\n}\nclass QueryRef {\n obsQuery;\n valueChanges;\n queryId;\n constructor(obsQuery, ngZone, options) {\n this.obsQuery = obsQuery;\n const wrapped = wrapWithZone(from(fixObservable(this.obsQuery)), ngZone);\n this.valueChanges = options.useInitialLoading\n ? wrapped.pipe(useInitialLoading(this.obsQuery))\n : wrapped;\n this.queryId = this.obsQuery.queryId;\n }\n // ObservableQuery's methods\n get options() {\n return this.obsQuery.options;\n }\n get variables() {\n return this.obsQuery.variables;\n }\n result() {\n return this.obsQuery.result();\n }\n getCurrentResult() {\n return this.obsQuery.getCurrentResult();\n }\n getLastResult() {\n return this.obsQuery.getLastResult();\n }\n getLastError() {\n return this.obsQuery.getLastError();\n }\n resetLastResults() {\n return this.obsQuery.resetLastResults();\n }\n refetch(variables) {\n return this.obsQuery.refetch(variables);\n }\n fetchMore(fetchMoreOptions) {\n return this.obsQuery.fetchMore(fetchMoreOptions);\n }\n subscribeToMore(options) {\n // XXX: there's a bug in apollo-client typings\n // it should not inherit types from ObservableQuery\n return this.obsQuery.subscribeToMore(options);\n }\n updateQuery(mapFn) {\n return this.obsQuery.updateQuery(mapFn);\n }\n stopPolling() {\n return this.obsQuery.stopPolling();\n }\n startPolling(pollInterval) {\n return this.obsQuery.startPolling(pollInterval);\n }\n setOptions(opts) {\n return this.obsQuery.setOptions(opts);\n }\n setVariables(variables) {\n return this.obsQuery.setVariables(variables);\n }\n}\n\nconst APOLLO_FLAGS = new InjectionToken('APOLLO_FLAGS');\nconst APOLLO_OPTIONS = new InjectionToken('APOLLO_OPTIONS');\nconst APOLLO_NAMED_OPTIONS = new InjectionToken('APOLLO_NAMED_OPTIONS');\n\nclass ApolloBase {\n ngZone;\n flags;\n _client;\n useInitialLoading;\n useMutationLoading;\n constructor(ngZone, flags, _client) {\n this.ngZone = ngZone;\n this.flags = flags;\n this._client = _client;\n this.useInitialLoading = pickFlag(flags, 'useInitialLoading', false);\n this.useMutationLoading = pickFlag(flags, 'useMutationLoading', false);\n }\n watchQuery(options) {\n return new QueryRef(this.ensureClient().watchQuery({\n ...options,\n }), this.ngZone, {\n useInitialLoading: this.useInitialLoading,\n ...options,\n });\n }\n query(options) {\n return fromPromise(() => this.ensureClient().query({ ...options }));\n }\n mutate(options) {\n return useMutationLoading(fromPromise(() => this.ensureClient().mutate({ ...options })), options.useMutationLoading ?? this.useMutationLoading);\n }\n subscribe(options, extra) {\n const obs = from(fixObservable(this.ensureClient().subscribe({ ...options })));\n return extra && extra.useZone !== true ? obs : wrapWithZone(obs, this.ngZone);\n }\n /**\n * Get an instance of ApolloClient\n * @deprecated use `apollo.client` instead\n */\n getClient() {\n return this.client;\n }\n /**\n * Set a new instance of ApolloClient\n * Remember to clean up the store before setting a new client.\n * @deprecated use `apollo.client = client` instead\n *\n * @param client ApolloClient instance\n */\n setClient(client) {\n this.client = client;\n }\n /**\n * Get an instance of ApolloClient\n */\n get client() {\n return this._client;\n }\n /**\n * Set a new instance of ApolloClient\n * Remember to clean up the store before setting a new client.\n *\n * @param client ApolloClient instance\n */\n set client(client) {\n if (this._client) {\n throw new Error('Client has been already defined');\n }\n this._client = client;\n }\n ensureClient() {\n this.checkInstance();\n return this._client;\n }\n checkInstance() {\n if (!this._client) {\n throw new Error('Client has not been defined yet');\n }\n }\n}\nclass Apollo extends ApolloBase {\n _ngZone;\n map = new Map();\n constructor(_ngZone, apolloOptions, apolloNamedOptions, flags) {\n super(_ngZone, flags);\n this._ngZone = _ngZone;\n if (apolloOptions) {\n this.createDefault(apolloOptions);\n }\n if (apolloNamedOptions && typeof apolloNamedOptions === 'object') {\n for (let name in apolloNamedOptions) {\n if (apolloNamedOptions.hasOwnProperty(name)) {\n const options = apolloNamedOptions[name];\n this.create(options, name);\n }\n }\n }\n }\n /**\n * Create an instance of ApolloClient\n * @param options Options required to create ApolloClient\n * @param name client's name\n */\n create(options, name) {\n if (isDefault(name)) {\n this.createDefault(options);\n }\n else {\n this.createNamed(name, options);\n }\n }\n /**\n * Use a default ApolloClient\n */\n default() {\n return this;\n }\n /**\n * Use a named ApolloClient\n * @param name client's name\n */\n use(name) {\n if (isDefault(name)) {\n return this.default();\n }\n return this.map.get(name);\n }\n /**\n * Create a default ApolloClient, same as `apollo.create(options)`\n * @param options ApolloClient's options\n */\n createDefault(options) {\n if (this.getClient()) {\n throw new Error('Apollo has been already created.');\n }\n return this.setClient(new ApolloClient(options));\n }\n /**\n * Create a named ApolloClient, same as `apollo.create(options, name)`\n * @param name client's name\n * @param options ApolloClient's options\n */\n createNamed(name, options) {\n if (this.map.has(name)) {\n throw new Error(`Client ${name} has been already created`);\n }\n this.map.set(name, new ApolloBase(this._ngZone, this.flags, new ApolloClient(options)));\n }\n /**\n * Remember to clean up the store before removing a client\n * @param name client's name\n */\n removeClient(name) {\n if (isDefault(name)) {\n this._client = undefined;\n }\n else {\n this.map.delete(name);\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.2\", ngImport: i0, type: Apollo, deps: [{ token: i0.NgZone }, { token: APOLLO_OPTIONS, optional: true }, { token: APOLLO_NAMED_OPTIONS, optional: true }, { token: APOLLO_FLAGS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.2\", ngImport: i0, type: Apollo });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.2\", ngImport: i0, type: Apollo, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [APOLLO_OPTIONS]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [APOLLO_NAMED_OPTIONS]\n }, {\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [APOLLO_FLAGS]\n }, {\n type: Optional\n }] }]; } });\nfunction isDefault(name) {\n return !name || name === 'default';\n}\n\nconst PROVIDERS = [Apollo];\nclass ApolloModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.2\", ngImport: i0, type: ApolloModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.2.2\", ngImport: i0, type: ApolloModule });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.2.2\", ngImport: i0, type: ApolloModule, providers: PROVIDERS });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.2\", ngImport: i0, type: ApolloModule, decorators: [{\n type: NgModule,\n args: [{\n providers: PROVIDERS,\n }]\n }] });\n\nclass Query {\n apollo;\n document;\n client = 'default';\n constructor(apollo) {\n this.apollo = apollo;\n }\n watch(variables, options) {\n return this.apollo.use(this.client).watchQuery({\n ...options,\n variables,\n query: this.document,\n });\n }\n fetch(variables, options) {\n return this.apollo.use(this.client).query({\n ...options,\n variables,\n query: this.document,\n });\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.2\", ngImport: i0, type: Query, deps: [{ token: Apollo }], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.2\", ngImport: i0, type: Query });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.2\", ngImport: i0, type: Query, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: Apollo }]; } });\n\nclass Mutation {\n apollo;\n document;\n client = 'default';\n constructor(apollo) {\n this.apollo = apollo;\n }\n mutate(variables, options) {\n return this.apollo.use(this.client).mutate({\n ...options,\n variables,\n mutation: this.document,\n });\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.2\", ngImport: i0, type: Mutation, deps: [{ token: Apollo }], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.2\", ngImport: i0, type: Mutation });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.2\", ngImport: i0, type: Mutation, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: Apollo }]; } });\n\nclass Subscription {\n apollo;\n document;\n client = 'default';\n constructor(apollo) {\n this.apollo = apollo;\n }\n subscribe(variables, options, extra) {\n return this.apollo.use(this.client).subscribe({\n ...options,\n variables,\n query: this.document,\n }, extra);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.2\", ngImport: i0, type: Subscription, deps: [{ token: Apollo }], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.2\", ngImport: i0, type: Subscription });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.2\", ngImport: i0, type: Subscription, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: Apollo }]; } });\n\nfunction typedGQLTag(literals, ...placeholders) {\n return gql$1(literals, ...placeholders);\n}\nconst gql = typedGQLTag;\nconst graphql = typedGQLTag;\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { APOLLO_FLAGS, APOLLO_NAMED_OPTIONS, APOLLO_OPTIONS, Apollo, ApolloBase, ApolloModule, Mutation, Query, QueryRef, Subscription, gql, graphql };\n","import { gql } from 'apollo-angular';\n\nexport const GET_CONTEST_STATS_QUERY = gql`\n query getContestStats($contestId: Int) {\n contestStats: getContestStats(contestId: $contestId) {\n message\n responseObject {\n contestId\n description\n startDate\n endDate\n widgetStartDate\n widgetEndDate\n sponsorId\n contestantLevel\n lastUpdated\n weeksLeftInContest\n daysLeftInContest\n pointsNeeded\n weeklyGoal\n optedIn\n statLevels {\n contestId\n contestLevel\n rangeMin\n rangeMax\n contestTag\n lastModifiedBy\n }\n prizeLevel {\n tag\n }\n svp\n numberSponsored\n pastCvpTotal\n currentCvpTotal\n }\n type\n }\n }\n`;\n","
\n \n \n
\n
\n

\n {{ stats.responseObject.description }} {{ 'dotcom.contests.statbuilder.statsTitle' | translate }}\n

\n
\n\n
\n {{ 'dotcom.contests.statbuilder.weeksRemaining' | translate }}\n {{ stats.responseObject.weeksLeftInContest | number }}\n
\n\n
\n {{ 'dotcom.contests.statbuilder.daysRemaining' | translate }}\n {{ stats.responseObject.daysLeftInContest | number }}\n
\n\n
\n
\n {{ 'dotcom.contests.statbuilder.prevousCVP' | translate }}\n {{ stats.responseObject.pastCvpTotal | number }}\n
\n\n
\n {{ 'dotcom.contests.statbuilder.currentCVP' | translate }}\n {{ stats.responseObject.currentCvpTotal | number }}\n
\n\n
\n {{ 'dotcom.contests.statbuilder.nextGoal' | translate }}\n {{ stats.responseObject.pointsNeeded | number }}\n
\n
\n\n
\n {{ 'dotcom.contests.statbuilder.weeklyGoal' | translate }}\n {{ stats.responseObject.weeklyGoal | number }}\n
\n\n
\n {{ stats.responseObject.prizeLevel?.tag | translate }}\n
\n
\n\n
\n
\n

\n {{ stats.responseObject.description }}\n

\n
\n\n
\n
{{ 'dotcom.contests.svpbuilder.currentSVP' | translate }} {{ stats.responseObject.svp }}
\n\n
{{ 'dotcom.contests.svpbuilder.svpNeeded' | translate }} {{ stats.responseObject.pointsNeeded }}
\n\n
\n {{ 'dotcom.contests.svpbuilder.weeksRemaining' | translate }}\n {{ stats.responseObject.weeksLeftInContest }}\n
\n\n
\n {{ 'dotcom.contests.svpbuilder.daysRemaining' | translate }} {{ stats.responseObject.daysLeftInContest }}\n
\n
\n\n
\n {{ stats.responseObject.prizeLevel?.tag | translate }}\n
\n
\n
\n \n\n","import { Component, OnInit } from '@angular/core';\nimport { ApolloQueryResult } from '@apollo/client/core';\nimport { Store } from '@ngxs/store';\nimport { Apollo } from 'apollo-angular';\nimport { Observable } from 'rxjs';\nimport { ContestTypes } from '../../constants/contest-types';\nimport { ContestStatsResponse } from '../../models/contest-stats';\nimport { CmsBaseDirective } from '../cms-base.directive';\nimport { GET_CONTEST_STATS_QUERY } from '../constants/get-contest-stats-query';\n\n@Component({\n selector: 'u-cms-contest-stat-page',\n templateUrl: './cms-contest-stat-page.component.html',\n styleUrls: ['./cms-contest-stat-page.component.scss'],\n})\nexport class CmsContestStatPageComponent extends CmsBaseDirective implements OnInit {\n readonly CONTEST_TYPES = ContestTypes;\n\n contestStatsResponse$: Observable>;\n\n constructor(protected store: Store, private apollo: Apollo) {\n super(store);\n }\n\n ngOnInit(): void {\n this.contestStatsResponse$ = this.apollo.query({\n query: GET_CONTEST_STATS_QUERY,\n variables: { contestId: +(this.cmsItemObj.data as any).contestId.data },\n });\n }\n}\n","import { TaskTrackerColumnBreakpoint } from '../models/task-tracker-column-breakpoint';\n\nexport const TASK_TRACKER_COLUMN_BREAKPOINTS: TaskTrackerColumnBreakpoint[] = [\n {\n columnCount: 1,\n defaultVisibleTaskCount: 3,\n minPageWidth: 0,\n },\n {\n columnCount: 2,\n defaultVisibleTaskCount: 4,\n minPageWidth: 576,\n },\n {\n columnCount: 3,\n defaultVisibleTaskCount: 3,\n minPageWidth: 767,\n },\n {\n columnCount: 4,\n defaultVisibleTaskCount: 4,\n minPageWidth: 992,\n },\n {\n columnCount: 5,\n defaultVisibleTaskCount: 5,\n minPageWidth: 1200,\n },\n];\n","// eslint-disable-next-line max-classes-per-file\nimport { TaskTrackerProgramProgress } from '../models/task-tracker-program-progress';\n\nexport class LoadTaskTrackerProgramProgress {\n static readonly type = '[Task Tracker] LOAD TASK TRACKER PROGRAM PROGRESS';\n constructor(public programKey: string) {}\n}\n\nexport class LoadTaskTrackerProgramProgressSuccess {\n static readonly type = '[Task Tracker API] LOAD TASK TRACKER PROGRAM PROGRESS SUCCESS';\n constructor(public programProgress: TaskTrackerProgramProgress) {}\n}\n\nexport class LoadTaskTrackerProgramProgressFailure {\n static readonly type = '[Task Tracker API] LOAD TASK TRACKER PROGRAM PROGRESS FAILURE';\n constructor(public programKey: string) {}\n}\n","export enum TaskTrackerProgramKey {\n ONBOARDING = 'ONBOARDING',\n STARTSHARINGPRODUCTS = 'STARTSHARINGPRODUCTS',\n}\n","export const PRODUCTS_TRAINING_MARKETS = [\n 'en_AU',\n 'zh_AU',\n 'en_CA',\n 'fr_CA',\n 'zh_CA',\n 'kr_KR',\n 'en_MY',\n 'zh_MY',\n 'zh_NZ',\n 'en_NZ',\n 'en_PH',\n 'en_SG',\n 'zh_SG',\n 'en_US',\n 'zh_US',\n 'es_US',\n];\n","import { InjectionToken } from '@angular/core';\n\nexport const TASK_TRACKER_SERVICE_URL = new InjectionToken('taskTracker.service.url');\n","import { HttpClient } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { TaskTrackerTaskCompletion } from '../models/task-tracker-program-completed-task';\nimport { TaskTrackerProgramProgress } from '../models/task-tracker-program-progress';\nimport { TASK_TRACKER_SERVICE_URL } from '../task-tracker-widget.tokens';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TaskTrackerService {\n constructor(\n @Inject(TASK_TRACKER_SERVICE_URL) private readonly taskTrackerServiceUrl: string,\n private http: HttpClient\n ) {}\n\n getTaskTrackerProgramProgress(programKey: string): Observable {\n return this.http.get(`${this.taskTrackerServiceUrl}/program/${programKey}/progress`);\n }\n\n completeTask(taskKey: string): Observable {\n return this.http.post(`${this.taskTrackerServiceUrl}/task/${taskKey}`, {});\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Action, State, StateContext } from '@ngxs/store';\nimport { catchError, mergeMap } from 'rxjs/operators';\nimport { TaskTrackerResult } from '../models/task-tracker-result';\nimport { TaskTrackerService } from '../services/task-tracker.service';\nimport {\n LoadTaskTrackerProgramProgress,\n LoadTaskTrackerProgramProgressFailure,\n LoadTaskTrackerProgramProgressSuccess,\n} from './task-tracker.actions';\nimport { TaskTrackerStateModel } from './task-tracker.state.model';\n\nexport const TASK_TRACKER_STATE_DEFAULTS: TaskTrackerStateModel = {\n taskTrackerResults: new Map(),\n};\n\n@State({\n name: 'taskTracker',\n defaults: TASK_TRACKER_STATE_DEFAULTS,\n})\n@Injectable()\nexport class TaskTrackerState {\n constructor(private taskTrackerService: TaskTrackerService) {}\n\n @Action(LoadTaskTrackerProgramProgress)\n loadTaskTrackerProgramProgress(ctx: StateContext, action: LoadTaskTrackerProgramProgress) {\n const state = ctx.getState();\n\n if (action.programKey) {\n const updatedTaskTrackerResults = new Map(state.taskTrackerResults);\n\n updatedTaskTrackerResults.set(action.programKey, {\n isLoading: true,\n errorLoading: false,\n programProgress: null,\n });\n\n ctx.patchState({\n taskTrackerResults: updatedTaskTrackerResults,\n });\n\n return this.taskTrackerService.getTaskTrackerProgramProgress(action.programKey).pipe(\n mergeMap((programProgress) => ctx.dispatch(new LoadTaskTrackerProgramProgressSuccess(programProgress))),\n catchError(() => ctx.dispatch(new LoadTaskTrackerProgramProgressFailure(action.programKey)))\n );\n }\n }\n\n @Action(LoadTaskTrackerProgramProgressSuccess)\n loadTaskTrackerProgramProgressSuccess(\n ctx: StateContext,\n action: LoadTaskTrackerProgramProgressSuccess\n ) {\n const state = ctx.getState();\n\n if (action.programProgress) {\n const updatedTaskTrackerResults = new Map(state.taskTrackerResults);\n updatedTaskTrackerResults.set(action.programProgress.programKey, {\n isLoading: false,\n errorLoading: false,\n programProgress: action.programProgress,\n });\n\n ctx.patchState({\n taskTrackerResults: updatedTaskTrackerResults,\n });\n }\n }\n\n @Action(LoadTaskTrackerProgramProgressFailure)\n loadTaskTrackerProgramProgressFailure(\n ctx: StateContext,\n action: LoadTaskTrackerProgramProgressFailure\n ) {\n const state = ctx.getState();\n\n const updatedTaskTrackerResults = new Map(state.taskTrackerResults);\n\n updatedTaskTrackerResults.set(action.programKey, {\n isLoading: false,\n errorLoading: true,\n programProgress: null,\n });\n\n ctx.patchState({\n taskTrackerResults: updatedTaskTrackerResults,\n });\n }\n}\n","import { Selector } from '@ngxs/store';\nimport { AppUser } from '../../../../../common/src/authentication/model/user-profile';\nimport { UserProfileSelectors } from '../../../../../common/src/authentication/state/user-profile.selectors';\nimport { TaskTrackerProgramKey } from '../constants/task-tracker-program-key.enum';\nimport { PRODUCTS_TRAINING_MARKETS } from '../constants/task-tracker.constants';\nimport { TaskTrackerResult } from '../models/task-tracker-result';\nimport { TaskTrackerState } from './task-tracker.state';\nimport { TaskTrackerStateModel } from './task-tracker.state.model';\n\nexport class TaskTrackerSelectors {\n @Selector([TaskTrackerState])\n static getTaskTrackerResults(state: TaskTrackerStateModel) {\n return state.taskTrackerResults;\n }\n\n @Selector([TaskTrackerSelectors.getTaskTrackerResults])\n static getTaskTrackerResultLookupFn(\n taskTrackerResults: Map\n ): (programKey: string) => TaskTrackerResult {\n return (programKey: string) => taskTrackerResults.get(programKey);\n }\n\n @Selector([TaskTrackerSelectors.getTaskTrackerResultLookupFn])\n static getOnboardingTrainingResult(\n taskTrackerResultLookupFn: (programKey: string) => TaskTrackerResult\n ): TaskTrackerResult {\n return taskTrackerResultLookupFn(TaskTrackerProgramKey.ONBOARDING);\n }\n\n /**\n * the following must be true:\n * 1. they are NOT a PC\n * 2. their application date is <= 90 days from today\n * @param userProfile\n */\n @Selector([TaskTrackerSelectors.getOnboardingTrainingResult, UserProfileSelectors.getUser])\n static getUserHasOnboardingWidget(onboardingTrainingResult: TaskTrackerResult, userProfile: AppUser): boolean {\n let userHasOnboardingWidget = false;\n\n const userHasCompletedOnboardingTraining: boolean = onboardingTrainingResult?.programProgress?.isCompleted;\n\n if (userProfile && !userProfile.pc && !userHasCompletedOnboardingTraining) {\n const onboardingWidgetCutoffDate = this.getDateXDaysAfterDate(userProfile.applicationDate, 90).getTime();\n\n const today = TaskTrackerSelectors.getCurrentDate().getTime();\n userHasOnboardingWidget = today <= onboardingWidgetCutoffDate;\n }\n\n return userHasOnboardingWidget;\n }\n\n @Selector([TaskTrackerSelectors.getOnboardingTrainingResult])\n static getOnboardingTrainingCompletedDate(onboardingTrainingResult: TaskTrackerResult): number {\n let onboardingCompletedDate: number;\n\n if (onboardingTrainingResult?.programProgress?.isCompleted) {\n const lastCompletedTaskDateStr = onboardingTrainingResult.programProgress.tasks\n .map((task) => task.completedDate)\n .filter((date) => date)\n .sort()\n .reverse()[0];\n\n onboardingCompletedDate = new Date(lastCompletedTaskDateStr).getTime();\n }\n\n return onboardingCompletedDate;\n }\n\n @Selector([TaskTrackerSelectors.getTaskTrackerResultLookupFn])\n static getProductsTrainingResult(\n taskTrackerResultLookupFn: (programKey: string) => TaskTrackerResult\n ): TaskTrackerResult {\n return taskTrackerResultLookupFn(TaskTrackerProgramKey.STARTSHARINGPRODUCTS);\n }\n\n /**\n * getUserHasProductsTrainingWidget\n *\n * We want to show the Products Training widget:\n * For 90 days after the user completed Onboarding training\n * OR\n * For 90 days after the Onboarding period expires without completion\n *\n * @param onboardingCompletedDate the date the onboarding training was completed (if applicable)\n * @param onboardingTrainingResult the onboarding training result\n * @param user the user profile\n * @returns if the user should see the Products Training widget\n */\n @Selector([\n TaskTrackerSelectors.getOnboardingTrainingCompletedDate,\n TaskTrackerSelectors.getOnboardingTrainingResult,\n TaskTrackerSelectors.getProductsTrainingResult,\n UserProfileSelectors.getUser,\n ])\n static getUserHasProductsTrainingWidget(\n onboardingCompletedDate: number,\n onboardingTrainingResult: TaskTrackerResult,\n productsTrainingResult: TaskTrackerResult,\n user: AppUser\n ): boolean {\n let userHasProductsTrainingWidget = false;\n const today = TaskTrackerSelectors.getCurrentDate().getTime();\n\n if (this.userMarketHasProductTraining(user) && !productsTrainingResult?.programProgress?.isCompleted) {\n const onboardingWidgetCutoffDate = this.getDateXDaysAfterDate(user.applicationDate, 90).getTime();\n\n if (today < onboardingWidgetCutoffDate) {\n if (\n onboardingTrainingResult &&\n !onboardingTrainingResult.isLoading &&\n onboardingTrainingResult.programProgress?.isCompleted\n ) {\n // check if user completed Onboarding within last 90 days\n const productsTrainingWidgetCutoffDate = this.getDateXDaysAfterDate(onboardingCompletedDate, 90).getTime();\n userHasProductsTrainingWidget = today <= productsTrainingWidgetCutoffDate;\n }\n } else {\n const onboardingEndedDate = onboardingCompletedDate || onboardingWidgetCutoffDate;\n const productsTrainingWidgetCutoffDate = this.getDateXDaysAfterDate(onboardingEndedDate, 90).getTime();\n userHasProductsTrainingWidget = today <= productsTrainingWidgetCutoffDate;\n }\n }\n\n return userHasProductsTrainingWidget;\n }\n\n static getCurrentDate(): Date {\n return new Date();\n }\n\n static getDateXDaysAfterDate(dateMillis: number, days: number): Date {\n const dateCopy = new Date(dateMillis);\n return new Date(dateCopy.setDate(dateCopy.getDate() + days));\n }\n\n private static userMarketHasProductTraining(user: AppUser): boolean {\n return user && PRODUCTS_TRAINING_MARKETS.includes(user.locale) && !user.pc;\n }\n}\n","import { ElementRef } from '@angular/core';\n\n/** Coerces a data-bound value (typically a string) to a boolean. */\nfunction coerceBooleanProperty(value) {\n return value != null && `${value}` !== 'false';\n}\n\nfunction coerceNumberProperty(value, fallbackValue = 0) {\n return _isNumberValue(value) ? Number(value) : fallbackValue;\n}\n/**\n * Whether the provided value is considered a number.\n * @docs-private\n */\nfunction _isNumberValue(value) {\n // parseFloat(value) handles most of the cases we're interested in (it treats null, empty string,\n // and other non-number values as NaN, where Number just uses 0) but it considers the string\n // '123hello' to be a valid number. Therefore we also check if Number(value) is NaN.\n return !isNaN(parseFloat(value)) && !isNaN(Number(value));\n}\n\nfunction coerceArray(value) {\n return Array.isArray(value) ? value : [value];\n}\n\n/** Coerces a value to a CSS pixel value. */\nfunction coerceCssPixelValue(value) {\n if (value == null) {\n return '';\n }\n return typeof value === 'string' ? value : `${value}px`;\n}\n\n/**\n * Coerces an ElementRef or an Element into an element.\n * Useful for APIs that can accept either a ref or the native element itself.\n */\nfunction coerceElement(elementOrRef) {\n return elementOrRef instanceof ElementRef ? elementOrRef.nativeElement : elementOrRef;\n}\n\n/**\n * Coerces a value to an array of trimmed non-empty strings.\n * Any input that is not an array, `null` or `undefined` will be turned into a string\n * via `toString()` and subsequently split with the given separator.\n * `null` and `undefined` will result in an empty array.\n * This results in the following outcomes:\n * - `null` -> `[]`\n * - `[null]` -> `[\"null\"]`\n * - `[\"a\", \"b \", \" \"]` -> `[\"a\", \"b\"]`\n * - `[1, [2, 3]]` -> `[\"1\", \"2,3\"]`\n * - `[{ a: 0 }]` -> `[\"[object Object]\"]`\n * - `{ a: 0 }` -> `[\"[object\", \"Object]\"]`\n *\n * Useful for defining CSS classes or table columns.\n * @param value the value to coerce into an array of strings\n * @param separator split-separator if value isn't an array\n */\nfunction coerceStringArray(value, separator = /\\s+/) {\n const result = [];\n if (value != null) {\n const sourceValues = Array.isArray(value) ? value : `${value}`.split(separator);\n for (const sourceValue of sourceValues) {\n const trimmedString = `${sourceValue}`.trim();\n if (trimmedString) {\n result.push(trimmedString);\n }\n }\n }\n return result;\n}\n\nexport { _isNumberValue, coerceArray, coerceBooleanProperty, coerceCssPixelValue, coerceElement, coerceNumberProperty, coerceStringArray };\n","import * as i0 from '@angular/core';\nimport { PLATFORM_ID, Injectable, Inject, NgModule } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\n// Whether the current platform supports the V8 Break Iterator. The V8 check\n// is necessary to detect all Blink based browsers.\nlet hasV8BreakIterator;\n// We need a try/catch around the reference to `Intl`, because accessing it in some cases can\n// cause IE to throw. These cases are tied to particular versions of Windows and can happen if\n// the consumer is providing a polyfilled `Map`. See:\n// https://github.com/Microsoft/ChakraCore/issues/3189\n// https://github.com/angular/components/issues/15687\ntry {\n hasV8BreakIterator = typeof Intl !== 'undefined' && Intl.v8BreakIterator;\n}\ncatch {\n hasV8BreakIterator = false;\n}\n/**\n * Service to detect the current platform by comparing the userAgent strings and\n * checking browser-specific global properties.\n */\nclass Platform {\n constructor(_platformId) {\n this._platformId = _platformId;\n // We want to use the Angular platform check because if the Document is shimmed\n // without the navigator, the following checks will fail. This is preferred because\n // sometimes the Document may be shimmed without the user's knowledge or intention\n /** Whether the Angular application is being rendered in the browser. */\n this.isBrowser = this._platformId\n ? isPlatformBrowser(this._platformId)\n : typeof document === 'object' && !!document;\n /** Whether the current browser is Microsoft Edge. */\n this.EDGE = this.isBrowser && /(edge)/i.test(navigator.userAgent);\n /** Whether the current rendering engine is Microsoft Trident. */\n this.TRIDENT = this.isBrowser && /(msie|trident)/i.test(navigator.userAgent);\n // EdgeHTML and Trident mock Blink specific things and need to be excluded from this check.\n /** Whether the current rendering engine is Blink. */\n this.BLINK = this.isBrowser &&\n !!(window.chrome || hasV8BreakIterator) &&\n typeof CSS !== 'undefined' &&\n !this.EDGE &&\n !this.TRIDENT;\n // Webkit is part of the userAgent in EdgeHTML, Blink and Trident. Therefore we need to\n // ensure that Webkit runs standalone and is not used as another engine's base.\n /** Whether the current rendering engine is WebKit. */\n this.WEBKIT = this.isBrowser &&\n /AppleWebKit/i.test(navigator.userAgent) &&\n !this.BLINK &&\n !this.EDGE &&\n !this.TRIDENT;\n /** Whether the current platform is Apple iOS. */\n this.IOS = this.isBrowser && /iPad|iPhone|iPod/.test(navigator.userAgent) && !('MSStream' in window);\n // It's difficult to detect the plain Gecko engine, because most of the browsers identify\n // them self as Gecko-like browsers and modify the userAgent's according to that.\n // Since we only cover one explicit Firefox case, we can simply check for Firefox\n // instead of having an unstable check for Gecko.\n /** Whether the current browser is Firefox. */\n this.FIREFOX = this.isBrowser && /(firefox|minefield)/i.test(navigator.userAgent);\n /** Whether the current platform is Android. */\n // Trident on mobile adds the android platform to the userAgent to trick detections.\n this.ANDROID = this.isBrowser && /android/i.test(navigator.userAgent) && !this.TRIDENT;\n // Safari browsers will include the Safari keyword in their userAgent. Some browsers may fake\n // this and just place the Safari keyword in the userAgent. To be more safe about Safari every\n // Safari browser should also use Webkit as its layout engine.\n /** Whether the current browser is Safari. */\n this.SAFARI = this.isBrowser && /safari/i.test(navigator.userAgent) && this.WEBKIT;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: Platform, deps: [{ token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: Platform, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: Platform, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: Object, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; } });\n\nclass PlatformModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: PlatformModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.1.1\", ngImport: i0, type: PlatformModule }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: PlatformModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: PlatformModule, decorators: [{\n type: NgModule,\n args: [{}]\n }] });\n\n/** Cached result Set of input types support by the current browser. */\nlet supportedInputTypes;\n/** Types of `` that *might* be supported. */\nconst candidateInputTypes = [\n // `color` must come first. Chrome 56 shows a warning if we change the type to `color` after\n // first changing it to something else:\n // The specified value \"\" does not conform to the required format.\n // The format is \"#rrggbb\" where rr, gg, bb are two-digit hexadecimal numbers.\n 'color',\n 'button',\n 'checkbox',\n 'date',\n 'datetime-local',\n 'email',\n 'file',\n 'hidden',\n 'image',\n 'month',\n 'number',\n 'password',\n 'radio',\n 'range',\n 'reset',\n 'search',\n 'submit',\n 'tel',\n 'text',\n 'time',\n 'url',\n 'week',\n];\n/** @returns The input types supported by this browser. */\nfunction getSupportedInputTypes() {\n // Result is cached.\n if (supportedInputTypes) {\n return supportedInputTypes;\n }\n // We can't check if an input type is not supported until we're on the browser, so say that\n // everything is supported when not on the browser. We don't use `Platform` here since it's\n // just a helper function and can't inject it.\n if (typeof document !== 'object' || !document) {\n supportedInputTypes = new Set(candidateInputTypes);\n return supportedInputTypes;\n }\n let featureTestInput = document.createElement('input');\n supportedInputTypes = new Set(candidateInputTypes.filter(value => {\n featureTestInput.setAttribute('type', value);\n return featureTestInput.type === value;\n }));\n return supportedInputTypes;\n}\n\n/** Cached result of whether the user's browser supports passive event listeners. */\nlet supportsPassiveEvents;\n/**\n * Checks whether the user's browser supports passive event listeners.\n * See: https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\n */\nfunction supportsPassiveEventListeners() {\n if (supportsPassiveEvents == null && typeof window !== 'undefined') {\n try {\n window.addEventListener('test', null, Object.defineProperty({}, 'passive', {\n get: () => (supportsPassiveEvents = true),\n }));\n }\n finally {\n supportsPassiveEvents = supportsPassiveEvents || false;\n }\n }\n return supportsPassiveEvents;\n}\n/**\n * Normalizes an `AddEventListener` object to something that can be passed\n * to `addEventListener` on any browser, no matter whether it supports the\n * `options` parameter.\n * @param options Object to be normalized.\n */\nfunction normalizePassiveListenerOptions(options) {\n return supportsPassiveEventListeners() ? options : !!options.capture;\n}\n\n/** Cached result of the way the browser handles the horizontal scroll axis in RTL mode. */\nlet rtlScrollAxisType;\n/** Cached result of the check that indicates whether the browser supports scroll behaviors. */\nlet scrollBehaviorSupported;\n/** Check whether the browser supports scroll behaviors. */\nfunction supportsScrollBehavior() {\n if (scrollBehaviorSupported == null) {\n // If we're not in the browser, it can't be supported. Also check for `Element`, because\n // some projects stub out the global `document` during SSR which can throw us off.\n if (typeof document !== 'object' || !document || typeof Element !== 'function' || !Element) {\n scrollBehaviorSupported = false;\n return scrollBehaviorSupported;\n }\n // If the element can have a `scrollBehavior` style, we can be sure that it's supported.\n if ('scrollBehavior' in document.documentElement.style) {\n scrollBehaviorSupported = true;\n }\n else {\n // At this point we have 3 possibilities: `scrollTo` isn't supported at all, it's\n // supported but it doesn't handle scroll behavior, or it has been polyfilled.\n const scrollToFunction = Element.prototype.scrollTo;\n if (scrollToFunction) {\n // We can detect if the function has been polyfilled by calling `toString` on it. Native\n // functions are obfuscated using `[native code]`, whereas if it was overwritten we'd get\n // the actual function source. Via https://davidwalsh.name/detect-native-function. Consider\n // polyfilled functions as supporting scroll behavior.\n scrollBehaviorSupported = !/\\{\\s*\\[native code\\]\\s*\\}/.test(scrollToFunction.toString());\n }\n else {\n scrollBehaviorSupported = false;\n }\n }\n }\n return scrollBehaviorSupported;\n}\n/**\n * Checks the type of RTL scroll axis used by this browser. As of time of writing, Chrome is NORMAL,\n * Firefox & Safari are NEGATED, and IE & Edge are INVERTED.\n */\nfunction getRtlScrollAxisType() {\n // We can't check unless we're on the browser. Just assume 'normal' if we're not.\n if (typeof document !== 'object' || !document) {\n return 0 /* RtlScrollAxisType.NORMAL */;\n }\n if (rtlScrollAxisType == null) {\n // Create a 1px wide scrolling container and a 2px wide content element.\n const scrollContainer = document.createElement('div');\n const containerStyle = scrollContainer.style;\n scrollContainer.dir = 'rtl';\n containerStyle.width = '1px';\n containerStyle.overflow = 'auto';\n containerStyle.visibility = 'hidden';\n containerStyle.pointerEvents = 'none';\n containerStyle.position = 'absolute';\n const content = document.createElement('div');\n const contentStyle = content.style;\n contentStyle.width = '2px';\n contentStyle.height = '1px';\n scrollContainer.appendChild(content);\n document.body.appendChild(scrollContainer);\n rtlScrollAxisType = 0 /* RtlScrollAxisType.NORMAL */;\n // The viewport starts scrolled all the way to the right in RTL mode. If we are in a NORMAL\n // browser this would mean that the scrollLeft should be 1. If it's zero instead we know we're\n // dealing with one of the other two types of browsers.\n if (scrollContainer.scrollLeft === 0) {\n // In a NEGATED browser the scrollLeft is always somewhere in [-maxScrollAmount, 0]. For an\n // INVERTED browser it is always somewhere in [0, maxScrollAmount]. We can determine which by\n // setting to the scrollLeft to 1. This is past the max for a NEGATED browser, so it will\n // return 0 when we read it again.\n scrollContainer.scrollLeft = 1;\n rtlScrollAxisType =\n scrollContainer.scrollLeft === 0 ? 1 /* RtlScrollAxisType.NEGATED */ : 2 /* RtlScrollAxisType.INVERTED */;\n }\n scrollContainer.remove();\n }\n return rtlScrollAxisType;\n}\n\nlet shadowDomIsSupported;\n/** Checks whether the user's browser support Shadow DOM. */\nfunction _supportsShadowDom() {\n if (shadowDomIsSupported == null) {\n const head = typeof document !== 'undefined' ? document.head : null;\n shadowDomIsSupported = !!(head && (head.createShadowRoot || head.attachShadow));\n }\n return shadowDomIsSupported;\n}\n/** Gets the shadow root of an element, if supported and the element is inside the Shadow DOM. */\nfunction _getShadowRoot(element) {\n if (_supportsShadowDom()) {\n const rootNode = element.getRootNode ? element.getRootNode() : null;\n // Note that this should be caught by `_supportsShadowDom`, but some\n // teams have been able to hit this code path on unsupported browsers.\n if (typeof ShadowRoot !== 'undefined' && ShadowRoot && rootNode instanceof ShadowRoot) {\n return rootNode;\n }\n }\n return null;\n}\n/**\n * Gets the currently-focused element on the page while\n * also piercing through Shadow DOM boundaries.\n */\nfunction _getFocusedElementPierceShadowDom() {\n let activeElement = typeof document !== 'undefined' && document\n ? document.activeElement\n : null;\n while (activeElement && activeElement.shadowRoot) {\n const newActiveElement = activeElement.shadowRoot.activeElement;\n if (newActiveElement === activeElement) {\n break;\n }\n else {\n activeElement = newActiveElement;\n }\n }\n return activeElement;\n}\n/** Gets the target of an event while accounting for Shadow DOM. */\nfunction _getEventTarget(event) {\n // If an event is bound outside the Shadow DOM, the `event.target` will\n // point to the shadow root so we have to use `composedPath` instead.\n return (event.composedPath ? event.composedPath()[0] : event.target);\n}\n\n/** Gets whether the code is currently running in a test environment. */\nfunction _isTestEnvironment() {\n // We can't use `declare const` because it causes conflicts inside Google with the real typings\n // for these symbols and we can't read them off the global object, because they don't appear to\n // be attached there for some runners like Jest.\n // (see: https://github.com/angular/components/issues/23365#issuecomment-938146643)\n return (\n // @ts-ignore\n (typeof __karma__ !== 'undefined' && !!__karma__) ||\n // @ts-ignore\n (typeof jasmine !== 'undefined' && !!jasmine) ||\n // @ts-ignore\n (typeof jest !== 'undefined' && !!jest) ||\n // @ts-ignore\n (typeof Mocha !== 'undefined' && !!Mocha));\n}\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Platform, PlatformModule, _getEventTarget, _getFocusedElementPierceShadowDom, _getShadowRoot, _isTestEnvironment, _supportsShadowDom, getRtlScrollAxisType, getSupportedInputTypes, normalizePassiveListenerOptions, supportsPassiveEventListeners, supportsScrollBehavior };\n","import * as i0 from '@angular/core';\nimport { NgModule, CSP_NONCE, Injectable, Optional, Inject } from '@angular/core';\nimport { coerceArray } from '@angular/cdk/coercion';\nimport { Subject, combineLatest, concat, Observable } from 'rxjs';\nimport { take, skip, debounceTime, map, startWith, takeUntil } from 'rxjs/operators';\nimport * as i1 from '@angular/cdk/platform';\n\nclass LayoutModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: LayoutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.1.1\", ngImport: i0, type: LayoutModule }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: LayoutModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: LayoutModule, decorators: [{\n type: NgModule,\n args: [{}]\n }] });\n\n/** Global registry for all dynamically-created, injected media queries. */\nconst mediaQueriesForWebkitCompatibility = new Set();\n/** Style tag that holds all of the dynamically-created media queries. */\nlet mediaQueryStyleNode;\n/** A utility for calling matchMedia queries. */\nclass MediaMatcher {\n constructor(_platform, _nonce) {\n this._platform = _platform;\n this._nonce = _nonce;\n this._matchMedia =\n this._platform.isBrowser && window.matchMedia\n ? // matchMedia is bound to the window scope intentionally as it is an illegal invocation to\n // call it from a different scope.\n window.matchMedia.bind(window)\n : noopMatchMedia;\n }\n /**\n * Evaluates the given media query and returns the native MediaQueryList from which results\n * can be retrieved.\n * Confirms the layout engine will trigger for the selector query provided and returns the\n * MediaQueryList for the query provided.\n */\n matchMedia(query) {\n if (this._platform.WEBKIT || this._platform.BLINK) {\n createEmptyStyleRule(query, this._nonce);\n }\n return this._matchMedia(query);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MediaMatcher, deps: [{ token: i1.Platform }, { token: CSP_NONCE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MediaMatcher, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MediaMatcher, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i1.Platform }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [CSP_NONCE]\n }] }]; } });\n/**\n * Creates an empty stylesheet that is used to work around browser inconsistencies related to\n * `matchMedia`. At the time of writing, it handles the following cases:\n * 1. On WebKit browsers, a media query has to have at least one rule in order for `matchMedia`\n * to fire. We work around it by declaring a dummy stylesheet with a `@media` declaration.\n * 2. In some cases Blink browsers will stop firing the `matchMedia` listener if none of the rules\n * inside the `@media` match existing elements on the page. We work around it by having one rule\n * targeting the `body`. See https://github.com/angular/components/issues/23546.\n */\nfunction createEmptyStyleRule(query, nonce) {\n if (mediaQueriesForWebkitCompatibility.has(query)) {\n return;\n }\n try {\n if (!mediaQueryStyleNode) {\n mediaQueryStyleNode = document.createElement('style');\n if (nonce) {\n mediaQueryStyleNode.nonce = nonce;\n }\n mediaQueryStyleNode.setAttribute('type', 'text/css');\n document.head.appendChild(mediaQueryStyleNode);\n }\n if (mediaQueryStyleNode.sheet) {\n mediaQueryStyleNode.sheet.insertRule(`@media ${query} {body{ }}`, 0);\n mediaQueriesForWebkitCompatibility.add(query);\n }\n }\n catch (e) {\n console.error(e);\n }\n}\n/** No-op matchMedia replacement for non-browser platforms. */\nfunction noopMatchMedia(query) {\n // Use `as any` here to avoid adding additional necessary properties for\n // the noop matcher.\n return {\n matches: query === 'all' || query === '',\n media: query,\n addListener: () => { },\n removeListener: () => { },\n };\n}\n\n/** Utility for checking the matching state of @media queries. */\nclass BreakpointObserver {\n constructor(_mediaMatcher, _zone) {\n this._mediaMatcher = _mediaMatcher;\n this._zone = _zone;\n /** A map of all media queries currently being listened for. */\n this._queries = new Map();\n /** A subject for all other observables to takeUntil based on. */\n this._destroySubject = new Subject();\n }\n /** Completes the active subject, signalling to all other observables to complete. */\n ngOnDestroy() {\n this._destroySubject.next();\n this._destroySubject.complete();\n }\n /**\n * Whether one or more media queries match the current viewport size.\n * @param value One or more media queries to check.\n * @returns Whether any of the media queries match.\n */\n isMatched(value) {\n const queries = splitQueries(coerceArray(value));\n return queries.some(mediaQuery => this._registerQuery(mediaQuery).mql.matches);\n }\n /**\n * Gets an observable of results for the given queries that will emit new results for any changes\n * in matching of the given queries.\n * @param value One or more media queries to check.\n * @returns A stream of matches for the given queries.\n */\n observe(value) {\n const queries = splitQueries(coerceArray(value));\n const observables = queries.map(query => this._registerQuery(query).observable);\n let stateObservable = combineLatest(observables);\n // Emit the first state immediately, and then debounce the subsequent emissions.\n stateObservable = concat(stateObservable.pipe(take(1)), stateObservable.pipe(skip(1), debounceTime(0)));\n return stateObservable.pipe(map(breakpointStates => {\n const response = {\n matches: false,\n breakpoints: {},\n };\n breakpointStates.forEach(({ matches, query }) => {\n response.matches = response.matches || matches;\n response.breakpoints[query] = matches;\n });\n return response;\n }));\n }\n /** Registers a specific query to be listened for. */\n _registerQuery(query) {\n // Only set up a new MediaQueryList if it is not already being listened for.\n if (this._queries.has(query)) {\n return this._queries.get(query);\n }\n const mql = this._mediaMatcher.matchMedia(query);\n // Create callback for match changes and add it is as a listener.\n const queryObservable = new Observable((observer) => {\n // Listener callback methods are wrapped to be placed back in ngZone. Callbacks must be placed\n // back into the zone because matchMedia is only included in Zone.js by loading the\n // webapis-media-query.js file alongside the zone.js file. Additionally, some browsers do not\n // have MediaQueryList inherit from EventTarget, which causes inconsistencies in how Zone.js\n // patches it.\n const handler = (e) => this._zone.run(() => observer.next(e));\n mql.addListener(handler);\n return () => {\n mql.removeListener(handler);\n };\n }).pipe(startWith(mql), map(({ matches }) => ({ query, matches })), takeUntil(this._destroySubject));\n // Add the MediaQueryList to the set of queries.\n const output = { observable: queryObservable, mql };\n this._queries.set(query, output);\n return output;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: BreakpointObserver, deps: [{ token: MediaMatcher }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: BreakpointObserver, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: BreakpointObserver, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: MediaMatcher }, { type: i0.NgZone }]; } });\n/**\n * Split each query string into separate query strings if two queries are provided as comma\n * separated.\n */\nfunction splitQueries(queries) {\n return queries\n .map(query => query.split(','))\n .reduce((a1, a2) => a1.concat(a2))\n .map(query => query.trim());\n}\n\n// PascalCase is being used as Breakpoints is used like an enum.\n// tslint:disable-next-line:variable-name\nconst Breakpoints = {\n XSmall: '(max-width: 599.98px)',\n Small: '(min-width: 600px) and (max-width: 959.98px)',\n Medium: '(min-width: 960px) and (max-width: 1279.98px)',\n Large: '(min-width: 1280px) and (max-width: 1919.98px)',\n XLarge: '(min-width: 1920px)',\n Handset: '(max-width: 599.98px) and (orientation: portrait), ' +\n '(max-width: 959.98px) and (orientation: landscape)',\n Tablet: '(min-width: 600px) and (max-width: 839.98px) and (orientation: portrait), ' +\n '(min-width: 960px) and (max-width: 1279.98px) and (orientation: landscape)',\n Web: '(min-width: 840px) and (orientation: portrait), ' +\n '(min-width: 1280px) and (orientation: landscape)',\n HandsetPortrait: '(max-width: 599.98px) and (orientation: portrait)',\n TabletPortrait: '(min-width: 600px) and (max-width: 839.98px) and (orientation: portrait)',\n WebPortrait: '(min-width: 840px) and (orientation: portrait)',\n HandsetLandscape: '(max-width: 959.98px) and (orientation: landscape)',\n TabletLandscape: '(min-width: 960px) and (max-width: 1279.98px) and (orientation: landscape)',\n WebLandscape: '(min-width: 1280px) and (orientation: landscape)',\n};\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BreakpointObserver, Breakpoints, LayoutModule, MediaMatcher };\n","import { asyncScheduler } from '../scheduler/async';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function debounceTime(dueTime, scheduler = asyncScheduler) {\n return operate((source, subscriber) => {\n let activeTask = null;\n let lastValue = null;\n let lastTime = null;\n const emit = () => {\n if (activeTask) {\n activeTask.unsubscribe();\n activeTask = null;\n const value = lastValue;\n lastValue = null;\n subscriber.next(value);\n }\n };\n function emitWhenIdle() {\n const targetTime = lastTime + dueTime;\n const now = scheduler.now();\n if (now < targetTime) {\n activeTask = this.schedule(undefined, targetTime - now);\n subscriber.add(activeTask);\n return;\n }\n emit();\n }\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n lastValue = value;\n lastTime = scheduler.now();\n if (!activeTask) {\n activeTask = scheduler.schedule(emitWhenIdle, dueTime);\n subscriber.add(activeTask);\n }\n }, () => {\n emit();\n subscriber.complete();\n }, undefined, () => {\n lastValue = activeTask = null;\n }));\n });\n}\n","export const MODAL_LOADING_SPINNER_STYLE = {\n 'max-width': '50%',\n 'max-height': '50%',\n width: '25px',\n height: '25px',\n};\n","
\n
{{ progressPercentage | number: '1.0-0' }}%
\n\n \n \n \n\n 0\"\n class=\"progress-indicator-circle\"\n d=\"\n M17 1.0845\n a 15.9155 15.9155 0 0 1 0 31.831\n a 15.9155 15.9155 0 0 1 0 -31.831\n \"\n style.strokeDasharray=\"{{ progressPercentage }}, 100\"\n />\n \n
\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'u-progress-percent-indicator',\n templateUrl: './progress-percent-indicator.component.html',\n styleUrls: ['./progress-percent-indicator.component.scss'],\n})\nexport class ProgressPercentIndicatorComponent {\n @Input() progressPercentage: number;\n}\n","\n \n
\n {{ taskCompletion.headingTag | translate }}\n
\n
\n {{ taskCompletion.subTextTag | translate }}\n
\n\n
\n \n \n \n \n \n \n
\n \n
\n","import { Component, Input } from '@angular/core';\nimport {AnalyticsSystem} from '@common/analytics/model/analytics.model';\nimport {AnalyticsService} from '@common/analytics/service/analytics.service';\nimport { TaskTrackerTaskCompletion } from '../../models/task-tracker-program-completed-task';\n\n@Component({\n selector: 'u-task-tracker-item',\n templateUrl: './task-tracker-item.component.html',\n styleUrls: ['./task-tracker-item.component.scss'],\n})\nexport class TaskTrackerItemComponent {\n @Input() taskCompletion: TaskTrackerTaskCompletion;\n\n constructor(private readonly analyticsService: AnalyticsService) {}\n\n onNavClickEvent(): void {\n this.analyticsService.sendEvent(AnalyticsSystem.GTM_FS, 'nav_task_tracker', {\n navUrl: this.taskCompletion.actionUrl.split('?')[0],\n });\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'u-task-tracker-widget-skeleton-loader',\n templateUrl: './task-tracker-widget-skeleton-loader.component.html',\n styleUrls: ['./task-tracker-widget-skeleton-loader.component.scss'],\n})\nexport class TaskTrackerWidgetSkeletonLoaderComponent {}\n","
\n \n \n \n\n \n \n \n \n
\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'enhancedReplace',\n})\n/**\n * EnhancedReplacePipe\n * This pipe replaces some template text with another.\n * In addition, it allows us to enhance the text with CSS by wrapping it in a span.\n */\nexport class EnhancedReplacePipe implements PipeTransform {\n transform(inputText: string, findText: string, replaceText: string, addClasses: string[]): unknown {\n let outputText = inputText;\n\n if (findText) {\n const openTag = ``;\n const closeTag = '';\n const fullReplaceText = `${openTag}${replaceText}${closeTag}`;\n\n outputText = inputText.replace(findText, fullReplaceText);\n }\n\n return outputText;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TaskTrackerTaskCompletion } from '../models/task-tracker-program-completed-task';\n\n@Pipe({\n name: 'orderTasks',\n})\nexport class OrderTasksPipe implements PipeTransform {\n transform(input: TaskTrackerTaskCompletion[]): TaskTrackerTaskCompletion[] {\n const result: TaskTrackerTaskCompletion[] = [];\n\n if (input?.length) {\n const incompleteTasks = input.filter((task) => !task.isCompleted);\n const completedTasks = input.filter((task) => task.isCompleted);\n\n const mostRecentCompletedTask = completedTasks.sort(this.compareTasksByDateFn).pop();\n if (mostRecentCompletedTask) {\n result.push(mostRecentCompletedTask);\n }\n\n result.push(...incompleteTasks.sort(this.compareTasksByDisplayOrderFn));\n result.push(...completedTasks.sort(this.compareTasksByDisplayOrderFn));\n }\n\n return result;\n }\n\n compareTasksByDateFn(task1: TaskTrackerTaskCompletion, task2: TaskTrackerTaskCompletion) {\n let result = 0;\n\n if (task1.completedDate && task2.completedDate) {\n result = task1.completedDate > task2.completedDate ? 1 : -1;\n }\n\n return result;\n }\n\n compareTasksByDisplayOrderFn(task1: TaskTrackerTaskCompletion, task2: TaskTrackerTaskCompletion) {\n return task1.displayOrder - task2.displayOrder;\n }\n}\n","\n \n
\n \n
\n
\n\n \n \n
\n
\n 0\"\n class=\"task-tracker-progress-percent-container\"\n >\n \n
\n\n
\n
\n {{ taskTrackerResult.programProgress.headingTag | translate }}\n
\n\n
\n {{ 'hub.task_tracker.start_here' | translate }}\n
\n\n \n \n {{ taskTrackerResult.programProgress.subTextInitialTag | translate }}\n
\n\n 0\"\n class=\"task-tracker-program-subtext task-tracker-program-subtext-inprogress\"\n innerHtml=\"{{\n taskTrackerResult.programProgress.subTextInProgressTag\n | translate\n | enhancedReplace\n : progressPercentReplaceToken\n : (taskTrackerResult.programProgress.percentComplete | number : '1.0-0') + '%'\n : 'progress-percentage-emphasis'\n }}\"\n >
\n
\n \n
\n {{ taskTrackerResult.programProgress.subTextCompletedTag | translate }}\n
\n
\n \n\n 3\n \"\n class=\"task-tracker-completed-link\"\n >\n \n {{ taskTrackerResult.programProgress.completedLinkTextTag | translate }}\n \n \n \n\n
\n \n \n
\n \n \n\n defaultVisibleTaskCount\"\n class=\"task-tracker-widget-expand task-tracker-widget-section\"\n >\n
\n {{\n 'hub.task_tracker.visible_count_label'\n | translate\n | replace : currentShownTasksCountReplaceToken : currentlyShownTaskCount\n | replace : totalTasksCountReplaceToken : taskListLength\n }}\n
\n\n \n \n\n \n \n \n \n
\n\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MODAL_LOADING_SPINNER_STYLE } from '@common/constants/modal-loading-spinner-style';\nimport { TASK_TRACKER_COLUMN_BREAKPOINTS } from '../../constants/task-tracker-widget-column-breakpoints.constants';\nimport { TaskTrackerColumnBreakpoint } from '../../models/task-tracker-column-breakpoint';\nimport { TaskTrackerTaskCompletion } from '../../models/task-tracker-program-completed-task';\nimport { TaskTrackerResult } from '../../models/task-tracker-result';\n\n@Component({\n selector: 'u-task-tracker-widget',\n templateUrl: './task-tracker-widget.component.html',\n styleUrls: ['./task-tracker-widget.component.scss'],\n})\nexport class TaskTrackerWidgetComponent {\n @Input() showMore: boolean;\n @Input() taskTrackerResult: TaskTrackerResult;\n @Input() pageSize: number;\n @Input() hideCompletedLink: boolean;\n\n @Output() readonly showMoreToggleClicked = new EventEmitter();\n\n readonly loadingSpinnerStyle = MODAL_LOADING_SPINNER_STYLE;\n readonly progressPercentReplaceToken = '%PROGRESS_PERCENTAGE%';\n readonly currentShownTasksCountReplaceToken = '%CURRENT_SHOWN_TASKS_COUNT%';\n readonly totalTasksCountReplaceToken = '%TOTAL_TASKS_COUNT%';\n\n onShowMoreToggleClicked(): void {\n this.showMoreToggleClicked.emit();\n }\n\n get taskListLength(): number {\n return this.taskTrackerResult?.programProgress?.tasks?.length;\n }\n\n get currentColumnSizeMapping(): TaskTrackerColumnBreakpoint {\n let sizeMapping = TASK_TRACKER_COLUMN_BREAKPOINTS[0];\n\n TASK_TRACKER_COLUMN_BREAKPOINTS.every((current) => {\n const isInRange = this.pageSize >= current.minPageWidth;\n sizeMapping = isInRange ? current : sizeMapping;\n\n return isInRange;\n });\n\n return sizeMapping;\n }\n\n get currentColumnCount(): number {\n return this.currentColumnSizeMapping.columnCount;\n }\n\n get defaultVisibleTaskCount(): number {\n return this.currentColumnSizeMapping.defaultVisibleTaskCount;\n }\n\n get currentlyShownTaskCount(): number {\n let currentlyShownTaskCount = this.taskListLength;\n\n if (currentlyShownTaskCount > this.defaultVisibleTaskCount && !this.showMore) {\n currentlyShownTaskCount = this.defaultVisibleTaskCount;\n }\n\n return currentlyShownTaskCount;\n }\n\n trackByIndex(_idx: number, taskCompletion: TaskTrackerTaskCompletion): number {\n return taskCompletion.completedId;\n }\n}\n","\n","import { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { Select, Store } from '@ngxs/store';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { TASK_TRACKER_COLUMN_BREAKPOINTS } from '../../constants/task-tracker-widget-column-breakpoints.constants';\nimport { TaskTrackerResult } from '../../models/task-tracker-result';\nimport { LoadTaskTrackerProgramProgress } from '../../state/task-tracker.actions';\nimport { TaskTrackerSelectors } from '../../state/task-tracker.selectors';\n\n@Component({\n selector: 'u-task-tracker-widget-container',\n templateUrl: './task-tracker-widget-container.component.html',\n styleUrls: ['./task-tracker-widget-container.component.scss'],\n})\nexport class TaskTrackerWidgetContainerComponent implements OnInit {\n @Input() programKey: string;\n @Input() hideCompletedLink = false;\n\n readonly pageSize$ = this.breakpointObserver\n .observe(TASK_TRACKER_COLUMN_BREAKPOINTS.map((b) => `(max-width: ${b.minPageWidth}px)`))\n .pipe(map((_result: BreakpointState) => window.innerWidth));\n\n @Select(TaskTrackerSelectors.getTaskTrackerResultLookupFn) taskTrackerResultLookupFn$: Observable<\n (programKey: string) => TaskTrackerResult\n >;\n\n taskTrackerResult$: Observable;\n\n showMore = false;\n\n constructor(private store: Store, private breakpointObserver: BreakpointObserver) {}\n\n ngOnInit(): void {\n this.taskTrackerResult$ = this.taskTrackerResultLookupFn$.pipe(map((lookupFn) => lookupFn(this.programKey)));\n\n if (this.programKey) {\n this.store.dispatch(new LoadTaskTrackerProgramProgress(this.programKey));\n }\n }\n\n onShowMoreToggleClicked(): void {\n this.showMore = !this.showMore;\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { CmsBaseDirective } from '../cms-base.directive';\nimport { CmsItemModel } from '../cms.model';\n\n@Component({\n selector: 'u-cms-task-tracker',\n templateUrl: './cms-task-tracker.component.html',\n styleUrls: ['./cms-task-tracker.component.scss'],\n})\nexport class CmsTaskTrackerComponent extends CmsBaseDirective {\n @Input() cmsItemObj: CmsItemModel;\n}\n","\n","import { CmsBasicContainerComponent } from '@common/cms/cms-basic-container/cms-basic-container.component';\nimport { CmsBasicItemComponent } from '@common/cms/cms-basic-item/cms-basic-item.component';\nimport { CmsGroupContainerComponent } from '@common/cms/cms-group-container/cms-group-container.component';\nimport { CmsGroupPageComponent } from '@common/cms/cms-group-page/cms-group-page.component';\nimport { CmsHubNavBlockContainerComponent } from '@common/cms/cms-hub-nav-block-container/cms-hub-nav-block-container.component';\nimport { CmsHubNavItemComponent } from '@common/cms/cms-hub-nav-item/cms-hub-nav-item.component';\nimport { CmsHubNavSubgroupContainerComponent } from '@common/cms/cms-hub-nav-subgroup-container/cms-hub-nav-subgroup-container.component';\nimport { CmsImageLinkItemComponent } from '@common/cms/cms-image-link-item/cms-image-link-item.component';\nimport { CmsLinkItemComponent } from '@common/cms/cms-link-item/cms-link-item.component';\nimport { CmsPanelContainerComponent } from '@common/cms/cms-panel-container/cms-panel-container.component';\nimport { CmsBindingDefinition } from '@common/cms/cms.model';\nimport { CmsHubBannerSliderContainerComponent } from '@common/cms/containers/banner-slider/cms-hub-banner-slider-container.component';\nimport { CmsColumnedContainerComponent } from '@common/cms/containers/columned/cms-columned-container.component';\nimport { CmsGalleryContainerComponent } from '@common/cms/containers/gallery/cms-gallery-container.component';\nimport { CmsSlideContainerComponent } from '@common/cms/containers/slide/cms-slide-container.component';\nimport { EarningsOptInItemComponent } from '@common/cms/earnings-opt-in/earnings-opt-in-item/earnings-opt-in-item.component';\nimport { CmsHubBannerSliderItemComponent } from '@common/cms/items/banner-item/cms-hub-banner-slider-item.component';\nimport {\n CmsComponentBindingDefinition,\n CmsPurplePageBindingDefinition,\n} from '@common/cms/items/cms-item-binding-definitions.model';\nimport { CmsContestOptInComponent } from '@common/cms/items/contest-opt-in/cms-contest-opt-in.component';\nimport { CmsSlideItemComponent } from '@common/cms/items/slide/cms-slide-item.component';\nimport { CmsTitledItemComponent } from '@common/cms/items/titled-item/cms-titled-item.component';\nimport { CmsUsanaNewsContainerComponent } from '@common/cms/news/usana-news-container.component';\nimport { CmsUsanaNewsItemComponent } from '@common/cms/news/usana-news-item.component';\nimport { CmsUsanaNewsLandingItemComponent } from '@common/cms/news/usana-news-landing-item.component';\nimport { RelatedStoriesContainerComponent } from '@common/cms/training/related-stories/related-stories-container/related-stories-container.component';\nimport { RelatedStoriesItemComponent } from '@common/cms/training/related-stories/related-stories-item/related-stories-item.component';\nimport { TrainingSubCategoryContainerComponent } from '@common/cms/training/training-sub-category/training-sub-category-container/training-sub-category-container.component';\nimport { TrainingSubCategoryItemComponent } from '@common/cms/training/training-sub-category/training-sub-category-item/training-sub-category-item.component';\nimport { PurplePageComponent } from '@shared/purple-pages/purple-page/purple-page.component';\nimport { CmsContestStatPageComponent } from '../cms-stat-page/cms-contest-stat-page.component';\nimport { CmsTaskTrackerComponent } from '../cms-task-tracker/cms-task-tracker.component';\n\nexport class CmsComponentService {\n getComponentFromType(type: string): Promise {\n return Promise.resolve(this.getComponentFromTypeImm(type));\n }\n\n protected getComponentFromTypeImm(type: string): CmsBindingDefinition {\n switch (type) {\n case 'basic-container':\n return new CmsComponentBindingDefinition(CmsBasicContainerComponent);\n case 'basic-item':\n return new CmsComponentBindingDefinition(CmsBasicItemComponent);\n case 'card-item':\n return new CmsComponentBindingDefinition(TrainingSubCategoryItemComponent);\n case 'columned-container':\n return new CmsComponentBindingDefinition(CmsColumnedContainerComponent);\n case 'earnings-opt-in-item':\n return new CmsComponentBindingDefinition(EarningsOptInItemComponent);\n case 'gallery-container':\n return new CmsComponentBindingDefinition(CmsGalleryContainerComponent);\n case 'group-container':\n return new CmsComponentBindingDefinition(CmsGroupContainerComponent);\n case 'group-page':\n return new CmsComponentBindingDefinition(CmsGroupPageComponent);\n case 'Hub-Banner-Slider-Container':\n return new CmsComponentBindingDefinition(CmsHubBannerSliderContainerComponent);\n case 'Hub-Banner-Slider-Item':\n return new CmsComponentBindingDefinition(CmsHubBannerSliderItemComponent);\n case 'hub-nav-block-container':\n return new CmsComponentBindingDefinition(CmsHubNavBlockContainerComponent);\n case 'hub-nav-item':\n return new CmsComponentBindingDefinition(CmsHubNavItemComponent);\n case 'hub-nav-subgroup-container':\n return new CmsComponentBindingDefinition(CmsHubNavSubgroupContainerComponent);\n case 'image-link-item':\n return new CmsComponentBindingDefinition(CmsImageLinkItemComponent);\n case 'link-item':\n return new CmsComponentBindingDefinition(CmsLinkItemComponent);\n case 'OptIn':\n return new CmsComponentBindingDefinition(CmsContestOptInComponent);\n case 'panel-container':\n return new CmsComponentBindingDefinition(CmsPanelContainerComponent);\n case 'PCInvite':\n return new CmsPurplePageBindingDefinition(PurplePageComponent);\n case 'related-stories-container':\n return new CmsComponentBindingDefinition(RelatedStoriesContainerComponent);\n case 'related-stories-item':\n return new CmsComponentBindingDefinition(RelatedStoriesItemComponent);\n case 'slide-container':\n return new CmsComponentBindingDefinition(CmsSlideContainerComponent);\n case 'slide-item':\n return new CmsComponentBindingDefinition(CmsSlideItemComponent);\n case 'StatPage':\n return new CmsComponentBindingDefinition(CmsContestStatPageComponent);\n case 'titled-item':\n return new CmsComponentBindingDefinition(CmsTitledItemComponent);\n case 'training-sub-category-container':\n return new CmsComponentBindingDefinition(TrainingSubCategoryContainerComponent);\n case 'training-task-tracker-widget':\n return new CmsComponentBindingDefinition(CmsTaskTrackerComponent);\n case 'usana-news-container':\n return new CmsComponentBindingDefinition(CmsUsanaNewsContainerComponent);\n case 'usana-news-landing-item':\n return new CmsComponentBindingDefinition(CmsUsanaNewsLandingItemComponent);\n case 'usanaNewsItem':\n return new CmsComponentBindingDefinition(CmsUsanaNewsItemComponent);\n default:\n console.log('could not find cms type', type);\n return null;\n }\n }\n}\n","import {\n AfterViewInit,\n Component,\n ComponentFactoryResolver,\n Input,\n OnChanges,\n OnDestroy,\n SimpleChanges,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { UserProfileSelectors } from '@common/authentication/state/user-profile.selectors';\nimport { CmsConstants } from '@common/cms/cms.constants';\nimport { CmsBindingDefinition } from '@common/cms/cms.model';\nimport { CmsComponentService } from '@common/cms/services/cms-component.service';\nimport { LoadCmsItem } from '@common/cms/state/cms.actions';\nimport { CmsSelectors } from '@common/cms/state/cms.selectors';\nimport { CmsItemEntry } from '@common/cms/state/cms.state.model';\nimport { Store } from '@ngxs/store';\nimport { PerformanceService } from '@shared/performance/performance.service';\nimport { filter } from 'rxjs/operators';\n\n@Component({\n selector: 'u-cms-item',\n templateUrl: './cms-item.component.html',\n styleUrls: [],\n // changeDetection: ChangeDete,\n})\nexport class CmsItemComponent implements OnChanges, OnDestroy, AfterViewInit {\n @Input() itemId;\n @Input() placeholderData: any;\n @Input() navClickEvent: string;\n\n @ViewChild('vc', { read: ViewContainerRef }) vc: ViewContainerRef;\n\n cmsItemObj;\n\n private itemSubscription;\n private profileSubscription;\n component;\n private componentType: string;\n\n constructor(private readonly store: Store, private readonly cmsComponentService: CmsComponentService) {\n this.profileSubscription = this.store.select(UserProfileSelectors.getUserProfile).subscribe(() => {\n this.reloadThis();\n });\n }\n\n ngAfterViewInit(): void {\n if (this.cmsItemObj) {\n this.renderCmsItem(this.cmsItemObj);\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.itemId) {\n this.cleanupItemSub();\n this.itemSubscription = this.store\n .select(CmsSelectors.cmsItemIsUpdatedFn)\n .pipe(filter((fn: (itemId: string) => boolean) => fn(this.itemId)))\n .subscribe(() => {\n // when our itemId is listed as an item that is changed\n // get the item from the store and rerender it\n // NOTE: we do it this way because it is cheaper co compare string arrays and then only build the cms object\n // if it has changed\n const cmsItem = this.store.selectSnapshot(CmsSelectors.getCmsItemByIdFn)(this.itemId);\n if (cmsItem && cmsItem.data) {\n if (CmsConstants.DEBUG) {\n console.log(cmsItem);\n }\n }\n this.renderCmsItem(cmsItem);\n });\n // render placeholder data\n if (this.placeholderData) {\n this.renderCmsItem({\n isLoading: false,\n data: {\n ...this.placeholderData,\n placeholder: true,\n },\n error: false,\n });\n }\n this.reloadThis();\n }\n }\n\n ngOnDestroy(): void {\n this.profileSubscription.unsubscribe();\n this.cleanupItemSub();\n }\n\n // prettier-ignore\n private renderCmsItem(cmsItem: CmsItemEntry): void { // NOSONAR\n if (cmsItem && !cmsItem.isLoading) {\n const newType = cmsItem.data.type.id;\n if (this.vc) {\n if (!this.componentType || this.componentType !== newType) {\n // only if the type changed.\n this.updateVc(cmsItem).then((compRef) => {\n if (compRef != null) {\n this.componentType = newType;\n this.component = compRef;\n PerformanceService.mark(`CMS:${newType}:${cmsItem.data.item.id}`);\n }\n });\n } else {\n // we are the same type so just update our data.\n // calling the setInput method makes sure change detection gets invoked on our component ref component\n this.component.setInput('cmsItemObj', cmsItem.data);\n }\n } else {\n // vc isn't set yet so save the cms data\n this.cmsItemObj = cmsItem;\n }\n }\n }\n\n /**\n * update the View child, wrapped in a promise for when we have lazy loading\n * @private a component reference from componentFactoryResolver if once exists (null if no type was found)\n */\n private updateVc(cmsItem: CmsItemEntry): Promise {\n return this.cmsComponentService\n .getComponentFromType(cmsItem.data.type.id)\n .then((compToUse: CmsBindingDefinition) => {\n if (compToUse != null) {\n this.vc.clear();\n\n const createdComponent = this.vc.createComponent(compToUse.componentClass);\n compToUse.bindData(createdComponent, cmsItem, this.navClickEvent);\n\n return createdComponent;\n }\n\n return null;\n });\n }\n\n private reloadThis(): void {\n if (this.vc) {\n this.vc.clear();\n }\n this.componentType = undefined;\n if (this.itemId) {\n this.store.dispatch(new LoadCmsItem(this.itemId));\n }\n }\n\n private cleanupItemSub(): void {\n if (this.itemSubscription) {\n this.itemSubscription.unsubscribe();\n delete this.itemSubscription;\n }\n }\n}\n","\n\n","import * as i0 from '@angular/core';\nimport { Injectable, EventEmitter, PLATFORM_ID, Component, Inject, Input, Output, HostBinding, NgModule } from '@angular/core';\nimport * as i2 from '@angular/common';\nimport { isPlatformBrowser, CommonModule } from '@angular/common';\nimport { getBsVer, LinkedList } from 'ngx-bootstrap/utils';\n\nclass CarouselConfig {\n constructor() {\n /* Default interval of auto changing of slides */\n this.interval = 5000;\n /* Is loop of auto changing of slides can be paused */\n this.noPause = false;\n /* Is slides can wrap from the last to the first slide */\n this.noWrap = false;\n /* Show carousel-indicators */\n this.showIndicators = true;\n /* Slides can be paused on focus */\n this.pauseOnFocus = false;\n /* If `true` - carousel indicators indicate slides chunks works ONLY if singleSlideOffset = FALSE */\n this.indicatorsByChunk = false;\n /* If value more then 1 — carousel works in multilist mode */\n this.itemsPerSlide = 1;\n /* If `true` — carousel shifts by one element. By default carousel shifts by number\n of visible elements (itemsPerSlide field) */\n this.singleSlideOffset = false;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.4\", ngImport: i0, type: CarouselConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.4\", ngImport: i0, type: CarouselConfig, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.4\", ngImport: i0, type: CarouselConfig, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }] });\n\n/**\n * Returns the index of the last element in the array where predicate is true, and -1\n * otherwise.\n * @param array The source array to search in\n * @param predicate find calls predicate once for each element of the array, in descending\n * order, until it finds one where predicate returns true. If such an element is found,\n * findLastIndex immediately returns that element index. Otherwise, findLastIndex returns -1.\n */\nfunction findLastIndex(array, predicate) {\n let l = array.length;\n while (l--) {\n if (predicate(array[l], l, array)) {\n return l;\n }\n }\n return -1;\n}\nfunction chunkByNumber(array, size) {\n const out = [];\n const n = Math.ceil((array.length) / size);\n let i = 0;\n while (i < n) {\n const chunk = array.splice(0, (i === n - 1) && size < array.length ? array.length : size);\n out.push(chunk);\n i++;\n }\n return out;\n}\nfunction isNumber(value) {\n return typeof value === 'number' || Object.prototype.toString.call(value) === '[object Number]';\n}\n\n/***\n * pause (not yet supported) (?string='hover') - event group name which pauses\n * the cycling of the carousel, if hover pauses on mouseenter and resumes on\n * mouseleave keyboard (not yet supported) (?boolean=true) - if false\n * carousel will not react to keyboard events\n * note: swiping not yet supported\n */\n/****\n * Problems:\n * 1) if we set an active slide via model changes, .active class remains on a\n * current slide.\n * 2) if we have only one slide, we shouldn't show prev/next nav buttons\n * 3) if first or last slide is active and noWrap is true, there should be\n * \"disabled\" class on the nav buttons.\n * 4) default interval should be equal 5000\n */\nvar Direction;\n(function (Direction) {\n Direction[Direction[\"UNKNOWN\"] = 0] = \"UNKNOWN\";\n Direction[Direction[\"NEXT\"] = 1] = \"NEXT\";\n Direction[Direction[\"PREV\"] = 2] = \"PREV\";\n})(Direction || (Direction = {}));\nlet _currentId = 1;\n/**\n * Base element to create carousel\n */\nclass CarouselComponent {\n /** Index of currently displayed slide(started for 0) */\n set activeSlide(index) {\n if (this.multilist) {\n return;\n }\n if (isNumber(index)) {\n this.customActiveSlide = index;\n }\n if (this._slides.length && index !== this._currentActiveSlide) {\n this._select(index);\n }\n }\n get activeSlide() {\n return this._currentActiveSlide || 0;\n }\n /**\n * Delay of item cycling in milliseconds. If false, carousel won't cycle\n * automatically.\n */\n get interval() {\n return this._interval;\n }\n set interval(value) {\n this._interval = value;\n this.restartTimer();\n }\n get slides() {\n return this._slides.toArray();\n }\n get isFirstSlideVisible() {\n const indexes = this.getVisibleIndexes();\n if (!indexes || (indexes instanceof Array && !indexes.length)) {\n return false;\n }\n return indexes.includes(0);\n }\n get isLastSlideVisible() {\n const indexes = this.getVisibleIndexes();\n if (!indexes || (indexes instanceof Array && !indexes.length)) {\n return false;\n }\n return indexes.includes(this._slides.length - 1);\n }\n get _bsVer() {\n return getBsVer();\n }\n constructor(config, ngZone, platformId) {\n this.ngZone = ngZone;\n this.platformId = platformId;\n /* If `true` — carousel will not cycle continuously and will have hard stops (prevent looping) */\n this.noWrap = false;\n /* If `true` — will disable pausing on carousel mouse hover */\n this.noPause = false;\n /* If `true` — carousel-indicators are visible */\n this.showIndicators = true;\n /* If `true` - autoplay will be stopped on focus */\n this.pauseOnFocus = false;\n /* If `true` - carousel indicators indicate slides chunks\n works ONLY if singleSlideOffset = FALSE */\n this.indicatorsByChunk = false;\n /* If value more then 1 — carousel works in multilist mode */\n this.itemsPerSlide = 1;\n /* If `true` — carousel shifts by one element. By default carousel shifts by number\n of visible elements (itemsPerSlide field) */\n this.singleSlideOffset = false;\n /** Turn on/off animation. Animation doesn't work for multilist carousel */\n this.isAnimated = false;\n /** Will be emitted when active slide has been changed. Part of two-way-bindable [(activeSlide)] property */\n this.activeSlideChange = new EventEmitter(false);\n /** Will be emitted when active slides has been changed in multilist mode */\n this.slideRangeChange = new EventEmitter();\n /* Index to start display slides from it */\n this.startFromIndex = 0;\n this._interval = 5000;\n this._slides = new LinkedList();\n this._currentVisibleSlidesIndex = 0;\n this.isPlaying = false;\n this.destroyed = false;\n this.currentId = 0;\n this.getActive = (slide) => slide.active;\n this.makeSlidesConsistent = (slides) => {\n slides.forEach((slide, index) => slide.item.order = index);\n };\n Object.assign(this, config);\n this.currentId = _currentId++;\n }\n ngAfterViewInit() {\n setTimeout(() => {\n if (this.singleSlideOffset) {\n this.indicatorsByChunk = false;\n }\n if (this.multilist) {\n this._chunkedSlides = chunkByNumber(this.mapSlidesAndIndexes(), this.itemsPerSlide);\n this.selectInitialSlides();\n }\n if (this.customActiveSlide && !this.multilist) {\n this._select(this.customActiveSlide);\n }\n }, 0);\n }\n ngOnDestroy() {\n this.destroyed = true;\n }\n /**\n * Adds new slide. If this slide is first in collection - set it as active\n * and starts auto changing\n * @param slide\n */\n addSlide(slide) {\n this._slides.add(slide);\n if (this.multilist && this._slides.length <= this.itemsPerSlide) {\n slide.active = true;\n }\n if (!this.multilist && this.isAnimated) {\n slide.isAnimated = true;\n }\n if (!this.multilist && this._slides.length === 1) {\n this._currentActiveSlide = undefined;\n if (!this.customActiveSlide) {\n this.activeSlide = 0;\n }\n this.play();\n }\n if (this.multilist && this._slides.length > this.itemsPerSlide) {\n this.play();\n }\n }\n /**\n * Removes specified slide. If this slide is active - will roll to another\n * slide\n * @param slide\n */\n removeSlide(slide) {\n const remIndex = this._slides.indexOf(slide);\n if (this._currentActiveSlide === remIndex) {\n // removing of active slide\n let nextSlideIndex;\n if (this._slides.length > 1) {\n // if this slide last - will roll to first slide, if noWrap flag is\n // FALSE or to previous, if noWrap is TRUE in case, if this slide in\n // middle of collection, index of next slide is same to removed\n nextSlideIndex = !this.isLast(remIndex)\n ? remIndex\n : this.noWrap ? remIndex - 1 : 0;\n }\n this._slides.remove(remIndex);\n // prevents exception with changing some value after checking\n setTimeout(() => {\n this._select(nextSlideIndex);\n }, 0);\n }\n else {\n this._slides.remove(remIndex);\n const currentSlideIndex = this.getCurrentSlideIndex();\n setTimeout(() => {\n // after removing, need to actualize index of current active slide\n this._currentActiveSlide = currentSlideIndex;\n this.activeSlideChange.emit(this._currentActiveSlide);\n }, 0);\n }\n }\n nextSlideFromInterval(force = false) {\n this.move(Direction.NEXT, force);\n }\n /**\n * Rolling to next slide\n * @param force: {boolean} if true - will ignore noWrap flag\n */\n nextSlide(force = false) {\n if (this.isPlaying) {\n this.restartTimer();\n }\n this.move(Direction.NEXT, force);\n }\n /**\n * Rolling to previous slide\n * @param force: {boolean} if true - will ignore noWrap flag\n */\n previousSlide(force = false) {\n if (this.isPlaying) {\n this.restartTimer();\n }\n this.move(Direction.PREV, force);\n }\n getFirstVisibleIndex() {\n return this.slides.findIndex(this.getActive);\n }\n getLastVisibleIndex() {\n return findLastIndex(this.slides, this.getActive);\n }\n move(direction, force = false) {\n const firstVisibleIndex = this.getFirstVisibleIndex();\n const lastVisibleIndex = this.getLastVisibleIndex();\n if (this.noWrap) {\n if (direction === Direction.NEXT &&\n this.isLast(lastVisibleIndex) ||\n direction === Direction.PREV &&\n firstVisibleIndex === 0) {\n return;\n }\n }\n if (!this.multilist) {\n this.activeSlide = this.findNextSlideIndex(direction, force) || 0;\n }\n else {\n this.moveMultilist(direction);\n }\n }\n /**\n * Swith slides by enter, space and arrows keys\n * @internal\n */\n keydownPress(event) {\n if (event.keyCode === 13 || event.key === 'Enter' || event.keyCode === 32 || event.key === 'Space') {\n this.nextSlide();\n event.preventDefault();\n return;\n }\n if (event.keyCode === 37 || event.key === 'LeftArrow') {\n this.previousSlide();\n return;\n }\n if (event.keyCode === 39 || event.key === 'RightArrow') {\n this.nextSlide();\n return;\n }\n }\n /**\n * Play on mouse leave\n * @internal\n */\n onMouseLeave() {\n if (!this.pauseOnFocus) {\n this.play();\n }\n }\n /**\n * Play on mouse up\n * @internal\n */\n onMouseUp() {\n if (!this.pauseOnFocus) {\n this.play();\n }\n }\n /**\n * When slides on focus autoplay is stopped(optional)\n * @internal\n */\n pauseFocusIn() {\n if (this.pauseOnFocus) {\n this.isPlaying = false;\n this.resetTimer();\n }\n }\n /**\n * When slides out of focus autoplay is started\n * @internal\n */\n pauseFocusOut() {\n this.play();\n }\n /**\n * Rolling to specified slide\n * @param index: {number} index of slide, which must be shown\n */\n selectSlide(index) {\n if (this.isPlaying) {\n this.restartTimer();\n }\n if (!this.multilist) {\n this.activeSlide = this.indicatorsByChunk ? index * this.itemsPerSlide : index;\n }\n else {\n this.selectSlideRange(this.indicatorsByChunk ? index * this.itemsPerSlide : index);\n }\n }\n /**\n * Starts a auto changing of slides\n */\n play() {\n if (!this.isPlaying) {\n this.isPlaying = true;\n this.restartTimer();\n }\n }\n /**\n * Stops a auto changing of slides\n */\n pause() {\n if (!this.noPause) {\n this.isPlaying = false;\n this.resetTimer();\n }\n }\n /**\n * Finds and returns index of currently displayed slide\n */\n getCurrentSlideIndex() {\n return this._slides.findIndex(this.getActive);\n }\n /**\n * Defines, whether the specified index is last in collection\n * @param index\n */\n isLast(index) {\n return index + 1 >= this._slides.length;\n }\n /**\n * Defines, whether the specified index is first in collection\n * @param index\n */\n isFirst(index) {\n return index === 0;\n }\n indicatorsSlides() {\n return this.slides.filter((slide, index) => !this.indicatorsByChunk || index % this.itemsPerSlide === 0);\n }\n selectInitialSlides() {\n const startIndex = this.startFromIndex <= this._slides.length\n ? this.startFromIndex\n : 0;\n this.hideSlides();\n if (this.singleSlideOffset) {\n this._slidesWithIndexes = this.mapSlidesAndIndexes();\n if (this._slides.length - startIndex < this.itemsPerSlide) {\n const slidesToAppend = this._slidesWithIndexes.slice(0, startIndex);\n this._slidesWithIndexes = [\n ...this._slidesWithIndexes,\n ...slidesToAppend\n ]\n .slice(slidesToAppend.length)\n .slice(0, this.itemsPerSlide);\n }\n else {\n this._slidesWithIndexes = this._slidesWithIndexes.slice(startIndex, startIndex + this.itemsPerSlide);\n }\n this._slidesWithIndexes.forEach((slide) => slide.item.active = true);\n this.makeSlidesConsistent(this._slidesWithIndexes);\n }\n else {\n this.selectRangeByNestedIndex(startIndex);\n }\n this.slideRangeChange.emit(this.getVisibleIndexes());\n }\n /**\n * Defines next slide index, depending of direction\n * @param direction: Direction(UNKNOWN|PREV|NEXT)\n * @param force: {boolean} if TRUE - will ignore noWrap flag, else will\n * return undefined if next slide require wrapping\n */\n findNextSlideIndex(direction, force) {\n let nextSlideIndex = 0;\n if (!force &&\n (this.isLast(this.activeSlide) &&\n direction !== Direction.PREV &&\n this.noWrap)) {\n return;\n }\n switch (direction) {\n case Direction.NEXT:\n // if this is last slide, not force, looping is disabled\n // and need to going forward - select current slide, as a next\n if (typeof this._currentActiveSlide === 'undefined') {\n nextSlideIndex = 0;\n break;\n }\n if (!this.isLast(this._currentActiveSlide)) {\n nextSlideIndex = this._currentActiveSlide + 1;\n break;\n }\n nextSlideIndex = !force && this.noWrap ? this._currentActiveSlide : 0;\n break;\n case Direction.PREV:\n // if this is first slide, not force, looping is disabled\n // and need to going backward - select current slide, as a next\n if (typeof this._currentActiveSlide === 'undefined') {\n nextSlideIndex = 0;\n break;\n }\n if (this._currentActiveSlide > 0) {\n nextSlideIndex = this._currentActiveSlide - 1;\n break;\n }\n if (!force && this.noWrap) {\n nextSlideIndex = this._currentActiveSlide;\n break;\n }\n nextSlideIndex = this._slides.length - 1;\n break;\n default:\n throw new Error('Unknown direction');\n }\n return nextSlideIndex;\n }\n mapSlidesAndIndexes() {\n return this.slides\n .slice()\n .map((slide, index) => {\n return {\n index,\n item: slide\n };\n });\n }\n selectSlideRange(index) {\n if (this.isIndexInRange(index)) {\n return;\n }\n this.hideSlides();\n if (!this.singleSlideOffset) {\n this.selectRangeByNestedIndex(index);\n }\n else {\n const startIndex = this.isIndexOnTheEdges(index)\n ? index\n : index - this.itemsPerSlide + 1;\n const endIndex = this.isIndexOnTheEdges(index)\n ? index + this.itemsPerSlide\n : index + 1;\n this._slidesWithIndexes = this.mapSlidesAndIndexes().slice(startIndex, endIndex);\n this.makeSlidesConsistent(this._slidesWithIndexes);\n this._slidesWithIndexes.forEach((slide) => slide.item.active = true);\n }\n this.slideRangeChange.emit(this.getVisibleIndexes());\n }\n selectRangeByNestedIndex(index) {\n if (!this._chunkedSlides) {\n return;\n }\n const selectedRange = this._chunkedSlides\n .map((slidesList, i) => {\n return {\n index: i,\n list: slidesList\n };\n })\n .find((slidesList) => {\n return slidesList.list.find(slide => slide.index === index) !== undefined;\n });\n if (!selectedRange) {\n return;\n }\n this._currentVisibleSlidesIndex = selectedRange.index;\n this._chunkedSlides[selectedRange.index].forEach((slide) => {\n slide.item.active = true;\n });\n }\n isIndexOnTheEdges(index) {\n return (index + 1 - this.itemsPerSlide <= 0 ||\n index + this.itemsPerSlide <= this._slides.length);\n }\n isIndexInRange(index) {\n if (this.singleSlideOffset && this._slidesWithIndexes) {\n const visibleIndexes = this._slidesWithIndexes.map((slide) => slide.index);\n return visibleIndexes.indexOf(index) >= 0;\n }\n return (index <= this.getLastVisibleIndex() &&\n index >= this.getFirstVisibleIndex());\n }\n hideSlides() {\n this.slides.forEach((slide) => slide.active = false);\n }\n isVisibleSlideListLast() {\n if (!this._chunkedSlides) {\n return false;\n }\n return this._currentVisibleSlidesIndex === this._chunkedSlides.length - 1;\n }\n isVisibleSlideListFirst() {\n return this._currentVisibleSlidesIndex === 0;\n }\n moveSliderByOneItem(direction) {\n let firstVisibleIndex;\n let lastVisibleIndex;\n let indexToHide;\n let indexToShow;\n if (this.noWrap) {\n firstVisibleIndex = this.getFirstVisibleIndex();\n lastVisibleIndex = this.getLastVisibleIndex();\n indexToHide = direction === Direction.NEXT\n ? firstVisibleIndex\n : lastVisibleIndex;\n indexToShow = direction !== Direction.NEXT\n ? firstVisibleIndex - 1\n : !this.isLast(lastVisibleIndex)\n ? lastVisibleIndex + 1 : 0;\n const slideToHide = this._slides.get(indexToHide);\n if (slideToHide) {\n slideToHide.active = false;\n }\n const slideToShow = this._slides.get(indexToShow);\n if (slideToShow) {\n slideToShow.active = true;\n }\n const slidesToReorder = this.mapSlidesAndIndexes().filter((slide) => slide.item.active);\n this.makeSlidesConsistent(slidesToReorder);\n if (this.singleSlideOffset) {\n this._slidesWithIndexes = slidesToReorder;\n }\n this.slideRangeChange.emit(this.getVisibleIndexes());\n return;\n }\n if (!this._slidesWithIndexes || !this._slidesWithIndexes[0]) {\n return;\n }\n let index;\n firstVisibleIndex = this._slidesWithIndexes[0].index;\n lastVisibleIndex = this._slidesWithIndexes[this._slidesWithIndexes.length - 1].index;\n if (direction === Direction.NEXT) {\n this._slidesWithIndexes.shift();\n index = this.isLast(lastVisibleIndex)\n ? 0\n : lastVisibleIndex + 1;\n const item = this._slides.get(index);\n if (item) {\n this._slidesWithIndexes.push({ index, item });\n }\n }\n else {\n this._slidesWithIndexes.pop();\n index = this.isFirst(firstVisibleIndex)\n ? this._slides.length - 1\n : firstVisibleIndex - 1;\n const item = this._slides.get(index);\n if (item) {\n this._slidesWithIndexes = [{ index, item }, ...this._slidesWithIndexes];\n }\n }\n this.hideSlides();\n this._slidesWithIndexes.forEach(slide => slide.item.active = true);\n this.makeSlidesConsistent(this._slidesWithIndexes);\n this.slideRangeChange.emit(this._slidesWithIndexes.map((slide) => slide.index));\n }\n moveMultilist(direction) {\n if (this.singleSlideOffset) {\n this.moveSliderByOneItem(direction);\n }\n else {\n this.hideSlides();\n if (this.noWrap) {\n this._currentVisibleSlidesIndex = direction === Direction.NEXT\n ? this._currentVisibleSlidesIndex + 1\n : this._currentVisibleSlidesIndex - 1;\n }\n else if (direction === Direction.NEXT) {\n this._currentVisibleSlidesIndex = this.isVisibleSlideListLast()\n ? 0\n : this._currentVisibleSlidesIndex + 1;\n }\n else {\n if (this.isVisibleSlideListFirst()) {\n this._currentVisibleSlidesIndex = this._chunkedSlides\n ? this._chunkedSlides.length - 1\n : 0;\n }\n else {\n this._currentVisibleSlidesIndex = this._currentVisibleSlidesIndex - 1;\n }\n }\n if (this._chunkedSlides) {\n this._chunkedSlides[this._currentVisibleSlidesIndex].forEach((slide) => slide.item.active = true);\n }\n this.slideRangeChange.emit(this.getVisibleIndexes());\n }\n }\n getVisibleIndexes() {\n if (!this.singleSlideOffset && this._chunkedSlides) {\n return this._chunkedSlides[this._currentVisibleSlidesIndex]\n .map((slide) => slide.index);\n }\n if (this._slidesWithIndexes) {\n return this._slidesWithIndexes.map((slide) => slide.index);\n }\n }\n /**\n * Sets a slide, which specified through index, as active\n * @param index\n */\n _select(index) {\n if (isNaN(index)) {\n this.pause();\n return;\n }\n if (!this.multilist && typeof this._currentActiveSlide !== 'undefined') {\n const currentSlide = this._slides.get(this._currentActiveSlide);\n if (typeof currentSlide !== 'undefined') {\n currentSlide.active = false;\n }\n }\n const nextSlide = this._slides.get(index);\n if (typeof nextSlide !== 'undefined') {\n this._currentActiveSlide = index;\n nextSlide.active = true;\n this.activeSlide = index;\n this.activeSlideChange.emit(index);\n }\n }\n /**\n * Starts loop of auto changing of slides\n */\n restartTimer() {\n this.resetTimer();\n const interval = +this.interval;\n if (!isNaN(interval) && interval > 0 && isPlatformBrowser(this.platformId)) {\n this.currentInterval = this.ngZone.runOutsideAngular(() => {\n return window.setInterval(() => {\n const nInterval = +this.interval;\n this.ngZone.run(() => {\n if (this.isPlaying &&\n !isNaN(this.interval) &&\n nInterval > 0 &&\n this.slides.length) {\n this.nextSlideFromInterval();\n }\n else {\n this.pause();\n }\n });\n }, interval);\n });\n }\n }\n get multilist() {\n return this.itemsPerSlide > 1;\n }\n /**\n * Stops loop of auto changing of slides\n */\n resetTimer() {\n if (this.currentInterval) {\n clearInterval(this.currentInterval);\n this.currentInterval = void 0;\n }\n }\n checkDisabledClass(buttonType) {\n if (buttonType === 'prev') {\n return (this.activeSlide === 0 && this.noWrap && !this.multilist) || (this.isFirstSlideVisible && this.noWrap && this.multilist);\n }\n return (this.isLast(this.activeSlide) && this.noWrap && !this.multilist) || (this.isLastSlideVisible && this.noWrap && this.multilist);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.4\", ngImport: i0, type: CarouselComponent, deps: [{ token: CarouselConfig }, { token: i0.NgZone }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.1.4\", type: CarouselComponent, selector: \"carousel\", inputs: { noWrap: \"noWrap\", noPause: \"noPause\", showIndicators: \"showIndicators\", pauseOnFocus: \"pauseOnFocus\", indicatorsByChunk: \"indicatorsByChunk\", itemsPerSlide: \"itemsPerSlide\", singleSlideOffset: \"singleSlideOffset\", isAnimated: \"isAnimated\", activeSlide: \"activeSlide\", startFromIndex: \"startFromIndex\", interval: \"interval\" }, outputs: { activeSlideChange: \"activeSlideChange\", slideRangeChange: \"slideRangeChange\" }, ngImport: i0, template: \"\\n\", dependencies: [{ kind: \"directive\", type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i2.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.4\", ngImport: i0, type: CarouselComponent, decorators: [{\n type: Component,\n args: [{ selector: 'carousel', template: \"\\n\" }]\n }], ctorParameters: function () { return [{ type: CarouselConfig }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; }, propDecorators: { noWrap: [{\n type: Input\n }], noPause: [{\n type: Input\n }], showIndicators: [{\n type: Input\n }], pauseOnFocus: [{\n type: Input\n }], indicatorsByChunk: [{\n type: Input\n }], itemsPerSlide: [{\n type: Input\n }], singleSlideOffset: [{\n type: Input\n }], isAnimated: [{\n type: Input\n }], activeSlideChange: [{\n type: Output\n }], slideRangeChange: [{\n type: Output\n }], activeSlide: [{\n type: Input\n }], startFromIndex: [{\n type: Input\n }], interval: [{\n type: Input\n }] } });\n\nclass SlideComponent {\n constructor(carousel) {\n /** Is current slide active */\n this.active = false;\n this.itemWidth = '100%';\n this.order = 0;\n this.isAnimated = false;\n /** Wraps element by appropriate CSS classes */\n this.addClass = true;\n this.multilist = false;\n this.carousel = carousel;\n }\n /** Fires changes in container collection after adding a new slide instance */\n ngOnInit() {\n this.carousel.addSlide(this);\n this.itemWidth = `${100 / this.carousel.itemsPerSlide}%`;\n this.multilist = this.carousel?.itemsPerSlide > 1;\n }\n /** Fires changes in container collection after removing of this slide instance */\n ngOnDestroy() {\n this.carousel.removeSlide(this);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.4\", ngImport: i0, type: SlideComponent, deps: [{ token: CarouselComponent }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.1.4\", type: SlideComponent, selector: \"slide\", inputs: { active: \"active\" }, host: { properties: { \"attr.aria-hidden\": \"!active\", \"class.multilist-margin\": \"multilist\", \"class.active\": \"this.active\", \"style.width\": \"this.itemWidth\", \"style.order\": \"this.order\", \"class.carousel-animation\": \"this.isAnimated\", \"class.item\": \"this.addClass\", \"class.carousel-item\": \"this.addClass\" } }, ngImport: i0, template: `\n
\n \n
\n `, isInline: true, styles: [\":host.carousel-animation{transition:opacity .6s ease,visibility .6s ease;float:left}:host.carousel-animation.active{opacity:1;visibility:visible}:host.carousel-animation:not(.active){display:block;position:absolute;opacity:0;visibility:hidden}:host.multilist-margin{margin-right:auto}:host.carousel-item{perspective:1000px}\\n\"] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.4\", ngImport: i0, type: SlideComponent, decorators: [{\n type: Component,\n args: [{ selector: 'slide', template: `\n
\n \n
\n `, host: {\n '[attr.aria-hidden]': '!active',\n '[class.multilist-margin]': 'multilist'\n }, styles: [\":host.carousel-animation{transition:opacity .6s ease,visibility .6s ease;float:left}:host.carousel-animation.active{opacity:1;visibility:visible}:host.carousel-animation:not(.active){display:block;position:absolute;opacity:0;visibility:hidden}:host.multilist-margin{margin-right:auto}:host.carousel-item{perspective:1000px}\\n\"] }]\n }], ctorParameters: function () { return [{ type: CarouselComponent }]; }, propDecorators: { active: [{\n type: HostBinding,\n args: ['class.active']\n }, {\n type: Input\n }], itemWidth: [{\n type: HostBinding,\n args: ['style.width']\n }], order: [{\n type: HostBinding,\n args: ['style.order']\n }], isAnimated: [{\n type: HostBinding,\n args: ['class.carousel-animation']\n }], addClass: [{\n type: HostBinding,\n args: ['class.item']\n }, {\n type: HostBinding,\n args: ['class.carousel-item']\n }] } });\n\nclass CarouselModule {\n static forRoot() {\n return { ngModule: CarouselModule, providers: [] };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.4\", ngImport: i0, type: CarouselModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.1.4\", ngImport: i0, type: CarouselModule, declarations: [SlideComponent, CarouselComponent], imports: [CommonModule], exports: [SlideComponent, CarouselComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.1.4\", ngImport: i0, type: CarouselModule, imports: [CommonModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.4\", ngImport: i0, type: CarouselModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n declarations: [SlideComponent, CarouselComponent],\n exports: [SlideComponent, CarouselComponent]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CarouselComponent, CarouselConfig, CarouselModule, SlideComponent };\n","
\n \n \n \n \n \n
\n
\n

\n {{ childItem.data.Title?.data }}\n

\n \n {{ childItem.data.buttonLabel?.data }}\n \n
\n
\n \n \n
\n","import { Component, OnInit } from '@angular/core';\nimport { CmsBaseItemDirective } from '@common/cms/items/cms-item-base.directive';\nimport { WindowSizingService } from '@common/services/window-size.service';\nimport { Store } from '@ngxs/store';\n\n@Component({\n selector: 'u-mini-card-carousel',\n templateUrl: './mini-card-carousel.component.html',\n styleUrls: ['./mini-card-carousel.component.scss'],\n})\nexport class MiniCardCarouselComponent extends CmsBaseItemDirective implements OnInit {\n itemsPerSlide;\n\n constructor(protected readonly store: Store, private windowSizingService: WindowSizingService) {\n super(store);\n }\n\n ngOnInit() {\n this.itemsPerSlide = this.cmsItemObj.children.length < 3 || this.windowSizingService.isMobileSize() ? 2 : 3;\n }\n\n trackByIndex(index) {\n return index;\n }\n}\n","\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router';\nimport { UserProfileSelectors } from '@common/authentication/state/user-profile.selectors';\nimport { UpdateCmsCurrentPage } from '@common/cms/state/cms.actions';\nimport { CmsSelectors } from '@common/cms/state/cms.selectors';\nimport { CmsCurrentPage, CmsItemEntry } from '@common/cms/state/cms.state.model';\nimport { Store } from '@ngxs/store';\nimport { Subject, Subscription } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\n@Component({\n selector: 'u-cms-page',\n templateUrl: './cms-page.component.html',\n})\nexport class CmsPageComponent implements OnInit, OnDestroy {\n pageId: string = null;\n\n private itemSubscription: Subscription;\n\n private destroy$ = new Subject();\n\n readonly ANGULAR_JS_ESCAPED_SLASH = '~2F';\n\n constructor(private readonly store: Store, private route: ActivatedRoute, private router: Router) {}\n\n ngOnInit(): void {\n this.renderActivePage();\n\n this.router.events.pipe(takeUntil(this.destroy$)).subscribe((event) => {\n if (event instanceof NavigationEnd && event.url.startsWith('/content/')) {\n this.renderActivePage();\n }\n });\n }\n\n ngOnDestroy(): void {\n this.cleanupItemSub();\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private renderActivePage() {\n const itemIds = this.route.snapshot.url.map((u) => u.path);\n\n const cmsPageData = this.extractCmsPageData(itemIds);\n this.updatePageData(cmsPageData);\n }\n\n private updatePageData(currentPage: CmsCurrentPage): void {\n this.store.dispatch(new UpdateCmsCurrentPage(currentPage.pageId, currentPage.subPages));\n this.pageId = currentPage.pageId;\n\n // subscribe to make sure the item isn't disabled\n this.cleanupItemSub(); // cleanup any existing subscriptions.\n this.itemSubscription = this.store\n .select(CmsSelectors.cmsItemIsUpdatedFn)\n .pipe(filter((fn: (itemId: string) => boolean) => fn(this.pageId)))\n .subscribe(() => {\n const cmsItem: CmsItemEntry = this.store.selectSnapshot(CmsSelectors.getCmsItemByIdFn)(this.pageId);\n if (\n cmsItem &&\n cmsItem.data &&\n cmsItem.data.item.disabled &&\n !this.store.selectSnapshot(UserProfileSelectors.getUserProfile).cmAdmin\n ) {\n // if the item is disabled and we aren't an admin we are going to disable the page\n // we could show a 401 page but that isn't what we did before, we would just show nothing\n this.pageId = null;\n }\n });\n }\n\n private extractCmsPageData(itemIds: string[]): CmsCurrentPage {\n let correctedItemIds = itemIds;\n\n const isLegacyCmsUrl = itemIds[0].includes('/');\n const isLegacyAngularJsCmsUrl = itemIds[0].includes(this.ANGULAR_JS_ESCAPED_SLASH);\n\n if (isLegacyCmsUrl) {\n correctedItemIds = itemIds[0].split('/');\n } else if (isLegacyAngularJsCmsUrl) {\n correctedItemIds = itemIds[0].split(this.ANGULAR_JS_ESCAPED_SLASH);\n }\n\n return {\n pageId: correctedItemIds[0],\n subPages: correctedItemIds.slice(1), // the rest\n };\n }\n\n private cleanupItemSub(): void {\n if (this.itemSubscription) {\n this.itemSubscription.unsubscribe();\n delete this.itemSubscription;\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ContestApiService } from '@common/contest/service/contest-api.service';\nimport { TranslationModule } from '@common/translation/translation.module';\nimport { NgxsModule } from '@ngxs/store';\nimport { ContestServiceState } from './state/contest-service.state';\n\n@NgModule({\n imports: [CommonModule, NgxsModule.forFeature([ContestServiceState]), TranslationModule],\n providers: [ContestApiService],\n})\nexport class ContestServiceModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TranslationModule } from '@common/translation/translation.module';\nimport { BreadCrumbComponent } from './bread-crumb/bread-crumb.component';\n\n@NgModule({\n declarations: [BreadCrumbComponent],\n exports: [BreadCrumbComponent],\n imports: [CommonModule, TranslationModule],\n})\nexport class BreadCrumbModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { HtmlToPlainTextPipe } from '@shared/pipes/html-to-plain-text/html-to-plain-text.pipe';\n\n@NgModule({\n declarations: [HtmlToPlainTextPipe],\n imports: [CommonModule],\n exports: [HtmlToPlainTextPipe],\n providers: [HtmlToPlainTextPipe],\n})\nexport class HtmlToPlainTextModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { UsanaPopoverComponent } from './popover/popover.component';\n\n@NgModule({\n declarations: [UsanaPopoverComponent],\n imports: [CommonModule, PopoverModule.forRoot()],\n exports: [PopoverModule, UsanaPopoverComponent],\n})\nexport class UsanaPopoverModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { EnhancedReplacePipe } from './enhanced-replace.pipe';\n\n@NgModule({\n declarations: [EnhancedReplacePipe],\n imports: [CommonModule],\n exports: [EnhancedReplacePipe],\n})\nexport class EnhancedReplaceModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReplacePipe } from './replace.pipe';\n\n@NgModule({\n declarations: [ReplacePipe],\n imports: [CommonModule],\n exports: [ReplacePipe],\n})\nexport class ReplaceModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FaIconLibrary, FontAwesomeModule } from '@fortawesome/angular-fontawesome';\nimport {\n IconDefinition,\n faArrowDown,\n faArrowLeft,\n faArrowRight,\n faArrowUp,\n faBan,\n faCheckCircle,\n faChevronDown,\n faChevronLeft,\n faChevronRight,\n faChevronUp,\n faExclamationTriangle,\n faInfoCircle,\n faQuestionCircle,\n faSearch,\n faTimes,\n faTrashAlt,\n} from '@fortawesome/pro-solid-svg-icons';\n\n@NgModule({\n declarations: [],\n imports: [CommonModule, FontAwesomeModule],\n exports: [FontAwesomeModule],\n})\nexport class CommonIconsModule {\n readonly COMMON_ICONS: IconDefinition[] = [\n faInfoCircle,\n faQuestionCircle,\n faCheckCircle,\n faExclamationTriangle,\n faTimes,\n faChevronUp,\n faChevronDown,\n faChevronLeft,\n faChevronRight,\n faArrowRight,\n faArrowLeft,\n faArrowUp,\n faArrowDown,\n faSearch,\n faTrashAlt,\n faBan,\n ];\n\n constructor(faLibrary: FaIconLibrary) {\n faLibrary.addIcons(...this.COMMON_ICONS);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { filter, take } from 'rxjs/operators';\nimport { TaskTrackerPageTask } from '../models/task-tracker-page-task';\nimport { TaskTrackerService } from './task-tracker.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TaskTrackerNavigationTaskService {\n readonly HUB_NAVIGATION_TASKS: TaskTrackerPageTask[] = [\n {\n urlTest: (url: string) => url === '/followMeSettings',\n taskKey: 'PERSONALIZE_WEBSITE',\n },\n {\n urlTest: (url: string) => url.startsWith('/content/trainingCellSentials'),\n taskKey: 'VISIT_CELLSENTIALS_TRAINING',\n },\n {\n urlTest: (url: string) => url.startsWith('/content/TrainingProflavanolC100'),\n taskKey: 'VISIT_PROFLAVANOL_TRAINING',\n },\n {\n urlTest: (url: string) => url.startsWith('/content/TrainingBiOmega'),\n taskKey: 'VISIT_BIOMEGA_TRAINING',\n },\n ];\n\n constructor(router: Router, taskTrackerService: TaskTrackerService) {\n router.events.pipe(filter((event) => event instanceof NavigationEnd)).subscribe((event: NavigationEnd) => {\n const matchingNavigationTask = this.HUB_NAVIGATION_TASKS.find((trackedPage) => trackedPage.urlTest(event.url));\n\n if (matchingNavigationTask) {\n taskTrackerService.completeTask(matchingNavigationTask.taskKey).pipe(take(1)).subscribe();\n }\n });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AnalyticsModule } from '@common/analytics/analytics.module';\nimport { AuthenticationModule } from '@common/authentication/authentication.module';\nimport { TranslationModule } from '@common/translation/translation.module';\nimport { NgxsModule } from '@ngxs/store';\nimport { LoadingSpinnerModule } from '@shared/loading-spinner/loading-spinner.module';\nimport { EnhancedReplaceModule } from '@shared/pipes/enhanced-replace/enhanced-replace.module';\nimport { ReplaceModule } from '@shared/pipes/replace/replace.module';\nimport { environment } from '../../../../../environments/environment';\nimport { CommonIconsModule } from '../../../../common/src/common-icons/common-icons.module';\nimport { ProgressPercentIndicatorComponent } from './components/progress-percent-indicator/progress-percent-indicator.component';\nimport { TaskTrackerItemComponent } from './components/task-tracker-item/task-tracker-item.component';\nimport { TaskTrackerWidgetContainerComponent } from './components/task-tracker-widget-container/task-tracker-widget-container.component';\nimport { TaskTrackerWidgetSkeletonLoaderComponent } from './components/task-tracker-widget/task-tracker-widget-skeleton-loader/task-tracker-widget-skeleton-loader.component';\nimport { TaskTrackerWidgetComponent } from './components/task-tracker-widget/task-tracker-widget.component';\nimport { OrderTasksPipe } from './pipes/order-tasks.pipe';\nimport { TaskTrackerNavigationTaskService } from './services/task-tracker-navigation-task.service';\nimport { TaskTrackerState } from './state/task-tracker.state';\nimport { TASK_TRACKER_SERVICE_URL } from './task-tracker-widget.tokens';\n\n@NgModule({\n declarations: [\n TaskTrackerWidgetComponent,\n TaskTrackerWidgetContainerComponent,\n ProgressPercentIndicatorComponent,\n TaskTrackerItemComponent,\n OrderTasksPipe,\n TaskTrackerWidgetSkeletonLoaderComponent,\n ],\n imports: [\n CommonModule,\n AuthenticationModule,\n NgxsModule.forFeature([TaskTrackerState]),\n LoadingSpinnerModule,\n ReplaceModule,\n EnhancedReplaceModule,\n TranslationModule,\n AnalyticsModule,\n CommonIconsModule,\n ],\n providers: [\n {\n provide: TASK_TRACKER_SERVICE_URL,\n useValue: environment.taskTrackerServiceUrl,\n },\n ],\n exports: [TaskTrackerWidgetContainerComponent],\n})\nexport class TaskTrackerWidgetModule {\n constructor(_navigationTaskService: TaskTrackerNavigationTaskService) {}\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'u-cms-usana-news-landing',\n templateUrl: './usana-news-landing.component.html',\n})\nexport class CmsUsanaNewsLandingComponent {}\n","
\n
\n
\n \n
\n
\n \n
\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { AnalyticsModule } from '@common/analytics/analytics.module';\nimport { CmsChildEditMenuComponent } from '@common/cms/cms-child-edit-menu/cms-child-edit-menu.component';\nimport { CmsLinkComponent } from '@common/cms/cms-link/cms-link.component';\nimport { ContainerEditMenuComponent } from '@common/cms/container-edit-menu/container-edit-menu.component';\nimport { CmsHubBannerSliderContainerComponent } from '@common/cms/containers/banner-slider/cms-hub-banner-slider-container.component';\nimport { CmsColumnedContainerComponent } from '@common/cms/containers/columned/cms-columned-container.component';\nimport { CmsGalleryContainerComponent } from '@common/cms/containers/gallery/cms-gallery-container.component';\nimport { CmsSlideContainerComponent } from '@common/cms/containers/slide/cms-slide-container.component';\nimport { CmsHubBannerSliderItemComponent } from '@common/cms/items/banner-item/cms-hub-banner-slider-item.component';\nimport { CmsItemComponent } from '@common/cms/items/cms-item.component';\nimport { CmsContestOptInComponent } from '@common/cms/items/contest-opt-in/cms-contest-opt-in.component';\nimport { MiniCardCarouselComponent } from '@common/cms/items/mini-card-carousel/mini-card-carousel.component';\nimport { CmsSlideItemComponent } from '@common/cms/items/slide/cms-slide-item.component';\nimport { CmsTitledItemComponent } from '@common/cms/items/titled-item/cms-titled-item.component';\nimport { CmsPageComponent } from '@common/cms/page/cms-page.component';\nimport { CmsLinkService } from '@common/cms/services/cms-link.service';\nimport { CmsState } from '@common/cms/state/cms.state';\nimport { ContestServiceModule } from '@common/contest/contest-service.module';\nimport { TranslationModule } from '@common/translation/translation.module';\nimport { NgxsModule } from '@ngxs/store';\nimport { BreadCrumbModule } from '@shared/bread-crumb/bread-crumb.module';\nimport { HtmlToPlainTextModule } from '@shared/pipes/html-to-plain-text/html-to-plain-text.module';\nimport { InterpolationPipeModule } from '@shared/pipes/interpolate/interpolate.module';\nimport { UnsafeModule } from '@shared/pipes/unsafe/unsafe.module';\nimport { UsanaPopoverModule } from '@shared/popover/popover.module';\nimport { UniversalLoadingButtonModule } from '@usana/ux/universal-components/button';\nimport { UniversalLoadingSpinnerModule } from '@usana/ux/universal-components/loading-spinner';\nimport { CarouselModule } from 'ngx-bootstrap/carousel';\nimport { TaskTrackerWidgetModule } from '../../../usana/src/app/task-tracker-widget/task-tracker-widget.module';\nimport { CommonIconsModule } from '../common-icons/common-icons.module';\nimport { CmsAddButtonComponent } from './cms-add-button/cms-add-button.component';\nimport { CmsBasicContainerComponent } from './cms-basic-container/cms-basic-container.component';\nimport { CmsBasicItemComponent } from './cms-basic-item/cms-basic-item.component';\nimport { CmsGroupContainerComponent } from './cms-group-container/cms-group-container.component';\nimport { CmsGroupPageComponent } from './cms-group-page/cms-group-page.component';\nimport { CmsHubNavBlockContainerComponent } from './cms-hub-nav-block-container/cms-hub-nav-block-container.component';\nimport { CmsHubNavItemComponent } from './cms-hub-nav-item/cms-hub-nav-item.component';\nimport { CmsHubNavSubgroupContainerComponent } from './cms-hub-nav-subgroup-container/cms-hub-nav-subgroup-container.component';\nimport { CmsImageLinkItemComponent } from './cms-image-link-item/cms-image-link-item.component';\nimport { CmsLinkItemComponent } from './cms-link-item/cms-link-item.component';\nimport { CmsPanelContainerComponent } from './cms-panel-container/cms-panel-container.component';\nimport { CmsSideNavComponent } from './cms-side-nav/cms-side-nav.component';\nimport { CmsContestStatPageComponent } from './cms-stat-page/cms-contest-stat-page.component';\nimport { CmsTaskTrackerComponent } from './cms-task-tracker/cms-task-tracker.component';\nimport { CmsUsanaNewsContainerComponent } from './news/usana-news-container.component';\nimport { CmsUsanaNewsItemComponent } from './news/usana-news-item.component';\nimport { CmsUsanaNewsLandingItemComponent } from './news/usana-news-landing-item.component';\nimport { CmsUsanaNewsLandingComponent } from './news/usana-news-landing.component';\n\nconst components = [\n CmsItemComponent,\n CmsPageComponent,\n CmsAddButtonComponent,\n CmsBasicContainerComponent,\n CmsBasicItemComponent,\n CmsGroupContainerComponent,\n CmsGroupPageComponent,\n CmsImageLinkItemComponent,\n CmsLinkComponent,\n CmsLinkItemComponent,\n CmsChildEditMenuComponent,\n ContainerEditMenuComponent,\n CmsHubBannerSliderContainerComponent,\n CmsHubBannerSliderItemComponent,\n CmsHubNavBlockContainerComponent,\n CmsHubNavItemComponent,\n CmsHubNavSubgroupContainerComponent,\n CmsSideNavComponent,\n MiniCardCarouselComponent,\n CmsColumnedContainerComponent,\n CmsGalleryContainerComponent,\n CmsPanelContainerComponent,\n CmsSlideContainerComponent,\n CmsSlideItemComponent,\n CmsContestStatPageComponent,\n CmsTaskTrackerComponent,\n CmsTitledItemComponent,\n CmsUsanaNewsContainerComponent,\n CmsUsanaNewsItemComponent,\n CmsUsanaNewsLandingComponent,\n CmsUsanaNewsLandingItemComponent,\n CmsContestOptInComponent,\n];\n\n@NgModule({\n declarations: [...components],\n imports: [\n CommonModule,\n RouterModule,\n CarouselModule.forRoot(),\n NgxsModule.forFeature([CmsState]),\n UsanaPopoverModule,\n InterpolationPipeModule,\n HtmlToPlainTextModule,\n UnsafeModule,\n BreadCrumbModule,\n TranslationModule,\n UniversalLoadingSpinnerModule,\n UniversalLoadingButtonModule,\n ContestServiceModule,\n AnalyticsModule,\n CommonIconsModule,\n TaskTrackerWidgetModule,\n ],\n exports: [...components],\n providers: [CmsLinkService],\n})\nexport class CmsModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { CardsHorizontalComponent } from './cards-horizontal/cards-horizontal.component';\n\n@NgModule({\n declarations: [CardsHorizontalComponent],\n exports: [CardsHorizontalComponent],\n imports: [CommonModule],\n})\nexport class CardsHorizontalModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AnalyticsModule } from '@common/analytics/analytics.module';\nimport { CmsModule } from '@common/cms/cms.module';\nimport { TranslationModule } from '@common/translation/translation.module';\nimport { UnsafeModule } from '@shared/pipes/unsafe/unsafe.module';\nimport { CommonIconsModule } from '../../../common/src/common-icons/common-icons.module';\nimport { CardsComponent } from './cards/cards.component';\n\n@NgModule({\n declarations: [CardsComponent],\n exports: [CardsComponent],\n imports: [CommonModule, UnsafeModule, CmsModule, TranslationModule, AnalyticsModule, CommonIconsModule],\n})\nexport class CardsModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { CmsModule } from '@common/cms/cms.module';\nimport { BreadCrumbModule } from '@shared/bread-crumb/bread-crumb.module';\nimport { CardsHorizontalModule } from '@shared/cards-horizontal/cards-horizontal.module';\nimport { CardsModule } from '@shared/cards/cards.module';\nimport { CommonIconsModule } from '../../common-icons/common-icons.module';\nimport { RelatedStoriesContainerComponent } from './related-stories/related-stories-container/related-stories-container.component';\nimport { RelatedStoriesItemComponent } from './related-stories/related-stories-item/related-stories-item.component';\nimport { TrainingSubCategoryContainerComponent } from './training-sub-category/training-sub-category-container/training-sub-category-container.component';\nimport { TrainingSubCategoryItemComponent } from './training-sub-category/training-sub-category-item/training-sub-category-item.component';\n\nconst components = [\n RelatedStoriesItemComponent,\n RelatedStoriesContainerComponent,\n TrainingSubCategoryContainerComponent,\n TrainingSubCategoryItemComponent,\n];\n\n@NgModule({\n declarations: components,\n imports: [BreadCrumbModule, CommonModule, CardsModule, CardsHorizontalModule, CmsModule, CommonIconsModule],\n})\nexport class TrainingCardsModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TranslationModule } from '@common/translation/translation.module';\nimport { InterpolationPipeModule } from '@shared/pipes/interpolate/interpolate.module';\nimport { CommonIconsModule } from '../common-icons/common-icons.module';\nimport { MyAccountDetailsComponent } from './my-account-details/my-account-details.component';\nimport { MyAccountIconComponent } from './my-account-icon/my-account-icon.component';\nimport { MyAccountListComponent } from './my-account-list/my-account-list.component';\n\n@NgModule({\n declarations: [MyAccountListComponent, MyAccountIconComponent, MyAccountDetailsComponent],\n imports: [CommonModule, InterpolationPipeModule, TranslationModule, CommonIconsModule],\n exports: [MyAccountIconComponent],\n})\nexport class MyAccountModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { UserProfileState } from '@common/authentication/state/user-profile.state';\nimport { NgxsModule } from '@ngxs/store';\nimport { UsanaDatePipe } from './usana-date.pipe';\n\n@NgModule({\n declarations: [UsanaDatePipe],\n imports: [CommonModule, NgxsModule.forFeature([UserProfileState])],\n exports: [UsanaDatePipe],\n})\nexport class UsanaDatePipeModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TranslationModule } from '@common/translation/translation.module';\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\nimport { CommonIconsModule } from '../../../common/src/common-icons/common-icons.module';\nimport { UsanaDropdownComponent } from './dropdown.component';\nimport { UsanaDropdownDirective } from './dropdown.directive';\n\n@NgModule({\n declarations: [UsanaDropdownComponent, UsanaDropdownDirective],\n imports: [CommonModule, BsDropdownModule.forRoot(), TranslationModule, CommonIconsModule],\n exports: [UsanaDropdownComponent, UsanaDropdownDirective],\n})\nexport class UsanaDropdownModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { CommonIconsModule } from '@common/common-icons/common-icons.module';\nimport { UsanaDropdownModule } from '@shared/dropdown/dropdown.module';\nimport { ModalModule } from 'ngx-bootstrap/modal';\nimport { SideModalContainerComponent } from './side-modal-container/side-modal-container.component';\nimport { SideModalComponent } from './side-modal/side-modal.component';\n\n@NgModule({\n declarations: [SideModalComponent, SideModalContainerComponent],\n imports: [CommonModule, ModalModule.forRoot(), BrowserAnimationsModule, CommonIconsModule, UsanaDropdownModule],\n exports: [SideModalContainerComponent],\n})\nexport class SideModalModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { UsanaDatePipeModule } from '@common/custom-locale-pipes/usana-date-pipe/usana-date-pipe.module';\nimport { NotificationListItemComponent } from '@common/notifications/notification-list-item/notification-list-item.component';\nimport { UnsafeModule } from '@shared/pipes/unsafe/unsafe.module';\nimport { SideModalModule } from '@shared/side-modal/side-modal.module';\nimport { CommonIconsModule } from '../../common-icons/common-icons.module';\n\n@NgModule({\n declarations: [NotificationListItemComponent],\n imports: [CommonModule, SideModalModule, UnsafeModule, UsanaDatePipeModule, CommonIconsModule],\n exports: [NotificationListItemComponent],\n})\nexport class NotificationListItemModule {}\n","import * as i0 from '@angular/core';\nimport { EventEmitter, Directive, Input, Output, Component, ChangeDetectionStrategy, ViewChild, NgModule } from '@angular/core';\nimport * as i1 from '@usana/ux/universal-components/base';\nimport { UniversalBaseComponent, UniversalBaseModule } from '@usana/ux/universal-components/base';\nimport { CommonModule } from '@angular/common';\n\nvar ForcedInputState;\n(function (ForcedInputState) {\n ForcedInputState[\"NONE\"] = \"none\";\n ForcedInputState[\"VALID\"] = \"valid\";\n ForcedInputState[\"INVALID\"] = \"invalid\";\n})(ForcedInputState || (ForcedInputState = {}));\n\nclass FormInputData {\n}\n\n/* eslint @angular-eslint/no-input-rename: 0 */\n// --> OFF\nclass UniversalBaseInputComponent extends UniversalBaseComponent {\n constructor(dataTransformWrapperService, changeDetectorRef, differs) {\n super(dataTransformWrapperService, changeDetectorRef, differs);\n this.dataTransformWrapperService = dataTransformWrapperService;\n this.changeDetectorRef = changeDetectorRef;\n this.valueChanged = new EventEmitter();\n this.aFormOnTouched = () => { };\n this.aFormOnChange = (value) => { };\n }\n processData() {\n super.processData();\n this.name = this.data.id; // id by default, but id must me unique for each radio button with the same name\n if (this.data.name) {\n this.name = this.data.name;\n }\n this.forcedAttr = this.forcedStateToAttribute();\n this.required = this.data.required === true;\n this.autofocus = this.data.autofocus === true;\n }\n // angular form functions\n registerOnTouched(onTouched) {\n this.aFormOnTouched = onTouched;\n }\n registerOnChange(onChange) {\n this.aFormOnChange = onChange;\n }\n bubbleValueChange(event) {\n this.valueChanged.emit(event);\n this.markTouched();\n if (this.aFormOnChange) {\n this.aFormOnChange(event);\n }\n }\n markTouched() {\n if (!this.aFormTouched && this.aFormOnTouched) {\n this.aFormOnTouched();\n this.aFormTouched = true;\n }\n }\n validate(control) {\n if (this.data.validationFn) {\n return this.data.validationFn(control);\n }\n }\n forcedStateToAttribute() {\n switch (this.data.forcedState) {\n case ForcedInputState.VALID:\n return 'valid';\n case ForcedInputState.INVALID:\n return 'invalid';\n case ForcedInputState.NONE:\n return 'none';\n default:\n return '';\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalBaseInputComponent, deps: [{ token: i1.DataTransformWrapperService }, { token: i0.ChangeDetectorRef }, { token: i0.KeyValueDiffers }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: UniversalBaseInputComponent, inputs: { placeholder: \"placeholder\", message: \"message\", label: \"label\" }, outputs: { valueChanged: \"valueChanged\" }, usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalBaseInputComponent, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: i1.DataTransformWrapperService }, { type: i0.ChangeDetectorRef }, { type: i0.KeyValueDiffers }]; }, propDecorators: { placeholder: [{\n type: Input\n }], message: [{\n type: Input\n }], label: [{\n type: Input\n }], valueChanged: [{\n type: Output\n }] } });\n\nclass FormInputTextBaseComponent extends UniversalBaseInputComponent {\n set input(element) {\n if (element && this.autofocus) {\n element.nativeElement.focus();\n }\n }\n writeValue(obj) {\n this.value = obj;\n this.data.value = obj;\n }\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n textChange(event) {\n // we have to have a separate value and data.value\n // because we have child components that need to have\n // an internal representation (MaskedInput)\n this.writeValue(event);\n this.bubbleValueChange(event);\n }\n processData() {\n super.processData();\n this.value = this.data.value;\n }\n toggleBtn() {\n // by default does nothing\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: FormInputTextBaseComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.2.12\", type: FormInputTextBaseComponent, selector: \"universal-form-input-base\", viewQueries: [{ propertyName: \"input\", first: true, predicate: [\"inputBox\"], descendants: true }], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: FormInputTextBaseComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'universal-form-input-base',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '',\n }]\n }], propDecorators: { input: [{\n type: ViewChild,\n args: ['inputBox', { static: false }]\n }] } });\n\nclass UniversalFormInputTextBaseModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalFormInputTextBaseModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalFormInputTextBaseModule, declarations: [FormInputTextBaseComponent], imports: [CommonModule, UniversalBaseModule], exports: [FormInputTextBaseComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalFormInputTextBaseModule, imports: [CommonModule, UniversalBaseModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalFormInputTextBaseModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [FormInputTextBaseComponent],\n imports: [CommonModule, UniversalBaseModule],\n exports: [FormInputTextBaseComponent],\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ForcedInputState, FormInputData, FormInputTextBaseComponent, UniversalBaseInputComponent, UniversalFormInputTextBaseModule };\n","import { UsanaLoggingService } from '@usana/ux/common/logging';\n\nclass RegexCacheService {\n static { this.compiledPatterns = {}; }\n static buildRegex(regexStr, flags) {\n const cacheKey = `${regexStr}__${flags}`;\n if (!this.compiledPatterns[cacheKey]) {\n UsanaLoggingService.logMsg(`caching regex ${cacheKey}`, true);\n this.compiledPatterns[cacheKey] = new RegExp(regexStr, flags);\n }\n return this.compiledPatterns[cacheKey];\n }\n}\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { RegexCacheService };\n","import * as i0 from '@angular/core';\nimport { Pipe, SecurityContext, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RegexCacheService } from '@usana/ux/common/regex';\nimport * as i1 from '@angular/platform-browser';\n\nclass MaskDigitsPipe {\n transform(original, unmaskedDigits = 4) {\n if (!original || unmaskedDigits < 0) {\n return original;\n }\n if (unmaskedDigits === 0) {\n return ''.padEnd(original.length, '*');\n }\n let digitsToShow = unmaskedDigits;\n if (unmaskedDigits < 1) {\n // a percentage\n digitsToShow = Math.floor(original.length * unmaskedDigits);\n }\n return original.replace(RegexCacheService.buildRegex('.(?=.{' + digitsToShow + '})', 'g'), '*');\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: MaskDigitsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: MaskDigitsPipe, name: \"maskDigits\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: MaskDigitsPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'maskDigits',\n pure: true,\n }]\n }] });\n\nclass SafeHtmlPipe {\n constructor(sanitizer) {\n this.sanitizer = sanitizer;\n }\n transform(htmlText) {\n if (!htmlText) {\n return htmlText;\n }\n return this.sanitizer.bypassSecurityTrustHtml(htmlText);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: SafeHtmlPipe, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: SafeHtmlPipe, name: \"safeHtml\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: SafeHtmlPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'safeHtml' }]\n }], ctorParameters: function () { return [{ type: i1.DomSanitizer }]; } });\n\nclass SafeUrlPipe {\n constructor(sanitizer) {\n this.sanitizer = sanitizer;\n }\n transform(url) {\n if (!url) {\n return url;\n }\n return this.sanitizer.bypassSecurityTrustResourceUrl(url);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: SafeUrlPipe, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: SafeUrlPipe, name: \"safeUrl\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: SafeUrlPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'safeUrl' }]\n }], ctorParameters: function () { return [{ type: i1.DomSanitizer }]; } });\n\nclass UnsafePipe {\n constructor(domSanitizer) {\n this.domSanitizer = domSanitizer;\n }\n transform(value, type) {\n if (!value) {\n return value;\n }\n switch (type) {\n case 'html':\n return this.domSanitizer.bypassSecurityTrustHtml(value);\n case 'style':\n return this.domSanitizer.bypassSecurityTrustStyle(value);\n case 'script':\n return this.domSanitizer.bypassSecurityTrustScript(value);\n case 'url':\n return this.domSanitizer.bypassSecurityTrustUrl(value);\n case 'resourceUrl':\n return this.domSanitizer.bypassSecurityTrustResourceUrl(value);\n default:\n return this.domSanitizer.sanitize(SecurityContext.HTML, value);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UnsafePipe, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: UnsafePipe, name: \"unsafe\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UnsafePipe, decorators: [{\n type: Pipe,\n args: [{ name: 'unsafe', pure: true }]\n }], ctorParameters: function () { return [{ type: i1.DomSanitizer }]; } });\n\nconst pipes = [SafeUrlPipe, SafeHtmlPipe, MaskDigitsPipe, UnsafePipe];\nclass CommonPipesModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: CommonPipesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: CommonPipesModule, declarations: [SafeUrlPipe, SafeHtmlPipe, MaskDigitsPipe, UnsafePipe], imports: [CommonModule], exports: [SafeUrlPipe, SafeHtmlPipe, MaskDigitsPipe, UnsafePipe] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: CommonPipesModule, imports: [CommonModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: CommonPipesModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: pipes,\n imports: [CommonModule],\n exports: pipes,\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CommonPipesModule, MaskDigitsPipe, SafeHtmlPipe, SafeUrlPipe, UnsafePipe };\n","import * as i0 from '@angular/core';\nimport { Component, ChangeDetectionStrategy, NgModule, Injectable, Optional, Directive, Input, EventEmitter, Output, HostListener, ViewChild, forwardRef } from '@angular/core';\nimport * as i1$1 from '@usana/ux/universal-components/base';\nimport { UniversalBaseComponent as UniversalBaseComponent$1, UniversalBaseModule } from '@usana/ux/universal-components/base';\nimport * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i4 from '@usana/ux/universal-components/button';\nimport { UniversalButtonModule, UniversalLoadingButtonModule, UniversalDropdownButtonModule } from '@usana/ux/universal-components/button';\nimport * as i1$2 from '@angular/common/http';\nimport { HttpClientModule } from '@angular/common/http';\nimport 'rxjs/operators';\nimport { UniversalConfirmationModalModule } from '@usana/ux/universal-components/confirmation-modal';\nimport * as i2 from '@fortawesome/angular-fontawesome';\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\nimport { faBan, faExclamationTriangle, faInfoCircle, faCheck } from '@fortawesome/free-solid-svg-icons';\nimport * as i3$1 from '@angular/forms';\nimport { NG_VALUE_ACCESSOR, NG_VALIDATORS, FormsModule } from '@angular/forms';\nimport { UniversalBaseInputComponent as UniversalBaseInputComponent$1, FormInputTextBaseComponent as FormInputTextBaseComponent$1, UniversalFormInputTextBaseModule as UniversalFormInputTextBaseModule$1, FormInputData as FormInputData$1 } from '@usana/ux/universal-components/input/base';\nimport * as i3 from '@usana/ux/common/directives';\nimport { ClickEscapeModule, ClickOutsideModule } from '@usana/ux/common/directives';\nimport * as i2$1 from '@usana/ux/common/pipes';\nimport { MaskDigitsPipe, CommonPipesModule } from '@usana/ux/common/pipes';\nimport { UniversalBasePopperComponent, UniversalPopperModule } from '@usana/ux/universal-components/popper';\nimport { UsanaSsrModule } from '@usana/ux/ssr';\nimport { UniversalLoadingSpinnerModule as UniversalLoadingSpinnerModule$1 } from '@usana/ux/universal-components/loading-spinner';\nimport { RegexCacheService } from '@usana/ux/common/regex';\n\nclass AlertComponent extends UniversalBaseComponent$1 {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: AlertComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.2.12\", type: AlertComponent, selector: \"universal-alert\", usesInheritance: true, ngImport: i0, template: \"
\\n {{data.alertType}} \\n {{data.alert}} \\n {{data.actionItem}}\\n
\\n\", styles: [\"body{font-size:16px;line-height:24px;text-align:start;font-style:normal;font-weight:400;font-family:Lato;margin:0}h1{font-size:48px;line-height:56px;text-align:start;color:#353535;font-style:normal;font-weight:800;font-family:Lato}h2{font-size:40px;line-height:48px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:32px;line-height:40px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:24px;line-height:32px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}@media (max-width: 800px){h1{font-size:48px;line-height:56px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h2{font-size:32px;line-height:40px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:16px;line-height:20px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:16px;line-height:20px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}}main{display:flex;flex-direction:column;align-items:center}body{overflow-x:hidden}:focus{outline:none}.modal.full-modal .modal-dialog{width:95%;min-width:95%}.alert-large-success{background-color:#d4eb8e;border:solid 1px #4a7729;border-radius:4px;padding:16px}.alert-medium-success{background-color:#d4eb8e;border:solid 1px #4a7729;border-radius:4px;padding:12px 16px}.alert-small-success{background-color:#d4eb8e;border:solid 1px #4a7729;border-radius:4px;padding:8px 16px}.alert-large-warning{background-color:#f8e59a;border:solid 1px #d45d00;border-radius:4px;padding:16px}.alert-medium-warning{background-color:#f8e59a;border:solid 1px #d45d00;border-radius:4px;padding:12px 16px}.alert-small-warning{background-color:#f8e59a;border:solid 1px #d45d00;border-radius:4px;padding:8px 16px}.alert-large-danger{background-color:#fabbcb;border:solid 1px #d22630;border-radius:4px;padding:16px}.alert-medium-danger{background-color:#fabbcb;border:solid 1px #d22630;border-radius:4px;padding:12px 16px}.alert-small-danger{background-color:#fabbcb;border:solid 1px #d22630;border-radius:4px;padding:8px 16px}\\n\"], dependencies: [{ kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: AlertComponent, decorators: [{\n type: Component,\n args: [{ selector: 'universal-alert', changeDetection: ChangeDetectionStrategy.OnPush, template: \"
\\n {{data.alertType}} \\n {{data.alert}} \\n {{data.actionItem}}\\n
\\n\", styles: [\"body{font-size:16px;line-height:24px;text-align:start;font-style:normal;font-weight:400;font-family:Lato;margin:0}h1{font-size:48px;line-height:56px;text-align:start;color:#353535;font-style:normal;font-weight:800;font-family:Lato}h2{font-size:40px;line-height:48px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:32px;line-height:40px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:24px;line-height:32px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}@media (max-width: 800px){h1{font-size:48px;line-height:56px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h2{font-size:32px;line-height:40px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:16px;line-height:20px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:16px;line-height:20px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}}main{display:flex;flex-direction:column;align-items:center}body{overflow-x:hidden}:focus{outline:none}.modal.full-modal .modal-dialog{width:95%;min-width:95%}.alert-large-success{background-color:#d4eb8e;border:solid 1px #4a7729;border-radius:4px;padding:16px}.alert-medium-success{background-color:#d4eb8e;border:solid 1px #4a7729;border-radius:4px;padding:12px 16px}.alert-small-success{background-color:#d4eb8e;border:solid 1px #4a7729;border-radius:4px;padding:8px 16px}.alert-large-warning{background-color:#f8e59a;border:solid 1px #d45d00;border-radius:4px;padding:16px}.alert-medium-warning{background-color:#f8e59a;border:solid 1px #d45d00;border-radius:4px;padding:12px 16px}.alert-small-warning{background-color:#f8e59a;border:solid 1px #d45d00;border-radius:4px;padding:8px 16px}.alert-large-danger{background-color:#fabbcb;border:solid 1px #d22630;border-radius:4px;padding:16px}.alert-medium-danger{background-color:#fabbcb;border:solid 1px #d22630;border-radius:4px;padding:12px 16px}.alert-small-danger{background-color:#fabbcb;border:solid 1px #d22630;border-radius:4px;padding:8px 16px}\\n\"] }]\n }] });\n\nclass UniversalAlertModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalAlertModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalAlertModule, declarations: [AlertComponent], imports: [CommonModule, UniversalBaseModule], exports: [AlertComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalAlertModule, imports: [CommonModule, UniversalBaseModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalAlertModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [AlertComponent],\n imports: [CommonModule, UniversalBaseModule],\n exports: [AlertComponent],\n }]\n }] });\n\n// this is an abstract class and should be overwritten if you want to provide data transformations\n// see cms-core/CmsDataTransformService\nclass DataTransformService {\n}\n\n// import {UNIVERSAL_DATA_TRANSFORMER} from \"../universal-components.tokens\";\nclass DataTransformWrapperService {\n constructor(dataTransformService) {\n this.dataTransformService = dataTransformService;\n }\n processLink(url) {\n if (this.hasTransformService()) {\n return this.dataTransformService.processLink(url);\n }\n else {\n return url;\n }\n }\n hasTransformService() {\n return !!this.dataTransformService;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: DataTransformWrapperService, deps: [{ token: DataTransformService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: DataTransformWrapperService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: DataTransformWrapperService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: DataTransformService, decorators: [{\n type: Optional\n }] }]; } });\n\nclass UniversalBaseComponent {\n // DO NOT override data with a @input annotation unless you want to not have our own doCheck work\n /* eslint-disable @angular-eslint/no-input-rename */\n set dataSet(val) {\n this.data = val;\n if (!this._differ && val) {\n this._differ = this.differs.find(val).create();\n this.processData();\n }\n }\n constructor(dataTransformWrapperService, changeDetectorRef, differs) {\n this.dataTransformWrapperService = dataTransformWrapperService;\n this.changeDetectorRef = changeDetectorRef;\n this.differs = differs;\n this._differ = null;\n }\n ngDoCheck() {\n if (this._differ) {\n const changes = this._differ.diff(this.data);\n if (changes) {\n this.processData();\n this.changeDetectorRef.markForCheck();\n }\n }\n }\n processData() {\n if (this.data) {\n this.calculateAutomationId();\n }\n }\n getAutomationId(prefix) {\n return `${prefix}-${this._automationId}`;\n }\n processLink(linkData) {\n if (linkData && linkData.url) {\n return this.dataTransformWrapperService.processLink(linkData.url);\n }\n return undefined;\n }\n calculateAutomationId() {\n const automationIdInput = this.automationId || this.data?.automationId;\n if (!automationIdInput) {\n if (!this._automationId) {\n // lets make a random id, but only one time\n this._automationId = Date.now().toString(36) + Math.random().toString(36).substring(2);\n }\n }\n else {\n this._automationId = automationIdInput;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalBaseComponent, deps: [{ token: DataTransformWrapperService }, { token: i0.ChangeDetectorRef }, { token: i0.KeyValueDiffers }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: UniversalBaseComponent, inputs: { id: \"id\", automationId: \"automationId\", dataSet: [\"data\", \"dataSet\"] }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalBaseComponent, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: DataTransformWrapperService }, { type: i0.ChangeDetectorRef }, { type: i0.KeyValueDiffers }]; }, propDecorators: { id: [{\n type: Input\n }], automationId: [{\n type: Input\n }], dataSet: [{\n type: Input,\n args: ['data']\n }] } });\n\nclass UniversalBaseBackgroundingComponent extends UniversalBaseComponent {\n buildBackgroundStyle(bgKey) {\n const style = {};\n if (this.data[bgKey]) {\n // mobile background?\n for (const bgk of Object.keys(this.data[bgKey])) {\n if (this.data[bgKey][bgk]) {\n style['background-' + bgk] = this.data[bgKey][bgk];\n }\n }\n }\n // correct possible background image\n if (style['background-image'] && style['background-image'].indexOf('url(') < 0) {\n // eslint-disable-next-line quotes\n style['background-image'] = \"url('\" + style['background-image'] + \"')\";\n }\n return style;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalBaseBackgroundingComponent, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: UniversalBaseBackgroundingComponent, usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalBaseBackgroundingComponent, decorators: [{\n type: Directive\n }] });\n\nclass CardComponent extends UniversalBaseComponent {\n processData() {\n super.processData();\n this.linkUrl = this.processLink(this.data.link);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: CardComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.2.12\", type: CardComponent, selector: \"universal-card\", usesInheritance: true, ngImport: i0, template: \"
\\n
\\n \\\"\\\"\\n
\\n
\\n

\\n

\\n
\\n \\n {{data.link.text}}\\n \\n
\\n\", styles: [\"body{font-size:16px;line-height:24px;text-align:start;font-style:normal;font-weight:400;font-family:Lato;margin:0}h1{font-size:48px;line-height:56px;text-align:start;color:#353535;font-style:normal;font-weight:800;font-family:Lato}h2{font-size:40px;line-height:48px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:32px;line-height:40px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:24px;line-height:32px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}@media (max-width: 800px){h1{font-size:48px;line-height:56px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h2{font-size:32px;line-height:40px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:16px;line-height:20px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:16px;line-height:20px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}}main{display:flex;flex-direction:column;align-items:center}body{overflow-x:hidden}:focus{outline:none}.modal.full-modal .modal-dialog{width:95%;min-width:95%}.card{width:320px;background-color:#fff;margin-right:32px;max-width:380px;text-align:center;border-radius:3px;box-shadow:0 5px 10px #0000001a;padding-bottom:16px}.card img{width:100%;border-radius:3px 3px 0 0;transition:all ease-in-out .3s}.card:hover img{transform:scale(1.1)}.card .img-mask{overflow:hidden}.card h3{text-align:center}.card .content{padding:0 16px}.italics-font{font-size:16px;line-height:24px;text-align:start;font-style:italic;font-weight:400;font-family:Georgia}.prod-card-plp{margin-right:32px;min-width:300px;max-width:380px}.prod-card-plp .top-buttons{position:relative;z-index:99999}.prod-card-plp .top-buttons .space-around-flex-wrapper{width:100%;display:flex;justify-content:space-between}\\n\"], dependencies: [{ kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"component\", type: i4.ButtonComponent, selector: \"universal-button\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: CardComponent, decorators: [{\n type: Component,\n args: [{ selector: 'universal-card', changeDetection: ChangeDetectionStrategy.OnPush, template: \"
\\n
\\n \\\"\\\"\\n
\\n
\\n

\\n

\\n
\\n \\n {{data.link.text}}\\n \\n
\\n\", styles: [\"body{font-size:16px;line-height:24px;text-align:start;font-style:normal;font-weight:400;font-family:Lato;margin:0}h1{font-size:48px;line-height:56px;text-align:start;color:#353535;font-style:normal;font-weight:800;font-family:Lato}h2{font-size:40px;line-height:48px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:32px;line-height:40px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:24px;line-height:32px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}@media (max-width: 800px){h1{font-size:48px;line-height:56px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h2{font-size:32px;line-height:40px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:16px;line-height:20px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:16px;line-height:20px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}}main{display:flex;flex-direction:column;align-items:center}body{overflow-x:hidden}:focus{outline:none}.modal.full-modal .modal-dialog{width:95%;min-width:95%}.card{width:320px;background-color:#fff;margin-right:32px;max-width:380px;text-align:center;border-radius:3px;box-shadow:0 5px 10px #0000001a;padding-bottom:16px}.card img{width:100%;border-radius:3px 3px 0 0;transition:all ease-in-out .3s}.card:hover img{transform:scale(1.1)}.card .img-mask{overflow:hidden}.card h3{text-align:center}.card .content{padding:0 16px}.italics-font{font-size:16px;line-height:24px;text-align:start;font-style:italic;font-weight:400;font-family:Georgia}.prod-card-plp{margin-right:32px;min-width:300px;max-width:380px}.prod-card-plp .top-buttons{position:relative;z-index:99999}.prod-card-plp .top-buttons .space-around-flex-wrapper{width:100%;display:flex;justify-content:space-between}\\n\"] }]\n }] });\n\nclass CardSectionComponent extends UniversalBaseBackgroundingComponent {\n processData() {\n super.processData();\n this.style = this.buildBackgroundStyle('background');\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: CardSectionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.2.12\", type: CardSectionComponent, selector: \"universal-card-section\", usesInheritance: true, ngImport: i0, template: \"
\\n
\\n

\\n

\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n\", styles: [\"body{font-size:16px;line-height:24px;text-align:start;font-style:normal;font-weight:400;font-family:Lato;margin:0}h1{font-size:48px;line-height:56px;text-align:start;color:#353535;font-style:normal;font-weight:800;font-family:Lato}h2{font-size:40px;line-height:48px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:32px;line-height:40px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:24px;line-height:32px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}@media (max-width: 800px){h1{font-size:48px;line-height:56px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h2{font-size:32px;line-height:40px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:16px;line-height:20px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:16px;line-height:20px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}}main{display:flex;flex-direction:column;align-items:center}body{overflow-x:hidden}:focus{outline:none}.modal.full-modal .modal-dialog{width:95%;min-width:95%}.card-section{display:flex;justify-content:center}.section-card{display:flex;padding:40px}@media (max-width: 1440px){.section-card{width:100vw}}.card-slide-wrapper{overflow-x:scroll;display:flex;flex-direction:column;align-content:center}@media (max-width: 1440px){.card-slide-wrapper{width:100vw}}h2{text-align:center!important;margin-bottom:48px}\\n\"], dependencies: [{ kind: \"directive\", type: i1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"component\", type: CardComponent, selector: \"universal-card\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: CardSectionComponent, decorators: [{\n type: Component,\n args: [{ selector: 'universal-card-section', changeDetection: ChangeDetectionStrategy.OnPush, template: \"
\\n
\\n

\\n

\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n\", styles: [\"body{font-size:16px;line-height:24px;text-align:start;font-style:normal;font-weight:400;font-family:Lato;margin:0}h1{font-size:48px;line-height:56px;text-align:start;color:#353535;font-style:normal;font-weight:800;font-family:Lato}h2{font-size:40px;line-height:48px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:32px;line-height:40px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:24px;line-height:32px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}@media (max-width: 800px){h1{font-size:48px;line-height:56px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h2{font-size:32px;line-height:40px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:16px;line-height:20px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:16px;line-height:20px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}}main{display:flex;flex-direction:column;align-items:center}body{overflow-x:hidden}:focus{outline:none}.modal.full-modal .modal-dialog{width:95%;min-width:95%}.card-section{display:flex;justify-content:center}.section-card{display:flex;padding:40px}@media (max-width: 1440px){.section-card{width:100vw}}.card-slide-wrapper{overflow-x:scroll;display:flex;flex-direction:column;align-content:center}@media (max-width: 1440px){.card-slide-wrapper{width:100vw}}h2{text-align:center!important;margin-bottom:48px}\\n\"] }]\n }] });\n\nclass UniversalCardSectionModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalCardSectionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalCardSectionModule, declarations: [CardComponent, CardSectionComponent], imports: [CommonModule, UniversalButtonModule, UniversalBaseModule], exports: [CardSectionComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalCardSectionModule, imports: [CommonModule, UniversalButtonModule, UniversalBaseModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalCardSectionModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [CardComponent, CardSectionComponent],\n imports: [CommonModule, UniversalButtonModule, UniversalBaseModule],\n exports: [CardSectionComponent],\n }]\n }] });\n\nclass CoverSliderComponent extends UniversalBaseComponent$1 {\n constructor(dataTransformWrapperService, changeDetectorRef, differs) {\n super(dataTransformWrapperService, changeDetectorRef, differs);\n this.dataTransformWrapperService = dataTransformWrapperService;\n this.changeDetectorRef = changeDetectorRef;\n this.slideButtonClicked = new EventEmitter();\n // for whatever reason testing doesn't work because of our @Output annotation unless we manually call parent constructor\n }\n processData() {\n super.processData();\n this.links = [];\n this.styles = [];\n if (this.data.slides) {\n for (const slide of this.data.slides) {\n this.links.push(this.processLink(slide.link));\n this.styles.push({\n background: 'url(' + slide.img + ')',\n 'background-repeat': 'no-repeat',\n 'background-size': 'cover',\n 'background-position-x': 'center',\n });\n }\n }\n else {\n this.data.slides = [];\n }\n if (this.data.slideTime !== this.slideIntervalLength) {\n this.resetInterval();\n }\n if (this.sliderIdx > this.data.slides.length) {\n this.sliderIdx = 0;\n }\n }\n slideTo(idx) {\n if (idx >= this.data.slides.length) {\n idx = 0;\n }\n this.sliderIdx = idx;\n this.changeDetectorRef.detectChanges();\n }\n selectSlide(idx) {\n if (idx !== this.sliderIdx) {\n this.resetInterval();\n this.slideTo(idx);\n }\n }\n prevSlide() {\n let idx = this.sliderIdx - 1;\n if (idx < 0) {\n idx = this.data.slides.length - 1;\n }\n this.sliderIdx = idx;\n this.resetInterval();\n }\n nextSlide() {\n let idx = this.sliderIdx + 1;\n if (idx >= this.data.slides.length) {\n idx = 0;\n }\n this.sliderIdx = idx;\n this.resetInterval();\n }\n clickSlideButton(idx) {\n this.slideButtonClicked.emit(this.links[idx]);\n }\n ngOnInit() {\n this.selectSlide(0);\n }\n ngOnDestroy() {\n this.stopInterval();\n }\n resetInterval() {\n this.stopInterval();\n this.slideIntervalLength = this.data.slideTime;\n if (!this.slideIntervalLength) {\n this.slideIntervalLength = 100000;\n }\n if (this.slideIntervalLength > 0) {\n this.slideInterval = setInterval(() => {\n this.slideTo(this.sliderIdx + 1);\n }, this.slideIntervalLength);\n }\n }\n stopInterval() {\n if (!!this.slideInterval) {\n clearInterval(this.slideInterval);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: CoverSliderComponent, deps: [{ token: i1$1.DataTransformWrapperService }, { token: i0.ChangeDetectorRef }, { token: i0.KeyValueDiffers }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.2.12\", type: CoverSliderComponent, selector: \"universal-cover-slider\", outputs: { slideButtonClicked: \"slideButtonClicked\" }, usesInheritance: true, ngImport: i0, template: \"
\\n
\\n\\n
\\n
\\n \\n
\\n\\n
\\n
    \\n
  • \\n
    \\n
  • \\n
\\n
\\n
\\n Previous\\n Next\\n
\\n\", styles: [\"body{font-size:16px;line-height:24px;text-align:start;font-style:normal;font-weight:400;font-family:Lato;margin:0}h1{font-size:48px;line-height:56px;text-align:start;color:#353535;font-style:normal;font-weight:800;font-family:Lato}h2{font-size:40px;line-height:48px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:32px;line-height:40px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:24px;line-height:32px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}@media (max-width: 800px){h1{font-size:48px;line-height:56px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h2{font-size:32px;line-height:40px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:16px;line-height:20px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:16px;line-height:20px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}}main{display:flex;flex-direction:column;align-items:center}body{overflow-x:hidden}:focus{outline:none}.modal.full-modal .modal-dialog{width:95%;min-width:95%}.cover-slider-wrapper,.cover-slider{position:relative}.cover-slider h2{line-height:32px;margin:12px 0}.cover-slider h3{line-height:24px;margin:24px 0}@media (max-width: 800px){.cover-slider{height:100vh;padding:0;background-position-x:65%!important}.cover-slider h2{margin-top:48px;line-height:32px}}.left{display:flex;flex-direction:column;justify-content:center;align-items:flex-start;height:800px;margin-left:80px;text-align:left}@media (max-width: 800px){.left{height:700px;margin-left:24px}}.right{display:flex;flex-direction:column;justify-content:center;align-items:flex-end;height:800px;margin-right:80px;text-align:right}@media (max-width: 800px){.right{height:700px;margin-right:24px}}.right h2,.right h3{text-align:right}.center{display:flex;flex-direction:column;justify-content:center;align-items:center;height:800px;text-align:center}.center h2,.center h3{text-align:center}@media (max-width: 800px){.center{height:700px}}.sliderSelector{z-index:999;position:absolute;left:0;bottom:0;width:100%}.sliderSelector ul{padding:0;z-index:999;width:100%;list-style:none;display:flex;justify-content:center}.sliderSelector ul li{margin-right:16px}.sliderSelector ul li div{background-color:#ddd;border:black solid .5px;z-index:999;width:10px;height:10px;border-radius:50%}.sliderSelector ul li div.active{background-color:#353535;width:10px;height:10px;border-radius:50%}.sliderSelector ul li div:hover{cursor:pointer}.carousel-control-next,.carousel-control-prev{opacity:1;width:5%}@media (max-width: 1200px){.sliderSelector{width:100%}.sliderSelector ul{padding:0}}@media (max-width: 460px){.sliderSelector{width:100%}.sliderSelector ul{padding:4px}}\\n\"], dependencies: [{ kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"component\", type: i4.ButtonComponent, selector: \"universal-button\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: CoverSliderComponent, decorators: [{\n type: Component,\n args: [{ selector: 'universal-cover-slider', changeDetection: ChangeDetectionStrategy.OnPush, template: \"
\\n
\\n\\n
\\n
\\n \\n
\\n\\n
\\n
    \\n
  • \\n
    \\n
  • \\n
\\n
\\n
\\n Previous\\n Next\\n
\\n\", styles: [\"body{font-size:16px;line-height:24px;text-align:start;font-style:normal;font-weight:400;font-family:Lato;margin:0}h1{font-size:48px;line-height:56px;text-align:start;color:#353535;font-style:normal;font-weight:800;font-family:Lato}h2{font-size:40px;line-height:48px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:32px;line-height:40px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:24px;line-height:32px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}@media (max-width: 800px){h1{font-size:48px;line-height:56px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h2{font-size:32px;line-height:40px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:16px;line-height:20px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:16px;line-height:20px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}}main{display:flex;flex-direction:column;align-items:center}body{overflow-x:hidden}:focus{outline:none}.modal.full-modal .modal-dialog{width:95%;min-width:95%}.cover-slider-wrapper,.cover-slider{position:relative}.cover-slider h2{line-height:32px;margin:12px 0}.cover-slider h3{line-height:24px;margin:24px 0}@media (max-width: 800px){.cover-slider{height:100vh;padding:0;background-position-x:65%!important}.cover-slider h2{margin-top:48px;line-height:32px}}.left{display:flex;flex-direction:column;justify-content:center;align-items:flex-start;height:800px;margin-left:80px;text-align:left}@media (max-width: 800px){.left{height:700px;margin-left:24px}}.right{display:flex;flex-direction:column;justify-content:center;align-items:flex-end;height:800px;margin-right:80px;text-align:right}@media (max-width: 800px){.right{height:700px;margin-right:24px}}.right h2,.right h3{text-align:right}.center{display:flex;flex-direction:column;justify-content:center;align-items:center;height:800px;text-align:center}.center h2,.center h3{text-align:center}@media (max-width: 800px){.center{height:700px}}.sliderSelector{z-index:999;position:absolute;left:0;bottom:0;width:100%}.sliderSelector ul{padding:0;z-index:999;width:100%;list-style:none;display:flex;justify-content:center}.sliderSelector ul li{margin-right:16px}.sliderSelector ul li div{background-color:#ddd;border:black solid .5px;z-index:999;width:10px;height:10px;border-radius:50%}.sliderSelector ul li div.active{background-color:#353535;width:10px;height:10px;border-radius:50%}.sliderSelector ul li div:hover{cursor:pointer}.carousel-control-next,.carousel-control-prev{opacity:1;width:5%}@media (max-width: 1200px){.sliderSelector{width:100%}.sliderSelector ul{padding:0}}@media (max-width: 460px){.sliderSelector{width:100%}.sliderSelector ul{padding:4px}}\\n\"] }]\n }], ctorParameters: function () { return [{ type: i1$1.DataTransformWrapperService }, { type: i0.ChangeDetectorRef }, { type: i0.KeyValueDiffers }]; }, propDecorators: { slideButtonClicked: [{\n type: Output\n }] } });\n\nclass UniversalCoverSliderModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalCoverSliderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalCoverSliderModule, declarations: [CoverSliderComponent], imports: [CommonModule, UniversalButtonModule, UniversalBaseModule], exports: [CoverSliderComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalCoverSliderModule, imports: [CommonModule, UniversalButtonModule, UniversalBaseModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalCoverSliderModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [CoverSliderComponent],\n imports: [CommonModule, UniversalButtonModule, UniversalBaseModule],\n exports: [CoverSliderComponent],\n }]\n }] });\n\nclass GridGalleryItemComponent extends UniversalBaseComponent {\n processData() {\n super.processData();\n this.linkUrl = this.processLink(this.data.link);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: GridGalleryItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.2.12\", type: GridGalleryItemComponent, selector: \"universal-grid-gallery-item\", inputs: { smaller: \"smaller\" }, usesInheritance: true, ngImport: i0, template: \"\\n \\n \\\"{{data.link.text}}\\\"\\n
\\n \\n

\\n

\\n
\\n \\n

\\n

\\n
\\n
\\n
\\n
\", styles: [\"html,body{font-size:16px}html{-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;text-rendering:optimizeLegibility!important;-webkit-font-smoothing:antialiased!important}:host{color:#333;background-color:#fff;display:flex;font-family:Lato,sans-serif;font-weight:400;font-style:normal;line-height:1.5rem;margin:0 auto}section{display:block}a{background-color:transparent}a:active,a:hover{outline:0}img{border:0;vertical-align:middle}*,:after,:before{box-sizing:border-box}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.img-responsive{display:block;max-width:100%;height:auto}h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1,h2,h3{margin-top:20px;margin-bottom:10px}h4,h5,h6{margin-top:10px;margin-bottom:10px}h1{font-size:36px}h2{font-size:2.625rem}h3{font-size:1.625rem}h4{font-size:18px}h5{font-size:14px}h6{font-size:12px}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.container-fluid:after,.container-fluid:before{display:table;content:\\\" \\\"}.container-fluid:after{clear:both}.sectionLanding{padding-top:10px;padding-bottom:10px;background:#fff}.sectionLanding{padding:0 0 10px!important}.landing-image-hero{display:flex}a{text-decoration:none;color:#353535}a:hover{opacity:.55}h2{line-height:2.625rem;font-weight:700;margin:13px 0 11px;text-transform:uppercase}h3{line-height:2rem;margin:13px 0 4px;font-weight:700;text-transform:uppercase}.image-title-description{width:90%;word-break:break-word;overflow-wrap:break-word}.landing-image-main,universal-grid-gallery-item{flex:2;margin-right:16px}@media only screen and (max-width: 768px){.image-title-description{width:100%}.landing-image-main{margin:0}.landing-image-main h2{width:100%;font-size:1.625rem;line-height:2.154rem;margin:13px 0 3px}.landing-image-main h3{display:none}}.landing-image-right{flex:1;display:flex;flex-direction:column}.landing-image-right p{margin:0 0 24px;padding:0;font-size:16px;font-style:normal;line-height:1.5rem}@media only screen and (min-width: 768px) and (max-width: 992px){.landing-image-main{margin:0}.landing-image-right{flex-flow:row nowrap;margin-top:23px}.landing-image-right a:first-of-type{margin-right:16px}}@media only screen and (max-width: 768px){.landing-image-right{flex-wrap:wrap}}@media only screen and (min-width: 768px) and (max-width: 992px){.landing-image-hero{flex-flow:column nowrap}}@media only screen and (max-width: 768px){.landing-image-hero{flex-flow:column nowrap}p{display:none}}@media only screen and (max-width: 767px){body,html{font-size:13px}}@media only screen and (max-width: 767px) and (min-width: 481px){body,html{font-size:14px}}\\n\"], dependencies: [{ kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: GridGalleryItemComponent, decorators: [{\n type: Component,\n args: [{ selector: 'universal-grid-gallery-item', changeDetection: ChangeDetectionStrategy.OnPush, template: \"\\n \\n \\\"{{data.link.text}}\\\"\\n
\\n \\n

\\n

\\n
\\n \\n

\\n

\\n
\\n
\\n
\\n
\", styles: [\"html,body{font-size:16px}html{-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;text-rendering:optimizeLegibility!important;-webkit-font-smoothing:antialiased!important}:host{color:#333;background-color:#fff;display:flex;font-family:Lato,sans-serif;font-weight:400;font-style:normal;line-height:1.5rem;margin:0 auto}section{display:block}a{background-color:transparent}a:active,a:hover{outline:0}img{border:0;vertical-align:middle}*,:after,:before{box-sizing:border-box}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.img-responsive{display:block;max-width:100%;height:auto}h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1,h2,h3{margin-top:20px;margin-bottom:10px}h4,h5,h6{margin-top:10px;margin-bottom:10px}h1{font-size:36px}h2{font-size:2.625rem}h3{font-size:1.625rem}h4{font-size:18px}h5{font-size:14px}h6{font-size:12px}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.container-fluid:after,.container-fluid:before{display:table;content:\\\" \\\"}.container-fluid:after{clear:both}.sectionLanding{padding-top:10px;padding-bottom:10px;background:#fff}.sectionLanding{padding:0 0 10px!important}.landing-image-hero{display:flex}a{text-decoration:none;color:#353535}a:hover{opacity:.55}h2{line-height:2.625rem;font-weight:700;margin:13px 0 11px;text-transform:uppercase}h3{line-height:2rem;margin:13px 0 4px;font-weight:700;text-transform:uppercase}.image-title-description{width:90%;word-break:break-word;overflow-wrap:break-word}.landing-image-main,universal-grid-gallery-item{flex:2;margin-right:16px}@media only screen and (max-width: 768px){.image-title-description{width:100%}.landing-image-main{margin:0}.landing-image-main h2{width:100%;font-size:1.625rem;line-height:2.154rem;margin:13px 0 3px}.landing-image-main h3{display:none}}.landing-image-right{flex:1;display:flex;flex-direction:column}.landing-image-right p{margin:0 0 24px;padding:0;font-size:16px;font-style:normal;line-height:1.5rem}@media only screen and (min-width: 768px) and (max-width: 992px){.landing-image-main{margin:0}.landing-image-right{flex-flow:row nowrap;margin-top:23px}.landing-image-right a:first-of-type{margin-right:16px}}@media only screen and (max-width: 768px){.landing-image-right{flex-wrap:wrap}}@media only screen and (min-width: 768px) and (max-width: 992px){.landing-image-hero{flex-flow:column nowrap}}@media only screen and (max-width: 768px){.landing-image-hero{flex-flow:column nowrap}p{display:none}}@media only screen and (max-width: 767px){body,html{font-size:13px}}@media only screen and (max-width: 767px) and (min-width: 481px){body,html{font-size:14px}}\\n\"] }]\n }], propDecorators: { smaller: [{\n type: Input\n }] } });\n\nclass GridGalleryComponent extends UniversalBaseComponent {\n ngOnInit() { }\n ngOnDestroy() { }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: GridGalleryComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.2.12\", type: GridGalleryComponent, selector: \"universal-grid-gallery\", usesInheritance: true, ngImport: i0, template: \"
\\n \\n
\\n \\n \\n
\\n
\\n\\n \\n
\\n \\n
\\n \\n \\n
\\n
\\n
\\n\\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n\", styles: [\"html,body{font-size:16px}html{-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;text-rendering:optimizeLegibility!important;-webkit-font-smoothing:antialiased!important}:host{color:#333;background-color:#fff;display:flex;font-family:Lato,sans-serif;font-weight:400;font-style:normal;line-height:1.5rem;margin:0 auto}section{display:block}a{background-color:transparent}a:active,a:hover{outline:0}img{border:0;vertical-align:middle}*,:after,:before{box-sizing:border-box}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.img-responsive{display:block;max-width:100%;height:auto}h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1,h2,h3{margin-top:20px;margin-bottom:10px}h4,h5,h6{margin-top:10px;margin-bottom:10px}h1{font-size:36px}h2{font-size:2.625rem}h3{font-size:1.625rem}h4{font-size:18px}h5{font-size:14px}h6{font-size:12px}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.container-fluid:after,.container-fluid:before{display:table;content:\\\" \\\"}.container-fluid:after{clear:both}.sectionLanding{padding-top:10px;padding-bottom:10px;background:#fff}.sectionLanding{padding:0 0 10px!important}.landing-image-hero{display:flex}a{text-decoration:none;color:#353535}a:hover{opacity:.55}h2{line-height:2.625rem;font-weight:700;margin:13px 0 11px;text-transform:uppercase}h3{line-height:2rem;margin:13px 0 4px;font-weight:700;text-transform:uppercase}.image-title-description{width:90%;word-break:break-word;overflow-wrap:break-word}.landing-image-main,universal-grid-gallery-item{flex:2;margin-right:16px}@media only screen and (max-width: 768px){.image-title-description{width:100%}.landing-image-main{margin:0}.landing-image-main h2{width:100%;font-size:1.625rem;line-height:2.154rem;margin:13px 0 3px}.landing-image-main h3{display:none}}.landing-image-right{flex:1;display:flex;flex-direction:column}.landing-image-right p{margin:0 0 24px;padding:0;font-size:16px;font-style:normal;line-height:1.5rem}@media only screen and (min-width: 768px) and (max-width: 992px){.landing-image-main{margin:0}.landing-image-right{flex-flow:row nowrap;margin-top:23px}.landing-image-right a:first-of-type{margin-right:16px}}@media only screen and (max-width: 768px){.landing-image-right{flex-wrap:wrap}}@media only screen and (min-width: 768px) and (max-width: 992px){.landing-image-hero{flex-flow:column nowrap}}@media only screen and (max-width: 768px){.landing-image-hero{flex-flow:column nowrap}p{display:none}}@media only screen and (max-width: 767px){body,html{font-size:13px}}@media only screen and (max-width: 767px) and (min-width: 481px){body,html{font-size:14px}}\\n\"], dependencies: [{ kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"component\", type: GridGalleryItemComponent, selector: \"universal-grid-gallery-item\", inputs: [\"smaller\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: GridGalleryComponent, decorators: [{\n type: Component,\n args: [{ selector: 'universal-grid-gallery', changeDetection: ChangeDetectionStrategy.OnPush, template: \"
\\n \\n
\\n \\n \\n
\\n
\\n\\n \\n
\\n \\n
\\n \\n \\n
\\n
\\n
\\n\\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n\", styles: [\"html,body{font-size:16px}html{-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;text-rendering:optimizeLegibility!important;-webkit-font-smoothing:antialiased!important}:host{color:#333;background-color:#fff;display:flex;font-family:Lato,sans-serif;font-weight:400;font-style:normal;line-height:1.5rem;margin:0 auto}section{display:block}a{background-color:transparent}a:active,a:hover{outline:0}img{border:0;vertical-align:middle}*,:after,:before{box-sizing:border-box}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.img-responsive{display:block;max-width:100%;height:auto}h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1,h2,h3{margin-top:20px;margin-bottom:10px}h4,h5,h6{margin-top:10px;margin-bottom:10px}h1{font-size:36px}h2{font-size:2.625rem}h3{font-size:1.625rem}h4{font-size:18px}h5{font-size:14px}h6{font-size:12px}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.container-fluid:after,.container-fluid:before{display:table;content:\\\" \\\"}.container-fluid:after{clear:both}.sectionLanding{padding-top:10px;padding-bottom:10px;background:#fff}.sectionLanding{padding:0 0 10px!important}.landing-image-hero{display:flex}a{text-decoration:none;color:#353535}a:hover{opacity:.55}h2{line-height:2.625rem;font-weight:700;margin:13px 0 11px;text-transform:uppercase}h3{line-height:2rem;margin:13px 0 4px;font-weight:700;text-transform:uppercase}.image-title-description{width:90%;word-break:break-word;overflow-wrap:break-word}.landing-image-main,universal-grid-gallery-item{flex:2;margin-right:16px}@media only screen and (max-width: 768px){.image-title-description{width:100%}.landing-image-main{margin:0}.landing-image-main h2{width:100%;font-size:1.625rem;line-height:2.154rem;margin:13px 0 3px}.landing-image-main h3{display:none}}.landing-image-right{flex:1;display:flex;flex-direction:column}.landing-image-right p{margin:0 0 24px;padding:0;font-size:16px;font-style:normal;line-height:1.5rem}@media only screen and (min-width: 768px) and (max-width: 992px){.landing-image-main{margin:0}.landing-image-right{flex-flow:row nowrap;margin-top:23px}.landing-image-right a:first-of-type{margin-right:16px}}@media only screen and (max-width: 768px){.landing-image-right{flex-wrap:wrap}}@media only screen and (min-width: 768px) and (max-width: 992px){.landing-image-hero{flex-flow:column nowrap}}@media only screen and (max-width: 768px){.landing-image-hero{flex-flow:column nowrap}p{display:none}}@media only screen and (max-width: 767px){body,html{font-size:13px}}@media only screen and (max-width: 767px) and (min-width: 481px){body,html{font-size:14px}}\\n\"] }]\n }] });\n\nclass UniversalGridGalleryModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalGridGalleryModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalGridGalleryModule, declarations: [GridGalleryComponent, GridGalleryItemComponent], imports: [CommonModule, UniversalBaseModule], exports: [GridGalleryComponent, GridGalleryItemComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalGridGalleryModule, imports: [CommonModule, UniversalBaseModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalGridGalleryModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [GridGalleryComponent, GridGalleryItemComponent],\n imports: [CommonModule, UniversalBaseModule],\n exports: [GridGalleryComponent, GridGalleryItemComponent],\n }]\n }] });\n\nvar HeaderState;\n(function (HeaderState) {\n HeaderState[HeaderState[\"DEFAULT\"] = 0] = \"DEFAULT\";\n HeaderState[HeaderState[\"POPOUT\"] = 1] = \"POPOUT\";\n HeaderState[HeaderState[\"MARKET\"] = 2] = \"MARKET\";\n HeaderState[HeaderState[\"CART\"] = 3] = \"CART\";\n})(HeaderState || (HeaderState = {}));\n\nclass HeaderHelperService {\n constructor() {\n this.current = HeaderState.DEFAULT;\n }\n togglePopout() {\n if (this.current === HeaderState.POPOUT) {\n this.current = HeaderState.DEFAULT;\n }\n else {\n this.current = HeaderState.POPOUT;\n }\n console.log(this.current);\n }\n stateIsPopout() {\n return this.current === HeaderState.POPOUT;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HeaderHelperService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HeaderHelperService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HeaderHelperService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return []; } });\n\nclass HeaderSubNavComponent {\n constructor(dataTransformWrapperService) {\n this.dataTransformWrapperService = dataTransformWrapperService;\n this.processData();\n }\n ngOnChanges(changes) {\n console.log('sub header level changes');\n this.processData();\n }\n processData() {\n // nothing really\n this.processedLinks = [];\n if (this.data && this.data.links) {\n for (const link of this.data.links) {\n const subLinks = [];\n for (const subLink of link.links) {\n subLinks.push(this.dataTransformWrapperService.processLink(subLink.url));\n }\n this.processedLinks.push({\n headingLink: this.dataTransformWrapperService.processLink(link.heading.url),\n subLinks: subLinks,\n });\n }\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HeaderSubNavComponent, deps: [{ token: i1$1.DataTransformWrapperService }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.2.12\", type: HeaderSubNavComponent, selector: \"universal-header-sub-nav\", inputs: { data: \"data\" }, usesOnChanges: true, ngImport: i0, template: \"
\\n \\n \\n
\\n\", styles: [\":host{margin-left:-70px;margin-right:-70px;padding:31px 0 32px 80px;display:flex;align-items:flex-start;flex-wrap:wrap;top:25px;left:-21px;border-radius:0;color:#000;background-color:#fff;box-shadow:0 6px 12px #0000002d}:host>div{display:flex;flex-flow:row wrap}.group-heading{width:100%;font-weight:700}ul{list-style:none;padding:0;margin:0}ul li{padding-bottom:3px}\\n\"], dependencies: [{ kind: \"directive\", type: i1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HeaderSubNavComponent, decorators: [{\n type: Component,\n args: [{ selector: 'universal-header-sub-nav', changeDetection: ChangeDetectionStrategy.OnPush, template: \"
\\n \\n \\n
\\n\", styles: [\":host{margin-left:-70px;margin-right:-70px;padding:31px 0 32px 80px;display:flex;align-items:flex-start;flex-wrap:wrap;top:25px;left:-21px;border-radius:0;color:#000;background-color:#fff;box-shadow:0 6px 12px #0000002d}:host>div{display:flex;flex-flow:row wrap}.group-heading{width:100%;font-weight:700}ul{list-style:none;padding:0;margin:0}ul li{padding-bottom:3px}\\n\"] }]\n }], ctorParameters: function () { return [{ type: i1$1.DataTransformWrapperService }]; }, propDecorators: { data: [{\n type: Input\n }] } });\n\nclass HeaderRootNavComponent {\n constructor(dataTransformWrapperService, changeDetectorRef, elementRef, headerHelperService) {\n this.dataTransformWrapperService = dataTransformWrapperService;\n this.changeDetectorRef = changeDetectorRef;\n this.elementRef = elementRef;\n this.headerHelperService = headerHelperService;\n this.resizeFunc = () => {\n if (this.data && window.innerWidth <= this.data.forceCollapseAt) {\n this.collapsedIdx = 0;\n }\n else {\n this.resetAndCheckHeight();\n }\n };\n this.processData();\n this.subNavIdx = -1;\n }\n ngOnChanges(changes) {\n this.processData();\n }\n ngAfterViewChecked() {\n if (!this.headerHelperService.stateIsPopout()) {\n if (this.checkHeight()) {\n this.changeDetectorRef.detectChanges(); // yeah I know\n /* eslint-disable @angular-eslint/no-lifecycle-call */\n this.ngAfterViewChecked();\n }\n }\n }\n hasSublinks(link) {\n return !!link.sublinks && link.sublinks.links.length > 0;\n }\n selectSubNav(idx) {\n this.subNavIdx = idx;\n }\n selectedSubNav(idx) {\n return idx === this.subNavIdx;\n }\n isCollapsed(idx) {\n return idx >= this.collapsedIdx || idx < 0;\n }\n togglePopout() {\n this.headerHelperService.togglePopout();\n }\n resetAndCheckHeight() {\n if (this.data && !this.headerHelperService.stateIsPopout()) {\n this.collapsedIdx = this.data.links.length;\n // this.checkHeight();\n }\n }\n checkHeight() {\n const height = this.elementRef.nativeElement.getBoundingClientRect().height;\n if (height > this.data.maxHeight) {\n this.collapsedIdx--;\n return true;\n }\n return false;\n }\n processData() {\n this.resetAndCheckHeight();\n // nothing really\n this.processedLinks = [];\n if (this.data && this.data.links) {\n for (const link of this.data.links) {\n this.processedLinks.push(this.dataTransformWrapperService.processLink(link.link.url));\n }\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HeaderRootNavComponent, deps: [{ token: i1$1.DataTransformWrapperService }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: HeaderHelperService }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.2.12\", type: HeaderRootNavComponent, selector: \"universal-header-root-nav\", inputs: { data: \"data\", popoutMode: \"popoutMode\" }, host: { listeners: { \"window:resize\": \"resizeFunc()\" } }, usesOnChanges: true, ngImport: i0, template: \"\\n\\n\", styles: [\".level{display:flex;flex-direction:row;align-items:center;justify-content:space-between;list-style:none;margin:20px 0 0;padding:0}.level li{padding:10px;position:relative}.level li a{color:#fff;text-decoration:none}.level li .subNavHeading{cursor:pointer}.level li .subNavHeading:after{bottom:0;content:\\\"\\\";height:0;width:0;position:absolute;left:0;right:0;margin-right:auto;margin-left:auto;border:10px solid transparent;border-bottom-color:#fff;z-index:1000;visibility:hidden}.level li .subNavHeading.selectedSubNav:after{visibility:visible}.level.popoutMode{flex-direction:column;justify-content:right;align-items:flex-end;display:inline-flex;position:fixed;right:0;z-index:10000;background-color:#00008b;margin:0;top:0;height:100vh}\\n\"], dependencies: [{ kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"component\", type: HeaderSubNavComponent, selector: \"universal-header-sub-nav\", inputs: [\"data\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HeaderRootNavComponent, decorators: [{\n type: Component,\n args: [{ selector: 'universal-header-root-nav', changeDetection: ChangeDetectionStrategy.OnPush, template: \"\\n\\n\", styles: [\".level{display:flex;flex-direction:row;align-items:center;justify-content:space-between;list-style:none;margin:20px 0 0;padding:0}.level li{padding:10px;position:relative}.level li a{color:#fff;text-decoration:none}.level li .subNavHeading{cursor:pointer}.level li .subNavHeading:after{bottom:0;content:\\\"\\\";height:0;width:0;position:absolute;left:0;right:0;margin-right:auto;margin-left:auto;border:10px solid transparent;border-bottom-color:#fff;z-index:1000;visibility:hidden}.level li .subNavHeading.selectedSubNav:after{visibility:visible}.level.popoutMode{flex-direction:column;justify-content:right;align-items:flex-end;display:inline-flex;position:fixed;right:0;z-index:10000;background-color:#00008b;margin:0;top:0;height:100vh}\\n\"] }]\n }], ctorParameters: function () { return [{ type: i1$1.DataTransformWrapperService }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: HeaderHelperService }]; }, propDecorators: { data: [{\n type: Input\n }], popoutMode: [{\n type: Input\n }], resizeFunc: [{\n type: HostListener,\n args: ['window:resize', []]\n }] } });\n\nclass HeaderComponent {\n constructor(dataTransformWrapperService, headerHelperService) {\n this.dataTransformWrapperService = dataTransformWrapperService;\n this.headerHelperService = headerHelperService;\n this.processData();\n }\n ngOnChanges(changes) {\n console.log('header changes');\n this.processData();\n }\n isPopout() {\n console.log(this.headerHelperService.stateIsPopout());\n return this.headerHelperService.stateIsPopout();\n }\n processData() {\n // this.checkHeight();\n this.data = {\n desktopLogoUrl: 'https://www.usana.com/ux/dotcom/assets/USANA_logo.svg',\n showUserDetails: true,\n showSearchIfAvailable: true,\n showMarketDetails: true,\n nav: {\n partialCollapse: true,\n forceCollapseAt: 900,\n maxHeight: 75,\n links: [\n {\n link: {\n text: 'shop by category',\n url: 'shop',\n target: '_blank',\n },\n sublinks: {\n links: [\n {\n heading: {\n text: 'Nutritionals',\n url: 'PHXcategory://123',\n target: '_blank',\n },\n links: [\n {\n text: 'Essentials',\n url: '#',\n target: '_blank',\n },\n {\n text: 'Optimizers',\n url: '#',\n target: '_blank',\n },\n {\n text: 'Digestion/Detox',\n url: '#',\n target: '_blank',\n },\n ],\n },\n {\n heading: {\n text: 'Food & Engergy',\n url: 'nutritionals',\n target: '_blank',\n },\n links: [\n {\n text: 'Nutrimeal',\n url: 'PHXcategory://229',\n target: '_blank',\n },\n {\n text: 'Energy',\n url: '#',\n target: '_blank',\n },\n {\n text: 'MySmart Foods',\n url: '#',\n target: '_blank',\n },\n ],\n },\n ],\n },\n },\n {\n link: {\n text: 'live usana',\n url: '#',\n target: '_blank',\n },\n },\n {\n link: {\n text: 'science',\n url: '#',\n target: '_blank',\n },\n },\n {\n link: {\n text: 'sell usana',\n url: '#',\n target: '_blank',\n },\n },\n {\n link: {\n text: 'company, but really long so that we collapse faster',\n url: '#',\n target: '_blank',\n },\n },\n {\n link: {\n text: 'give back, but really long so that we collapse faster',\n url: '#',\n target: '_blank',\n },\n },\n ],\n },\n };\n this.showSearch = this.data.showSearchIfAvailable;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HeaderComponent, deps: [{ token: i1$1.DataTransformWrapperService }, { token: HeaderHelperService }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.2.12\", type: HeaderComponent, selector: \"universal-header\", inputs: { data: \"data\" }, viewQueries: [{ propertyName: \"navLinks\", first: true, predicate: [\"rootNav\"], descendants: true }], usesOnChanges: true, ngImport: i0, template: \"
\\n
\\n
\\n \\n
search here
\\n
\\n
\\n login\\n
\\n
\\n flag\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n\", styles: [\".menu{margin:0 50px;display:flex;flex-direction:column;width:100%}.menu .top-level{display:flex;flex-direction:row;align-items:center;justify-content:space-between}.menu .top-level .logo{max-width:200px}.menu .top-level .search-wrapper{flex-grow:1;padding:0 20px}.menu .top-level .controls{display:flex;flex-direction:row}.menu .top-level .controls>div{margin:0 20px}#header{display:flex;background-color:#212529;color:#fff;padding:20px 20px 0}@media screen and (max-width: 480px){.menu{margin:0 auto}.menu .top-level{flex-direction:column}}\\n\"], dependencies: [{ kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"component\", type: HeaderRootNavComponent, selector: \"universal-header-root-nav\", inputs: [\"data\", \"popoutMode\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HeaderComponent, decorators: [{\n type: Component,\n args: [{ selector: 'universal-header', changeDetection: ChangeDetectionStrategy.OnPush, template: \"
\\n
\\n
\\n \\n
search here
\\n
\\n
\\n login\\n
\\n
\\n flag\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n\", styles: [\".menu{margin:0 50px;display:flex;flex-direction:column;width:100%}.menu .top-level{display:flex;flex-direction:row;align-items:center;justify-content:space-between}.menu .top-level .logo{max-width:200px}.menu .top-level .search-wrapper{flex-grow:1;padding:0 20px}.menu .top-level .controls{display:flex;flex-direction:row}.menu .top-level .controls>div{margin:0 20px}#header{display:flex;background-color:#212529;color:#fff;padding:20px 20px 0}@media screen and (max-width: 480px){.menu{margin:0 auto}.menu .top-level{flex-direction:column}}\\n\"] }]\n }], ctorParameters: function () { return [{ type: i1$1.DataTransformWrapperService }, { type: HeaderHelperService }]; }, propDecorators: { data: [{\n type: Input\n }], navLinks: [{\n type: ViewChild,\n args: ['rootNav']\n }] } });\n\nclass UniversalHeaderModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalHeaderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalHeaderModule, declarations: [HeaderComponent, HeaderRootNavComponent, HeaderSubNavComponent], imports: [CommonModule, UniversalButtonModule, UniversalBaseModule], exports: [HeaderComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalHeaderModule, providers: [HeaderHelperService], imports: [CommonModule, UniversalButtonModule, UniversalBaseModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalHeaderModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [HeaderComponent, HeaderRootNavComponent, HeaderSubNavComponent],\n imports: [CommonModule, UniversalButtonModule, UniversalBaseModule],\n providers: [HeaderHelperService],\n exports: [HeaderComponent],\n }]\n }] });\n\nclass HeroSliderGridItemComponent extends UniversalBaseComponent {\n processData() {\n super.processData();\n this.linkUrl = this.linkUrl = this.processLink(this.data.link);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HeroSliderGridItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.2.12\", type: HeroSliderGridItemComponent, selector: \"hero-slider-grid-item\", usesInheritance: true, ngImport: i0, template: \"
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\\"\\\"\\n
\\n
\\n\", styles: [\"body{font-size:16px;line-height:24px;text-align:start;font-style:normal;font-weight:400;font-family:Lato;margin:0}h1{font-size:48px;line-height:56px;text-align:start;color:#353535;font-style:normal;font-weight:800;font-family:Lato}h2{font-size:40px;line-height:48px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:32px;line-height:40px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:24px;line-height:32px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}@media (max-width: 800px){h1{font-size:48px;line-height:56px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h2{font-size:32px;line-height:40px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:16px;line-height:20px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:16px;line-height:20px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}}main{display:flex;flex-direction:column;align-items:center}body{overflow-x:hidden}:focus{outline:none}.modal.full-modal .modal-dialog{width:95%;min-width:95%}:host:not([hidden]){background-color:#fafafa;overflow-x:hidden;grid-template-rows:450px;overflow-y:hidden;display:inline-grid;grid-template-columns:720px 720px}:host:not([hidden]) .grid-item{display:flex;justify-content:center;overflow:hidden}:host:not([hidden]) .grid-item-content{animation:fadeIn 1.5s;position:relative;display:flex;flex-direction:column;align-items:center;padding:16px}:host:not([hidden]) .grid-item-content h2{text-align:center}:host:not([hidden]) .grid-item-content h4{margin:-8px 0 16px;text-align:center;font-weight:200}:host:not([hidden]) .grid-item-content .container-button{position:absolute;transform:translateY(-50%);bottom:64px}:host:not([hidden]) .hero-image-wrapper{animation:slideInFromRight .5s}:host:not([hidden]) .hero-image-wrapper img{overflow-x:hidden;max-height:450px}@media (max-width: 1440px){:host:not([hidden]){grid-template-columns:600px 600px}:host:not([hidden]) .grid-item-content{padding:24px;display:flex}}@media (max-width: 1200px){:host:not([hidden]){grid-template-rows:375px 375px;grid-template-columns:500px 500px;grid-template-areas:\\\"image image image \\\" \\\" blob blob blob\\\"}:host:not([hidden]) .grid-item-content{width:700px}:host:not([hidden]) .blob{grid-area:blob}:host:not([hidden]) .image{grid-area:image}:host:not([hidden]) .container-button{bottom:0!important}}@media (max-width: 800px){:host:not([hidden]){grid-template-rows:400px 350px;grid-template-columns:400px 400px;max-width:800px}:host:not([hidden]) .grid-item-content{width:800px}}@media (max-width: 460px){:host:not([hidden]){max-width:320px;grid-template-rows:200px 400px;grid-template-columns:320px}:host:not([hidden]) .grid-item{max-width:320px}:host:not([hidden]) .hero-image-wrapper img{max-width:320px}}@keyframes fadeIn{0%{animation-delay:1.2s;opacity:0}to{opacity:1}}@keyframes slideInFromRight{0%{opacity:0;margin-right:-100%}to{opacity:1;margin-right:0}}\\n\"], dependencies: [{ kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"component\", type: i4.ButtonComponent, selector: \"universal-button\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HeroSliderGridItemComponent, decorators: [{\n type: Component,\n args: [{ selector: 'hero-slider-grid-item', changeDetection: ChangeDetectionStrategy.OnPush, template: \"
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\\"\\\"\\n
\\n
\\n\", styles: [\"body{font-size:16px;line-height:24px;text-align:start;font-style:normal;font-weight:400;font-family:Lato;margin:0}h1{font-size:48px;line-height:56px;text-align:start;color:#353535;font-style:normal;font-weight:800;font-family:Lato}h2{font-size:40px;line-height:48px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:32px;line-height:40px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:24px;line-height:32px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}@media (max-width: 800px){h1{font-size:48px;line-height:56px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h2{font-size:32px;line-height:40px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:16px;line-height:20px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:16px;line-height:20px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}}main{display:flex;flex-direction:column;align-items:center}body{overflow-x:hidden}:focus{outline:none}.modal.full-modal .modal-dialog{width:95%;min-width:95%}:host:not([hidden]){background-color:#fafafa;overflow-x:hidden;grid-template-rows:450px;overflow-y:hidden;display:inline-grid;grid-template-columns:720px 720px}:host:not([hidden]) .grid-item{display:flex;justify-content:center;overflow:hidden}:host:not([hidden]) .grid-item-content{animation:fadeIn 1.5s;position:relative;display:flex;flex-direction:column;align-items:center;padding:16px}:host:not([hidden]) .grid-item-content h2{text-align:center}:host:not([hidden]) .grid-item-content h4{margin:-8px 0 16px;text-align:center;font-weight:200}:host:not([hidden]) .grid-item-content .container-button{position:absolute;transform:translateY(-50%);bottom:64px}:host:not([hidden]) .hero-image-wrapper{animation:slideInFromRight .5s}:host:not([hidden]) .hero-image-wrapper img{overflow-x:hidden;max-height:450px}@media (max-width: 1440px){:host:not([hidden]){grid-template-columns:600px 600px}:host:not([hidden]) .grid-item-content{padding:24px;display:flex}}@media (max-width: 1200px){:host:not([hidden]){grid-template-rows:375px 375px;grid-template-columns:500px 500px;grid-template-areas:\\\"image image image \\\" \\\" blob blob blob\\\"}:host:not([hidden]) .grid-item-content{width:700px}:host:not([hidden]) .blob{grid-area:blob}:host:not([hidden]) .image{grid-area:image}:host:not([hidden]) .container-button{bottom:0!important}}@media (max-width: 800px){:host:not([hidden]){grid-template-rows:400px 350px;grid-template-columns:400px 400px;max-width:800px}:host:not([hidden]) .grid-item-content{width:800px}}@media (max-width: 460px){:host:not([hidden]){max-width:320px;grid-template-rows:200px 400px;grid-template-columns:320px}:host:not([hidden]) .grid-item{max-width:320px}:host:not([hidden]) .hero-image-wrapper img{max-width:320px}}@keyframes fadeIn{0%{animation-delay:1.2s;opacity:0}to{opacity:1}}@keyframes slideInFromRight{0%{opacity:0;margin-right:-100%}to{opacity:1;margin-right:0}}\\n\"] }]\n }] });\n\nclass HeroSliderComponent extends UniversalBaseComponent$1 {\n constructor(dataTransformWrapperService, changeDetectorRef, differs) {\n super(dataTransformWrapperService, changeDetectorRef, differs);\n this.dataTransformWrapperService = dataTransformWrapperService;\n this.changeDetectorRef = changeDetectorRef;\n // @Input() data: HeroSlider;\n this.slideButtonClicked = new EventEmitter();\n //for whatever reason testing doesn't work because of our @Output annotation unless we manually call parent constructor\n }\n slideTo(idx) {\n if (idx >= this.data.slides.length) {\n idx = 0;\n }\n this.sliderIdx = idx;\n }\n selectSlide(idx) {\n if (idx !== this.sliderIdx) {\n this.resetInterval();\n this.slideTo(idx);\n }\n }\n slideClicked(url) {\n this.slideButtonClicked.emit(url);\n }\n processData() {\n super.processData();\n if (!this.hasInterval()) {\n this.selectSlide(0);\n }\n }\n ngOnDestroy() {\n this.stopInterval();\n }\n resetInterval() {\n this.stopInterval();\n if (!this.data.slideTime) {\n this.data.slideTime = 6000;\n }\n if (this.data.slideTime > 0) {\n this.slideInterval = setInterval(() => {\n this.slideTo(this.sliderIdx + 1);\n }, this.data.slideTime);\n }\n }\n hasInterval() {\n return !!this.slideInterval;\n }\n stopInterval() {\n if (this.hasInterval()) {\n clearInterval(this.slideInterval);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HeroSliderComponent, deps: [{ token: i1$1.DataTransformWrapperService }, { token: i0.ChangeDetectorRef }, { token: i0.KeyValueDiffers }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.2.12\", type: HeroSliderComponent, selector: \"universal-hero-slider\", outputs: { slideButtonClicked: \"slideButtonClicked\" }, usesInheritance: true, ngImport: i0, template: \"
\\n
\\n \\n \\n\\n
\\n
    \\n
  • \\n
    \\n
  • \\n
\\n
\\n
\\n
\\n\", styles: [\"body{font-size:16px;line-height:24px;text-align:start;font-style:normal;font-weight:400;font-family:Lato;margin:0}h1{font-size:48px;line-height:56px;text-align:start;color:#353535;font-style:normal;font-weight:800;font-family:Lato}h2{font-size:40px;line-height:48px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:32px;line-height:40px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:24px;line-height:32px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}@media (max-width: 800px){h1{font-size:48px;line-height:56px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h2{font-size:32px;line-height:40px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:16px;line-height:20px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:16px;line-height:20px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}}main{display:flex;flex-direction:column;align-items:center}body{overflow-x:hidden}:focus{outline:none}.modal.full-modal .modal-dialog{width:95%;min-width:95%}:host{position:relative;display:block}:host .slider-section{display:flex;justify-content:center}:host .slider-section .slider-container-wrapper{position:relative}:host .container-button{display:flex;justify-content:center}:host .sliderSelector{width:50%;position:absolute;bottom:0}:host .sliderSelector ul{padding:32px 0;width:100%;list-style:none;display:flex;justify-content:center}:host .sliderSelector ul li{margin-right:8px}:host .sliderSelector ul li div{background-color:#ddd;width:96px;height:8px;border-radius:8px}:host .sliderSelector ul li div.active{background-color:#353535;width:96px;height:8px;border-radius:8px}:host .sliderSelector ul li div:not(.active):hover{cursor:pointer}@media (max-width: 1200px){:host .sliderSelector{width:100%}:host .sliderSelector ul{padding:0}}@media (max-width: 460px){:host .sliderSelector{width:100%}:host .sliderSelector ul{padding:4px}}\\n\"], dependencies: [{ kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"component\", type: HeroSliderGridItemComponent, selector: \"hero-slider-grid-item\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HeroSliderComponent, decorators: [{\n type: Component,\n args: [{ selector: 'universal-hero-slider', changeDetection: ChangeDetectionStrategy.OnPush, template: \"
\\n
\\n \\n \\n\\n
\\n
    \\n
  • \\n
    \\n
  • \\n
\\n
\\n
\\n
\\n\", styles: [\"body{font-size:16px;line-height:24px;text-align:start;font-style:normal;font-weight:400;font-family:Lato;margin:0}h1{font-size:48px;line-height:56px;text-align:start;color:#353535;font-style:normal;font-weight:800;font-family:Lato}h2{font-size:40px;line-height:48px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:32px;line-height:40px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:24px;line-height:32px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}@media (max-width: 800px){h1{font-size:48px;line-height:56px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h2{font-size:32px;line-height:40px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:16px;line-height:20px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:16px;line-height:20px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}}main{display:flex;flex-direction:column;align-items:center}body{overflow-x:hidden}:focus{outline:none}.modal.full-modal .modal-dialog{width:95%;min-width:95%}:host{position:relative;display:block}:host .slider-section{display:flex;justify-content:center}:host .slider-section .slider-container-wrapper{position:relative}:host .container-button{display:flex;justify-content:center}:host .sliderSelector{width:50%;position:absolute;bottom:0}:host .sliderSelector ul{padding:32px 0;width:100%;list-style:none;display:flex;justify-content:center}:host .sliderSelector ul li{margin-right:8px}:host .sliderSelector ul li div{background-color:#ddd;width:96px;height:8px;border-radius:8px}:host .sliderSelector ul li div.active{background-color:#353535;width:96px;height:8px;border-radius:8px}:host .sliderSelector ul li div:not(.active):hover{cursor:pointer}@media (max-width: 1200px){:host .sliderSelector{width:100%}:host .sliderSelector ul{padding:0}}@media (max-width: 460px){:host .sliderSelector{width:100%}:host .sliderSelector ul{padding:4px}}\\n\"] }]\n }], ctorParameters: function () { return [{ type: i1$1.DataTransformWrapperService }, { type: i0.ChangeDetectorRef }, { type: i0.KeyValueDiffers }]; }, propDecorators: { slideButtonClicked: [{\n type: Output\n }] } });\n\nconst components$1 = [HeroSliderComponent, HeroSliderGridItemComponent];\nclass UniversalHeroSliderModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalHeroSliderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalHeroSliderModule, declarations: [HeroSliderComponent, HeroSliderGridItemComponent], imports: [CommonModule, UniversalButtonModule, UniversalBaseModule], exports: [HeroSliderComponent, HeroSliderGridItemComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalHeroSliderModule, imports: [CommonModule, UniversalButtonModule, UniversalBaseModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalHeroSliderModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: components$1,\n imports: [CommonModule, UniversalButtonModule, UniversalBaseModule],\n exports: components$1,\n }]\n }] });\n\nclass HeroComponent extends UniversalBaseComponent {\n processData() {\n super.processData();\n this.linkUrl = this.processLink(this.data.link);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HeroComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.2.12\", type: HeroComponent, selector: \"universal-hero\", usesInheritance: true, ngImport: i0, template: \"
\\n
\\n\\n
\\n
\\n {{data.link.text}}\\n
\\n\\n
\\n
\\n\", styles: [\"body{font-size:16px;line-height:24px;text-align:start;font-style:normal;font-weight:400;font-family:Lato;margin:0}h1{font-size:48px;line-height:56px;text-align:start;color:#353535;font-style:normal;font-weight:800;font-family:Lato}h2{font-size:40px;line-height:48px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:32px;line-height:40px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:24px;line-height:32px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}@media (max-width: 800px){h1{font-size:48px;line-height:56px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h2{font-size:32px;line-height:40px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:16px;line-height:20px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:16px;line-height:20px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}}main{display:flex;flex-direction:column;align-items:center}body{overflow-x:hidden}:focus{outline:none}.modal.full-modal .modal-dialog{width:95%;min-width:95%}:host{position:relative;display:block}.cover-wrapper{position:relative}.cover{background-position-x:center;background-repeat:no-repeat;background-size:cover;width:100vw;position:relative}.cover h2{line-height:32px;margin:12px 0}.cover h3{line-height:24px;margin:24px 0}@media (max-width: 800px){.cover{height:100vh;padding:0}.cover.cover-left{background-position-x:65%!important}.cover.cover-right{background-position-x:35%!important}.cover h2{margin-top:48px;line-height:32px}}.left{display:flex;flex-direction:column;justify-content:center;align-items:flex-start;height:800px;margin-left:80px}@media (max-width: 800px){.left{height:700px;margin-left:24px}}.right{display:flex;flex-direction:column;justify-content:center;align-items:flex-end;height:800px;margin-right:80px}@media (max-width: 800px){.right{height:700px;margin-right:24px}}.right *{text-align:right}.center{display:flex;flex-direction:column;justify-content:center;align-items:center;height:800px}.center *{text-align:center}@media (max-width: 800px){.center{height:700px}}\\n\"], dependencies: [{ kind: \"directive\", type: i1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"component\", type: i4.ButtonComponent, selector: \"universal-button\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HeroComponent, decorators: [{\n type: Component,\n args: [{ selector: 'universal-hero', changeDetection: ChangeDetectionStrategy.OnPush, template: \"
\\n
\\n\\n
\\n
\\n {{data.link.text}}\\n
\\n\\n
\\n
\\n\", styles: [\"body{font-size:16px;line-height:24px;text-align:start;font-style:normal;font-weight:400;font-family:Lato;margin:0}h1{font-size:48px;line-height:56px;text-align:start;color:#353535;font-style:normal;font-weight:800;font-family:Lato}h2{font-size:40px;line-height:48px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:32px;line-height:40px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:24px;line-height:32px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}@media (max-width: 800px){h1{font-size:48px;line-height:56px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h2{font-size:32px;line-height:40px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:16px;line-height:20px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:16px;line-height:20px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}}main{display:flex;flex-direction:column;align-items:center}body{overflow-x:hidden}:focus{outline:none}.modal.full-modal .modal-dialog{width:95%;min-width:95%}:host{position:relative;display:block}.cover-wrapper{position:relative}.cover{background-position-x:center;background-repeat:no-repeat;background-size:cover;width:100vw;position:relative}.cover h2{line-height:32px;margin:12px 0}.cover h3{line-height:24px;margin:24px 0}@media (max-width: 800px){.cover{height:100vh;padding:0}.cover.cover-left{background-position-x:65%!important}.cover.cover-right{background-position-x:35%!important}.cover h2{margin-top:48px;line-height:32px}}.left{display:flex;flex-direction:column;justify-content:center;align-items:flex-start;height:800px;margin-left:80px}@media (max-width: 800px){.left{height:700px;margin-left:24px}}.right{display:flex;flex-direction:column;justify-content:center;align-items:flex-end;height:800px;margin-right:80px}@media (max-width: 800px){.right{height:700px;margin-right:24px}}.right *{text-align:right}.center{display:flex;flex-direction:column;justify-content:center;align-items:center;height:800px}.center *{text-align:center}@media (max-width: 800px){.center{height:700px}}\\n\"] }]\n }] });\n\nconst components = [HeroComponent];\nclass UniversalHeroModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalHeroModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalHeroModule, declarations: [HeroComponent], imports: [CommonModule, UniversalButtonModule], exports: [HeroComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalHeroModule, imports: [CommonModule, UniversalButtonModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalHeroModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: components,\n imports: [CommonModule, UniversalButtonModule],\n exports: components,\n }]\n }] });\n\nclass NewsComponent {\n constructor(http) {\n this.http = http;\n }\n ngOnInit() {\n this.getWPFeed();\n }\n getWPFeed() {\n // Use the Wordpress API\n const params = this.data.params ? this.data.params : '';\n this.http.get(`${this.data.blogUrl}/wp-json/wp/v2/posts?per_page=5&_embed&${params}`).subscribe((data) => {\n this.data.posts = data;\n if (!this.data.biggerThumbKey) {\n this.data.biggerThumbKey = 'medium_large';\n }\n if (!this.data.smallerThumbKey) {\n this.data.smallerThumbKey = 'medium';\n }\n if (!this.data.linkText) {\n this.data.linkText = 'Read More';\n }\n // remove the extra \"Read More\" link from the returned excerpt\n if (this.data.posts.length > 0) {\n this.data.posts[0].excerpt.rendered = this.data.posts[0].excerpt.rendered.replace(/<([^>]+?)([^>]*?)>(.*?)<\\/a>/gi, '');\n }\n this.dataIsLoaded = true;\n }, (err) => {\n console.error(err.error);\n });\n }\n getThumbnail(post, size) {\n const empty_img = 'data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==';\n if (post._embedded['wp:featuredmedia']) {\n const img = post._embedded['wp:featuredmedia'][0].media_details.sizes[size];\n return img !== undefined ? img.source_url : empty_img;\n }\n else {\n return empty_img;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NewsComponent, deps: [{ token: i1$2.HttpClient }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.2.12\", type: NewsComponent, selector: \"universal-news\", inputs: { data: \"data\" }, ngImport: i0, template: \"
\\n
\\n

\\n

\\n
\\n
\\n
\\n
\\n

\\n

\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n

\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\", styles: [\"body{font-size:16px;line-height:24px;text-align:start;font-style:normal;font-weight:400;font-family:Lato;margin:0}h1{font-size:48px;line-height:56px;text-align:start;color:#353535;font-style:normal;font-weight:800;font-family:Lato}h2{font-size:40px;line-height:48px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:32px;line-height:40px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:24px;line-height:32px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}@media (max-width: 800px){h1{font-size:48px;line-height:56px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h2{font-size:32px;line-height:40px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:16px;line-height:20px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:16px;line-height:20px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}}main{display:flex;flex-direction:column;align-items:center}body{overflow-x:hidden}:focus{outline:none}.modal.full-modal .modal-dialog{width:95%;min-width:95%}:host{background-color:red}.text-center{text-align:center}:host>div{background-color:#fff;display:block;width:100%}:host>div>h1{column-span:all;text-align:center}a{text-decoration:none}a .more-link{text-transform:uppercase;font-weight:400}.articles-container .media{margin-bottom:10px;padding:0 0 10px}.articles-container .media-body h4{margin-top:0;text-transform:uppercase}.featured{overflow:hidden}.featured,.media{border-bottom:none}.img-container{max-height:360px;overflow:hidden}.articles .img-container{max-height:175px}.media{margin-bottom:20px;padding:0}.media img{margin-right:10px;width:89px}@media (min-width: 768px){.articles,.article-container,.article-container>article,.featured-article{display:flex;flex:1 1 auto;width:35%;margin-left:10px}.article-container:first-child{display:none}.articles{flex-wrap:wrap;justify-content:flex-start}.articles-container{display:flex;flex:1 1 auto;flex-wrap:nowrap;justify-content:space-between}.media{display:block;padding:0 0 0 1rem}.media img{width:100%}.media-body{font-size:1.2rem;padding:15px 0}.media-body a{font-size:.875rem}}@media (max-width: 768px){.articles .img-container{max-height:106px}}@media (max-width: 1199px){.articles .img-container{max-height:145px}}@media (max-width: 767px){.articles .img-container{max-height:60px}}\\n\"], dependencies: [{ kind: \"directive\", type: i1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NewsComponent, decorators: [{\n type: Component,\n args: [{ selector: 'universal-news', changeDetection: ChangeDetectionStrategy.OnPush, template: \"
\\n
\\n

\\n

\\n
\\n
\\n
\\n
\\n

\\n

\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n

\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\", styles: [\"body{font-size:16px;line-height:24px;text-align:start;font-style:normal;font-weight:400;font-family:Lato;margin:0}h1{font-size:48px;line-height:56px;text-align:start;color:#353535;font-style:normal;font-weight:800;font-family:Lato}h2{font-size:40px;line-height:48px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:32px;line-height:40px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:24px;line-height:32px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}@media (max-width: 800px){h1{font-size:48px;line-height:56px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h2{font-size:32px;line-height:40px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:16px;line-height:20px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:16px;line-height:20px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}}main{display:flex;flex-direction:column;align-items:center}body{overflow-x:hidden}:focus{outline:none}.modal.full-modal .modal-dialog{width:95%;min-width:95%}:host{background-color:red}.text-center{text-align:center}:host>div{background-color:#fff;display:block;width:100%}:host>div>h1{column-span:all;text-align:center}a{text-decoration:none}a .more-link{text-transform:uppercase;font-weight:400}.articles-container .media{margin-bottom:10px;padding:0 0 10px}.articles-container .media-body h4{margin-top:0;text-transform:uppercase}.featured{overflow:hidden}.featured,.media{border-bottom:none}.img-container{max-height:360px;overflow:hidden}.articles .img-container{max-height:175px}.media{margin-bottom:20px;padding:0}.media img{margin-right:10px;width:89px}@media (min-width: 768px){.articles,.article-container,.article-container>article,.featured-article{display:flex;flex:1 1 auto;width:35%;margin-left:10px}.article-container:first-child{display:none}.articles{flex-wrap:wrap;justify-content:flex-start}.articles-container{display:flex;flex:1 1 auto;flex-wrap:nowrap;justify-content:space-between}.media{display:block;padding:0 0 0 1rem}.media img{width:100%}.media-body{font-size:1.2rem;padding:15px 0}.media-body a{font-size:.875rem}}@media (max-width: 768px){.articles .img-container{max-height:106px}}@media (max-width: 1199px){.articles .img-container{max-height:145px}}@media (max-width: 767px){.articles .img-container{max-height:60px}}\\n\"] }]\n }], ctorParameters: function () { return [{ type: i1$2.HttpClient }]; }, propDecorators: { data: [{\n type: Input\n }] } });\n\nclass UniversalNewsModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalNewsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalNewsModule, declarations: [NewsComponent], imports: [CommonModule, HttpClientModule], exports: [NewsComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalNewsModule, imports: [CommonModule, HttpClientModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalNewsModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [NewsComponent],\n imports: [CommonModule, HttpClientModule],\n exports: [NewsComponent],\n }]\n }] });\n\nclass ToastComponent {\n get dismissible() {\n return this._dismissible ? this._dismissible : false;\n }\n set dismissible(value) {\n this._dismissible = value;\n }\n constructor() {\n this.isDismissed = false;\n this.dismissed = new EventEmitter();\n this.initiated = new EventEmitter();\n }\n ngOnInit() {\n this.setIcon(this.type);\n }\n ngOnChanges(changes) {\n this.setIcon(this.type);\n }\n setIcon(type) {\n this.initiated.emit();\n this.isDismissed = false;\n switch (type) {\n case 'success':\n this.icon = faCheck;\n break;\n case 'info':\n this.icon = faInfoCircle;\n break;\n case 'warn':\n this.icon = faExclamationTriangle;\n break;\n case 'error':\n this.icon = faBan;\n break;\n default:\n this.isDismissed = true;\n }\n }\n close() {\n this.isDismissed = true;\n this.dismissed.emit();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: ToastComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.2.12\", type: ToastComponent, selector: \"universal-toast\", inputs: { title: \"title\", type: \"type\", _dismissible: \"_dismissible\", dismissible: \"dismissible\" }, outputs: { dismissed: \"dismissed\", initiated: \"initiated\" }, usesOnChanges: true, ngImport: i0, template: \"
\\n
\\n \\n
\\n
\\n
\\n {{ title }}\\n
\\n \\n
\\n
\\n \\n
\\n
\\n\", styles: [\":host>div:not(:empty,.dismissed){padding:.6rem;border-radius:5px;border:solid 1px transparent;color:#000;display:flex}:host>div:not(:empty,.dismissed) .icon{margin-right:1rem;margin-left:.5rem}:host div.error:not(:empty){background-color:#fabbcb;border-color:#d22630}:host div.success:not(:empty){background-color:#d4eb8e;border-color:#4a7729}:host div.warn:not(:empty){background-color:#f8e59a;border-color:#d45d00}:host div.info:not(:empty){background-color:#b9d9eb;border-color:#0050b5}.icon,.content,.close button{vertical-align:top}.content{width:100%}.close{opacity:1}.close button{background:none;color:inherit;border:none;padding:0;font:inherit;font-size:larger;font-weight:900;cursor:pointer;outline:inherit}.dismissed{visibility:hidden;opacity:0;height:0;transition:visibility 0s .25s,opacity .25s,height .25s linear}\\n\"], dependencies: [{ kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"component\", type: i2.FaIconComponent, selector: \"fa-icon\", inputs: [\"icon\", \"title\", \"animation\", \"spin\", \"pulse\", \"mask\", \"styles\", \"flip\", \"size\", \"pull\", \"border\", \"inverse\", \"symbol\", \"rotate\", \"fixedWidth\", \"classes\", \"transform\", \"a11yRole\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: ToastComponent, decorators: [{\n type: Component,\n args: [{ selector: 'universal-toast', changeDetection: ChangeDetectionStrategy.OnPush, template: \"
\\n
\\n \\n
\\n
\\n
\\n {{ title }}\\n
\\n \\n
\\n
\\n \\n
\\n
\\n\", styles: [\":host>div:not(:empty,.dismissed){padding:.6rem;border-radius:5px;border:solid 1px transparent;color:#000;display:flex}:host>div:not(:empty,.dismissed) .icon{margin-right:1rem;margin-left:.5rem}:host div.error:not(:empty){background-color:#fabbcb;border-color:#d22630}:host div.success:not(:empty){background-color:#d4eb8e;border-color:#4a7729}:host div.warn:not(:empty){background-color:#f8e59a;border-color:#d45d00}:host div.info:not(:empty){background-color:#b9d9eb;border-color:#0050b5}.icon,.content,.close button{vertical-align:top}.content{width:100%}.close{opacity:1}.close button{background:none;color:inherit;border:none;padding:0;font:inherit;font-size:larger;font-weight:900;cursor:pointer;outline:inherit}.dismissed{visibility:hidden;opacity:0;height:0;transition:visibility 0s .25s,opacity .25s,height .25s linear}\\n\"] }]\n }], ctorParameters: function () { return []; }, propDecorators: { title: [{\n type: Input\n }], type: [{\n type: Input\n }], dismissed: [{\n type: Output\n }], initiated: [{\n type: Output\n }], _dismissible: [{\n type: Input\n }], dismissible: [{\n type: Input\n }] } });\n\nclass UniversalToastModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalToastModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalToastModule, declarations: [ToastComponent], imports: [CommonModule, FontAwesomeModule], exports: [ToastComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalToastModule, imports: [CommonModule, FontAwesomeModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalToastModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [ToastComponent],\n imports: [CommonModule, FontAwesomeModule],\n exports: [ToastComponent],\n }]\n }] });\n\nclass SelectInputComponent extends UniversalBaseInputComponent$1 {\n constructor(dataTransformWrapperService, changeDetectorRef, differs) {\n super(dataTransformWrapperService, changeDetectorRef, differs);\n this.dataTransformWrapperService = dataTransformWrapperService;\n this.changeDetectorRef = changeDetectorRef;\n // empty constructor but if we don't have it the tests fail...\n }\n writeValue(obj) {\n this.data.selected = obj;\n }\n setToggleOpen(newToggle) {\n this.toggled = newToggle;\n this.markTouched();\n }\n processData() {\n super.processData();\n this.toggled = false;\n if (!this.selected || this.data.selected) {\n // we only set this up the first time.\n // map the selected keys to options if they exist\n this.selected = (this.data.selected || [])\n .map((s) => this.data.options.find((o) => o.key === s))\n .filter((so) => !!so);\n }\n }\n hasSelection() {\n return this.selected.length > 0;\n }\n optionClicked(option) {\n if (this.data.multi) {\n const idx = this.idxIfSelected(option);\n if (idx >= 0) {\n // uncheck it\n this.selected.splice(idx, 1);\n }\n else {\n this.selected.push(option);\n }\n }\n else {\n this.selected = [option];\n this.toggled = false;\n }\n const newVal = this.selected.map((so) => so.key);\n this.writeValue(newVal);\n this.bubbleValueChange(newVal);\n }\n idxIfSelected(option) {\n return this.selected.findIndex((so) => so.key === option.key);\n }\n setDisabledState(isDisabled) {\n // do nothing\n }\n getAutomationIdForOption(key) {\n return `${super.getAutomationId('option')}_${key}`;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: SelectInputComponent, deps: [{ token: i1$1.DataTransformWrapperService }, { token: i0.ChangeDetectorRef }, { token: i0.KeyValueDiffers }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.2.12\", type: SelectInputComponent, selector: \"universal-select-input\", providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => SelectInputComponent),\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: SelectInputComponent,\n },\n ], usesInheritance: true, ngImport: i0, template: \"\\n \\n 5 || data.ignoreSmall; else smaller\\\"\\n >\\n \\n \\n \\n
\\n \\n {{ selection.value }}\\n \\n \\n
\\n \\n {{ placeholder }}\\n \\n
\\n \\n \\n {{ selected[0].value }}\\n \\n \\n {{ placeholder }}\\n \\n \\n
\\n \\n
\\n = 0 }\\\"\\n (click)=\\\"this.optionClicked(option)\\\"\\n [attr.data-automation]=\\\"getAutomationIdForOption(option.key)\\\"\\n >\\n \\n \\n \\n {{ option.value }}\\n
\\n \\n \\n
{{ message }}
\\n\\n \\n
\\n = 0 }\\\"\\n (click)=\\\"this.optionClicked(option)\\\"\\n [attr.data-automation]=\\\"getAutomationIdForOption(option.key)\\\"\\n >\\n {{ option.value }}\\n \\n
\\n
\\n\\n\", styles: [\"@charset \\\"UTF-8\\\";body{font-size:16px;line-height:24px;text-align:start;font-style:normal;font-weight:400;font-family:Lato;margin:0}h1{font-size:48px;line-height:56px;text-align:start;color:#353535;font-style:normal;font-weight:800;font-family:Lato}h2{font-size:40px;line-height:48px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:32px;line-height:40px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:24px;line-height:32px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}@media (max-width: 800px){h1{font-size:48px;line-height:56px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h2{font-size:32px;line-height:40px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:16px;line-height:20px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:16px;line-height:20px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}}main{display:flex;flex-direction:column;align-items:center}body{overflow-x:hidden}:focus{outline:none}.modal.full-modal .modal-dialog{width:95%;min-width:95%}:host{display:block}.select{position:relative;margin-bottom:1.3em}.select label{color:#425563;font-size:.875em;display:block;margin-bottom:.5em;width:100%}.select .select-placeholder{color:#688197}.select .inline-select{background-color:#fff;color:#688197;display:inline-flex;border:1px solid #a6bbc8;border-radius:4px}.select .inline-select .inline-option{padding:16px;font-size:16px}.select .inline-select .inline-option:not(:last-of-type){border-right:1px solid #a6bbc8}.select .inline-select .inline-option.selected{background-color:#0072ce;color:#fff}.select .inline-select .inline-option.selected:not(:last-of-type){border-right:1px solid #0072ce}.select .inline-select .inline-option:hover{cursor:pointer;background-color:#0050b5;color:#fff}.select .select-top{display:flex;flex-direction:row;align-items:center;justify-content:space-between;margin:0;box-sizing:unset;width:calc(100% - 1.5em);height:calc(1.75em + 2px);padding:.375em .75em;font-size:1em;font-weight:400;line-height:1.5;color:#333f48;background-color:#fff;background-clip:padding-box;border:1px solid #a6bbc8;border-radius:.25em;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;order:1}.select .select-top:hover{cursor:pointer;border-color:#0072ce}.select .select-top.open{border-color:#69b4e7}.select .select-top.open:after{border-top:none;border-bottom:5px solid #425563}.select .select-top:after{position:absolute;right:12px;content:\\\"\\\";width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #425563}.select .select-top .selected .multi-selections{display:flex}.select .select-top .selected .multi-selections>span{border-radius:12px;font-size:12px;line-height:12px;background-color:#0072ce;color:#fff;padding:8px;margin:2px}.select .select-top .selected .multi-selections>span:hover{background-color:#0050b5}.select .select-top .selected .multi-selections>span .remove{padding-left:8px}.select .select-top .selected .multi-selections>span .remove:after{content:\\\"\\\\d7\\\";width:12px;height:12px}.select .select-option-box{border-radius:4px;border:1px solid #dbe2e9;z-index:999;cursor:default;color:#000;width:100%;font-size:16px;background-color:#fff;position:absolute;top:72px;box-shadow:0 5px 10px #0000001a;-webkit-user-select:none;user-select:none;max-height:200px;overflow:scroll}.select .select-option-box>div{display:flex;align-items:center}.select .select-option-box>div .status{display:inline-block;min-width:24px;min-height:24px;margin:8px;position:relative}.select .select-option-box>div .status .check{display:inline-block;transform:rotate(45deg);position:absolute;height:12.6px;width:3.8px;margin-left:auto;margin-right:auto;left:0;right:0;text-align:center}.select .select-option-box>div.selected .status .check{border-bottom:5px solid #0072ce;border-right:5px solid #0072ce}.select .select-option-box>div:hover{background-color:#0050b5;cursor:pointer;color:#fff}.select .select-option-box>div:hover .status .check{border-bottom:5px solid #ffffff;border-right:5px solid #ffffff}.select.multi .select-top{padding-left:8px}.select.multi .select-option-box>div .status{border:1px solid #425563;border-radius:4px}.select.multi .select-option-box>div.selected .status{border:1px solid #0072ce;background-color:#0072ce}.select.multi .select-option-box>div.selected .status .check{border-color:#fff}.select[forcedstate=invalid] .select-top,.select[forcedstate=invalid] .inline-select{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540;background-image:none!important}.select[forcedstate=invalid] .msg{color:#d45d00}.select[forcedstate=valid] .select-top,.select[forcedstate=valid] .inline-select{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;background-image:none!important}.select .msg{order:2;padding-top:.5rem;font-size:.875em}\\n\"], dependencies: [{ kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i3.ClickEscapeDirective, selector: \"[ClickEsc]\", outputs: [\"ClickEsc\"] }, { kind: \"directive\", type: i3.ClickOutsideDirective, selector: \"[ClickOutside]\", outputs: [\"ClickOutside\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: SelectInputComponent, decorators: [{\n type: Component,\n args: [{ selector: 'universal-select-input', changeDetection: ChangeDetectionStrategy.OnPush, providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => SelectInputComponent),\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: SelectInputComponent,\n },\n ], template: \"\\n \\n 5 || data.ignoreSmall; else smaller\\\"\\n >\\n \\n \\n \\n
\\n \\n {{ selection.value }}\\n \\n \\n
\\n \\n {{ placeholder }}\\n \\n
\\n \\n \\n {{ selected[0].value }}\\n \\n \\n {{ placeholder }}\\n \\n \\n
\\n \\n
\\n = 0 }\\\"\\n (click)=\\\"this.optionClicked(option)\\\"\\n [attr.data-automation]=\\\"getAutomationIdForOption(option.key)\\\"\\n >\\n \\n \\n \\n {{ option.value }}\\n
\\n \\n \\n
{{ message }}
\\n\\n \\n
\\n = 0 }\\\"\\n (click)=\\\"this.optionClicked(option)\\\"\\n [attr.data-automation]=\\\"getAutomationIdForOption(option.key)\\\"\\n >\\n {{ option.value }}\\n \\n
\\n
\\n\\n\", styles: [\"@charset \\\"UTF-8\\\";body{font-size:16px;line-height:24px;text-align:start;font-style:normal;font-weight:400;font-family:Lato;margin:0}h1{font-size:48px;line-height:56px;text-align:start;color:#353535;font-style:normal;font-weight:800;font-family:Lato}h2{font-size:40px;line-height:48px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:32px;line-height:40px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:24px;line-height:32px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}@media (max-width: 800px){h1{font-size:48px;line-height:56px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h2{font-size:32px;line-height:40px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:16px;line-height:20px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:16px;line-height:20px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}}main{display:flex;flex-direction:column;align-items:center}body{overflow-x:hidden}:focus{outline:none}.modal.full-modal .modal-dialog{width:95%;min-width:95%}:host{display:block}.select{position:relative;margin-bottom:1.3em}.select label{color:#425563;font-size:.875em;display:block;margin-bottom:.5em;width:100%}.select .select-placeholder{color:#688197}.select .inline-select{background-color:#fff;color:#688197;display:inline-flex;border:1px solid #a6bbc8;border-radius:4px}.select .inline-select .inline-option{padding:16px;font-size:16px}.select .inline-select .inline-option:not(:last-of-type){border-right:1px solid #a6bbc8}.select .inline-select .inline-option.selected{background-color:#0072ce;color:#fff}.select .inline-select .inline-option.selected:not(:last-of-type){border-right:1px solid #0072ce}.select .inline-select .inline-option:hover{cursor:pointer;background-color:#0050b5;color:#fff}.select .select-top{display:flex;flex-direction:row;align-items:center;justify-content:space-between;margin:0;box-sizing:unset;width:calc(100% - 1.5em);height:calc(1.75em + 2px);padding:.375em .75em;font-size:1em;font-weight:400;line-height:1.5;color:#333f48;background-color:#fff;background-clip:padding-box;border:1px solid #a6bbc8;border-radius:.25em;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;order:1}.select .select-top:hover{cursor:pointer;border-color:#0072ce}.select .select-top.open{border-color:#69b4e7}.select .select-top.open:after{border-top:none;border-bottom:5px solid #425563}.select .select-top:after{position:absolute;right:12px;content:\\\"\\\";width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #425563}.select .select-top .selected .multi-selections{display:flex}.select .select-top .selected .multi-selections>span{border-radius:12px;font-size:12px;line-height:12px;background-color:#0072ce;color:#fff;padding:8px;margin:2px}.select .select-top .selected .multi-selections>span:hover{background-color:#0050b5}.select .select-top .selected .multi-selections>span .remove{padding-left:8px}.select .select-top .selected .multi-selections>span .remove:after{content:\\\"\\\\d7\\\";width:12px;height:12px}.select .select-option-box{border-radius:4px;border:1px solid #dbe2e9;z-index:999;cursor:default;color:#000;width:100%;font-size:16px;background-color:#fff;position:absolute;top:72px;box-shadow:0 5px 10px #0000001a;-webkit-user-select:none;user-select:none;max-height:200px;overflow:scroll}.select .select-option-box>div{display:flex;align-items:center}.select .select-option-box>div .status{display:inline-block;min-width:24px;min-height:24px;margin:8px;position:relative}.select .select-option-box>div .status .check{display:inline-block;transform:rotate(45deg);position:absolute;height:12.6px;width:3.8px;margin-left:auto;margin-right:auto;left:0;right:0;text-align:center}.select .select-option-box>div.selected .status .check{border-bottom:5px solid #0072ce;border-right:5px solid #0072ce}.select .select-option-box>div:hover{background-color:#0050b5;cursor:pointer;color:#fff}.select .select-option-box>div:hover .status .check{border-bottom:5px solid #ffffff;border-right:5px solid #ffffff}.select.multi .select-top{padding-left:8px}.select.multi .select-option-box>div .status{border:1px solid #425563;border-radius:4px}.select.multi .select-option-box>div.selected .status{border:1px solid #0072ce;background-color:#0072ce}.select.multi .select-option-box>div.selected .status .check{border-color:#fff}.select[forcedstate=invalid] .select-top,.select[forcedstate=invalid] .inline-select{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540;background-image:none!important}.select[forcedstate=invalid] .msg{color:#d45d00}.select[forcedstate=valid] .select-top,.select[forcedstate=valid] .inline-select{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;background-image:none!important}.select .msg{order:2;padding-top:.5rem;font-size:.875em}\\n\"] }]\n }], ctorParameters: function () { return [{ type: i1$1.DataTransformWrapperService }, { type: i0.ChangeDetectorRef }, { type: i0.KeyValueDiffers }]; } });\n\nclass SelectComponent extends FormInputTextBaseComponent$1 {\n writeValue(obj) {\n this.data.selected = obj;\n }\n setDisabledState(isDisabled) {\n // do nothing\n }\n optionChanged(evt) {\n this.writeValue(evt.target.value);\n this.bubbleValueChange(evt.target.value);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: SelectComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.2.12\", type: SelectComponent, selector: \"universal-select\", providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => SelectComponent),\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: SelectComponent,\n },\n ], usesInheritance: true, ngImport: i0, template: \"
\\n \\n \\n
{{ message }}
\\n
\", styles: [\"body{font-size:16px;line-height:24px;text-align:start;font-style:normal;font-weight:400;font-family:Lato;margin:0}h1{font-size:48px;line-height:56px;text-align:start;color:#353535;font-style:normal;font-weight:800;font-family:Lato}h2{font-size:40px;line-height:48px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:32px;line-height:40px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:24px;line-height:32px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}@media (max-width: 800px){h1{font-size:48px;line-height:56px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h2{font-size:32px;line-height:40px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:16px;line-height:20px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:16px;line-height:20px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}}main{display:flex;flex-direction:column;align-items:center}body{overflow-x:hidden}:focus{outline:none}.modal.full-modal .modal-dialog{width:95%;min-width:95%}:host{width:100%}:host .input-wrapper{margin-bottom:1.3em;width:100%;display:flex;flex-direction:row;flex-wrap:wrap}:host .input-wrapper label{display:inline-block;margin-bottom:.5em;flex-grow:10;font-size:.875em;color:#425563}:host .input-wrapper .msg{order:2;padding-top:.5rem;font-size:.875em}:host .input-wrapper body{font-size:16px;line-height:24px;text-align:start;font-style:normal;font-weight:400;font-family:Lato;margin:0}:host .input-wrapper h1{font-size:48px;line-height:56px;text-align:start;color:#353535;font-style:normal;font-weight:800;font-family:Lato}:host .input-wrapper h2{font-size:40px;line-height:48px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h3{font-size:32px;line-height:40px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h4{font-size:24px;line-height:32px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}@media (max-width: 800px){:host .input-wrapper h1{font-size:48px;line-height:56px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h2{font-size:32px;line-height:40px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h3{font-size:16px;line-height:20px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h4{font-size:16px;line-height:20px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}}:host .input-wrapper main{display:flex;flex-direction:column;align-items:center}:host .input-wrapper body{overflow-x:hidden}:host .input-wrapper :focus{outline:none}:host .input-wrapper .modal.full-modal .modal-dialog{width:95%;min-width:95%}:host .input-wrapper input{margin:0;display:block;box-sizing:unset;width:calc(100% - 1.5em);height:calc(1.75em + 2px);padding:.375em .75em;font-size:1em;font-weight:400;line-height:1.5;color:#333f48;background-color:#fff;background-clip:padding-box;border:1px solid #a6bbc8;border-radius:.25em;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;order:1}:host .input-wrapper input[type=date]:invalid::-webkit-datetime-edit{color:#688197}:host .input-wrapper input::-ms-expand{background-color:transparent;border:0}:host .input-wrapper input:focus{color:#333f48;background-color:#fff;border-color:#69b4e7;outline:0;box-shadow:0 0 0 .2em #b9d9eb40}:host .input-wrapper input::placeholder{color:#688197;opacity:1}:host.ng-touched.ng-valid .input-wrapper[forcedstate=\\\"\\\"] input:not(:focus):not([type=date]){border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em}:host.ng-touched.ng-valid .input-wrapper[forcedstate=\\\"\\\"] input:not(:focus)[type=date]{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;background-image:none}:host.ng-touched.ng-valid .input-wrapper[forcedstate=\\\"\\\"] select,:host.ng-touched.ng-valid .input-wrapper[forcedstate=\\\"\\\"] textarea:not(:focus){border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;background-image:none}:host.ng-touched.ng-invalid .input-wrapper[forcedstate=\\\"\\\"] input:not(:focus):not([type=date]){border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540}:host.ng-touched.ng-invalid .input-wrapper[forcedstate=\\\"\\\"] input:not(:focus)[type=date]{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540;background-image:none}:host.ng-touched.ng-invalid .input-wrapper[forcedstate=\\\"\\\"] select,:host.ng-touched.ng-invalid .input-wrapper[forcedstate=\\\"\\\"] textarea:not(:focus){border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540;background-image:none}:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] input:not(.ng-pristine,[type=date]):not(:focus):valid{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em}:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] input[type=date],:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] textarea:not(.ng-pristine):not(:focus):valid{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;background-image:none}:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] input:not(.ng-pristine,[type=date]):not(:focus):not(.forced-none):invalid{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540}:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] input[type=date],:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] textarea:not(.ng-pristine):not(:focus):not(.forced-none):invalid{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540;background-image:none}:host .input-wrapper[forcedstate=valid] input{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em}:host .input-wrapper[forcedstate=valid] select,:host .input-wrapper[forcedstate=valid] input[type=date],:host .input-wrapper[forcedstate=valid] textarea{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;background-image:none}:host .input-wrapper[forcedstate=invalid] input{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540}:host .input-wrapper[forcedstate=invalid] input[type=date],:host .input-wrapper[forcedstate=invalid] select,:host .input-wrapper[forcedstate=invalid] textarea{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540;background-image:none}:host .msg{color:#d45d00}@media (prefers-reduced-motion: reduce){:host .input-wrapper input{transition:none}}select{margin:0;display:block;box-sizing:unset;width:calc(100% - 1.5em);height:calc(1.75em + 2px);padding:.375em .75em;font-size:1em;font-weight:400;line-height:1.5;color:#333f48;background-clip:padding-box;border:1px solid #a6bbc8;border-radius:.25em;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;order:1}select:focus{border-color:#69b4e7;outline:0;box-shadow:0 0 0 .2em #b9d9eb40}\\n\"], dependencies: [{ kind: \"directive\", type: i1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i3$1.NgSelectOption, selector: \"option\", inputs: [\"ngValue\", \"value\"] }, { kind: \"directive\", type: i3$1.ɵNgSelectMultipleOption, selector: \"option\", inputs: [\"ngValue\", \"value\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: SelectComponent, decorators: [{\n type: Component,\n args: [{ selector: 'universal-select', changeDetection: ChangeDetectionStrategy.OnPush, providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => SelectComponent),\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: SelectComponent,\n },\n ], template: \"
\\n \\n \\n
{{ message }}
\\n
\", styles: [\"body{font-size:16px;line-height:24px;text-align:start;font-style:normal;font-weight:400;font-family:Lato;margin:0}h1{font-size:48px;line-height:56px;text-align:start;color:#353535;font-style:normal;font-weight:800;font-family:Lato}h2{font-size:40px;line-height:48px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:32px;line-height:40px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:24px;line-height:32px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}@media (max-width: 800px){h1{font-size:48px;line-height:56px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h2{font-size:32px;line-height:40px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:16px;line-height:20px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:16px;line-height:20px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}}main{display:flex;flex-direction:column;align-items:center}body{overflow-x:hidden}:focus{outline:none}.modal.full-modal .modal-dialog{width:95%;min-width:95%}:host{width:100%}:host .input-wrapper{margin-bottom:1.3em;width:100%;display:flex;flex-direction:row;flex-wrap:wrap}:host .input-wrapper label{display:inline-block;margin-bottom:.5em;flex-grow:10;font-size:.875em;color:#425563}:host .input-wrapper .msg{order:2;padding-top:.5rem;font-size:.875em}:host .input-wrapper body{font-size:16px;line-height:24px;text-align:start;font-style:normal;font-weight:400;font-family:Lato;margin:0}:host .input-wrapper h1{font-size:48px;line-height:56px;text-align:start;color:#353535;font-style:normal;font-weight:800;font-family:Lato}:host .input-wrapper h2{font-size:40px;line-height:48px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h3{font-size:32px;line-height:40px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h4{font-size:24px;line-height:32px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}@media (max-width: 800px){:host .input-wrapper h1{font-size:48px;line-height:56px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h2{font-size:32px;line-height:40px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h3{font-size:16px;line-height:20px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h4{font-size:16px;line-height:20px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}}:host .input-wrapper main{display:flex;flex-direction:column;align-items:center}:host .input-wrapper body{overflow-x:hidden}:host .input-wrapper :focus{outline:none}:host .input-wrapper .modal.full-modal .modal-dialog{width:95%;min-width:95%}:host .input-wrapper input{margin:0;display:block;box-sizing:unset;width:calc(100% - 1.5em);height:calc(1.75em + 2px);padding:.375em .75em;font-size:1em;font-weight:400;line-height:1.5;color:#333f48;background-color:#fff;background-clip:padding-box;border:1px solid #a6bbc8;border-radius:.25em;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;order:1}:host .input-wrapper input[type=date]:invalid::-webkit-datetime-edit{color:#688197}:host .input-wrapper input::-ms-expand{background-color:transparent;border:0}:host .input-wrapper input:focus{color:#333f48;background-color:#fff;border-color:#69b4e7;outline:0;box-shadow:0 0 0 .2em #b9d9eb40}:host .input-wrapper input::placeholder{color:#688197;opacity:1}:host.ng-touched.ng-valid .input-wrapper[forcedstate=\\\"\\\"] input:not(:focus):not([type=date]){border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em}:host.ng-touched.ng-valid .input-wrapper[forcedstate=\\\"\\\"] input:not(:focus)[type=date]{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;background-image:none}:host.ng-touched.ng-valid .input-wrapper[forcedstate=\\\"\\\"] select,:host.ng-touched.ng-valid .input-wrapper[forcedstate=\\\"\\\"] textarea:not(:focus){border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;background-image:none}:host.ng-touched.ng-invalid .input-wrapper[forcedstate=\\\"\\\"] input:not(:focus):not([type=date]){border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540}:host.ng-touched.ng-invalid .input-wrapper[forcedstate=\\\"\\\"] input:not(:focus)[type=date]{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540;background-image:none}:host.ng-touched.ng-invalid .input-wrapper[forcedstate=\\\"\\\"] select,:host.ng-touched.ng-invalid .input-wrapper[forcedstate=\\\"\\\"] textarea:not(:focus){border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540;background-image:none}:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] input:not(.ng-pristine,[type=date]):not(:focus):valid{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em}:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] input[type=date],:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] textarea:not(.ng-pristine):not(:focus):valid{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;background-image:none}:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] input:not(.ng-pristine,[type=date]):not(:focus):not(.forced-none):invalid{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540}:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] input[type=date],:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] textarea:not(.ng-pristine):not(:focus):not(.forced-none):invalid{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540;background-image:none}:host .input-wrapper[forcedstate=valid] input{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em}:host .input-wrapper[forcedstate=valid] select,:host .input-wrapper[forcedstate=valid] input[type=date],:host .input-wrapper[forcedstate=valid] textarea{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;background-image:none}:host .input-wrapper[forcedstate=invalid] input{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540}:host .input-wrapper[forcedstate=invalid] input[type=date],:host .input-wrapper[forcedstate=invalid] select,:host .input-wrapper[forcedstate=invalid] textarea{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540;background-image:none}:host .msg{color:#d45d00}@media (prefers-reduced-motion: reduce){:host .input-wrapper input{transition:none}}select{margin:0;display:block;box-sizing:unset;width:calc(100% - 1.5em);height:calc(1.75em + 2px);padding:.375em .75em;font-size:1em;font-weight:400;line-height:1.5;color:#333f48;background-clip:padding-box;border:1px solid #a6bbc8;border-radius:.25em;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;order:1}select:focus{border-color:#69b4e7;outline:0;box-shadow:0 0 0 .2em #b9d9eb40}\\n\"] }]\n }] });\n\nclass UniversalSelectInputModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalSelectInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalSelectInputModule, declarations: [SelectInputComponent, SelectComponent], imports: [CommonModule, FormsModule, UniversalBaseModule, ClickEscapeModule, ClickOutsideModule], exports: [SelectInputComponent, SelectComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalSelectInputModule, imports: [CommonModule, FormsModule, UniversalBaseModule, ClickEscapeModule, ClickOutsideModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalSelectInputModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [SelectInputComponent, SelectComponent],\n imports: [CommonModule, FormsModule, UniversalBaseModule, ClickEscapeModule, ClickOutsideModule],\n exports: [SelectInputComponent, SelectComponent],\n }]\n }] });\n\nclass FormInputMaskedComponent extends FormInputTextBaseComponent$1 {\n constructor(dataTransformWrapperService, changeDetectorRef, differs) {\n // defaults to password type\n super(dataTransformWrapperService, changeDetectorRef, differs);\n this.dataTransformWrapperService = dataTransformWrapperService;\n this.changeDetectorRef = changeDetectorRef;\n this.inputType = 'text';\n this.showToggleBtn = true;\n this.isMasked = true;\n this.btnData = { size: 'large', type: 'primary' };\n this.maskDigitPipe = new MaskDigitsPipe();\n }\n processData() {\n super.processData();\n this.updateMaskValues(false);\n }\n toggleBtn() {\n this.isMasked = !this.isMasked;\n this.updateMaskValues(true);\n }\n setDisabledState(isDisabled) {\n this.disabled = isDisabled || this.isMasked;\n }\n updateMaskValues(revert) {\n if (this.isMasked) {\n if (revert) {\n this.textChange(this.previousMaskedValue);\n }\n const maskedDigits = this.data.maskedToggleData.unmaskedDigits || 0.25;\n this.value = this.maskDigitPipe.transform(this.data.value, maskedDigits);\n this.disabled = true;\n this.toggleBtnText = this.data?.maskedToggleData?.showText || '';\n }\n else {\n if (revert) {\n this.previousMaskedValue = this.data.value;\n this.textChange(''); // make blank\n }\n this.disabled = false;\n this.toggleBtnText = this.data?.maskedToggleData?.hideText || '';\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: FormInputMaskedComponent, deps: [{ token: i1$1.DataTransformWrapperService }, { token: i0.ChangeDetectorRef }, { token: i0.KeyValueDiffers }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.2.12\", type: FormInputMaskedComponent, selector: \"universal-form-input-masked\", providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => FormInputMaskedComponent),\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: FormInputMaskedComponent,\n },\n ], usesInheritance: true, ngImport: i0, template: \"
\\n \\n \\n {{ toggleBtnText }}\\n
{{ message }}
\\n
\\n\", styles: [\"body{font-size:16px;line-height:24px;text-align:start;font-style:normal;font-weight:400;font-family:Lato;margin:0}h1{font-size:48px;line-height:56px;text-align:start;color:#353535;font-style:normal;font-weight:800;font-family:Lato}h2{font-size:40px;line-height:48px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:32px;line-height:40px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:24px;line-height:32px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}@media (max-width: 800px){h1{font-size:48px;line-height:56px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h2{font-size:32px;line-height:40px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:16px;line-height:20px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:16px;line-height:20px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}}main{display:flex;flex-direction:column;align-items:center}body{overflow-x:hidden}:focus{outline:none}.modal.full-modal .modal-dialog{width:95%;min-width:95%}:host{width:100%}:host .input-wrapper{margin-bottom:1.3em;width:100%;display:flex;flex-direction:row;flex-wrap:wrap}:host .input-wrapper label{display:inline-block;margin-bottom:.5em;flex-grow:10;font-size:.875em;color:#425563}:host .input-wrapper .msg{order:2;padding-top:.5rem;font-size:.875em}:host .input-wrapper body{font-size:16px;line-height:24px;text-align:start;font-style:normal;font-weight:400;font-family:Lato;margin:0}:host .input-wrapper h1{font-size:48px;line-height:56px;text-align:start;color:#353535;font-style:normal;font-weight:800;font-family:Lato}:host .input-wrapper h2{font-size:40px;line-height:48px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h3{font-size:32px;line-height:40px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h4{font-size:24px;line-height:32px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}@media (max-width: 800px){:host .input-wrapper h1{font-size:48px;line-height:56px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h2{font-size:32px;line-height:40px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h3{font-size:16px;line-height:20px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h4{font-size:16px;line-height:20px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}}:host .input-wrapper main{display:flex;flex-direction:column;align-items:center}:host .input-wrapper body{overflow-x:hidden}:host .input-wrapper :focus{outline:none}:host .input-wrapper .modal.full-modal .modal-dialog{width:95%;min-width:95%}:host .input-wrapper input{margin:0;display:block;box-sizing:unset;width:calc(100% - 1.5em);height:calc(1.75em + 2px);padding:.375em .75em;font-size:1em;font-weight:400;line-height:1.5;color:#333f48;background-color:#fff;background-clip:padding-box;border:1px solid #a6bbc8;border-radius:.25em;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;order:1}:host .input-wrapper input[type=date]:invalid::-webkit-datetime-edit{color:#688197}:host .input-wrapper input::-ms-expand{background-color:transparent;border:0}:host .input-wrapper input:focus{color:#333f48;background-color:#fff;border-color:#69b4e7;outline:0;box-shadow:0 0 0 .2em #b9d9eb40}:host .input-wrapper input::placeholder{color:#688197;opacity:1}:host.ng-touched.ng-valid .input-wrapper[forcedstate=\\\"\\\"] input:not(:focus):not([type=date]){border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em}:host.ng-touched.ng-valid .input-wrapper[forcedstate=\\\"\\\"] input:not(:focus)[type=date]{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;background-image:none}:host.ng-touched.ng-valid .input-wrapper[forcedstate=\\\"\\\"] select,:host.ng-touched.ng-valid .input-wrapper[forcedstate=\\\"\\\"] textarea:not(:focus){border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;background-image:none}:host.ng-touched.ng-invalid .input-wrapper[forcedstate=\\\"\\\"] input:not(:focus):not([type=date]){border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540}:host.ng-touched.ng-invalid .input-wrapper[forcedstate=\\\"\\\"] input:not(:focus)[type=date]{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540;background-image:none}:host.ng-touched.ng-invalid .input-wrapper[forcedstate=\\\"\\\"] select,:host.ng-touched.ng-invalid .input-wrapper[forcedstate=\\\"\\\"] textarea:not(:focus){border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540;background-image:none}:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] input:not(.ng-pristine,[type=date]):not(:focus):valid{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em}:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] input[type=date],:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] textarea:not(.ng-pristine):not(:focus):valid{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;background-image:none}:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] input:not(.ng-pristine,[type=date]):not(:focus):not(.forced-none):invalid{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540}:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] input[type=date],:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] textarea:not(.ng-pristine):not(:focus):not(.forced-none):invalid{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540;background-image:none}:host .input-wrapper[forcedstate=valid] input{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em}:host .input-wrapper[forcedstate=valid] select,:host .input-wrapper[forcedstate=valid] input[type=date],:host .input-wrapper[forcedstate=valid] textarea{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;background-image:none}:host .input-wrapper[forcedstate=invalid] input{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540}:host .input-wrapper[forcedstate=invalid] input[type=date],:host .input-wrapper[forcedstate=invalid] select,:host .input-wrapper[forcedstate=invalid] textarea{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540;background-image:none}:host .msg{color:#d45d00}@media (prefers-reduced-motion: reduce){:host .input-wrapper input{transition:none}}\\n\", \":host .input-wrapper{display:flex;flex-direction:row;align-items:center}:host .input-wrapper[forcedstate=valid] input{clip-path:-5px 0 -5px -5px}:host .input-wrapper[forcedstate=\\\"\\\"] input:not(.ng-pristine,[type=date]):not(:focus):valid{clip-path:inset(-5px 0 -5px -5px)}:host .input-wrapper label{flex-grow:1;width:100%}:host .input-wrapper input{flex-grow:1;width:unset;order:unset;height:30px}:host .input-wrapper .msg{flex-grow:1;width:100%}:host .input-wrapper universal-button{margin-left:-5px}:host .input-wrapper universal-button ::ng-deep button{border-left:none;border-radius:0 4px 4px 0;height:44px}\\n\"], dependencies: [{ kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i3$1.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i3$1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i3$1.RequiredValidator, selector: \":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]\", inputs: [\"required\"] }, { kind: \"directive\", type: i3$1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"component\", type: i4.ButtonComponent, selector: \"universal-button\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: FormInputMaskedComponent, decorators: [{\n type: Component,\n args: [{ selector: 'universal-form-input-masked', changeDetection: ChangeDetectionStrategy.OnPush, providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => FormInputMaskedComponent),\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: FormInputMaskedComponent,\n },\n ], template: \"
\\n \\n \\n {{ toggleBtnText }}\\n
{{ message }}
\\n
\\n\", styles: [\"body{font-size:16px;line-height:24px;text-align:start;font-style:normal;font-weight:400;font-family:Lato;margin:0}h1{font-size:48px;line-height:56px;text-align:start;color:#353535;font-style:normal;font-weight:800;font-family:Lato}h2{font-size:40px;line-height:48px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:32px;line-height:40px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:24px;line-height:32px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}@media (max-width: 800px){h1{font-size:48px;line-height:56px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h2{font-size:32px;line-height:40px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:16px;line-height:20px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:16px;line-height:20px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}}main{display:flex;flex-direction:column;align-items:center}body{overflow-x:hidden}:focus{outline:none}.modal.full-modal .modal-dialog{width:95%;min-width:95%}:host{width:100%}:host .input-wrapper{margin-bottom:1.3em;width:100%;display:flex;flex-direction:row;flex-wrap:wrap}:host .input-wrapper label{display:inline-block;margin-bottom:.5em;flex-grow:10;font-size:.875em;color:#425563}:host .input-wrapper .msg{order:2;padding-top:.5rem;font-size:.875em}:host .input-wrapper body{font-size:16px;line-height:24px;text-align:start;font-style:normal;font-weight:400;font-family:Lato;margin:0}:host .input-wrapper h1{font-size:48px;line-height:56px;text-align:start;color:#353535;font-style:normal;font-weight:800;font-family:Lato}:host .input-wrapper h2{font-size:40px;line-height:48px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h3{font-size:32px;line-height:40px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h4{font-size:24px;line-height:32px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}@media (max-width: 800px){:host .input-wrapper h1{font-size:48px;line-height:56px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h2{font-size:32px;line-height:40px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h3{font-size:16px;line-height:20px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h4{font-size:16px;line-height:20px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}}:host .input-wrapper main{display:flex;flex-direction:column;align-items:center}:host .input-wrapper body{overflow-x:hidden}:host .input-wrapper :focus{outline:none}:host .input-wrapper .modal.full-modal .modal-dialog{width:95%;min-width:95%}:host .input-wrapper input{margin:0;display:block;box-sizing:unset;width:calc(100% - 1.5em);height:calc(1.75em + 2px);padding:.375em .75em;font-size:1em;font-weight:400;line-height:1.5;color:#333f48;background-color:#fff;background-clip:padding-box;border:1px solid #a6bbc8;border-radius:.25em;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;order:1}:host .input-wrapper input[type=date]:invalid::-webkit-datetime-edit{color:#688197}:host .input-wrapper input::-ms-expand{background-color:transparent;border:0}:host .input-wrapper input:focus{color:#333f48;background-color:#fff;border-color:#69b4e7;outline:0;box-shadow:0 0 0 .2em #b9d9eb40}:host .input-wrapper input::placeholder{color:#688197;opacity:1}:host.ng-touched.ng-valid .input-wrapper[forcedstate=\\\"\\\"] input:not(:focus):not([type=date]){border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em}:host.ng-touched.ng-valid .input-wrapper[forcedstate=\\\"\\\"] input:not(:focus)[type=date]{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;background-image:none}:host.ng-touched.ng-valid .input-wrapper[forcedstate=\\\"\\\"] select,:host.ng-touched.ng-valid .input-wrapper[forcedstate=\\\"\\\"] textarea:not(:focus){border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;background-image:none}:host.ng-touched.ng-invalid .input-wrapper[forcedstate=\\\"\\\"] input:not(:focus):not([type=date]){border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540}:host.ng-touched.ng-invalid .input-wrapper[forcedstate=\\\"\\\"] input:not(:focus)[type=date]{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540;background-image:none}:host.ng-touched.ng-invalid .input-wrapper[forcedstate=\\\"\\\"] select,:host.ng-touched.ng-invalid .input-wrapper[forcedstate=\\\"\\\"] textarea:not(:focus){border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540;background-image:none}:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] input:not(.ng-pristine,[type=date]):not(:focus):valid{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em}:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] input[type=date],:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] textarea:not(.ng-pristine):not(:focus):valid{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;background-image:none}:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] input:not(.ng-pristine,[type=date]):not(:focus):not(.forced-none):invalid{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540}:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] input[type=date],:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] textarea:not(.ng-pristine):not(:focus):not(.forced-none):invalid{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540;background-image:none}:host .input-wrapper[forcedstate=valid] input{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em}:host .input-wrapper[forcedstate=valid] select,:host .input-wrapper[forcedstate=valid] input[type=date],:host .input-wrapper[forcedstate=valid] textarea{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;background-image:none}:host .input-wrapper[forcedstate=invalid] input{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540}:host .input-wrapper[forcedstate=invalid] input[type=date],:host .input-wrapper[forcedstate=invalid] select,:host .input-wrapper[forcedstate=invalid] textarea{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540;background-image:none}:host .msg{color:#d45d00}@media (prefers-reduced-motion: reduce){:host .input-wrapper input{transition:none}}\\n\", \":host .input-wrapper{display:flex;flex-direction:row;align-items:center}:host .input-wrapper[forcedstate=valid] input{clip-path:-5px 0 -5px -5px}:host .input-wrapper[forcedstate=\\\"\\\"] input:not(.ng-pristine,[type=date]):not(:focus):valid{clip-path:inset(-5px 0 -5px -5px)}:host .input-wrapper label{flex-grow:1;width:100%}:host .input-wrapper input{flex-grow:1;width:unset;order:unset;height:30px}:host .input-wrapper .msg{flex-grow:1;width:100%}:host .input-wrapper universal-button{margin-left:-5px}:host .input-wrapper universal-button ::ng-deep button{border-left:none;border-radius:0 4px 4px 0;height:44px}\\n\"] }]\n }], ctorParameters: function () { return [{ type: i1$1.DataTransformWrapperService }, { type: i0.ChangeDetectorRef }, { type: i0.KeyValueDiffers }]; } });\n\nclass UniversalFormInputMaskedModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalFormInputMaskedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalFormInputMaskedModule, declarations: [FormInputMaskedComponent], imports: [CommonModule, FormsModule, UniversalBaseModule, UniversalFormInputTextBaseModule$1, UniversalButtonModule], exports: [FormInputMaskedComponent, UniversalButtonModule, FormsModule, UniversalBaseModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalFormInputMaskedModule, imports: [CommonModule, FormsModule, UniversalBaseModule, UniversalFormInputTextBaseModule$1, UniversalButtonModule, UniversalButtonModule, FormsModule, UniversalBaseModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalFormInputMaskedModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [FormInputMaskedComponent],\n imports: [CommonModule, FormsModule, UniversalBaseModule, UniversalFormInputTextBaseModule$1, UniversalButtonModule],\n exports: [FormInputMaskedComponent, UniversalButtonModule, FormsModule, UniversalBaseModule],\n }]\n }] });\n\nclass FormInputTextComponent extends FormInputTextBaseComponent$1 {\n constructor(dataTransformWrapperService, changeDetectorRef, differs) {\n super(dataTransformWrapperService, changeDetectorRef, differs);\n this.dataTransformWrapperService = dataTransformWrapperService;\n this.changeDetectorRef = changeDetectorRef;\n this.inputType = 'text';\n this.showToggleBtn = false;\n this.btnData = {};\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: FormInputTextComponent, deps: [{ token: i1$1.DataTransformWrapperService }, { token: i0.ChangeDetectorRef }, { token: i0.KeyValueDiffers }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.2.12\", type: FormInputTextComponent, selector: \"universal-form-input-text\", providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => FormInputTextComponent),\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: FormInputTextComponent,\n },\n ], usesInheritance: true, ngImport: i0, template: \"
\\n \\n \\n {{ toggleBtnText }}\\n
{{ message }}
\\n
\\n\", styles: [\"body{font-size:16px;line-height:24px;text-align:start;font-style:normal;font-weight:400;font-family:Lato;margin:0}h1{font-size:48px;line-height:56px;text-align:start;color:#353535;font-style:normal;font-weight:800;font-family:Lato}h2{font-size:40px;line-height:48px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:32px;line-height:40px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:24px;line-height:32px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}@media (max-width: 800px){h1{font-size:48px;line-height:56px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h2{font-size:32px;line-height:40px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:16px;line-height:20px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:16px;line-height:20px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}}main{display:flex;flex-direction:column;align-items:center}body{overflow-x:hidden}:focus{outline:none}.modal.full-modal .modal-dialog{width:95%;min-width:95%}:host{width:100%}:host .input-wrapper{margin-bottom:1.3em;width:100%;display:flex;flex-direction:row;flex-wrap:wrap}:host .input-wrapper label{display:inline-block;margin-bottom:.5em;flex-grow:10;font-size:.875em;color:#425563}:host .input-wrapper .msg{order:2;padding-top:.5rem;font-size:.875em}:host .input-wrapper body{font-size:16px;line-height:24px;text-align:start;font-style:normal;font-weight:400;font-family:Lato;margin:0}:host .input-wrapper h1{font-size:48px;line-height:56px;text-align:start;color:#353535;font-style:normal;font-weight:800;font-family:Lato}:host .input-wrapper h2{font-size:40px;line-height:48px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h3{font-size:32px;line-height:40px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h4{font-size:24px;line-height:32px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}@media (max-width: 800px){:host .input-wrapper h1{font-size:48px;line-height:56px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h2{font-size:32px;line-height:40px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h3{font-size:16px;line-height:20px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h4{font-size:16px;line-height:20px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}}:host .input-wrapper main{display:flex;flex-direction:column;align-items:center}:host .input-wrapper body{overflow-x:hidden}:host .input-wrapper :focus{outline:none}:host .input-wrapper .modal.full-modal .modal-dialog{width:95%;min-width:95%}:host .input-wrapper input{margin:0;display:block;box-sizing:unset;width:calc(100% - 1.5em);height:calc(1.75em + 2px);padding:.375em .75em;font-size:1em;font-weight:400;line-height:1.5;color:#333f48;background-color:#fff;background-clip:padding-box;border:1px solid #a6bbc8;border-radius:.25em;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;order:1}:host .input-wrapper input[type=date]:invalid::-webkit-datetime-edit{color:#688197}:host .input-wrapper input::-ms-expand{background-color:transparent;border:0}:host .input-wrapper input:focus{color:#333f48;background-color:#fff;border-color:#69b4e7;outline:0;box-shadow:0 0 0 .2em #b9d9eb40}:host .input-wrapper input::placeholder{color:#688197;opacity:1}:host.ng-touched.ng-valid .input-wrapper[forcedstate=\\\"\\\"] input:not(:focus):not([type=date]){border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em}:host.ng-touched.ng-valid .input-wrapper[forcedstate=\\\"\\\"] input:not(:focus)[type=date]{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;background-image:none}:host.ng-touched.ng-valid .input-wrapper[forcedstate=\\\"\\\"] select,:host.ng-touched.ng-valid .input-wrapper[forcedstate=\\\"\\\"] textarea:not(:focus){border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;background-image:none}:host.ng-touched.ng-invalid .input-wrapper[forcedstate=\\\"\\\"] input:not(:focus):not([type=date]){border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540}:host.ng-touched.ng-invalid .input-wrapper[forcedstate=\\\"\\\"] input:not(:focus)[type=date]{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540;background-image:none}:host.ng-touched.ng-invalid .input-wrapper[forcedstate=\\\"\\\"] select,:host.ng-touched.ng-invalid .input-wrapper[forcedstate=\\\"\\\"] textarea:not(:focus){border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540;background-image:none}:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] input:not(.ng-pristine,[type=date]):not(:focus):valid{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em}:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] input[type=date],:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] textarea:not(.ng-pristine):not(:focus):valid{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;background-image:none}:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] input:not(.ng-pristine,[type=date]):not(:focus):not(.forced-none):invalid{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540}:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] input[type=date],:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] textarea:not(.ng-pristine):not(:focus):not(.forced-none):invalid{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540;background-image:none}:host .input-wrapper[forcedstate=valid] input{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em}:host .input-wrapper[forcedstate=valid] select,:host .input-wrapper[forcedstate=valid] input[type=date],:host .input-wrapper[forcedstate=valid] textarea{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;background-image:none}:host .input-wrapper[forcedstate=invalid] input{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540}:host .input-wrapper[forcedstate=invalid] input[type=date],:host .input-wrapper[forcedstate=invalid] select,:host .input-wrapper[forcedstate=invalid] textarea{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540;background-image:none}:host .msg{color:#d45d00}@media (prefers-reduced-motion: reduce){:host .input-wrapper input{transition:none}}\\n\"], dependencies: [{ kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i3$1.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i3$1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i3$1.RequiredValidator, selector: \":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]\", inputs: [\"required\"] }, { kind: \"directive\", type: i3$1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"component\", type: i4.ButtonComponent, selector: \"universal-button\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: FormInputTextComponent, decorators: [{\n type: Component,\n args: [{ selector: 'universal-form-input-text', changeDetection: ChangeDetectionStrategy.OnPush, providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => FormInputTextComponent),\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: FormInputTextComponent,\n },\n ], template: \"
\\n \\n \\n {{ toggleBtnText }}\\n
{{ message }}
\\n
\\n\", styles: [\"body{font-size:16px;line-height:24px;text-align:start;font-style:normal;font-weight:400;font-family:Lato;margin:0}h1{font-size:48px;line-height:56px;text-align:start;color:#353535;font-style:normal;font-weight:800;font-family:Lato}h2{font-size:40px;line-height:48px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:32px;line-height:40px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:24px;line-height:32px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}@media (max-width: 800px){h1{font-size:48px;line-height:56px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h2{font-size:32px;line-height:40px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:16px;line-height:20px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:16px;line-height:20px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}}main{display:flex;flex-direction:column;align-items:center}body{overflow-x:hidden}:focus{outline:none}.modal.full-modal .modal-dialog{width:95%;min-width:95%}:host{width:100%}:host .input-wrapper{margin-bottom:1.3em;width:100%;display:flex;flex-direction:row;flex-wrap:wrap}:host .input-wrapper label{display:inline-block;margin-bottom:.5em;flex-grow:10;font-size:.875em;color:#425563}:host .input-wrapper .msg{order:2;padding-top:.5rem;font-size:.875em}:host .input-wrapper body{font-size:16px;line-height:24px;text-align:start;font-style:normal;font-weight:400;font-family:Lato;margin:0}:host .input-wrapper h1{font-size:48px;line-height:56px;text-align:start;color:#353535;font-style:normal;font-weight:800;font-family:Lato}:host .input-wrapper h2{font-size:40px;line-height:48px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h3{font-size:32px;line-height:40px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h4{font-size:24px;line-height:32px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}@media (max-width: 800px){:host .input-wrapper h1{font-size:48px;line-height:56px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h2{font-size:32px;line-height:40px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h3{font-size:16px;line-height:20px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h4{font-size:16px;line-height:20px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}}:host .input-wrapper main{display:flex;flex-direction:column;align-items:center}:host .input-wrapper body{overflow-x:hidden}:host .input-wrapper :focus{outline:none}:host .input-wrapper .modal.full-modal .modal-dialog{width:95%;min-width:95%}:host .input-wrapper input{margin:0;display:block;box-sizing:unset;width:calc(100% - 1.5em);height:calc(1.75em + 2px);padding:.375em .75em;font-size:1em;font-weight:400;line-height:1.5;color:#333f48;background-color:#fff;background-clip:padding-box;border:1px solid #a6bbc8;border-radius:.25em;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;order:1}:host .input-wrapper input[type=date]:invalid::-webkit-datetime-edit{color:#688197}:host .input-wrapper input::-ms-expand{background-color:transparent;border:0}:host .input-wrapper input:focus{color:#333f48;background-color:#fff;border-color:#69b4e7;outline:0;box-shadow:0 0 0 .2em #b9d9eb40}:host .input-wrapper input::placeholder{color:#688197;opacity:1}:host.ng-touched.ng-valid .input-wrapper[forcedstate=\\\"\\\"] input:not(:focus):not([type=date]){border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em}:host.ng-touched.ng-valid .input-wrapper[forcedstate=\\\"\\\"] input:not(:focus)[type=date]{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;background-image:none}:host.ng-touched.ng-valid .input-wrapper[forcedstate=\\\"\\\"] select,:host.ng-touched.ng-valid .input-wrapper[forcedstate=\\\"\\\"] textarea:not(:focus){border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;background-image:none}:host.ng-touched.ng-invalid .input-wrapper[forcedstate=\\\"\\\"] input:not(:focus):not([type=date]){border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540}:host.ng-touched.ng-invalid .input-wrapper[forcedstate=\\\"\\\"] input:not(:focus)[type=date]{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540;background-image:none}:host.ng-touched.ng-invalid .input-wrapper[forcedstate=\\\"\\\"] select,:host.ng-touched.ng-invalid .input-wrapper[forcedstate=\\\"\\\"] textarea:not(:focus){border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540;background-image:none}:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] input:not(.ng-pristine,[type=date]):not(:focus):valid{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em}:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] input[type=date],:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] textarea:not(.ng-pristine):not(:focus):valid{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;background-image:none}:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] input:not(.ng-pristine,[type=date]):not(:focus):not(.forced-none):invalid{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540}:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] input[type=date],:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] textarea:not(.ng-pristine):not(:focus):not(.forced-none):invalid{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540;background-image:none}:host .input-wrapper[forcedstate=valid] input{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em}:host .input-wrapper[forcedstate=valid] select,:host .input-wrapper[forcedstate=valid] input[type=date],:host .input-wrapper[forcedstate=valid] textarea{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;background-image:none}:host .input-wrapper[forcedstate=invalid] input{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540}:host .input-wrapper[forcedstate=invalid] input[type=date],:host .input-wrapper[forcedstate=invalid] select,:host .input-wrapper[forcedstate=invalid] textarea{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540;background-image:none}:host .msg{color:#d45d00}@media (prefers-reduced-motion: reduce){:host .input-wrapper input{transition:none}}\\n\"] }]\n }], ctorParameters: function () { return [{ type: i1$1.DataTransformWrapperService }, { type: i0.ChangeDetectorRef }, { type: i0.KeyValueDiffers }]; } });\n\nclass UniversalFormInputTextModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalFormInputTextModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalFormInputTextModule, declarations: [FormInputTextComponent], imports: [CommonModule, FormsModule, UniversalFormInputTextBaseModule$1, UniversalButtonModule], exports: [FormInputTextComponent, FormsModule, UniversalButtonModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalFormInputTextModule, imports: [CommonModule, FormsModule, UniversalFormInputTextBaseModule$1, UniversalButtonModule, FormsModule, UniversalButtonModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalFormInputTextModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [FormInputTextComponent],\n imports: [CommonModule, FormsModule, UniversalFormInputTextBaseModule$1, UniversalButtonModule],\n exports: [FormInputTextComponent, FormsModule, UniversalButtonModule],\n }]\n }] });\n\nclass FormInputPasswordComponent extends FormInputTextBaseComponent$1 {\n constructor(dataTransformWrapperService, changeDetectorRef, differs) {\n // defaults to password type\n super(dataTransformWrapperService, changeDetectorRef, differs);\n this.dataTransformWrapperService = dataTransformWrapperService;\n this.changeDetectorRef = changeDetectorRef;\n this.inputType = 'password';\n this.showToggleBtn = true;\n this.passwordIsHidden = true;\n this.btnData = { size: 'mini', type: 'org-inverse' };\n }\n processData() {\n super.processData();\n this.toggleBtnText = this.visibilityToText();\n }\n toggleBtn() {\n this.passwordIsHidden = !this.passwordIsHidden;\n if (this.passwordIsHidden) {\n this.inputType = 'password';\n }\n else {\n this.inputType = 'text';\n }\n this.toggleBtnText = this.visibilityToText();\n }\n visibilityToText() {\n if (this.data && this.data.passwordToggleData) {\n return this.passwordIsHidden ? this.data.passwordToggleData.showText : this.data.passwordToggleData.hideText;\n }\n return '';\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: FormInputPasswordComponent, deps: [{ token: i1$1.DataTransformWrapperService }, { token: i0.ChangeDetectorRef }, { token: i0.KeyValueDiffers }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.2.12\", type: FormInputPasswordComponent, selector: \"universal-form-input-password\", usesInheritance: true, ngImport: i0, template: \"
\\n \\n \\n {{ toggleBtnText }}\\n
{{ message }}
\\n
\\n\", styles: [\"body{font-size:16px;line-height:24px;text-align:start;font-style:normal;font-weight:400;font-family:Lato;margin:0}h1{font-size:48px;line-height:56px;text-align:start;color:#353535;font-style:normal;font-weight:800;font-family:Lato}h2{font-size:40px;line-height:48px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:32px;line-height:40px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:24px;line-height:32px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}@media (max-width: 800px){h1{font-size:48px;line-height:56px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h2{font-size:32px;line-height:40px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:16px;line-height:20px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:16px;line-height:20px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}}main{display:flex;flex-direction:column;align-items:center}body{overflow-x:hidden}:focus{outline:none}.modal.full-modal .modal-dialog{width:95%;min-width:95%}:host{width:100%}:host .input-wrapper{margin-bottom:1.3em;width:100%;display:flex;flex-direction:row;flex-wrap:wrap}:host .input-wrapper label{display:inline-block;margin-bottom:.5em;flex-grow:10;font-size:.875em;color:#425563}:host .input-wrapper .msg{order:2;padding-top:.5rem;font-size:.875em}:host .input-wrapper body{font-size:16px;line-height:24px;text-align:start;font-style:normal;font-weight:400;font-family:Lato;margin:0}:host .input-wrapper h1{font-size:48px;line-height:56px;text-align:start;color:#353535;font-style:normal;font-weight:800;font-family:Lato}:host .input-wrapper h2{font-size:40px;line-height:48px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h3{font-size:32px;line-height:40px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h4{font-size:24px;line-height:32px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}@media (max-width: 800px){:host .input-wrapper h1{font-size:48px;line-height:56px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h2{font-size:32px;line-height:40px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h3{font-size:16px;line-height:20px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h4{font-size:16px;line-height:20px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}}:host .input-wrapper main{display:flex;flex-direction:column;align-items:center}:host .input-wrapper body{overflow-x:hidden}:host .input-wrapper :focus{outline:none}:host .input-wrapper .modal.full-modal .modal-dialog{width:95%;min-width:95%}:host .input-wrapper input{margin:0;display:block;box-sizing:unset;width:calc(100% - 1.5em);height:calc(1.75em + 2px);padding:.375em .75em;font-size:1em;font-weight:400;line-height:1.5;color:#333f48;background-color:#fff;background-clip:padding-box;border:1px solid #a6bbc8;border-radius:.25em;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;order:1}:host .input-wrapper input[type=date]:invalid::-webkit-datetime-edit{color:#688197}:host .input-wrapper input::-ms-expand{background-color:transparent;border:0}:host .input-wrapper input:focus{color:#333f48;background-color:#fff;border-color:#69b4e7;outline:0;box-shadow:0 0 0 .2em #b9d9eb40}:host .input-wrapper input::placeholder{color:#688197;opacity:1}:host.ng-touched.ng-valid .input-wrapper[forcedstate=\\\"\\\"] input:not(:focus):not([type=date]){border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em}:host.ng-touched.ng-valid .input-wrapper[forcedstate=\\\"\\\"] input:not(:focus)[type=date]{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;background-image:none}:host.ng-touched.ng-valid .input-wrapper[forcedstate=\\\"\\\"] select,:host.ng-touched.ng-valid .input-wrapper[forcedstate=\\\"\\\"] textarea:not(:focus){border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;background-image:none}:host.ng-touched.ng-invalid .input-wrapper[forcedstate=\\\"\\\"] input:not(:focus):not([type=date]){border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540}:host.ng-touched.ng-invalid .input-wrapper[forcedstate=\\\"\\\"] input:not(:focus)[type=date]{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540;background-image:none}:host.ng-touched.ng-invalid .input-wrapper[forcedstate=\\\"\\\"] select,:host.ng-touched.ng-invalid .input-wrapper[forcedstate=\\\"\\\"] textarea:not(:focus){border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540;background-image:none}:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] input:not(.ng-pristine,[type=date]):not(:focus):valid{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em}:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] input[type=date],:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] textarea:not(.ng-pristine):not(:focus):valid{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;background-image:none}:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] input:not(.ng-pristine,[type=date]):not(:focus):not(.forced-none):invalid{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540}:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] input[type=date],:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] textarea:not(.ng-pristine):not(:focus):not(.forced-none):invalid{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540;background-image:none}:host .input-wrapper[forcedstate=valid] input{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em}:host .input-wrapper[forcedstate=valid] select,:host .input-wrapper[forcedstate=valid] input[type=date],:host .input-wrapper[forcedstate=valid] textarea{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;background-image:none}:host .input-wrapper[forcedstate=invalid] input{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540}:host .input-wrapper[forcedstate=invalid] input[type=date],:host .input-wrapper[forcedstate=invalid] select,:host .input-wrapper[forcedstate=invalid] textarea{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540;background-image:none}:host .msg{color:#d45d00}@media (prefers-reduced-motion: reduce){:host .input-wrapper input{transition:none}}\\n\", \"\"], dependencies: [{ kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i3$1.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i3$1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i3$1.RequiredValidator, selector: \":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]\", inputs: [\"required\"] }, { kind: \"directive\", type: i3$1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"component\", type: i4.ButtonComponent, selector: \"universal-button\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: FormInputPasswordComponent, decorators: [{\n type: Component,\n args: [{ selector: 'universal-form-input-password', changeDetection: ChangeDetectionStrategy.OnPush, template: \"
\\n \\n \\n {{ toggleBtnText }}\\n
{{ message }}
\\n
\\n\", styles: [\"body{font-size:16px;line-height:24px;text-align:start;font-style:normal;font-weight:400;font-family:Lato;margin:0}h1{font-size:48px;line-height:56px;text-align:start;color:#353535;font-style:normal;font-weight:800;font-family:Lato}h2{font-size:40px;line-height:48px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:32px;line-height:40px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:24px;line-height:32px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}@media (max-width: 800px){h1{font-size:48px;line-height:56px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h2{font-size:32px;line-height:40px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:16px;line-height:20px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:16px;line-height:20px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}}main{display:flex;flex-direction:column;align-items:center}body{overflow-x:hidden}:focus{outline:none}.modal.full-modal .modal-dialog{width:95%;min-width:95%}:host{width:100%}:host .input-wrapper{margin-bottom:1.3em;width:100%;display:flex;flex-direction:row;flex-wrap:wrap}:host .input-wrapper label{display:inline-block;margin-bottom:.5em;flex-grow:10;font-size:.875em;color:#425563}:host .input-wrapper .msg{order:2;padding-top:.5rem;font-size:.875em}:host .input-wrapper body{font-size:16px;line-height:24px;text-align:start;font-style:normal;font-weight:400;font-family:Lato;margin:0}:host .input-wrapper h1{font-size:48px;line-height:56px;text-align:start;color:#353535;font-style:normal;font-weight:800;font-family:Lato}:host .input-wrapper h2{font-size:40px;line-height:48px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h3{font-size:32px;line-height:40px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h4{font-size:24px;line-height:32px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}@media (max-width: 800px){:host .input-wrapper h1{font-size:48px;line-height:56px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h2{font-size:32px;line-height:40px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h3{font-size:16px;line-height:20px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h4{font-size:16px;line-height:20px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}}:host .input-wrapper main{display:flex;flex-direction:column;align-items:center}:host .input-wrapper body{overflow-x:hidden}:host .input-wrapper :focus{outline:none}:host .input-wrapper .modal.full-modal .modal-dialog{width:95%;min-width:95%}:host .input-wrapper input{margin:0;display:block;box-sizing:unset;width:calc(100% - 1.5em);height:calc(1.75em + 2px);padding:.375em .75em;font-size:1em;font-weight:400;line-height:1.5;color:#333f48;background-color:#fff;background-clip:padding-box;border:1px solid #a6bbc8;border-radius:.25em;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;order:1}:host .input-wrapper input[type=date]:invalid::-webkit-datetime-edit{color:#688197}:host .input-wrapper input::-ms-expand{background-color:transparent;border:0}:host .input-wrapper input:focus{color:#333f48;background-color:#fff;border-color:#69b4e7;outline:0;box-shadow:0 0 0 .2em #b9d9eb40}:host .input-wrapper input::placeholder{color:#688197;opacity:1}:host.ng-touched.ng-valid .input-wrapper[forcedstate=\\\"\\\"] input:not(:focus):not([type=date]){border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em}:host.ng-touched.ng-valid .input-wrapper[forcedstate=\\\"\\\"] input:not(:focus)[type=date]{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;background-image:none}:host.ng-touched.ng-valid .input-wrapper[forcedstate=\\\"\\\"] select,:host.ng-touched.ng-valid .input-wrapper[forcedstate=\\\"\\\"] textarea:not(:focus){border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;background-image:none}:host.ng-touched.ng-invalid .input-wrapper[forcedstate=\\\"\\\"] input:not(:focus):not([type=date]){border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540}:host.ng-touched.ng-invalid .input-wrapper[forcedstate=\\\"\\\"] input:not(:focus)[type=date]{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540;background-image:none}:host.ng-touched.ng-invalid .input-wrapper[forcedstate=\\\"\\\"] select,:host.ng-touched.ng-invalid .input-wrapper[forcedstate=\\\"\\\"] textarea:not(:focus){border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540;background-image:none}:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] input:not(.ng-pristine,[type=date]):not(:focus):valid{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em}:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] input[type=date],:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] textarea:not(.ng-pristine):not(:focus):valid{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;background-image:none}:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] input:not(.ng-pristine,[type=date]):not(:focus):not(.forced-none):invalid{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540}:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] input[type=date],:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] textarea:not(.ng-pristine):not(:focus):not(.forced-none):invalid{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540;background-image:none}:host .input-wrapper[forcedstate=valid] input{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em}:host .input-wrapper[forcedstate=valid] select,:host .input-wrapper[forcedstate=valid] input[type=date],:host .input-wrapper[forcedstate=valid] textarea{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;background-image:none}:host .input-wrapper[forcedstate=invalid] input{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540}:host .input-wrapper[forcedstate=invalid] input[type=date],:host .input-wrapper[forcedstate=invalid] select,:host .input-wrapper[forcedstate=invalid] textarea{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540;background-image:none}:host .msg{color:#d45d00}@media (prefers-reduced-motion: reduce){:host .input-wrapper input{transition:none}}\\n\"] }]\n }], ctorParameters: function () { return [{ type: i1$1.DataTransformWrapperService }, { type: i0.ChangeDetectorRef }, { type: i0.KeyValueDiffers }]; } });\n\nclass UniversalFormInputPasswordModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalFormInputPasswordModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalFormInputPasswordModule, declarations: [FormInputPasswordComponent], imports: [CommonModule, FormsModule, UniversalBaseModule, UniversalFormInputTextBaseModule$1, UniversalButtonModule], exports: [FormInputPasswordComponent, UniversalButtonModule, FormsModule, UniversalBaseModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalFormInputPasswordModule, imports: [CommonModule, FormsModule, UniversalBaseModule, UniversalFormInputTextBaseModule$1, UniversalButtonModule, UniversalButtonModule, FormsModule, UniversalBaseModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalFormInputPasswordModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [FormInputPasswordComponent],\n imports: [CommonModule, FormsModule, UniversalBaseModule, UniversalFormInputTextBaseModule$1, UniversalButtonModule],\n exports: [FormInputPasswordComponent, UniversalButtonModule, FormsModule, UniversalBaseModule],\n }]\n }] });\n\nclass FormInputDateComponent extends FormInputTextBaseComponent$1 {\n constructor(dataTransformWrapperService, changeDetectorRef, differs) {\n super(dataTransformWrapperService, changeDetectorRef, differs);\n this.dataTransformWrapperService = dataTransformWrapperService;\n this.changeDetectorRef = changeDetectorRef;\n this.inputType = 'date';\n this.showToggleBtn = false;\n this.btnData = {};\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: FormInputDateComponent, deps: [{ token: i1$1.DataTransformWrapperService }, { token: i0.ChangeDetectorRef }, { token: i0.KeyValueDiffers }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.2.12\", type: FormInputDateComponent, selector: \"universal-form-input-date\", providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => FormInputDateComponent),\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: FormInputDateComponent,\n },\n ], usesInheritance: true, ngImport: i0, template: \"
\\n \\n \\n {{ toggleBtnText }}\\n
{{ message }}
\\n
\\n\", styles: [\"body{font-size:16px;line-height:24px;text-align:start;font-style:normal;font-weight:400;font-family:Lato;margin:0}h1{font-size:48px;line-height:56px;text-align:start;color:#353535;font-style:normal;font-weight:800;font-family:Lato}h2{font-size:40px;line-height:48px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:32px;line-height:40px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:24px;line-height:32px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}@media (max-width: 800px){h1{font-size:48px;line-height:56px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h2{font-size:32px;line-height:40px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:16px;line-height:20px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:16px;line-height:20px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}}main{display:flex;flex-direction:column;align-items:center}body{overflow-x:hidden}:focus{outline:none}.modal.full-modal .modal-dialog{width:95%;min-width:95%}:host{width:100%}:host .input-wrapper{margin-bottom:1.3em;width:100%;display:flex;flex-direction:row;flex-wrap:wrap}:host .input-wrapper label{display:inline-block;margin-bottom:.5em;flex-grow:10;font-size:.875em;color:#425563}:host .input-wrapper .msg{order:2;padding-top:.5rem;font-size:.875em}:host .input-wrapper body{font-size:16px;line-height:24px;text-align:start;font-style:normal;font-weight:400;font-family:Lato;margin:0}:host .input-wrapper h1{font-size:48px;line-height:56px;text-align:start;color:#353535;font-style:normal;font-weight:800;font-family:Lato}:host .input-wrapper h2{font-size:40px;line-height:48px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h3{font-size:32px;line-height:40px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h4{font-size:24px;line-height:32px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}@media (max-width: 800px){:host .input-wrapper h1{font-size:48px;line-height:56px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h2{font-size:32px;line-height:40px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h3{font-size:16px;line-height:20px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h4{font-size:16px;line-height:20px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}}:host .input-wrapper main{display:flex;flex-direction:column;align-items:center}:host .input-wrapper body{overflow-x:hidden}:host .input-wrapper :focus{outline:none}:host .input-wrapper .modal.full-modal .modal-dialog{width:95%;min-width:95%}:host .input-wrapper input{margin:0;display:block;box-sizing:unset;width:calc(100% - 1.5em);height:calc(1.75em + 2px);padding:.375em .75em;font-size:1em;font-weight:400;line-height:1.5;color:#333f48;background-color:#fff;background-clip:padding-box;border:1px solid #a6bbc8;border-radius:.25em;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;order:1}:host .input-wrapper input[type=date]:invalid::-webkit-datetime-edit{color:#688197}:host .input-wrapper input::-ms-expand{background-color:transparent;border:0}:host .input-wrapper input:focus{color:#333f48;background-color:#fff;border-color:#69b4e7;outline:0;box-shadow:0 0 0 .2em #b9d9eb40}:host .input-wrapper input::placeholder{color:#688197;opacity:1}:host.ng-touched.ng-valid .input-wrapper[forcedstate=\\\"\\\"] input:not(:focus):not([type=date]){border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em}:host.ng-touched.ng-valid .input-wrapper[forcedstate=\\\"\\\"] input:not(:focus)[type=date]{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;background-image:none}:host.ng-touched.ng-valid .input-wrapper[forcedstate=\\\"\\\"] select,:host.ng-touched.ng-valid .input-wrapper[forcedstate=\\\"\\\"] textarea:not(:focus){border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;background-image:none}:host.ng-touched.ng-invalid .input-wrapper[forcedstate=\\\"\\\"] input:not(:focus):not([type=date]){border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540}:host.ng-touched.ng-invalid .input-wrapper[forcedstate=\\\"\\\"] input:not(:focus)[type=date]{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540;background-image:none}:host.ng-touched.ng-invalid .input-wrapper[forcedstate=\\\"\\\"] select,:host.ng-touched.ng-invalid .input-wrapper[forcedstate=\\\"\\\"] textarea:not(:focus){border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540;background-image:none}:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] input:not(.ng-pristine,[type=date]):not(:focus):valid{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em}:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] input[type=date],:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] textarea:not(.ng-pristine):not(:focus):valid{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;background-image:none}:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] input:not(.ng-pristine,[type=date]):not(:focus):not(.forced-none):invalid{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540}:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] input[type=date],:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] textarea:not(.ng-pristine):not(:focus):not(.forced-none):invalid{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540;background-image:none}:host .input-wrapper[forcedstate=valid] input{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em}:host .input-wrapper[forcedstate=valid] select,:host .input-wrapper[forcedstate=valid] input[type=date],:host .input-wrapper[forcedstate=valid] textarea{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;background-image:none}:host .input-wrapper[forcedstate=invalid] input{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540}:host .input-wrapper[forcedstate=invalid] input[type=date],:host .input-wrapper[forcedstate=invalid] select,:host .input-wrapper[forcedstate=invalid] textarea{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540;background-image:none}:host .msg{color:#d45d00}@media (prefers-reduced-motion: reduce){:host .input-wrapper input{transition:none}}\\n\"], dependencies: [{ kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i3$1.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i3$1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i3$1.RequiredValidator, selector: \":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]\", inputs: [\"required\"] }, { kind: \"directive\", type: i3$1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"component\", type: i4.ButtonComponent, selector: \"universal-button\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: FormInputDateComponent, decorators: [{\n type: Component,\n args: [{ selector: 'universal-form-input-date', changeDetection: ChangeDetectionStrategy.OnPush, providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => FormInputDateComponent),\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: FormInputDateComponent,\n },\n ], template: \"
\\n \\n \\n {{ toggleBtnText }}\\n
{{ message }}
\\n
\\n\", styles: [\"body{font-size:16px;line-height:24px;text-align:start;font-style:normal;font-weight:400;font-family:Lato;margin:0}h1{font-size:48px;line-height:56px;text-align:start;color:#353535;font-style:normal;font-weight:800;font-family:Lato}h2{font-size:40px;line-height:48px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:32px;line-height:40px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:24px;line-height:32px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}@media (max-width: 800px){h1{font-size:48px;line-height:56px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h2{font-size:32px;line-height:40px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:16px;line-height:20px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:16px;line-height:20px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}}main{display:flex;flex-direction:column;align-items:center}body{overflow-x:hidden}:focus{outline:none}.modal.full-modal .modal-dialog{width:95%;min-width:95%}:host{width:100%}:host .input-wrapper{margin-bottom:1.3em;width:100%;display:flex;flex-direction:row;flex-wrap:wrap}:host .input-wrapper label{display:inline-block;margin-bottom:.5em;flex-grow:10;font-size:.875em;color:#425563}:host .input-wrapper .msg{order:2;padding-top:.5rem;font-size:.875em}:host .input-wrapper body{font-size:16px;line-height:24px;text-align:start;font-style:normal;font-weight:400;font-family:Lato;margin:0}:host .input-wrapper h1{font-size:48px;line-height:56px;text-align:start;color:#353535;font-style:normal;font-weight:800;font-family:Lato}:host .input-wrapper h2{font-size:40px;line-height:48px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h3{font-size:32px;line-height:40px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h4{font-size:24px;line-height:32px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}@media (max-width: 800px){:host .input-wrapper h1{font-size:48px;line-height:56px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h2{font-size:32px;line-height:40px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h3{font-size:16px;line-height:20px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h4{font-size:16px;line-height:20px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}}:host .input-wrapper main{display:flex;flex-direction:column;align-items:center}:host .input-wrapper body{overflow-x:hidden}:host .input-wrapper :focus{outline:none}:host .input-wrapper .modal.full-modal .modal-dialog{width:95%;min-width:95%}:host .input-wrapper input{margin:0;display:block;box-sizing:unset;width:calc(100% - 1.5em);height:calc(1.75em + 2px);padding:.375em .75em;font-size:1em;font-weight:400;line-height:1.5;color:#333f48;background-color:#fff;background-clip:padding-box;border:1px solid #a6bbc8;border-radius:.25em;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;order:1}:host .input-wrapper input[type=date]:invalid::-webkit-datetime-edit{color:#688197}:host .input-wrapper input::-ms-expand{background-color:transparent;border:0}:host .input-wrapper input:focus{color:#333f48;background-color:#fff;border-color:#69b4e7;outline:0;box-shadow:0 0 0 .2em #b9d9eb40}:host .input-wrapper input::placeholder{color:#688197;opacity:1}:host.ng-touched.ng-valid .input-wrapper[forcedstate=\\\"\\\"] input:not(:focus):not([type=date]){border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em}:host.ng-touched.ng-valid .input-wrapper[forcedstate=\\\"\\\"] input:not(:focus)[type=date]{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;background-image:none}:host.ng-touched.ng-valid .input-wrapper[forcedstate=\\\"\\\"] select,:host.ng-touched.ng-valid .input-wrapper[forcedstate=\\\"\\\"] textarea:not(:focus){border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;background-image:none}:host.ng-touched.ng-invalid .input-wrapper[forcedstate=\\\"\\\"] input:not(:focus):not([type=date]){border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540}:host.ng-touched.ng-invalid .input-wrapper[forcedstate=\\\"\\\"] input:not(:focus)[type=date]{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540;background-image:none}:host.ng-touched.ng-invalid .input-wrapper[forcedstate=\\\"\\\"] select,:host.ng-touched.ng-invalid .input-wrapper[forcedstate=\\\"\\\"] textarea:not(:focus){border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540;background-image:none}:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] input:not(.ng-pristine,[type=date]):not(:focus):valid{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em}:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] input[type=date],:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] textarea:not(.ng-pristine):not(:focus):valid{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;background-image:none}:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] input:not(.ng-pristine,[type=date]):not(:focus):not(.forced-none):invalid{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540}:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] input[type=date],:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] textarea:not(.ng-pristine):not(:focus):not(.forced-none):invalid{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540;background-image:none}:host .input-wrapper[forcedstate=valid] input{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em}:host .input-wrapper[forcedstate=valid] select,:host .input-wrapper[forcedstate=valid] input[type=date],:host .input-wrapper[forcedstate=valid] textarea{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;background-image:none}:host .input-wrapper[forcedstate=invalid] input{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540}:host .input-wrapper[forcedstate=invalid] input[type=date],:host .input-wrapper[forcedstate=invalid] select,:host .input-wrapper[forcedstate=invalid] textarea{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540;background-image:none}:host .msg{color:#d45d00}@media (prefers-reduced-motion: reduce){:host .input-wrapper input{transition:none}}\\n\"] }]\n }], ctorParameters: function () { return [{ type: i1$1.DataTransformWrapperService }, { type: i0.ChangeDetectorRef }, { type: i0.KeyValueDiffers }]; } });\n\nclass UniversalFormInputDateModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalFormInputDateModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalFormInputDateModule, declarations: [FormInputDateComponent], imports: [CommonModule, FormsModule, UniversalFormInputTextBaseModule$1, UniversalButtonModule], exports: [FormInputDateComponent, FormsModule, UniversalButtonModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalFormInputDateModule, imports: [CommonModule, FormsModule, UniversalFormInputTextBaseModule$1, UniversalButtonModule, FormsModule, UniversalButtonModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalFormInputDateModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [FormInputDateComponent],\n imports: [CommonModule, FormsModule, UniversalFormInputTextBaseModule$1, UniversalButtonModule],\n exports: [FormInputDateComponent, FormsModule, UniversalButtonModule],\n }]\n }] });\n\nclass FormInputWrappedComponent {\n isTranscludedInvalid() {\n const transcludedInput = this.inputWrapper?.nativeElement.querySelector('input');\n if (transcludedInput) {\n return transcludedInput.classList.contains('ng-invalid');\n }\n return false;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: FormInputWrappedComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.2.12\", type: FormInputWrappedComponent, selector: \"universal-form-input-wrapped\", inputs: { message: \"message\", label: \"label\" }, viewQueries: [{ propertyName: \"inputWrapper\", first: true, predicate: [\"inputWrapper\"], descendants: true }], ngImport: i0, template: \"
\\n \\n \\n
{{message}}
\\n
\\n\", styles: [\"body{font-size:16px;line-height:24px;text-align:start;font-style:normal;font-weight:400;font-family:Lato;margin:0}h1{font-size:48px;line-height:56px;text-align:start;color:#353535;font-style:normal;font-weight:800;font-family:Lato}h2{font-size:40px;line-height:48px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:32px;line-height:40px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:24px;line-height:32px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}@media (max-width: 800px){h1{font-size:48px;line-height:56px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h2{font-size:32px;line-height:40px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:16px;line-height:20px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:16px;line-height:20px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}}main{display:flex;flex-direction:column;align-items:center}body{overflow-x:hidden}:focus{outline:none}.modal.full-modal .modal-dialog{width:95%;min-width:95%}:host{width:100%}:host .input-wrapper{margin-bottom:1.3em;width:100%;display:flex;flex-direction:row;flex-wrap:wrap}:host .input-wrapper label{display:inline-block;margin-bottom:.5em;flex-grow:10;font-size:.875em;color:#425563}:host .input-wrapper .msg{order:2;padding-top:.5rem;font-size:.875em}:host .input-wrapper.invalid:not(:focus-within) .msg{color:#d45d00}:host .input-wrapper ::ng-deep body{font-size:16px;line-height:24px;text-align:start;font-style:normal;font-weight:400;font-family:Lato;margin:0}:host .input-wrapper ::ng-deep h1{font-size:48px;line-height:56px;text-align:start;color:#353535;font-style:normal;font-weight:800;font-family:Lato}:host .input-wrapper ::ng-deep h2{font-size:40px;line-height:48px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper ::ng-deep h3{font-size:32px;line-height:40px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper ::ng-deep h4{font-size:24px;line-height:32px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}@media (max-width: 800px){:host .input-wrapper ::ng-deep h1{font-size:48px;line-height:56px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper ::ng-deep h2{font-size:32px;line-height:40px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper ::ng-deep h3{font-size:16px;line-height:20px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper ::ng-deep h4{font-size:16px;line-height:20px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}}:host .input-wrapper ::ng-deep main{display:flex;flex-direction:column;align-items:center}:host .input-wrapper ::ng-deep body{overflow-x:hidden}:host .input-wrapper ::ng-deep :focus{outline:none}:host .input-wrapper ::ng-deep .modal.full-modal .modal-dialog{width:95%;min-width:95%}:host .input-wrapper ::ng-deep input{margin:0;display:block;box-sizing:unset;width:calc(100% - 1.5em);height:calc(1.75em + 2px);padding:.375em .75em;font-size:1em;font-weight:400;line-height:1.5;color:#333f48;background-color:#fff;background-clip:padding-box;border:1px solid #a6bbc8;border-radius:.25em;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;order:1}:host .input-wrapper ::ng-deep input[type=date]:invalid::-webkit-datetime-edit{color:#688197}:host .input-wrapper ::ng-deep input::-ms-expand{background-color:transparent;border:0}:host .input-wrapper ::ng-deep input:focus{color:#333f48;background-color:#fff;border-color:#69b4e7;outline:0;box-shadow:0 0 0 .2em #b9d9eb40}:host .input-wrapper ::ng-deep input::placeholder{color:#688197;opacity:1}@media (prefers-reduced-motion: reduce){:host .input-wrapper ::ng-deep input{transition:none}}:host .input-wrapper ::ng-deep input.ng-touched:not(:focus).ng-valid:not([type=date]){border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em}:host .input-wrapper ::ng-deep input.ng-touched:not(:focus).ng-valid[type=date]{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;background-image:none}:host .input-wrapper ::ng-deep input.ng-touched:not(:focus).ng-invalid:not([type=date]){border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540}:host .input-wrapper ::ng-deep input.ng-touched:not(:focus).ng-invalid[type=date]{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540;background-image:none}\\n\"], dependencies: [{ kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: FormInputWrappedComponent, decorators: [{\n type: Component,\n args: [{ selector: 'universal-form-input-wrapped', changeDetection: ChangeDetectionStrategy.OnPush, template: \"
\\n \\n \\n
{{message}}
\\n
\\n\", styles: [\"body{font-size:16px;line-height:24px;text-align:start;font-style:normal;font-weight:400;font-family:Lato;margin:0}h1{font-size:48px;line-height:56px;text-align:start;color:#353535;font-style:normal;font-weight:800;font-family:Lato}h2{font-size:40px;line-height:48px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:32px;line-height:40px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:24px;line-height:32px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}@media (max-width: 800px){h1{font-size:48px;line-height:56px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h2{font-size:32px;line-height:40px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:16px;line-height:20px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:16px;line-height:20px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}}main{display:flex;flex-direction:column;align-items:center}body{overflow-x:hidden}:focus{outline:none}.modal.full-modal .modal-dialog{width:95%;min-width:95%}:host{width:100%}:host .input-wrapper{margin-bottom:1.3em;width:100%;display:flex;flex-direction:row;flex-wrap:wrap}:host .input-wrapper label{display:inline-block;margin-bottom:.5em;flex-grow:10;font-size:.875em;color:#425563}:host .input-wrapper .msg{order:2;padding-top:.5rem;font-size:.875em}:host .input-wrapper.invalid:not(:focus-within) .msg{color:#d45d00}:host .input-wrapper ::ng-deep body{font-size:16px;line-height:24px;text-align:start;font-style:normal;font-weight:400;font-family:Lato;margin:0}:host .input-wrapper ::ng-deep h1{font-size:48px;line-height:56px;text-align:start;color:#353535;font-style:normal;font-weight:800;font-family:Lato}:host .input-wrapper ::ng-deep h2{font-size:40px;line-height:48px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper ::ng-deep h3{font-size:32px;line-height:40px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper ::ng-deep h4{font-size:24px;line-height:32px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}@media (max-width: 800px){:host .input-wrapper ::ng-deep h1{font-size:48px;line-height:56px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper ::ng-deep h2{font-size:32px;line-height:40px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper ::ng-deep h3{font-size:16px;line-height:20px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper ::ng-deep h4{font-size:16px;line-height:20px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}}:host .input-wrapper ::ng-deep main{display:flex;flex-direction:column;align-items:center}:host .input-wrapper ::ng-deep body{overflow-x:hidden}:host .input-wrapper ::ng-deep :focus{outline:none}:host .input-wrapper ::ng-deep .modal.full-modal .modal-dialog{width:95%;min-width:95%}:host .input-wrapper ::ng-deep input{margin:0;display:block;box-sizing:unset;width:calc(100% - 1.5em);height:calc(1.75em + 2px);padding:.375em .75em;font-size:1em;font-weight:400;line-height:1.5;color:#333f48;background-color:#fff;background-clip:padding-box;border:1px solid #a6bbc8;border-radius:.25em;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;order:1}:host .input-wrapper ::ng-deep input[type=date]:invalid::-webkit-datetime-edit{color:#688197}:host .input-wrapper ::ng-deep input::-ms-expand{background-color:transparent;border:0}:host .input-wrapper ::ng-deep input:focus{color:#333f48;background-color:#fff;border-color:#69b4e7;outline:0;box-shadow:0 0 0 .2em #b9d9eb40}:host .input-wrapper ::ng-deep input::placeholder{color:#688197;opacity:1}@media (prefers-reduced-motion: reduce){:host .input-wrapper ::ng-deep input{transition:none}}:host .input-wrapper ::ng-deep input.ng-touched:not(:focus).ng-valid:not([type=date]){border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em}:host .input-wrapper ::ng-deep input.ng-touched:not(:focus).ng-valid[type=date]{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;background-image:none}:host .input-wrapper ::ng-deep input.ng-touched:not(:focus).ng-invalid:not([type=date]){border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540}:host .input-wrapper ::ng-deep input.ng-touched:not(:focus).ng-invalid[type=date]{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540;background-image:none}\\n\"] }]\n }], propDecorators: { message: [{\n type: Input\n }], label: [{\n type: Input\n }], inputWrapper: [{\n type: ViewChild,\n args: ['inputWrapper']\n }] } });\n\nclass UniversalFormInputWrappedModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalFormInputWrappedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalFormInputWrappedModule, declarations: [FormInputWrappedComponent], imports: [CommonModule], exports: [FormInputWrappedComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalFormInputWrappedModule, imports: [CommonModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalFormInputWrappedModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [FormInputWrappedComponent],\n imports: [CommonModule],\n exports: [FormInputWrappedComponent],\n }]\n }] });\n\nclass FormInputNumberComponent extends FormInputTextBaseComponent$1 {\n constructor(dataTransformWrapperService, changeDetectorRef, differs) {\n super(dataTransformWrapperService, changeDetectorRef, differs);\n this.dataTransformWrapperService = dataTransformWrapperService;\n this.changeDetectorRef = changeDetectorRef;\n this.inputType = 'number';\n this.showToggleBtn = false;\n this.btnData = {};\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: FormInputNumberComponent, deps: [{ token: i1$1.DataTransformWrapperService }, { token: i0.ChangeDetectorRef }, { token: i0.KeyValueDiffers }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.2.12\", type: FormInputNumberComponent, selector: \"universal-form-input-number\", providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => FormInputNumberComponent),\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: FormInputNumberComponent,\n },\n ], usesInheritance: true, ngImport: i0, template: \"
\\n \\n \\n {{ toggleBtnText }}\\n
{{ message }}
\\n
\\n\", styles: [\"body{font-size:16px;line-height:24px;text-align:start;font-style:normal;font-weight:400;font-family:Lato;margin:0}h1{font-size:48px;line-height:56px;text-align:start;color:#353535;font-style:normal;font-weight:800;font-family:Lato}h2{font-size:40px;line-height:48px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:32px;line-height:40px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:24px;line-height:32px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}@media (max-width: 800px){h1{font-size:48px;line-height:56px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h2{font-size:32px;line-height:40px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:16px;line-height:20px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:16px;line-height:20px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}}main{display:flex;flex-direction:column;align-items:center}body{overflow-x:hidden}:focus{outline:none}.modal.full-modal .modal-dialog{width:95%;min-width:95%}:host{width:100%}:host .input-wrapper{margin-bottom:1.3em;width:100%;display:flex;flex-direction:row;flex-wrap:wrap}:host .input-wrapper label{display:inline-block;margin-bottom:.5em;flex-grow:10;font-size:.875em;color:#425563}:host .input-wrapper .msg{order:2;padding-top:.5rem;font-size:.875em}:host .input-wrapper body{font-size:16px;line-height:24px;text-align:start;font-style:normal;font-weight:400;font-family:Lato;margin:0}:host .input-wrapper h1{font-size:48px;line-height:56px;text-align:start;color:#353535;font-style:normal;font-weight:800;font-family:Lato}:host .input-wrapper h2{font-size:40px;line-height:48px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h3{font-size:32px;line-height:40px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h4{font-size:24px;line-height:32px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}@media (max-width: 800px){:host .input-wrapper h1{font-size:48px;line-height:56px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h2{font-size:32px;line-height:40px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h3{font-size:16px;line-height:20px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h4{font-size:16px;line-height:20px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}}:host .input-wrapper main{display:flex;flex-direction:column;align-items:center}:host .input-wrapper body{overflow-x:hidden}:host .input-wrapper :focus{outline:none}:host .input-wrapper .modal.full-modal .modal-dialog{width:95%;min-width:95%}:host .input-wrapper input{margin:0;display:block;box-sizing:unset;width:calc(100% - 1.5em);height:calc(1.75em + 2px);padding:.375em .75em;font-size:1em;font-weight:400;line-height:1.5;color:#333f48;background-color:#fff;background-clip:padding-box;border:1px solid #a6bbc8;border-radius:.25em;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;order:1}:host .input-wrapper input[type=date]:invalid::-webkit-datetime-edit{color:#688197}:host .input-wrapper input::-ms-expand{background-color:transparent;border:0}:host .input-wrapper input:focus{color:#333f48;background-color:#fff;border-color:#69b4e7;outline:0;box-shadow:0 0 0 .2em #b9d9eb40}:host .input-wrapper input::placeholder{color:#688197;opacity:1}:host.ng-touched.ng-valid .input-wrapper[forcedstate=\\\"\\\"] input:not(:focus):not([type=date]){border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em}:host.ng-touched.ng-valid .input-wrapper[forcedstate=\\\"\\\"] input:not(:focus)[type=date]{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;background-image:none}:host.ng-touched.ng-valid .input-wrapper[forcedstate=\\\"\\\"] select,:host.ng-touched.ng-valid .input-wrapper[forcedstate=\\\"\\\"] textarea:not(:focus){border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;background-image:none}:host.ng-touched.ng-invalid .input-wrapper[forcedstate=\\\"\\\"] input:not(:focus):not([type=date]){border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540}:host.ng-touched.ng-invalid .input-wrapper[forcedstate=\\\"\\\"] input:not(:focus)[type=date]{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540;background-image:none}:host.ng-touched.ng-invalid .input-wrapper[forcedstate=\\\"\\\"] select,:host.ng-touched.ng-invalid .input-wrapper[forcedstate=\\\"\\\"] textarea:not(:focus){border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540;background-image:none}:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] input:not(.ng-pristine,[type=date]):not(:focus):valid{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em}:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] input[type=date],:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] textarea:not(.ng-pristine):not(:focus):valid{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;background-image:none}:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] input:not(.ng-pristine,[type=date]):not(:focus):not(.forced-none):invalid{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540}:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] input[type=date],:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] textarea:not(.ng-pristine):not(:focus):not(.forced-none):invalid{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540;background-image:none}:host .input-wrapper[forcedstate=valid] input{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em}:host .input-wrapper[forcedstate=valid] select,:host .input-wrapper[forcedstate=valid] input[type=date],:host .input-wrapper[forcedstate=valid] textarea{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;background-image:none}:host .input-wrapper[forcedstate=invalid] input{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540}:host .input-wrapper[forcedstate=invalid] input[type=date],:host .input-wrapper[forcedstate=invalid] select,:host .input-wrapper[forcedstate=invalid] textarea{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540;background-image:none}:host .msg{color:#d45d00}@media (prefers-reduced-motion: reduce){:host .input-wrapper input{transition:none}}\\n\"], dependencies: [{ kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i3$1.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i3$1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i3$1.RequiredValidator, selector: \":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]\", inputs: [\"required\"] }, { kind: \"directive\", type: i3$1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"component\", type: i4.ButtonComponent, selector: \"universal-button\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: FormInputNumberComponent, decorators: [{\n type: Component,\n args: [{ selector: 'universal-form-input-number', changeDetection: ChangeDetectionStrategy.OnPush, providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => FormInputNumberComponent),\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: FormInputNumberComponent,\n },\n ], template: \"
\\n \\n \\n {{ toggleBtnText }}\\n
{{ message }}
\\n
\\n\", styles: [\"body{font-size:16px;line-height:24px;text-align:start;font-style:normal;font-weight:400;font-family:Lato;margin:0}h1{font-size:48px;line-height:56px;text-align:start;color:#353535;font-style:normal;font-weight:800;font-family:Lato}h2{font-size:40px;line-height:48px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:32px;line-height:40px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:24px;line-height:32px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}@media (max-width: 800px){h1{font-size:48px;line-height:56px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h2{font-size:32px;line-height:40px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h3{font-size:16px;line-height:20px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}h4{font-size:16px;line-height:20px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}}main{display:flex;flex-direction:column;align-items:center}body{overflow-x:hidden}:focus{outline:none}.modal.full-modal .modal-dialog{width:95%;min-width:95%}:host{width:100%}:host .input-wrapper{margin-bottom:1.3em;width:100%;display:flex;flex-direction:row;flex-wrap:wrap}:host .input-wrapper label{display:inline-block;margin-bottom:.5em;flex-grow:10;font-size:.875em;color:#425563}:host .input-wrapper .msg{order:2;padding-top:.5rem;font-size:.875em}:host .input-wrapper body{font-size:16px;line-height:24px;text-align:start;font-style:normal;font-weight:400;font-family:Lato;margin:0}:host .input-wrapper h1{font-size:48px;line-height:56px;text-align:start;color:#353535;font-style:normal;font-weight:800;font-family:Lato}:host .input-wrapper h2{font-size:40px;line-height:48px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h3{font-size:32px;line-height:40px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h4{font-size:24px;line-height:32px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}@media (max-width: 800px){:host .input-wrapper h1{font-size:48px;line-height:56px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h2{font-size:32px;line-height:40px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h3{font-size:16px;line-height:20px;text-align:start;font-style:normal;font-weight:700;font-family:Lato}:host .input-wrapper h4{font-size:16px;line-height:20px;text-align:start;color:#353535;font-style:normal;font-weight:700;font-family:Lato}}:host .input-wrapper main{display:flex;flex-direction:column;align-items:center}:host .input-wrapper body{overflow-x:hidden}:host .input-wrapper :focus{outline:none}:host .input-wrapper .modal.full-modal .modal-dialog{width:95%;min-width:95%}:host .input-wrapper input{margin:0;display:block;box-sizing:unset;width:calc(100% - 1.5em);height:calc(1.75em + 2px);padding:.375em .75em;font-size:1em;font-weight:400;line-height:1.5;color:#333f48;background-color:#fff;background-clip:padding-box;border:1px solid #a6bbc8;border-radius:.25em;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;order:1}:host .input-wrapper input[type=date]:invalid::-webkit-datetime-edit{color:#688197}:host .input-wrapper input::-ms-expand{background-color:transparent;border:0}:host .input-wrapper input:focus{color:#333f48;background-color:#fff;border-color:#69b4e7;outline:0;box-shadow:0 0 0 .2em #b9d9eb40}:host .input-wrapper input::placeholder{color:#688197;opacity:1}:host.ng-touched.ng-valid .input-wrapper[forcedstate=\\\"\\\"] input:not(:focus):not([type=date]){border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em}:host.ng-touched.ng-valid .input-wrapper[forcedstate=\\\"\\\"] input:not(:focus)[type=date]{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;background-image:none}:host.ng-touched.ng-valid .input-wrapper[forcedstate=\\\"\\\"] select,:host.ng-touched.ng-valid .input-wrapper[forcedstate=\\\"\\\"] textarea:not(:focus){border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;background-image:none}:host.ng-touched.ng-invalid .input-wrapper[forcedstate=\\\"\\\"] input:not(:focus):not([type=date]){border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540}:host.ng-touched.ng-invalid .input-wrapper[forcedstate=\\\"\\\"] input:not(:focus)[type=date]{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540;background-image:none}:host.ng-touched.ng-invalid .input-wrapper[forcedstate=\\\"\\\"] select,:host.ng-touched.ng-invalid .input-wrapper[forcedstate=\\\"\\\"] textarea:not(:focus){border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540;background-image:none}:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] input:not(.ng-pristine,[type=date]):not(:focus):valid{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em}:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] input[type=date],:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] textarea:not(.ng-pristine):not(:focus):valid{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;background-image:none}:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] input:not(.ng-pristine,[type=date]):not(:focus):not(.forced-none):invalid{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540}:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] input[type=date],:host:not(.ng-touched) .input-wrapper[forcedstate=\\\"\\\"] textarea:not(.ng-pristine):not(:focus):not(.forced-none):invalid{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540;background-image:none}:host .input-wrapper[forcedstate=valid] input{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em}:host .input-wrapper[forcedstate=valid] select,:host .input-wrapper[forcedstate=valid] input[type=date],:host .input-wrapper[forcedstate=valid] textarea{border-color:#509e2f;box-shadow:0 0 0 .2em #4a772940;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%234A7729' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;background-image:none}:host .input-wrapper[forcedstate=invalid] input{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540}:host .input-wrapper[forcedstate=invalid] input[type=date],:host .input-wrapper[forcedstate=invalid] select,:host .input-wrapper[forcedstate=invalid] textarea{border-color:#d22630;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23D22630' viewBox='0 0 576 512'%3e%3cpath d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'%3e%3c/path%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:calc(100% - .5625em) center;background-size:1.125em 1.125em;box-shadow:0 0 0 .2em #dc354540;background-image:none}:host .msg{color:#d45d00}@media (prefers-reduced-motion: reduce){:host .input-wrapper input{transition:none}}\\n\"] }]\n }], ctorParameters: function () { return [{ type: i1$1.DataTransformWrapperService }, { type: i0.ChangeDetectorRef }, { type: i0.KeyValueDiffers }]; } });\n\nclass UniversalFormInputNumberModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalFormInputNumberModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalFormInputNumberModule, declarations: [FormInputNumberComponent], imports: [CommonModule, FormsModule, UniversalFormInputTextBaseModule$1, UniversalButtonModule], exports: [FormInputNumberComponent, FormsModule, UniversalButtonModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalFormInputNumberModule, imports: [CommonModule, FormsModule, UniversalFormInputTextBaseModule$1, UniversalButtonModule, FormsModule, UniversalButtonModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalFormInputNumberModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [FormInputNumberComponent],\n imports: [CommonModule, FormsModule, UniversalFormInputTextBaseModule$1, UniversalButtonModule],\n exports: [FormInputNumberComponent, FormsModule, UniversalButtonModule],\n }]\n }] });\n\nclass ToggleComponent extends UniversalBaseInputComponent$1 {\n constructor() {\n super(...arguments);\n this.checked = false;\n this.isDisabled = false;\n }\n setDisabledState(isDisabled) {\n this.isDisabled = isDisabled;\n }\n writeValue(checked) {\n this.checked = checked;\n }\n onChange(checked) {\n this.writeValue(checked);\n this.bubbleValueChange(checked);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: ToggleComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.2.12\", type: ToggleComponent, selector: \"universal-toggle\", inputs: { checked: \"checked\" }, providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => ToggleComponent),\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: ToggleComponent,\n },\n ], usesInheritance: true, ngImport: i0, template: \"\\n \\n \\n\\n\", styles: [\".checkbox-container{display:inline-block;position:relative;width:60px;height:34px}.toggle-checkbox{display:inline-block;width:100%;height:100%;appearance:none;border-radius:34px;background-color:#7a99ac;cursor:pointer;transition:.4s}.toggle-checkbox+.slide{position:absolute;content:\\\"\\\";border-radius:50%;height:26px;width:26px;left:8px;top:7px;background-color:#fff;transition:.4s;pointer-events:none}.toggle-checkbox:checked{background-color:#0072ce}.toggle-checkbox:checked+.slide{transform:translate(26px)}.toggle-checkbox:checked:focus{background-color:#418fde}.toggle-checkbox:focus{outline:3px solid #84bd00;background-color:#a6bbc8}.toggle-checkbox:disabled{background-color:#dbe2e9}\\n\"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: ToggleComponent, decorators: [{\n type: Component,\n args: [{ selector: 'universal-toggle', changeDetection: ChangeDetectionStrategy.OnPush, providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => ToggleComponent),\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: ToggleComponent,\n },\n ], template: \"\\n \\n \\n\\n\", styles: [\".checkbox-container{display:inline-block;position:relative;width:60px;height:34px}.toggle-checkbox{display:inline-block;width:100%;height:100%;appearance:none;border-radius:34px;background-color:#7a99ac;cursor:pointer;transition:.4s}.toggle-checkbox+.slide{position:absolute;content:\\\"\\\";border-radius:50%;height:26px;width:26px;left:8px;top:7px;background-color:#fff;transition:.4s;pointer-events:none}.toggle-checkbox:checked{background-color:#0072ce}.toggle-checkbox:checked+.slide{transform:translate(26px)}.toggle-checkbox:checked:focus{background-color:#418fde}.toggle-checkbox:focus{outline:3px solid #84bd00;background-color:#a6bbc8}.toggle-checkbox:disabled{background-color:#dbe2e9}\\n\"] }]\n }], propDecorators: { checked: [{\n type: Input\n }] } });\n\nclass UniversalToggleModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalToggleModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalToggleModule, declarations: [ToggleComponent], imports: [CommonModule, FormsModule], exports: [ToggleComponent, FormsModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalToggleModule, imports: [CommonModule, FormsModule, FormsModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalToggleModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [ToggleComponent],\n imports: [CommonModule, FormsModule],\n exports: [ToggleComponent, FormsModule],\n }]\n }] });\n\nconst modules = [\n UniversalFormInputDateModule,\n UniversalFormInputNumberModule,\n UniversalFormInputTextModule,\n UniversalFormInputPasswordModule,\n UniversalFormInputMaskedModule,\n UniversalFormInputWrappedModule,\n UniversalSelectInputModule,\n UniversalToggleModule,\n];\nclass UniversalFormInputModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalFormInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalFormInputModule, imports: [CommonModule, UniversalFormInputDateModule,\n UniversalFormInputNumberModule,\n UniversalFormInputTextModule,\n UniversalFormInputPasswordModule,\n UniversalFormInputMaskedModule,\n UniversalFormInputWrappedModule,\n UniversalSelectInputModule,\n UniversalToggleModule], exports: [UniversalFormInputDateModule,\n UniversalFormInputNumberModule,\n UniversalFormInputTextModule,\n UniversalFormInputPasswordModule,\n UniversalFormInputMaskedModule,\n UniversalFormInputWrappedModule,\n UniversalSelectInputModule,\n UniversalToggleModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalFormInputModule, imports: [CommonModule, modules, UniversalFormInputDateModule,\n UniversalFormInputNumberModule,\n UniversalFormInputTextModule,\n UniversalFormInputPasswordModule,\n UniversalFormInputMaskedModule,\n UniversalFormInputWrappedModule,\n UniversalSelectInputModule,\n UniversalToggleModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalFormInputModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [],\n imports: [CommonModule, ...modules],\n exports: modules,\n }]\n }] });\n\nclass PopoverComponent extends UniversalBasePopperComponent {\n clicked() {\n this.popperInstance.active = !this.popperInstance.active;\n this.popperNeedsUpdate = true;\n }\n hover(hovering) {\n this.hovering = hovering;\n if (this.data.onHover) {\n // only update when we care about onHover\n this.popperNeedsUpdate = true;\n }\n }\n isPopover() {\n return true;\n }\n isActive() {\n // we check === true here because it can onHover can be undefined.\n return this.popperInstance.active || (this.hovering && this.data.onHover === true);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: PopoverComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.2.12\", type: PopoverComponent, selector: \"universal-popover\", inputs: { headerText: \"headerText\", bodyText: \"bodyText\", dark: \"dark\" }, usesInheritance: true, ngImport: i0, template: \"\\n \\n\\n\\n
{{headerText}}
\\n
\\n
\", styles: [\":host>span:first-child:hover{cursor:pointer}:host .u-popover{display:none;background-color:#fff;color:#131e29;font-size:14px;line-height:24px;text-align:start;font-style:normal;font-weight:400;font-family:Lato;border-radius:4px;filter:drop-shadow(0px 0px 2px #425563);z-index:100;max-width:320px}:host .u-popover.active{display:block}@media (max-width: 320px){:host .u-popover{max-width:90vw}}:host .u-popover[data-popper-placement^=top]:after{top:100%;left:50%;transform:translate(0) translateY(-50%) rotate(45deg)}:host .u-popover[data-popper-placement^=bottom]:after{bottom:100%;left:50%;transform:translate(0) translateY(50%) rotate(45deg)}:host .u-popover[data-popper-placement^=left]:after{top:50%;left:100%;transform:translate(0) translateY(-50%) rotate(45deg)}:host .u-popover[data-popper-placement^=right]:after{top:50%;right:100%;transform:translate(50%) translateY(-50%) rotate(45deg)}:host .u-popover:after{content:\\\"\\\";position:absolute;margin-left:-4px;border-width:4px;border-style:solid;background-color:inherit}:host .u-popover:after{color:#fff}:host .u-popover.dark{background-color:#333f48;color:#f4f4f4;filter:drop-shadow(0px 0px 2px #425563)}:host .u-popover.dark ::ng-deep a{color:#69b4e7}:host .u-popover.dark ::ng-deep a:visited{color:#b9d9eb}:host .u-popover.dark:after{color:#333f48}:host .u-popover .u-popover-header{padding:16px 16px 0;font-weight:700}:host .u-popover .u-popover-body{padding:16px}\\n\"], dependencies: [{ kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"pipe\", type: i2$1.UnsafePipe, name: \"unsafe\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: PopoverComponent, decorators: [{\n type: Component,\n args: [{ selector: 'universal-popover', changeDetection: ChangeDetectionStrategy.OnPush, template: \"\\n \\n\\n\\n
{{headerText}}
\\n
\\n
\", styles: [\":host>span:first-child:hover{cursor:pointer}:host .u-popover{display:none;background-color:#fff;color:#131e29;font-size:14px;line-height:24px;text-align:start;font-style:normal;font-weight:400;font-family:Lato;border-radius:4px;filter:drop-shadow(0px 0px 2px #425563);z-index:100;max-width:320px}:host .u-popover.active{display:block}@media (max-width: 320px){:host .u-popover{max-width:90vw}}:host .u-popover[data-popper-placement^=top]:after{top:100%;left:50%;transform:translate(0) translateY(-50%) rotate(45deg)}:host .u-popover[data-popper-placement^=bottom]:after{bottom:100%;left:50%;transform:translate(0) translateY(50%) rotate(45deg)}:host .u-popover[data-popper-placement^=left]:after{top:50%;left:100%;transform:translate(0) translateY(-50%) rotate(45deg)}:host .u-popover[data-popper-placement^=right]:after{top:50%;right:100%;transform:translate(50%) translateY(-50%) rotate(45deg)}:host .u-popover:after{content:\\\"\\\";position:absolute;margin-left:-4px;border-width:4px;border-style:solid;background-color:inherit}:host .u-popover:after{color:#fff}:host .u-popover.dark{background-color:#333f48;color:#f4f4f4;filter:drop-shadow(0px 0px 2px #425563)}:host .u-popover.dark ::ng-deep a{color:#69b4e7}:host .u-popover.dark ::ng-deep a:visited{color:#b9d9eb}:host .u-popover.dark:after{color:#333f48}:host .u-popover .u-popover-header{padding:16px 16px 0;font-weight:700}:host .u-popover .u-popover-body{padding:16px}\\n\"] }]\n }], propDecorators: { headerText: [{\n type: Input\n }], bodyText: [{\n type: Input\n }], dark: [{\n type: Input\n }] } });\n\nclass UniversalPopOverModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalPopOverModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalPopOverModule, declarations: [PopoverComponent], imports: [CommonModule, CommonPipesModule, UniversalBaseModule, UniversalPopperModule, UsanaSsrModule], exports: [PopoverComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalPopOverModule, imports: [CommonModule, CommonPipesModule, UniversalBaseModule, UniversalPopperModule, UsanaSsrModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalPopOverModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [PopoverComponent],\n imports: [CommonModule, CommonPipesModule, UniversalBaseModule, UniversalPopperModule, UsanaSsrModule],\n exports: [PopoverComponent],\n }]\n }] });\n\nclass TooltipComponent extends UniversalBasePopperComponent {\n hover(hovering) {\n this.hovering = hovering;\n this.popperInstance.active = false; // first time we enter or leave we are no longer forced active.\n this.popperNeedsUpdate = true;\n }\n isPopover() {\n return false;\n }\n isActive() {\n return this.popperInstance.active || this.hovering;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: TooltipComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.2.12\", type: TooltipComponent, selector: \"universal-tooltip\", inputs: { text: \"text\" }, usesInheritance: true, ngImport: i0, template: \"\\n \\n\\n\\n
{{text}}
\\n
\", styles: [\":host .u-tooltip{display:none;background-color:#333f48;color:#fff;font-size:14px;line-height:24px;text-align:start;font-style:normal;font-weight:400;font-family:Lato;border-radius:4px;filter:drop-shadow(0px 0px 4px #425563);z-index:100;max-width:200px}:host .u-tooltip.active{display:block}@media (max-width: 200px){:host .u-tooltip{max-width:90vw}}:host .u-tooltip[data-popper-placement^=top]:after{top:100%;left:50%;transform:translate(0) translateY(-50%) rotate(45deg)}:host .u-tooltip[data-popper-placement^=bottom]:after{bottom:100%;left:50%;transform:translate(0) translateY(50%) rotate(45deg)}:host .u-tooltip[data-popper-placement^=left]:after{top:50%;left:100%;transform:translate(0) translateY(-50%) rotate(45deg)}:host .u-tooltip[data-popper-placement^=right]:after{top:50%;right:100%;transform:translate(50%) translateY(-50%) rotate(45deg)}:host .u-tooltip:after{content:\\\"\\\";position:absolute;margin-left:-4px;border-width:4px;border-style:solid;background-color:inherit}:host .u-tooltip:after{color:#333f48}:host .u-tooltip .u-tooltip-text{padding:8px}\\n\"], dependencies: [{ kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: TooltipComponent, decorators: [{\n type: Component,\n args: [{ selector: 'universal-tooltip', changeDetection: ChangeDetectionStrategy.OnPush, template: \"\\n \\n\\n\\n
{{text}}
\\n
\", styles: [\":host .u-tooltip{display:none;background-color:#333f48;color:#fff;font-size:14px;line-height:24px;text-align:start;font-style:normal;font-weight:400;font-family:Lato;border-radius:4px;filter:drop-shadow(0px 0px 4px #425563);z-index:100;max-width:200px}:host .u-tooltip.active{display:block}@media (max-width: 200px){:host .u-tooltip{max-width:90vw}}:host .u-tooltip[data-popper-placement^=top]:after{top:100%;left:50%;transform:translate(0) translateY(-50%) rotate(45deg)}:host .u-tooltip[data-popper-placement^=bottom]:after{bottom:100%;left:50%;transform:translate(0) translateY(50%) rotate(45deg)}:host .u-tooltip[data-popper-placement^=left]:after{top:50%;left:100%;transform:translate(0) translateY(-50%) rotate(45deg)}:host .u-tooltip[data-popper-placement^=right]:after{top:50%;right:100%;transform:translate(50%) translateY(-50%) rotate(45deg)}:host .u-tooltip:after{content:\\\"\\\";position:absolute;margin-left:-4px;border-width:4px;border-style:solid;background-color:inherit}:host .u-tooltip:after{color:#333f48}:host .u-tooltip .u-tooltip-text{padding:8px}\\n\"] }]\n }], propDecorators: { text: [{\n type: Input\n }] } });\n\nclass UniversalTooltipModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalTooltipModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalTooltipModule, declarations: [TooltipComponent], imports: [CommonModule, UniversalBaseModule, UniversalPopperModule, UsanaSsrModule], exports: [TooltipComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalTooltipModule, imports: [CommonModule, UniversalBaseModule, UniversalPopperModule, UsanaSsrModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalTooltipModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [TooltipComponent],\n imports: [CommonModule, UniversalBaseModule, UniversalPopperModule, UsanaSsrModule],\n exports: [TooltipComponent],\n }]\n }] });\n\nconst subModules = [\n UniversalButtonModule,\n UniversalLoadingButtonModule,\n UniversalCardSectionModule,\n UniversalConfirmationModalModule,\n UniversalHeroSliderModule,\n UniversalHeroModule,\n UniversalHeaderModule,\n UniversalCoverSliderModule,\n UniversalAlertModule,\n UniversalFormInputModule,\n UniversalToastModule,\n UniversalGridGalleryModule,\n UniversalNewsModule,\n UniversalPopOverModule,\n UniversalTooltipModule,\n UniversalLoadingSpinnerModule$1,\n UniversalDropdownButtonModule,\n];\nclass UniversalComponentsModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalComponentsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalComponentsModule, imports: [UniversalButtonModule,\n UniversalLoadingButtonModule,\n UniversalCardSectionModule,\n UniversalConfirmationModalModule,\n UniversalHeroSliderModule,\n UniversalHeroModule,\n UniversalHeaderModule,\n UniversalCoverSliderModule,\n UniversalAlertModule,\n UniversalFormInputModule,\n UniversalToastModule,\n UniversalGridGalleryModule,\n UniversalNewsModule,\n UniversalPopOverModule,\n UniversalTooltipModule,\n UniversalLoadingSpinnerModule$1,\n UniversalDropdownButtonModule], exports: [UniversalButtonModule,\n UniversalLoadingButtonModule,\n UniversalCardSectionModule,\n UniversalConfirmationModalModule,\n UniversalHeroSliderModule,\n UniversalHeroModule,\n UniversalHeaderModule,\n UniversalCoverSliderModule,\n UniversalAlertModule,\n UniversalFormInputModule,\n UniversalToastModule,\n UniversalGridGalleryModule,\n UniversalNewsModule,\n UniversalPopOverModule,\n UniversalTooltipModule,\n UniversalLoadingSpinnerModule$1,\n UniversalDropdownButtonModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalComponentsModule, imports: [subModules, UniversalButtonModule,\n UniversalLoadingButtonModule,\n UniversalCardSectionModule,\n UniversalConfirmationModalModule,\n UniversalHeroSliderModule,\n UniversalHeroModule,\n UniversalHeaderModule,\n UniversalCoverSliderModule,\n UniversalAlertModule,\n UniversalFormInputModule,\n UniversalToastModule,\n UniversalGridGalleryModule,\n UniversalNewsModule,\n UniversalPopOverModule,\n UniversalTooltipModule,\n UniversalLoadingSpinnerModule$1,\n UniversalDropdownButtonModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalComponentsModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [],\n imports: [subModules],\n exports: [subModules],\n }]\n }] });\n\nvar ForcedInputState;\n(function (ForcedInputState) {\n ForcedInputState[\"NONE\"] = \"none\";\n ForcedInputState[\"VALID\"] = \"valid\";\n ForcedInputState[\"INVALID\"] = \"invalid\";\n})(ForcedInputState || (ForcedInputState = {}));\n\nclass FormInputData {\n}\n\n/* eslint @angular-eslint/no-input-rename: 0 */\n// --> OFF\nclass UniversalBaseInputComponent extends UniversalBaseComponent$1 {\n constructor(dataTransformWrapperService, changeDetectorRef, differs) {\n super(dataTransformWrapperService, changeDetectorRef, differs);\n this.dataTransformWrapperService = dataTransformWrapperService;\n this.changeDetectorRef = changeDetectorRef;\n this.valueChanged = new EventEmitter();\n this.aFormOnTouched = () => { };\n this.aFormOnChange = (value) => { };\n }\n processData() {\n super.processData();\n this.name = this.data.id; // id by default, but id must me unique for each radio button with the same name\n if (this.data.name) {\n this.name = this.data.name;\n }\n this.forcedAttr = this.forcedStateToAttribute();\n this.required = this.data.required === true;\n this.autofocus = this.data.autofocus === true;\n }\n // angular form functions\n registerOnTouched(onTouched) {\n this.aFormOnTouched = onTouched;\n }\n registerOnChange(onChange) {\n this.aFormOnChange = onChange;\n }\n bubbleValueChange(event) {\n this.valueChanged.emit(event);\n this.markTouched();\n if (this.aFormOnChange) {\n this.aFormOnChange(event);\n }\n }\n markTouched() {\n if (!this.aFormTouched && this.aFormOnTouched) {\n this.aFormOnTouched();\n this.aFormTouched = true;\n }\n }\n validate(control) {\n if (this.data.validationFn) {\n return this.data.validationFn(control);\n }\n }\n forcedStateToAttribute() {\n switch (this.data.forcedState) {\n case ForcedInputState.VALID:\n return 'valid';\n case ForcedInputState.INVALID:\n return 'invalid';\n case ForcedInputState.NONE:\n return 'none';\n default:\n return '';\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalBaseInputComponent, deps: [{ token: i1$1.DataTransformWrapperService }, { token: i0.ChangeDetectorRef }, { token: i0.KeyValueDiffers }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: UniversalBaseInputComponent, inputs: { placeholder: \"placeholder\", message: \"message\", label: \"label\" }, outputs: { valueChanged: \"valueChanged\" }, usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalBaseInputComponent, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: i1$1.DataTransformWrapperService }, { type: i0.ChangeDetectorRef }, { type: i0.KeyValueDiffers }]; }, propDecorators: { placeholder: [{\n type: Input\n }], message: [{\n type: Input\n }], label: [{\n type: Input\n }], valueChanged: [{\n type: Output\n }] } });\n\nclass FormInputTextBaseComponent extends UniversalBaseInputComponent {\n set input(element) {\n if (element && this.autofocus) {\n element.nativeElement.focus();\n }\n }\n writeValue(obj) {\n this.value = obj;\n this.data.value = obj;\n }\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n textChange(event) {\n // we have to have a separate value and data.value\n // because we have child components that need to have\n // an internal representation (MaskedInput)\n this.writeValue(event);\n this.bubbleValueChange(event);\n }\n processData() {\n super.processData();\n this.value = this.data.value;\n }\n toggleBtn() {\n // by default does nothing\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: FormInputTextBaseComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.2.12\", type: FormInputTextBaseComponent, selector: \"universal-form-input-base\", viewQueries: [{ propertyName: \"input\", first: true, predicate: [\"inputBox\"], descendants: true }], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: FormInputTextBaseComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'universal-form-input-base',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '',\n }]\n }], propDecorators: { input: [{\n type: ViewChild,\n args: ['inputBox', { static: false }]\n }] } });\n\nclass UniversalFormInputTextBaseModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalFormInputTextBaseModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalFormInputTextBaseModule, declarations: [FormInputTextBaseComponent], imports: [CommonModule, UniversalBaseModule], exports: [FormInputTextBaseComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalFormInputTextBaseModule, imports: [CommonModule, UniversalBaseModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalFormInputTextBaseModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [FormInputTextBaseComponent],\n imports: [CommonModule, UniversalBaseModule],\n exports: [FormInputTextBaseComponent],\n }]\n }] });\n\nclass FormInputMaskedToggleData extends FormInputData$1 {\n}\n\nclass FormInputPasswordToggleData extends FormInputData$1 {\n}\n\nclass PasswordToggleData {\n}\n\nclass FormInputSelectData extends FormInputData$1 {\n}\n\nclass SelectOption {\n}\n\n// @dynamic\nclass FormValidationHelperService {\n static validationsToValidator(validation) {\n return (control) => {\n const value = control.value;\n if (validation.required) {\n if ((Array.isArray(value) && value.length === 0) || !value) {\n return {\n required: {\n value,\n },\n };\n }\n }\n const valueLength = value ? value.length : 0;\n if (validation.minLength !== null && valueLength < validation.minLength) {\n return {\n minLength: {\n value,\n },\n };\n }\n if (validation.maxLength !== null && valueLength > validation.maxLength) {\n return {\n maxLength: {\n value,\n },\n };\n }\n if (!FormValidationHelperService.matchesPattern(value, validation.regEx)) {\n return {\n regex: {\n value,\n },\n };\n }\n };\n }\n static matchesPattern(value, pattern) {\n if (!pattern) {\n return true; // if no regex we automatically pass\n }\n // we need to make sure that we are matching the full string\n // so add ^ and $ if they are missing\n let realPattern = pattern;\n if (!realPattern.startsWith('^')) {\n realPattern = '^' + realPattern;\n }\n if (!realPattern.endsWith('$')) {\n realPattern = realPattern + '$';\n }\n return RegexCacheService.buildRegex(realPattern).test(value);\n }\n}\n\nclass CircleLoadingSpinnerComponent {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: CircleLoadingSpinnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.2.12\", type: CircleLoadingSpinnerComponent, selector: \"universal-circle-loading-spinner\", inputs: { colorType: \"colorType\" }, ngImport: i0, template: \"
\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n\\n
\", styles: [\":host{display:inline-block}.container{background-color:inherit;padding:.25em;width:100%;height:100%}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.container .da-spinner circle{fill:#0072ce}.container .da-spinner circle.cir-background{stroke:#0072ce}.container .da-spinner path.arc{stroke:#0072ce}.container.primary .da-spinner circle,.container.success .da-spinner circle,.container.warning .da-spinner circle,.container.danger .da-spinner circle,.container.org .da-spinner circle{fill:#fff}.container.primary .da-spinner circle.cir-background,.container.primary .da-spinner path.arc,.container.success .da-spinner circle.cir-background,.container.success .da-spinner path.arc,.container.warning .da-spinner circle.cir-background,.container.warning .da-spinner path.arc,.container.danger .da-spinner circle.cir-background,.container.danger .da-spinner path.arc,.container.org .da-spinner circle.cir-background,.container.org .da-spinner path.arc{stroke:#fff}.container.secondary .da-spinner circle{fill:#131e29}.container.secondary .da-spinner circle.cir-background,.container.secondary .da-spinner path.arc{stroke:#131e29}.container.tertiary .da-spinner circle{fill:#0072ce}.container.tertiary .da-spinner circle.cir-background,.container.tertiary .da-spinner path.arc{stroke:#0072ce}.da-spinner svg{overflow:visible;width:100%;height:100%}.da-spinner circle{fill:#0072ce;animation-duration:1.2s!important}.da-spinner .cir1{animation:rotate_opacity1 1.2s infinite linear;opacity:1}.da-spinner .cir2{animation:rotate_opacity2 1.2s infinite linear;opacity:.9}.da-spinner .cir3{animation:rotate_opacity3 1.2s infinite linear;opacity:.7}.da-spinner .cir4{animation:rotate_opacity4 1.2s infinite linear;opacity:.6}.da-spinner .cir5{animation:rotate_opacity5 1.2s infinite linear;opacity:.4}.da-spinner .cir6{animation:rotate_opacity6 1.2s infinite linear;opacity:.3}.da-spinner .cir7{animation:rotate_opacity7 1.2s infinite linear;opacity:.1}.da-spinner .cir8{animation:rotate_opacity8 1.2s infinite linear;opacity:0}@keyframes rotate_opacity8{0%{opacity:1}12.5%{opacity:.9}25%{opacity:.7}37.5%{opacity:.6}50%{opacity:.4}62.5%{opacity:.3}75%{opacity:.1}87.5%{opacity:0}to{opacity:1}}@keyframes rotate_opacity7{0%{opacity:.9}12.5%{opacity:.7}25%{opacity:.6}37.5%{opacity:.4}50%{opacity:.3}62.5%{opacity:.1}75%{opacity:0}87.5%{opacity:1}to{opacity:.9}}@keyframes rotate_opacity6{0%{opacity:.7}12.5%{opacity:.6}25%{opacity:.4}37.5%{opacity:.3}50%{opacity:.1}62.5%{opacity:0}75%{opacity:1}87.5%{opacity:.9}to{opacity:.7}}@keyframes rotate_opacity5{0%{opacity:.6}12.5%{opacity:.4}25%{opacity:.3}37.5%{opacity:.1}50%{opacity:0}62.5%{opacity:1}75%{opacity:.9}87.5%{opacity:.7}to{opacity:.6}}@keyframes rotate_opacity4{0%{opacity:.4}12.5%{opacity:.3}25%{opacity:.1}37.5%{opacity:0}50%{opacity:1}62.5%{opacity:.9}75%{opacity:.7}87.5%{opacity:.6}to{opacity:.4}}@keyframes rotate_opacity3{0%{opacity:.3}12.5%{opacity:.1}25%{opacity:0}37.5%{opacity:1}50%{opacity:.9}62.5%{opacity:.7}75%{opacity:.6}87.5%{opacity:.4}to{opacity:.3}}@keyframes rotate_opacity2{0%{opacity:.1}12.5%{opacity:0}25%{opacity:1}37.5%{opacity:.9}50%{opacity:.7}62.5%{opacity:.6}75%{opacity:.4}87.5%{opacity:.3}to{opacity:.1}}@keyframes rotate_opacity1{0%{opacity:0}12.5%{opacity:1}25%{opacity:.9}37.5%{opacity:.7}50%{opacity:.6}62.5%{opacity:.4}75%{opacity:.3}87.5%{opacity:.1}to{opacity:0}}\\n\"], dependencies: [{ kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: CircleLoadingSpinnerComponent, decorators: [{\n type: Component,\n args: [{ selector: 'universal-circle-loading-spinner', template: \"
\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n\\n
\", styles: [\":host{display:inline-block}.container{background-color:inherit;padding:.25em;width:100%;height:100%}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.container .da-spinner circle{fill:#0072ce}.container .da-spinner circle.cir-background{stroke:#0072ce}.container .da-spinner path.arc{stroke:#0072ce}.container.primary .da-spinner circle,.container.success .da-spinner circle,.container.warning .da-spinner circle,.container.danger .da-spinner circle,.container.org .da-spinner circle{fill:#fff}.container.primary .da-spinner circle.cir-background,.container.primary .da-spinner path.arc,.container.success .da-spinner circle.cir-background,.container.success .da-spinner path.arc,.container.warning .da-spinner circle.cir-background,.container.warning .da-spinner path.arc,.container.danger .da-spinner circle.cir-background,.container.danger .da-spinner path.arc,.container.org .da-spinner circle.cir-background,.container.org .da-spinner path.arc{stroke:#fff}.container.secondary .da-spinner circle{fill:#131e29}.container.secondary .da-spinner circle.cir-background,.container.secondary .da-spinner path.arc{stroke:#131e29}.container.tertiary .da-spinner circle{fill:#0072ce}.container.tertiary .da-spinner circle.cir-background,.container.tertiary .da-spinner path.arc{stroke:#0072ce}.da-spinner svg{overflow:visible;width:100%;height:100%}.da-spinner circle{fill:#0072ce;animation-duration:1.2s!important}.da-spinner .cir1{animation:rotate_opacity1 1.2s infinite linear;opacity:1}.da-spinner .cir2{animation:rotate_opacity2 1.2s infinite linear;opacity:.9}.da-spinner .cir3{animation:rotate_opacity3 1.2s infinite linear;opacity:.7}.da-spinner .cir4{animation:rotate_opacity4 1.2s infinite linear;opacity:.6}.da-spinner .cir5{animation:rotate_opacity5 1.2s infinite linear;opacity:.4}.da-spinner .cir6{animation:rotate_opacity6 1.2s infinite linear;opacity:.3}.da-spinner .cir7{animation:rotate_opacity7 1.2s infinite linear;opacity:.1}.da-spinner .cir8{animation:rotate_opacity8 1.2s infinite linear;opacity:0}@keyframes rotate_opacity8{0%{opacity:1}12.5%{opacity:.9}25%{opacity:.7}37.5%{opacity:.6}50%{opacity:.4}62.5%{opacity:.3}75%{opacity:.1}87.5%{opacity:0}to{opacity:1}}@keyframes rotate_opacity7{0%{opacity:.9}12.5%{opacity:.7}25%{opacity:.6}37.5%{opacity:.4}50%{opacity:.3}62.5%{opacity:.1}75%{opacity:0}87.5%{opacity:1}to{opacity:.9}}@keyframes rotate_opacity6{0%{opacity:.7}12.5%{opacity:.6}25%{opacity:.4}37.5%{opacity:.3}50%{opacity:.1}62.5%{opacity:0}75%{opacity:1}87.5%{opacity:.9}to{opacity:.7}}@keyframes rotate_opacity5{0%{opacity:.6}12.5%{opacity:.4}25%{opacity:.3}37.5%{opacity:.1}50%{opacity:0}62.5%{opacity:1}75%{opacity:.9}87.5%{opacity:.7}to{opacity:.6}}@keyframes rotate_opacity4{0%{opacity:.4}12.5%{opacity:.3}25%{opacity:.1}37.5%{opacity:0}50%{opacity:1}62.5%{opacity:.9}75%{opacity:.7}87.5%{opacity:.6}to{opacity:.4}}@keyframes rotate_opacity3{0%{opacity:.3}12.5%{opacity:.1}25%{opacity:0}37.5%{opacity:1}50%{opacity:.9}62.5%{opacity:.7}75%{opacity:.6}87.5%{opacity:.4}to{opacity:.3}}@keyframes rotate_opacity2{0%{opacity:.1}12.5%{opacity:0}25%{opacity:1}37.5%{opacity:.9}50%{opacity:.7}62.5%{opacity:.6}75%{opacity:.4}87.5%{opacity:.3}to{opacity:.1}}@keyframes rotate_opacity1{0%{opacity:0}12.5%{opacity:1}25%{opacity:.9}37.5%{opacity:.7}50%{opacity:.6}62.5%{opacity:.4}75%{opacity:.3}87.5%{opacity:.1}to{opacity:0}}\\n\"] }]\n }], propDecorators: { colorType: [{\n type: Input\n }] } });\n\nclass DefaultLoadingSpinnerComponent {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: DefaultLoadingSpinnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.2.12\", type: DefaultLoadingSpinnerComponent, selector: \"universal-default-loading-spinner\", inputs: { colorType: \"colorType\" }, ngImport: i0, template: \"
\\n \\n \\n \\n \\n \\n \\n \\n \\n
\", styles: [\":host{display:inline-block}.container{background-color:inherit;padding:.25em;width:100%;height:100%}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.container .da-spinner circle{fill:#0072ce}.container .da-spinner circle.cir-background{stroke:#0072ce}.container .da-spinner path.arc{stroke:#0072ce}.container.primary .da-spinner circle,.container.success .da-spinner circle,.container.warning .da-spinner circle,.container.danger .da-spinner circle,.container.org .da-spinner circle{fill:#fff}.container.primary .da-spinner circle.cir-background,.container.primary .da-spinner path.arc,.container.success .da-spinner circle.cir-background,.container.success .da-spinner path.arc,.container.warning .da-spinner circle.cir-background,.container.warning .da-spinner path.arc,.container.danger .da-spinner circle.cir-background,.container.danger .da-spinner path.arc,.container.org .da-spinner circle.cir-background,.container.org .da-spinner path.arc{stroke:#fff}.container.secondary .da-spinner circle{fill:#131e29}.container.secondary .da-spinner circle.cir-background,.container.secondary .da-spinner path.arc{stroke:#131e29}.container.tertiary .da-spinner circle{fill:#0072ce}.container.tertiary .da-spinner circle.cir-background,.container.tertiary .da-spinner path.arc{stroke:#0072ce}.container .da-spinner{width:100%;height:100%;aspect-ratio:1;position:relative;display:inline-block}.container .da-spinner svg{overflow:visible;width:100%;height:100%;position:absolute;left:0}.container .da-spinner .spinner{animation:spin 1.2s infinite linear}.container .da-spinner .spinner .arc{fill:none;stroke-width:6px}.container .da-spinner circle.cir-background{opacity:.3;fill:none;stroke-width:4px}\\n\"], dependencies: [{ kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: DefaultLoadingSpinnerComponent, decorators: [{\n type: Component,\n args: [{ selector: 'universal-default-loading-spinner', template: \"
\\n \\n \\n \\n \\n \\n \\n \\n \\n
\", styles: [\":host{display:inline-block}.container{background-color:inherit;padding:.25em;width:100%;height:100%}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.container .da-spinner circle{fill:#0072ce}.container .da-spinner circle.cir-background{stroke:#0072ce}.container .da-spinner path.arc{stroke:#0072ce}.container.primary .da-spinner circle,.container.success .da-spinner circle,.container.warning .da-spinner circle,.container.danger .da-spinner circle,.container.org .da-spinner circle{fill:#fff}.container.primary .da-spinner circle.cir-background,.container.primary .da-spinner path.arc,.container.success .da-spinner circle.cir-background,.container.success .da-spinner path.arc,.container.warning .da-spinner circle.cir-background,.container.warning .da-spinner path.arc,.container.danger .da-spinner circle.cir-background,.container.danger .da-spinner path.arc,.container.org .da-spinner circle.cir-background,.container.org .da-spinner path.arc{stroke:#fff}.container.secondary .da-spinner circle{fill:#131e29}.container.secondary .da-spinner circle.cir-background,.container.secondary .da-spinner path.arc{stroke:#131e29}.container.tertiary .da-spinner circle{fill:#0072ce}.container.tertiary .da-spinner circle.cir-background,.container.tertiary .da-spinner path.arc{stroke:#0072ce}.container .da-spinner{width:100%;height:100%;aspect-ratio:1;position:relative;display:inline-block}.container .da-spinner svg{overflow:visible;width:100%;height:100%;position:absolute;left:0}.container .da-spinner .spinner{animation:spin 1.2s infinite linear}.container .da-spinner .spinner .arc{fill:none;stroke-width:6px}.container .da-spinner circle.cir-background{opacity:.3;fill:none;stroke-width:4px}\\n\"] }]\n }], propDecorators: { colorType: [{\n type: Input\n }] } });\n\nclass LoadingSpinnerComponent {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: LoadingSpinnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.2.12\", type: LoadingSpinnerComponent, selector: \"universal-loading-spinner\", inputs: { defaultType: \"defaultType\" }, ngImport: i0, template: \"
\\n \\n \\n
\", styles: [\".page-container{position:fixed;inset:0;z-index:1100;width:100%;height:100%}universal-circle-loading-spinner,universal-default-loading-spinner{position:absolute;left:50%;top:50%;width:5%;height:10%;transform:translate(-50%,-50%);display:block}\\n\"], dependencies: [{ kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"component\", type: DefaultLoadingSpinnerComponent, selector: \"universal-default-loading-spinner\", inputs: [\"colorType\"] }, { kind: \"component\", type: CircleLoadingSpinnerComponent, selector: \"universal-circle-loading-spinner\", inputs: [\"colorType\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: LoadingSpinnerComponent, decorators: [{\n type: Component,\n args: [{ selector: 'universal-loading-spinner', changeDetection: ChangeDetectionStrategy.OnPush, template: \"
\\n \\n \\n
\", styles: [\".page-container{position:fixed;inset:0;z-index:1100;width:100%;height:100%}universal-circle-loading-spinner,universal-default-loading-spinner{position:absolute;left:50%;top:50%;width:5%;height:10%;transform:translate(-50%,-50%);display:block}\\n\"] }]\n }], propDecorators: { defaultType: [{\n type: Input\n }] } });\n\nclass UniversalLoadingSpinnerModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalLoadingSpinnerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalLoadingSpinnerModule, declarations: [LoadingSpinnerComponent, DefaultLoadingSpinnerComponent, CircleLoadingSpinnerComponent], imports: [CommonModule, UniversalBaseModule], exports: [LoadingSpinnerComponent, DefaultLoadingSpinnerComponent, CircleLoadingSpinnerComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalLoadingSpinnerModule, imports: [CommonModule, UniversalBaseModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UniversalLoadingSpinnerModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [LoadingSpinnerComponent, DefaultLoadingSpinnerComponent, CircleLoadingSpinnerComponent],\n imports: [CommonModule, UniversalBaseModule],\n exports: [LoadingSpinnerComponent, DefaultLoadingSpinnerComponent, CircleLoadingSpinnerComponent],\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AlertComponent, CardSectionComponent, CircleLoadingSpinnerComponent, CoverSliderComponent, DefaultLoadingSpinnerComponent, ForcedInputState, FormInputData, FormInputDateComponent, FormInputMaskedComponent, FormInputMaskedToggleData, FormInputNumberComponent, FormInputPasswordComponent, FormInputPasswordToggleData, FormInputSelectData, FormInputTextBaseComponent, FormInputTextComponent, FormInputWrappedComponent, FormValidationHelperService, GridGalleryComponent, GridGalleryItemComponent, HeaderComponent, HeroComponent, HeroSliderComponent, HeroSliderGridItemComponent, LoadingSpinnerComponent, NewsComponent, PasswordToggleData, PopoverComponent, SelectComponent, SelectInputComponent, SelectOption, ToastComponent, ToggleComponent, TooltipComponent, UniversalAlertModule, UniversalBaseInputComponent, UniversalCardSectionModule, UniversalComponentsModule, UniversalCoverSliderModule, UniversalFormInputDateModule, UniversalFormInputMaskedModule, UniversalFormInputModule, UniversalFormInputNumberModule, UniversalFormInputPasswordModule, UniversalFormInputTextBaseModule, UniversalFormInputTextModule, UniversalFormInputWrappedModule, UniversalGridGalleryModule, UniversalHeaderModule, UniversalHeroModule, UniversalHeroSliderModule, UniversalLoadingSpinnerModule, UniversalNewsModule, UniversalPopOverModule, UniversalSelectInputModule, UniversalToastModule, UniversalToggleModule, UniversalTooltipModule };\n","import * as i0 from '@angular/core';\nimport { Component, Input, NgModule } from '@angular/core';\nimport * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i2 from '@usana/ux/universal-components';\nimport { UniversalSelectInputModule } from '@usana/ux/universal-components';\nimport * as i3 from '@usana/ux/universal-components/button';\nimport { UniversalDropdownButtonModule } from '@usana/ux/universal-components/button';\nimport * as i4 from '@usana/ux/common/pipes';\nimport { CommonPipesModule } from '@usana/ux/common/pipes';\n\nclass WidgetComponent {\n get selectMenuItems() {\n return this.widgetData.selectOptions && this.widgetData.selectOptions.selectMenuItems\n ? this.widgetData.selectOptions.selectMenuItems\n : [];\n }\n get headerLinkText() {\n return this.widgetData.linkTextOptions && this.widgetData.linkTextOptions.displayName\n ? this.widgetData.linkTextOptions.displayName\n : '';\n }\n get headerLinkUrl() {\n return this.widgetData.linkTextOptions && this.widgetData.linkTextOptions.url ? this.widgetData.linkTextOptions.url : '';\n }\n get dropdownMenuItems() {\n return this.widgetData.dropDownButtonOptions && this.widgetData.dropDownButtonOptions.dropdownMenuItems\n ? this.widgetData.dropDownButtonOptions.dropdownMenuItems\n : [];\n }\n getSelectData() {\n return {\n selected: this.widgetData.selectOptions.selected,\n options: this.widgetData.selectOptions.selectMenuItems,\n id: 'selectOption',\n forcedState: undefined,\n required: false,\n value: '',\n };\n }\n getDropdownButtonData() {\n return {\n type: 'tertiary',\n size: 'full',\n automationId: 'dropdown-menu-button',\n isEllipsis: true,\n menuPlacement: this.widgetData.dropDownButtonOptions.menuPlacement,\n menuItems: this.widgetData.dropDownButtonOptions.dropdownMenuItems,\n };\n }\n trackByIndex(index) {\n return index;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: WidgetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.2.12\", type: WidgetComponent, selector: \"u-widget\", inputs: { widgetData: \"widgetData\" }, ngImport: i0, template: \"
\\n
\\n
\\n \\n \\n
\\n \\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n
\\n
\\n\", styles: [\".widget{box-shadow:0 2px 4px #131e297a;border-radius:4px;border:none;min-height:443px;position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box}.widget .widget-header{background:#fff;border-bottom:solid 1px #dbe2e9;border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0;padding:16px;margin-bottom:0}.widget .widget-header .row{display:flex!important;justify-content:space-between;justify-items:center;align-items:center;flex-wrap:unset}.widget .widget-header .widget-title{width:auto;font-size:18px;padding:.7rem;font-weight:600;color:#131e29;line-height:22.5px;margin:0}@media (max-width: 1200px){.widget .widget-header .widget-title{font-size:16px;line-height:20px}}.widget .widget-header .widget-menu{width:auto;position:relative;font-size:14px;line-height:21px;font-weight:400;text-align:right}.widget .widget-header .widget-menu a{text-decoration:none}.widget .widget-body{padding:16px}:host ::ng-deep .input-wrapper{margin-bottom:0!important}:host ::ng-deep .input-wrapper .msg{padding-top:0!important}:host ::ng-deep .input-wrapper label{margin-bottom:0!important}\\n\"], dependencies: [{ kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"component\", type: i2.SelectComponent, selector: \"universal-select\" }, { kind: \"component\", type: i3.DropdownButtonComponent, selector: \"universal-dropdown-button\", inputs: [\"data\"] }, { kind: \"pipe\", type: i4.UnsafePipe, name: \"unsafe\" }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: WidgetComponent, decorators: [{\n type: Component,\n args: [{ selector: 'u-widget', template: \"
\\n
\\n
\\n \\n \\n
\\n \\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n
\\n
\\n\", styles: [\".widget{box-shadow:0 2px 4px #131e297a;border-radius:4px;border:none;min-height:443px;position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box}.widget .widget-header{background:#fff;border-bottom:solid 1px #dbe2e9;border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0;padding:16px;margin-bottom:0}.widget .widget-header .row{display:flex!important;justify-content:space-between;justify-items:center;align-items:center;flex-wrap:unset}.widget .widget-header .widget-title{width:auto;font-size:18px;padding:.7rem;font-weight:600;color:#131e29;line-height:22.5px;margin:0}@media (max-width: 1200px){.widget .widget-header .widget-title{font-size:16px;line-height:20px}}.widget .widget-header .widget-menu{width:auto;position:relative;font-size:14px;line-height:21px;font-weight:400;text-align:right}.widget .widget-header .widget-menu a{text-decoration:none}.widget .widget-body{padding:16px}:host ::ng-deep .input-wrapper{margin-bottom:0!important}:host ::ng-deep .input-wrapper .msg{padding-top:0!important}:host ::ng-deep .input-wrapper label{margin-bottom:0!important}\\n\"] }]\n }], propDecorators: { widgetData: [{\n type: Input\n }] } });\n\nclass WidgetModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: WidgetModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: WidgetModule, declarations: [WidgetComponent], imports: [CommonModule, UniversalSelectInputModule, UniversalDropdownButtonModule, CommonPipesModule], exports: [WidgetComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: WidgetModule, imports: [CommonModule, UniversalSelectInputModule, UniversalDropdownButtonModule, CommonPipesModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: WidgetModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [WidgetComponent],\n imports: [CommonModule, UniversalSelectInputModule, UniversalDropdownButtonModule, CommonPipesModule],\n exports: [WidgetComponent],\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { WidgetComponent, WidgetModule };\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { NotificationListItemModule } from '@common/notifications/notification-list-item/notification-list-item.module';\nimport { NotificationWidgetComponent } from '@common/notifications/notification-widget/notification-widget.component';\nimport { TranslationModule } from '@common/translation/translation.module';\nimport { LoadingSpinnerModule } from '@shared/loading-spinner/loading-spinner.module';\nimport { WidgetModule } from '@usana/ux/widget';\nimport { NotificationWidgetContentComponent } from './notification-widget-content/notification-widget-content.component';\n\n@NgModule({\n declarations: [NotificationWidgetComponent, NotificationWidgetContentComponent],\n imports: [\n CommonModule,\n WidgetModule,\n NotificationListItemModule,\n LoadingSpinnerModule,\n TranslationModule,\n RouterModule,\n ],\n exports: [NotificationWidgetComponent, NotificationWidgetContentComponent],\n})\nexport class NotificationWidgetModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { NotificationBellComponent } from '@common/notifications/notification-bell/notification-bell.component';\nimport { NotificationWidgetModule } from '@common/notifications/notification-widget/notification-widget.module';\nimport { TranslationModule } from '@common/translation/translation.module';\nimport { SideModalModule } from '@shared/side-modal/side-modal.module';\nimport { CommonIconsModule } from '../../common-icons/common-icons.module';\n\n@NgModule({\n declarations: [NotificationBellComponent],\n imports: [CommonModule, SideModalModule, NotificationWidgetModule, TranslationModule, CommonIconsModule],\n exports: [NotificationBellComponent],\n})\nexport class NotificationBellModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { NotificationWidgetModule } from '@common/notifications/notification-widget/notification-widget.module';\nimport { TranslationModule } from '@common/translation/translation.module';\nimport { BreadCrumbModule } from '@shared/bread-crumb/bread-crumb.module';\nimport { NotificationDashboardComponent } from './notification-dashboard.component';\n\n@NgModule({\n declarations: [NotificationDashboardComponent],\n imports: [CommonModule, NotificationWidgetModule, BreadCrumbModule, TranslationModule],\n exports: [NotificationDashboardComponent],\n})\nexport class NotificationDashboardModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { NotificationSettingsContainerComponent } from './notification-settings-container/notification-settings-container.component';\n\n@NgModule({\n declarations: [NotificationSettingsContainerComponent],\n imports: [CommonModule],\n})\nexport class NotificationSettingsModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { UsanaDatePipeModule } from '@common/custom-locale-pipes/usana-date-pipe/usana-date-pipe.module';\nimport { NotificationSingleItemComponent } from '@common/notifications/notification-single-item/notification-single-item.component';\nimport { UnsafeModule } from '@shared/pipes/unsafe/unsafe.module';\nimport { SideModalModule } from '@shared/side-modal/side-modal.module';\nimport { CommonIconsModule } from '../../common-icons/common-icons.module';\nimport { TranslationModule } from '../../translation/translation.module';\n\n@NgModule({\n declarations: [NotificationSingleItemComponent],\n imports: [CommonModule, SideModalModule, UnsafeModule, UsanaDatePipeModule, TranslationModule, CommonIconsModule],\n exports: [NotificationSingleItemComponent],\n})\nexport class NotificationSingleItemModule {}\n","import * as i0 from '@angular/core';\nimport { Injectable, NgModule } from '@angular/core';\nimport * as i1 from '@ngxs/store';\nimport { getActionTypeFromInstance, State, NgxsModule, createSelector } from '@ngxs/store';\nimport { Subscription } from 'rxjs';\nimport { tap } from 'rxjs/operators';\n\nvar __decorate$1 = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet ActionsExecutedState = class ActionsExecutedState {\n constructor(actions$) {\n this.actions$ = actions$;\n this.actionsExecutedSub = new Subscription();\n }\n ngxsOnInit({ patchState, getState }) {\n this.actionsExecutedSub = this.actions$\n .pipe(tap((actionContext) => {\n const actionType = getActionTypeFromInstance(actionContext.action);\n if (!actionType) {\n return;\n }\n let count = getState()?.[actionType] || 0;\n if (actionContext.status !== \"DISPATCHED\" /* Dispatched */) {\n count++;\n }\n patchState({\n [actionType]: count\n });\n }))\n .subscribe();\n }\n ngOnDestroy() {\n this.actionsExecutedSub.unsubscribe();\n }\n};\nActionsExecutedState.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: ActionsExecutedState, deps: [{ token: i1.Actions }], target: i0.ɵɵFactoryTarget.Injectable });\nActionsExecutedState.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: ActionsExecutedState });\nActionsExecutedState = __decorate$1([\n State({\n name: 'ngxs_actions_executed'\n })\n], ActionsExecutedState);\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: ActionsExecutedState, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i1.Actions }]; } });\n\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet ActionsExecutingState = class ActionsExecutingState {\n constructor(actions$) {\n this.actions$ = actions$;\n this._sub = new Subscription();\n }\n ngxsOnInit({ patchState, getState }) {\n this._sub = this.actions$\n .pipe(tap((actionContext) => {\n const actionType = getActionTypeFromInstance(actionContext.action);\n if (!actionType) {\n return;\n }\n let count = getState()?.[actionType] || 0;\n if (actionContext.status === \"DISPATCHED\" /* Dispatched */) {\n count++;\n }\n else if (count > 0) {\n count--;\n }\n patchState({\n [actionType]: count\n });\n }))\n .subscribe();\n }\n ngOnDestroy() {\n this._sub.unsubscribe();\n }\n};\nActionsExecutingState.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: ActionsExecutingState, deps: [{ token: i1.Actions }], target: i0.ɵɵFactoryTarget.Injectable });\nActionsExecutingState.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: ActionsExecutingState });\nActionsExecutingState = __decorate([\n State({\n name: 'ngxs_actions_executing'\n })\n], ActionsExecutingState);\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: ActionsExecutingState, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i1.Actions }]; } });\n\nclass NgxsActionsExecutingModule {\n static forRoot() {\n return {\n ngModule: NgxsActionsExecutingModule\n };\n }\n}\nNgxsActionsExecutingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: NgxsActionsExecutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNgxsActionsExecutingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.2.12\", ngImport: i0, type: NgxsActionsExecutingModule, imports: [i1.ɵNgxsFeatureModule] });\nNgxsActionsExecutingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: NgxsActionsExecutingModule, imports: [NgxsModule.forFeature([ActionsExecutingState, ActionsExecutedState])] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: NgxsActionsExecutingModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [NgxsModule.forFeature([ActionsExecutingState, ActionsExecutedState])]\n }]\n }] });\n\nfunction actionsExecutingFn(actionTypes, state) {\n if (!actionTypes || actionTypes.length === 0) {\n if (Object.keys(state).length === 0) {\n return null;\n }\n return state;\n }\n return actionTypes.reduce((acc, type) => {\n const actionType = getActionTypeFromInstance(type);\n if (!actionType) {\n return acc;\n }\n if (state[actionType]) {\n return { ...acc, [actionType]: state[actionType] };\n }\n return acc;\n }, null);\n}\nfunction actionsExecuting(actionTypes) {\n return createSelector([ActionsExecutingState], (state) => {\n return actionsExecutingFn(actionTypes, state);\n });\n}\nfunction hasActionsExecuting(actionTypes) {\n return createSelector([ActionsExecutingState], (state) => {\n const result = actionsExecutingFn(actionTypes, state);\n return result === null ? false : Object.values(result).some((value) => value > 0);\n });\n}\n\nfunction actionsExecuted(actionTypes) {\n return createSelector([ActionsExecutedState], (state) => {\n if (!actionTypes || actionTypes.length === 0) {\n if (Object.keys(state).length === 0) {\n return null;\n }\n return state;\n }\n return actionTypes.reduce((acc, type) => {\n const actionType = getActionTypeFromInstance(type);\n if (!actionType) {\n return acc;\n }\n if (state[actionType]) {\n return { ...acc, [actionType]: state[actionType] };\n }\n return acc;\n }, null);\n });\n}\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { NgxsActionsExecutingModule, actionsExecuted, actionsExecuting, hasActionsExecuting };\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { NotificationBellModule } from '@common/notifications/notification-bell/notification-bell.module';\nimport { NotificationDashboardModule } from '@common/notifications/notification-dashboard/notification-dashboard.module';\nimport { NotificationSettingsModule } from '@common/notifications/notification-settings/notification-settings.module';\nimport { NotificationSingleItemModule } from '@common/notifications/notification-single-item/notification-single-item.module';\nimport { NotificationWidgetModule } from '@common/notifications/notification-widget/notification-widget.module';\nimport { NotificationService } from '@common/notifications/notification.service';\nimport { NotificationState } from '@common/notifications/state/notification.state';\nimport { NgxsActionsExecutingModule } from '@ngxs-labs/actions-executing';\nimport { NgxsModule } from '@ngxs/store';\n\n@NgModule({\n declarations: [],\n imports: [\n CommonModule,\n NgxsModule.forFeature([NotificationState]),\n NotificationWidgetModule,\n NotificationBellModule,\n NotificationDashboardModule,\n NotificationSettingsModule,\n NgxsActionsExecutingModule.forRoot(),\n NotificationSingleItemModule,\n ],\n exports: [\n NotificationWidgetModule,\n NotificationDashboardModule,\n NotificationBellModule,\n NotificationSettingsModule,\n NotificationSingleItemModule,\n ],\n providers: [NotificationService],\n})\nexport class NotificationsModule {}\n","export enum ReportViewTypes {\n Tree = 'tree',\n Sheet = 'sheet',\n Bar = 'bar',\n}\n","import { HttpClient, HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { ReportHelp, ReportRequestBody, SavedReportParams } from '@common/reports/reports.model';\nimport { Observable, throwError } from 'rxjs';\nimport { ReportViewTypes } from './reports.enum';\n\n@Injectable()\nexport class ReportsService {\n private static handleError(error: HttpErrorResponse) {\n return throwError(error);\n }\n\n constructor(private http: HttpClient) {}\n\n getReportParams(report?: string, locale?: string) {\n report = report || '';\n const headers = this.getHeaders(locale || 'en', '4.0');\n return this.http.get(`/dlm2/service/form/params/${report}`, headers);\n }\n\n getSavedReportParams(reportId?: string, locale?: string): Observable {\n const headers = this.getHeaders(locale || 'en', '4.0');\n return this.http.get(`/dlm2/service/report/params/${reportId || ''}`, headers);\n }\n\n getReport(report?: string, locale?: string, version?: string, requestBody?: ReportRequestBody) {\n report = report || '';\n const headers = this.getHeaders(locale || 'en', version || '3.0');\n\n const view = requestBody?.defaultView;\n const reportType = view === ReportViewTypes.Tree ? 'hierarchicalTree' : '';\n\n return this.http.post(`/dlm2/service/report/${report}/${reportType}`, requestBody, headers);\n }\n\n getHeaders(locale: string, version: string) {\n return {\n headers: {\n Accept: 'application/json;charset=UTF-8',\n 'Content-Type': 'application/json;charset=UTF-8',\n Version: version === undefined ? '2.0' : version,\n 'Content-Language': locale,\n },\n };\n }\n\n getReportHelp(reportName: string, locale: string): Observable {\n const headers = this.getHeaders(locale || 'en', '2.0');\n return this.http.get(`/dlm2/service/report/reportHelp/${reportName}`, headers);\n }\n}\n","// eslint-disable-next-line max-classes-per-file\nimport { ParamMap } from '@angular/router';\nimport { ReportRequestBody, SavedReportParams } from '@common/reports/reports.model';\nimport { ParamsList } from '@usanaHub/app/team-manager/models/params-list';\nimport { ReportViewTypes } from '../reports.enum';\n\nexport class LoadReportData {\n static readonly type = '[Reports] LOAD REPORT DATA';\n constructor(public reportName: string, public requestBody?: ReportRequestBody, public reportVersion?: string) {}\n}\n\nexport class LoadReportDataSuccess {\n static readonly type = '[Reports] LOAD REPORT DATA SUCCESS';\n constructor(public reportName: string, public reportData: { [key: string]: any }) {}\n}\n\nexport class LoadReportDataFailure {\n static readonly type = '[Reports] LOAD REPORT DATA FAILURE';\n constructor(public reportName: string, public reportError: any) {}\n}\n\nexport class ReloadReportData {\n static readonly type = '[Reports] RELOAD REPORT DATA';\n constructor(public reportName: string, public requestBody?: ReportRequestBody) {}\n}\n\nexport class LoadAllReportParams {\n static readonly type = '[Reports] LOAD ALL REPORT PARAMS';\n constructor(public reportId: string, public isSavedReport: boolean, public viewType: ReportViewTypes) {}\n}\n\nexport class LoadReportParams {\n static readonly type = '[Reports] LOAD REPORT PARAMS';\n constructor(public reportName: string, public redirect: boolean) {}\n}\n\nexport class LoadReportParamsSuccess {\n static readonly type = '[Reports] LOAD REPORT PARAMS SUCCESS';\n constructor(public reportName: string, public reportParams: ParamsList) {}\n}\n\nexport class LoadReportParamsFailure {\n static readonly type = '[Reports] LOAD REPORT PARAMS FAILURE';\n constructor(public reportName: string, public redirect: boolean) {}\n}\n\nexport class LoadSavedReportParams {\n static readonly type = '[Reports] LOAD SAVED REPORT PARAMS';\n constructor(public reportId: string) {}\n}\n\nexport class ClearSavedReportParams {\n static readonly type = '[Reports] CLEAR SAVED REPORT PARAMS';\n constructor(public reportId: string) {}\n}\n\nexport class LoadSavedReportParamsSuccess {\n static readonly type = '[Reports] LOAD SAVED REPORT PARAMS SUCCESS';\n constructor(public reportId: string, public reportParams: SavedReportParams) {}\n}\n\nexport class LoadSavedReportParamsFailure {\n static readonly type = '[Reports] LOAD SAVED REPORT PARAMS FAILURE';\n constructor(public reportId: string) {}\n}\n","import { ReportDataEntry, ReportEntry, ReportsStateModel } from '@common/reports/state/reports.state.model';\nimport { StateOperator } from '@ngxs/store';\nimport { ReportEntryTypes } from './report-collections';\n\nexport const initializeReportLoad =\n (collection: ReportEntryTypes, reportName: string): StateOperator =>\n (state: ReportsStateModel) => {\n const entry: ReportDataEntry = {\n isLoading: true,\n error: false,\n data: null,\n };\n\n return modifyDataEntry(state, collection, reportName, entry);\n };\n\nexport const setReportDataToState =\n (collection: ReportEntryTypes, reportName: string, data: any): StateOperator =>\n (state: ReportsStateModel) => {\n const entry: ReportDataEntry = {\n isLoading: false,\n error: false,\n data: data,\n };\n\n return modifyDataEntry(state, collection, reportName, entry);\n };\n\nexport const clearReportParams =\n (collection: ReportEntryTypes, reportName: string): StateOperator =>\n (state: ReportsStateModel) =>\n modifyDataEntry(state, collection, reportName, undefined);\n\nexport const handleReportLoadError =\n (collection: ReportEntryTypes, reportName: string) => (state: ReportsStateModel) => {\n const entry: ReportDataEntry = {\n isLoading: false,\n error: true,\n data: null,\n };\n\n return modifyDataEntry(state, collection, reportName, entry);\n };\n\nconst modifyDataEntry = (\n state: ReportsStateModel,\n collection: ReportEntryTypes,\n reportName: string,\n dataEntry: ReportEntry\n) => {\n const newEntries = {\n ...state[collection],\n [reportName]: dataEntry,\n };\n\n const newState = {\n ...state,\n [collection]: newEntries,\n };\n\n return newState;\n};\n","export enum ReportEntryTypes {\n DataEntries = 'dataEntries',\n ParamEntries = 'paramEntries',\n}\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { UserProfileSelectors } from '@common/authentication/state/user-profile.selectors';\nimport { ReportsService } from '@common/reports/reports.service';\nimport {\n ClearSavedReportParams,\n LoadReportData,\n LoadReportDataFailure,\n LoadReportDataSuccess,\n LoadReportParams,\n LoadReportParamsFailure,\n LoadReportParamsSuccess,\n LoadSavedReportParams,\n LoadSavedReportParamsFailure,\n LoadSavedReportParamsSuccess,\n} from '@common/reports/state/reports.actions';\nimport {\n handleReportLoadError,\n initializeReportLoad,\n setReportDataToState,\n} from '@common/reports/state/reports.operators';\nimport { ReportsStateModel } from '@common/reports/state/reports.state.model';\nimport { Action, State, StateContext, Store } from '@ngxs/store';\nimport { ParamsList } from '@usanaHub/app/team-manager/models/params-list';\nimport { catchError, mergeMap } from 'rxjs/operators';\nimport { ReportViewTypes } from '../reports.enum';\nimport { SavedReportParams } from '../reports.model';\nimport { ReportEntryTypes } from './report-collections';\nimport { clearReportParams } from './reports.operators';\n\nexport const REPORT_STATE_DEFAULTS = {\n reportEntriesLocale: undefined,\n dataEntries: {},\n paramEntries: {},\n};\n\n@State({\n name: 'reports',\n defaults: REPORT_STATE_DEFAULTS,\n})\n@Injectable()\nexport class ReportsState {\n constructor(private reportService: ReportsService, private store: Store, private router: Router) {}\n\n @Action(LoadReportData)\n loadReportData(ctx: StateContext, action: LoadReportData) {\n ctx.setState(initializeReportLoad(ReportEntryTypes.DataEntries, action.reportName));\n\n let requestBody = action.requestBody;\n\n if (action.requestBody?.defaultView === ReportViewTypes.Tree) {\n requestBody = this.modifyTreeParams(requestBody);\n }\n\n return this.reportService.getReport(action.reportName, this.locale, action.reportVersion, requestBody).pipe(\n mergeMap((reportData: { [key: string]: any }) =>\n ctx.dispatch(new LoadReportDataSuccess(action.reportName, reportData))\n ),\n catchError((reportError) => ctx.dispatch(new LoadReportDataFailure(action.reportName, reportError?.error)))\n );\n }\n\n @Action(LoadReportDataSuccess)\n loadReportDataSuccess(ctx: StateContext, action: LoadReportDataSuccess) {\n const newState = setReportDataToState(\n ReportEntryTypes.DataEntries,\n action.reportName,\n action.reportData\n )(ctx.getState());\n newState.reportEntriesLocale = this.locale;\n ctx.patchState(newState);\n }\n\n @Action(LoadReportDataFailure)\n loadReportDataFailure(ctx: StateContext, action: LoadReportDataFailure) {\n ctx.setState(handleReportLoadError(ReportEntryTypes.DataEntries, action.reportName));\n }\n\n @Action(LoadReportParams)\n loadReportParams(ctx: StateContext, action: LoadReportParams) {\n let state = ctx.getState();\n if (state.reportEntriesLocale && this.locale !== state.reportEntriesLocale) {\n ctx.setState(REPORT_STATE_DEFAULTS);\n }\n\n state = ctx.getState();\n const existingReportParams = state.paramEntries[action.reportName];\n\n if (!existingReportParams) {\n ctx.setState(initializeReportLoad(ReportEntryTypes.ParamEntries, action.reportName));\n\n return this.reportService.getReportParams(action.reportName, this.locale).pipe(\n mergeMap((reportParams: ParamsList) =>\n ctx.dispatch(new LoadReportParamsSuccess(action.reportName, reportParams))\n ),\n catchError(() => ctx.dispatch(new LoadReportParamsFailure(action.reportName, action.redirect)))\n );\n }\n }\n\n @Action(LoadReportParamsSuccess)\n loadReportParamsSuccess(ctx: StateContext, action: LoadReportParamsSuccess) {\n const newState = setReportDataToState(\n ReportEntryTypes.ParamEntries,\n action.reportName,\n action.reportParams\n )(ctx.getState());\n ctx.patchState(newState);\n }\n\n @Action(LoadReportParamsFailure)\n loadReportParamsFailure(ctx: StateContext, action: LoadReportParamsFailure) {\n ctx.setState(handleReportLoadError(ReportEntryTypes.ParamEntries, action.reportName));\n\n if (action.redirect) {\n this.router.navigate(['/teamManager']);\n }\n }\n\n @Action(LoadSavedReportParams)\n loadSavedReportParams(ctx: StateContext, action: LoadSavedReportParams) {\n let state = ctx.getState();\n if (state.reportEntriesLocale && this.locale !== state.reportEntriesLocale) {\n ctx.setState(REPORT_STATE_DEFAULTS);\n }\n\n state = ctx.getState();\n const existingReportParams = state.paramEntries[action.reportId];\n\n if (!existingReportParams) {\n ctx.setState(initializeReportLoad(ReportEntryTypes.ParamEntries, action.reportId));\n\n return this.reportService.getSavedReportParams(action.reportId, this.locale).pipe(\n mergeMap((reportParams: SavedReportParams) =>\n ctx.dispatch(new LoadSavedReportParamsSuccess(action.reportId, reportParams))\n ),\n catchError(() => ctx.dispatch(new LoadSavedReportParamsFailure(action.reportId)))\n );\n }\n }\n\n @Action(LoadSavedReportParamsSuccess)\n loadSavedReportParamsSuccess(ctx: StateContext, action: LoadSavedReportParamsSuccess) {\n const newState = setReportDataToState(\n ReportEntryTypes.ParamEntries,\n action.reportId,\n action.reportParams\n )(ctx.getState());\n ctx.patchState(newState);\n\n const baseReportName = action.reportParams.reportName;\n const state = ctx.getState();\n if (!state.paramEntries[baseReportName]) {\n ctx.dispatch(new LoadReportParams(baseReportName, true));\n }\n }\n\n @Action(LoadSavedReportParamsFailure)\n loadSavedReportParamsFailure(ctx: StateContext, action: LoadSavedReportParamsFailure) {\n ctx.setState(handleReportLoadError(ReportEntryTypes.ParamEntries, action.reportId));\n\n this.router.navigate(['/teamManager']);\n }\n\n @Action(ClearSavedReportParams)\n clearSavedReportParams(ctx: StateContext, action: ClearSavedReportParams) {\n const existingReportParams = ctx.getState().paramEntries[action.reportId];\n\n if (existingReportParams) {\n const newState = clearReportParams(ReportEntryTypes.ParamEntries, action.reportId)(ctx.getState());\n ctx.patchState(newState);\n }\n }\n\n modifyTreeParams(runParams: ParamsList): ParamsList {\n const treeParams = { ...runParams };\n\n treeParams.visibleColumns = runParams.visibleTreeColumns;\n delete treeParams.visibleTreeColumns;\n\n return treeParams;\n }\n\n get locale() {\n return this.store.selectSnapshot(UserProfileSelectors.getLocale);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReportsService } from '@common/reports/reports.service';\nimport { ReportsState } from '@common/reports/state/reports.state';\nimport { NgxsModule } from '@ngxs/store';\n\n@NgModule({\n declarations: [],\n imports: [CommonModule, NgxsModule.forFeature([ReportsState])],\n providers: [ReportsService],\n})\nexport class ReportsModule {}\n","import { Injectable } from '@angular/core';\nimport { Store } from '@ngxs/store';\nimport { DecrementLoading, IncrementLoading } from '@usanaHub/app/state/app.actions';\n\n@Injectable()\nexport class StateHelperService {\n constructor(public store: Store) {}\n\n incrementLoading(): void {\n this.store.dispatch(new IncrementLoading());\n }\n\n decrementLoading(): void {\n this.store.dispatch(new DecrementLoading());\n }\n\n ignoreUrlForLoadingSpinner(url: string): boolean {\n let toTest: string = url;\n const possibleHost = `${location.protocol}//${location.hostname}`;\n\n if (toTest.startsWith(possibleHost)) {\n toTest = toTest.substring(possibleHost.length);\n }\n\n return (\n toTest.startsWith('/mvc/translation') ||\n toTest.startsWith('/mvc/widget') ||\n toTest.startsWith('/mvc/auth/hubParams') ||\n toTest.startsWith('cmsmodule/items') ||\n toTest.startsWith('/dlm2') ||\n toTest.startsWith('/sockjs-node/') ||\n toTest.startsWith('/image-service/') ||\n toTest.startsWith('/mvc/Calendar/Approver/') ||\n toTest.startsWith('/mvc/leads') ||\n toTest.startsWith('/mvc/alerts/system') ||\n /^\\/mvc\\/Calendar\\/Event(\\/([0-9]+))?$/.test(toTest) ||\n toTest === '/hub/' ||\n toTest.match(/\\/notification\\/message/) != null ||\n toTest.match(/\\/notification\\/archivedMessagesForHub/) != null ||\n toTest.match(/\\/notification\\/subscription\\/en/) != null ||\n toTest.match(/\\/contest\\/stats/) != null ||\n toTest.match(/\\/mvc\\/paperwork/) != null ||\n toTest.match(/\\/mvc\\/fpvCommissionOptIn/) != null ||\n toTest.match(/\\/mvc\\/cm\\/GetTree\\?rootId=usana-news-landing-container/) != null ||\n toTest.match(/\\/mvc\\/cm\\/GetTree\\?rootId=hub-home-banner-slider-container/) != null ||\n toTest.match(/hub\\-gateway/) != null ||\n toTest.match(/cart\\/short/) != null ||\n possibleHost.match(/saas-usn.userreplay/) != null ||\n possibleHost.match(/blob:/) != null ||\n possibleHost.match(/googletagmanager/) != null ||\n possibleHost.match(/qualtrics/) != null ||\n possibleHost.match(/google-analytics/) != null ||\n possibleHost.match(/stats.g.doubleclick/) != null ||\n possibleHost.match(/col.eum-appdynamics.com/) != null\n );\n }\n}\n","var charToInteger = {};\nvar integerToChar = {};\n'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n .split('')\n .forEach(function (char, i) {\n charToInteger[char] = i;\n integerToChar[i] = char;\n});\nfunction decode(string) {\n var result = [];\n var shift = 0;\n var value = 0;\n for (var i = 0; i < string.length; i += 1) {\n var integer = charToInteger[string[i]];\n if (integer === undefined) {\n throw new Error('Invalid character (' + string[i] + ')');\n }\n var hasContinuationBit = integer & 32;\n integer &= 31;\n value += integer << shift;\n if (hasContinuationBit) {\n shift += 5;\n }\n else {\n var shouldNegate = value & 1;\n value >>>= 1;\n if (shouldNegate) {\n result.push(value === 0 ? -0x80000000 : -value);\n }\n else {\n result.push(value);\n }\n // reset\n value = shift = 0;\n }\n }\n return result;\n}\nfunction encode(value) {\n var result;\n if (typeof value === 'number') {\n result = encodeInteger(value);\n }\n else {\n result = '';\n for (var i = 0; i < value.length; i += 1) {\n result += encodeInteger(value[i]);\n }\n }\n return result;\n}\nfunction encodeInteger(num) {\n var result = '';\n if (num < 0) {\n num = (-num << 1) | 1;\n }\n else {\n num <<= 1;\n }\n do {\n var clamped = num & 31;\n num >>>= 5;\n if (num > 0) {\n clamped |= 32;\n }\n result += integerToChar[clamped];\n } while (num > 0);\n return result;\n}\n\nexport { decode, encode };\n","import * as i1 from '@angular/common/http';\nimport { HttpRequest, HttpResponse, HttpHeaders, HttpParams } from '@angular/common/http';\nimport * as i0 from '@angular/core';\nimport { Injectable, Optional, PLATFORM_ID, Inject, NgModule } from '@angular/core';\nimport { of, BehaviorSubject, isObservable, throwError, timer } from 'rxjs';\nimport { filter, map, retry, shareReplay, catchError, concatMap, take } from 'rxjs/operators';\nimport * as vlq from 'vlq';\nimport * as i1$1 from '@angular/common';\nimport { isPlatformBrowser, CommonModule } from '@angular/common';\n\n/**\r\n * Injection token of logger config\r\n */\r\nconst TOKEN_LOGGER_CONFIG = 'TOKEN_LOGGER_CONFIG';\n\nclass NGXLoggerConfigEngine {\r\n constructor(config) {\r\n this.config = this._clone(config);\r\n }\r\n /** Get a readonly access to the level configured for the NGXLogger */\r\n get level() {\r\n return this.config.level;\r\n }\r\n /** Get a readonly access to the serverLogLevel configured for the NGXLogger */\r\n get serverLogLevel() {\r\n return this.config.serverLogLevel;\r\n }\r\n updateConfig(config) {\r\n this.config = this._clone(config);\r\n }\r\n /** Update the config partially\r\n * This is useful if you want to update only one parameter of the config\r\n */\r\n partialUpdateConfig(partialConfig) {\r\n // avoid any error if the config is incorrect\r\n if (!partialConfig) {\r\n return;\r\n }\r\n Object.keys(partialConfig).forEach(configParamKey => {\r\n this.config[configParamKey] = partialConfig[configParamKey];\r\n });\r\n }\r\n getConfig() {\r\n return this._clone(this.config);\r\n }\r\n // TODO: This is a shallow clone, If the config ever becomes hierarchical we must make this a deep clone\r\n _clone(object) {\r\n const cloneConfig = { level: null };\r\n Object.keys(object).forEach((key) => {\r\n cloneConfig[key] = object[key];\r\n });\r\n return cloneConfig;\r\n }\r\n}\n\n/**\r\n * Injection token of logger config engine factory\r\n */\r\nconst TOKEN_LOGGER_CONFIG_ENGINE_FACTORY = 'TOKEN_LOGGER_CONFIG_ENGINE_FACTORY';\n\nclass NGXLoggerConfigEngineFactory {\r\n provideConfigEngine(config) {\r\n return new NGXLoggerConfigEngine(config);\r\n }\r\n}\n\n/**\r\n * Injection token of logger mapper service\r\n */\r\nconst TOKEN_LOGGER_MAPPER_SERVICE = 'TOKEN_LOGGER_MAPPER_SERVICE';\n\nclass NGXLoggerMapperService {\r\n constructor(httpBackend) {\r\n this.httpBackend = httpBackend;\r\n /** cache for source maps, key is source map location, ie. 'http://localhost:4200/main.js.map' */\r\n this.sourceMapCache = new Map();\r\n /** cache for specific log position, key is the dist position, ie 'main.js:339:21' */\r\n this.logPositionCache = new Map();\r\n }\r\n /**\r\n * Returns the log position of the caller\r\n * If sourceMaps are enabled, it attemps to get the source map from the server, and use that to parse the position\r\n * @param config\r\n * @param metadata\r\n * @returns\r\n */\r\n getLogPosition(config, metadata) {\r\n const stackLine = this.getStackLine(config);\r\n // if we were not able to parse the stackLine, just return an empty Log Position\r\n if (!stackLine) {\r\n return of({ fileName: '', lineNumber: 0, columnNumber: 0 });\r\n }\r\n const logPosition = this.getLocalPosition(stackLine);\r\n if (!config.enableSourceMaps) {\r\n return of(logPosition);\r\n }\r\n const sourceMapLocation = this.getSourceMapLocation(stackLine);\r\n return this.getSourceMap(sourceMapLocation, logPosition);\r\n }\r\n /**\r\n * Get the stackline of the original caller\r\n * @param config\r\n * @returns null if stackline was not found\r\n */\r\n getStackLine(config) {\r\n const error = new Error();\r\n try {\r\n // noinspection ExceptionCaughtLocallyJS\r\n throw error;\r\n }\r\n catch (e) {\r\n try {\r\n // Here are different examples of stacktrace \r\n // Firefox (last line is the user code, the 4 first are ours):\r\n // getStackLine@http://localhost:4200/main.js:358:23\r\n // getCallerDetails@http://localhost:4200/main.js:557:44\r\n // _log@http://localhost:4200/main.js:830:28\r\n // debug@http://localhost:4200/main.js:652:14\r\n // handleLog@http://localhost:4200/main.js:1158:29\r\n // Chrome and Edge (last line is the user code):\r\n // Error\r\n // at Function.getStackLine (ngx-logger.js:329)\r\n // at NGXMapperService.getCallerDetails (ngx-logger.js:528)\r\n // at NGXLogger._log (ngx-logger.js:801)\r\n // at NGXLogger.info (ngx-logger.js:631)\r\n // at AppComponent.handleLog (app.component.ts:38)\r\n let defaultProxy = 4; // We make 4 functions call before getting here\r\n const firstStackLine = error.stack.split('\\n')[0];\r\n if (!firstStackLine.includes('.js:')) {\r\n // The stacktrace starts with no function call (example in Chrome or Edge)\r\n defaultProxy = defaultProxy + 1;\r\n }\r\n return error.stack.split('\\n')[(defaultProxy + (config.proxiedSteps || 0))];\r\n }\r\n catch (e) {\r\n return null;\r\n }\r\n }\r\n }\r\n /**\r\n * Get position of caller without using sourceMaps\r\n * @param stackLine\r\n * @returns\r\n */\r\n getLocalPosition(stackLine) {\r\n // strip base path, then parse filename, line, and column, stackline looks like this :\r\n // Firefox\r\n // handleLog@http://localhost:4200/main.js:1158:29\r\n // Chrome and Edge\r\n // at AppComponent.handleLog (app.component.ts:38)\r\n const positionStartIndex = stackLine.lastIndexOf('\\/');\r\n let positionEndIndex = stackLine.indexOf(')');\r\n if (positionEndIndex < 0) {\r\n positionEndIndex = undefined;\r\n }\r\n const position = stackLine.substring(positionStartIndex + 1, positionEndIndex);\r\n const dataArray = position.split(':');\r\n if (dataArray.length === 3) {\r\n return { fileName: dataArray[0], lineNumber: +dataArray[1], columnNumber: +dataArray[2] };\r\n }\r\n return { fileName: 'unknown', lineNumber: 0, columnNumber: 0 };\r\n }\r\n getTranspileLocation(stackLine) {\r\n // Example stackLine:\r\n // Firefox : getStackLine@http://localhost:4200/main.js:358:23\r\n // Chrome and Edge : at Function.getStackLine (ngx-logger.js:329)\r\n let locationStartIndex = stackLine.indexOf('(');\r\n if (locationStartIndex < 0) {\r\n locationStartIndex = stackLine.lastIndexOf('@');\r\n if (locationStartIndex < 0) {\r\n locationStartIndex = stackLine.lastIndexOf(' ');\r\n }\r\n }\r\n let locationEndIndex = stackLine.indexOf(')');\r\n if (locationEndIndex < 0) {\r\n locationEndIndex = undefined;\r\n }\r\n return stackLine.substring(locationStartIndex + 1, locationEndIndex);\r\n }\r\n /**\r\n * Gets the URL of the sourcemap (the URL can be relative or absolute, it is browser dependant)\r\n * @param stackLine\r\n * @returns\r\n */\r\n getSourceMapLocation(stackLine) {\r\n const file = this.getTranspileLocation(stackLine);\r\n const mapFullPath = file.substring(0, file.lastIndexOf(':'));\r\n return mapFullPath.substring(0, mapFullPath.lastIndexOf(':')) + '.map';\r\n }\r\n getMapping(sourceMap, position) {\r\n // => ';' indicates end of a line\r\n // => ',' separates mappings in a line\r\n // decoded mapping => [ generatedCodeColumn, sourceFileIndex, sourceCodeLine, sourceCodeColumn, nameIndex ]\r\n let sourceFileIndex = 0, // second field\r\n sourceCodeLine = 0, // third field\r\n sourceCodeColumn = 0; // fourth field\r\n const lines = sourceMap.mappings.split(';');\r\n for (let lineIndex = 0; lineIndex < lines.length; lineIndex++) {\r\n // reset column position to 0 after each line\r\n let generatedCodeColumn = 0;\r\n // decode sections in line\r\n const columns = lines[lineIndex].split(',');\r\n for (let columnIndex = 0; columnIndex < columns.length; columnIndex++) {\r\n const decodedSection = vlq.decode(columns[columnIndex]);\r\n if (decodedSection.length >= 4) {\r\n // update relative positions\r\n generatedCodeColumn += decodedSection[0];\r\n sourceFileIndex += decodedSection[1];\r\n sourceCodeLine += decodedSection[2];\r\n sourceCodeColumn += decodedSection[3];\r\n }\r\n // check if matching map\r\n if (lineIndex === position.lineNumber) {\r\n if (generatedCodeColumn === position.columnNumber) {\r\n // matching column and line found\r\n return { fileName: sourceMap.sources[sourceFileIndex], lineNumber: sourceCodeLine, columnNumber: sourceCodeColumn };\r\n }\r\n else if (columnIndex + 1 === columns.length) {\r\n // matching column not found, but line is correct\r\n return { fileName: sourceMap.sources[sourceFileIndex], lineNumber: sourceCodeLine, columnNumber: 0 };\r\n }\r\n }\r\n }\r\n }\r\n // failed if reached\r\n return { fileName: 'unknown', lineNumber: 0, columnNumber: 0 };\r\n }\r\n /**\r\n * does the http get request to get the source map\r\n * @param sourceMapLocation\r\n * @param distPosition\r\n */\r\n getSourceMap(sourceMapLocation, distPosition) {\r\n const req = new HttpRequest('GET', sourceMapLocation);\r\n const distPositionKey = `${distPosition.fileName}:${distPosition.lineNumber}:${distPosition.columnNumber}`;\r\n // if the specific log position is already in cache return it\r\n if (this.logPositionCache.has(distPositionKey)) {\r\n return this.logPositionCache.get(distPositionKey);\r\n }\r\n // otherwise check if the source map is already cached for given source map location\r\n if (!this.sourceMapCache.has(sourceMapLocation)) {\r\n if (!this.httpBackend) {\r\n console.error('NGXLogger : Can\\'t get sourcemap because HttpBackend is not provided. You need to import HttpClientModule');\r\n this.sourceMapCache.set(sourceMapLocation, of(null));\r\n }\r\n else {\r\n // obtain the source map if not cached\r\n this.sourceMapCache.set(sourceMapLocation, this.httpBackend.handle(req).pipe(filter((e) => e instanceof HttpResponse), map((httpResponse) => httpResponse.body), retry(3), shareReplay(1)));\r\n }\r\n }\r\n // at this point the source map is cached, use it to get specific log position mapping\r\n const logPosition$ = this.sourceMapCache.get(sourceMapLocation).pipe(map((sourceMap) => {\r\n // sourceMap can be null if HttpBackend is not provided for example\r\n if (!sourceMap) {\r\n return distPosition;\r\n }\r\n // map generated position to source position\r\n return this.getMapping(sourceMap, distPosition);\r\n }), catchError(() => of(distPosition)), shareReplay(1));\r\n // store specific log position in cache for given dest position and return it\r\n this.logPositionCache.set(distPositionKey, logPosition$);\r\n return logPosition$;\r\n }\r\n}\r\n/** @nocollapse */ /** @nocollapse */ NGXLoggerMapperService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NGXLoggerMapperService, deps: [{ token: i1.HttpBackend, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\r\n/** @nocollapse */ /** @nocollapse */ NGXLoggerMapperService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NGXLoggerMapperService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NGXLoggerMapperService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: i1.HttpBackend, decorators: [{\r\n type: Optional\r\n }] }]; } });\n\n/**\r\n * Injection token of logger metadata service\r\n */\r\nconst TOKEN_LOGGER_METADATA_SERVICE = 'TOKEN_LOGGER_METADATA_SERVICE';\n\nclass NGXLoggerMetadataService {\r\n constructor(datePipe) {\r\n this.datePipe = datePipe;\r\n }\r\n computeTimestamp(config) {\r\n const defaultTimestamp = () => new Date().toISOString();\r\n if (config.timestampFormat) {\r\n if (!this.datePipe) {\r\n console.error('NGXLogger : Can\\'t use timeStampFormat because DatePipe is not provided. You need to provide DatePipe');\r\n return defaultTimestamp();\r\n }\r\n else {\r\n return this.datePipe.transform(new Date(), config.timestampFormat);\r\n }\r\n }\r\n return defaultTimestamp();\r\n }\r\n getMetadata(level, config, message, additional) {\r\n const metadata = {\r\n level: level,\r\n additional: additional,\r\n };\r\n // The user can send a function\r\n // This is useful in order to compute string concatenation only when the log will actually be written\r\n if (message && typeof message === 'function') {\r\n metadata.message = message();\r\n }\r\n else {\r\n metadata.message = message;\r\n }\r\n metadata.timestamp = this.computeTimestamp(config);\r\n return metadata;\r\n }\r\n}\r\n/** @nocollapse */ /** @nocollapse */ NGXLoggerMetadataService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NGXLoggerMetadataService, deps: [{ token: i1$1.DatePipe, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\r\n/** @nocollapse */ /** @nocollapse */ NGXLoggerMetadataService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NGXLoggerMetadataService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NGXLoggerMetadataService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: i1$1.DatePipe, decorators: [{\r\n type: Optional\r\n }] }]; } });\n\n// I kept this class alive only to avoid a breaking change with the old version\r\n// This class does not implement anything so it is useless and the interface is enough\r\n/**\r\n * @deprecated this class does not implement anything thus being useless, you should rather implements @see INGXLoggerMonitor\r\n */\r\nclass NGXLoggerMonitor {\r\n}\n\n/**\r\n * Injection token of logger metadata service\r\n */\r\nconst TOKEN_LOGGER_RULES_SERVICE = 'TOKEN_LOGGER_RULES_SERVICE';\n\nclass NGXLoggerRulesService {\r\n shouldCallWriter(level, config, message, additional) {\r\n return !config.disableConsoleLogging && level >= config.level;\r\n }\r\n shouldCallServer(level, config, message, additional) {\r\n return !!config.serverLoggingUrl && level >= config.serverLogLevel;\r\n }\r\n shouldCallMonitor(level, config, message, additional) {\r\n // The default behavior is to call the monitor only if the writer or the server is called\r\n return this.shouldCallWriter(level, config, message, additional) || this.shouldCallServer(level, config, message, additional);\r\n }\r\n}\r\n/** @nocollapse */ /** @nocollapse */ NGXLoggerRulesService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NGXLoggerRulesService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\r\n/** @nocollapse */ /** @nocollapse */ NGXLoggerRulesService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NGXLoggerRulesService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NGXLoggerRulesService, decorators: [{\r\n type: Injectable\r\n }] });\n\n/**\r\n * Injection token of logger server service\r\n */\r\nconst TOKEN_LOGGER_SERVER_SERVICE = 'TOKEN_LOGGER_SERVER_SERVICE';\n\nclass NGXLoggerServerService {\r\n constructor(httpBackend, ngZone) {\r\n this.httpBackend = httpBackend;\r\n this.ngZone = ngZone;\r\n this.serverCallsQueue = [];\r\n this.flushingQueue = new BehaviorSubject(false);\r\n }\r\n ngOnDestroy() {\r\n if (this.flushingQueue) {\r\n this.flushingQueue.complete();\r\n this.flushingQueue = null;\r\n }\r\n if (this.addToQueueTimer) {\r\n this.addToQueueTimer.unsubscribe();\r\n this.addToQueueTimer = null;\r\n }\r\n }\r\n /**\r\n * Transforms an error object into a readable string (taking only the stack)\r\n * This is needed because JSON.stringify would return \"{}\"\r\n * @param err the error object\r\n * @returns The stack of the error\r\n */\r\n secureErrorObject(err) {\r\n return err?.stack;\r\n }\r\n /**\r\n * Transforms the additional parameters to avoid any json error when sending the data to the server\r\n * Basically it just replaces unstringifiable object to a string mentioning an error\r\n * @param additional The additional data to be sent\r\n * @returns The additional data secured\r\n */\r\n secureAdditionalParameters(additional) {\r\n if (additional === null || additional === undefined) {\r\n return null;\r\n }\r\n return additional.map((next, idx) => {\r\n try {\r\n if (next instanceof Error) {\r\n return this.secureErrorObject(next);\r\n }\r\n // We just want to make sure the JSON can be parsed, we do not want to actually change the type\r\n if (typeof next === 'object') {\r\n JSON.stringify(next);\r\n }\r\n return next;\r\n }\r\n catch (e) {\r\n return `The additional[${idx}] value could not be parsed using JSON.stringify().`;\r\n }\r\n });\r\n }\r\n /**\r\n * Transforms the message so that it can be sent to the server\r\n * @param message the message to be sent\r\n * @returns the message secured\r\n */\r\n secureMessage(message) {\r\n try {\r\n if (message instanceof Error) {\r\n return this.secureErrorObject(message);\r\n }\r\n if (typeof message !== 'string') {\r\n message = JSON.stringify(message, null, 2);\r\n }\r\n }\r\n catch (e) {\r\n message = 'The provided \"message\" value could not be parsed with JSON.stringify().';\r\n }\r\n return message;\r\n }\r\n /**\r\n * Edits HttpRequest object before sending request to server\r\n * @param httpRequest default request object\r\n * @returns altered httprequest\r\n */\r\n alterHttpRequest(httpRequest) {\r\n return httpRequest;\r\n }\r\n /**\r\n * Sends request to server\r\n * @param url\r\n * @param logContent\r\n * @param options\r\n * @returns\r\n */\r\n logOnServer(url, logContent, options) {\r\n if (!this.httpBackend) {\r\n console.error('NGXLogger : Can\\'t log on server because HttpBackend is not provided. You need to import HttpClientModule');\r\n return of(null);\r\n }\r\n // HttpBackend skips all HttpInterceptors\r\n // They may log errors using this service causing circular calls\r\n let defaultRequest = new HttpRequest('POST', url, logContent, options || {});\r\n let finalRequest = of(defaultRequest);\r\n const alteredRequest = this.alterHttpRequest(defaultRequest);\r\n if (isObservable(alteredRequest)) {\r\n finalRequest = alteredRequest;\r\n }\r\n else if (alteredRequest) {\r\n finalRequest = of(alteredRequest);\r\n }\r\n else {\r\n console.warn('NGXLogger : alterHttpRequest returned an invalid request. Using default one instead');\r\n }\r\n return finalRequest.pipe(concatMap(req => {\r\n if (!req) {\r\n console.warn('NGXLogger : alterHttpRequest returned an invalid request (observable). Using default one instead');\r\n return this.httpBackend.handle(defaultRequest);\r\n }\r\n return this.httpBackend.handle(req);\r\n }), filter(e => e instanceof HttpResponse), map((httpResponse) => httpResponse.body));\r\n }\r\n /**\r\n * Customise the data sent to the API\r\n * @param metadata the data provided by NGXLogger\r\n * @returns the data that will be sent to the API in the body\r\n */\r\n customiseRequestBody(metadata) {\r\n // In our API the body is not customised\r\n return metadata;\r\n }\r\n /**\r\n * Flush the queue of the logger\r\n * @param config\r\n */\r\n flushQueue(config) {\r\n this.flushingQueue.next(true);\r\n // If a timer was set, we cancel it because the queue is flushed\r\n if (this.addToQueueTimer) {\r\n this.addToQueueTimer.unsubscribe();\r\n this.addToQueueTimer = null;\r\n }\r\n if (!!this.serverCallsQueue && this.serverCallsQueue.length > 0) {\r\n this.sendToServerAction(this.serverCallsQueue, config);\r\n }\r\n this.serverCallsQueue = [];\r\n this.flushingQueue.next(false);\r\n }\r\n sendToServerAction(metadata, config) {\r\n let requestBody;\r\n const secureMetadata = (pMetadata) => {\r\n // Copying metadata locally because we don't want to change the object for the caller\r\n const securedMetadata = { ...pMetadata };\r\n securedMetadata.additional = this.secureAdditionalParameters(securedMetadata.additional);\r\n securedMetadata.message = this.secureMessage(securedMetadata.message);\r\n return securedMetadata;\r\n };\r\n if (Array.isArray(metadata)) {\r\n requestBody = [];\r\n metadata.forEach(m => {\r\n requestBody.push(secureMetadata(m));\r\n });\r\n }\r\n else {\r\n requestBody = secureMetadata(metadata);\r\n }\r\n // Allow users to customise the data sent to the API\r\n requestBody = this.customiseRequestBody(requestBody);\r\n const headers = config.customHttpHeaders || new HttpHeaders();\r\n if (!headers.has('Content-Type')) {\r\n headers.set('Content-Type', 'application/json');\r\n }\r\n const logOnServerAction = () => {\r\n this.logOnServer(config.serverLoggingUrl, requestBody, {\r\n headers,\r\n params: config.customHttpParams || new HttpParams(),\r\n responseType: config.httpResponseType || 'json',\r\n withCredentials: config.withCredentials || false,\r\n }).pipe(catchError(err => {\r\n // Do not use NGXLogger here because this could cause an infinite loop \r\n console.error('NGXLogger: Failed to log on server', err);\r\n return throwError(err);\r\n })).subscribe();\r\n };\r\n if (config.serverCallsOutsideNgZone === true) {\r\n if (!this.ngZone) {\r\n console.error('NGXLogger: NgZone is not provided and serverCallsOutsideNgZone is set to true');\r\n return;\r\n }\r\n this.ngZone.runOutsideAngular(logOnServerAction);\r\n }\r\n else {\r\n logOnServerAction();\r\n }\r\n }\r\n /**\r\n * Sends the content to be logged to the server according to the config\r\n * @param metadata\r\n * @param config\r\n */\r\n sendToServer(metadata, config) {\r\n // If there is no batch mode in the config, we send the log call straight to the server as usual\r\n if ((!config.serverCallsBatchSize || config.serverCallsBatchSize <= 0) &&\r\n (!config.serverCallsTimer || config.serverCallsTimer <= 0)) {\r\n this.sendToServerAction(metadata, config);\r\n return;\r\n }\r\n const addLogToQueueAction = () => {\r\n this.serverCallsQueue.push({ ...metadata });\r\n // Flush queue when size is reached\r\n if (!!config.serverCallsBatchSize && this.serverCallsQueue.length > config.serverCallsBatchSize) {\r\n this.flushQueue(config);\r\n }\r\n // Call timer only if it is in the config and timer is not already running\r\n if (config.serverCallsTimer > 0 && !this.addToQueueTimer) {\r\n this.addToQueueTimer = timer(config.serverCallsTimer).subscribe(_ => {\r\n this.flushQueue(config);\r\n });\r\n }\r\n };\r\n // If queue is being flushed, we need to wait for it to finish before adding other calls\r\n if (this.flushingQueue.value === true) {\r\n this.flushingQueue.pipe(filter(fq => fq === false), take(1)).subscribe(_ => {\r\n addLogToQueueAction();\r\n });\r\n }\r\n else {\r\n addLogToQueueAction();\r\n }\r\n }\r\n}\r\n/** @nocollapse */ /** @nocollapse */ NGXLoggerServerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NGXLoggerServerService, deps: [{ token: i1.HttpBackend, optional: true }, { token: i0.NgZone, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\r\n/** @nocollapse */ /** @nocollapse */ NGXLoggerServerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NGXLoggerServerService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NGXLoggerServerService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: i1.HttpBackend, decorators: [{\r\n type: Optional\r\n }] }, { type: i0.NgZone, decorators: [{\r\n type: Optional\r\n }] }]; } });\n\n/**\r\n * Injection token of logger writer service\r\n */\r\nconst TOKEN_LOGGER_WRITER_SERVICE = 'TOKEN_LOGGER_WRITER_SERVICE';\n\nvar NgxLoggerLevel;\r\n(function (NgxLoggerLevel) {\r\n NgxLoggerLevel[NgxLoggerLevel[\"TRACE\"] = 0] = \"TRACE\";\r\n NgxLoggerLevel[NgxLoggerLevel[\"DEBUG\"] = 1] = \"DEBUG\";\r\n NgxLoggerLevel[NgxLoggerLevel[\"INFO\"] = 2] = \"INFO\";\r\n NgxLoggerLevel[NgxLoggerLevel[\"LOG\"] = 3] = \"LOG\";\r\n NgxLoggerLevel[NgxLoggerLevel[\"WARN\"] = 4] = \"WARN\";\r\n NgxLoggerLevel[NgxLoggerLevel[\"ERROR\"] = 5] = \"ERROR\";\r\n NgxLoggerLevel[NgxLoggerLevel[\"FATAL\"] = 6] = \"FATAL\";\r\n NgxLoggerLevel[NgxLoggerLevel[\"OFF\"] = 7] = \"OFF\";\r\n})(NgxLoggerLevel || (NgxLoggerLevel = {}));\n\nconst DEFAULT_COLOR_SCHEME = [\r\n 'purple',\r\n 'teal',\r\n 'gray',\r\n 'gray',\r\n 'red',\r\n 'red',\r\n 'red'\r\n];\n\nclass NGXLoggerWriterService {\r\n constructor(platformId) {\r\n this.platformId = platformId;\r\n /** List of functions called when preparing meta string */\r\n this.prepareMetaStringFuncs = [\r\n this.getTimestampToWrite,\r\n this.getLevelToWrite,\r\n this.getFileDetailsToWrite,\r\n this.getContextToWrite,\r\n ];\r\n this.isIE = isPlatformBrowser(platformId) && navigator && navigator.userAgent &&\r\n !!(navigator.userAgent.indexOf('MSIE') !== -1 || navigator.userAgent.match(/Trident\\//) || navigator.userAgent.match(/Edge\\//));\r\n this.logFunc = this.isIE ? this.logIE.bind(this) : this.logModern.bind(this);\r\n }\r\n getTimestampToWrite(metadata, config) {\r\n return metadata.timestamp;\r\n }\r\n getLevelToWrite(metadata, config) {\r\n return NgxLoggerLevel[metadata.level];\r\n }\r\n getFileDetailsToWrite(metadata, config) {\r\n return config.disableFileDetails === true ? '' : `[${metadata.fileName}:${metadata.lineNumber}:${metadata.columnNumber}]`;\r\n }\r\n getContextToWrite(metadata, config) {\r\n return config.context ? `{${config.context}}` : '';\r\n }\r\n /** Generate a \"meta\" string that is displayed before the content sent to the log function */\r\n prepareMetaString(metadata, config) {\r\n let metaString = '';\r\n this.prepareMetaStringFuncs.forEach(prepareMetaStringFunc => {\r\n const metaItem = prepareMetaStringFunc(metadata, config);\r\n if (metaItem) {\r\n metaString = metaString + ' ' + metaItem;\r\n }\r\n });\r\n return metaString.trim();\r\n }\r\n /** Get the color to use when writing to console */\r\n getColor(metadata, config) {\r\n const configColorScheme = config.colorScheme ?? DEFAULT_COLOR_SCHEME;\r\n // this is needed to avoid a build error\r\n if (metadata.level === NgxLoggerLevel.OFF) {\r\n return undefined;\r\n }\r\n return configColorScheme[metadata.level];\r\n }\r\n /** Log to the console specifically for IE */\r\n logIE(metadata, config, metaString) {\r\n // Coloring doesn't work in IE\r\n // make sure additional isn't null or undefined so that ...additional doesn't error\r\n const additional = metadata.additional || [];\r\n switch (metadata.level) {\r\n case NgxLoggerLevel.WARN:\r\n console.warn(`${metaString} `, metadata.message, ...additional);\r\n break;\r\n case NgxLoggerLevel.ERROR:\r\n case NgxLoggerLevel.FATAL:\r\n console.error(`${metaString} `, metadata.message, ...additional);\r\n break;\r\n case NgxLoggerLevel.INFO:\r\n console.info(`${metaString} `, metadata.message, ...additional);\r\n break;\r\n default:\r\n console.log(`${metaString} `, metadata.message, ...additional);\r\n }\r\n }\r\n /** Log to the console */\r\n logModern(metadata, config, metaString) {\r\n const color = this.getColor(metadata, config);\r\n // make sure additional isn't null or undefined so that ...additional doesn't error\r\n const additional = metadata.additional || [];\r\n switch (metadata.level) {\r\n case NgxLoggerLevel.WARN:\r\n console.warn(`%c${metaString}`, `color:${color}`, metadata.message, ...additional);\r\n break;\r\n case NgxLoggerLevel.ERROR:\r\n case NgxLoggerLevel.FATAL:\r\n console.error(`%c${metaString}`, `color:${color}`, metadata.message, ...additional);\r\n break;\r\n case NgxLoggerLevel.INFO:\r\n console.info(`%c${metaString}`, `color:${color}`, metadata.message, ...additional);\r\n break;\r\n // Disabling console.trace since the stack trace is not helpful. it is showing the stack trace of\r\n // the console.trace statement\r\n // case NgxLoggerLevel.TRACE:\r\n // console.trace(`%c${metaString}`, `color:${color}`, message, ...additional);\r\n // break;\r\n case NgxLoggerLevel.DEBUG:\r\n console.debug(`%c${metaString}`, `color:${color}`, metadata.message, ...additional);\r\n break;\r\n default:\r\n console.log(`%c${metaString}`, `color:${color}`, metadata.message, ...additional);\r\n }\r\n }\r\n /** Write the content sent to the log function to the console */\r\n writeMessage(metadata, config) {\r\n const metaString = this.prepareMetaString(metadata, config);\r\n this.logFunc(metadata, config, metaString);\r\n }\r\n}\r\n/** @nocollapse */ /** @nocollapse */ NGXLoggerWriterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NGXLoggerWriterService, deps: [{ token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable });\r\n/** @nocollapse */ /** @nocollapse */ NGXLoggerWriterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NGXLoggerWriterService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NGXLoggerWriterService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\r\n type: Inject,\r\n args: [PLATFORM_ID]\r\n }] }]; } });\n\nclass NGXLogger {\r\n constructor(config, configEngineFactory, metadataService, ruleService, mapperService, writerService, serverService) {\r\n this.metadataService = metadataService;\r\n this.ruleService = ruleService;\r\n this.mapperService = mapperService;\r\n this.writerService = writerService;\r\n this.serverService = serverService;\r\n this.configEngine = configEngineFactory.provideConfigEngine(config);\r\n }\r\n /** Get a readonly access to the level configured for the NGXLogger */\r\n get level() {\r\n return this.configEngine.level;\r\n }\r\n /** Get a readonly access to the serverLogLevel configured for the NGXLogger */\r\n get serverLogLevel() {\r\n return this.configEngine.serverLogLevel;\r\n }\r\n trace(message, ...additional) {\r\n this._log(NgxLoggerLevel.TRACE, message, additional);\r\n }\r\n debug(message, ...additional) {\r\n this._log(NgxLoggerLevel.DEBUG, message, additional);\r\n }\r\n info(message, ...additional) {\r\n this._log(NgxLoggerLevel.INFO, message, additional);\r\n }\r\n log(message, ...additional) {\r\n this._log(NgxLoggerLevel.LOG, message, additional);\r\n }\r\n warn(message, ...additional) {\r\n this._log(NgxLoggerLevel.WARN, message, additional);\r\n }\r\n error(message, ...additional) {\r\n this._log(NgxLoggerLevel.ERROR, message, additional);\r\n }\r\n fatal(message, ...additional) {\r\n this._log(NgxLoggerLevel.FATAL, message, additional);\r\n }\r\n /** @deprecated customHttpHeaders is now part of the config, this should be updated via @see updateConfig */\r\n setCustomHttpHeaders(headers) {\r\n const config = this.getConfigSnapshot();\r\n config.customHttpHeaders = headers;\r\n this.updateConfig(config);\r\n }\r\n /** @deprecated customHttpParams is now part of the config, this should be updated via @see updateConfig */\r\n setCustomParams(params) {\r\n const config = this.getConfigSnapshot();\r\n config.customHttpParams = params;\r\n this.updateConfig(config);\r\n }\r\n /** @deprecated withCredentials is now part of the config, this should be updated via @see updateConfig */\r\n setWithCredentialsOptionValue(withCredentials) {\r\n const config = this.getConfigSnapshot();\r\n config.withCredentials = withCredentials;\r\n this.updateConfig(config);\r\n }\r\n /**\r\n * Register a INGXLoggerMonitor that will be trigger when a log is either written or sent to server\r\n *\r\n * There is only one monitor, registering one will overwrite the last one if there was one\r\n * @param monitor\r\n */\r\n registerMonitor(monitor) {\r\n this._loggerMonitor = monitor;\r\n }\r\n /** Set config of logger\r\n *\r\n * Warning : This overwrites all the config, if you want to update only one property, you should use @see getConfigSnapshot before\r\n */\r\n updateConfig(config) {\r\n this.configEngine.updateConfig(config);\r\n }\r\n partialUpdateConfig(partialConfig) {\r\n this.configEngine.partialUpdateConfig(partialConfig);\r\n }\r\n /** Get config of logger */\r\n getConfigSnapshot() {\r\n return this.configEngine.getConfig();\r\n }\r\n /**\r\n * Flush the serveur queue\r\n */\r\n flushServerQueue() {\r\n this.serverService.flushQueue(this.getConfigSnapshot());\r\n }\r\n _log(level, message, additional = []) {\r\n const config = this.configEngine.getConfig();\r\n const shouldCallWriter = this.ruleService.shouldCallWriter(level, config, message, additional);\r\n const shouldCallServer = this.ruleService.shouldCallServer(level, config, message, additional);\r\n const shouldCallMonitor = this.ruleService.shouldCallMonitor(level, config, message, additional);\r\n if (!shouldCallWriter && !shouldCallServer && !shouldCallMonitor) {\r\n // If nothing is to be called we return\r\n return;\r\n }\r\n const metadata = this.metadataService.getMetadata(level, config, message, additional);\r\n this.mapperService.getLogPosition(config, metadata).pipe(take(1)).subscribe(logPosition => {\r\n if (logPosition) {\r\n metadata.fileName = logPosition.fileName;\r\n metadata.lineNumber = logPosition.lineNumber;\r\n metadata.columnNumber = logPosition.columnNumber;\r\n }\r\n if (shouldCallMonitor && this._loggerMonitor) {\r\n this._loggerMonitor.onLog(metadata, config);\r\n }\r\n if (shouldCallWriter) {\r\n this.writerService.writeMessage(metadata, config);\r\n }\r\n if (shouldCallServer) {\r\n this.serverService.sendToServer(metadata, config);\r\n }\r\n });\r\n }\r\n}\r\n/** @nocollapse */ /** @nocollapse */ NGXLogger.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NGXLogger, deps: [{ token: TOKEN_LOGGER_CONFIG }, { token: TOKEN_LOGGER_CONFIG_ENGINE_FACTORY }, { token: TOKEN_LOGGER_METADATA_SERVICE }, { token: TOKEN_LOGGER_RULES_SERVICE }, { token: TOKEN_LOGGER_MAPPER_SERVICE }, { token: TOKEN_LOGGER_WRITER_SERVICE }, { token: TOKEN_LOGGER_SERVER_SERVICE }], target: i0.ɵɵFactoryTarget.Injectable });\r\n/** @nocollapse */ /** @nocollapse */ NGXLogger.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NGXLogger, providedIn: 'root' });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NGXLogger, decorators: [{\r\n type: Injectable,\r\n args: [{\r\n providedIn: 'root'\r\n }]\r\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\r\n type: Inject,\r\n args: [TOKEN_LOGGER_CONFIG]\r\n }] }, { type: undefined, decorators: [{\r\n type: Inject,\r\n args: [TOKEN_LOGGER_CONFIG_ENGINE_FACTORY]\r\n }] }, { type: undefined, decorators: [{\r\n type: Inject,\r\n args: [TOKEN_LOGGER_METADATA_SERVICE]\r\n }] }, { type: undefined, decorators: [{\r\n type: Inject,\r\n args: [TOKEN_LOGGER_RULES_SERVICE]\r\n }] }, { type: undefined, decorators: [{\r\n type: Inject,\r\n args: [TOKEN_LOGGER_MAPPER_SERVICE]\r\n }] }, { type: undefined, decorators: [{\r\n type: Inject,\r\n args: [TOKEN_LOGGER_WRITER_SERVICE]\r\n }] }, { type: undefined, decorators: [{\r\n type: Inject,\r\n args: [TOKEN_LOGGER_SERVER_SERVICE]\r\n }] }]; } });\n\n/**\r\n * CustomNGXLoggerService is designed to allow users to get a new instance of a logger\r\n */\r\nclass CustomNGXLoggerService {\r\n constructor(logger, configEngineFactory, metadataService, ruleService, mapperService, writerService, serverService) {\r\n this.logger = logger;\r\n this.configEngineFactory = configEngineFactory;\r\n this.metadataService = metadataService;\r\n this.ruleService = ruleService;\r\n this.mapperService = mapperService;\r\n this.writerService = writerService;\r\n this.serverService = serverService;\r\n }\r\n /**\r\n * Create an instance of a logger\r\n * @deprecated this function does not have all the features, @see getNewInstance for every params available\r\n * @param config\r\n * @param serverService\r\n * @param logMonitor\r\n * @param mapperService\r\n * @returns\r\n */\r\n create(config, serverService, logMonitor, mapperService) {\r\n return this.getNewInstance({\r\n config,\r\n serverService,\r\n logMonitor,\r\n mapperService\r\n });\r\n }\r\n /**\r\n * Get a new instance of NGXLogger\r\n * @param params list of optional params to use when creating an instance of NGXLogger\r\n * @returns the new instance of NGXLogger\r\n */\r\n getNewInstance(params) {\r\n const logger = new NGXLogger(params?.config ?? this.logger.getConfigSnapshot(), params?.configEngineFactory ?? this.configEngineFactory, params?.metadataService ?? this.metadataService, params?.ruleService ?? this.ruleService, params?.mapperService ?? this.mapperService, params?.writerService ?? this.writerService, params?.serverService ?? this.serverService);\r\n if (params?.partialConfig) {\r\n logger.partialUpdateConfig(params.partialConfig);\r\n }\r\n if (params?.logMonitor) {\r\n logger.registerMonitor(params.logMonitor);\r\n }\r\n return logger;\r\n }\r\n}\r\n/** @nocollapse */ /** @nocollapse */ CustomNGXLoggerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: CustomNGXLoggerService, deps: [{ token: NGXLogger }, { token: TOKEN_LOGGER_CONFIG_ENGINE_FACTORY }, { token: TOKEN_LOGGER_METADATA_SERVICE }, { token: TOKEN_LOGGER_RULES_SERVICE }, { token: TOKEN_LOGGER_MAPPER_SERVICE }, { token: TOKEN_LOGGER_WRITER_SERVICE }, { token: TOKEN_LOGGER_SERVER_SERVICE }], target: i0.ɵɵFactoryTarget.Injectable });\r\n/** @nocollapse */ /** @nocollapse */ CustomNGXLoggerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: CustomNGXLoggerService, providedIn: 'root' });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: CustomNGXLoggerService, decorators: [{\r\n type: Injectable,\r\n args: [{\r\n providedIn: 'root'\r\n }]\r\n }], ctorParameters: function () { return [{ type: NGXLogger }, { type: undefined, decorators: [{\r\n type: Inject,\r\n args: [TOKEN_LOGGER_CONFIG_ENGINE_FACTORY]\r\n }] }, { type: undefined, decorators: [{\r\n type: Inject,\r\n args: [TOKEN_LOGGER_METADATA_SERVICE]\r\n }] }, { type: undefined, decorators: [{\r\n type: Inject,\r\n args: [TOKEN_LOGGER_RULES_SERVICE]\r\n }] }, { type: undefined, decorators: [{\r\n type: Inject,\r\n args: [TOKEN_LOGGER_MAPPER_SERVICE]\r\n }] }, { type: undefined, decorators: [{\r\n type: Inject,\r\n args: [TOKEN_LOGGER_WRITER_SERVICE]\r\n }] }, { type: undefined, decorators: [{\r\n type: Inject,\r\n args: [TOKEN_LOGGER_SERVER_SERVICE]\r\n }] }]; } });\n\nclass LoggerModule {\r\n static forRoot(config, customProvider) {\r\n if (!customProvider) {\r\n customProvider = {};\r\n }\r\n // default config provider\r\n if (!customProvider.configProvider) {\r\n customProvider.configProvider = { provide: TOKEN_LOGGER_CONFIG, useValue: config || {} };\r\n }\r\n else {\r\n // if the user provided its own config, we just make sure the injection token is correct\r\n if (customProvider.configProvider.provide !== TOKEN_LOGGER_CONFIG) {\r\n throw new Error(`Wrong injection token for configProvider, it should be ${TOKEN_LOGGER_CONFIG} and you used ${customProvider.configProvider.provide}`);\r\n }\r\n }\r\n // default configEngine provider\r\n if (!customProvider.configEngineFactoryProvider) {\r\n customProvider.configEngineFactoryProvider = { provide: TOKEN_LOGGER_CONFIG_ENGINE_FACTORY, useClass: NGXLoggerConfigEngineFactory };\r\n }\r\n else {\r\n // if the user provided its own configEngineFactory, we just make sure the injection token is correct\r\n if (customProvider.configEngineFactoryProvider.provide !== TOKEN_LOGGER_CONFIG_ENGINE_FACTORY) {\r\n throw new Error(`Wrong injection token for configEngineFactoryProvider, it should be '${TOKEN_LOGGER_CONFIG_ENGINE_FACTORY}' and you used '${customProvider.configEngineFactoryProvider.provide}'`);\r\n }\r\n }\r\n // default metadata provider\r\n if (!customProvider.metadataProvider) {\r\n customProvider.metadataProvider = { provide: TOKEN_LOGGER_METADATA_SERVICE, useClass: NGXLoggerMetadataService };\r\n }\r\n else {\r\n // if the user provided its own metadataService, we just make sure the injection token is correct\r\n if (customProvider.metadataProvider.provide !== TOKEN_LOGGER_METADATA_SERVICE) {\r\n throw new Error(`Wrong injection token for metadataProvider, it should be '${TOKEN_LOGGER_METADATA_SERVICE}' and you used '${customProvider.metadataProvider.provide}'`);\r\n }\r\n }\r\n // default rule provider\r\n if (!customProvider.ruleProvider) {\r\n customProvider.ruleProvider = { provide: TOKEN_LOGGER_RULES_SERVICE, useClass: NGXLoggerRulesService };\r\n }\r\n else {\r\n // if the user provided its own ruleService, we just make sure the injection token is correct\r\n if (customProvider.ruleProvider.provide !== TOKEN_LOGGER_RULES_SERVICE) {\r\n throw new Error(`Wrong injection token for ruleProvider, it should be '${TOKEN_LOGGER_RULES_SERVICE}' and you used '${customProvider.ruleProvider.provide}'`);\r\n }\r\n }\r\n // default mapper provider\r\n if (!customProvider.mapperProvider) {\r\n customProvider.mapperProvider = { provide: TOKEN_LOGGER_MAPPER_SERVICE, useClass: NGXLoggerMapperService };\r\n }\r\n else {\r\n // if the user provided its own mapperService, we just make sure the injection token is correct\r\n if (customProvider.mapperProvider.provide !== TOKEN_LOGGER_MAPPER_SERVICE) {\r\n throw new Error(`Wrong injection token for mapperProvider, it should be '${TOKEN_LOGGER_MAPPER_SERVICE}' and you used '${customProvider.mapperProvider.provide}'`);\r\n }\r\n }\r\n // default writer provider\r\n if (!customProvider.writerProvider) {\r\n customProvider.writerProvider = { provide: TOKEN_LOGGER_WRITER_SERVICE, useClass: NGXLoggerWriterService };\r\n }\r\n else {\r\n // if the user provided its own writerService, we just make sure the injection token is correct\r\n if (customProvider.writerProvider.provide !== TOKEN_LOGGER_WRITER_SERVICE) {\r\n throw new Error(`Wrong injection token for writerProvider, it should be '${TOKEN_LOGGER_WRITER_SERVICE}' and you used '${customProvider.writerProvider.provide}'`);\r\n }\r\n }\r\n // default server provider\r\n if (!customProvider.serverProvider) {\r\n customProvider.serverProvider = { provide: TOKEN_LOGGER_SERVER_SERVICE, useClass: NGXLoggerServerService };\r\n }\r\n else {\r\n // if the user provided its own serverService, we just make sure the injection token is correct\r\n if (customProvider.serverProvider.provide !== TOKEN_LOGGER_SERVER_SERVICE) {\r\n throw new Error(`Wrong injection token for serverProvider, it should be '${TOKEN_LOGGER_SERVER_SERVICE}' and you used '${customProvider.writerProvider.provide}'`);\r\n }\r\n }\r\n return {\r\n ngModule: LoggerModule,\r\n providers: [\r\n NGXLogger,\r\n customProvider.configProvider,\r\n customProvider.configEngineFactoryProvider,\r\n customProvider.metadataProvider,\r\n customProvider.ruleProvider,\r\n customProvider.mapperProvider,\r\n customProvider.writerProvider,\r\n customProvider.serverProvider,\r\n CustomNGXLoggerService,\r\n ]\r\n };\r\n }\r\n static forChild() {\r\n // todo : this forChild is useless for now because nothing is different from forRoot.\r\n // This should be implemented so that user can change the providers in the forChild\r\n return {\r\n ngModule: LoggerModule,\r\n };\r\n }\r\n}\r\n/** @nocollapse */ /** @nocollapse */ LoggerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: LoggerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\r\n/** @nocollapse */ /** @nocollapse */ LoggerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: LoggerModule, imports: [CommonModule] });\r\n/** @nocollapse */ /** @nocollapse */ LoggerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: LoggerModule, imports: [[\r\n CommonModule\r\n ]] });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: LoggerModule, decorators: [{\r\n type: NgModule,\r\n args: [{\r\n imports: [\r\n CommonModule\r\n ],\r\n }]\r\n }] });\n\n/*\r\n * Public API Surface of ngx-logger\r\n */\n\n/**\r\n * Generated bundle index. Do not edit.\r\n */\n\nexport { CustomNGXLoggerService, DEFAULT_COLOR_SCHEME, LoggerModule, NGXLogger, NGXLoggerConfigEngine, NGXLoggerConfigEngineFactory, NGXLoggerMapperService, NGXLoggerMetadataService, NGXLoggerMonitor, NGXLoggerRulesService, NGXLoggerServerService, NGXLoggerWriterService, NgxLoggerLevel, TOKEN_LOGGER_CONFIG, TOKEN_LOGGER_CONFIG_ENGINE_FACTORY, TOKEN_LOGGER_MAPPER_SERVICE, TOKEN_LOGGER_METADATA_SERVICE, TOKEN_LOGGER_RULES_SERVICE, TOKEN_LOGGER_SERVER_SERVICE, TOKEN_LOGGER_WRITER_SERVICE };\n","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { identity } from '../util/identity';\nimport { timer } from '../observable/timer';\nimport { innerFrom } from '../observable/innerFrom';\nexport function retry(configOrCount = Infinity) {\n let config;\n if (configOrCount && typeof configOrCount === 'object') {\n config = configOrCount;\n }\n else {\n config = {\n count: configOrCount,\n };\n }\n const { count = Infinity, delay, resetOnSuccess: resetOnSuccess = false } = config;\n return count <= 0\n ? identity\n : operate((source, subscriber) => {\n let soFar = 0;\n let innerSub;\n const subscribeForRetry = () => {\n let syncUnsub = false;\n innerSub = source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n if (resetOnSuccess) {\n soFar = 0;\n }\n subscriber.next(value);\n }, undefined, (err) => {\n if (soFar++ < count) {\n const resub = () => {\n if (innerSub) {\n innerSub.unsubscribe();\n innerSub = null;\n subscribeForRetry();\n }\n else {\n syncUnsub = true;\n }\n };\n if (delay != null) {\n const notifier = typeof delay === 'number' ? timer(delay) : innerFrom(delay(err, soFar));\n const notifierSubscriber = createOperatorSubscriber(subscriber, () => {\n notifierSubscriber.unsubscribe();\n resub();\n }, () => {\n subscriber.complete();\n });\n notifier.subscribe(notifierSubscriber);\n }\n else {\n resub();\n }\n }\n else {\n subscriber.error(err);\n }\n }));\n if (syncUnsub) {\n innerSub.unsubscribe();\n innerSub = null;\n subscribeForRetry();\n }\n };\n subscribeForRetry();\n });\n}\n","import { Injectable } from '@angular/core';\nimport { NGXLogger } from 'ngx-logger';\n\n@Injectable()\nexport class LoggerService {\n constructor(private logger: NGXLogger) {}\n\n getLogger(className): Logger {\n const DEBUG = '[' + className + ']:DEBUG:';\n const WARN = '[' + className + ']:WARN:';\n const ERROR = '[' + className + ']:ERROR:';\n\n const logger: Logger = {\n debug: (...args) => this.logger.debug(DEBUG, ...args),\n error: (...args) => this.logger.error(ERROR, ...args),\n warn: (...args) => this.logger.warn(WARN, ...args),\n };\n\n return logger;\n }\n}\n\nexport interface Logger {\n debug: (...args) => void;\n warn: (...args) => void;\n error: (...args) => void;\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { AppUser } from '@common/authentication/model/user-profile';\nimport { Logger, LoggerService } from '@shared/logger/logger.service';\nimport { Observable } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { getCustomerType } from '../../../usana/src/app/state/app.utils';\nimport { SystemAlert } from './state/system-alerts.state.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SystemAlertService {\n log: Logger;\n\n constructor(private loggerService: LoggerService, private http: HttpClient) {\n this.log = this.loggerService.getLogger('SystemAlertService');\n }\n\n getSystemAlerts(user: AppUser, locale: string): Observable {\n const customerType = getCustomerType(user);\n\n return this.http.get('/mvc/alerts/system/' + locale + '/all/' + customerType + '/').pipe(\n catchError((err) => {\n this.log.error(err);\n return [];\n }),\n map((alerts: SystemAlert[]) => alerts)\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { UserProfile } from '@common/authentication/model/user-profile';\nimport { Action, State, StateContext, Store } from '@ngxs/store';\nimport cloneDeep from 'lodash/cloneDeep';\nimport { map } from 'rxjs/operators';\nimport { SystemAlertService } from '../system-alert.service';\nimport { DeleteSystemAlert, LoadSystemAlerts, SetSystemAlerts } from './system-alerts.actions';\nimport { SystemAlertsStateModel } from './system-alerts.state.model';\n\n@State({\n name: 'systemAlerts',\n defaults: {\n alerts: [],\n },\n})\n@Injectable()\nexport class SystemAlertsState {\n constructor(private sysAlertSvc: SystemAlertService, private store: Store) {}\n\n @Action(SetSystemAlerts)\n setAlerts({ patchState }: StateContext, action: SetSystemAlerts) {\n patchState(action);\n }\n\n @Action(LoadSystemAlerts)\n getAlerts({ dispatch }: StateContext) {\n const userProfileState: UserProfile = this.store.snapshot().userProfile;\n if (userProfileState && userProfileState.user) {\n return this.sysAlertSvc\n .getSystemAlerts(userProfileState.user, userProfileState.locale)\n .pipe(map((alerts) => dispatch(new SetSystemAlerts(alerts))));\n }\n }\n\n @Action(DeleteSystemAlert)\n deleteAlert({ patchState, getState }: StateContext, action: DeleteSystemAlert) {\n const alerts = cloneDeep(getState().alerts);\n alerts.splice(action.index, 1);\n return patchState({ alerts });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { CommonIconsModule } from '@common/common-icons/common-icons.module';\nimport { NgxsModule } from '@ngxs/store';\nimport { UnsafeModule } from '@shared/pipes/unsafe/unsafe.module';\nimport { SystemAlertsState } from './state/system-alerts.state';\nimport { SystemAlertComponent } from './system-alert.component';\n\n@NgModule({\n declarations: [SystemAlertComponent],\n imports: [CommonModule, NgxsModule.forFeature([SystemAlertsState]), UnsafeModule, CommonIconsModule],\n exports: [SystemAlertComponent],\n})\nexport class SystemAlertsModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TranslationModule } from '@common/translation/translation.module';\nimport { UplineLeaderPlacementComponent } from './upline-leader-placement/upline-leader-placement.component';\n\n@NgModule({\n declarations: [UplineLeaderPlacementComponent],\n imports: [CommonModule, TranslationModule],\n exports: [UplineLeaderPlacementComponent],\n})\nexport class UplineLeaderPlacementModule {}\n","import { print } from 'graphql';\nimport * as i0 from '@angular/core';\nimport { Injectable } from '@angular/core';\nimport { ApolloLink, Observable as Observable$1 } from '@apollo/client/core';\nimport { Observable } from 'rxjs';\nimport * as i1 from '@angular/common/http';\nimport { HttpHeaders } from '@angular/common/http';\nimport { BatchLink } from '@apollo/client/link/batch';\n\nconst fetch = (req, httpClient, extractFiles) => {\n const shouldUseBody = ['POST', 'PUT', 'PATCH'].indexOf(req.method.toUpperCase()) !== -1;\n const shouldStringify = (param) => ['variables', 'extensions'].indexOf(param.toLowerCase()) !== -1;\n const isBatching = req.body.length;\n let shouldUseMultipart = req.options && req.options.useMultipart;\n let multipartInfo;\n if (shouldUseMultipart) {\n if (isBatching) {\n return new Observable(observer => observer.error(new Error('File upload is not available when combined with Batching')));\n }\n if (!shouldUseBody) {\n return new Observable(observer => observer.error(new Error('File upload is not available when GET is used')));\n }\n if (!extractFiles) {\n return new Observable(observer => observer.error(new Error(`To use File upload you need to pass \"extractFiles\" function from \"extract-files\" library to HttpLink's options`)));\n }\n multipartInfo = extractFiles(req.body);\n shouldUseMultipart = !!multipartInfo.files.size;\n }\n // `body` for some, `params` for others\n let bodyOrParams = {};\n if (isBatching) {\n if (!shouldUseBody) {\n return new Observable(observer => observer.error(new Error('Batching is not available for GET requests')));\n }\n bodyOrParams = {\n body: req.body,\n };\n }\n else {\n const body = shouldUseMultipart ? multipartInfo.clone : req.body;\n if (shouldUseBody) {\n bodyOrParams = {\n body,\n };\n }\n else {\n const params = Object.keys(req.body).reduce((obj, param) => {\n const value = req.body[param];\n obj[param] = shouldStringify(param) ? JSON.stringify(value) : value;\n return obj;\n }, {});\n bodyOrParams = { params: params };\n }\n }\n if (shouldUseMultipart && shouldUseBody) {\n const form = new FormData();\n form.append('operations', JSON.stringify(bodyOrParams.body));\n const map = {};\n const files = multipartInfo.files;\n let i = 0;\n files.forEach(paths => {\n map[++i] = paths;\n });\n form.append('map', JSON.stringify(map));\n i = 0;\n files.forEach((_, file) => {\n form.append(++i + '', file, file.name);\n });\n bodyOrParams.body = form;\n }\n // create a request\n return httpClient.request(req.method, req.url, {\n observe: 'response',\n responseType: 'json',\n reportProgress: false,\n ...bodyOrParams,\n ...req.options,\n });\n};\nconst mergeHeaders = (source, destination) => {\n if (source && destination) {\n const merged = destination\n .keys()\n .reduce((headers, name) => headers.set(name, destination.getAll(name)), source);\n return merged;\n }\n return destination || source;\n};\nfunction prioritize(...values) {\n const picked = values.find(val => typeof val !== 'undefined');\n if (typeof picked === 'undefined') {\n return values[values.length - 1];\n }\n return picked;\n}\nfunction createHeadersWithClientAwareness(context) {\n // `apollographql-client-*` headers are automatically set if a\n // `clientAwareness` object is found in the context. These headers are\n // set first, followed by the rest of the headers pulled from\n // `context.headers`.\n let headers = context.headers && context.headers instanceof HttpHeaders\n ? context.headers\n : new HttpHeaders(context.headers);\n if (context.clientAwareness) {\n const { name, version } = context.clientAwareness;\n // If desired, `apollographql-client-*` headers set by\n // the `clientAwareness` object can be overridden by\n // `apollographql-client-*` headers set in `context.headers`.\n if (name && !headers.has('apollographql-client-name')) {\n headers = headers.set('apollographql-client-name', name);\n }\n if (version && !headers.has('apollographql-client-version')) {\n headers = headers.set('apollographql-client-version', version);\n }\n }\n return headers;\n}\n\n// XXX find a better name for it\nclass HttpLinkHandler extends ApolloLink {\n httpClient;\n options;\n requester;\n print = print;\n constructor(httpClient, options) {\n super();\n this.httpClient = httpClient;\n this.options = options;\n if (this.options.operationPrinter) {\n this.print = this.options.operationPrinter;\n }\n this.requester = (operation) => new Observable$1((observer) => {\n const context = operation.getContext();\n // decides which value to pick, Context, Options or to just use the default\n const pick = (key, init) => {\n return prioritize(context[key], this.options[key], init);\n };\n let method = pick('method', 'POST');\n const includeQuery = pick('includeQuery', true);\n const includeExtensions = pick('includeExtensions', false);\n const url = pick('uri', 'graphql');\n const withCredentials = pick('withCredentials');\n const useMultipart = pick('useMultipart');\n const useGETForQueries = this.options.useGETForQueries === true;\n const isQuery = operation.query.definitions.some(def => def.kind === 'OperationDefinition' && def.operation === 'query');\n if (useGETForQueries && isQuery) {\n method = 'GET';\n }\n const req = {\n method,\n url: typeof url === 'function' ? url(operation) : url,\n body: {\n operationName: operation.operationName,\n variables: operation.variables,\n },\n options: {\n withCredentials,\n useMultipart,\n headers: this.options.headers,\n },\n };\n if (includeExtensions) {\n req.body.extensions = operation.extensions;\n }\n if (includeQuery) {\n req.body.query = this.print(operation.query);\n }\n const headers = createHeadersWithClientAwareness(context);\n req.options.headers = mergeHeaders(req.options.headers, headers);\n const sub = fetch(req, this.httpClient, this.options.extractFiles).subscribe({\n next: response => {\n operation.setContext({ response });\n observer.next(response.body);\n },\n error: err => observer.error(err),\n complete: () => observer.complete(),\n });\n return () => {\n if (!sub.closed) {\n sub.unsubscribe();\n }\n };\n });\n }\n request(op) {\n return this.requester(op);\n }\n}\nclass HttpLink {\n httpClient;\n constructor(httpClient) {\n this.httpClient = httpClient;\n }\n create(options) {\n return new HttpLinkHandler(this.httpClient, options);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.2\", ngImport: i0, type: HttpLink, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.2\", ngImport: i0, type: HttpLink, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.2\", ngImport: i0, type: HttpLink, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });\n\nconst defaults = {\n batchInterval: 10,\n batchMax: 10,\n uri: 'graphql',\n method: 'POST',\n};\nclass HttpBatchLinkHandler extends ApolloLink {\n httpClient;\n options;\n batcher;\n batchInterval;\n batchMax;\n print = print;\n constructor(httpClient, options) {\n super();\n this.httpClient = httpClient;\n this.options = options;\n this.batchInterval = options.batchInterval || defaults.batchInterval;\n this.batchMax = options.batchMax || defaults.batchMax;\n if (this.options.operationPrinter) {\n this.print = this.options.operationPrinter;\n }\n const batchHandler = (operations) => {\n return new Observable$1((observer) => {\n const body = this.createBody(operations);\n const headers = this.createHeaders(operations);\n const { method, uri, withCredentials } = this.createOptions(operations);\n if (typeof uri === 'function') {\n throw new Error(`Option 'uri' is a function, should be a string`);\n }\n const req = {\n method,\n url: uri,\n body: body,\n options: {\n withCredentials,\n headers,\n },\n };\n const sub = fetch(req, this.httpClient, () => {\n throw new Error('File upload is not available when combined with Batching');\n }).subscribe({\n next: result => observer.next(result.body),\n error: err => observer.error(err),\n complete: () => observer.complete(),\n });\n return () => {\n if (!sub.closed) {\n sub.unsubscribe();\n }\n };\n });\n };\n const batchKey = options.batchKey ||\n ((operation) => {\n return this.createBatchKey(operation);\n });\n this.batcher = new BatchLink({\n batchInterval: this.batchInterval,\n batchMax: this.batchMax,\n batchKey,\n batchHandler,\n });\n }\n createOptions(operations) {\n const context = operations[0].getContext();\n return {\n method: prioritize(context.method, this.options.method, defaults.method),\n uri: prioritize(context.uri, this.options.uri, defaults.uri),\n withCredentials: prioritize(context.withCredentials, this.options.withCredentials),\n };\n }\n createBody(operations) {\n return operations.map(operation => {\n const includeExtensions = prioritize(operation.getContext().includeExtensions, this.options.includeExtensions, false);\n const includeQuery = prioritize(operation.getContext().includeQuery, this.options.includeQuery, true);\n const body = {\n operationName: operation.operationName,\n variables: operation.variables,\n };\n if (includeExtensions) {\n body.extensions = operation.extensions;\n }\n if (includeQuery) {\n body.query = this.print(operation.query);\n }\n return body;\n });\n }\n createHeaders(operations) {\n return operations.reduce((headers, operation) => {\n return mergeHeaders(headers, operation.getContext().headers);\n }, createHeadersWithClientAwareness({\n headers: this.options.headers,\n clientAwareness: operations[0]?.getContext()?.clientAwareness,\n }));\n }\n createBatchKey(operation) {\n const context = operation.getContext();\n if (context.skipBatching) {\n return Math.random().toString(36).substr(2, 9);\n }\n const headers = context.headers && context.headers.keys().map((k) => context.headers.get(k));\n const opts = JSON.stringify({\n includeQuery: context.includeQuery,\n includeExtensions: context.includeExtensions,\n headers,\n });\n return prioritize(context.uri, this.options.uri) + opts;\n }\n request(op) {\n return this.batcher.request(op);\n }\n}\nclass HttpBatchLink {\n httpClient;\n constructor(httpClient) {\n this.httpClient = httpClient;\n }\n create(options) {\n return new HttpBatchLinkHandler(this.httpClient, options);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.2\", ngImport: i0, type: HttpBatchLink, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.2\", ngImport: i0, type: HttpBatchLink, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.2\", ngImport: i0, type: HttpBatchLink, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });\n\n// http\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { HttpBatchLink, HttpBatchLinkHandler, HttpLink, HttpLinkHandler };\n","import { NgModule } from '@angular/core';\nimport { TranslationModule } from '@common/translation/translation.module';\nimport { CommonIconsModule } from '../common-icons/common-icons.module';\nimport { Error401Component } from './error401.component';\nimport { Error404Component } from './error404.component';\n\n@NgModule({\n declarations: [Error401Component, Error404Component],\n imports: [TranslationModule, CommonIconsModule],\n exports: [Error401Component, Error404Component],\n})\nexport class ErrorPageModule {}\n","import { Injectable } from '@angular/core';\nimport {\n ChangeOpenNavigationLevel,\n UpdateTopNavHeight,\n UpdateTopNavRender,\n} from '@common/navigation/state/navigation.actions';\nimport { NavigationLevel, NavigationStateModel } from '@common/navigation/state/navigation.state.model';\nimport { Action, State, StateContext } from '@ngxs/store';\n\n@State({\n name: 'navigation',\n defaults: {\n navLevelOpen: NavigationLevel.NONE,\n topNavHeight: 80,\n fixedNav: false,\n mobileHide: false,\n },\n})\n@Injectable()\nexport class NavigationState {\n @Action(ChangeOpenNavigationLevel)\n changeOpenNavigationLevel({ patchState }: StateContext, action: ChangeOpenNavigationLevel) {\n return patchState({ navLevelOpen: action.level });\n }\n\n @Action(UpdateTopNavHeight)\n updateTopNavHeight({ patchState }: StateContext, action: UpdateTopNavHeight) {\n return patchState({ topNavHeight: action.height });\n }\n\n @Action(UpdateTopNavRender)\n updateTopNavRender({ patchState }: StateContext, action: UpdateTopNavRender) {\n return patchState({ fixedNav: action.fixed, mobileHide: action.mobileHide });\n }\n}\n","import * as i1 from '@angular/animations';\nimport { style, animate } from '@angular/animations';\nimport * as i0 from '@angular/core';\nimport { EventEmitter, Directive, Output, HostBinding, Input, NgModule } from '@angular/core';\n\nconst COLLAPSE_ANIMATION_TIMING = '400ms cubic-bezier(0.4,0.0,0.2,1)';\nconst expandAnimation = [\n style({ height: 0, visibility: 'hidden' }),\n animate(COLLAPSE_ANIMATION_TIMING, style({ height: '*', visibility: 'visible' }))\n];\nconst collapseAnimation = [\n style({ height: '*', visibility: 'visible' }),\n animate(COLLAPSE_ANIMATION_TIMING, style({ height: 0, visibility: 'hidden' }))\n];\n\nclass CollapseDirective {\n set display(value) {\n this._display = value;\n if (value === 'none') {\n this.hide();\n return;\n }\n this.isAnimated ? this.toggle() : this.show();\n }\n /** A flag indicating visibility of content (shown or hidden) */\n set collapse(value) {\n this.collapseNewValue = value;\n if (!this._player || this._isAnimationDone) {\n this.isExpanded = value;\n this.toggle();\n }\n }\n get collapse() {\n return this.isExpanded;\n }\n constructor(_el, _renderer, _builder) {\n this._el = _el;\n this._renderer = _renderer;\n /** This event fires as soon as content collapses */\n this.collapsed = new EventEmitter();\n /** This event fires when collapsing is started */\n this.collapses = new EventEmitter();\n /** This event fires as soon as content becomes visible */\n this.expanded = new EventEmitter();\n /** This event fires when expansion is started */\n this.expands = new EventEmitter();\n // shown\n this.isExpanded = true;\n this.collapseNewValue = true;\n // hidden\n this.isCollapsed = false;\n // stale state\n this.isCollapse = true;\n // animation state\n this.isCollapsing = false;\n /** turn on/off animation */\n this.isAnimated = false;\n this._display = 'block';\n this._stylesLoaded = false;\n this._COLLAPSE_ACTION_NAME = 'collapse';\n this._EXPAND_ACTION_NAME = 'expand';\n this._factoryCollapseAnimation = _builder.build(collapseAnimation);\n this._factoryExpandAnimation = _builder.build(expandAnimation);\n }\n ngAfterViewChecked() {\n this._stylesLoaded = true;\n if (!this._player || !this._isAnimationDone) {\n return;\n }\n this._player.reset();\n this._renderer.setStyle(this._el.nativeElement, 'height', '*');\n }\n /** allows to manually toggle content visibility */\n toggle() {\n if (this.isExpanded) {\n this.hide();\n }\n else {\n this.show();\n }\n }\n /** allows to manually hide content */\n hide() {\n this.isCollapsing = true;\n this.isExpanded = false;\n this.isCollapsed = true;\n this.isCollapsing = false;\n this.collapses.emit(this);\n this._isAnimationDone = false;\n this.animationRun(this.isAnimated, this._COLLAPSE_ACTION_NAME)(() => {\n this._isAnimationDone = true;\n if (this.collapseNewValue !== this.isCollapsed && this.isAnimated) {\n this.show();\n return;\n }\n this.collapsed.emit(this);\n this._renderer.setStyle(this._el.nativeElement, 'display', 'none');\n });\n }\n /** allows to manually show collapsed content */\n show() {\n this._renderer.setStyle(this._el.nativeElement, 'display', this._display);\n this.isCollapsing = true;\n this.isExpanded = true;\n this.isCollapsed = false;\n this.isCollapsing = false;\n this.expands.emit(this);\n this._isAnimationDone = false;\n this.animationRun(this.isAnimated, this._EXPAND_ACTION_NAME)(() => {\n this._isAnimationDone = true;\n if (this.collapseNewValue !== this.isCollapsed && this.isAnimated) {\n this.hide();\n return;\n }\n this.expanded.emit(this);\n this._renderer.removeStyle(this._el.nativeElement, 'overflow');\n });\n }\n animationRun(isAnimated, action) {\n if (!isAnimated || !this._stylesLoaded) {\n return (callback) => callback();\n }\n this._renderer.setStyle(this._el.nativeElement, 'overflow', 'hidden');\n this._renderer.addClass(this._el.nativeElement, 'collapse');\n const factoryAnimation = (action === this._EXPAND_ACTION_NAME)\n ? this._factoryExpandAnimation\n : this._factoryCollapseAnimation;\n if (this._player) {\n this._player.reset();\n }\n this._player = factoryAnimation.create(this._el.nativeElement);\n this._player.play();\n return (callback) => this._player?.onDone(callback);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.4\", ngImport: i0, type: CollapseDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.AnimationBuilder }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.4\", type: CollapseDirective, selector: \"[collapse]\", inputs: { display: \"display\", isAnimated: \"isAnimated\", collapse: \"collapse\" }, outputs: { collapsed: \"collapsed\", collapses: \"collapses\", expanded: \"expanded\", expands: \"expands\" }, host: { properties: { \"class.collapse\": \"this.isCollapse\", \"class.in\": \"this.isExpanded\", \"class.show\": \"this.isExpanded\", \"attr.aria-hidden\": \"this.isCollapsed\", \"class.collapsing\": \"this.isCollapsing\" } }, exportAs: [\"bs-collapse\"], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.4\", ngImport: i0, type: CollapseDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[collapse]',\n exportAs: 'bs-collapse',\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '[class.collapse]': 'true'\n }\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.AnimationBuilder }]; }, propDecorators: { collapsed: [{\n type: Output\n }], collapses: [{\n type: Output\n }], expanded: [{\n type: Output\n }], expands: [{\n type: Output\n }], isExpanded: [{\n type: HostBinding,\n args: ['class.in']\n }, {\n type: HostBinding,\n args: ['class.show']\n }], isCollapsed: [{\n type: HostBinding,\n args: ['attr.aria-hidden']\n }], isCollapse: [{\n type: HostBinding,\n args: ['class.collapse']\n }], isCollapsing: [{\n type: HostBinding,\n args: ['class.collapsing']\n }], display: [{\n type: Input\n }], isAnimated: [{\n type: Input\n }], collapse: [{\n type: Input\n }] } });\n\nclass CollapseModule {\n static forRoot() {\n return { ngModule: CollapseModule, providers: [] };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.4\", ngImport: i0, type: CollapseModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.1.4\", ngImport: i0, type: CollapseModule, declarations: [CollapseDirective], exports: [CollapseDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.1.4\", ngImport: i0, type: CollapseModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.4\", ngImport: i0, type: CollapseModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [CollapseDirective],\n exports: [CollapseDirective]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CollapseDirective, CollapseModule };\n","import * as i0 from '@angular/core';\nimport { Injectable, Component, Input, EventEmitter, Inject, Output, HostBinding, NgModule } from '@angular/core';\nimport * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i2 from 'ngx-bootstrap/collapse';\nimport { CollapseModule } from 'ngx-bootstrap/collapse';\n\n/**\n * Configuration service, provides default values for the AccordionComponent.\n */\nclass AccordionConfig {\n constructor() {\n /** Whether the other panels should be closed when a panel is opened */\n this.closeOthers = false;\n /** turn on/off animation */\n this.isAnimated = false;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.4\", ngImport: i0, type: AccordionConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.4\", ngImport: i0, type: AccordionConfig, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.4\", ngImport: i0, type: AccordionConfig, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }] });\n\n/** Displays collapsible content panels for presenting information in a limited amount of space. */\nclass AccordionComponent {\n constructor(config) {\n /** turn on/off animation */\n this.isAnimated = false;\n /** if `true` expanding one item will close all others */\n this.closeOthers = false;\n this.groups = [];\n Object.assign(this, config);\n }\n closeOtherPanels(openGroup) {\n if (!this.closeOthers) {\n return;\n }\n this.groups.forEach((group) => {\n if (group !== openGroup) {\n group.isOpen = false;\n }\n });\n }\n addGroup(group) {\n group.isAnimated = this.isAnimated;\n this.groups.push(group);\n }\n removeGroup(group) {\n const index = this.groups.indexOf(group);\n if (index !== -1) {\n this.groups.splice(index, 1);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.4\", ngImport: i0, type: AccordionComponent, deps: [{ token: AccordionConfig }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.1.4\", type: AccordionComponent, selector: \"accordion\", inputs: { isAnimated: \"isAnimated\", closeOthers: \"closeOthers\" }, host: { attributes: { \"role\": \"tablist\" }, properties: { \"attr.aria-multiselectable\": \"closeOthers\" }, styleAttribute: \"display: block\", classAttribute: \"panel-group\" }, ngImport: i0, template: ``, isInline: true }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.4\", ngImport: i0, type: AccordionComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'accordion',\n template: ``,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '[attr.aria-multiselectable]': 'closeOthers',\n role: 'tablist',\n class: 'panel-group',\n style: 'display: block'\n }\n }]\n }], ctorParameters: function () { return [{ type: AccordionConfig }]; }, propDecorators: { isAnimated: [{\n type: Input\n }], closeOthers: [{\n type: Input\n }] } });\n\n/**\n * ### Accordion heading\n * Instead of using `heading` attribute on the `accordion-group`, you can use\n * an `accordion-heading` attribute on `any` element inside of a group that\n * will be used as group's header template.\n */\nclass AccordionPanelComponent {\n // Questionable, maybe .panel-open should be on child div.panel element?\n /** Is accordion group open or closed. This property supports two-way binding */\n get isOpen() {\n return this._isOpen;\n }\n set isOpen(value) {\n if (value !== this.isOpen) {\n if (value) {\n this.accordion.closeOtherPanels(this);\n }\n this._isOpen = value;\n Promise.resolve(null)\n .then(() => {\n this.isOpenChange.emit(value);\n });\n }\n }\n constructor(accordion) {\n /** turn on/off animation */\n this.isAnimated = false;\n /** Provides an ability to use Bootstrap's contextual panel classes\n * (`panel-primary`, `panel-success`, `panel-info`, etc...).\n * List of all available classes [available here]\n * (https://getbootstrap.com/docs/3.3/components/#panels-alternatives)\n */\n this.panelClass = 'panel-default';\n /** if true — disables accordion group */\n this.isDisabled = false;\n /** Emits when the opened state changes */\n this.isOpenChange = new EventEmitter();\n this._isOpen = false;\n this.accordion = accordion;\n }\n ngOnInit() {\n this.accordion.addGroup(this);\n }\n ngOnDestroy() {\n this.accordion.removeGroup(this);\n }\n toggleOpen() {\n if (!this.isDisabled) {\n this.isOpen = !this.isOpen;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.4\", ngImport: i0, type: AccordionPanelComponent, deps: [{ token: AccordionComponent }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.1.4\", type: AccordionPanelComponent, selector: \"accordion-group, accordion-panel\", inputs: { heading: \"heading\", panelClass: \"panelClass\", isDisabled: \"isDisabled\", isOpen: \"isOpen\" }, outputs: { isOpenChange: \"isOpenChange\" }, host: { properties: { \"class.panel-open\": \"this.isOpen\" }, styleAttribute: \"display: block\", classAttribute: \"panel\" }, ngImport: i0, template: \"
\\n \\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n\\n\", styles: [\":host .card-header.panel-enabled{cursor:pointer}:host .card-header.panel-disabled .btn.btn-link{cursor:default;text-decoration:none}\\n\"], dependencies: [{ kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i2.CollapseDirective, selector: \"[collapse]\", inputs: [\"display\", \"isAnimated\", \"collapse\"], outputs: [\"collapsed\", \"collapses\", \"expanded\", \"expands\"], exportAs: [\"bs-collapse\"] }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.4\", ngImport: i0, type: AccordionPanelComponent, decorators: [{\n type: Component,\n args: [{ selector: 'accordion-group, accordion-panel', host: {\n class: 'panel',\n style: 'display: block'\n }, template: \"
\\n \\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n\\n\", styles: [\":host .card-header.panel-enabled{cursor:pointer}:host .card-header.panel-disabled .btn.btn-link{cursor:default;text-decoration:none}\\n\"] }]\n }], ctorParameters: function () { return [{ type: AccordionComponent, decorators: [{\n type: Inject,\n args: [AccordionComponent]\n }] }]; }, propDecorators: { heading: [{\n type: Input\n }], panelClass: [{\n type: Input\n }], isDisabled: [{\n type: Input\n }], isOpenChange: [{\n type: Output\n }], isOpen: [{\n type: HostBinding,\n args: ['class.panel-open']\n }, {\n type: Input\n }] } });\n\nclass AccordionModule {\n static forRoot() {\n return { ngModule: AccordionModule, providers: [] };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.4\", ngImport: i0, type: AccordionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.1.4\", ngImport: i0, type: AccordionModule, declarations: [AccordionComponent, AccordionPanelComponent], imports: [CommonModule, CollapseModule], exports: [AccordionComponent, AccordionPanelComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.1.4\", ngImport: i0, type: AccordionModule, imports: [CommonModule, CollapseModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.4\", ngImport: i0, type: AccordionModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, CollapseModule],\n declarations: [AccordionComponent, AccordionPanelComponent],\n exports: [AccordionComponent, AccordionPanelComponent]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AccordionComponent, AccordionConfig, AccordionModule, AccordionPanelComponent };\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FaIconLibrary, FontAwesomeModule } from '@fortawesome/angular-fontawesome';\nimport { IconDefinition } from '@fortawesome/fontawesome-common-types';\nimport { CommonIconsModule } from '../../../../common/src/common-icons/common-icons.module';\n\n@NgModule({\n imports: [CommonModule, CommonIconsModule],\n exports: [FontAwesomeModule],\n})\nexport class UsanaIconsModule {\n readonly USANA_ICONS: IconDefinition[] = [];\n\n constructor(faLibrary: FaIconLibrary) {\n faLibrary.addIcons(...this.USANA_ICONS);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TranslationModule } from '@common/translation/translation.module';\nimport { InterpolationPipeModule } from '@shared/pipes/interpolate/interpolate.module';\nimport { AccordionModule } from 'ngx-bootstrap/accordion';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { UsanaIconsModule } from '../usana-icons/usana-icons.module';\nimport { ChangeMarketIconComponent } from './change-market-icon/change-market-icon.component';\nimport { ChangeMarketWarningComponent } from './change-market-warning/change-market-warning.component';\nimport { MarketListComponent } from './market-list/market-list.component';\nimport { MarketSelectorComponent } from './market-selector/market-selector.component';\n\n@NgModule({\n declarations: [ChangeMarketIconComponent, ChangeMarketWarningComponent, MarketSelectorComponent, MarketListComponent],\n imports: [\n CommonModule,\n TooltipModule.forRoot(),\n AccordionModule.forRoot(),\n InterpolationPipeModule,\n TranslationModule,\n UsanaIconsModule,\n ],\n exports: [ChangeMarketIconComponent],\n})\nexport class ChangeMarketModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AuthenticationModule } from '@common/authentication/authentication.module';\nimport { CmsModule } from '@common/cms/cms.module';\nimport { MyAccountModule } from '@common/my-account/my-account.module';\nimport { TopNavComponent } from '@common/navigation/components/top-nav/top-nav.component';\nimport { NavigationState } from '@common/navigation/state/navigation.state';\nimport { NotificationBellModule } from '@common/notifications/notification-bell/notification-bell.module';\nimport { SystemAlertsModule } from '@common/system-alerts/system-alerts.module';\nimport { TranslationModule } from '@common/translation/translation.module';\nimport { NgxsModule } from '@ngxs/store';\nimport { InterpolationPipeModule } from '@shared/pipes/interpolate/interpolate.module';\nimport { ChangeMarketModule } from '@usanaHub/app/change-market/change-market.module';\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\nimport { CommonIconsModule } from '../common-icons/common-icons.module';\nimport { NavigationHeaderComponent } from './components/navigation-header/navigation-header.component';\nimport { NavigationComponent } from './components/navigation/navigation.component';\n\n@NgModule({\n declarations: [TopNavComponent, NavigationComponent, NavigationHeaderComponent],\n imports: [\n CommonModule,\n CmsModule,\n SystemAlertsModule,\n AuthenticationModule,\n InterpolationPipeModule,\n NotificationBellModule,\n ChangeMarketModule,\n MyAccountModule,\n BsDropdownModule.forRoot(),\n NgxsModule.forFeature([NavigationState]),\n TranslationModule,\n CommonIconsModule,\n ],\n exports: [TopNavComponent, NavigationComponent, NavigationHeaderComponent],\n})\nexport class NavigationModule {}\n","import { InjectionToken } from '@angular/core';\n\nexport const HUB_GATEWAY_URL = new InjectionToken('hub.gateway.url');\n","import { NgModule } from '@angular/core';\nimport { ApolloLink, InMemoryCache } from '@apollo/client/core';\nimport { AuthenticationModule } from '@common/authentication/authentication.module';\nimport { EarningsOptInItemModule } from '@common/cms/earnings-opt-in/earnings-opt-in-item.module';\nimport { TrainingCardsModule } from '@common/cms/training/training-cards.module';\nimport { MyAccountModule } from '@common/my-account/my-account.module';\nimport { NotificationsModule } from '@common/notifications/notifications.module';\nimport { ReportsModule } from '@common/reports/reports.module';\nimport { StateHelperService } from '@common/services/state-helper.service';\nimport { WindowSizingService } from '@common/services/window-size.service';\nimport { SystemAlertsModule } from '@common/system-alerts/system-alerts.module';\nimport { TranslationModule } from '@common/translation/translation.module';\nimport { UplineLeaderPlacementModule } from '@common/upline-leader-placement/upline-leader-placement.module';\nimport { CardsHorizontalModule } from '@shared/cards-horizontal/cards-horizontal.module';\nimport { CardsModule } from '@shared/cards/cards.module';\nimport { FULLSTORY_WINDOW_OBJ_POLL_RATE, UsanaFullStoryModule } from '@usana/ux/fullstory';\nimport { ID_TOKEN_NAME, LOGIN_SERVICE_URL } from '@usana/ux/sso-auth';\nimport { SsoSwitchUserModule } from '@usana/ux/sso-auth/switch-user';\nimport { APOLLO_OPTIONS, Apollo } from 'apollo-angular';\nimport { HttpLink } from 'apollo-angular/http';\nimport { environment } from '../../../environments/environment';\nimport { ErrorPageModule } from './error-pages/error-page.module';\nimport { NavigationModule } from './navigation/navigation.module';\nimport { HUB_GATEWAY_URL } from './tokens/hub-gateway-url.token';\nimport { windowProvider, WindowToken } from './utils/window';\n\n@NgModule({\n declarations: [],\n imports: [\n AuthenticationModule,\n SystemAlertsModule,\n NotificationsModule,\n MyAccountModule,\n ReportsModule,\n EarningsOptInItemModule,\n UplineLeaderPlacementModule,\n CardsModule,\n CardsHorizontalModule,\n UsanaFullStoryModule,\n SsoSwitchUserModule,\n NavigationModule,\n TrainingCardsModule,\n ErrorPageModule,\n TranslationModule,\n ],\n providers: [\n StateHelperService,\n WindowSizingService,\n { provide: WindowToken, useFactory: windowProvider },\n { provide: ID_TOKEN_NAME, useValue: 'id-token' },\n { provide: FULLSTORY_WINDOW_OBJ_POLL_RATE, useValue: 1500 },\n { provide: LOGIN_SERVICE_URL, useValue: `${environment.apiDomain}/auth/ws` },\n { provide: HUB_GATEWAY_URL, useValue: environment.hubGatewayUrl },\n Apollo,\n {\n provide: APOLLO_OPTIONS,\n useFactory: (httpLink: HttpLink) => {\n const http = httpLink.create({\n uri: environment.hubGatewayUrl,\n });\n\n const middleware = new ApolloLink((operation, forward) => {\n if (operation.variables) {\n operation.variables = JSON.parse(JSON.stringify(operation.variables), (key, value) =>\n key === '__typename' ? undefined : value\n );\n }\n return forward(operation);\n });\n\n return {\n cache: new InMemoryCache(),\n link: middleware.concat(http),\n };\n },\n deps: [HttpLink],\n },\n ],\n exports: [NavigationModule, NotificationsModule, EarningsOptInItemModule, ErrorPageModule],\n})\nexport class HubCommonModule {}\n","import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\n/** Inject With Credentials into the request */\n@Injectable()\nexport class WithCredentialsInterceptor implements HttpInterceptor {\n intercept(req: HttpRequest, next: HttpHandler): Observable> {\n req = req.clone({\n withCredentials: true,\n });\n\n return next.handle(req);\n }\n}\n","import * as i0 from '@angular/core';\nimport { InjectionToken, ɵglobal, Injectable, Inject, NgModule } from '@angular/core';\nimport { Store, getActionTypeFromInstance, InitState, NGXS_PLUGINS } from '@ngxs/store';\nimport { catchError, tap } from 'rxjs/operators';\n\nconst NGXS_DEVTOOLS_OPTIONS = new InjectionToken('NGXS_DEVTOOLS_OPTIONS');\n\n/**\n * Adds support for the Redux Devtools extension:\n * http://extension.remotedev.io/\n */\nclass NgxsReduxDevtoolsPlugin {\n constructor(_options, _injector, _ngZone) {\n this._options = _options;\n this._injector = _injector;\n this._ngZone = _ngZone;\n this.devtoolsExtension = null;\n this.globalDevtools = ɵglobal['__REDUX_DEVTOOLS_EXTENSION__'] || ɵglobal['devToolsExtension'];\n this.unsubscribe = null;\n this.connect();\n }\n ngOnDestroy() {\n if (this.unsubscribe !== null) {\n this.unsubscribe();\n }\n if (this.globalDevtools) {\n this.globalDevtools.disconnect();\n }\n }\n /**\n * Lazy get the store for circular dependency issues\n */\n get store() {\n return this._injector.get(Store);\n }\n /**\n * Middleware handle function\n */\n handle(state, action, next) {\n if (!this.devtoolsExtension || this._options.disabled) {\n return next(state, action);\n }\n return next(state, action).pipe(catchError(error => {\n const newState = this.store.snapshot();\n this.sendToDevTools(state, action, newState);\n throw error;\n }), tap(newState => {\n this.sendToDevTools(state, action, newState);\n }));\n }\n sendToDevTools(state, action, newState) {\n const type = getActionTypeFromInstance(action);\n // if init action, send initial state to dev tools\n const isInitAction = type === InitState.type;\n if (isInitAction) {\n this.devtoolsExtension.init(state);\n }\n else {\n this.devtoolsExtension.send(Object.assign(Object.assign({}, action), { action: null, type }), newState);\n }\n }\n /**\n * Handle the action from the dev tools subscription\n */\n dispatched(action) {\n if (action.type === \"DISPATCH\" /* Dispatch */) {\n if (action.payload.type === \"JUMP_TO_ACTION\" /* JumpToAction */ ||\n action.payload.type === \"JUMP_TO_STATE\" /* JumpToState */) {\n const prevState = JSON.parse(action.state);\n // This makes the DevTools and Router plugins compatible with each other.\n // We check for the existence of the `router` state and ensure it has the\n // `trigger` property, confirming that it is our router state (coming from `@ngxs/router-plugin`).\n // This enables a time-traveling feature, as it not only restores the state but\n // also allows the `RouterState` to navigate back when the action is jumped.\n if (prevState.router && prevState.router.trigger) {\n prevState.router.trigger = 'devtools';\n }\n this.store.reset(prevState);\n }\n else if (action.payload.type === \"TOGGLE_ACTION\" /* ToggleAction */) {\n console.warn('Skip is not supported at this time.');\n }\n else if (action.payload.type === \"IMPORT_STATE\" /* ImportState */) {\n const { actionsById, computedStates, currentStateIndex } = action.payload.nextLiftedState;\n this.devtoolsExtension.init(computedStates[0].state);\n Object.keys(actionsById)\n .filter(actionId => actionId !== '0')\n .forEach(actionId => this.devtoolsExtension.send(actionsById[actionId], computedStates[actionId].state));\n this.store.reset(computedStates[currentStateIndex].state);\n }\n }\n else if (action.type === \"ACTION\" /* Action */) {\n const actionPayload = JSON.parse(action.payload);\n this.store.dispatch(actionPayload);\n }\n }\n connect() {\n if (!this.globalDevtools || this._options.disabled) {\n return;\n }\n // The `connect` method adds a `message` event listener to communicate\n // with an extension through `window.postMessage` and handle message events.\n // Since we only handle two specific events, we aim to avoid unnecessary change\n // detections triggered by events that the extension sends, but we don't need to handle.\n this.devtoolsExtension = this._ngZone.runOutsideAngular(() => this.globalDevtools.connect(this._options));\n this.unsubscribe = this.devtoolsExtension.subscribe(action => {\n if (action.type === \"DISPATCH\" /* Dispatch */ ||\n action.type === \"ACTION\" /* Action */) {\n this.dispatched(action);\n }\n });\n }\n}\n/** @nocollapse */ NgxsReduxDevtoolsPlugin.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: NgxsReduxDevtoolsPlugin, deps: [{ token: NGXS_DEVTOOLS_OPTIONS }, { token: i0.Injector }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\n/** @nocollapse */ NgxsReduxDevtoolsPlugin.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: NgxsReduxDevtoolsPlugin });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: NgxsReduxDevtoolsPlugin, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [NGXS_DEVTOOLS_OPTIONS]\n }] }, { type: i0.Injector }, { type: i0.NgZone }]; } });\n\nfunction devtoolsOptionsFactory(options) {\n return Object.assign({ name: 'NGXS' }, options);\n}\nconst USER_OPTIONS = new InjectionToken('USER_OPTIONS');\nclass NgxsReduxDevtoolsPluginModule {\n static forRoot(options) {\n return {\n ngModule: NgxsReduxDevtoolsPluginModule,\n providers: [\n {\n provide: NGXS_PLUGINS,\n useClass: NgxsReduxDevtoolsPlugin,\n multi: true\n },\n {\n provide: USER_OPTIONS,\n useValue: options\n },\n {\n provide: NGXS_DEVTOOLS_OPTIONS,\n useFactory: devtoolsOptionsFactory,\n deps: [USER_OPTIONS]\n }\n ]\n };\n }\n}\n/** @nocollapse */ NgxsReduxDevtoolsPluginModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: NgxsReduxDevtoolsPluginModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n/** @nocollapse */ NgxsReduxDevtoolsPluginModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: NgxsReduxDevtoolsPluginModule });\n/** @nocollapse */ NgxsReduxDevtoolsPluginModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: NgxsReduxDevtoolsPluginModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: NgxsReduxDevtoolsPluginModule, decorators: [{\n type: NgModule\n }] });\n\n/**\n * The public api for consumers of @ngxs/devtools-plugin\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { NGXS_DEVTOOLS_OPTIONS, NgxsReduxDevtoolsPlugin, NgxsReduxDevtoolsPluginModule };\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'orderByProperty',\n})\nexport class OrderByPropertyPipe implements PipeTransform {\n transform(input: any[], sortByField: string, sortOrder = 'asc'): any[] {\n const sortedOutput = input ? [...input] : [];\n\n if (sortByField && sortedOutput?.length) {\n const sortFn = (objA: any, objB: any) => {\n const objAValue = objA[sortByField];\n const objBValue = objB[sortByField];\n\n return this.compareValues(objAValue, objBValue);\n };\n\n sortedOutput.sort(sortFn);\n\n if (sortOrder !== 'asc') {\n sortedOutput.reverse();\n }\n }\n\n return sortedOutput;\n }\n\n compareValues(valA: any, valB: any): number {\n let result: number;\n\n if (valA === undefined || valB === undefined) {\n // sort undefined as lowest value\n result = valA === undefined ? -1 : 1;\n } else {\n if (typeof valA === 'string' && typeof valB === 'string') {\n result = valA.localeCompare(valB);\n } else {\n result = valA < valB ? -1 : 1;\n }\n }\n\n return result;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { OrderByPropertyPipe } from './order-by-property.pipe';\n\n@NgModule({\n declarations: [OrderByPropertyPipe],\n imports: [CommonModule],\n providers: [OrderByPropertyPipe],\n exports: [OrderByPropertyPipe],\n})\nexport class OrderByPropertyPipeModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { HtmlToPlainTextModule } from '@shared/pipes/html-to-plain-text/html-to-plain-text.module';\nimport { OrderByPropertyPipeModule } from '@shared/pipes/order-by-property/order-by-property.module';\nimport { ReplaceModule } from './replace/replace.module';\nimport { UnsafeModule } from './unsafe/unsafe.module';\n\n@NgModule({\n imports: [CommonModule, UnsafeModule, ReplaceModule],\n exports: [UnsafeModule, ReplaceModule, HtmlToPlainTextModule, OrderByPropertyPipeModule],\n})\nexport class UsanaPipesModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { TranslationModule } from '@common/translation/translation.module';\nimport { InterpolationPipeModule } from '@shared/pipes/interpolate/interpolate.module';\nimport { UsanaPipesModule } from '@shared/pipes/pipes.module';\nimport { ModalModule } from 'ngx-bootstrap/modal';\nimport { ConfirmationModalComponent } from './confirmation-modal/confirmation-modal.component';\n\n@NgModule({\n declarations: [ConfirmationModalComponent],\n imports: [\n CommonModule,\n UsanaPipesModule,\n InterpolationPipeModule,\n ModalModule.forRoot(),\n ReactiveFormsModule,\n TranslationModule,\n ],\n exports: [ConfirmationModalComponent],\n})\nexport class ConfirmationModalModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TranslationModule } from '@common/translation/translation.module';\nimport { InterpolationPipeModule } from '@shared/pipes/interpolate/interpolate.module';\nimport { CollapseModule } from 'ngx-bootstrap/collapse';\nimport { CommonIconsModule } from '../../../common/src/common-icons/common-icons.module';\nimport { UsanaPipesModule } from '../pipes/pipes.module';\nimport { FooterComponent } from './footer.component';\n\n@NgModule({\n declarations: [FooterComponent],\n imports: [\n CommonModule,\n UsanaPipesModule,\n InterpolationPipeModule,\n TranslationModule,\n CollapseModule.forRoot(),\n CommonIconsModule,\n ],\n exports: [FooterComponent],\n})\nexport class FooterModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { NotificationsModule } from '@common/notifications/notifications.module';\nimport { TranslationModule } from '@common/translation/translation.module';\nimport { HubInterruptComponent } from '@shared/hub-interrupt/hub-interrupt.component';\nimport { KycRequiredModalComponent } from '@shared/hub-interrupt/kyc/kyc-required-modal.component';\nimport { NotificationGenericInterruptComponent } from '@shared/hub-interrupt/notification-generic/notification-generic-interrupt.component';\nimport { NotificationSmsInterruptComponent } from '@shared/hub-interrupt/notification-sms/notification-sms-interrupt.component';\nimport { LoadingSpinnerModule } from '@shared/loading-spinner/loading-spinner.module';\nimport { InterpolationPipeModule } from '@shared/pipes/interpolate/interpolate.module';\nimport { UnsafeModule } from '@shared/pipes/unsafe/unsafe.module';\nimport { UniversalButtonModule, UniversalLoadingButtonModule } from '@usana/ux/universal-components/button';\nimport { AlertModule } from 'ngx-bootstrap/alert';\nimport { ModalModule } from 'ngx-bootstrap/modal';\n\n@NgModule({\n declarations: [\n HubInterruptComponent,\n KycRequiredModalComponent,\n NotificationSmsInterruptComponent,\n NotificationGenericInterruptComponent,\n ],\n exports: [HubInterruptComponent],\n imports: [\n CommonModule,\n TranslationModule,\n ModalModule.forRoot(),\n UnsafeModule,\n NotificationsModule,\n InterpolationPipeModule,\n LoadingSpinnerModule,\n AlertModule.forRoot(),\n UniversalLoadingButtonModule,\n UniversalButtonModule,\n ],\n})\nexport class HubInterruptModule {}\n","import { NgModule } from '@angular/core';\nimport { LoggerModule, NgxLoggerLevel } from 'ngx-logger';\nimport { LoggerService } from './logger.service';\n\n@NgModule({\n imports: [LoggerModule.forRoot({ level: NgxLoggerLevel.DEBUG })],\n providers: [LoggerService],\n})\nexport class UsanaLoggerModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TranslationModule } from '@common/translation/translation.module';\nimport { InterpolationPipeModule } from '@shared/pipes/interpolate/interpolate.module';\nimport { AlertModule } from 'ngx-bootstrap/alert';\nimport { ToastDisplayComponent } from './toast-display.component';\n\n@NgModule({\n declarations: [ToastDisplayComponent],\n imports: [CommonModule, AlertModule.forRoot(), InterpolationPipeModule, TranslationModule],\n providers: [],\n exports: [ToastDisplayComponent],\n})\nexport class UsanaToastModule {}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { map } from 'rxjs/operators';\n\n@Injectable()\nexport class ImportantDatesService {\n constructor(private http: HttpClient) {}\n\n getImportantDates() {\n return this.http.get('/dlm2/rest/importantDates').pipe(map((importantDates) => importantDates));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ScrollTopOnNavService {\n constructor(private router: Router) {}\n\n scrollTopOnNav() {\n this.router.events.subscribe((event) => {\n if (event instanceof NavigationEnd) {\n document.getElementById('hub').scrollTop = 0;\n }\n });\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { SupportedMarkets, UserSupportedLocale } from '../change-market/change-market.model';\n\n@Injectable({ providedIn: 'root' })\nexport class AvailableLocalesService {\n constructor(private http: HttpClient) {}\n\n getAvailableLocales(): Observable {\n return this.http\n .get('/mvc/cm/AvailableLocales', { headers: { 'Content-Type': 'application/json' } })\n .pipe(map((response: SupportedMarkets) => response));\n }\n\n getUserSwitchableLocales(): Observable {\n return this.http.get('/mvc/cm/userSwitchableLocales').pipe(map((response: UserSupportedLocale[]) => response));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ImportantDatesService } from '@common/important-dates/important-dates.service';\nimport { Action, State, StateContext, Store } from '@ngxs/store';\nimport { map } from 'rxjs/operators';\nimport { ForceLoadUserProfile } from '../../../../common/src/authentication/state/user-profile.actions';\nimport { ScrollTopOnNavService } from '../../../../shared/src/services/scroll-top-on-nav/scroll-top-on-nav.service';\nimport { SupportedMarkets } from '../change-market/change-market.model';\nimport { AvailableLocalesService } from '../services/available-locales.service';\nimport {\n DecrementLoading,\n IncrementLoading,\n InitializeApp,\n LoadImportantDates,\n SetSupportedMarkets,\n} from './app.actions';\nimport { AppStateModel } from './app.state.model';\n\nexport const APP_STATE_DEFAULTS: AppStateModel = {\n isLoading: false,\n numLoading: 0,\n supportedMarkets: null,\n importantDates: null,\n};\n\n@State({\n name: 'hub',\n defaults: APP_STATE_DEFAULTS,\n})\n@Injectable()\nexport class AppState {\n constructor(\n private store: Store,\n private importantDatesService: ImportantDatesService,\n private availableLocalesService: AvailableLocalesService,\n private scrollTopOnNavService: ScrollTopOnNavService\n ) {}\n\n @Action(DecrementLoading)\n decrementLoading({ getState, patchState }: StateContext) {\n const state = { ...getState() };\n\n state.numLoading--;\n // just to be safe\n if (state.numLoading < 0) {\n state.numLoading = 0;\n }\n state.isLoading = !!state.numLoading;\n\n patchState(state);\n }\n\n @Action(IncrementLoading)\n incrementLoading({ getState, patchState }: StateContext) {\n const state = { ...getState() };\n\n if (!state.isLoading) {\n state.isLoading = true;\n }\n\n state.numLoading++;\n patchState(state);\n }\n\n @Action(SetSupportedMarkets)\n setMarkets(ctx: StateContext) {\n return this.availableLocalesService.getAvailableLocales().pipe(\n map((supportedMarkets: SupportedMarkets) => {\n ctx.patchState({ supportedMarkets });\n })\n );\n }\n\n @Action(LoadImportantDates)\n loadImportantDates({ patchState }: StateContext, action: LoadImportantDates) {\n return this.importantDatesService.getImportantDates().pipe(\n map((importantDates) => {\n patchState({ importantDates });\n })\n );\n }\n\n @Action(InitializeApp)\n initializeApp(_ctx: StateContext, _action: InitializeApp) {\n this.scrollTopOnNavService.scrollTopOnNav();\n this.store.dispatch(new ForceLoadUserProfile({}));\n }\n}\n","import { Component, EventEmitter, Output } from '@angular/core';\n\n@Component({\n selector: 'u-session-timeout-modal',\n templateUrl: './session-timeout-modal.component.html',\n})\nexport class SessionTimeoutModalComponent {\n // eslint-disable-next-line @angular-eslint/no-output-native\n @Output() readonly close: EventEmitter = new EventEmitter();\n\n countDown: number;\n private readonly countdownInterval;\n\n constructor() {\n this.countDown = 60;\n this.countdownInterval = setInterval(() => {\n this.countDown--;\n if (this.countDown <= 0) {\n this.logout();\n }\n }, 1000);\n }\n\n ok(): void {\n window.clearInterval(this.countdownInterval);\n this.close.emit(true);\n }\n\n logout(): void {\n window.clearInterval(this.countdownInterval);\n this.close.emit(false);\n }\n}\n","
\n

{{ 'hub.logout.timeout.message' | translate | interpolate: { countDown: countDown } }}

\n \n\n

{{ 'hub.logout.timeout.doYouWantToContinue' | translate }}

\n \n
\n
\n
{{ 'hub.logout.doLogout' | translate }}
\n \n
{{ 'hub.logout.doNotLogout' | translate }}
\n \n
\n","export class AuthTimeoutHandler {\n handler: () => void;\n time: number;\n\n constructor(handler: () => void, time: number) {\n this.handler = handler;\n this.time = time;\n }\n}\n","import { AuthTimeoutHandler } from '@common/authentication/model/AuthTimeoutHandler';\n\nexport class AuthTimeoutStatus {\n private lastTime: number;\n private timeoutAlert: AuthTimeoutHandler;\n private interval: AuthTimeoutHandler;\n\n private timeoutAlertHandler;\n private intervalHandler;\n\n /**\n *\n * @param timeoutAlert - timeout alert definition\n * @param startTime - start time in milliseconds\n * @param interval - interval definition\n */\n constructor(timeoutAlert: AuthTimeoutHandler, startTime: number, interval: AuthTimeoutHandler) {\n this.timeoutAlert = timeoutAlert;\n this.interval = interval;\n this.lastTime = startTime;\n }\n\n cleanup(): void {\n clearTimeout(this.timeoutAlertHandler);\n clearInterval(this.intervalHandler);\n }\n\n start(): void {\n this.startTimeoutAlert();\n this.startInterval();\n }\n\n /**\n * was kept alive at this dt, this also resets the timeout alert\n * @param dt - the timestamp we kept alive at\n */\n keptAlive(dt: number): void {\n this.lastTime = dt;\n clearTimeout(this.timeoutAlertHandler);\n this.startTimeoutAlert();\n }\n\n /**\n * has enough time passed since the last time we kept alive\n * @param dt - the current time\n */\n afterInterval(dt: number): boolean {\n return dt > this.lastTime + this.interval.time;\n }\n\n private startTimeoutAlert(): void {\n this.timeoutAlertHandler = setTimeout(this.timeoutAlert.handler, this.timeoutAlert.time);\n }\n\n private startInterval(): void {\n this.intervalHandler = setInterval(this.interval.handler, this.interval.time);\n }\n}\n","import { asyncScheduler } from '../scheduler/async';\nimport { isValidDate } from '../util/isDate';\nimport { operate } from '../util/lift';\nimport { innerFrom } from '../observable/innerFrom';\nimport { createErrorClass } from '../util/createErrorClass';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { executeSchedule } from '../util/executeSchedule';\nexport const TimeoutError = createErrorClass((_super) => function TimeoutErrorImpl(info = null) {\n _super(this);\n this.message = 'Timeout has occurred';\n this.name = 'TimeoutError';\n this.info = info;\n});\nexport function timeout(config, schedulerArg) {\n const { first, each, with: _with = timeoutErrorFactory, scheduler = schedulerArg !== null && schedulerArg !== void 0 ? schedulerArg : asyncScheduler, meta = null, } = (isValidDate(config) ? { first: config } : typeof config === 'number' ? { each: config } : config);\n if (first == null && each == null) {\n throw new TypeError('No timeout provided.');\n }\n return operate((source, subscriber) => {\n let originalSourceSubscription;\n let timerSubscription;\n let lastValue = null;\n let seen = 0;\n const startTimer = (delay) => {\n timerSubscription = executeSchedule(subscriber, scheduler, () => {\n try {\n originalSourceSubscription.unsubscribe();\n innerFrom(_with({\n meta,\n lastValue,\n seen,\n })).subscribe(subscriber);\n }\n catch (err) {\n subscriber.error(err);\n }\n }, delay);\n };\n originalSourceSubscription = source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.unsubscribe();\n seen++;\n subscriber.next((lastValue = value));\n each > 0 && startTimer(each);\n }, undefined, undefined, () => {\n if (!(timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.closed)) {\n timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.unsubscribe();\n }\n lastValue = null;\n }));\n !seen && startTimer(first != null ? (typeof first === 'number' ? first : +first - scheduler.now()) : each);\n });\n}\nfunction timeoutErrorFactory(info) {\n throw new TimeoutError(info);\n}\n","import { DOCUMENT } from '@angular/common';\nimport { HttpClient, HttpErrorResponse } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { AuthenticationConstants } from '@common/authentication/authentication.constants';\nimport { SessionTimeoutModalComponent } from '@common/authentication/components/session-timeout-modal/session-timeout-modal.component';\nimport { AuthTimeoutHandler } from '@common/authentication/model/AuthTimeoutHandler';\nimport { AuthTimeoutStatus } from '@common/authentication/model/auth-timeout-status';\nimport { ICreateSession, ICreateSessionResponse } from '@common/authentication/model/create-session-response';\nimport { HubParams } from '@common/authentication/model/hub-params';\nimport { ISaveConsent, ISaveConsentResponse } from '@common/authentication/model/save-consent-response';\nimport { AppUser } from '@common/authentication/model/user-profile';\nimport {\n EditUserProfile,\n NavigateToLogin,\n SetUserProfile,\n StartUserTimeout,\n} from '@common/authentication/state/user-profile.actions';\nimport { UserProfileSelectors } from '@common/authentication/state/user-profile.selectors';\nimport { CREATE_SESSION_WITH_CONSENT_MUTATION } from '@common/constants/create-session-with-consent-mutation';\nimport { SAVE_CONSENT_MUTATION } from '@common/constants/save-consent-mutation';\nimport { UsanaLocaleService } from '@common/services/locale.service';\nimport { Actions, Store, ofActionDispatched } from '@ngxs/store';\nimport { LOCATION_TOKEN } from '@usana/ux/common';\nimport { UsanaFullStoryService } from '@usana/ux/fullstory';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { CookieService } from 'ngx-cookie';\nimport { Observable, forkJoin, of } from 'rxjs';\nimport { catchError, finalize, map, mergeMap, timeout } from 'rxjs/operators';\nimport { HUB_GATEWAY_URL } from '../../tokens/hub-gateway-url.token';\n\ndeclare let dataLayer;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthenticationService {\n private loginRedirectURL: string;\n\n private hubParams;\n private timeoutStatus: AuthTimeoutStatus;\n\n readonly AUTH_KEEPALIVE_EVENTS = ['mousemove', 'keydown', 'DOMMouseScroll', 'mousewheel', 'mousedown', 'touchstart'];\n\n constructor(\n private modalService: BsModalService,\n private cookieService: CookieService,\n private store: Store,\n private route: ActivatedRoute,\n private router: Router,\n private http: HttpClient,\n private usanaFsService: UsanaFullStoryService,\n private localeService: UsanaLocaleService,\n actions$: Actions,\n @Inject(LOCATION_TOKEN) private location: Location,\n @Inject(DOCUMENT) private document: Document,\n @Inject(HUB_GATEWAY_URL) private hubGatewayUrl: string\n ) {\n this.AUTH_KEEPALIVE_EVENTS.forEach((eventName) => {\n this.document.body.addEventListener(eventName, (_event) => {\n const eventTimestamp = new Date().getTime();\n\n if (this.shouldKeepAliveAtTime(eventTimestamp)) {\n this.keepAlive(true);\n }\n });\n });\n\n actions$.pipe(ofActionDispatched(StartUserTimeout)).subscribe(() => this.startTimeout());\n\n actions$.pipe(ofActionDispatched(NavigateToLogin)).subscribe((action) => {\n if (action.redirectUrl) {\n this.setRedirectURL(this.router.url);\n }\n\n this.router.navigate(['/login']);\n });\n }\n\n // legacy template lookup (currently only password reset)\n getTemplateUrl(template: string): string {\n return AuthenticationConstants.TEMPLATE_PREFIX + template + '.html';\n }\n\n /**\n * saves the url to redirect to if its NOT in the blacklist of urls\n * @param url the url to attempt to save\n */\n setRedirectURL(url: string): void {\n if (!this.urlInBlacklist(url)) {\n this.loginRedirectURL = url;\n }\n }\n\n getRedirectURL(): string {\n return this.loginRedirectURL;\n }\n\n /**\n * helper method to see if enough time has passed where we could send a keep alive\n * @param timestamp\n */\n shouldKeepAliveAtTime(timestamp: number): boolean {\n return !!this.timeoutStatus && this.timeoutStatus.afterInterval(timestamp);\n }\n\n /**\n * login\n * @param username\n * @param password\n * @param kiosk\n */\n loginRequest(username: string, password: string, kiosk: boolean): Observable {\n // set the basic authentication header that will be parsed in the next request and used to authenticate\n let loginUrl = '/mvc/auth/login';\n if (kiosk || !!this.cookieService.get('kiosk')) {\n loginUrl += '?kiosk=true';\n }\n\n return this.http\n .get(loginUrl, {\n headers: {\n Authorization: 'Basic ' + btoa(username + ':' + password),\n },\n })\n .pipe(\n mergeMap((data: any) => {\n this.doLoginAnalytics(data.requestAttrs.user.title, data.requestAttrs.analyticsCustomerId);\n let domain = this.location.hostname;\n const domainParts = domain.split('.');\n if (domainParts.length >= 3) {\n domain = domainParts.slice(1).join('.');\n }\n\n // This is here to remove the cookie with the old www. domain\n this.cookieService.remove(AuthenticationConstants.LEGACY_I18N_COOKIE_NAME);\n const nextYear = new Date();\n nextYear.setDate(new Date().getDate() + 365);\n this.cookieService.put(AuthenticationConstants.LEGACY_I18N_COOKIE_NAME, data.requestAttrs.locale, {\n expires: nextYear,\n path: '/',\n domain: domain,\n });\n\n // we need to set our user before we do any redirects\n return this.store.dispatch(new SetUserProfile(data.requestAttrs)).pipe(\n map(\n () =>\n // discard the dispatch data since we don't care\n data\n ),\n catchError(() =>\n // this means something in SetUserProfile failed which we PROBABLY don't care about so squelch it\n of(data)\n )\n );\n }),\n map((data: any) => {\n let redirectUrl = this.redirectToAnotherEntryPoint(data);\n if (!redirectUrl) {\n // if we aren't redirecting based on the url param lets setup hub stuff\n // set the locale to the new users locale\n this.localeService.setLocale(data.requestAttrs.user.locale);\n this.hubParams = data;\n\n if (!!data.loginSiteId) {\n redirectUrl = '/pwp/site/' + data.loginSiteId;\n this.location.href = redirectUrl;\n return true;\n } else {\n // finally we are for sure staying in hub so lets go to our redirect, say we are logged in and start our timeout\n this.startTimeout(data.timeout);\n\n if (AuthenticationConstants.LOGIN_REDIRECT_URL !== this.loginRedirectURL) {\n redirectUrl = this.loginRedirectURL;\n this.router.navigate([redirectUrl]);\n }\n }\n }\n return redirectUrl;\n }),\n catchError((response: HttpErrorResponse) => {\n let reason = response.error;\n if (!!response.headers && response.headers.has('auth-failure-reason')) {\n // don't show the header error since we have decided to not reveal that info\n reason = response.headers.get('auth-failure-reason');\n switch (reason) {\n case 'credentials-expired':\n this.location.href = '/mvc/auth/credentialsExpiredException';\n break;\n default:\n break;\n }\n }\n throw reason; // throw an error so our subscriber catches it\n })\n );\n }\n\n startLogout(): void {\n let host = this.location.hostname;\n host = host.replace(/.*?\\./, 'shop.');\n\n let redirectUrl = '/hub/#/login';\n // wait for both of our requests to finish\n forkJoin([\n this.http\n .get('https://' + host + '/shop/spring/logout?redirect=false', {\n withCredentials: true,\n })\n .pipe(\n timeout(500),\n catchError((e) =>\n // shop request timed out\n of(null)\n )\n ),\n // todo when portal moves off core tokens we should invoke\n // the ssoLogoutService.logout() instead, but at the moment\n // that call will do extra work that isn't valuable.\n // we also will want a new endpoint to get the logout url from portal\n // so we can add it to the post logout callback\n this.http.get('/mvc/auth/logout', {\n withCredentials: true,\n responseType: 'text',\n }),\n ])\n .pipe(\n finalize(() => {\n this.usanaFsService.anonymizeSessionWithFullStory();\n if (!!Storage) {\n sessionStorage.clear();\n this.hubParams = undefined;\n }\n // remove the user\n this.removeUser();\n this.timeoutStatus?.cleanup();\n this.location.href = redirectUrl;\n })\n )\n .subscribe(\n ([shopLogoutData, portalLogoutData]) => {\n redirectUrl = portalLogoutData;\n },\n () => {\n console.log('There was a problem logging out. Most likely a problem with the connection to the shop server.');\n }\n );\n }\n\n getHubParams(): Promise {\n return new Promise((resolve, reject) => {\n const currAttrs = this.store.selectSnapshot(UserProfileSelectors.getUserProfile);\n const newLogin: boolean =\n !!currAttrs && !!currAttrs.user\n ? this.doLoginAnalytics(currAttrs.user.title, currAttrs.analyticsCustomerId)\n : false;\n if (!this.hubParams || newLogin) {\n this.http.get('/mvc/auth/hubParams').subscribe((data: HubParams) => {\n this.hubParams = data;\n resolve(this.hubParams);\n });\n } else {\n resolve(this.hubParams);\n }\n });\n }\n\n /**\n * start the timeout countdown for the given seconds, if the timeout is not provided Hub Params will be used\n * @param timeoutSeconds the number of seconds before timeout.\n */\n startTimeout(timeoutSeconds?: number): void {\n if (!timeoutSeconds) {\n this.getHubParams().then((data: HubParams) => {\n this.doStartTimeout(data.timeout);\n });\n } else {\n this.doStartTimeout(timeoutSeconds);\n }\n }\n\n /**\n * returns if a user currently exists\n * NOTE: this gets the raw value from ngxs\n */\n hasUser(): boolean {\n const userSnap: AppUser = this.store.selectSnapshot(UserProfileSelectors.getUser);\n return !!userSnap && !!userSnap.username;\n }\n\n /**\n * removes just the user from the currentAttrs\n */\n removeUser(): void {\n // remove the user\n this.store.dispatch(new EditUserProfile({ user: null }));\n }\n\n /**\n * Checks a list of roles and returns true if the user is in the list\n * @param rolesToCheck\n * @returns\n */\n hasUserRole(rolesToCheck: string[]): boolean {\n if (!this.hasUser()) {\n return false;\n }\n // fancy filters\n const userAuthorities = this.store\n .selectSnapshot(UserProfileSelectors.getUser)\n .authorities.map((pa) => pa.authority);\n\n return rolesToCheck.filter((r) => userAuthorities.includes(r)).length > 0;\n }\n\n createSessionWithConsent(username: string, password: string): Observable {\n const createSessionWithConsentMutation = {\n operationName: 'createSessionWithConsent',\n query: CREATE_SESSION_WITH_CONSENT_MUTATION,\n variables: {\n input: {\n username: username,\n password: password,\n },\n },\n };\n return this.http\n .post(this.hubGatewayUrl, createSessionWithConsentMutation)\n .pipe(map((response) => response.data?.createSessionWithConsent));\n }\n\n saveConsent(username: string, consentIdArray: string[], idToken: string): Observable {\n const saveConsentMutation = {\n operationName: 'saveConsent',\n query: SAVE_CONSENT_MUTATION,\n variables: {\n input: {\n username: username,\n ids: consentIdArray,\n },\n },\n };\n return this.http\n .post(this.hubGatewayUrl, saveConsentMutation, {\n headers: {\n 'id-token': idToken,\n },\n })\n .pipe(map((response) => response.data?.saveConsent));\n }\n\n /**\n * starts the timout with the given number of seconds\n * @param timeoutSeconds the number of seconds till timeout\n */\n private doStartTimeout(timeoutSeconds: number): void {\n if (!this.timeoutStatus) {\n // we can only do this once\n this.timeoutStatus = new AuthTimeoutStatus(\n // alert 62 seconds before they time out. So they get a chance to redeem their evil doings.\n new AuthTimeoutHandler(() => {\n this.showTimeoutAlert();\n }, (timeoutSeconds - 62) * 1000),\n new Date().getTime(),\n new AuthTimeoutHandler(() => {\n this.keepAlive(false);\n }, AuthenticationConstants.DEFAULT_KEEP_ALIVE_INTERVAL)\n );\n\n this.timeoutStatus.start();\n }\n }\n\n /**\n * show the timeout alert\n * NOTE: if edit is enabled the timeout won't be triggered and instead we will send a keep alive request\n */\n private showTimeoutAlert(): void {\n if (this.store.selectSnapshot(UserProfileSelectors.getUserProfile).editEnabled) {\n this.keepAlive(true);\n } else if (this.hasUser()) {\n // not animated, because it doesn't align with the old stylesheet so it ends up invisible\n const instance = this.modalService.show(SessionTimeoutModalComponent, {\n animated: false,\n ignoreBackdropClick: true,\n });\n const modalSub = instance.content.close.subscribe((keepAlive: boolean) => {\n modalSub.unsubscribe();\n instance.hide();\n\n if (keepAlive) {\n this.keepAlive(true);\n } else {\n this.timeoutStatus.cleanup();\n this.startLogout();\n }\n });\n }\n }\n\n /**\n * This method is intended to be used at login time\n * for redirecting to usana owned endpoints.\n *\n * For example:\n * Phoenix login link points to the hub login with the url:\n *\n * /hub/login?start=cart\n *\n * Once a successful user login occurs the user is redirected to:\n *\n * /cart\n */\n private redirectToAnotherEntryPoint(data: any): string {\n let newEntryPointUrl = null;\n\n const requestedStartingEntryPoint: any = {};\n this.route.snapshot.queryParamMap.keys.forEach((key: string) => {\n requestedStartingEntryPoint[key] = this.route.snapshot.queryParamMap.get(key);\n });\n\n if (typeof requestedStartingEntryPoint.start !== 'undefined') {\n // the prefacing '/' protects us from non-relative redirects\n newEntryPointUrl = '/' + requestedStartingEntryPoint.start;\n } else if (!!data.newEnrolleeRedirect) {\n newEntryPointUrl = data.newEnrolleeRedirect;\n }\n if (!!newEntryPointUrl) {\n // add back on the parameters to the url if there are any\n for (const [key, value] of Object.entries(requestedStartingEntryPoint)) {\n if ('start' !== key) {\n if (Array.isArray(value)) {\n for (const arrayValue of value) {\n newEntryPointUrl += '&' + key + '=' + arrayValue;\n }\n } else {\n newEntryPointUrl += '&' + key + '=' + value;\n }\n }\n }\n this.location.href = newEntryPointUrl;\n }\n return newEntryPointUrl;\n }\n\n /**\n * is the given url in the blacklist\n * @param url the url to check\n */\n private urlInBlacklist(url: string): boolean {\n return AuthenticationConstants.BLACKLISTED_REDIRECT_URLS.indexOf(url) >= 0;\n }\n\n /**\n * analytics if it exists\n * @param title\n * @param analyticsCustomerId\n */\n private pushLoginAnalyticsToDataLayer(title: string, analyticsCustomerId: string): void {\n // if dataLayer exists\n if (typeof dataLayer !== 'undefined') {\n // logged in event\n dataLayer.push({\n event: 'CDUserEvent',\n membershipLeVal: title,\n userStatus: 'Logged in',\n });\n if (!!analyticsCustomerId && analyticsCustomerId.length > 0) {\n dataLayer.push({ event: 'identify_user', analyticsCustomerId: analyticsCustomerId });\n }\n }\n }\n\n private doLoginAnalytics(title: string, analyticsCustomerId: string): boolean {\n const sessionIdKey = 'sessionId';\n let newLogin = false;\n if (!!Storage) {\n const session = sessionStorage.getItem(sessionIdKey);\n const cookie = this.cookieService.get(AuthenticationConstants.LEGACY_SESSION_ID_COOKIE_NAME);\n if (!!session) {\n if (cookie !== session) {\n this.pushLoginAnalyticsToDataLayer(title, analyticsCustomerId);\n newLogin = true;\n }\n } else {\n this.pushLoginAnalyticsToDataLayer(title, analyticsCustomerId);\n newLogin = true;\n }\n sessionStorage.setItem(sessionIdKey, cookie);\n }\n return newLogin;\n }\n\n /**\n * sends a keep alive request to the backend if currently editing or the override is set to true\n * @param ignoreEditingOn override the editing status to force a keep alive\n */\n private keepAlive(ignoreEditingOn: boolean) {\n if (ignoreEditingOn || this.store.selectSnapshot(UserProfileSelectors.getUserProfile).editEnabled) {\n this.http\n .head('/mvc/auth/keepAlive')\n .toPromise()\n .then(() => {\n // make sure we let our status know we were kept alive.\n this.timeoutStatus.keptAlive(new Date().getTime());\n });\n }\n }\n}\n","export const CREATE_SESSION_WITH_CONSENT_MUTATION = `mutation createSessionWithConsent($input: CreateSessionInput!) {\n createSessionWithConsent(input: $input) {\n success\n session{\n coreToken\n idToken\n refreshToken\n customer {\n id\n }\n }\n consent{\n id\n country\n customerType\n code\n version\n required\n signed\n signedDate\n tag\n }\n errors {\n field\n message\n }\n }\n}`;\n","export const SAVE_CONSENT_MUTATION = `\n mutation saveConsent($input: SaveConsentInput!) {\n saveConsent(input: $input) {\n success\n customer {\n id\n }\n consent {\n id\n country\n customerType\n code\n version\n required\n signed\n signedDate\n tag\n }\n errors {\n field\n message\n }\n }\n}`;\n","import { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { AuthenticationService } from '../authentication/services/authentication.service';\n\n@Injectable({ providedIn: 'root' })\nexport class AuthResponseInterceptor implements HttpInterceptor {\n constructor(private router: Router, private authenticationService: AuthenticationService) {}\n\n intercept(request: HttpRequest, next: HttpHandler): Observable> {\n return next.handle(request).pipe(\n catchError((error: HttpErrorResponse) => {\n if (error.status === 401) {\n console.log('Unauthorized error:', error);\n\n if (this.router.url !== '/login') {\n this.authenticationService.startLogout();\n }\n }\n\n return throwError(error);\n })\n );\n }\n}\n","
\n
\n {{ 'consent.CN.head' | translate }}\n
\n
\n
\n
\n \n \n
\n \n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
{{ 'consent.CN.agree.prompt' | translate }}
\n
\n
\n \n \n
\n
\n
\n
\n","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { FormArray, FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { IConsent } from '@common/authentication/model/create-session-response';\nimport { AuthenticationService } from '@common/authentication/services/authentication.service';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'u-consent-dialog',\n templateUrl: './consent-dialog.component.html',\n styleUrls: ['./consent-dialog.component.scss'],\n})\nexport class ConsentDialogComponent implements OnInit, OnDestroy {\n formData: FormGroup;\n @Input() consentList: IConsent[];\n @Input() username: string;\n @Input() idToken: string;\n @Output() readonly formSubmitted = new EventEmitter();\n showAlert = false;\n isFirstCheckboxClicked = false;\n subscription = new Subscription();\n\n constructor(\n private fb: FormBuilder,\n private bsModalRef: BsModalRef,\n private authenticationService: AuthenticationService\n ) {}\n\n ngOnInit(): void {\n this.formData = this.fb.group({\n consent: this.fb.array([]),\n });\n if (this.consentList && this.consentList.length > 0) {\n this.consentList.forEach((consent) => {\n let control;\n if (consent?.required) {\n control = new FormControl(false, [Validators.requiredTrue]);\n } else {\n control = new FormControl(false);\n }\n this.consent.push(control);\n });\n }\n this.consent?.controls?.forEach((control, index) => {\n this.subscription.add(\n control.valueChanges.subscribe((value) => {\n if (index === 0) {\n if (value) {\n this.isFirstCheckboxClicked = true;\n this.consent?.controls[1]?.setValue(true);\n this.consent?.controls[2]?.setValue(true);\n this.consent?.controls[3]?.setValue(true);\n } else {\n if (this.isFirstCheckboxClicked === false) {\n return;\n }\n this.consent?.controls[1]?.setValue(false);\n this.consent?.controls[2]?.setValue(false);\n this.consent?.controls[3]?.setValue(false);\n }\n this.cancelShowAlert();\n }\n if (index === 1 || index === 2 || index === 3) {\n if (!value) {\n this.isFirstCheckboxClicked = false;\n this.consent?.controls[0]?.setValue(false);\n this.cancelShowAlert();\n }\n }\n })\n );\n });\n }\n\n private cancelShowAlert(): void {\n if (this.formData.valid) {\n this.showAlert = false;\n }\n }\n\n get consent(): FormArray {\n return this.formData.get('consent') as FormArray;\n }\n\n trackByIndex(index: number): number {\n return index;\n }\n\n submit(): void {\n if (this.formData.valid) {\n const ids = [];\n this.consentList?.forEach((consent, index) => {\n if (this.consent?.controls[index]?.value) {\n ids.push(consent.id);\n }\n });\n this.authenticationService.saveConsent(this.username, ids, this.idToken).subscribe(\n (result) => {\n if (result.success === true) {\n this.formSubmitted.emit();\n }\n },\n () => {\n this.showAlert = true;\n }\n );\n } else {\n this.showAlert = true;\n }\n }\n\n cancel(): void {\n this.bsModalRef.hide();\n }\n\n ngOnDestroy(): void {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n}\n","import { Injectable, TemplateRef } from '@angular/core';\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PopupModalService {\n constructor(private modalService: BsModalService) {}\n\n openModalWithTemplate(template: TemplateRef, config?: any): BsModalRef {\n return this.modalService.show(template, config);\n }\n\n openModalWithComponent(component: any, config?: any): BsModalRef {\n return this.modalService.show(component, config);\n }\n}\n","
\n
\n
\n

HUB {{ 'dotCom.login' | translate }}

\n
\n
\n
\n
\n \n \n \n\n

\n
\n\n
\n \n \n
\n
\n \n \n
\n
\n
\n \n
\n
\n
\n
\n","import { Component, Inject, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { ConsentDialogComponent } from '@common/authentication/components/consent-dialog/consent-dialog.component';\nimport { UserProfile } from '@common/authentication/model/user-profile';\nimport { UserProfileSelectors } from '@common/authentication/state/user-profile.selectors';\nimport { faLock } from '@fortawesome/pro-solid-svg-icons';\nimport { Store } from '@ngxs/store';\nimport { PopupModalService } from '@shared/popup-modal/popup-modal.service';\nimport { LOCATION_TOKEN } from '@usana/ux/common';\nimport { Subscription } from 'rxjs';\nimport { environment } from '../../../../../../environments/environment';\nimport { AuthenticationService } from '../../services/authentication.service';\n\n@Component({\n selector: 'u-login',\n templateUrl: './login.component.html',\n styleUrls: ['./login.component.scss'],\n})\nexport class LoginComponent implements OnInit, OnDestroy {\n readonly LOCK_ICON = faLock;\n\n isValid: boolean;\n showError: boolean;\n isBaoying = true;\n loaded = false;\n loginBtnDisabled = false;\n username: string;\n password: string;\n loginError: string;\n fieldTextType: boolean;\n private kiosk: boolean;\n private checkLoginSub: Subscription;\n\n constructor(\n private authenticationService: AuthenticationService,\n private store: Store,\n private router: Router,\n private route: ActivatedRoute,\n private popupModalService: PopupModalService,\n @Inject(LOCATION_TOKEN) private location: Location\n ) {\n this.isValid = false;\n }\n\n ngOnInit(): void {\n this.reset();\n\n const isKiosk = this.route.snapshot.queryParamMap.get('kiosk') === 'true';\n this.kiosk = isKiosk;\n\n this.isBaoying = this.location.host.includes('baoying');\n\n this.checkLoginSub = this.store\n .select(UserProfileSelectors.getUserProfile)\n .subscribe((userProfile: UserProfile) => {\n if (!userProfile || userProfile.user === undefined) {\n return; // do nothing it starts as undefined based on our default value and that value is junk\n }\n\n if (this.authenticationService.hasUser()) {\n this.cleanupSubscription();\n this.defaultRedirect();\n } else {\n if (userProfile.ssoEnabled) {\n this.redirectToSso(userProfile.fullLocale, this.startParamToUri());\n } else {\n // only display if we aren't redirecting to sso\n this.loaded = true;\n }\n }\n });\n }\n\n ngOnDestroy(): void {\n this.cleanupSubscription();\n }\n\n login(): void {\n this.showError = false;\n this.cleanupSubscription(); // at this point we will ignore any previous values since we are logging in\n if (!this.username || !this.password) {\n this.loginError = 'hub.login.supplyPassword';\n this.validateFail();\n this.reset();\n } else if (this.isBaoying && this.isNumber(this.username)) {\n this.loginBtnDisabled = true;\n this.authenticationService.createSessionWithConsent(this.username, this.password).subscribe(\n (result) => {\n this.loginBtnDisabled = false;\n if (result.success === true) {\n const consentList = result.consent;\n let isSignedCompletely = true;\n if (consentList && consentList.length > 0) {\n isSignedCompletely = consentList.every((item) => (item.required === true ? item.signed : true));\n }\n if (isSignedCompletely === false) {\n const modalRef = this.popupModalService.openModalWithComponent(ConsentDialogComponent, {\n initialState: {\n username: this.username,\n consentList: consentList,\n idToken: result.session?.idToken,\n },\n ignoreBackdropClick: true,\n });\n modalRef.content.formSubmitted.subscribe(() => {\n modalRef.hide();\n this.loginRequest();\n });\n } else {\n this.loginRequest();\n }\n } else {\n this.handleLoginFailedResponse();\n }\n },\n () => {\n this.handleLoginFailedResponse();\n }\n );\n } else {\n this.loginRequest();\n }\n }\n\n reset(): void {\n this.username = '';\n this.password = '';\n }\n\n togglePasswordVisibility() {\n this.fieldTextType = !this.fieldTextType;\n }\n\n private loginRequest(): void {\n this.loginBtnDisabled = true;\n this.authenticationService.loginRequest(this.username, this.password, this.kiosk).subscribe(\n (redirectUrl: string) => {\n this.loginBtnDisabled = false;\n if (!!redirectUrl) {\n console.log('forced redirect to', redirectUrl);\n } else {\n this.defaultRedirect();\n }\n },\n (message: string) => {\n this.handleLoginFailedResponse();\n }\n );\n }\n\n private handleLoginFailedResponse(): void {\n this.loginBtnDisabled = false;\n // so apparently our code was so bad before we ignored the message and always use this translation tag\n this.loginError = 'hub.login.validUserPass';\n this.validateFail();\n this.reset();\n }\n\n private isNumber(value: string): boolean {\n const pattern = /^\\d*$/;\n return !(pattern.exec(value) === null || value === '');\n }\n\n private validateFail(): void {\n this.isValid = false;\n this.showError = true;\n }\n\n private cleanupSubscription(): void {\n if (this.checkLoginSub) {\n this.checkLoginSub.unsubscribe();\n delete this.checkLoginSub;\n }\n }\n\n private defaultRedirect(): void {\n this.router.navigate(['/home']);\n }\n\n private startParamToUri(): string {\n const searchParams: any = {};\n this.route.snapshot.queryParamMap.keys.forEach((key: string) => {\n searchParams[key] = this.route.snapshot.queryParamMap.get(key);\n });\n\n let redirectUri = '';\n if (searchParams.start) {\n redirectUri = `https://www.${environment.DEPLOY_SITEDOMAIN}/${searchParams.start}`;\n } else if (!!this.authenticationService.getRedirectURL()) {\n redirectUri = `https://www.${environment.DEPLOY_SITEDOMAIN}/hub/#${this.authenticationService.getRedirectURL()}`;\n }\n\n if (!!redirectUri) {\n // add back on the parameters to the url if there are any\n for (const [key, value] of Object.entries(searchParams)) {\n // not the key we already grabbed\n if (['start', 'kiosk'].indexOf(key) < 0) {\n if (Array.isArray(value)) {\n for (const arrayValue of value) {\n redirectUri += '&' + key + '=' + arrayValue;\n }\n } else {\n redirectUri += '&' + key + '=' + value;\n }\n }\n }\n }\n\n return redirectUri;\n }\n\n private redirectToSso(market: string, redirectUri: string): void {\n let kioskPart = '';\n if (this.kiosk) {\n kioskPart = '?kiosk=true';\n }\n this.location.assign(\n `https://sso.${environment.DEPLOY_SITEDOMAIN}/${market}/login/${encodeURIComponent(redirectUri)}${kioskPart}`\n );\n }\n}\n","import { Component } from '@angular/core';\nimport { faHome } from '@fortawesome/pro-solid-svg-icons';\n\n@Component({\n selector: 'u-error401',\n styleUrls: ['./error-page.component.scss'],\n templateUrl: './error401.component.html',\n})\nexport class Error401Component {\n readonly HOME_ICON = faHome;\n}\n","
\n
\n
\n

401

\n
\n
\n

{{ 'hub.unauthorized' | translate }}

\n
\n \n
\n
\n","import { Component } from '@angular/core';\nimport { faHome } from '@fortawesome/pro-solid-svg-icons';\n\n@Component({\n selector: 'u-error404',\n styleUrls: ['./error-page.component.scss'],\n templateUrl: './error404.component.html',\n})\nexport class Error404Component {\n readonly HOME_ICON = faHome;\n}\n","
\n
\n
\n

404

\n
\n
\n

{{ 'hub.pageNotFound' | translate }}

\n
\n \n
\n
\n","import { DatePipe } from '@angular/common';\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { UserProfileSelectors } from '@common/authentication/state/user-profile.selectors';\nimport { Store } from '@ngxs/store';\n\n/**\n * This is to be used instead of the built in date pipe for displaying dates, the built in one cannot switch locales\n * on the fly since setting the LOCALE_ID is done at bootstrapping. The only way to use the built in date pipe is to\n * reload the app every time every time the locale is changed which is undesired\n *\n * Example html would be\n * date {{currentDate | usanadate :'mediumDate'}}\n */\n@Pipe({\n name: 'usanaDate',\n pure: false, // :(\n})\nexport class UsanaDatePipe extends DatePipe implements PipeTransform {\n constructor(private store: Store) {\n super('en');\n }\n\n transform(value: any, format?: string, timezone?: string, locale?: string): any {\n const userLocale = this.store.selectSnapshot(UserProfileSelectors.getI18NLocale);\n return super.transform(value, format, timezone, userLocale);\n }\n}\n","
\n \n\n
\n {{ notification.notificationTime | usanaDate : 'medium' }}\n
\n
\n \n\n\n\n
\n

{{ notification.category.displayText }}

\n
\n
\n\n\n
\n
\n
\n \n \n \n\n {{ notification.notificationTime | usanaDate : 'medium' }}\n
\n
\n\n
\n \n ' + notificationData.text + '' | unsafe : 'html'\"\n *ngIf=\"notificationData.part === 'BODY'\"\n >\n \n
\n
\n \n
\n","import { Component, EventEmitter, Input, OnInit, Output, TemplateRef } from '@angular/core';\nimport { NOTIFICATION_ICON_MAP } from '@common/notifications/notification.constants';\nimport { Notification } from '@common/notifications/notification.model';\nimport { IconDefinition } from '@fortawesome/fontawesome-common-types';\nimport { faEnvelope } from '@fortawesome/pro-solid-svg-icons';\nimport { SideModalService } from '@shared/side-modal/side-modal.service';\n\n@Component({\n selector: 'u-notification-list-item',\n templateUrl: './notification-list-item.component.html',\n styleUrls: ['./notification-list-item.component.scss'],\n})\nexport class NotificationListItemComponent implements OnInit {\n @Input() notification: Notification;\n @Output() readonly viewNotification = new EventEmitter();\n @Output() readonly deleteNotification = new EventEmitter();\n @Output() readonly closeModal = new EventEmitter();\n\n icon: IconDefinition;\n\n constructor(private sideModalService: SideModalService) {}\n\n ngOnInit() {\n const iconDefinition = NOTIFICATION_ICON_MAP[this.notification.category.category];\n this.icon = iconDefinition || faEnvelope;\n }\n\n onSelect(bodyTemplate: TemplateRef, headerTemplate: TemplateRef) {\n this.viewNotification.emit(this.notification);\n this.sideModalService.open({ bodyTemplate, headerTemplate });\n }\n\n onDelete($event) {\n $event.stopPropagation();\n this.deleteNotification.emit(this.notification);\n }\n\n trackByIndex(index) {\n return index;\n }\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'u-loading-spinner',\n templateUrl: './loading-spinner.component.html',\n styleUrls: ['./loading-spinner.component.scss'],\n})\nexport class LoadingSpinnerComponent {\n @Input() customStyle?;\n}\n","
\n \"loading\n
\n","
\n \n \n \n\n
\n {{ 'notifications.landing.noNewNotifications' | translate }}\n
\n\n
\n \n
\n\n
\n
\n \n
\n
\n
\n","import { Component, Input } from '@angular/core';\nimport { Notification } from '@common/notifications/notification.model';\nimport { NotificationService } from '@common/notifications/notification.service';\nimport { DeleteNotification } from '@common/notifications/state/notification.actions';\nimport { ActionsExecuting } from '@ngxs-labs/actions-executing';\nimport { Store } from '@ngxs/store';\nimport { take } from 'rxjs/operators';\n\n@Component({\n selector: 'u-notification-widget-content',\n templateUrl: './notification-widget-content.component.html',\n styleUrls: ['./notification-widget-content.component.scss'],\n})\nexport class NotificationWidgetContentComponent {\n @Input() loadingNotifications: ActionsExecuting;\n @Input() limit: boolean;\n @Input() displayedNotifications: Notification[] = [];\n activeNotification: Notification;\n\n constructor(private store: Store, private notificationService: NotificationService) {}\n\n viewNotification(notification: Notification): void {\n this.notificationService\n .markAsRead([notification])\n .pipe(take(1))\n .subscribe(() => {\n this.activeNotification = notification;\n });\n }\n\n deleteNotification(notification: Notification): void {\n this.store.dispatch(new DeleteNotification(notification));\n }\n\n navigateToNotificationPage() {\n this.notificationService.navigateToNotificationPage();\n }\n\n trackById(index: number, notification: Notification): number {\n return notification.id;\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { NOTIFICATION_TRANSLATION_TAGS } from '@common/notifications/notification.constants';\nimport { Notification } from '@common/notifications/notification.model';\nimport { NotificationService } from '@common/notifications/notification.service';\nimport { TranslationService } from '@common/translation/translation.service';\nimport { ActionsExecuting } from '@ngxs-labs/actions-executing';\nimport { DropdownMenuItem } from '@shared/dropdown/dropdown.model';\nimport { WidgetData } from '@usana/ux/widget';\n\n@Component({\n selector: 'u-notification-widget',\n templateUrl: './notification-widget.component.html',\n})\nexport class NotificationWidgetComponent {\n @Input() loadingNotifications: ActionsExecuting;\n @Input() limit: boolean = true;\n displayedNotifications: Notification[] = [];\n unReadAmount: number = 0;\n dropdownMenuItems: DropdownMenuItem[] = [];\n\n @Input() set notifications(notifications: Notification[]) {\n notifications = notifications || [];\n this.displayedNotifications = this.limit ? notifications.slice(0, 10) : notifications;\n this.dropdownMenuItems = this.notificationService.getDropdownMenuItems(this.limit, this.displayedNotifications);\n this.unReadAmount = notifications.filter((notification: Notification) => !notification.read).length || 0;\n this.dropdownMenuItems = this.notificationService.getDropdownMenuItems(this.limit, this.displayedNotifications);\n this.getMenuItemsTranslations();\n }\n\n constructor(private translateService: TranslationService, private notificationService: NotificationService) {}\n\n get title(): string {\n return (\n this.translateService.getTranslationForFilter(NOTIFICATION_TRANSLATION_TAGS.widgetTitle) +\n ` (${this.unReadAmount})`\n );\n }\n\n getMenuItemsTranslations(): void {\n for (const menuItem of this.dropdownMenuItems) {\n menuItem.text = this.translateService.getTranslationForFilter(menuItem.text);\n }\n }\n\n getWidgetData(): WidgetData {\n return {\n title: this.title,\n dropDownButtonOptions: {\n menuPlacement: 'right',\n dropdownMenuItems: this.dropdownMenuItems,\n },\n };\n }\n}\n","\n \n\n","import { Component, OnInit } from '@angular/core';\nimport { Notification } from '@common/notifications/notification.model';\nimport { LoadArchivedNotifications, LoadCurrentNotifications } from '@common/notifications/state/notification.actions';\nimport { NotificationSelectors } from '@common/notifications/state/notification.selectors';\nimport { ActionsExecuting, actionsExecuting } from '@ngxs-labs/actions-executing';\nimport { Select, Store } from '@ngxs/store';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'u-notification-dashboard',\n templateUrl: './notification-dashboard.component.html',\n styleUrls: ['./notification-dashboard.component.scss'],\n})\nexport class NotificationDashboardComponent implements OnInit {\n @Select(NotificationSelectors.getCurrentNotifications) currentNotifications$: Observable;\n @Select(NotificationSelectors.getArchivedNotifications) archivedNotifications$: Observable;\n @Select(actionsExecuting([LoadArchivedNotifications])) loadArchivedNotifications$: Observable;\n @Select(actionsExecuting([LoadCurrentNotifications])) loadCurrentNotifications$: Observable;\n viewType: 'archived' | 'notification';\n\n constructor(private store: Store) {}\n\n ngOnInit() {\n this.store.dispatch([new LoadArchivedNotifications()]);\n }\n\n switchNotificationView(type: 'archived' | 'notification') {\n this.viewType = type;\n }\n\n get isArchivedView() {\n return this.viewType === 'archived';\n }\n}\n","
\n
\n
\n \n
\n
\n
\n \n {{ 'notifications.landing-title-notifications' | translate }}\n
\n \n {{ 'notifications.landing-title-archived' | translate }}\n
\n
\n
\n \n\n \n\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { LOCATION_TOKEN } from '@usana/ux/common';\nimport { environment } from '../../../../../../environments/environment';\n\n@Component({\n selector: 'u-notification-settings-container',\n templateUrl: './notification-settings-container.component.html',\n})\nexport class NotificationSettingsContainerComponent implements OnInit {\n constructor(@Inject(LOCATION_TOKEN) protected readonly location: any) {}\n\n ngOnInit() {\n this.location.assign(`https://sso.${environment.DEPLOY_SITEDOMAIN}/account/settings/notifications`);\n }\n}\n","
\n {{ 'notifications.landing.noNewNotifications' | translate }}\n
\n
\n
\n
\n \n
\n
\n
{{ notification.category.displayText }}
\n \n \n {{ notificationContent.text }}\n \n
\n
\n {{ notification.notificationTime | usanaDate : 'medium' }}\n
\n
\n
\n\n
\n
\n \n ' + notificationData.text + '' | unsafe : 'html'\"\n *ngIf=\"notificationData.part === 'BODY'\"\n >\n \n
\n
\n \n\n","import { Component, Inject, Input, OnInit } from '@angular/core';\nimport { NOTIFICATION_ICON_MAP } from '@common/notifications/notification.constants';\nimport { Notification } from '@common/notifications/notification.model';\nimport { LoadSingleNotification } from '@common/notifications/state/notification.actions';\nimport { IconDefinition, faEnvelope } from '@fortawesome/pro-solid-svg-icons';\nimport { Store } from '@ngxs/store';\nimport { WindowToken } from '../../utils/window';\n\n@Component({\n selector: 'u-notification-single-item',\n templateUrl: './notification-single-item.component.html',\n styleUrls: ['./notification-single-item.component.scss'],\n})\nexport class NotificationSingleItemComponent implements OnInit {\n @Input() notification: Notification;\n\n notificationFound = false;\n\n constructor(private store: Store, @Inject(WindowToken) private window: Window) {}\n\n icon: IconDefinition;\n\n ngOnInit() {\n this.store.dispatch(new LoadSingleNotification(this.getQueryString('key'))).subscribe((notify) => {\n this.notification = notify.notifications.singleNotification;\n if (this.notification) {\n this.notificationFound = true;\n const iconDefinition = NOTIFICATION_ICON_MAP[this.notification.category.category];\n this.icon = iconDefinition || faEnvelope;\n }\n });\n }\n\n // for now until we get new angular router in place :(\n getQueryString(field, url?) {\n const href = url ? url : this.window.location.href;\n const reg = new RegExp('[?&]' + field + '=([^&#]*)', 'i');\n const string = reg.exec(href);\n return string ? string[1] : null;\n }\n\n trackByIndex(index) {\n return index;\n }\n}\n","export class LoadFpvReport {\n static readonly type = '[FpvReport] LOAD FPV REPORT';\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { FpvReportModel } from './state/fpv-report.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FpvReportService {\n constructor(private http: HttpClient) {}\n\n getFpvReport(): Observable {\n const url = '/dlm2/rest/fpv/widget';\n return this.http.get(url).pipe(map((fpvReport: FpvReportModel) => fpvReport));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Action, State, StateContext } from '@ngxs/store';\nimport { map } from 'rxjs/operators';\nimport { FpvReportService } from '../fpv-report.service';\nimport { LoadFpvReport } from './fpv-report.actions';\nimport { FpvReportStateModel } from './fpv-report.model';\n\n@State({\n name: 'usanaFpvReport',\n defaults: {\n fpvReport: {\n show: false,\n pagedDocument: {},\n },\n },\n})\n@Injectable()\nexport class FpvReportState {\n monthInMillis = 1000 * 60 * 60 * 24 * 30;\n\n constructor(private usanaFpvReportService: FpvReportService) {}\n\n @Action(LoadFpvReport)\n loadUsanaFpvReport({ patchState }: StateContext) {\n return this.usanaFpvReportService.getFpvReport().pipe(\n map((fpvReport) => {\n if (fpvReport) {\n fpvReport.pagedDocument.maxDays = fpvReport.pagedDocument.endTime + this.monthInMillis;\n patchState({ fpvReport });\n }\n })\n );\n }\n}\n","import { Selector } from '@ngxs/store';\nimport { FpvReportStateModel } from './fpv-report.model';\nimport { FpvReportState } from './fpv-report.state';\n\nexport class FpvReportSelectors {\n @Selector([FpvReportState])\n public static getFpvReport(state: FpvReportStateModel) {\n return state.fpvReport;\n }\n}\n","
\n

{{ 'china.ds.header' | translate }}

\n
\n

{{ 'china.ds.subHeader' | translate }}

\n
\n

\n
\n

\n
\n

\n
\n

\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n
{{ 'china.ds.fpv.lastMonth' | translate }}{{ fpvReport.pagedDocument.summary.totalNewThisMonth }}
{{ 'china.ds.fpv.total' | translate }}{{ fpvReport.pagedDocument.summary.totalAvailable }}
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ 'china.ds.fpv.date' | translate }}{{ 'china.ds.fpv.amount' | translate }}
\n {{ row[0].v | date: 'mediumDate' }}\n \n {{ row[1].v }}\n
\n
{{ 'china.ds.footer' | translate }}
\n
\n
\n","import { Component, OnInit } from '@angular/core';\nimport { LoadFpvReport } from '@common/fpv-widget/state/fpv-report.actions';\nimport { FpvReportModel } from '@common/fpv-widget/state/fpv-report.model';\nimport { FpvReportSelectors } from '@common/fpv-widget/state/fpv-report.selectors';\nimport { Select, Store } from '@ngxs/store';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'u-baoying-fpv-report',\n templateUrl: './baoying-fpv-report.component.html',\n styleUrls: ['./baoying-fpv-report.component.scss'],\n})\nexport class BaoyingFpvReportComponent implements OnInit {\n @Select(FpvReportSelectors.getFpvReport) fpvReport$: Observable;\n\n constructor(private store: Store) {}\n\n ngOnInit() {\n this.store.dispatch(new LoadFpvReport());\n }\n\n trackByIndex(index) {\n return index;\n }\n}\n","export const MAX_REPORT_PAGE_SIZE = 2147483647;\n","import { MAX_REPORT_PAGE_SIZE } from '@common/reports/reports.constants';\nimport { ReportViewTypes } from '@common/reports/reports.enum';\n\nexport const UPLINE_LEADER_REPORT_NAME = 'upLineLeaderReport';\n\nexport const UPLINE_LEADER_DEFAULT_VALUES = {\n defaultView: ReportViewTypes.Sheet,\n pageSize: MAX_REPORT_PAGE_SIZE,\n pageNum: 1,\n businessCenter: '',\n displayLevels: 4,\n};\n\nexport const BUSINESS_CENTER_1 = '.001';\n","import { ReportsState } from '@common/reports/state/reports.state';\nimport { ReportsStateModel } from '@common/reports/state/reports.state.model';\nimport { UPLINE_LEADER_REPORT_NAME } from '@common/upline-leader-placement/upline-leader-placement.constants';\nimport { UplineLeaderPlacementReport } from '@common/upline-leader-placement/upline-leader-placement.model';\nimport { Selector } from '@ngxs/store';\n\nexport class BaoyingUplineReportSelectors {\n @Selector([ReportsState])\n public static mapBaoyingUplineReport(state: ReportsStateModel) {\n const report = state.dataEntries[UPLINE_LEADER_REPORT_NAME].data.document[0];\n\n const uplineLeaderReport: UplineLeaderPlacementReport[] = [\n {\n groupTitle: 'hub.uplineLeaderReport.sponsorInfo',\n data: [\n {\n label: 'hub.uplineLeaderReport.name',\n value: report[7].v + ' ' + report[6].v,\n },\n {\n label: 'hub.uplineLeaderReport.associateId',\n value: report[4].v,\n },\n {\n label: 'hub.uplineLeaderReport.branch',\n value: report[12].v,\n },\n ],\n },\n {\n groupTitle: 'hub.uplineLeaderReport.placementInfo',\n data: [\n {\n label: 'hub.uplineLeaderReport.name',\n value: report[17].v + ' ' + report[16].v,\n },\n {\n label: 'hub.uplineLeaderReport.actualPlacement',\n value: report[20].v,\n },\n {\n label: 'hub.uplineLeaderReport.branch',\n value: report[18].v,\n },\n ],\n },\n ];\n return uplineLeaderReport;\n }\n}\n","
\n
{{ title | translate }}
\n
\n
\n
\n
\n
\n
{{ uplineReport.groupTitle | translate }}
\n
\n
\n {{ report.label | translate }}:\n {{ report.value }}\n
\n
\n
\n
\n
\n
\n
\n
\n

{{ 'hub.dlm.error-loading' | translate }}

\n
\n
\n","import { Component, Input } from '@angular/core';\nimport { UplineLeaderPlacementReport } from '@common/upline-leader-placement/upline-leader-placement.model';\n\n@Component({\n selector: 'u-upline-leader-placement',\n templateUrl: './upline-leader-placement.component.html',\n styleUrls: ['./upline-leader-placement.component.scss'],\n})\nexport class UplineLeaderPlacementComponent {\n @Input() upLinePlacementReport: UplineLeaderPlacementReport[];\n @Input() hasError: boolean;\n @Input() title: string;\n\n trackByIndex(index) {\n return index;\n }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { UserProfileSelectors } from '@common/authentication/state/user-profile.selectors';\nimport { ReportRequestBody } from '@common/reports/reports.model';\nimport { LoadReportData } from '@common/reports/state/reports.actions';\nimport {\n BUSINESS_CENTER_1,\n UPLINE_LEADER_DEFAULT_VALUES,\n UPLINE_LEADER_REPORT_NAME,\n} from '@common/upline-leader-placement/upline-leader-placement.constants';\nimport { UplineLeaderPlacementReport } from '@common/upline-leader-placement/upline-leader-placement.model';\nimport { Store } from '@ngxs/store';\nimport { Subscription } from 'rxjs';\nimport { BaoyingUplineReportSelectors } from '../state/upline-leader.selectors';\n\n@Component({\n selector: 'u-baoying-upline-leader-report',\n templateUrl: './baoying-upline-leader-report.component.html',\n styleUrls: ['./baoying-upline-leader-report.component.scss'],\n})\nexport class BaoyingUplineLeaderReportComponent implements OnInit, OnDestroy {\n reportRequestBody: ReportRequestBody = UPLINE_LEADER_DEFAULT_VALUES;\n hasError: boolean;\n subscription = new Subscription();\n baoyingUplineLeaderReport: UplineLeaderPlacementReport[];\n title = 'hub.uplineLeaderReport.mySponsorInformation';\n\n constructor(private store: Store) {}\n\n ngOnInit(): void {\n const user = this.store.selectSnapshot(UserProfileSelectors.getUser);\n this.reportRequestBody.businessCenter = user.username + BUSINESS_CENTER_1;\n this.store.dispatch(new LoadReportData(UPLINE_LEADER_REPORT_NAME, this.reportRequestBody)).subscribe((state) => {\n this.hasError = state.reports.dataEntries.upLineLeaderReport.error;\n this.mapBaoyingUplineReport();\n });\n }\n\n mapBaoyingUplineReport() {\n this.subscription.add(\n this.store.select(BaoyingUplineReportSelectors.mapBaoyingUplineReport).subscribe((reportData) => {\n if (reportData) {\n this.baoyingUplineLeaderReport = reportData;\n }\n })\n );\n }\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n}\n","
\n \n
\n","/* eslint-disable max-classes-per-file */\nexport class LoadCommissionWeeks {\n static readonly type = '[baoyingVolumeReport] LOAD COMMISSION WEEKS';\n}\n\nexport class LoadBaoyingVolumeReport {\n static readonly type = '[baoyingVolumeReport] LOAD VOLUME';\n}\n\nexport class SetCommissionWeek {\n static readonly type = '[baoyingVolumeReport] SET COMMISSION WEEK';\n constructor(public commissionWeek: number) {}\n}\n","import { HttpClient, HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { FPVReportModel } from '@common/reports/reports.model';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class BaoyingVolumeReportService {\n private static handleError(error: HttpErrorResponse) {\n return throwError(error);\n }\n\n constructor(private http: HttpClient) {}\n\n getCommissionWeeks(): Observable {\n const url = '/mvc/reporting/commissionWeeks';\n return this.http.get(url).pipe(\n map((commissionWeeks: number[]) => commissionWeeks),\n catchError(BaoyingVolumeReportService.handleError)\n );\n }\n\n getBaoyingVolumeReport(commissionWeek): Observable {\n const url = '/dlm2/baoying/volume/' + commissionWeek;\n return this.http.get(url).pipe(\n map((baoyingVolumeReport: FPVReportModel) => baoyingVolumeReport),\n catchError(BaoyingVolumeReportService.handleError)\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Action, State, StateContext } from '@ngxs/store';\nimport { map } from 'rxjs/operators';\nimport { BaoyingVolumeReportService } from '../baoying-volume-report.service';\nimport { LoadBaoyingVolumeReport, LoadCommissionWeeks, SetCommissionWeek } from './baoying-volume-report.actions';\nimport { BaoyingVolumeReportStateModel } from './baoying-volume-report.state.model';\n\n@State({\n name: 'baoyingVolumeReport',\n defaults: {\n commissionWeeks: [],\n commissionWeek: 0,\n volume: {},\n },\n})\n@Injectable()\nexport class BaoyingVolumeReportState {\n constructor(private baoyingReportService: BaoyingVolumeReportService) {}\n\n @Action(LoadCommissionWeeks)\n loadCommissionWeeks({ patchState }: StateContext) {\n return this.baoyingReportService.getCommissionWeeks().pipe(\n map((commissionWeeks) => {\n if (commissionWeeks) {\n patchState({ commissionWeeks: commissionWeeks, commissionWeek: commissionWeeks[0] });\n }\n })\n );\n }\n\n @Action(SetCommissionWeek)\n setCommissionWeek(\n { patchState, dispatch }: StateContext,\n { commissionWeek }: SetCommissionWeek\n ) {\n patchState({ commissionWeek });\n return dispatch(new LoadBaoyingVolumeReport());\n }\n\n @Action(LoadBaoyingVolumeReport)\n loadBaoyingVolumeReport({ patchState, getState }: StateContext) {\n const state = getState();\n return this.baoyingReportService.getBaoyingVolumeReport(state.commissionWeek).pipe(\n map((volume) => {\n if (volume) {\n patchState({ volume });\n }\n })\n );\n }\n}\n","import { Selector } from '@ngxs/store';\nimport { BaoyingVolumeReportState } from './baoying-volume-report.state';\nimport { BaoyingVolumeReportStateModel } from './baoying-volume-report.state.model';\n\nexport class BaoyingVolumeReportSelectors {\n @Selector([BaoyingVolumeReportState])\n public static getCommissionWeeks(state: BaoyingVolumeReportStateModel): number[] {\n return state.commissionWeeks;\n }\n\n @Selector([BaoyingVolumeReportState])\n public static getCommissionWeek(state: BaoyingVolumeReportStateModel): number {\n return state.commissionWeek;\n }\n\n @Selector([BaoyingVolumeReportState])\n public static getVolume(state: BaoyingVolumeReportStateModel) {\n return state.volume;\n }\n}\n","
\n
{{ 'hub.home.volume-report' | translate }}
\n
\n
\n {{ 'dlm.dlmReports.forPeriodEnding' | translate }}:\n \n \n \n
\n
\n \n \n \n \n \n \n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n \n \n \n \n \n\n \n\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n \n \n
{{ 'dlm.dlmReports.market' | translate }}{{ 'dlm.dlmReports.personalCenter' | translate }}{{ '01 ' + ('dlm.dlmReports.volume' | translate) }}{{ '03 ' + ('dlm.dlmReports.volume' | translate) }}{{ '04 ' + ('dlm.dlmReports.volume' | translate) }}{{ '02 ' + ('dlm.dlmReports.volume' | translate) }}{{ '01 ' + ('dlm.dlmReports.carryover' | translate) }}{{ '03 ' + ('dlm.dlmReports.carryover' | translate) }}{{ '04 ' + ('dlm.dlmReports.carryover' | translate) }}{{ '02 ' + ('dlm.dlmReports.carryover' | translate) }}{{ '01 ' + ('dlm-3087' | translate) }}{{ '03 ' + ('dlm-3087' | translate) }}{{ '04 ' + ('dlm-3087' | translate) }}{{ '02 ' + ('dlm-3087' | translate) }}{{ '01 ' + ('dlm.dlmReports.autoOrder' | translate) }}{{ '03 ' + ('dlm.dlmReports.autoOrder' | translate) }}{{ '04 ' + ('dlm.dlmReports.autoOrder' | translate) }}{{ '02 ' + ('dlm.dlmReports.autoOrder' | translate) }}
\n {{\n row[2].v === 0\n ? ('babycare.hub.parentCenter' | translate)\n : ('babycare.hub.childCenter' | translate) + row[2].v\n }}\n {{ row[3].v | number : '1.2-2' }}{{ row[4].v | number : '1.2-2' }}{{ row[7].v | number : '1.2-2' }}{{ row[6].v | number : '1.2-2' }}{{ row[5].v | number : '1.2-2' }}{{ row[8].v | number : '1.2-2' }}{{ row[11].v | number : '1.2-2' }}{{ row[10].v | number : '1.2-2' }}{{ row[9].v | number : '1.2-2' }}{{ row[12].v | number : '1.2-2' }}{{ row[15].v | number : '1.2-2' }}{{ row[14].v | number : '1.2-2' }}{{ row[13].v | number : '1.2-2' }}{{ row[16].v | number : '1.2-2' }}{{ row[19].v | number : '1.2-2' }}{{ row[18].v | number : '1.2-2' }}{{ row[17].v | number : '1.2-2' }}
\n
\n
\n
\n

{{ 'hub.dlm.error-loading' | translate }}

\n
\n
\n","import { Component, OnInit } from '@angular/core';\nimport { FPVReportModel } from '@common/reports/reports.model';\nimport { Select, Store } from '@ngxs/store';\nimport { Observable } from 'rxjs';\nimport {\n LoadBaoyingVolumeReport,\n LoadCommissionWeeks,\n SetCommissionWeek,\n} from '../state/baoying-volume-report.actions';\nimport { BaoyingVolumeReportSelectors } from '../state/baoying-volume-report.selectors';\n\n@Component({\n selector: 'u-baoying-volume-report',\n templateUrl: './baoying-volume-report.component.html',\n styleUrls: ['./baoying-volume-report.component.scss'],\n})\nexport class BaoyingVolumeReportComponent implements OnInit {\n @Select(BaoyingVolumeReportSelectors.getCommissionWeeks) commissionWeeks$: Observable;\n @Select(BaoyingVolumeReportSelectors.getVolume) volumeReport$: Observable;\n hasError;\n\n constructor(private store: Store) {}\n\n ngOnInit() {\n this.store.dispatch(new LoadCommissionWeeks()).subscribe(\n () => {\n this.store.dispatch(new LoadBaoyingVolumeReport()).subscribe(\n () => {},\n (error) => {\n this.hasError = error;\n }\n );\n },\n (error) => {\n this.hasError = error;\n }\n );\n }\n\n changeCommissionWeek(commissionWeek) {\n return this.store.dispatch(new SetCommissionWeek(commissionWeek));\n }\n\n trackByIndex(index) {\n return index;\n }\n}\n","import { Selector } from '@ngxs/store';\nimport { NavigationState } from './navigation.state';\nimport { NavigationStateModel } from './navigation.state.model';\n\nexport class NavigationSelectors {\n @Selector([NavigationState])\n static getNavLevel(state: NavigationStateModel) {\n return state.navLevelOpen;\n }\n\n @Selector([NavigationState])\n static getTopNavHeight(state: NavigationStateModel) {\n return state.topNavHeight;\n }\n\n @Selector([NavigationState])\n static isNavFixed(state: NavigationStateModel) {\n return state.fixedNav;\n }\n\n @Selector([NavigationSelectors.isNavFixed, NavigationSelectors.getTopNavHeight])\n static getNavRenderOffset(isNavFixed: boolean, height: number) {\n return isNavFixed ? height : 0;\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'b-pc-blocked-modal',\n templateUrl: './pc-blocked-modal.component.html',\n styleUrls: ['./pc-blocked-modal.component.scss'],\n})\nexport class PcBlockedModalComponent {}\n","

\n {{ 'hub.home.pcBlockedMessage' | translate }}\n

\n","import { Component } from '@angular/core';\nimport { PerformanceService } from '@shared/performance/performance.service';\n\n@Component({\n selector: 'u-home-banner',\n templateUrl: './home-banner.component.html',\n styleUrls: ['./home-banner.component.scss'],\n})\nexport class HomeBannerComponent {\n itemId = 'hub-home-banner-slider-container';\n\n placeholderData = {\n type: {\n id: 'Hub-Banner-Slider-Container',\n },\n item: {\n id: 'hub-home-banner-slider-container-placeholder',\n },\n children: [],\n };\n\n constructor() {\n PerformanceService.mark('Home:HomeBannerIncluded');\n this.placeholderData.children = [\n this.placeholderItem('hub-home-banner-placeholder-slide-1'),\n this.placeholderItem('hub-home-banner-placeholder-slide-2'),\n ];\n }\n\n private placeholderItem(itemId: string) {\n return {\n placeholder: true,\n item: {\n id: itemId,\n },\n data: {\n slideImage: {\n data: 'assets/placeholder.jpeg',\n },\n Title: {\n data: '',\n },\n buttonLabel: {\n data: '',\n },\n linkData: {\n data: {\n target: '_self',\n },\n },\n },\n type: {\n id: 'Hub-Banner-Slider-Item',\n },\n };\n }\n}\n","
\n \n
\n","export const USANA_NEWS_ROOT_ID = 'usana-news-landing-container';\n","// eslint-disable-next-line max-classes-per-file\nimport { CmsData } from '../cms/cms.model';\n\nexport class UsanaNewsItem {\n // initialize `summary` and `imageSrc240x240` with some necessary defaults\n summary = new UsanaNewsItemObject({ dataType: 'summary' });\n imageSrc240x240 = new UsanaNewsItemObject({ dataType: 'imageSrc240x240' });\n linkData = new UsanaNewsItemObject({ dataType: 'linkData' });\n title = new UsanaNewsItemObject({ dataType: 'title' });\n ImageAlt?: UsanaNewsItemObject;\n linkType?: UsanaNewsItemObject;\n\n constructor(input: any) {\n for (const item of Object.keys(input)) {\n // if it's a news item we need to set defaults for any missing CMS data\n this[item] = new UsanaNewsItemObject(input[item]);\n }\n return this;\n }\n}\n\nexport class UsanaNewsItemObject implements CmsData {\n // these defaults aren't meaningful, but they are better than undefined\n data = '';\n dataType = '';\n id = 0;\n itemId = '';\n locale = 'en';\n\n constructor(input: any = null) {\n Object.assign(this, input);\n // if there is no thumbnail and the item object is a `imageSrc240x240` add a blank image\n if (this.dataType === 'imageSrc240x240' && this.data === '') {\n this.data = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';\n }\n this.data = this.data === null ? '' : this.data;\n return this;\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CmsItemService {\n getValueFromLinkData(item, key) {\n const linkData = item.data.linkData.data.replace(/\\s/g, '');\n return linkData.split(key).pop().split('\"').shift();\n }\n}\n","
\n
\n

{{ usanaNewsItem.data.title.data }}

\n
\n
\n \n
\n
\n
\n
\n
\n
\n

\n
\n
\n
\n \n
\n
\n
\n

\n
\n \n
\n\n","import { Component, Input, OnDestroy } from '@angular/core';\nimport { AppUser } from '@common/authentication/model/user-profile';\nimport { UserProfileSelectors } from '@common/authentication/state/user-profile.selectors';\nimport { CmsItemModel } from '@common/cms/cms.model';\nimport { Store } from '@ngxs/store';\nimport { SideModalService } from '@shared/side-modal/side-modal.service';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'u-usana-news-modal',\n templateUrl: './usana-news-modal.component.html',\n styleUrls: ['./usana-news-modal.component.scss'],\n})\nexport class UsanaNewsModalComponent implements OnDestroy {\n @Input() usanaNewsItem: CmsItemModel;\n requestAttrs: AppUser;\n\n private stateSubs: Subscription;\n\n constructor(public sideModalService: SideModalService, private store: Store) {\n this.stateSubs = this.store.select(UserProfileSelectors.getUser).subscribe((user: AppUser) => {\n this.requestAttrs = user;\n });\n }\n\n close(): void {\n this.sideModalService.close();\n }\n\n ngOnDestroy(): void {\n if (this.stateSubs) {\n this.stateSubs.unsubscribe();\n delete this.stateSubs;\n }\n }\n}\n","
\n
\n \n
\n
\n \n \n \n

{{ 'hub.usana-news.title' | translate }}

\n
\n \n \n \n
\n \n
\n
\n
{{ usanaNewsItem.data.title.data }}
\n 75 }\"\n [innerHTML]=\"usanaNewsItem.data.summary.data | htmlToPlainText | slice : 0 : 75 | unsafe : 'html'\"\n >

\n
\n
\n
\n
\n
\n {{ 'hub.usana-news.noUsanaNews' | translate }}\n
\n
\n \"loading\n
\n
\n \n\n","import { Component, OnDestroy, OnInit, TemplateRef } from '@angular/core';\nimport { CmsItemService } from '@common/cms/cms-item.service';\nimport { CmsItemModel } from '@common/cms/cms.model';\nimport { LoadCmsItem } from '@common/cms/state/cms.actions';\nimport { CMS_KEY_DATA, CMS_KEY_SITE, CMS_KEY_TARGET, CMS_TARGET, CMS_URL } from '@common/cms/state/cms.constants';\nimport { CmsSelectors } from '@common/cms/state/cms.selectors';\nimport { CmsItemEntry } from '@common/cms/state/cms.state.model';\nimport { USANA_NEWS_ROOT_ID } from '@common/usana-news/usana-news.constants';\nimport { UsanaNewsItem } from '@common/usana-news/usana-news.model';\nimport { Select, Store } from '@ngxs/store';\nimport { SideModalService } from '@shared/side-modal/side-modal.service';\nimport cloneDeep from 'lodash/cloneDeep';\nimport { Observable, Subscription } from 'rxjs';\nimport { delay, map } from 'rxjs/operators';\n\n@Component({\n selector: 'u-usana-news-widget',\n templateUrl: './usana-news-widget.component.html',\n styleUrls: ['./usana-news-widget.component.scss'],\n})\nexport class UsanaNewsWidgetComponent implements OnInit, OnDestroy {\n @Select(CmsSelectors.getCmsItemByIdFn) cmsItemByIdFn$: Observable<(cmsItemId: string) => CmsItemEntry>;\n @Select(CmsSelectors.getCmsItemByIdFn) linkedCmsItemByIdFn$: Observable<(cmsItemId: string) => CmsItemEntry>;\n\n loadingUsanaNews;\n usanaNews: CmsItemModel[];\n usanaNewsModalItem: CmsItemModel;\n subscription = new Subscription();\n cmsItemById$: Observable;\n linkedCmsItemById$: Observable;\n\n constructor(\n private sideModalService: SideModalService,\n private cmsItemService: CmsItemService,\n private store: Store\n ) {}\n\n ngOnInit(): void {\n this.store.dispatch(new LoadCmsItem(USANA_NEWS_ROOT_ID));\n this.getUsanaNews();\n }\n\n getUsanaNews() {\n this.cmsItemById$ = this.cmsItemByIdFn$.pipe(map((lookupFn) => lookupFn(USANA_NEWS_ROOT_ID))).pipe(delay(50));\n this.subscription.add(\n this.cmsItemById$.subscribe((usanaNews) => {\n if (usanaNews) {\n this.loadingUsanaNews = usanaNews.isLoading;\n if (usanaNews.data) {\n this.usanaNews = cloneDeep(usanaNews.data.children.slice(0, 10));\n for (const item of this.usanaNews) {\n // convert each news item to a stricter UsanaNewsItem object that will provide defaults for missing data\n item.data = new UsanaNewsItem(item.data);\n }\n }\n } else {\n this.usanaNews = [];\n this.store.dispatch(new LoadCmsItem(USANA_NEWS_ROOT_ID));\n }\n })\n );\n }\n\n openUsanaNewsDetails(usanaNewsItem, index, bodyTemplate: TemplateRef, headerTemplate: TemplateRef) {\n if (usanaNewsItem.data.linkType.data === 'internal') {\n const childItemId = this.cmsItemService.getValueFromLinkData(usanaNewsItem, CMS_KEY_DATA);\n\n this.store.dispatch(new LoadCmsItem(childItemId)).subscribe(() => {\n this.observeLinkedUsanaNews(childItemId);\n\n if (this.usanaNewsModalItem.type.id === 'usanaNewsItem') {\n this.openUsanaNewsModal(bodyTemplate, headerTemplate);\n } else {\n const itemUrl = CMS_URL + this.usanaNewsModalItem.parent.id;\n this.openUrl(itemUrl, CMS_TARGET.SELF);\n }\n });\n } else if (usanaNewsItem.data.linkType.data === 'none') {\n // do nothing, it is not a link\n } else {\n const itemUrl = this.cmsItemService.getValueFromLinkData(usanaNewsItem, CMS_KEY_SITE);\n const target = this.cmsItemService.getValueFromLinkData(usanaNewsItem, CMS_KEY_TARGET);\n this.openUrl(itemUrl, target);\n }\n }\n\n observeLinkedUsanaNews(childItemId) {\n this.linkedCmsItemById$ = this.linkedCmsItemByIdFn$.pipe(map((lookupFn) => lookupFn(childItemId)));\n this.subscription.add(\n this.linkedCmsItemById$.subscribe((linkedUsanaNews) => {\n if (linkedUsanaNews && linkedUsanaNews.data) {\n this.usanaNewsModalItem = linkedUsanaNews.data.children[0];\n }\n })\n );\n }\n\n openUsanaNewsModal(bodyTemplate: TemplateRef, headerTemplate: TemplateRef) {\n this.sideModalService.open({ bodyTemplate, headerTemplate });\n }\n\n openUrl(itemUrl, target) {\n window.open(itemUrl, target);\n }\n\n trackByIndex(index) {\n return index;\n }\n\n ngOnDestroy(): void {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { QuickLinksModel } from './quick-links.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class QuickLinksService {\n private QUICK_LINKS_ARRAY: QuickLinksModel[] = [];\n\n get quickLinks() {\n return this.QUICK_LINKS_ARRAY;\n }\n\n set quickLinks(quickLinks: QuickLinksModel[]) {\n this.QUICK_LINKS_ARRAY = quickLinks;\n }\n}\n","\n\n","import { Component } from '@angular/core';\nimport { QuickLinksModel } from './quick-links.model';\nimport { QuickLinksService } from './quick-links.service';\n\n@Component({\n selector: 'u-quick-links',\n templateUrl: './quick-links.component.html',\n styleUrls: ['./quick-links.component.scss'],\n})\nexport class QuickLinksComponent {\n constructor(private quickLinksService: QuickLinksService) {}\n\n get quickLinksObj(): QuickLinksModel[] {\n return this.quickLinksService.quickLinks;\n }\n\n trackById(_index: number, quickLink: QuickLinksModel): string {\n return quickLink.id;\n }\n}\n","export class LoadPacesetterWidget {\n static readonly type = '[Pacesetter-Widget] GET PACESETTER WIDGET DATA';\n}\n","import { Injectable } from '@angular/core';\nimport { UserProfileSelectors } from '@common/authentication/state/user-profile.selectors';\nimport { PACESETTER_STATUS_TYPES } from '@common/pacesetter/pacesetter-widget.constants';\nimport { PacesetterWidgetService } from '@common/pacesetter/pacesetter-widget.service';\nimport { LoadPacesetterWidget } from '@common/pacesetter/state/pacesetter-widget.actions';\nimport { PacesetterWidgetStateModel } from '@common/pacesetter/state/pacesetter-widget.model';\nimport { Action, State, StateContext, Store } from '@ngxs/store';\nimport { map } from 'rxjs/operators';\n\n@State({\n name: 'pacesetterWidgetData',\n defaults: {\n pacesetterWidget: null,\n },\n})\n@Injectable()\nexport class PacesetterWidgetState {\n constructor(private pacesetterWidgetService: PacesetterWidgetService, private store: Store) {}\n\n @Action(LoadPacesetterWidget)\n loadPacesetterWidget({ patchState }: StateContext) {\n return this.pacesetterWidgetService.getPacesetterWidgetData(this.locale).pipe(\n map((pacesetterWidget) => {\n if (pacesetterWidget) {\n this.setPacesetterState(pacesetterWidget);\n pacesetterWidget.userName = this.userName;\n patchState({\n pacesetterWidget: pacesetterWidget,\n });\n }\n })\n );\n }\n\n get locale() {\n return this.store.selectSnapshot(UserProfileSelectors.getLocale);\n }\n\n get userName() {\n const userProfile = this.store.selectSnapshot(UserProfileSelectors.getUserProfile);\n if (!!userProfile) {\n return userProfile.user.recognitionName ? userProfile.user.recognitionName : userProfile.user.firstName;\n }\n }\n\n setPacesetterState(pacesetterData) {\n pacesetterData.pacesetter.isFinalizedLife =\n pacesetterData.pacesetter.status === PACESETTER_STATUS_TYPES.FINALIZED_LIFE;\n pacesetterData.platinum.isFinalizedLife = pacesetterData.platinum.status === PACESETTER_STATUS_TYPES.FINALIZED_LIFE;\n\n pacesetterData.pacesetter.isFinalizedAnnual =\n pacesetterData.pacesetter.status === PACESETTER_STATUS_TYPES.FINALIZED_ANNUAL;\n pacesetterData.platinum.isFinalizedAnnual =\n pacesetterData.platinum.status === PACESETTER_STATUS_TYPES.FINALIZED_ANNUAL;\n\n pacesetterData.pacesetter.isFinalized =\n pacesetterData.pacesetter.isFinalizedAnnual || pacesetterData.pacesetter.isFinalizedLife;\n pacesetterData.platinum.isFinalized =\n pacesetterData.platinum.isFinalizedAnnual || pacesetterData.platinum.isFinalizedLife;\n\n pacesetterData.pacesetter.isQualified = pacesetterData.pacesetter.status === PACESETTER_STATUS_TYPES.QUALIFIED;\n pacesetterData.platinum.isQualified = pacesetterData.platinum.status === PACESETTER_STATUS_TYPES.QUALIFIED;\n\n pacesetterData.pacesetter.isInProgress = pacesetterData.pacesetter.status === PACESETTER_STATUS_TYPES.IN_PROGRESS;\n pacesetterData.platinum.isInProgress = pacesetterData.platinum.status === PACESETTER_STATUS_TYPES.IN_PROGRESS;\n\n pacesetterData.pacesetter.isQualPeriodOver = !!pacesetterData.pacesetter.qualPeriodOver;\n pacesetterData.platinum.isQualPeriodOver = !!pacesetterData.platinum.qualPeriodOver;\n\n pacesetterData.pacesetter.isHidden = pacesetterData.pacesetter.status === PACESETTER_STATUS_TYPES.HIDDEN;\n pacesetterData.platinum.isHidden = pacesetterData.platinum.status === PACESETTER_STATUS_TYPES.HIDDEN;\n\n // convert to string so interpolate does not read as false when 0\n pacesetterData.platinum.daysRemaining = String(pacesetterData.platinum.daysRemaining);\n pacesetterData.pacesetter.daysRemaining = String(pacesetterData.pacesetter.daysRemaining);\n }\n}\n","export const PACESETTER_STATUS_TYPES = {\n HIDDEN: 'HIDDEN',\n IN_PROGRESS: 'IN_PROGRESS',\n QUALIFIED: 'QUALIFIED',\n FINALIZED_ANNUAL: 'FINALIZED_ANNUAL',\n FINALIZED_LIFE: 'FINALIZED_LIFE',\n};\n\nexport const IMG_URL = {\n QUALIFIED_OR_FINALIZED: 'assets/images/Fireworks-CellSent-GIF_jif-to-GIF_smaller.gif',\n IN_PROGRESS: 'assets/images/6006_WaytoGo_smalLER.gif',\n};\n\nexport const DAY_REMAINING_TRANSLATION_TAG = {\n DAY: 'dlm.widget.pacesetter.dayRemaining',\n DAYS: 'dlm.widget.pacesetter.daysRemaining',\n};\n","import { PacesetterWidgetStateModel } from '@common/pacesetter/state/pacesetter-widget.model';\nimport { PacesetterWidgetState } from '@common/pacesetter/state/pacesetter-widget.state';\nimport { Selector } from '@ngxs/store';\n\nexport class PacesetterWidgetSelectors {\n @Selector([PacesetterWidgetState])\n public static getPacesetterWidget(state: PacesetterWidgetStateModel) {\n return state.pacesetterWidget;\n }\n}\n","import * as i0 from '@angular/core';\nimport { Component, ChangeDetectionStrategy, Input, Injectable, NgModule } from '@angular/core';\nimport * as i2 from '@angular/common';\nimport { CommonModule } from '@angular/common';\n\nclass BarComponent {\n constructor(el, renderer) {\n this.el = el;\n this.renderer = renderer;\n /** maximum total value of progress element */\n this.max = 100;\n /** current value of progress bar */\n this.value = 0;\n /** if `true` changing value of progress bar will be animated */\n this.animate = false;\n /** If `true`, striped classes are applied */\n this.striped = false;\n /** provide one of the four supported contextual classes: `success`, `info`, `warning`, `danger` */\n this.type = 'info';\n this.percent = 100;\n }\n ngOnChanges(changes) {\n if (changes[\"value\"] || changes[\"max\"]) {\n this.percent = 100 * (Number(changes[\"value\"]?.currentValue || this.value)\n / Number((changes[\"max\"]?.currentValue || this.max) || 100));\n }\n if (changes[\"type\"]) {\n this.applyTypeClasses();\n }\n }\n applyTypeClasses() {\n if (this._prevType) {\n const barTypeClass = `progress-bar-${this._prevType}`;\n const bgClass = `bg-${this._prevType}`;\n this.renderer.removeClass(this.el.nativeElement, barTypeClass);\n this.renderer.removeClass(this.el.nativeElement, bgClass);\n this._prevType = void 0;\n }\n if (this.type) {\n const barTypeClass = `progress-bar-${this.type}`;\n const bgClass = `bg-${this.type}`;\n this.renderer.addClass(this.el.nativeElement, barTypeClass);\n this.renderer.addClass(this.el.nativeElement, bgClass);\n this._prevType = this.type;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.4\", ngImport: i0, type: BarComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.1.4\", type: BarComponent, selector: \"bar\", inputs: { max: \"max\", value: \"value\", animate: \"animate\", striped: \"striped\", type: \"type\" }, host: { attributes: { \"role\": \"progressbar\", \"aria-valuemin\": \"0\" }, properties: { \"class.progress-bar\": \"true\", \"class.progress-bar-animated\": \"animate\", \"class.progress-bar-striped\": \"striped\", \"attr.aria-valuenow\": \"value\", \"attr.aria-valuetext\": \"percent ? percent.toFixed(0) + \\\"%\\\" : \\\"\\\"\", \"attr.aria-valuemax\": \"max\", \"style.height.%\": \"\\\"100\\\"\", \"style.width.%\": \"percent\" } }, usesOnChanges: true, ngImport: i0, template: \"\\n\", changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.4\", ngImport: i0, type: BarComponent, decorators: [{\n type: Component,\n args: [{ selector: 'bar', changeDetection: ChangeDetectionStrategy.OnPush, host: {\n role: 'progressbar',\n 'aria-valuemin': '0',\n '[class.progress-bar]': 'true',\n '[class.progress-bar-animated]': 'animate',\n '[class.progress-bar-striped]': 'striped',\n '[attr.aria-valuenow]': 'value',\n '[attr.aria-valuetext]': 'percent ? percent.toFixed(0) + \"%\" : \"\"',\n '[attr.aria-valuemax]': 'max',\n '[style.height.%]': '\"100\"',\n '[style.width.%]': 'percent'\n }, template: \"\\n\" }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { max: [{\n type: Input\n }], value: [{\n type: Input\n }], animate: [{\n type: Input\n }], striped: [{\n type: Input\n }], type: [{\n type: Input\n }] } });\n\nclass ProgressbarConfig {\n constructor() {\n /** if `true` changing value of progress bar will be animated */\n this.animate = false;\n /** maximum total value of progress element */\n this.max = 100;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.4\", ngImport: i0, type: ProgressbarConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.4\", ngImport: i0, type: ProgressbarConfig, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.4\", ngImport: i0, type: ProgressbarConfig, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }] });\n\nclass ProgressbarComponent {\n /** current value of progress bar. Could be a number or array of objects\n * like {\"value\":15,\"type\":\"info\",\"label\":\"15 %\"}\n */\n set value(value) {\n this.isStacked = Array.isArray(value);\n if (typeof value === 'number') {\n this._value = value;\n this._values = void 0;\n }\n else {\n this._value = void 0;\n this._values = value;\n }\n }\n constructor(config) {\n /** maximum total value of progress element */\n this.max = 100;\n /** if `true` changing value of progress bar will be animated */\n this.animate = false;\n /** If `true`, striped classes are applied */\n this.striped = false;\n this.isStacked = false;\n this._value = 0;\n Object.assign(this, config);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.4\", ngImport: i0, type: ProgressbarComponent, deps: [{ token: ProgressbarConfig }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.1.4\", type: ProgressbarComponent, selector: \"progressbar\", inputs: { max: \"max\", animate: \"animate\", striped: \"striped\", type: \"type\", value: \"value\" }, host: { properties: { \"class.progress\": \"true\", \"attr.max\": \"max\" } }, ngImport: i0, template: \"\\n\\n\\n \\n \\n \\n\\n\\n\\n {{ item.label }}\\n\\n\", styles: [\":host{width:100%;display:flex}\\n\"], dependencies: [{ kind: \"directive\", type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"component\", type: BarComponent, selector: \"bar\", inputs: [\"max\", \"value\", \"animate\", \"striped\", \"type\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.4\", ngImport: i0, type: ProgressbarComponent, decorators: [{\n type: Component,\n args: [{ selector: 'progressbar', changeDetection: ChangeDetectionStrategy.OnPush, host: {\n '[class.progress]': 'true',\n '[attr.max]': 'max'\n }, template: \"\\n\\n\\n \\n \\n \\n\\n\\n\\n {{ item.label }}\\n\\n\", styles: [\":host{width:100%;display:flex}\\n\"] }]\n }], ctorParameters: function () { return [{ type: ProgressbarConfig }]; }, propDecorators: { max: [{\n type: Input\n }], animate: [{\n type: Input\n }], striped: [{\n type: Input\n }], type: [{\n type: Input\n }], value: [{\n type: Input\n }] } });\n\nclass ProgressbarModule {\n static forRoot() {\n return { ngModule: ProgressbarModule, providers: [] };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.4\", ngImport: i0, type: ProgressbarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.1.4\", ngImport: i0, type: ProgressbarModule, declarations: [BarComponent, ProgressbarComponent], imports: [CommonModule], exports: [BarComponent, ProgressbarComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.1.4\", ngImport: i0, type: ProgressbarModule, imports: [CommonModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.4\", ngImport: i0, type: ProgressbarModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n declarations: [BarComponent, ProgressbarComponent],\n exports: [BarComponent, ProgressbarComponent]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BarComponent, ProgressbarComponent, ProgressbarConfig, ProgressbarModule };\n","
\n
\n
\n
\n
\n
\n {{ 'dlm.widget.pacesetter.title' | translate }}\n
\n \n
\n
\n
\n
\n
\n
\n\n
\n
\n
\n
\n \n {{ 'dlm.widget.pacesetter.tab.pacesetter' | translate }}\n
\n \n {{ 'dlm.widget.pacesetter.tab.platinum' | translate }}\n
\n
\n
\n
\n\n \n
\n
\n
\n
\n \n
\n
\n
\n \n {{ 'dlm.widget.pacesetter.qualifyBy' | translate }}\n
\n
\n \n {{ pacesetterData.pacesetter.endDate | fullDateTimeWithTimezone }}\n \n \n \n \n {{ 'dlm.widget.pacesetter.qualificationIsFinalized' | translate }}\n \n \n \n \n {{ 'dlm.widget.pacesetter.qualificationIsQualified' | translate }}\n \n \n {{ 'dlm.widget.pacesetter.qualPeriodOver' | translate }}\n \n
\n \n {{\n getDaysRemainingTranslation(pacesetterData.pacesetter)\n | translate\n | interpolate : { daysRemaining: pacesetterData.pacesetter.daysRemaining }\n }}\n
\n
\n
\n
\n
\n\n
\n
\n
\n
\n
\n \n \n
\n {{ 'dlm.widget.pacesetter.volumePointsProgress' | translate }}\n
\n
\n
\n
\n
\n
\n {{ pacesetterData.pacesetter.totalVolume }}/{{ pacesetterData.pacesetter.requiredVolume }}\n
\n \n
\n
\n
\n\n
\n
\n
\n
\n \n
\n {{ 'dlm.widget.pacesetter.teamMembersRecruited' | translate }}\n
\n
\n
\n
\n
\n \n \n \n
\n
\n
\n
\n
\n\n
\n
\n {{\n 'dlm.widget.pacesetter.inProgressOnYourWay' | translate\n }}\n {{\n 'dlm.widget.pacesetter.qualifiedYouDidIt'\n | translate\n | interpolate : { username: pacesetterData.userName }\n }}\n {{\n 'dlm.widget.pacesetter.finalizedAnnualCongratulations'\n | translate\n | interpolate : { username: pacesetterData.userName }\n }}\n {{\n 'dlm.widget.pacesetter.finalizedLifeCongratulations'\n | translate\n | interpolate : { username: pacesetterData.userName }\n }}\n
\n
\n
\n\n \n
\n
\n
\n
\n \n
\n
\n
\n \n {{ 'dlm.widget.pacesetter.qualifyBy' | translate }}\n
\n
\n {{ pacesetterData.platinum.endDate | fullDateTimeWithTimezone }}\n \n \n \n \n \n {{ 'dlm.widget.pacesetter.qualificationIsFinalized' | translate }}\n \n \n \n \n \n {{ 'dlm.widget.pacesetter.qualificationIsQualified' | translate }}\n \n \n {{ 'dlm.widget.pacesetter.qualPeriodOver' | translate }}\n \n
\n \n {{\n getDaysRemainingTranslation(pacesetterData.platinum)\n | translate\n | interpolate : { daysRemaining: pacesetterData.platinum.daysRemaining }\n }}\n
\n
\n
\n
\n
\n\n
\n
\n
\n
\n
\n \n \n
\n {{ 'dlm.widget.pacesetter.volumePointsProgress' | translate }}\n
\n\n
\n
\n
\n
\n
\n {{ pacesetterData.platinum.totalVolume }}/{{ pacesetterData.platinum.requiredVolume }}\n
\n \n \n
\n
\n
\n\n
\n
\n
\n
\n \n
\n {{ 'dlm.widget.pacesetter.teamMembersRecruited' | translate }}\n
\n
\n
\n
\n
\n \n \n \n
\n
\n
\n
\n
\n\n
\n
\n {{\n 'dlm.widget.platinum.inProgressOnYourWay' | translate\n }}\n {{\n 'dlm.widget.platinum.qualifiedYouDidIt' | translate | interpolate : { username: pacesetterData.userName }\n }}\n {{\n 'dlm.widget.platinum.finalizedAnnualCongratulations'\n | translate\n | interpolate : { username: pacesetterData.userName }\n }}\n {{\n 'dlm.widget.platinum.finalizedLifeCongratulations'\n | translate\n | interpolate : { username: pacesetterData.userName }\n }}\n
\n
\n
\n\n
\n
\n

{{ 'dlm.widget.platinum.notEligibleMsg' | translate }}

\n
\n
\n \n \n\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { DAY_REMAINING_TRANSLATION_TAG, IMG_URL } from '@common/pacesetter/pacesetter-widget.constants';\nimport { PacesetterWidgetModel } from '@common/pacesetter/pacesetter-widget.model';\nimport { LoadPacesetterWidget } from '@common/pacesetter/state/pacesetter-widget.actions';\nimport { PacesetterWidgetSelectors } from '@common/pacesetter/state/pacesetter-widget.selectors';\nimport { faCircleCheck, faInfoCircle, faUser } from '@fortawesome/pro-solid-svg-icons';\nimport { Select, Store } from '@ngxs/store';\nimport { Observable, Subscription } from 'rxjs';\n\n@Component({\n selector: 'u-pacesetter-widget',\n templateUrl: './pacesetter-widget.component.html',\n styleUrls: ['./pacesetter-widget.component.scss'],\n})\nexport class PacesetterWidgetComponent implements OnInit, OnDestroy {\n readonly INFO_CIRCLE_ICON = faInfoCircle;\n readonly USER_ICON = faUser;\n readonly CIRCLE_CHECK_ICON = faCircleCheck;\n\n @Select(PacesetterWidgetSelectors.getPacesetterWidget) pacesetter$: Observable;\n\n isWidgetHidden = true;\n pacesetterData: PacesetterWidgetModel;\n showPacesetterTab: boolean;\n showPlatinumTab: boolean;\n subscription: Subscription;\n\n constructor(private store: Store) {}\n\n ngOnInit(): void {\n this.store.dispatch(new LoadPacesetterWidget()).subscribe(() => {\n this.pacesetterData = this.store.selectSnapshot(PacesetterWidgetSelectors.getPacesetterWidget);\n if (this.pacesetterData) {\n this.showPacesetterTab = this.pacesetterData.pacesetter.defaultTo;\n this.showPlatinumTab = this.pacesetterData.platinum.defaultTo;\n this.isWidgetHidden = this.pacesetterData.pacesetter.isHidden && this.pacesetterData.platinum.isHidden;\n }\n });\n }\n\n switchPaceSetterView(id) {\n if (id === 'pacesetter') {\n this.showPlatinumTab = false;\n this.showPacesetterTab = true;\n } else {\n this.showPlatinumTab = true;\n this.showPacesetterTab = false;\n }\n }\n\n changePeopleBlue(index, numberSponsored) {\n return index < numberSponsored;\n }\n\n imgPicker(pacesetterType) {\n if (pacesetterType.isFinalized || pacesetterType.isQualified) {\n return IMG_URL.QUALIFIED_OR_FINALIZED;\n }\n if (pacesetterType.isInProgress) {\n return IMG_URL.IN_PROGRESS;\n }\n }\n\n getDaysRemainingTranslation(pacesetterType) {\n if (pacesetterType.daysRemaining === 1) {\n return DAY_REMAINING_TRANSLATION_TAG.DAY;\n } else {\n return DAY_REMAINING_TRANSLATION_TAG.DAYS;\n }\n }\n\n trackByIndex(index) {\n return index;\n }\n\n ngOnDestroy(): void {\n if (!!this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n}\n","import { Selector } from '@ngxs/store';\nimport { AppState } from './app.state';\nimport { AppStateModel } from './app.state.model';\n\nexport class AppSelectors {\n @Selector([AppState])\n static getIsLoading(state: AppStateModel) {\n return state.isLoading;\n }\n\n @Selector([AppState])\n static getSupportedMarkets(state: AppStateModel) {\n return state.supportedMarkets;\n }\n\n @Selector([AppState])\n static getImportantDates(state: AppStateModel) {\n return state.importantDates;\n }\n}\n","
\n \n \n
\n \n \n
\n {{ 'hub.home.importantDates.' + key | translate }} {{ importantDates[key] | usanaDate : 'mediumDate' }}\n
\n \n \n\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { Store } from '@ngxs/store';\nimport { Subscription } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { AppSelectors } from '../../../usana/src/app/state/app.selectors';\n\n@Component({\n selector: 'u-important-dates',\n templateUrl: './important-dates.component.html',\n styleUrls: ['./important-dates.component.scss'],\n})\nexport class ImportantDatesComponent implements OnInit, OnDestroy {\n importantDates: any;\n importantDateKeys: string[] = [];\n subscription = new Subscription();\n\n constructor(private store: Store) {}\n\n ngOnInit() {\n this.observeImportantDates();\n }\n\n observeImportantDates() {\n this.subscription = this.store\n .select(AppSelectors.getImportantDates)\n .pipe(\n map((importantDates) => {\n if (importantDates) {\n this.importantDates = importantDates;\n this.importantDateKeys = Object.keys(importantDates);\n }\n })\n )\n .subscribe();\n }\n\n ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n\n trackByImportantDateKey(index, key) {\n return key;\n }\n}\n","import { FpvWidgetTagsModel } from '@common/fpv-widget/fpvWidgetTags.model';\n\nexport const BAOYING_FPV_WIDGET_TAGS: FpvWidgetTagsModel = {\n fpvWidgetTitleTag: 'baoying.fpv.widget.title',\n totalFpvLabelTag: 'baoying.fpv.widget.total.points.label',\n expiresLabelTag: 'baoying.fpv.widget.expires.label',\n expiresSoonLabelTag: 'baoying.fpv.widget.expires-soon.label',\n pointsLabelTag: 'baoying.fpv.widget.points.label',\n errorLoadingTag: 'baoying.fpv.widget.no-points.label',\n imageTag: 'baoying.fpv.widget.image',\n cartUrlTag: 'baoying.fpv.cart.url',\n};\n","\n
\n
0\">\n
\n
\n
\n
\n \n
\n
\n
\n
\n {{ fpvWidgetTags.totalFpvLabelTag | translate }}\n
\n
\n
\n {{\n fpvWidgetTags.pointsLabelTag\n ? fpvReport.summary.totalAvailable\n : (fpvReport.summary.totalAvailable | currency : fpvReport.summary.currencyCode : 'symbol-narrow')\n }}\n
\n
\n
\n
\n
\n\n \n
\n
\n
0)\">\n
\n

\n {{ fpvWidgetTags.errorLoadingTag | translate }}\n

\n
\n
\n
\n \n
\n \n
\n","import { Component, Input } from '@angular/core';\nimport { FpvWidgetTagsModel } from '@common/fpv-widget/fpvWidgetTags.model';\nimport { FPVReportModel } from '@common/reports/reports.model';\n\n@Component({\n selector: 'u-fpv-widget',\n templateUrl: './fpv-widget.component.html',\n styleUrls: ['./fpv-widget.component.scss'],\n})\nexport class FpvWidgetComponent {\n @Input() fpvReport: FPVReportModel;\n @Input() loadingFpvReport;\n @Input() fpvWidgetTags: FpvWidgetTagsModel;\n\n trackByIndex(index) {\n return index;\n }\n}\n","
\n
\n \n
\n
\n","import { Component, OnInit } from '@angular/core';\nimport { LoadFpvReport } from '@common/fpv-widget/state/fpv-report.actions';\nimport { FpvReportModel } from '@common/fpv-widget/state/fpv-report.model';\nimport { FpvReportSelectors } from '@common/fpv-widget/state/fpv-report.selectors';\nimport { ActionsExecuting, actionsExecuting } from '@ngxs-labs/actions-executing';\nimport { Select, Store } from '@ngxs/store';\nimport { Observable } from 'rxjs';\nimport { BAOYING_FPV_WIDGET_TAGS } from '../../constants/baoying-fpv-widget.constants';\n\n@Component({\n selector: 'u-baoying-fpv-widget',\n templateUrl: './baoying-fpv-widget.component.html',\n styleUrls: ['./baoying-fpv-widget.component.scss'],\n})\nexport class BaoyingFpvWidgetComponent implements OnInit {\n @Select(FpvReportSelectors.getFpvReport) fpvReport$: Observable;\n @Select(actionsExecuting([LoadFpvReport])) loadFpvReport$: Observable;\n\n readonly baoyingFpvWidgetTags = BAOYING_FPV_WIDGET_TAGS;\n\n constructor(private store: Store) {}\n\n ngOnInit() {\n this.store.dispatch(new LoadFpvReport());\n }\n}\n","import { ChartData, ChartOptions, ChartType } from 'chart.js';\n\nexport const BAOYING_VOLUME_LABEL = ['01', '03', '04', '02'];\n\nexport const CHART_OPTIONS: ChartOptions = {\n responsive: true,\n maintainAspectRatio: false,\n layout: {\n padding: {\n left: 10,\n right: 10,\n top: 30,\n bottom: 0,\n },\n },\n scales: {\n x: {\n beginAtZero: true,\n ticks: {\n display: true,\n },\n grid: {\n display: false,\n },\n },\n y: {\n beginAtZero: true,\n min: 0,\n max: 5000,\n ticks: {\n stepSize: 1000,\n },\n },\n },\n};\n\nexport const BAOYING_BAR_CHART_DATA: ChartData = {\n labels: ['01', '03', '04', '02'],\n datasets: [\n {\n data: [],\n label: 'dlm.dlmReports.volume',\n maxBarThickness: 10,\n backgroundColor: '#979797',\n borderColor: '#979797',\n hoverBackgroundColor: '#979797',\n hoverBorderColor: '#979797',\n borderWidth: 1,\n },\n {\n data: [],\n label: 'dlm.dlmReports.carryover',\n backgroundColor: '#408FDE',\n borderColor: '#408FDE',\n maxBarThickness: 10,\n hoverBackgroundColor: '#408FDE',\n hoverBorderColor: '#408FDE',\n borderWidth: 1,\n },\n ],\n};\n\nexport const TITLE_TAG: string = 'hub.home.volume-report';\n","import { Type } from '@angular/core';\nimport { DataView } from '@shared/data-view/data-view.model';\nimport { DataViewTypes } from '@shared/data-view/data-view.types';\n\nexport const USANA_DATA_VIEWS: { [key: string]: Type } = {};\n\nexport const DataViewer = (name: DataViewTypes) => (component) => DataViewerComponent(name, component);\n\n// eslint-disable-next-line prefer-arrow/prefer-arrow-functions\nexport function DataViewerComponent(name: DataViewTypes, component: any): boolean {\n const existed = !!USANA_DATA_VIEWS[name];\n USANA_DATA_VIEWS[name] = component;\n return existed;\n}\n","import {\n AfterViewInit,\n Component,\n ComponentFactoryResolver,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { USANA_DATA_VIEWS } from '@shared/data-view/data-view.decorator';\nimport { DataView } from '@shared/data-view/data-view.model';\nimport { DataViewTypes } from '@shared/data-view/data-view.types';\n\n@Component({\n selector: 'u-data-view',\n templateUrl: './data-view.component.html',\n styleUrls: ['./data-view.component.scss'],\n})\nexport class DataViewComponent implements AfterViewInit, OnChanges, DataView {\n @ViewChild('dataViewEl', { read: ViewContainerRef, static: false }) dataView: ViewContainerRef;\n @Input() name: DataViewTypes;\n @Input() metadata: any;\n @Input() data: any;\n\n @Output() readonly paginate = new EventEmitter();\n\n componentInstance: DataView;\n\n constructor(private componentFactoryResolver: ComponentFactoryResolver) {}\n\n ngAfterViewInit(): void {\n this.renderDataView();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if ((changes.metadata || changes.data) && this.componentInstance) {\n this.setMetadata(this.metadata);\n this.setData(this.data);\n }\n }\n\n renderDataView() {\n const componentClass = USANA_DATA_VIEWS[this.name];\n if (componentClass) {\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(componentClass);\n this.dataView.clear();\n this.componentInstance = this.dataView.createComponent(componentFactory).instance;\n this.componentInstance.data = this.data;\n this.componentInstance.metadata = this.metadata;\n this.componentInstance.paginate.subscribe((pageNum) => this.paginate.emit(pageNum));\n } else {\n console.log('NO DATA VIEW FOUND WITH NAME:' + this.name, +' , PLEASE PROVIDE A VALID NAME');\n }\n }\n\n setData(data: any): void {\n this.componentInstance.setData(data);\n }\n\n setMetadata(metadata: any): void {\n this.componentInstance.setMetadata(metadata);\n }\n}\n","
\n","
\n \n
\n
\n
\n \n <\n \n {{ 'babycare.hub.parentCenter' | translate }}\n {{ 'babycare.hub.childCenter' | translate }}{{ volume[2].v }}\n \n >\n \n
\n
\n

{{ 'hub.dlm.widget.no-volume' | translate }}

\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ 'dlm-3087' | translate }}{{ volume[12].v | number : '1.2-2' }}{{ volume[15].v | number : '1.2-2' }}{{ volume[14].v | number : '1.2-2' }}{{ volume[13].v | number : '1.2-2' }}
{{ 'dlm.dlmReports.volume' | translate }}{{ volume[4].v | number : '1.2-2' }}{{ volume[7].v | number : '1.2-2' }}{{ volume[6].v | number : '1.2-2' }}{{ volume[5].v | number : '1.2-2' }}
\n {{ 'dlm.dlmReports.carryover' | translate }}\n {{ volume[8].v | number : '1.2-2' }}{{ volume[11].v | number : '1.2-2' }}{{ volume[10].v | number : '1.2-2' }}{{ volume[9].v | number : '1.2-2' }}
\n
\n \n
\n
\n
\n
\n

{{ 'hub.dlm.widget.error-loading' | translate }}

\n
\n\n
\n \n
\n
\n
\n","import { DatePipe } from '@angular/common';\nimport { Component, OnDestroy, OnInit } from '@angular/core';\nimport { FPVReportModel } from '@common/reports/reports.model';\nimport { TranslationService } from '@common/translation/translation.service';\nimport { ActionsExecuting, actionsExecuting } from '@ngxs-labs/actions-executing';\nimport { Select, Store } from '@ngxs/store';\nimport { DataViewTypes } from '@shared/data-view/data-view.types';\nimport { SelectOption } from '@usana/ux/universal-components';\nimport { WidgetData } from '@usana/ux/widget';\nimport { ChartData } from 'chart.js';\nimport { Observable, Subscription } from 'rxjs';\nimport {\n LoadBaoyingVolumeReport,\n LoadCommissionWeeks,\n SetCommissionWeek,\n} from '../state/baoying-volume-report.actions';\nimport { BaoyingVolumeReportSelectors } from '../state/baoying-volume-report.selectors';\nimport { BAOYING_BAR_CHART_DATA, CHART_OPTIONS, TITLE_TAG } from './baoying-volume-widget.constants';\n\n@Component({\n selector: 'u-baoying-volume-widget',\n templateUrl: './baoying-volume-widget.component.html',\n styleUrls: ['./baoying-volume-widget.component.scss'],\n})\nexport class BaoyingVolumeWidgetComponent implements OnInit, OnDestroy {\n @Select(actionsExecuting([LoadBaoyingVolumeReport])) loadBaoyingVolumeReport$: Observable;\n\n volumeReport: FPVReportModel;\n hasError;\n\n barChartData: ChartData = BAOYING_BAR_CHART_DATA;\n metadata;\n volume;\n hasVolumeToShow: boolean;\n commissionWeeks: SelectOption[] = [];\n\n readonly dataViewName: DataViewTypes = 'stackedBar';\n\n private volumeIndex: number;\n private volumeReportSub: Subscription;\n\n constructor(private store: Store, private translateService: TranslationService) {}\n\n ngOnInit(): void {\n this.loadWidgetData();\n this.getLabelTranslation(0);\n this.getLabelTranslation(1);\n }\n\n get title(): string {\n return this.translateService.getTranslationForFilter(TITLE_TAG);\n }\n\n loadWidgetData(): void {\n this.store.dispatch(new LoadCommissionWeeks()).subscribe(\n () => {\n this.store.dispatch(new LoadBaoyingVolumeReport()).subscribe(\n () => {\n this.volumeReportSub = this.store\n .select(BaoyingVolumeReportSelectors.getVolume)\n .subscribe((volumeReport) => {\n if (volumeReport) {\n this.volumeReport = volumeReport;\n this.volumeIndex = 0;\n this.buildVolumeChartData();\n }\n });\n this.mapCommissionWeeksSelect();\n },\n (error): void => {\n this.hasError = error;\n }\n );\n },\n (error): void => {\n this.hasError = error;\n }\n );\n }\n\n mapCommissionWeeksSelect(): void {\n this.volumeReportSub = this.store\n .select(BaoyingVolumeReportSelectors.getCommissionWeeks)\n .subscribe((commissionWeeks: number[]): void => {\n if (commissionWeeks) {\n const typeList = [];\n for (const commissionWeek of commissionWeeks) {\n typeList.push({\n key: commissionWeek,\n value: new DatePipe('zh_CN').transform(commissionWeek, 'mediumDate'),\n });\n }\n this.commissionWeeks = typeList;\n }\n });\n }\n\n moveVolume(amountToChange: number): void {\n if (this.validNewIndex(amountToChange)) {\n this.volumeIndex = this.volumeIndex + amountToChange;\n this.buildVolumeChartData();\n }\n }\n\n validNewIndex(amountToChange: number): boolean {\n return this.volumeReport && !!this.volumeReport.document[this.volumeIndex + amountToChange];\n }\n\n private buildVolumeChartData(): void {\n this.volume = this.volumeReport.document[this.volumeIndex];\n this.barChartData.datasets[0].data = [this.volume[4].v, this.volume[7].v, this.volume[6].v, this.volume[5].v];\n this.barChartData.datasets[1].data = [this.volume[8].v, this.volume[11].v, this.volume[10].v, this.volume[9].v];\n\n this.barChartData.datasets = [].concat(this.barChartData.datasets);\n this.hasVolumeToShow = !(\n !this.volume[4].v &&\n !this.volume[7].v &&\n !this.volume[6].v &&\n !this.volume[5].v &&\n !this.volume[8].v &&\n !this.volume[11].v &&\n !this.volume[10].v &&\n !this.volume[9].v\n );\n\n this.metadata = {\n options: CHART_OPTIONS,\n hasNextPage: false,\n filterValues: [],\n };\n }\n\n private getLabelTranslation(index: number): void {\n this.translateService.getTranslationPromise(this.barChartData.datasets[index].label).then((translation) => {\n this.barChartData.datasets[index].label = translation.value;\n });\n }\n\n changeCommissionWeek(commissionWeek: number): void {\n this.store.dispatch(new SetCommissionWeek(commissionWeek));\n }\n\n getWidgetData(): WidgetData {\n return {\n title: this.title,\n selectOptions: {\n selectMenuItems: this.commissionWeeks,\n callbackFunction: (arg: number): void => {\n this.changeCommissionWeek(arg);\n },\n },\n };\n }\n\n ngOnDestroy(): void {\n if (this.volumeReportSub) {\n this.volumeReportSub.unsubscribe();\n }\n }\n}\n","
\n
\n
\n
\n {{\n 'hub.home.welcomeMessage' | translate | interpolate : this\n }}\n
\n
\n
\n \n
\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n \n
\n
\n
\n \n \n \n
\n
\n \n
\n
\n
\n","import { AfterViewInit, Component, OnDestroy } from '@angular/core';\nimport { AppUser, UserProfile } from '@common/authentication/model/user-profile';\nimport { UserProfileSelectors } from '@common/authentication/state/user-profile.selectors';\nimport { NavigationSelectors } from '@common/navigation/state/navigation.selectors';\nimport { Notification } from '@common/notifications/notification.model';\nimport { NotificationSelectors } from '@common/notifications/state/notification.selectors';\nimport { Select, Store } from '@ngxs/store';\nimport { ModalOptions } from 'ngx-bootstrap/modal';\nimport { Observable, Subject, Subscription, takeUntil } from 'rxjs';\nimport { PopupModalService } from '../../../../../../shared/src/popup-modal/popup-modal.service';\nimport { PcBlockedModalComponent } from './pc-blocked-modal/pc-blocked-modal.component';\n\n@Component({\n selector: 'u-home-page',\n templateUrl: './baoying-home-page.component.html',\n styleUrls: ['./baoying-home-page.component.scss'],\n})\n// NOTE: see UsanaHomePageComponent for usana version.\nexport class BaoyingHomePageComponent implements AfterViewInit, OnDestroy {\n // normally I would so a @Select async like we do with everything else\n // but because this component contains a interpolate translation\n // that makes this difficult\n requestAttrs: UserProfile;\n\n @Select(NotificationSelectors.getCurrentNotifications) notifications$: Observable;\n // pull this in so we can have a smooth scrolling experience.\n @Select(NavigationSelectors.getNavRenderOffset) navOffset$: Observable;\n private stateSubs: Subscription;\n\n destroy$ = new Subject();\n\n constructor(private store: Store, private popupModalService: PopupModalService) {}\n\n ngAfterViewInit(): void {\n this.stateSubs = this.store\n .select(UserProfileSelectors.getUserProfile)\n .pipe(takeUntil(this.destroy$))\n .subscribe((userProfile: UserProfile) => {\n this.requestAttrs = userProfile;\n\n this.blockIfPc(userProfile?.user);\n });\n }\n\n blockIfPc(user: AppUser): void {\n if (user?.pc) {\n const pcBlockedModalOptions: ModalOptions = {\n ignoreBackdropClick: true,\n keyboard: false,\n };\n\n // by entering the URL of another route, the user can trigger a reload which closes the modal.\n // if the modal closes for any reason, reopen it.\n this.popupModalService\n .openModalWithComponent(PcBlockedModalComponent, pcBlockedModalOptions)\n .onHide.pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n this.blockIfPc(user);\n });\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { LoginComponent } from '../../../common/src/authentication/components/login/login.component';\nimport { CmsUsanaNewsLandingComponent } from '../../../common/src/cms/news/usana-news-landing.component';\nimport { CmsPageComponent } from '../../../common/src/cms/page/cms-page.component';\nimport { Error401Component } from '../../../common/src/error-pages/error401.component';\nimport { Error404Component } from '../../../common/src/error-pages/error404.component';\nimport { NotificationDashboardComponent } from '../../../common/src/notifications/notification-dashboard/notification-dashboard.component';\nimport { NotificationSettingsContainerComponent } from '../../../common/src/notifications/notification-settings/notification-settings-container/notification-settings-container.component';\nimport { NotificationSingleItemComponent } from '../../../common/src/notifications/notification-single-item/notification-single-item.component';\nimport { userProfileResolverFn } from '../../../common/src/resolvers/user-profile.resolver';\nimport { BaoyingFpvReportComponent } from './baoying-fpv/baoying-fpv-report/baoying-fpv-report.component';\nimport { BaoyingUplineLeaderReportComponent } from './baoying-upline-leader-report/baoying-upline-leader-report/baoying-upline-leader-report.component';\nimport { BaoyingVolumeReportComponent } from './baoying-volume/baoying-volume-report/baoying-volume-report.component';\nimport { nonPcOnlyCanActivate } from './guards/non-pc-only.activate';\nimport { BaoyingHomePageComponent } from './pages/home-page/baoying-home-page/baoying-home-page.component';\n\nconst routes: Routes = [\n {\n path: '',\n pathMatch: 'full',\n redirectTo: 'home',\n },\n {\n path: 'home',\n component: BaoyingHomePageComponent,\n },\n {\n path: 'login',\n component: LoginComponent,\n data: {\n anonAllowed: true,\n },\n },\n {\n path: '',\n canActivate: [nonPcOnlyCanActivate],\n children: [\n {\n path: 'content',\n children: [\n {\n component: CmsPageComponent,\n path: '**',\n },\n ],\n },\n {\n path: 'usanaNews',\n component: CmsUsanaNewsLandingComponent,\n },\n {\n path: 'notification',\n component: NotificationDashboardComponent,\n },\n {\n path: 'notification/settings',\n component: NotificationSettingsContainerComponent,\n resolve: { userProfile: userProfileResolverFn },\n },\n {\n path: 'notification/single',\n component: NotificationSingleItemComponent,\n },\n {\n path: 'Main',\n loadChildren: () =>\n import('../../../shared/src/purple-pages/purple-pages.module').then((m) => m.PurplePagesModule),\n },\n {\n path: 'baoyingVolume',\n component: BaoyingVolumeReportComponent,\n },\n {\n path: 'baoyingFPV',\n component: BaoyingFpvReportComponent,\n },\n {\n path: 'baoyingAboutMe',\n loadChildren: () => import('./baoying-about-me/baoying-about-me.module').then((m) => m.BaoyingAboutMeModule),\n },\n {\n path: 'uplineLeaderPlacementReport',\n component: BaoyingUplineLeaderReportComponent,\n resolve: { userProfile: userProfileResolverFn },\n },\n {\n path: 'imageUpload',\n loadChildren: () =>\n import('../../../common/src/image-upload/image-upload.module').then((m) => m.ImageUploadModule),\n },\n {\n path: '404',\n component: Error404Component,\n },\n {\n path: '401',\n component: Error401Component,\n },\n ],\n },\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes, { useHash: true })],\n exports: [RouterModule],\n})\nexport class BaoyingAppHubRoutingModule {}\n","import { inject } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivateFn, Router, RouterStateSnapshot } from '@angular/router';\nimport { Store } from '@ngxs/store';\nimport { filter, map, tap } from 'rxjs/operators';\nimport { UserProfileSelectors } from '../../../../common/src/authentication/state/user-profile.selectors';\n\nexport const nonPcOnlyCanActivate: CanActivateFn = (_route: ActivatedRouteSnapshot, _state: RouterStateSnapshot) => {\n const store = inject(Store);\n const router = inject(Router);\n\n return store.select(UserProfileSelectors.getUserProfile).pipe(\n filter((userProfile) => !!userProfile),\n map((userProfile) => userProfile?.user && !userProfile.user.pc),\n tap((canActivate) => {\n if (!canActivate) {\n router.navigate(['/home']);\n }\n })\n );\n};\n","import { Injectable } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport { TranslationService } from '../translation/translation.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PageTitleService {\n private readonly PAGE_TITLE_TAG = 'hub.title.display';\n\n constructor(private titleService: Title, private translationService: TranslationService) {}\n\n setTitle(): void {\n this.translationService.getTranslationPromise(this.PAGE_TITLE_TAG).then((translation) => {\n if (translation?.value) {\n this.titleService.setTitle(translation.value);\n }\n });\n }\n}\n","import { MyAccountListModel } from '@common/my-account/my-account.model';\n\nexport const BAOYING_MY_ACCOUNT_LIST: Array = [\n {\n id: 'aboutMe',\n url: '/hub/#/baoyingAboutMe',\n translationTag: 'hub.baoyingAboutMe',\n target: '',\n hideForPc: false,\n hideForCountries: [],\n },\n {\n id: 'profileManager',\n url: '/frame/shopSecureForward.jsp?url=profile',\n translationTag: 'hub.profileManager',\n target: '_blank',\n hideForPc: false,\n hideForCountries: [],\n },\n {\n id: 'myOrders',\n url: '/ux/mall/#/customer/orderHistory?source=HUB',\n translationTag: 'hub.myOrders',\n target: '_blank',\n hideForPc: false,\n hideForCountries: [],\n },\n];\n","import { faFileAlt, faFileChartLine, faShoppingCart, faUndoAlt, faUserPlus } from '@fortawesome/pro-solid-svg-icons';\nimport { QuickLinksModel } from '@shared/quick-links/quick-links.model';\n\nexport const BAOYING_QUICK_LINKS_DATA: Array = [\n {\n id: 'enroll',\n url: '/frame/shopSecureForward.jsp?url=oe',\n addUserToken: false,\n target: '_blank',\n fontAwesomeIcons: faUserPlus,\n translationTag: 'hub.home.enroll',\n orderBy: 1,\n },\n {\n id: 'shop',\n url: '/ux/mall/#/home?source=HUB',\n addUserToken: false,\n target: '_blank',\n fontAwesomeIcons: faShoppingCart,\n translationTag: 'hub.home.shop',\n orderBy: 2,\n },\n {\n id: 'myAutoOrders',\n url: '/ux/mall/#/customer/autoOrder?source=HUB',\n addUserToken: false,\n target: '_blank',\n fontAwesomeIcons: faUndoAlt,\n translationTag: 'hub.home.my-auto-orders',\n orderBy: 3,\n },\n {\n id: 'forms',\n url: '/hub/#/content/Forms',\n addUserToken: false,\n target: '_blank',\n fontAwesomeIcons: faFileAlt,\n translationTag: 'hub.home.forms',\n orderBy: 4,\n },\n {\n id: 'volumeReport',\n url: '/hub/#/baoyingVolume',\n addUserToken: false,\n target: '_blank',\n fontAwesomeIcons: faFileChartLine,\n translationTag: 'hub.home.volume-report',\n orderBy: 5,\n },\n];\n","import { Injectable } from '@angular/core';\nimport { MyAccountListModel } from './my-account.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MyAccountService {\n private MY_ACCOUNT_LIST: MyAccountListModel[] = [];\n\n get myAccount() {\n return this.MY_ACCOUNT_LIST;\n }\n\n set myAccount(myAccount: MyAccountListModel[]) {\n this.MY_ACCOUNT_LIST = myAccount;\n }\n\n constructor() {}\n}\n","import { FooterColumn, FooterLogo, FooterSocialMedia } from '@shared/footer/footer.model';\n\nexport const BAOYING_SOCIAL_MEDIA_LINKS: FooterSocialMedia = {\n hideCountry: [],\n title: 'hub.footer.title.follow-usana',\n links: [\n {\n id: 0,\n qrText: 'hub.footer.qr.baoying.company',\n qrImage: 'assets/images/baoyingwx.jpg',\n iconClass: 'svg-inline--fa fa-weixin fa-w-18 fa-lg',\n hideCountry: [],\n // eslint-disable-next-line max-len\n svg: 'M385.2 167.6c6.4 0 12.6.3 18.8 1.1C387.4 90.3 303.3 32 207.7 32 100.5 32 13 104.8 13 197.4c0 53.4 29.3 97.5 77.9 131.6l-19.3 58.6 68-34.1c24.4 4.8 43.8 9.7 68.2 9.7 6.2 0 12.1-.3 18.3-.8-4-12.9-6.2-26.6-6.2-40.8-.1-84.9 72.9-154 165.3-154zm-104.5-52.9c14.5 0 24.2 9.7 24.2 24.4 0 14.5-9.7 24.2-24.2 24.2-14.8 0-29.3-9.7-29.3-24.2.1-14.7 14.6-24.4 29.3-24.4zm-136.4 48.6c-14.5 0-29.3-9.7-29.3-24.2 0-14.8 14.8-24.4 29.3-24.4 14.8 0 24.4 9.7 24.4 24.4 0 14.6-9.6 24.2-24.4 24.2zM563 319.4c0-77.9-77.9-141.3-165.4-141.3-92.7 0-165.4 63.4-165.4 141.3S305 460.7 397.6 460.7c19.3 0 38.9-5.1 58.6-9.9l53.4 29.3-14.8-48.6C534 402.1 563 363.2 563 319.4zm-219.1-24.5c-9.7 0-19.3-9.7-19.3-19.6 0-9.7 9.7-19.3 19.3-19.3 14.8 0 24.4 9.7 24.4 19.3 0 10-9.7 19.6-24.4 19.6zm107.1 0c-9.7 0-19.3-9.7-19.3-19.6 0-9.7 9.7-19.3 19.3-19.3 14.5 0 24.4 9.7 24.4 19.3.1 10-9.9 19.6-24.4 19.6z',\n alt: '葆婴有限公司',\n },\n {\n id: 1,\n qrText: 'hub.footer.qr.baoying.company',\n qrImage: 'assets/images/baoying-wb.jpg',\n iconClass: 'svg-inline--fa fa-weibo fa-w-16 fa-lg',\n hideCountry: [],\n // eslint-disable-next-line max-len\n svg: 'M407 177.6c7.6-24-13.4-46.8-37.4-41.7-22 4.8-28.8-28.1-7.1-32.8 50.1-10.9 92.3 37.1 76.5 84.8-6.8 21.2-38.8 10.8-32-10.3zM214.8 446.7C108.5 446.7 0 395.3 0 310.4c0-44.3 28-95.4 76.3-143.7C176 67 279.5 65.8 249.9 161c-4 13.1 12.3 5.7 12.3 6 79.5-33.6 140.5-16.8 114 51.4-3.7 9.4 1.1 10.9 8.3 13.1 135.7 42.3 34.8 215.2-169.7 215.2zm143.7-146.3c-5.4-55.7-78.5-94-163.4-85.7-84.8 8.6-148.8 60.3-143.4 116s78.5 94 163.4 85.7c84.8-8.6 148.8-60.3 143.4-116zM347.9 35.1c-25.9 5.6-16.8 43.7 8.3 38.3 72.3-15.2 134.8 52.8 111.7 124-7.4 24.2 29.1 37 37.4 12 31.9-99.8-55.1-195.9-157.4-174.3zm-78.5 311c-17.1 38.8-66.8 60-109.1 46.3-40.8-13.1-58-53.4-40.3-89.7 17.7-35.4 63.1-55.4 103.4-45.1 42 10.8 63.1 50.2 46 88.5zm-86.3-30c-12.9-5.4-30 .3-38 12.9-8.3 12.9-4.3 28 8.6 34 13.1 6 30.8.3 39.1-12.9 8-13.1 3.7-28.3-9.7-34zm32.6-13.4c-5.1-1.7-11.4.6-14.3 5.4-2.9 5.1-1.4 10.6 3.7 12.9 5.1 2 11.7-.3 14.6-5.4 2.8-5.2 1.1-10.9-4-12.9z',\n alt: '葆婴有限公司',\n },\n ],\n};\n\nexport const BAOYING_FOOTER_IMAGE: FooterLogo = {\n path: 'assets/images/footer_logo_baoying.png',\n isLarge: true,\n alt: 'Baoying logo',\n};\n\nexport const BAOYING_FOOTER_DISCLAIMERS = ['hub.footer.baoying.disclaimer', 'baoying.hub.footer.information'];\n\nexport const BAOYING_FOOTER_COLUMNS: Array = [\n {\n id: 'column1',\n title: 'hub.footer.title.company',\n links: [\n {\n id: 0,\n title: 'hub.footer.home',\n url: 'hub.footer.home-link',\n hideCountry: [],\n },\n {\n id: 1,\n title: 'hub.footer.products',\n url: 'hub.footer.products-link',\n hideCountry: [],\n },\n {\n id: 2,\n title: 'hub.footer.press',\n url: 'hub.footer.press-link',\n hideCountry: [],\n },\n {\n id: 3,\n title: 'hub.footer.about',\n url: 'hub.footer.about-link',\n hideCountry: [],\n },\n {\n id: 4,\n title: 'hub.footer.science',\n url: 'hub.footer.science-link',\n hideCountry: [],\n },\n {\n id: 5,\n title: 'hub.footer.foundation',\n url: 'hub.footer.foundation-link',\n hideCountry: [],\n },\n {\n id: 6,\n title: 'hub.footer.baoying.charity',\n url: 'hub.footer.baoying.charity-link',\n hideCountry: [],\n },\n {\n id: 7,\n title: 'hub.footer.charity.news',\n url: 'hub.footer.charity.news-link',\n hideCountry: [],\n },\n ],\n },\n {\n id: 'column2',\n title: 'hub.footer.title.quick-links',\n links: [\n {\n id: 0,\n title: 'hub.footer.dr-wentz',\n url: 'hub.footer.dr-wentz-link',\n hideCountry: [],\n },\n {\n id: 1,\n title: 'hub.footer.privacy.clause',\n url: 'hub.footer.privacy.clause-link',\n hideCountry: [],\n },\n {\n id: 2,\n title: 'hub.footer.baoying.state.market',\n url: 'hub.footer.baoying.state.market-link',\n hideCountry: [],\n },\n {\n id: 3,\n title: 'hub.footer.baoying.branch',\n url: 'hub.footer.baoying.branch-link',\n hideCountry: [],\n },\n {\n id: 4,\n title: 'hub.footer.compliance',\n url: 'hub.footer.compliance-link',\n hideCountry: [],\n },\n {\n id: 5,\n title: 'hub.footer.old.babycare',\n url: 'hub.footer.old.babycare-link',\n hideCountry: [],\n },\n ],\n },\n {\n id: 'column3',\n title: 'hub.footer.title.connect',\n links: [\n {\n id: 0,\n title: 'hub.footer.contact-us',\n url: 'hub.footer.contact-us-link',\n hideCountry: [],\n },\n {\n id: 1,\n title: 'hub.footer.login',\n url: 'hub.footer.login-link',\n hideCountry: [],\n },\n {\n id: 2,\n title: 'hub.footer.about-us',\n url: 'hub.footer.about-us-link',\n hideCountry: [],\n },\n ],\n },\n];\n","
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n \n \n {{ column.title | translate }}\n \n \n\n \n
\n
\n {{ link.title | translate }}\n
\n
\n
\n
\n
\n
\n {{ socialMediaLinks.title | translate }}\n
\n
\n \n \n \n
\n
\n \n
\n
\n
\n
\n\n \n
\n
\n

\n {{ 'footer.registration.title' | translate }}
\n {{ 'footer.registration.number' | translate }}\n

\n
\n
\n
\n\n \n
\n
\n

\n {{ 'footer.address.line1' | translate }}
\n {{ 'footer.address.line2' | translate }}
\n {{ 'footer.address.line3' | translate }}\n

\n\n

\n \n {{ footerEmail }}\n \n\n
\n\n \n {{ footerPhone }}\n \n

\n
\n
\n
\n\n
\n
\n \n \n\n","import { Component, Input, OnInit, TemplateRef } from '@angular/core';\nimport { AppUser } from '@common/authentication/model/user-profile';\nimport { WindowSizingService } from '@common/services/window-size.service';\nimport { FooterColumn, FooterGovernmentLogo, FooterLogo, FooterSocialMedia } from './footer.model';\n\n@Component({\n selector: 'u-footer',\n templateUrl: './footer.component.html',\n styleUrls: ['./footer.component.scss'],\n})\nexport class FooterComponent implements OnInit {\n @Input() columns: FooterColumn[];\n @Input() footerImg: FooterLogo;\n @Input() disclaimers: string[];\n @Input() socialMediaTemplate: TemplateRef;\n @Input() socialMediaLinks: FooterSocialMedia;\n @Input() user: AppUser;\n @Input() footerGovLogos?: FooterGovernmentLogo;\n\n locale: string;\n footerSectionExpanded: { [sectionId: string]: boolean } = {};\n\n constructor(private windowSizingService: WindowSizingService) {}\n\n ngOnInit() {\n this.locale = this.getHyphenatedLocale(this.user);\n }\n\n isMobileSize() {\n return this.windowSizingService.isMobileSize();\n }\n\n getHyphenatedLocale(user: Partial) {\n if (user) {\n const language = user.locale.split('_')[0];\n return language + '-' + user.country;\n }\n }\n\n trackById(index: number, footer: { [key: string]: any }): number {\n return footer.id;\n }\n\n trackByDisclaimer(index: number, disclaimer: string): string {\n return disclaimer;\n }\n\n showForCountry(countries: string[]): boolean {\n if (countries.indexOf('!') > -1) {\n return countries.indexOf(this.user.country) > -1;\n } else {\n return countries.indexOf(this.user.country) < 0;\n }\n }\n}\n","import { Selector } from '@ngxs/store';\nimport { SystemAlertsState } from './system-alerts.state';\nimport { SystemAlertsStateModel } from './system-alerts.state.model';\n\nexport class SystemAlertsSelectors {\n @Selector([SystemAlertsState])\n static getAlerts(state: SystemAlertsStateModel) {\n return state.alerts;\n }\n}\n","
\n \n \n \n
\n\n","import { Component } from '@angular/core';\nimport { Select, Store } from '@ngxs/store';\nimport { Observable } from 'rxjs';\nimport { DeleteSystemAlert } from './state/system-alerts.actions';\nimport { SystemAlertsSelectors } from './state/system-alerts.selectors';\nimport { SystemAlert } from './state/system-alerts.state.model';\n\n@Component({\n selector: 'u-system-alert',\n templateUrl: './system-alert.component.html',\n styleUrls: ['./system-alert.component.scss'],\n})\nexport class SystemAlertComponent {\n @Select(SystemAlertsSelectors.getAlerts) alerts$: Observable;\n\n constructor(private store: Store) {}\n\n closeAlert(index) {\n this.store.dispatch(new DeleteSystemAlert(index));\n }\n\n trackById(index, alert) {\n return alert.alertId;\n }\n}\n","\n \n \n \n Back To Your Role\n \n \n\n \n
\n \n\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n\n
\n
\n
\n \n\n
\n {{ switchUserAlert.errorMessage }}\n
\n
\n
\n\n \n
\n \n\n
\n {{ 'masquerade.switchUserSuccess' | translate }}
\n {{ 'masquerade.userHasInterrupts' | translate }}:\n\n
    \n
  • \n {{ 'masquerade.interrupt.' + loginInterrupt.name | translate }}\n
  • \n
\n\n \n
\n
\n
\n \n
\n","import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { UserProfile } from '@common/authentication/model/user-profile';\nimport {\n ClearSwitchUserAlertClicked,\n ReloadSwitchedUserClicked,\n SwitchBack,\n SwitchUser,\n} from '@common/authentication/state/user-profile.actions';\nimport { UserProfileSelectors } from '@common/authentication/state/user-profile.selectors';\nimport { Select, Store } from '@ngxs/store';\nimport { BsDropdownDirective } from 'ngx-bootstrap/dropdown';\nimport { Observable, Subscription } from 'rxjs';\nimport { SwitchUserAlert } from '../../model/switch-user-alert';\n\n@Component({\n selector: 'u-switch-user',\n templateUrl: './switch-user.component.html',\n styleUrls: ['./switch-user.component.scss'],\n})\nexport class SwitchUserComponent implements OnInit, OnDestroy {\n currentlySwitched: boolean;\n hasAuthority: boolean;\n\n userId: string;\n\n @Select(UserProfileSelectors.getSwitchUserAlert) switchUserAlert$: Observable;\n\n dropdown: BsDropdownDirective;\n\n @ViewChild(BsDropdownDirective, {\n static: false,\n })\n set dropdownRef(content: BsDropdownDirective) {\n this.dropdown = content;\n this.setupDropdownSub();\n }\n\n private profileSub: Subscription;\n private dropDownSub: Subscription;\n\n constructor(private store: Store) {\n this.hasAuthority = false;\n }\n\n ngOnInit(): void {\n this.profileSub = this.store.select(UserProfileSelectors.getUserProfile).subscribe((userProfle: UserProfile) => {\n if (!!userProfle) {\n this.hasAuthority = userProfle.switchUserAuthority;\n this.currentlySwitched = userProfle.switchedUser;\n }\n });\n }\n\n ngOnDestroy(): void {\n if (!!this.profileSub) {\n this.profileSub.unsubscribe();\n delete this.profileSub;\n }\n if (!!this.dropDownSub) {\n this.dropDownSub.unsubscribe();\n delete this.dropDownSub;\n }\n }\n\n dismissSwitchUserAlert(): void {\n this.store.dispatch(new ClearSwitchUserAlertClicked());\n }\n\n switchToUser(): void {\n this.dismissSwitchUserAlert();\n this.dropdown.hide();\n\n if (!this.userId) {\n // must supply user\n return;\n }\n\n this.store.dispatch(new SwitchUser(this.userId));\n }\n\n switchBack(): void {\n this.store.dispatch(new SwitchBack());\n }\n\n onReloadPageClicked(): void {\n this.store.dispatch(new ReloadSwitchedUserClicked());\n }\n\n private setupDropdownSub(): void {\n // if we have a dropdown but haven't started listening to it yet.\n if (!!this.dropdown && !this.dropDownSub) {\n this.dropDownSub = this.dropdown.onShown.subscribe(() => {\n this.userId = '';\n // timeout to give it some time to render\n setTimeout(() => {\n const input = document.getElementById('switchUserId');\n if (input) {\n input.focus();\n }\n }, 0);\n });\n }\n }\n}\n","\n\n\n \n\n\n\n

{{ title }}

\n
\n","import { Component, OnDestroy, OnInit, TemplateRef } from '@angular/core';\nimport { NOTIFICATION_TRANSLATION_TAGS } from '@common/notifications/notification.constants';\nimport { Notification } from '@common/notifications/notification.model';\nimport { NotificationService } from '@common/notifications/notification.service';\nimport { LoadCurrentNotifications } from '@common/notifications/state/notification.actions';\nimport { NotificationSelectors } from '@common/notifications/state/notification.selectors';\nimport { TranslationService } from '@common/translation/translation.service';\nimport { faBell, IconDefinition } from '@fortawesome/pro-solid-svg-icons';\nimport { ActionsExecuting, actionsExecuting } from '@ngxs-labs/actions-executing';\nimport { Select, Store } from '@ngxs/store';\nimport { DropdownMenuItem } from '@shared/dropdown/dropdown.model';\nimport { SideModalService } from '@shared/side-modal/side-modal.service';\nimport { Observable, Subscription } from 'rxjs';\n\n@Component({\n selector: 'u-notification-bell',\n templateUrl: './notification-bell.component.html',\n styleUrls: ['./notification-bell.component.scss'],\n})\nexport class NotificationBellComponent implements OnInit, OnDestroy {\n readonly NOTIFICATION_BELL_ICON: IconDefinition = faBell;\n\n @Select(actionsExecuting([LoadCurrentNotifications])) loadCurrentNotifications$: Observable;\n displayedNotifications: Notification[];\n subscription = new Subscription();\n unReadAmount = 0;\n dropdownMenuItems: DropdownMenuItem[] = [];\n\n constructor(\n private sideModalService: SideModalService,\n private store: Store,\n private translateService: TranslationService,\n private notificationService: NotificationService\n ) {}\n\n ngOnInit(): void {\n this.getCurrentNotifications();\n }\n\n getCurrentNotifications(): void {\n this.store\n .select(NotificationSelectors.getCurrentNotifications)\n .subscribe((notifications: Notification[]): void => {\n this.displayedNotifications = notifications.slice(0, 10);\n this.dropdownMenuItems = this.notificationService.getDropdownMenuItems(true, this.displayedNotifications);\n this.unReadAmount = notifications.filter((notification: Notification) => !notification.read).length || 0;\n });\n }\n\n openModal(bodyTemplate: TemplateRef, headerTemplate: TemplateRef): void {\n this.sideModalService.open({\n bodyTemplate: bodyTemplate,\n headerTemplate: headerTemplate,\n dropdownMenuItems: this.dropdownMenuItems,\n });\n }\n\n get title(): string {\n return (\n this.translateService.getTranslationForFilter(NOTIFICATION_TRANSLATION_TAGS.widgetTitle) +\n ` (${this.unReadAmount})`\n );\n }\n\n ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n}\n","export const UNSUPPORTED_MARKETS = ['Italy', 'Germany', 'Spain', 'Romania'];\nexport const EURO_MARKETS = [\n 'en_UK',\n 'fr_FR',\n 'en_FR',\n 'de_DE',\n 'en_DE',\n 'it_IT',\n 'en_IT',\n 'ro_RO',\n 'en_RO',\n 'es_ES',\n 'en_ES',\n];\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'u-change-market-warning',\n templateUrl: './change-market-warning.component.html',\n styleUrls: ['./change-market-warning.component.scss'],\n})\nexport class ChangeMarketWarningComponent {\n showMore = false;\n\n toggleMarketNotification() {\n this.showMore = !this.showMore;\n }\n}\n","
\n
\n
\n \n
\n
\n
\n {{ 'myUsana.changeCountry.p2' | translate }}\n
\n
\n
\n
\n","
\n 1\">\n \n
\n \n\n \n  \n \n \n \n {{ 'hub.changeMarket.locale.' + loc.locale | translate }}\n \n \n \n\n \n \n
\n
\n
\n  \n \n \n \n {{ 'hub.changeMarket.locale.' + loc.locale | translate }}\n
\n
\n
\n \n
\n\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { faGlobe } from '@fortawesome/pro-solid-svg-icons';\nimport { Market } from '../change-market.model';\n\n@Component({\n selector: 'u-market-list',\n templateUrl: './market-list.component.html',\n styleUrls: ['./market-list.component.scss'],\n})\nexport class MarketListComponent implements OnInit {\n readonly GLOBE_ICON = faGlobe;\n\n @Input() markets: Market[];\n @Input() selectedLocale: string;\n @Output() readonly marketSelection = new EventEmitter();\n\n selectedCountry: string;\n\n ngOnInit() {\n this.setSelectedCountry();\n }\n\n setSelectedCountry() {\n this.markets.forEach((country) => {\n country.localesInCountry.forEach((locale) => {\n if (locale.locale === this.selectedLocale) {\n this.selectedCountry = locale.country;\n }\n });\n });\n }\n\n removeSpaces(st) {\n return st.replace(/[\\s]/g, '');\n }\n\n selectMarket(locale) {\n this.marketSelection.emit(locale);\n }\n\n trackByCountry(index, countryObj) {\n return countryObj.country;\n }\n\n trackByLocale(index, localeObj) {\n return localeObj.locale;\n }\n}\n","
\n
\n
\n \n  \n \n \n \n \n
\n
{{ 'hub.changeMarket.currentMarketAndLanguage' | translate }}
\n
{{ localeName }}
\n
\n
\n
\n\n \n\n
\n
\n \n \n
\n
\n\n
\n
\n
 
\n
\n
\n
 
\n
\n
\n\n
\n \n
\n
\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { CustomerTypes } from '@common/constants/customer-types';\nimport { faGlobe } from '@fortawesome/pro-solid-svg-icons';\nimport { EURO_MARKETS, UNSUPPORTED_MARKETS } from '../change-market.constants';\nimport { Market } from '../change-market.model';\n\n@Component({\n selector: 'u-market-selector',\n templateUrl: './market-selector.component.html',\n styleUrls: ['./market-selector.component.scss'],\n})\nexport class MarketSelectorComponent implements OnInit {\n readonly GLOBE_ICON = faGlobe;\n\n @Input() locale: string;\n @Input() localeName: string;\n @Input() isPc: boolean;\n @Input() markets: { [key: string]: Market[] } = {};\n @Output() readonly marketSelection = new EventEmitter();\n\n filteredMarkets: Market[] = [];\n selectedType: CustomerTypes;\n asscViewIsActive: boolean;\n pcViewIsActive: boolean;\n customerTypes = CustomerTypes;\n\n ngOnInit() {\n this.asscViewIsActive = !this.isPc;\n this.pcViewIsActive = this.isPc;\n this.selectedType = this.isPc ? CustomerTypes.preferredCustomer : CustomerTypes.associate;\n this.filterMarketList();\n }\n\n changeAssocTypeMarketDisplay(type: CustomerTypes) {\n this.asscViewIsActive = type === CustomerTypes.associate;\n this.pcViewIsActive = type === CustomerTypes.preferredCustomer;\n this.selectedType = type;\n this.filterMarketList();\n }\n\n filterMarketList() {\n this.filteredMarkets = this.markets[this.selectedType].filter(\n (market) => UNSUPPORTED_MARKETS.indexOf(market.country) === -1\n );\n }\n\n selectMarket(locale: string) {\n this.marketSelection.emit(locale);\n }\n\n euroMarkets(locale: string) {\n return EURO_MARKETS.indexOf(locale) !== -1;\n }\n}\n","\n \n  \n \n\n \n\n\n\n

\n {{ 'Temporary Market Change' | translate }}\n \n \n \n

\n
\n\n\n \n\n","import { Component, TemplateRef } from '@angular/core';\nimport { UserProfile } from '@common/authentication/model/user-profile';\nimport { UserProfileSelectors } from '@common/authentication/state/user-profile.selectors';\nimport { ResetCmsDataEntries, SetActiveEditItemId } from '@common/cms/state/cms.actions';\nimport { UsanaLocaleService } from '@common/services/locale.service';\nimport { faGlobe } from '@fortawesome/pro-solid-svg-icons';\nimport { Select, Store } from '@ngxs/store';\nimport { SideModalService } from '@shared/side-modal/side-modal.service';\nimport { Observable } from 'rxjs';\nimport { AppSelectors } from '../../state/app.selectors';\nimport { EURO_MARKETS } from '../change-market.constants';\nimport { SupportedMarkets } from '../change-market.model';\n\n@Component({\n selector: 'u-change-market-icon',\n templateUrl: './change-market-icon.component.html',\n styleUrls: ['./change-market-icon.component.scss'],\n})\nexport class ChangeMarketIconComponent {\n readonly GLOBE_ICON = faGlobe;\n\n // Selects will need to be moved up into the home component once the home directive is upgraded so this module can be\n // completely stateless and remove any NGXS dependencies\n @Select(UserProfileSelectors.getUserProfile) userProfile$: Observable;\n @Select(AppSelectors.getSupportedMarkets) supportedMarkets$: Observable;\n\n constructor(\n private localeService: UsanaLocaleService,\n private sideModalService: SideModalService,\n private store: Store\n ) {}\n\n setModalVisibility(bodyTemplate: TemplateRef, headerTemplate: TemplateRef) {\n this.sideModalService.open({\n bodyTemplate: bodyTemplate,\n headerTemplate: headerTemplate,\n });\n }\n\n changeMarket(locale: string) {\n this.localeService.setLocale(locale);\n this.store.dispatch([new ResetCmsDataEntries(), new SetActiveEditItemId('')]);\n }\n\n euroMarkets(locale: string) {\n return EURO_MARKETS.indexOf(locale) !== -1;\n }\n}\n","
\n
\n
\n\n
\n
{{ userProfile.user.fullName }}
\n
\n
\n {{ 'Rank' | translate }}:\n {{ 'profile.title.' + userProfile.user.title | translate }}\n
\n
\n {{ 'hub.myAccount.executiveRank' | translate }}:\n {{ 'profile.execTitle.' + userProfile.user.executiveTitle | translate }}\n
\n \n
\n {{ 'hub.myAccount.earningStatus' | translate }}:\n {{ 'hub.profile.earningStatus.' + earningType | translate }}\n
\n
\n
\n\n
\n {{ 'hub.myAccount.id' | translate | interpolate : { username: userProfile.user.username } }}\n
\n
\n\n","import { Component, Input } from '@angular/core';\nimport { UserProfile } from '@common/authentication/model/user-profile';\nimport { EarningsOptInStatus } from '@common/cms/earnings-opt-in/state/earnings-opt-in.model';\nimport { EarningsOptInSelectors } from '@common/cms/earnings-opt-in/state/earnings-opt-in.selectors';\nimport { Select } from '@ngxs/store';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'u-my-account-details',\n templateUrl: './my-account-details.component.html',\n styleUrls: ['./my-account-details.component.scss'],\n})\nexport class MyAccountDetailsComponent {\n @Select(EarningsOptInSelectors.getEarningsOptInStatus) optInStatus$: Observable;\n\n @Input() userProfile: UserProfile;\n}\n","\n\n
\n
\n
\n \n {{ myAccount.translationTag | translate }}\n \n
\n
\n\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { UserProfile } from '@common/authentication/model/user-profile';\nimport { AuthenticationService } from '@common/authentication/services/authentication.service';\nimport { UserProfileSelectors } from '@common/authentication/state/user-profile.selectors';\nimport { Store } from '@ngxs/store';\nimport { SideModalService } from '@shared/side-modal/side-modal.service';\nimport { Subscription } from 'rxjs';\nimport { MyAccountListModel } from '../my-account.model';\nimport { MyAccountService } from '../my-account.service';\n\n@Component({\n selector: 'u-my-account-list',\n templateUrl: './my-account-list.component.html',\n styleUrls: ['./my-account-list.component.scss'],\n})\nexport class MyAccountListComponent implements OnInit, OnDestroy {\n userProfile: UserProfile;\n private sub: Subscription;\n\n constructor(\n private myAccountService: MyAccountService,\n private authenticationService: AuthenticationService,\n private sideModalService: SideModalService,\n private store: Store\n ) {}\n\n ngOnInit(): void {\n this.sub = this.store.select(UserProfileSelectors.getUserProfile).subscribe((userProfile: UserProfile): void => {\n this.userProfile = userProfile;\n });\n }\n\n get myAccount(): MyAccountListModel[] {\n return this.myAccountService.myAccount;\n }\n\n logout(): void {\n this.close();\n this.authenticationService.startLogout();\n }\n\n close(): void {\n this.sideModalService.close();\n }\n\n showLink(myAccount: MyAccountListModel): boolean {\n return (!this.userProfile.pc || !myAccount.hideForPc) && !this.hideForCountry(myAccount.hideForCountries);\n }\n\n hideForCountry(countries: string[]): boolean {\n return countries.includes(this.userProfile.user.country);\n }\n\n trackById(index: number, account: MyAccountListModel): string {\n return account.id;\n }\n\n ngOnDestroy(): void {\n if (this.sub) {\n this.sub.unsubscribe();\n delete this.sub;\n }\n }\n}\n","\n\n\n

{{ 'hub.usana.my-account' | translate }}

\n
\n\n\n \n\n","import { Component, TemplateRef } from '@angular/core';\nimport { faUserAlt } from '@fortawesome/pro-solid-svg-icons';\nimport { SideModalService } from '@shared/side-modal/side-modal.service';\n\n@Component({\n selector: 'u-my-account-icon',\n templateUrl: './my-account-icon.component.html',\n styleUrls: ['./my-account-icon.component.scss'],\n})\nexport class MyAccountIconComponent {\n readonly MY_ACCOUNT_ICON = faUserAlt;\n\n constructor(private sideModalService: SideModalService) {}\n\n setModalVisibility(bodyTemplate: TemplateRef, headerTemplate: TemplateRef) {\n this.sideModalService.open({\n bodyTemplate: bodyTemplate,\n headerTemplate: headerTemplate,\n });\n }\n}\n","\n
\n
\n \n \n {{ 'hub.navbar.loggedAsAdmin' | translate }}\n {{ 'hub.navbar.loggedAsUser' | translate | interpolate : this }}\n \n {{ 'hub.navbar.connectedTo' | translate | interpolate : this }}\n
\n
\n \n
\n
\n
\n
\n \n \n \n\n \n
\n
\n \n
\n \n \n \n \n
\n
\n
\n \n\n","import { Component, ElementRef, Inject, OnDestroy, OnInit, Self } from '@angular/core';\nimport { UserProfile } from '@common/authentication/model/user-profile';\nimport { UserProfileSelectors } from '@common/authentication/state/user-profile.selectors';\nimport { CmsEditService } from '@common/cms/services/cms-edit.service';\nimport { TopNavRender } from '@common/navigation/components/top-nav/top-nav-render.model';\nimport {\n ChangeOpenNavigationLevel,\n UpdateTopNavHeight,\n UpdateTopNavRender,\n} from '@common/navigation/state/navigation.actions';\nimport { NavigationLevel } from '@common/navigation/state/navigation.state.model';\nimport { WindowSizingService } from '@common/services/window-size.service';\nimport { SystemAlertsSelectors } from '@common/system-alerts/state/system-alerts.selectors';\nimport { SystemAlert } from '@common/system-alerts/state/system-alerts.state.model';\nimport { faBars, faExclamationTriangle } from '@fortawesome/pro-solid-svg-icons';\nimport { Select, Store } from '@ngxs/store';\nimport { PerformanceService } from '@shared/performance/performance.service';\nimport { LOCATION_TOKEN, WINDOW_TOKEN } from '@usana/ux/common';\nimport { Observable, Subscription } from 'rxjs';\nimport { environment } from '../../../../../../environments/environment';\nimport { CustomerTypeCodes } from '../../../constants/customer-type-codes';\n\n@Component({\n selector: 'u-top-nav',\n templateUrl: './top-nav.component.html',\n styleUrls: ['./top-nav.component.scss'],\n})\nexport class TopNavComponent implements OnDestroy, OnInit {\n readonly BARS_ICON = faBars;\n readonly EXCLAMATION_TRIANGLE_ICON = faExclamationTriangle;\n readonly CustomerTypeCodes = CustomerTypeCodes;\n\n requestAttrs: UserProfile;\n navRender: TopNavRender;\n\n private storeSubs: Subscription;\n private alertSubs: Subscription;\n @Select(SystemAlertsSelectors.getAlerts) alerts$: Observable;\n\n constructor(\n private readonly windowSizingService: WindowSizingService,\n private readonly cmsEditService: CmsEditService,\n private readonly store: Store,\n @Self() private element: ElementRef,\n @Inject(WINDOW_TOKEN) private readonly window: Window,\n @Inject(LOCATION_TOKEN) private readonly location: Location\n ) {\n this.navRender = {\n height: 0,\n scroll: 0,\n isFixedNav: false,\n isMobileHide: false,\n showConnectionBar: false,\n };\n\n // I know we dislike this but this component interpolates so we have to\n this.storeSubs = store.select(UserProfileSelectors.getUserProfile).subscribe((userProfile) => {\n this.requestAttrs = userProfile;\n if (this.requestAttrs && (this.requestAttrs.contentEditor || this.requestAttrs.switchUserAuthority)) {\n this.navRender.showConnectionBar = true;\n }\n // if this is the first update, bump the nav so that it looks better before we scroll\n // but first return system alerts before setting\n this.alertSubs = this.alerts$.subscribe((a) => {\n setTimeout(() => this.setSideNavTop(), 0);\n });\n });\n }\n\n ngOnInit(): void {\n this.window.document.querySelector('body').onscroll = () => {\n this.setSideNavTop();\n };\n\n this.window.addEventListener('resize', () => {\n this.setSideNavTop();\n });\n\n PerformanceService.mark('Nav:TopNav:Linked');\n }\n\n ngOnDestroy(): void {\n if (this.storeSubs) {\n this.storeSubs.unsubscribe();\n delete this.storeSubs;\n }\n if (this.alertSubs) {\n this.alertSubs.unsubscribe();\n delete this.alertSubs;\n }\n }\n\n setSideNavTop() {\n const currentHeight = this.element.nativeElement.offsetHeight;\n // we can only update this if we aren't fixed nav.\n // we also don't care if we are mobile\n if (this.navRender.height !== currentHeight && !this.navRender.isFixedNav) {\n this.updateHeight(currentHeight);\n }\n const currentScroll = this.window.document.body.scrollTop;\n if (this.navRender.scroll !== currentScroll) {\n // on mobile: hide nav if we are scrolling down, show it if we are scrolling up\n const currentMobileHide = currentScroll > this.navRender.scroll;\n\n // for determining fixed nav we have 4 scenarios:\n // 1. we are at scroll 0 in which case we are not fixed\n // 1. we are scrolling up, in which case we are always fixed\n // 2. we are desktop size, so if we have scrolled any we are fixed\n // 3. we are mobile, so if we have scrolled past the height of the nav we are fixed\n const currentScrollCondition = this.windowSizingService.isMobileSize() ? this.navRender.height : 0;\n const currentFixedNav =\n currentScroll === 0 ? false : !currentMobileHide || currentScroll > currentScrollCondition;\n // only dispatch if we change to be a bit quieter\n if (this.navRender.isFixedNav !== currentFixedNav || this.navRender.isMobileHide !== currentMobileHide) {\n this.store.dispatch(new UpdateTopNavRender(currentFixedNav, currentMobileHide));\n }\n\n // finally update the values we can always update.\n this.navRender.isMobileHide = currentMobileHide;\n this.navRender.isFixedNav = currentFixedNav;\n this.navRender.scroll = currentScroll;\n }\n }\n\n openFirstLevelNav(): void {\n this.store.dispatch(new ChangeOpenNavigationLevel(NavigationLevel.FIRST));\n }\n navigateHome(): void {\n if (this.requestAttrs.user.customerType === CustomerTypeCodes.affiliate) {\n this.location.assign(\n `https://${environment.STATIC_CART_ORIGIN_SUBDOMAIN}.${environment.DEPLOY_SITEDOMAIN}${environment.STATIC_CART_ORIGIN_ROOT_URI}`\n );\n } else {\n this.location.assign('/hub/#/home');\n }\n }\n togglePageEdit(): void {\n this.cmsEditService.togglePageEdit();\n }\n\n createNewCmsPage(): void {\n this.cmsEditService.cmPopup('/mvc/cm/Manager/CreatePage?site=' + this.cmsEditService.getSite());\n }\n\n showLinkBuilder(): void {\n this.cmsEditService.cmPopup('/mvc/cm/Manager/LinkBuilder');\n }\n\n showFinder(): void {\n this.window.open('/hub/#/imageUpload', 'Image Upload', 'height=800,width=1000');\n }\n\n private updateHeight(height: number): void {\n this.navRender.height = height;\n this.store.dispatch(new UpdateTopNavHeight(height));\n }\n}\n","import { Component, EventEmitter, Output } from '@angular/core';\nimport { UserProfile } from '@common/authentication/model/user-profile';\nimport { UserProfileSelectors } from '@common/authentication/state/user-profile.selectors';\nimport { Store } from '@ngxs/store';\n\n@Component({\n selector: 'u-nav-header',\n templateUrl: './navigation-header.component.html',\n styleUrls: ['./navigation-header.component.scss'],\n})\nexport class NavigationHeaderComponent {\n @Output() readonly closeNav = new EventEmitter();\n userProfile: UserProfile;\n\n constructor(private store: Store) {\n this.store.select(UserProfileSelectors.getUserProfile).subscribe((userProfile) => {\n this.userProfile = userProfile;\n });\n }\n onClose() {\n this.closeNav.emit();\n }\n}\n","
\n
\n
\n \n \n
\n
\n \n
\n
\n
\n","\n \n
\n
    \n \n
  • \n \n
  • \n
  • \n \n \n \n \n \n \n \n \n \n \n
  • \n
    \n
  • \n \n
  • \n \n
  • \n \n
  • \n
  • \n \n
  • \n
    \n \n
  • \n \n
  • \n
  • \n \n
  • \n
    \n
  • \n \n
  • \n
\n
\n\n","import { Component, OnDestroy } from '@angular/core';\nimport { UserProfile } from '@common/authentication/model/user-profile';\nimport { UserProfileSelectors } from '@common/authentication/state/user-profile.selectors';\nimport { ChangeOpenNavigationLevel } from '@common/navigation/state/navigation.actions';\nimport { NavigationSelectors } from '@common/navigation/state/navigation.selectors';\nimport { NavigationLevel } from '@common/navigation/state/navigation.state.model';\nimport { WindowSizingService } from '@common/services/window-size.service';\nimport { Select, Store } from '@ngxs/store';\nimport { Observable, Subscription } from 'rxjs';\nimport { CustomerTypeCodes } from '../../../constants/customer-type-codes';\n\n@Component({\n selector: 'u-navigation',\n templateUrl: './navigation.component.html',\n styleUrls: ['./navigation.component.scss'],\n})\nexport class NavigationComponent implements OnDestroy {\n requestAttrs: UserProfile;\n\n showMobileNav: boolean;\n\n private storeSubs: Subscription;\n\n readonly CustomerTypeCodes = CustomerTypeCodes;\n\n @Select(NavigationSelectors.getTopNavHeight) topNavHeight$: Observable;\n\n constructor(private readonly windowSizingService: WindowSizingService, private store: Store) {\n this.storeSubs = this.store.select(UserProfileSelectors.getUserProfile).subscribe((userProfile) => {\n this.requestAttrs = userProfile;\n });\n this.storeSubs.add(\n this.store.select(NavigationSelectors.getNavLevel).subscribe((level: NavigationLevel) => {\n this.showMobileNav = level === NavigationLevel.FIRST && this.windowSizingService.isMobileSize();\n })\n );\n }\n\n isMobileSize() {\n return this.windowSizingService.isMobileSize();\n }\n\n onResize() {\n this.onClose(); // we just close it\n }\n\n onClose() {\n this.store.dispatch(new ChangeOpenNavigationLevel(NavigationLevel.NONE));\n }\n\n ngOnDestroy() {\n if (this.storeSubs) {\n this.storeSubs.unsubscribe();\n delete this.storeSubs;\n }\n }\n}\n","import { AfterViewInit, Component, ViewChild, ViewContainerRef } from '@angular/core';\nimport { SideModalService } from '@shared/side-modal/side-modal.service';\n\n@Component({\n selector: 'u-side-modal-container',\n templateUrl: './side-modal-container.component.html',\n styleUrls: ['./side-modal-container.component.scss'],\n})\nexport class SideModalContainerComponent implements AfterViewInit {\n @ViewChild('sideModalContainer', { static: false, read: ViewContainerRef }) sideModalContainer: ViewContainerRef;\n\n constructor(private sideModalService: SideModalService) {}\n\n ngAfterViewInit(): void {\n this.sideModalService.sideModalContainer = this.sideModalContainer;\n }\n}\n","
\n","\n\n
\n \n
\n
\n {{\n toast.interpolateTitle\n ? (toast.title | translate | interpolate : { interpolateTitle: toast.interpolateTitle })\n : (toast.title | translate)\n }}\n {{\n toast.interpolateMsg\n ? (toast.msgTag | translate | interpolate : { interpolateMsg: toast.interpolateMsg })\n : (toast.msgTag | translate)\n }}\n
\n
\n \n
\n\n","import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { Toast } from './toast.model';\nimport { ToastService } from './toast.service';\n\n@Component({\n selector: 'toast-display',\n templateUrl: './toast-display.component.html',\n styleUrls: ['./toast-display.component.scss'],\n})\nexport class ToastDisplayComponent implements OnInit, OnDestroy {\n toasts: Toast[];\n\n private toastSubscription: Subscription;\n\n constructor(private toastService: ToastService, private changeDetectorRef: ChangeDetectorRef) {\n this.toasts = [];\n }\n\n ngOnInit(): void {\n this.toastSubscription = this.toastService.getToastSubject().subscribe((toasts: Toast[]) => {\n this.toasts = toasts;\n this.changeDetectorRef.detectChanges();\n });\n }\n\n ngOnDestroy(): void {\n if (this.toastSubscription) {\n this.toastSubscription.unsubscribe();\n delete this.toastSubscription;\n }\n }\n\n close(toast: Toast) {\n this.toastService.removeWithInternalId(toast.internalId);\n }\n\n trackByInternalId(index, toast) {\n return toast.internalId;\n }\n}\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}","export enum InterruptType {\n KYC_DOC_UPLOAD,\n NOTIFICATION_GENERIC,\n NOTIFICATION_SMS,\n}\n\nexport interface HubInterruptData {\n type: InterruptType;\n data?: any;\n}\n","import { mergeMap } from './mergeMap';\nexport const flatMap = mergeMap;\n","import { HttpClient } from '@angular/common/http';\nimport { Component, OnDestroy, OnInit } from '@angular/core';\nimport { UserProfileSelectors } from '@common/authentication/state/user-profile.selectors';\nimport { NotificationSelectors } from '@common/notifications/state/notification.selectors';\nimport { Store } from '@ngxs/store';\nimport { HubInterruptData, InterruptType } from '@shared/hub-interrupt/hub-interrupt.model';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { ModalOptions } from 'ngx-bootstrap/modal/modal-options.class';\nimport { combineLatest, of, Subscription } from 'rxjs';\nimport { flatMap, map } from 'rxjs/operators';\nimport { environment } from '../../../../environments/environment';\n\n@Component({\n selector: 'u-hub-interrupt',\n template: '',\n})\nexport class HubInterruptComponent implements OnInit, OnDestroy {\n private sub: Subscription;\n private hideSub: Subscription;\n private interrupts: HubInterruptData[];\n private interruptIdx: number;\n private modaling: boolean;\n\n constructor(private store: Store, private modalService: BsModalService, private httpClient: HttpClient) {}\n\n ngOnInit() {\n this.interrupts = [];\n this.interruptIdx = 0;\n\n this.sub = combineLatest([\n this.store.select(NotificationSelectors.getInterruptNotifications).pipe(\n map((notifications) => {\n if (notifications.length > 0) {\n return {\n type:\n notifications[0].content[0].part === 'SMS_INTERRUPT'\n ? InterruptType.NOTIFICATION_SMS\n : InterruptType.NOTIFICATION_GENERIC,\n data: notifications[0],\n };\n } else {\n return null;\n }\n })\n ),\n this.store.select(UserProfileSelectors.getUser).pipe(\n flatMap((user) => {\n if (user && 'IN' === user.country) {\n // only for india at the moment\n // yes I am avoiding apollo because there is no reason to pull it in at this moment in my opinion\n return this.httpClient\n .post(\n environment.hubGatewayUrl,\n {\n query:\n 'query getCustomer($customerId: Int) { getCustomer(customerId: $customerId) { id applicationDate customerDocsVerification { isVerified }}}',\n variables: { customerId: +user.username },\n },\n {\n withCredentials: true,\n }\n )\n .pipe(\n map((response: any) => {\n if (response.data && response.data.getCustomer) {\n const customer = response.data.getCustomer;\n const daysSinceApp =\n (new Date().getTime() - new Date(customer.applicationDate).getTime()) / (1000 * 3600 * 24);\n // application date more than 30 days ago and missing the doc verification OR verified is false\n if (\n daysSinceApp > 30 &&\n (!customer.customerDocsVerification || !customer.customerDocsVerification.isVerified)\n ) {\n return {\n type: InterruptType.KYC_DOC_UPLOAD,\n };\n }\n }\n return null; // data is missing or they are good\n })\n );\n } else {\n return of(null);\n }\n })\n ),\n ]).subscribe((r: HubInterruptData[]) => {\n // filter the ones that have already been added.\n const existingTypes = this.interrupts.map((i) => i.type);\n r.forEach((it) => {\n // we can't do a modal twice because that would be silly\n if (it != null && !existingTypes.includes(it.type)) {\n this.interrupts.push(it);\n }\n });\n\n // if we aren't modaling lets start\n if (!this.modaling) {\n this.loadNextModal();\n }\n });\n }\n\n ngOnDestroy() {\n if (this.sub) {\n this.sub.unsubscribe();\n delete this.sub;\n }\n if (this.hideSub) {\n this.hideSub.unsubscribe();\n delete this.hideSub;\n }\n }\n\n private async loadNextModal() {\n if (this.interrupts.length > this.interruptIdx) {\n this.modaling = true;\n const interrupt = this.interrupts[this.interruptIdx];\n switch (interrupt.type) {\n case InterruptType.KYC_DOC_UPLOAD:\n const { KycRequiredModalComponent } = await import('./kyc/kyc-required-modal.component');\n this.openModalWithComponentAndOptions(KycRequiredModalComponent, {\n closeInterceptor: this.rejectAllCloseInterceptor(),\n });\n break;\n case InterruptType.NOTIFICATION_SMS:\n const { NotificationSmsInterruptComponent } = await import(\n './notification-sms/notification-sms-interrupt.component'\n );\n this.openModalWithComponentAndOptions(NotificationSmsInterruptComponent, {\n backdrop: 'static',\n initialState: {\n notification: interrupt.data,\n },\n });\n break;\n case InterruptType.NOTIFICATION_GENERIC:\n const { NotificationGenericInterruptComponent } = await import(\n './notification-generic/notification-generic-interrupt.component'\n );\n this.openModalWithComponentAndOptions(NotificationGenericInterruptComponent, {\n backdrop: 'static',\n initialState: {\n notification: interrupt.data,\n },\n });\n break;\n default:\n console.log('missing interrupt type', interrupt.type);\n }\n } else {\n this.modaling = false;\n }\n }\n\n private openModalWithComponentAndOptions(c: any, config?: ModalOptions) {\n const modalRef = this.modalService.show(c, config);\n this.hideSub = modalRef.onHide.subscribe(() => {\n this.hideSub.unsubscribe();\n delete this.hideSub;\n // go to the next modal\n this.interruptIdx++;\n this.loadNextModal();\n });\n }\n\n // this makes a modal uncloseable\n private rejectAllCloseInterceptor() {\n return () => Promise.reject();\n }\n}\n","
\n
\n \"loading\n
\n\n
\n \n \n\n
\n \n
\n \n
\n
\n \n
\n
\n
\n
\n\n
\n \n \n
\n\n \n\n \n \n \n \n \n
\n \n
\n
\n
\n
\n
\n","import { Component, Input } from '@angular/core';\nimport { AppUser } from '../../../../../common/src/authentication/model/user-profile';\nimport {\n BAOYING_FOOTER_COLUMNS,\n BAOYING_FOOTER_DISCLAIMERS,\n BAOYING_FOOTER_IMAGE,\n BAOYING_SOCIAL_MEDIA_LINKS,\n} from '../../constants/baoying-footer.constants';\n\n@Component({\n selector: 'u-baoying-hub-layout',\n templateUrl: './baoying-hub-layout.component.html',\n styleUrls: ['./baoying-hub-layout.component.scss'],\n})\nexport class BaoyingHubLayoutComponent {\n @Input() isLoading: boolean;\n @Input() user: AppUser;\n\n readonly footerColumns = BAOYING_FOOTER_COLUMNS;\n readonly disclaimers = BAOYING_FOOTER_DISCLAIMERS;\n readonly footerImg = BAOYING_FOOTER_IMAGE;\n readonly socialMediaLinks = BAOYING_SOCIAL_MEDIA_LINKS;\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { AppUser } from '@common/authentication/model/user-profile';\nimport { UserProfileSelectors } from '@common/authentication/state/user-profile.selectors';\nimport { MyAccountService } from '@common/my-account/my-account.service';\nimport { Select, Store } from '@ngxs/store';\nimport { QuickLinksService } from '@shared/quick-links/quick-links.service';\nimport { Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { PageTitleService } from '../../../../common/src/services/page-title.service';\nimport { InitializeApp } from '../../../../usana/src/app/state/app.actions';\nimport { AppSelectors } from '../../../../usana/src/app/state/app.selectors';\nimport { BAOYING_MY_ACCOUNT_LIST } from '../constants/baoying-my-account.constants';\nimport { BAOYING_QUICK_LINKS_DATA } from '../constants/baoying-quick-links.constants';\n\n@Component({\n selector: 'b-hub-root',\n templateUrl: './baoying-app-hub.component.html',\n styleUrls: ['./baoying-app-hub.component.scss'],\n})\nexport class BaoyingHubComponent implements OnInit, OnDestroy {\n @Select(AppSelectors.getIsLoading) isLoading$: Observable;\n @Select(UserProfileSelectors.getUser) user$: Observable;\n @Select(UserProfileSelectors.getLocale) locale$: Observable;\n\n readonly destroy$ = new Subject();\n\n constructor(\n private store: Store,\n private quickLinksService: QuickLinksService,\n private myAccountService: MyAccountService,\n private pageTitleService: PageTitleService\n ) {}\n\n ngOnInit(): void {\n this.store.dispatch(new InitializeApp());\n\n this.quickLinksService.quickLinks = BAOYING_QUICK_LINKS_DATA;\n this.myAccountService.myAccount = BAOYING_MY_ACCOUNT_LIST;\n\n this.locale$.pipe(takeUntil(this.destroy$)).subscribe((_locale) => {\n this.pageTitleService.setTitle();\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FaIconLibrary, FontAwesomeModule } from '@fortawesome/angular-fontawesome';\nimport { IconDefinition } from '@fortawesome/fontawesome-common-types';\nimport { CommonIconsModule } from '../../../../common/src/common-icons/common-icons.module';\n\n@NgModule({\n imports: [CommonModule, CommonIconsModule],\n exports: [FontAwesomeModule],\n})\nexport class BaoyingIconsModule {\n readonly BAOYING_ICONS: IconDefinition[] = [];\n\n constructor(faLibrary: FaIconLibrary) {\n faLibrary.addIcons(...this.BAOYING_ICONS);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { UplineLeaderPlacementModule } from '@common/upline-leader-placement/upline-leader-placement.module';\nimport { BaoyingUplineLeaderReportComponent } from './baoying-upline-leader-report/baoying-upline-leader-report.component';\n\n@NgModule({\n declarations: [BaoyingUplineLeaderReportComponent],\n imports: [CommonModule, UplineLeaderPlacementModule],\n exports: [BaoyingUplineLeaderReportComponent],\n})\nexport class BaoyingUplineLeaderReportModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TranslationModule } from '@common/translation/translation.module';\nimport { NgxsModule } from '@ngxs/store';\nimport { BaoyingVolumeReportState } from '../state/baoying-volume-report.state';\nimport { BaoyingVolumeReportComponent } from './baoying-volume-report.component';\n\n@NgModule({\n declarations: [BaoyingVolumeReportComponent],\n imports: [CommonModule, NgxsModule.forFeature([BaoyingVolumeReportState]), TranslationModule],\n exports: [BaoyingVolumeReportComponent],\n})\nexport class BaoyingVolumeReportModule {}\n","import { Inject, Injectable } from '@angular/core';\nimport { AppUser } from '@common/authentication/model/user-profile';\nimport { UserProfileSelectors } from '@common/authentication/state/user-profile.selectors';\nimport { Store } from '@ngxs/store';\nimport { WINDOW_TOKEN } from '@usana/ux/common';\nimport { environment } from '../../../../../environments/environment';\n\n@Injectable()\nexport class CbecRedirectionService {\n constructor(private readonly store: Store, @Inject(WINDOW_TOKEN) protected readonly window: any) {\n this.window.redirectToCN_CBEC = () => this.redirectToCbec();\n }\n\n isInitialized(): boolean {\n return !!this.window.redirectToCN_CBEC;\n }\n\n redirectToCbec(): void {\n const redirectUrl = `https://${environment.STATIC_CART_ORIGIN_SUBDOMAIN}.${environment.CBEC_DEPLOY_SITEDOMAIN}${environment.STATIC_CART_ORIGIN_ROOT_URI}/#!/zh-CN/category/-1?shopperSource=CN_CBEC&shop=nfr`;\n this.store.select(UserProfileSelectors.getUser).subscribe((user: AppUser) => {\n const doc = this.window.document;\n const form = doc.createElement('form');\n const tokenElement = doc.createElement('input');\n const idTokenElement = doc.createElement('input');\n const refreshTokenElement = doc.createElement('input');\n const redirectUrlElement = doc.createElement('input');\n\n form.method = 'POST';\n form.action = `https://${environment.CART_ORIGIN_SUBDOMAIN}.${environment.CBEC_DEPLOY_SITEDOMAIN}${environment.CART_ORIGIN_ROOT_URI}/customer/exchangeToken`;\n form.target = '_blank';\n\n tokenElement.value = user.coreSecureToken;\n tokenElement.name = 'token';\n tokenElement.type = 'hidden';\n form.appendChild(tokenElement);\n\n idTokenElement.value = user.ssoIdToken;\n idTokenElement.name = 'id-token';\n idTokenElement.type = 'hidden';\n form.appendChild(idTokenElement);\n\n refreshTokenElement.value = user.ssoRefreshToken;\n refreshTokenElement.name = 'refresh-token';\n refreshTokenElement.type = 'hidden';\n form.appendChild(refreshTokenElement);\n\n redirectUrlElement.value = redirectUrl;\n redirectUrlElement.name = 'redirectUrl';\n redirectUrlElement.type = 'hidden';\n form.appendChild(redirectUrlElement);\n\n doc.body.appendChild(form);\n\n form.submit();\n\n doc.body.removeChild(form);\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// THIS CODE IS GENERATED - DO NOT MODIFY.\nconst u = undefined;\nfunction plural(val) {\n const n = val;\n return 5;\n}\nexport default [\"zh\", [[\"上午\", \"下午\"], u, u], u, [[\"日\", \"一\", \"二\", \"三\", \"四\", \"五\", \"六\"], [\"周日\", \"周一\", \"周二\", \"周三\", \"周四\", \"周五\", \"周六\"], [\"星期日\", \"星期一\", \"星期二\", \"星期三\", \"星期四\", \"星期五\", \"星期六\"], [\"周日\", \"周一\", \"周二\", \"周三\", \"周四\", \"周五\", \"周六\"]], u, [[\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"10\", \"11\", \"12\"], [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"], [\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十二月\"]], u, [[\"公元前\", \"公元\"], u, u], 0, [6, 0], [\"y/M/d\", \"y年M月d日\", u, \"y年M月d日EEEE\"], [\"HH:mm\", \"HH:mm:ss\", \"z HH:mm:ss\", \"zzzz HH:mm:ss\"], [\"{1} {0}\", u, u, u], [\".\", \",\", \";\", \"%\", \"+\", \"-\", \"E\", \"×\", \"‰\", \"∞\", \"NaN\", \":\"], [\"#,##0.###\", \"#,##0%\", \"¤#,##0.00\", \"#E0\"], \"CNY\", \"¥\", \"人民币\", { \"AUD\": [\"AU$\", \"$\"], \"BYN\": [u, \"р.\"], \"CNY\": [\"¥\"], \"ILR\": [\"ILS\"], \"JPY\": [\"JP¥\", \"¥\"], \"KRW\": [\"₩\", \"₩\"], \"PHP\": [u, \"₱\"], \"RUR\": [u, \"р.\"], \"TWD\": [\"NT$\"], \"USD\": [\"US$\", \"$\"], \"XXX\": [] }, \"ltr\", plural];\n","import * as ZHLocale from '@angular/common/locales/zh';\n\nexport const BAOYING_SUPPORTED_LOCALE_MAP = {\n zh: ZHLocale,\n};\n","import { Injectable } from '@angular/core';\nimport { SetHomeWidgets } from '@common/home/state/home.actions';\nimport { HomeStateModel } from '@common/home/state/home.state.model';\nimport { Action, State, StateContext } from '@ngxs/store';\n\n@State({\n name: 'home',\n defaults: {\n configuration: {\n widgets: [],\n },\n },\n})\n@Injectable()\nexport class HomeState {\n @Action(SetHomeWidgets)\n setHomeWidgets({ patchState }: StateContext, { widgets }: SetHomeWidgets) {\n const configuration = { widgets };\n return patchState({ configuration });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { CmsModule } from '@common/cms/cms.module';\nimport { HomeState } from '@common/home/state/home.state';\nimport { NgxsModule } from '@ngxs/store';\nimport { HomeBannerComponent } from './home-banner/home-banner.component';\n\n@NgModule({\n declarations: [HomeBannerComponent],\n imports: [CommonModule, CmsModule, NgxsModule.forFeature([HomeState])],\n exports: [HomeBannerComponent],\n})\nexport class HomeModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { UsanaDatePipeModule } from '@common/custom-locale-pipes/usana-date-pipe/usana-date-pipe.module';\nimport { ImportantDatesService } from '@common/important-dates/important-dates.service';\nimport { TranslationModule } from '@common/translation/translation.module';\nimport { CarouselModule } from 'ngx-bootstrap/carousel';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { CommonIconsModule } from '../common-icons/common-icons.module';\nimport { ImportantDatesComponent } from './important-dates.component';\n\n@NgModule({\n declarations: [ImportantDatesComponent],\n imports: [\n CommonModule,\n CarouselModule.forRoot(),\n TooltipModule.forRoot(),\n UsanaDatePipeModule,\n TranslationModule,\n CommonIconsModule,\n ],\n providers: [ImportantDatesService],\n exports: [ImportantDatesComponent],\n})\nexport class ImportantDatesModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FullDateTimeWithTimezoneModule } from '@common/custom-locale-pipes/full-date-time-with-timezone/full-date-time-with-timezone.module';\nimport { PacesetterWidgetState } from '@common/pacesetter/state/pacesetter-widget.state';\nimport { TranslationModule } from '@common/translation/translation.module';\nimport { NgxsModule } from '@ngxs/store';\nimport { InterpolationPipeModule } from '@shared/pipes/interpolate/interpolate.module';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { ProgressbarModule } from 'ngx-bootstrap/progressbar';\nimport { CommonIconsModule } from '../common-icons/common-icons.module';\nimport { PacesetterWidgetComponent } from './pacesetter-widget/pacesetter-widget.component';\n\n@NgModule({\n declarations: [PacesetterWidgetComponent],\n imports: [\n CommonModule,\n NgxsModule.forFeature([PacesetterWidgetState]),\n PopoverModule.forRoot(),\n ProgressbarModule.forRoot(),\n InterpolationPipeModule,\n FullDateTimeWithTimezoneModule,\n TranslationModule,\n CommonIconsModule,\n ],\n exports: [PacesetterWidgetComponent],\n})\nexport class PacesetterWidgetModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TranslationModule } from '@common/translation/translation.module';\nimport { HtmlToPlainTextModule } from '@shared/pipes/html-to-plain-text/html-to-plain-text.module';\nimport { InterpolationPipeModule } from '@shared/pipes/interpolate/interpolate.module';\nimport { UnsafeModule } from '@shared/pipes/unsafe/unsafe.module';\nimport { ModalModule } from 'ngx-bootstrap/modal';\nimport { UsanaNewsModalComponent } from './usana-news-modal/usana-news-modal.component';\nimport { UsanaNewsWidgetComponent } from './usana-news-widget/usana-news-widget.component';\n\n@NgModule({\n declarations: [UsanaNewsWidgetComponent, UsanaNewsModalComponent],\n imports: [\n CommonModule,\n UnsafeModule,\n ModalModule.forRoot(),\n HtmlToPlainTextModule,\n InterpolationPipeModule,\n TranslationModule,\n ],\n exports: [UsanaNewsWidgetComponent, UsanaNewsModalComponent],\n})\nexport class UsanaNewsModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TranslationModule } from '@common/translation/translation.module';\nimport { CommonIconsModule } from '../../../common/src/common-icons/common-icons.module';\nimport { QuickLinksComponent } from './quick-links.components';\n\n@NgModule({\n declarations: [QuickLinksComponent],\n imports: [CommonModule, TranslationModule, CommonIconsModule],\n exports: [QuickLinksComponent],\n})\nexport class QuickLinksModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TranslationModule } from '@common/translation/translation.module';\nimport { UnsafeModule } from '@shared/pipes/unsafe/unsafe.module';\nimport { BaoyingFpvReportComponent } from './baoying-fpv-report.component';\n\n@NgModule({\n declarations: [BaoyingFpvReportComponent],\n imports: [CommonModule, UnsafeModule, TranslationModule],\n exports: [BaoyingFpvReportComponent],\n})\nexport class BaoyingFpvReportModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { UsanaDatePipeModule } from '@common/custom-locale-pipes/usana-date-pipe/usana-date-pipe.module';\nimport { TranslationModule } from '@common/translation/translation.module';\nimport { LoadingSpinnerModule } from '@shared/loading-spinner/loading-spinner.module';\nimport { WidgetModule } from '@usana/ux/widget';\nimport { FpvWidgetComponent } from './fpv-widget/fpv-widget.component';\n\n@NgModule({\n declarations: [FpvWidgetComponent],\n exports: [FpvWidgetComponent],\n imports: [CommonModule, WidgetModule, LoadingSpinnerModule, UsanaDatePipeModule, TranslationModule],\n})\nexport class FpvWidgetModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FpvWidgetModule } from '@common/fpv-widget/fpv-widget.module';\nimport { BaoyingFpvWidgetComponent } from './baoying-fpv-widget.component';\n\n@NgModule({\n declarations: [BaoyingFpvWidgetComponent],\n imports: [CommonModule, FpvWidgetModule],\n exports: [BaoyingFpvWidgetComponent],\n})\nexport class BaoyingFpvWidgetModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FpvReportService } from '@common/fpv-widget/fpv-report.service';\nimport { FpvReportState } from '@common/fpv-widget/state/fpv-report.state';\nimport { NgxsModule } from '@ngxs/store';\nimport { BaoyingFpvReportModule } from './baoying-fpv-report/baoying-fpv-report.module';\nimport { BaoyingFpvWidgetModule } from './baoying-fpv-widget/baoying-fpv-widget.module';\n\n@NgModule({\n declarations: [],\n imports: [CommonModule, NgxsModule.forFeature([FpvReportState]), BaoyingFpvReportModule, BaoyingFpvWidgetModule],\n exports: [BaoyingFpvReportModule, BaoyingFpvWidgetModule],\n providers: [FpvReportService],\n})\nexport class BaoyingFpvModule {}\n","import { ReportParam } from '@common/reports/reports.model';\nimport { DropdownMenuLink } from '@shared/dropdown/dropdown.model';\nimport { ChartConfiguration } from 'chart.js';\n\nexport class ChartMetaData {\n options: Partial;\n}\n\nexport interface BarChartMetadata extends ChartMetaData {\n categories: string[];\n hasNextPage: boolean;\n actionItems?: DropdownMenuLink[];\n filterValues: Partial;\n}\n\nexport const DEFAULT_BAR_CHART_OPTIONS = {\n type: 'bar',\n data: {\n labels: [],\n datasets: [],\n },\n options: {\n responsive: true,\n interaction: {\n intersect: false,\n mode: 'index',\n },\n plugins: {\n legend: {\n display: false,\n labels: {\n color: 'rgb(255, 99, 132)',\n },\n },\n tooltip: {\n enabled: true,\n backgroundColor: 'rgba(3,3,3,0.5)',\n titleFont: {\n size: 12,\n },\n titleColor: '#fff',\n bodyFont: {\n size: 11,\n },\n bodyColor: '#fff',\n cornerRadius: 7,\n callbacks: {\n // whatever we did before doesn't work so just return no title since that is what happens today\n title: () => '',\n },\n },\n },\n layout: {\n padding: {\n left: 10,\n right: 10,\n top: 30,\n bottom: 0,\n },\n },\n scales: {\n x: {\n stacked: false,\n ticks: {\n display: true,\n },\n },\n y: {\n stacked: false,\n beginAtZero: true,\n min: 0,\n max: 5000,\n ticks: {\n stepSize: 500,\n },\n },\n },\n },\n};\n","/*!\n * Chart.js v3.9.1\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nfunction noop() {}\nconst uid = (function() {\n let id = 0;\n return function() {\n return id++;\n };\n}());\nfunction isNullOrUndef(value) {\n return value === null || typeof value === 'undefined';\n}\nfunction isArray(value) {\n if (Array.isArray && Array.isArray(value)) {\n return true;\n }\n const type = Object.prototype.toString.call(value);\n if (type.slice(0, 7) === '[object' && type.slice(-6) === 'Array]') {\n return true;\n }\n return false;\n}\nfunction isObject(value) {\n return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n}\nconst isNumberFinite = (value) => (typeof value === 'number' || value instanceof Number) && isFinite(+value);\nfunction finiteOrDefault(value, defaultValue) {\n return isNumberFinite(value) ? value : defaultValue;\n}\nfunction valueOrDefault(value, defaultValue) {\n return typeof value === 'undefined' ? defaultValue : value;\n}\nconst toPercentage = (value, dimension) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100\n : value / dimension;\nconst toDimension = (value, dimension) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100 * dimension\n : +value;\nfunction callback(fn, args, thisArg) {\n if (fn && typeof fn.call === 'function') {\n return fn.apply(thisArg, args);\n }\n}\nfunction each(loopable, fn, thisArg, reverse) {\n let i, len, keys;\n if (isArray(loopable)) {\n len = loopable.length;\n if (reverse) {\n for (i = len - 1; i >= 0; i--) {\n fn.call(thisArg, loopable[i], i);\n }\n } else {\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[i], i);\n }\n }\n } else if (isObject(loopable)) {\n keys = Object.keys(loopable);\n len = keys.length;\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[keys[i]], keys[i]);\n }\n }\n}\nfunction _elementsEqual(a0, a1) {\n let i, ilen, v0, v1;\n if (!a0 || !a1 || a0.length !== a1.length) {\n return false;\n }\n for (i = 0, ilen = a0.length; i < ilen; ++i) {\n v0 = a0[i];\n v1 = a1[i];\n if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) {\n return false;\n }\n }\n return true;\n}\nfunction clone$1(source) {\n if (isArray(source)) {\n return source.map(clone$1);\n }\n if (isObject(source)) {\n const target = Object.create(null);\n const keys = Object.keys(source);\n const klen = keys.length;\n let k = 0;\n for (; k < klen; ++k) {\n target[keys[k]] = clone$1(source[keys[k]]);\n }\n return target;\n }\n return source;\n}\nfunction isValidKey(key) {\n return ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\n}\nfunction _merger(key, target, source, options) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n merge(tval, sval, options);\n } else {\n target[key] = clone$1(sval);\n }\n}\nfunction merge(target, source, options) {\n const sources = isArray(source) ? source : [source];\n const ilen = sources.length;\n if (!isObject(target)) {\n return target;\n }\n options = options || {};\n const merger = options.merger || _merger;\n for (let i = 0; i < ilen; ++i) {\n source = sources[i];\n if (!isObject(source)) {\n continue;\n }\n const keys = Object.keys(source);\n for (let k = 0, klen = keys.length; k < klen; ++k) {\n merger(keys[k], target, source, options);\n }\n }\n return target;\n}\nfunction mergeIf(target, source) {\n return merge(target, source, {merger: _mergerIf});\n}\nfunction _mergerIf(key, target, source) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n mergeIf(tval, sval);\n } else if (!Object.prototype.hasOwnProperty.call(target, key)) {\n target[key] = clone$1(sval);\n }\n}\nfunction _deprecated(scope, value, previous, current) {\n if (value !== undefined) {\n console.warn(scope + ': \"' + previous +\n\t\t\t'\" is deprecated. Please use \"' + current + '\" instead');\n }\n}\nconst keyResolvers = {\n '': v => v,\n x: o => o.x,\n y: o => o.y\n};\nfunction resolveObjectKey(obj, key) {\n const resolver = keyResolvers[key] || (keyResolvers[key] = _getKeyResolver(key));\n return resolver(obj);\n}\nfunction _getKeyResolver(key) {\n const keys = _splitKey(key);\n return obj => {\n for (const k of keys) {\n if (k === '') {\n break;\n }\n obj = obj && obj[k];\n }\n return obj;\n };\n}\nfunction _splitKey(key) {\n const parts = key.split('.');\n const keys = [];\n let tmp = '';\n for (const part of parts) {\n tmp += part;\n if (tmp.endsWith('\\\\')) {\n tmp = tmp.slice(0, -1) + '.';\n } else {\n keys.push(tmp);\n tmp = '';\n }\n }\n return keys;\n}\nfunction _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\nconst defined = (value) => typeof value !== 'undefined';\nconst isFunction = (value) => typeof value === 'function';\nconst setsEqual = (a, b) => {\n if (a.size !== b.size) {\n return false;\n }\n for (const item of a) {\n if (!b.has(item)) {\n return false;\n }\n }\n return true;\n};\nfunction _isClickEvent(e) {\n return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu';\n}\n\nconst PI = Math.PI;\nconst TAU = 2 * PI;\nconst PITAU = TAU + PI;\nconst INFINITY = Number.POSITIVE_INFINITY;\nconst RAD_PER_DEG = PI / 180;\nconst HALF_PI = PI / 2;\nconst QUARTER_PI = PI / 4;\nconst TWO_THIRDS_PI = PI * 2 / 3;\nconst log10 = Math.log10;\nconst sign = Math.sign;\nfunction niceNum(range) {\n const roundedRange = Math.round(range);\n range = almostEquals(range, roundedRange, range / 1000) ? roundedRange : range;\n const niceRange = Math.pow(10, Math.floor(log10(range)));\n const fraction = range / niceRange;\n const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n return niceFraction * niceRange;\n}\nfunction _factorize(value) {\n const result = [];\n const sqrt = Math.sqrt(value);\n let i;\n for (i = 1; i < sqrt; i++) {\n if (value % i === 0) {\n result.push(i);\n result.push(value / i);\n }\n }\n if (sqrt === (sqrt | 0)) {\n result.push(sqrt);\n }\n result.sort((a, b) => a - b).pop();\n return result;\n}\nfunction isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}\nfunction almostEquals(x, y, epsilon) {\n return Math.abs(x - y) < epsilon;\n}\nfunction almostWhole(x, epsilon) {\n const rounded = Math.round(x);\n return ((rounded - epsilon) <= x) && ((rounded + epsilon) >= x);\n}\nfunction _setMinAndMaxByKey(array, target, property) {\n let i, ilen, value;\n for (i = 0, ilen = array.length; i < ilen; i++) {\n value = array[i][property];\n if (!isNaN(value)) {\n target.min = Math.min(target.min, value);\n target.max = Math.max(target.max, value);\n }\n }\n}\nfunction toRadians(degrees) {\n return degrees * (PI / 180);\n}\nfunction toDegrees(radians) {\n return radians * (180 / PI);\n}\nfunction _decimalPlaces(x) {\n if (!isNumberFinite(x)) {\n return;\n }\n let e = 1;\n let p = 0;\n while (Math.round(x * e) / e !== x) {\n e *= 10;\n p++;\n }\n return p;\n}\nfunction getAngleFromPoint(centrePoint, anglePoint) {\n const distanceFromXCenter = anglePoint.x - centrePoint.x;\n const distanceFromYCenter = anglePoint.y - centrePoint.y;\n const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n if (angle < (-0.5 * PI)) {\n angle += TAU;\n }\n return {\n angle,\n distance: radialDistanceFromCenter\n };\n}\nfunction distanceBetweenPoints(pt1, pt2) {\n return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n}\nfunction _angleDiff(a, b) {\n return (a - b + PITAU) % TAU - PI;\n}\nfunction _normalizeAngle(a) {\n return (a % TAU + TAU) % TAU;\n}\nfunction _angleBetween(angle, start, end, sameAngleIsFullCircle) {\n const a = _normalizeAngle(angle);\n const s = _normalizeAngle(start);\n const e = _normalizeAngle(end);\n const angleToStart = _normalizeAngle(s - a);\n const angleToEnd = _normalizeAngle(e - a);\n const startToAngle = _normalizeAngle(a - s);\n const endToAngle = _normalizeAngle(a - e);\n return a === s || a === e || (sameAngleIsFullCircle && s === e)\n || (angleToStart > angleToEnd && startToAngle < endToAngle);\n}\nfunction _limitValue(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\nfunction _int16Range(value) {\n return _limitValue(value, -32768, 32767);\n}\nfunction _isBetween(value, start, end, epsilon = 1e-6) {\n return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon;\n}\n\nfunction _lookup(table, value, cmp) {\n cmp = cmp || ((index) => table[index] < value);\n let hi = table.length - 1;\n let lo = 0;\n let mid;\n while (hi - lo > 1) {\n mid = (lo + hi) >> 1;\n if (cmp(mid)) {\n lo = mid;\n } else {\n hi = mid;\n }\n }\n return {lo, hi};\n}\nconst _lookupByKey = (table, key, value, last) =>\n _lookup(table, value, last\n ? index => table[index][key] <= value\n : index => table[index][key] < value);\nconst _rlookupByKey = (table, key, value) =>\n _lookup(table, value, index => table[index][key] >= value);\nfunction _filterBetween(values, min, max) {\n let start = 0;\n let end = values.length;\n while (start < end && values[start] < min) {\n start++;\n }\n while (end > start && values[end - 1] > max) {\n end--;\n }\n return start > 0 || end < values.length\n ? values.slice(start, end)\n : values;\n}\nconst arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\nfunction listenArrayEvents(array, listener) {\n if (array._chartjs) {\n array._chartjs.listeners.push(listener);\n return;\n }\n Object.defineProperty(array, '_chartjs', {\n configurable: true,\n enumerable: false,\n value: {\n listeners: [listener]\n }\n });\n arrayEvents.forEach((key) => {\n const method = '_onData' + _capitalize(key);\n const base = array[key];\n Object.defineProperty(array, key, {\n configurable: true,\n enumerable: false,\n value(...args) {\n const res = base.apply(this, args);\n array._chartjs.listeners.forEach((object) => {\n if (typeof object[method] === 'function') {\n object[method](...args);\n }\n });\n return res;\n }\n });\n });\n}\nfunction unlistenArrayEvents(array, listener) {\n const stub = array._chartjs;\n if (!stub) {\n return;\n }\n const listeners = stub.listeners;\n const index = listeners.indexOf(listener);\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n if (listeners.length > 0) {\n return;\n }\n arrayEvents.forEach((key) => {\n delete array[key];\n });\n delete array._chartjs;\n}\nfunction _arrayUnique(items) {\n const set = new Set();\n let i, ilen;\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n set.add(items[i]);\n }\n if (set.size === ilen) {\n return items;\n }\n return Array.from(set);\n}\n\nfunction fontString(pixelSize, fontStyle, fontFamily) {\n return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n}\nconst requestAnimFrame = (function() {\n if (typeof window === 'undefined') {\n return function(callback) {\n return callback();\n };\n }\n return window.requestAnimationFrame;\n}());\nfunction throttled(fn, thisArg, updateFn) {\n const updateArgs = updateFn || ((args) => Array.prototype.slice.call(args));\n let ticking = false;\n let args = [];\n return function(...rest) {\n args = updateArgs(rest);\n if (!ticking) {\n ticking = true;\n requestAnimFrame.call(window, () => {\n ticking = false;\n fn.apply(thisArg, args);\n });\n }\n };\n}\nfunction debounce(fn, delay) {\n let timeout;\n return function(...args) {\n if (delay) {\n clearTimeout(timeout);\n timeout = setTimeout(fn, delay, args);\n } else {\n fn.apply(this, args);\n }\n return delay;\n };\n}\nconst _toLeftRightCenter = (align) => align === 'start' ? 'left' : align === 'end' ? 'right' : 'center';\nconst _alignStartEnd = (align, start, end) => align === 'start' ? start : align === 'end' ? end : (start + end) / 2;\nconst _textX = (align, left, right, rtl) => {\n const check = rtl ? 'left' : 'right';\n return align === check ? right : align === 'center' ? (left + right) / 2 : left;\n};\nfunction _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled) {\n const pointCount = points.length;\n let start = 0;\n let count = pointCount;\n if (meta._sorted) {\n const {iScale, _parsed} = meta;\n const axis = iScale.axis;\n const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(Math.min(\n _lookupByKey(_parsed, iScale.axis, min).lo,\n animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo),\n 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(Math.max(\n _lookupByKey(_parsed, iScale.axis, max, true).hi + 1,\n animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max), true).hi + 1),\n start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n }\n return {start, count};\n}\nfunction _scaleRangesChanged(meta) {\n const {xScale, yScale, _scaleRanges} = meta;\n const newRanges = {\n xmin: xScale.min,\n xmax: xScale.max,\n ymin: yScale.min,\n ymax: yScale.max\n };\n if (!_scaleRanges) {\n meta._scaleRanges = newRanges;\n return true;\n }\n const changed = _scaleRanges.xmin !== xScale.min\n\t\t|| _scaleRanges.xmax !== xScale.max\n\t\t|| _scaleRanges.ymin !== yScale.min\n\t\t|| _scaleRanges.ymax !== yScale.max;\n Object.assign(_scaleRanges, newRanges);\n return changed;\n}\n\nconst atEdge = (t) => t === 0 || t === 1;\nconst elasticIn = (t, s, p) => -(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p));\nconst elasticOut = (t, s, p) => Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1;\nconst effects = {\n linear: t => t,\n easeInQuad: t => t * t,\n easeOutQuad: t => -t * (t - 2),\n easeInOutQuad: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t\n : -0.5 * ((--t) * (t - 2) - 1),\n easeInCubic: t => t * t * t,\n easeOutCubic: t => (t -= 1) * t * t + 1,\n easeInOutCubic: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t\n : 0.5 * ((t -= 2) * t * t + 2),\n easeInQuart: t => t * t * t * t,\n easeOutQuart: t => -((t -= 1) * t * t * t - 1),\n easeInOutQuart: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t * t\n : -0.5 * ((t -= 2) * t * t * t - 2),\n easeInQuint: t => t * t * t * t * t,\n easeOutQuint: t => (t -= 1) * t * t * t * t + 1,\n easeInOutQuint: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t * t * t\n : 0.5 * ((t -= 2) * t * t * t * t + 2),\n easeInSine: t => -Math.cos(t * HALF_PI) + 1,\n easeOutSine: t => Math.sin(t * HALF_PI),\n easeInOutSine: t => -0.5 * (Math.cos(PI * t) - 1),\n easeInExpo: t => (t === 0) ? 0 : Math.pow(2, 10 * (t - 1)),\n easeOutExpo: t => (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1,\n easeInOutExpo: t => atEdge(t) ? t : t < 0.5\n ? 0.5 * Math.pow(2, 10 * (t * 2 - 1))\n : 0.5 * (-Math.pow(2, -10 * (t * 2 - 1)) + 2),\n easeInCirc: t => (t >= 1) ? t : -(Math.sqrt(1 - t * t) - 1),\n easeOutCirc: t => Math.sqrt(1 - (t -= 1) * t),\n easeInOutCirc: t => ((t /= 0.5) < 1)\n ? -0.5 * (Math.sqrt(1 - t * t) - 1)\n : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1),\n easeInElastic: t => atEdge(t) ? t : elasticIn(t, 0.075, 0.3),\n easeOutElastic: t => atEdge(t) ? t : elasticOut(t, 0.075, 0.3),\n easeInOutElastic(t) {\n const s = 0.1125;\n const p = 0.45;\n return atEdge(t) ? t :\n t < 0.5\n ? 0.5 * elasticIn(t * 2, s, p)\n : 0.5 + 0.5 * elasticOut(t * 2 - 1, s, p);\n },\n easeInBack(t) {\n const s = 1.70158;\n return t * t * ((s + 1) * t - s);\n },\n easeOutBack(t) {\n const s = 1.70158;\n return (t -= 1) * t * ((s + 1) * t + s) + 1;\n },\n easeInOutBack(t) {\n let s = 1.70158;\n if ((t /= 0.5) < 1) {\n return 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\n }\n return 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\n },\n easeInBounce: t => 1 - effects.easeOutBounce(1 - t),\n easeOutBounce(t) {\n const m = 7.5625;\n const d = 2.75;\n if (t < (1 / d)) {\n return m * t * t;\n }\n if (t < (2 / d)) {\n return m * (t -= (1.5 / d)) * t + 0.75;\n }\n if (t < (2.5 / d)) {\n return m * (t -= (2.25 / d)) * t + 0.9375;\n }\n return m * (t -= (2.625 / d)) * t + 0.984375;\n },\n easeInOutBounce: t => (t < 0.5)\n ? effects.easeInBounce(t * 2) * 0.5\n : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5,\n};\n\n/*!\n * @kurkle/color v0.2.1\n * https://github.com/kurkle/color#readme\n * (c) 2022 Jukka Kurkela\n * Released under the MIT License\n */\nfunction round(v) {\n return v + 0.5 | 0;\n}\nconst lim = (v, l, h) => Math.max(Math.min(v, h), l);\nfunction p2b(v) {\n return lim(round(v * 2.55), 0, 255);\n}\nfunction n2b(v) {\n return lim(round(v * 255), 0, 255);\n}\nfunction b2n(v) {\n return lim(round(v / 2.55) / 100, 0, 1);\n}\nfunction n2p(v) {\n return lim(round(v * 100), 0, 100);\n}\nconst map$1 = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15};\nconst hex = [...'0123456789ABCDEF'];\nconst h1 = b => hex[b & 0xF];\nconst h2 = b => hex[(b & 0xF0) >> 4] + hex[b & 0xF];\nconst eq = b => ((b & 0xF0) >> 4) === (b & 0xF);\nconst isShort = v => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\nfunction hexParse(str) {\n var len = str.length;\n var ret;\n if (str[0] === '#') {\n if (len === 4 || len === 5) {\n ret = {\n r: 255 & map$1[str[1]] * 17,\n g: 255 & map$1[str[2]] * 17,\n b: 255 & map$1[str[3]] * 17,\n a: len === 5 ? map$1[str[4]] * 17 : 255\n };\n } else if (len === 7 || len === 9) {\n ret = {\n r: map$1[str[1]] << 4 | map$1[str[2]],\n g: map$1[str[3]] << 4 | map$1[str[4]],\n b: map$1[str[5]] << 4 | map$1[str[6]],\n a: len === 9 ? (map$1[str[7]] << 4 | map$1[str[8]]) : 255\n };\n }\n }\n return ret;\n}\nconst alpha = (a, f) => a < 255 ? f(a) : '';\nfunction hexString(v) {\n var f = isShort(v) ? h1 : h2;\n return v\n ? '#' + f(v.r) + f(v.g) + f(v.b) + alpha(v.a, f)\n : undefined;\n}\nconst HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction hsl2rgbn(h, s, l) {\n const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n return [f(0), f(8), f(4)];\n}\nfunction hsv2rgbn(h, s, v) {\n const f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n return [f(5), f(3), f(1)];\n}\nfunction hwb2rgbn(h, w, b) {\n const rgb = hsl2rgbn(h, 1, 0.5);\n let i;\n if (w + b > 1) {\n i = 1 / (w + b);\n w *= i;\n b *= i;\n }\n for (i = 0; i < 3; i++) {\n rgb[i] *= 1 - w - b;\n rgb[i] += w;\n }\n return rgb;\n}\nfunction hueValue(r, g, b, d, max) {\n if (r === max) {\n return ((g - b) / d) + (g < b ? 6 : 0);\n }\n if (g === max) {\n return (b - r) / d + 2;\n }\n return (r - g) / d + 4;\n}\nfunction rgb2hsl(v) {\n const range = 255;\n const r = v.r / range;\n const g = v.g / range;\n const b = v.b / range;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n let h, s, d;\n if (max !== min) {\n d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n h = hueValue(r, g, b, d, max);\n h = h * 60 + 0.5;\n }\n return [h | 0, s || 0, l];\n}\nfunction calln(f, a, b, c) {\n return (\n Array.isArray(a)\n ? f(a[0], a[1], a[2])\n : f(a, b, c)\n ).map(n2b);\n}\nfunction hsl2rgb(h, s, l) {\n return calln(hsl2rgbn, h, s, l);\n}\nfunction hwb2rgb(h, w, b) {\n return calln(hwb2rgbn, h, w, b);\n}\nfunction hsv2rgb(h, s, v) {\n return calln(hsv2rgbn, h, s, v);\n}\nfunction hue(h) {\n return (h % 360 + 360) % 360;\n}\nfunction hueParse(str) {\n const m = HUE_RE.exec(str);\n let a = 255;\n let v;\n if (!m) {\n return;\n }\n if (m[5] !== v) {\n a = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n }\n const h = hue(+m[2]);\n const p1 = +m[3] / 100;\n const p2 = +m[4] / 100;\n if (m[1] === 'hwb') {\n v = hwb2rgb(h, p1, p2);\n } else if (m[1] === 'hsv') {\n v = hsv2rgb(h, p1, p2);\n } else {\n v = hsl2rgb(h, p1, p2);\n }\n return {\n r: v[0],\n g: v[1],\n b: v[2],\n a: a\n };\n}\nfunction rotate(v, deg) {\n var h = rgb2hsl(v);\n h[0] = hue(h[0] + deg);\n h = hsl2rgb(h);\n v.r = h[0];\n v.g = h[1];\n v.b = h[2];\n}\nfunction hslString(v) {\n if (!v) {\n return;\n }\n const a = rgb2hsl(v);\n const h = a[0];\n const s = n2p(a[1]);\n const l = n2p(a[2]);\n return v.a < 255\n ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})`\n : `hsl(${h}, ${s}%, ${l}%)`;\n}\nconst map = {\n x: 'dark',\n Z: 'light',\n Y: 're',\n X: 'blu',\n W: 'gr',\n V: 'medium',\n U: 'slate',\n A: 'ee',\n T: 'ol',\n S: 'or',\n B: 'ra',\n C: 'lateg',\n D: 'ights',\n R: 'in',\n Q: 'turquois',\n E: 'hi',\n P: 'ro',\n O: 'al',\n N: 'le',\n M: 'de',\n L: 'yello',\n F: 'en',\n K: 'ch',\n G: 'arks',\n H: 'ea',\n I: 'ightg',\n J: 'wh'\n};\nconst names$1 = {\n OiceXe: 'f0f8ff',\n antiquewEte: 'faebd7',\n aqua: 'ffff',\n aquamarRe: '7fffd4',\n azuY: 'f0ffff',\n beige: 'f5f5dc',\n bisque: 'ffe4c4',\n black: '0',\n blanKedOmond: 'ffebcd',\n Xe: 'ff',\n XeviTet: '8a2be2',\n bPwn: 'a52a2a',\n burlywood: 'deb887',\n caMtXe: '5f9ea0',\n KartYuse: '7fff00',\n KocTate: 'd2691e',\n cSO: 'ff7f50',\n cSnflowerXe: '6495ed',\n cSnsilk: 'fff8dc',\n crimson: 'dc143c',\n cyan: 'ffff',\n xXe: '8b',\n xcyan: '8b8b',\n xgTMnPd: 'b8860b',\n xWay: 'a9a9a9',\n xgYF: '6400',\n xgYy: 'a9a9a9',\n xkhaki: 'bdb76b',\n xmagFta: '8b008b',\n xTivegYF: '556b2f',\n xSange: 'ff8c00',\n xScEd: '9932cc',\n xYd: '8b0000',\n xsOmon: 'e9967a',\n xsHgYF: '8fbc8f',\n xUXe: '483d8b',\n xUWay: '2f4f4f',\n xUgYy: '2f4f4f',\n xQe: 'ced1',\n xviTet: '9400d3',\n dAppRk: 'ff1493',\n dApskyXe: 'bfff',\n dimWay: '696969',\n dimgYy: '696969',\n dodgerXe: '1e90ff',\n fiYbrick: 'b22222',\n flSOwEte: 'fffaf0',\n foYstWAn: '228b22',\n fuKsia: 'ff00ff',\n gaRsbSo: 'dcdcdc',\n ghostwEte: 'f8f8ff',\n gTd: 'ffd700',\n gTMnPd: 'daa520',\n Way: '808080',\n gYF: '8000',\n gYFLw: 'adff2f',\n gYy: '808080',\n honeyMw: 'f0fff0',\n hotpRk: 'ff69b4',\n RdianYd: 'cd5c5c',\n Rdigo: '4b0082',\n ivSy: 'fffff0',\n khaki: 'f0e68c',\n lavFMr: 'e6e6fa',\n lavFMrXsh: 'fff0f5',\n lawngYF: '7cfc00',\n NmoncEffon: 'fffacd',\n ZXe: 'add8e6',\n ZcSO: 'f08080',\n Zcyan: 'e0ffff',\n ZgTMnPdLw: 'fafad2',\n ZWay: 'd3d3d3',\n ZgYF: '90ee90',\n ZgYy: 'd3d3d3',\n ZpRk: 'ffb6c1',\n ZsOmon: 'ffa07a',\n ZsHgYF: '20b2aa',\n ZskyXe: '87cefa',\n ZUWay: '778899',\n ZUgYy: '778899',\n ZstAlXe: 'b0c4de',\n ZLw: 'ffffe0',\n lime: 'ff00',\n limegYF: '32cd32',\n lRF: 'faf0e6',\n magFta: 'ff00ff',\n maPon: '800000',\n VaquamarRe: '66cdaa',\n VXe: 'cd',\n VScEd: 'ba55d3',\n VpurpN: '9370db',\n VsHgYF: '3cb371',\n VUXe: '7b68ee',\n VsprRggYF: 'fa9a',\n VQe: '48d1cc',\n VviTetYd: 'c71585',\n midnightXe: '191970',\n mRtcYam: 'f5fffa',\n mistyPse: 'ffe4e1',\n moccasR: 'ffe4b5',\n navajowEte: 'ffdead',\n navy: '80',\n Tdlace: 'fdf5e6',\n Tive: '808000',\n TivedBb: '6b8e23',\n Sange: 'ffa500',\n SangeYd: 'ff4500',\n ScEd: 'da70d6',\n pOegTMnPd: 'eee8aa',\n pOegYF: '98fb98',\n pOeQe: 'afeeee',\n pOeviTetYd: 'db7093',\n papayawEp: 'ffefd5',\n pHKpuff: 'ffdab9',\n peru: 'cd853f',\n pRk: 'ffc0cb',\n plum: 'dda0dd',\n powMrXe: 'b0e0e6',\n purpN: '800080',\n YbeccapurpN: '663399',\n Yd: 'ff0000',\n Psybrown: 'bc8f8f',\n PyOXe: '4169e1',\n saddNbPwn: '8b4513',\n sOmon: 'fa8072',\n sandybPwn: 'f4a460',\n sHgYF: '2e8b57',\n sHshell: 'fff5ee',\n siFna: 'a0522d',\n silver: 'c0c0c0',\n skyXe: '87ceeb',\n UXe: '6a5acd',\n UWay: '708090',\n UgYy: '708090',\n snow: 'fffafa',\n sprRggYF: 'ff7f',\n stAlXe: '4682b4',\n tan: 'd2b48c',\n teO: '8080',\n tEstN: 'd8bfd8',\n tomato: 'ff6347',\n Qe: '40e0d0',\n viTet: 'ee82ee',\n JHt: 'f5deb3',\n wEte: 'ffffff',\n wEtesmoke: 'f5f5f5',\n Lw: 'ffff00',\n LwgYF: '9acd32'\n};\nfunction unpack() {\n const unpacked = {};\n const keys = Object.keys(names$1);\n const tkeys = Object.keys(map);\n let i, j, k, ok, nk;\n for (i = 0; i < keys.length; i++) {\n ok = nk = keys[i];\n for (j = 0; j < tkeys.length; j++) {\n k = tkeys[j];\n nk = nk.replace(k, map[k]);\n }\n k = parseInt(names$1[ok], 16);\n unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n }\n return unpacked;\n}\nlet names;\nfunction nameParse(str) {\n if (!names) {\n names = unpack();\n names.transparent = [0, 0, 0, 0];\n }\n const a = names[str.toLowerCase()];\n return a && {\n r: a[0],\n g: a[1],\n b: a[2],\n a: a.length === 4 ? a[3] : 255\n };\n}\nconst RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n const m = RGB_RE.exec(str);\n let a = 255;\n let r, g, b;\n if (!m) {\n return;\n }\n if (m[7] !== r) {\n const v = +m[7];\n a = m[8] ? p2b(v) : lim(v * 255, 0, 255);\n }\n r = +m[1];\n g = +m[3];\n b = +m[5];\n r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255));\n g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255));\n b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255));\n return {\n r: r,\n g: g,\n b: b,\n a: a\n };\n}\nfunction rgbString(v) {\n return v && (\n v.a < 255\n ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})`\n : `rgb(${v.r}, ${v.g}, ${v.b})`\n );\n}\nconst to = v => v <= 0.0031308 ? v * 12.92 : Math.pow(v, 1.0 / 2.4) * 1.055 - 0.055;\nconst from = v => v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\nfunction interpolate(rgb1, rgb2, t) {\n const r = from(b2n(rgb1.r));\n const g = from(b2n(rgb1.g));\n const b = from(b2n(rgb1.b));\n return {\n r: n2b(to(r + t * (from(b2n(rgb2.r)) - r))),\n g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),\n b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),\n a: rgb1.a + t * (rgb2.a - rgb1.a)\n };\n}\nfunction modHSL(v, i, ratio) {\n if (v) {\n let tmp = rgb2hsl(v);\n tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n tmp = hsl2rgb(tmp);\n v.r = tmp[0];\n v.g = tmp[1];\n v.b = tmp[2];\n }\n}\nfunction clone(v, proto) {\n return v ? Object.assign(proto || {}, v) : v;\n}\nfunction fromObject(input) {\n var v = {r: 0, g: 0, b: 0, a: 255};\n if (Array.isArray(input)) {\n if (input.length >= 3) {\n v = {r: input[0], g: input[1], b: input[2], a: 255};\n if (input.length > 3) {\n v.a = n2b(input[3]);\n }\n }\n } else {\n v = clone(input, {r: 0, g: 0, b: 0, a: 1});\n v.a = n2b(v.a);\n }\n return v;\n}\nfunction functionParse(str) {\n if (str.charAt(0) === 'r') {\n return rgbParse(str);\n }\n return hueParse(str);\n}\nclass Color {\n constructor(input) {\n if (input instanceof Color) {\n return input;\n }\n const type = typeof input;\n let v;\n if (type === 'object') {\n v = fromObject(input);\n } else if (type === 'string') {\n v = hexParse(input) || nameParse(input) || functionParse(input);\n }\n this._rgb = v;\n this._valid = !!v;\n }\n get valid() {\n return this._valid;\n }\n get rgb() {\n var v = clone(this._rgb);\n if (v) {\n v.a = b2n(v.a);\n }\n return v;\n }\n set rgb(obj) {\n this._rgb = fromObject(obj);\n }\n rgbString() {\n return this._valid ? rgbString(this._rgb) : undefined;\n }\n hexString() {\n return this._valid ? hexString(this._rgb) : undefined;\n }\n hslString() {\n return this._valid ? hslString(this._rgb) : undefined;\n }\n mix(color, weight) {\n if (color) {\n const c1 = this.rgb;\n const c2 = color.rgb;\n let w2;\n const p = weight === w2 ? 0.5 : weight;\n const w = 2 * p - 1;\n const a = c1.a - c2.a;\n const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n w2 = 1 - w1;\n c1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;\n c1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;\n c1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;\n c1.a = p * c1.a + (1 - p) * c2.a;\n this.rgb = c1;\n }\n return this;\n }\n interpolate(color, t) {\n if (color) {\n this._rgb = interpolate(this._rgb, color._rgb, t);\n }\n return this;\n }\n clone() {\n return new Color(this.rgb);\n }\n alpha(a) {\n this._rgb.a = n2b(a);\n return this;\n }\n clearer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 - ratio;\n return this;\n }\n greyscale() {\n const rgb = this._rgb;\n const val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n rgb.r = rgb.g = rgb.b = val;\n return this;\n }\n opaquer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 + ratio;\n return this;\n }\n negate() {\n const v = this._rgb;\n v.r = 255 - v.r;\n v.g = 255 - v.g;\n v.b = 255 - v.b;\n return this;\n }\n lighten(ratio) {\n modHSL(this._rgb, 2, ratio);\n return this;\n }\n darken(ratio) {\n modHSL(this._rgb, 2, -ratio);\n return this;\n }\n saturate(ratio) {\n modHSL(this._rgb, 1, ratio);\n return this;\n }\n desaturate(ratio) {\n modHSL(this._rgb, 1, -ratio);\n return this;\n }\n rotate(deg) {\n rotate(this._rgb, deg);\n return this;\n }\n}\nfunction index_esm(input) {\n return new Color(input);\n}\n\nfunction isPatternOrGradient(value) {\n if (value && typeof value === 'object') {\n const type = value.toString();\n return type === '[object CanvasPattern]' || type === '[object CanvasGradient]';\n }\n return false;\n}\nfunction color(value) {\n return isPatternOrGradient(value) ? value : index_esm(value);\n}\nfunction getHoverColor(value) {\n return isPatternOrGradient(value)\n ? value\n : index_esm(value).saturate(0.5).darken(0.1).hexString();\n}\n\nconst overrides = Object.create(null);\nconst descriptors = Object.create(null);\nfunction getScope$1(node, key) {\n if (!key) {\n return node;\n }\n const keys = key.split('.');\n for (let i = 0, n = keys.length; i < n; ++i) {\n const k = keys[i];\n node = node[k] || (node[k] = Object.create(null));\n }\n return node;\n}\nfunction set(root, scope, values) {\n if (typeof scope === 'string') {\n return merge(getScope$1(root, scope), values);\n }\n return merge(getScope$1(root, ''), scope);\n}\nclass Defaults {\n constructor(_descriptors) {\n this.animation = undefined;\n this.backgroundColor = 'rgba(0,0,0,0.1)';\n this.borderColor = 'rgba(0,0,0,0.1)';\n this.color = '#666';\n this.datasets = {};\n this.devicePixelRatio = (context) => context.chart.platform.getDevicePixelRatio();\n this.elements = {};\n this.events = [\n 'mousemove',\n 'mouseout',\n 'click',\n 'touchstart',\n 'touchmove'\n ];\n this.font = {\n family: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n size: 12,\n style: 'normal',\n lineHeight: 1.2,\n weight: null\n };\n this.hover = {};\n this.hoverBackgroundColor = (ctx, options) => getHoverColor(options.backgroundColor);\n this.hoverBorderColor = (ctx, options) => getHoverColor(options.borderColor);\n this.hoverColor = (ctx, options) => getHoverColor(options.color);\n this.indexAxis = 'x';\n this.interaction = {\n mode: 'nearest',\n intersect: true,\n includeInvisible: false\n };\n this.maintainAspectRatio = true;\n this.onHover = null;\n this.onClick = null;\n this.parsing = true;\n this.plugins = {};\n this.responsive = true;\n this.scale = undefined;\n this.scales = {};\n this.showLine = true;\n this.drawActiveElementsOnTop = true;\n this.describe(_descriptors);\n }\n set(scope, values) {\n return set(this, scope, values);\n }\n get(scope) {\n return getScope$1(this, scope);\n }\n describe(scope, values) {\n return set(descriptors, scope, values);\n }\n override(scope, values) {\n return set(overrides, scope, values);\n }\n route(scope, name, targetScope, targetName) {\n const scopeObject = getScope$1(this, scope);\n const targetScopeObject = getScope$1(this, targetScope);\n const privateName = '_' + name;\n Object.defineProperties(scopeObject, {\n [privateName]: {\n value: scopeObject[name],\n writable: true\n },\n [name]: {\n enumerable: true,\n get() {\n const local = this[privateName];\n const target = targetScopeObject[targetName];\n if (isObject(local)) {\n return Object.assign({}, target, local);\n }\n return valueOrDefault(local, target);\n },\n set(value) {\n this[privateName] = value;\n }\n }\n });\n }\n}\nvar defaults = new Defaults({\n _scriptable: (name) => !name.startsWith('on'),\n _indexable: (name) => name !== 'events',\n hover: {\n _fallback: 'interaction'\n },\n interaction: {\n _scriptable: false,\n _indexable: false,\n }\n});\n\nfunction toFontString(font) {\n if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) {\n return null;\n }\n return (font.style ? font.style + ' ' : '')\n\t\t+ (font.weight ? font.weight + ' ' : '')\n\t\t+ font.size + 'px '\n\t\t+ font.family;\n}\nfunction _measureText(ctx, data, gc, longest, string) {\n let textWidth = data[string];\n if (!textWidth) {\n textWidth = data[string] = ctx.measureText(string).width;\n gc.push(string);\n }\n if (textWidth > longest) {\n longest = textWidth;\n }\n return longest;\n}\nfunction _longestText(ctx, font, arrayOfThings, cache) {\n cache = cache || {};\n let data = cache.data = cache.data || {};\n let gc = cache.garbageCollect = cache.garbageCollect || [];\n if (cache.font !== font) {\n data = cache.data = {};\n gc = cache.garbageCollect = [];\n cache.font = font;\n }\n ctx.save();\n ctx.font = font;\n let longest = 0;\n const ilen = arrayOfThings.length;\n let i, j, jlen, thing, nestedThing;\n for (i = 0; i < ilen; i++) {\n thing = arrayOfThings[i];\n if (thing !== undefined && thing !== null && isArray(thing) !== true) {\n longest = _measureText(ctx, data, gc, longest, thing);\n } else if (isArray(thing)) {\n for (j = 0, jlen = thing.length; j < jlen; j++) {\n nestedThing = thing[j];\n if (nestedThing !== undefined && nestedThing !== null && !isArray(nestedThing)) {\n longest = _measureText(ctx, data, gc, longest, nestedThing);\n }\n }\n }\n }\n ctx.restore();\n const gcLen = gc.length / 2;\n if (gcLen > arrayOfThings.length) {\n for (i = 0; i < gcLen; i++) {\n delete data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n return longest;\n}\nfunction _alignPixel(chart, pixel, width) {\n const devicePixelRatio = chart.currentDevicePixelRatio;\n const halfWidth = width !== 0 ? Math.max(width / 2, 0.5) : 0;\n return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\n}\nfunction clearCanvas(canvas, ctx) {\n ctx = ctx || canvas.getContext('2d');\n ctx.save();\n ctx.resetTransform();\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.restore();\n}\nfunction drawPoint(ctx, options, x, y) {\n drawPointLegend(ctx, options, x, y, null);\n}\nfunction drawPointLegend(ctx, options, x, y, w) {\n let type, xOffset, yOffset, size, cornerRadius, width;\n const style = options.pointStyle;\n const rotation = options.rotation;\n const radius = options.radius;\n let rad = (rotation || 0) * RAD_PER_DEG;\n if (style && typeof style === 'object') {\n type = style.toString();\n if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n ctx.save();\n ctx.translate(x, y);\n ctx.rotate(rad);\n ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n ctx.restore();\n return;\n }\n }\n if (isNaN(radius) || radius <= 0) {\n return;\n }\n ctx.beginPath();\n switch (style) {\n default:\n if (w) {\n ctx.ellipse(x, y, w / 2, radius, 0, 0, TAU);\n } else {\n ctx.arc(x, y, radius, 0, TAU);\n }\n ctx.closePath();\n break;\n case 'triangle':\n ctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n ctx.closePath();\n break;\n case 'rectRounded':\n cornerRadius = radius * 0.516;\n size = radius - cornerRadius;\n xOffset = Math.cos(rad + QUARTER_PI) * size;\n yOffset = Math.sin(rad + QUARTER_PI) * size;\n ctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n ctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n ctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n ctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n ctx.closePath();\n break;\n case 'rect':\n if (!rotation) {\n size = Math.SQRT1_2 * radius;\n width = w ? w / 2 : size;\n ctx.rect(x - width, y - size, 2 * width, 2 * size);\n break;\n }\n rad += QUARTER_PI;\n case 'rectRot':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + yOffset, y - xOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n ctx.closePath();\n break;\n case 'crossRot':\n rad += QUARTER_PI;\n case 'cross':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n break;\n case 'star':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n rad += QUARTER_PI;\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n break;\n case 'line':\n xOffset = w ? w / 2 : Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n break;\n case 'dash':\n ctx.moveTo(x, y);\n ctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius);\n break;\n }\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n}\nfunction _isPointInArea(point, area, margin) {\n margin = margin || 0.5;\n return !area || (point && point.x > area.left - margin && point.x < area.right + margin &&\n\t\tpoint.y > area.top - margin && point.y < area.bottom + margin);\n}\nfunction clipArea(ctx, area) {\n ctx.save();\n ctx.beginPath();\n ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n ctx.clip();\n}\nfunction unclipArea(ctx) {\n ctx.restore();\n}\nfunction _steppedLineTo(ctx, previous, target, flip, mode) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n if (mode === 'middle') {\n const midpoint = (previous.x + target.x) / 2.0;\n ctx.lineTo(midpoint, previous.y);\n ctx.lineTo(midpoint, target.y);\n } else if (mode === 'after' !== !!flip) {\n ctx.lineTo(previous.x, target.y);\n } else {\n ctx.lineTo(target.x, previous.y);\n }\n ctx.lineTo(target.x, target.y);\n}\nfunction _bezierCurveTo(ctx, previous, target, flip) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n ctx.bezierCurveTo(\n flip ? previous.cp1x : previous.cp2x,\n flip ? previous.cp1y : previous.cp2y,\n flip ? target.cp2x : target.cp1x,\n flip ? target.cp2y : target.cp1y,\n target.x,\n target.y);\n}\nfunction renderText(ctx, text, x, y, font, opts = {}) {\n const lines = isArray(text) ? text : [text];\n const stroke = opts.strokeWidth > 0 && opts.strokeColor !== '';\n let i, line;\n ctx.save();\n ctx.font = font.string;\n setRenderOpts(ctx, opts);\n for (i = 0; i < lines.length; ++i) {\n line = lines[i];\n if (stroke) {\n if (opts.strokeColor) {\n ctx.strokeStyle = opts.strokeColor;\n }\n if (!isNullOrUndef(opts.strokeWidth)) {\n ctx.lineWidth = opts.strokeWidth;\n }\n ctx.strokeText(line, x, y, opts.maxWidth);\n }\n ctx.fillText(line, x, y, opts.maxWidth);\n decorateText(ctx, x, y, line, opts);\n y += font.lineHeight;\n }\n ctx.restore();\n}\nfunction setRenderOpts(ctx, opts) {\n if (opts.translation) {\n ctx.translate(opts.translation[0], opts.translation[1]);\n }\n if (!isNullOrUndef(opts.rotation)) {\n ctx.rotate(opts.rotation);\n }\n if (opts.color) {\n ctx.fillStyle = opts.color;\n }\n if (opts.textAlign) {\n ctx.textAlign = opts.textAlign;\n }\n if (opts.textBaseline) {\n ctx.textBaseline = opts.textBaseline;\n }\n}\nfunction decorateText(ctx, x, y, line, opts) {\n if (opts.strikethrough || opts.underline) {\n const metrics = ctx.measureText(line);\n const left = x - metrics.actualBoundingBoxLeft;\n const right = x + metrics.actualBoundingBoxRight;\n const top = y - metrics.actualBoundingBoxAscent;\n const bottom = y + metrics.actualBoundingBoxDescent;\n const yDecoration = opts.strikethrough ? (top + bottom) / 2 : bottom;\n ctx.strokeStyle = ctx.fillStyle;\n ctx.beginPath();\n ctx.lineWidth = opts.decorationWidth || 2;\n ctx.moveTo(left, yDecoration);\n ctx.lineTo(right, yDecoration);\n ctx.stroke();\n }\n}\nfunction addRoundedRectPath(ctx, rect) {\n const {x, y, w, h, radius} = rect;\n ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, -HALF_PI, PI, true);\n ctx.lineTo(x, y + h - radius.bottomLeft);\n ctx.arc(x + radius.bottomLeft, y + h - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true);\n ctx.lineTo(x + w - radius.bottomRight, y + h);\n ctx.arc(x + w - radius.bottomRight, y + h - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true);\n ctx.lineTo(x + w, y + radius.topRight);\n ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true);\n ctx.lineTo(x + radius.topLeft, y);\n}\n\nconst LINE_HEIGHT = new RegExp(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\nconst FONT_STYLE = new RegExp(/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/);\nfunction toLineHeight(value, size) {\n const matches = ('' + value).match(LINE_HEIGHT);\n if (!matches || matches[1] === 'normal') {\n return size * 1.2;\n }\n value = +matches[2];\n switch (matches[3]) {\n case 'px':\n return value;\n case '%':\n value /= 100;\n break;\n }\n return size * value;\n}\nconst numberOrZero = v => +v || 0;\nfunction _readValueToProps(value, props) {\n const ret = {};\n const objProps = isObject(props);\n const keys = objProps ? Object.keys(props) : props;\n const read = isObject(value)\n ? objProps\n ? prop => valueOrDefault(value[prop], value[props[prop]])\n : prop => value[prop]\n : () => value;\n for (const prop of keys) {\n ret[prop] = numberOrZero(read(prop));\n }\n return ret;\n}\nfunction toTRBL(value) {\n return _readValueToProps(value, {top: 'y', right: 'x', bottom: 'y', left: 'x'});\n}\nfunction toTRBLCorners(value) {\n return _readValueToProps(value, ['topLeft', 'topRight', 'bottomLeft', 'bottomRight']);\n}\nfunction toPadding(value) {\n const obj = toTRBL(value);\n obj.width = obj.left + obj.right;\n obj.height = obj.top + obj.bottom;\n return obj;\n}\nfunction toFont(options, fallback) {\n options = options || {};\n fallback = fallback || defaults.font;\n let size = valueOrDefault(options.size, fallback.size);\n if (typeof size === 'string') {\n size = parseInt(size, 10);\n }\n let style = valueOrDefault(options.style, fallback.style);\n if (style && !('' + style).match(FONT_STYLE)) {\n console.warn('Invalid font style specified: \"' + style + '\"');\n style = '';\n }\n const font = {\n family: valueOrDefault(options.family, fallback.family),\n lineHeight: toLineHeight(valueOrDefault(options.lineHeight, fallback.lineHeight), size),\n size,\n style,\n weight: valueOrDefault(options.weight, fallback.weight),\n string: ''\n };\n font.string = toFontString(font);\n return font;\n}\nfunction resolve(inputs, context, index, info) {\n let cacheable = true;\n let i, ilen, value;\n for (i = 0, ilen = inputs.length; i < ilen; ++i) {\n value = inputs[i];\n if (value === undefined) {\n continue;\n }\n if (context !== undefined && typeof value === 'function') {\n value = value(context);\n cacheable = false;\n }\n if (index !== undefined && isArray(value)) {\n value = value[index % value.length];\n cacheable = false;\n }\n if (value !== undefined) {\n if (info && !cacheable) {\n info.cacheable = false;\n }\n return value;\n }\n }\n}\nfunction _addGrace(minmax, grace, beginAtZero) {\n const {min, max} = minmax;\n const change = toDimension(grace, (max - min) / 2);\n const keepZero = (value, add) => beginAtZero && value === 0 ? 0 : value + add;\n return {\n min: keepZero(min, -Math.abs(change)),\n max: keepZero(max, change)\n };\n}\nfunction createContext(parentContext, context) {\n return Object.assign(Object.create(parentContext), context);\n}\n\nfunction _createResolver(scopes, prefixes = [''], rootScopes = scopes, fallback, getTarget = () => scopes[0]) {\n if (!defined(fallback)) {\n fallback = _resolve('_fallback', scopes);\n }\n const cache = {\n [Symbol.toStringTag]: 'Object',\n _cacheable: true,\n _scopes: scopes,\n _rootScopes: rootScopes,\n _fallback: fallback,\n _getTarget: getTarget,\n override: (scope) => _createResolver([scope, ...scopes], prefixes, rootScopes, fallback),\n };\n return new Proxy(cache, {\n deleteProperty(target, prop) {\n delete target[prop];\n delete target._keys;\n delete scopes[0][prop];\n return true;\n },\n get(target, prop) {\n return _cached(target, prop,\n () => _resolveWithPrefixes(prop, prefixes, scopes, target));\n },\n getOwnPropertyDescriptor(target, prop) {\n return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n },\n getPrototypeOf() {\n return Reflect.getPrototypeOf(scopes[0]);\n },\n has(target, prop) {\n return getKeysFromAllScopes(target).includes(prop);\n },\n ownKeys(target) {\n return getKeysFromAllScopes(target);\n },\n set(target, prop, value) {\n const storage = target._storage || (target._storage = getTarget());\n target[prop] = storage[prop] = value;\n delete target._keys;\n return true;\n }\n });\n}\nfunction _attachContext(proxy, context, subProxy, descriptorDefaults) {\n const cache = {\n _cacheable: false,\n _proxy: proxy,\n _context: context,\n _subProxy: subProxy,\n _stack: new Set(),\n _descriptors: _descriptors(proxy, descriptorDefaults),\n setContext: (ctx) => _attachContext(proxy, ctx, subProxy, descriptorDefaults),\n override: (scope) => _attachContext(proxy.override(scope), context, subProxy, descriptorDefaults)\n };\n return new Proxy(cache, {\n deleteProperty(target, prop) {\n delete target[prop];\n delete proxy[prop];\n return true;\n },\n get(target, prop, receiver) {\n return _cached(target, prop,\n () => _resolveWithContext(target, prop, receiver));\n },\n getOwnPropertyDescriptor(target, prop) {\n return target._descriptors.allKeys\n ? Reflect.has(proxy, prop) ? {enumerable: true, configurable: true} : undefined\n : Reflect.getOwnPropertyDescriptor(proxy, prop);\n },\n getPrototypeOf() {\n return Reflect.getPrototypeOf(proxy);\n },\n has(target, prop) {\n return Reflect.has(proxy, prop);\n },\n ownKeys() {\n return Reflect.ownKeys(proxy);\n },\n set(target, prop, value) {\n proxy[prop] = value;\n delete target[prop];\n return true;\n }\n });\n}\nfunction _descriptors(proxy, defaults = {scriptable: true, indexable: true}) {\n const {_scriptable = defaults.scriptable, _indexable = defaults.indexable, _allKeys = defaults.allKeys} = proxy;\n return {\n allKeys: _allKeys,\n scriptable: _scriptable,\n indexable: _indexable,\n isScriptable: isFunction(_scriptable) ? _scriptable : () => _scriptable,\n isIndexable: isFunction(_indexable) ? _indexable : () => _indexable\n };\n}\nconst readKey = (prefix, name) => prefix ? prefix + _capitalize(name) : name;\nconst needsSubResolver = (prop, value) => isObject(value) && prop !== 'adapters' &&\n (Object.getPrototypeOf(value) === null || value.constructor === Object);\nfunction _cached(target, prop, resolve) {\n if (Object.prototype.hasOwnProperty.call(target, prop)) {\n return target[prop];\n }\n const value = resolve();\n target[prop] = value;\n return value;\n}\nfunction _resolveWithContext(target, prop, receiver) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n let value = _proxy[prop];\n if (isFunction(value) && descriptors.isScriptable(prop)) {\n value = _resolveScriptable(prop, value, target, receiver);\n }\n if (isArray(value) && value.length) {\n value = _resolveArray(prop, value, target, descriptors.isIndexable);\n }\n if (needsSubResolver(prop, value)) {\n value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors);\n }\n return value;\n}\nfunction _resolveScriptable(prop, value, target, receiver) {\n const {_proxy, _context, _subProxy, _stack} = target;\n if (_stack.has(prop)) {\n throw new Error('Recursion detected: ' + Array.from(_stack).join('->') + '->' + prop);\n }\n _stack.add(prop);\n value = value(_context, _subProxy || receiver);\n _stack.delete(prop);\n if (needsSubResolver(prop, value)) {\n value = createSubResolver(_proxy._scopes, _proxy, prop, value);\n }\n return value;\n}\nfunction _resolveArray(prop, value, target, isIndexable) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n if (defined(_context.index) && isIndexable(prop)) {\n value = value[_context.index % value.length];\n } else if (isObject(value[0])) {\n const arr = value;\n const scopes = _proxy._scopes.filter(s => s !== arr);\n value = [];\n for (const item of arr) {\n const resolver = createSubResolver(scopes, _proxy, prop, item);\n value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors));\n }\n }\n return value;\n}\nfunction resolveFallback(fallback, prop, value) {\n return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\nconst getScope = (key, parent) => key === true ? parent\n : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\nfunction addScopes(set, parentScopes, key, parentFallback, value) {\n for (const parent of parentScopes) {\n const scope = getScope(key, parent);\n if (scope) {\n set.add(scope);\n const fallback = resolveFallback(scope._fallback, key, value);\n if (defined(fallback) && fallback !== key && fallback !== parentFallback) {\n return fallback;\n }\n } else if (scope === false && defined(parentFallback) && key !== parentFallback) {\n return null;\n }\n }\n return false;\n}\nfunction createSubResolver(parentScopes, resolver, prop, value) {\n const rootScopes = resolver._rootScopes;\n const fallback = resolveFallback(resolver._fallback, prop, value);\n const allScopes = [...parentScopes, ...rootScopes];\n const set = new Set();\n set.add(value);\n let key = addScopesFromKey(set, allScopes, prop, fallback || prop, value);\n if (key === null) {\n return false;\n }\n if (defined(fallback) && fallback !== prop) {\n key = addScopesFromKey(set, allScopes, fallback, key, value);\n if (key === null) {\n return false;\n }\n }\n return _createResolver(Array.from(set), [''], rootScopes, fallback,\n () => subGetTarget(resolver, prop, value));\n}\nfunction addScopesFromKey(set, allScopes, key, fallback, item) {\n while (key) {\n key = addScopes(set, allScopes, key, fallback, item);\n }\n return key;\n}\nfunction subGetTarget(resolver, prop, value) {\n const parent = resolver._getTarget();\n if (!(prop in parent)) {\n parent[prop] = {};\n }\n const target = parent[prop];\n if (isArray(target) && isObject(value)) {\n return value;\n }\n return target;\n}\nfunction _resolveWithPrefixes(prop, prefixes, scopes, proxy) {\n let value;\n for (const prefix of prefixes) {\n value = _resolve(readKey(prefix, prop), scopes);\n if (defined(value)) {\n return needsSubResolver(prop, value)\n ? createSubResolver(scopes, proxy, prop, value)\n : value;\n }\n }\n}\nfunction _resolve(key, scopes) {\n for (const scope of scopes) {\n if (!scope) {\n continue;\n }\n const value = scope[key];\n if (defined(value)) {\n return value;\n }\n }\n}\nfunction getKeysFromAllScopes(target) {\n let keys = target._keys;\n if (!keys) {\n keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n }\n return keys;\n}\nfunction resolveKeysFromAllScopes(scopes) {\n const set = new Set();\n for (const scope of scopes) {\n for (const key of Object.keys(scope).filter(k => !k.startsWith('_'))) {\n set.add(key);\n }\n }\n return Array.from(set);\n}\nfunction _parseObjectDataRadialScale(meta, data, start, count) {\n const {iScale} = meta;\n const {key = 'r'} = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n r: iScale.parse(resolveObjectKey(item, key), index)\n };\n }\n return parsed;\n}\n\nconst EPSILON = Number.EPSILON || 1e-14;\nconst getPoint = (points, i) => i < points.length && !points[i].skip && points[i];\nconst getValueAxis = (indexAxis) => indexAxis === 'x' ? 'y' : 'x';\nfunction splineCurve(firstPoint, middlePoint, afterPoint, t) {\n const previous = firstPoint.skip ? middlePoint : firstPoint;\n const current = middlePoint;\n const next = afterPoint.skip ? middlePoint : afterPoint;\n const d01 = distanceBetweenPoints(current, previous);\n const d12 = distanceBetweenPoints(next, current);\n let s01 = d01 / (d01 + d12);\n let s12 = d12 / (d01 + d12);\n s01 = isNaN(s01) ? 0 : s01;\n s12 = isNaN(s12) ? 0 : s12;\n const fa = t * s01;\n const fb = t * s12;\n return {\n previous: {\n x: current.x - fa * (next.x - previous.x),\n y: current.y - fa * (next.y - previous.y)\n },\n next: {\n x: current.x + fb * (next.x - previous.x),\n y: current.y + fb * (next.y - previous.y)\n }\n };\n}\nfunction monotoneAdjust(points, deltaK, mK) {\n const pointsLen = points.length;\n let alphaK, betaK, tauK, squaredMagnitude, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen - 1; ++i) {\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent || !pointAfter) {\n continue;\n }\n if (almostEquals(deltaK[i], 0, EPSILON)) {\n mK[i] = mK[i + 1] = 0;\n continue;\n }\n alphaK = mK[i] / deltaK[i];\n betaK = mK[i + 1] / deltaK[i];\n squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n if (squaredMagnitude <= 9) {\n continue;\n }\n tauK = 3 / Math.sqrt(squaredMagnitude);\n mK[i] = alphaK * tauK * deltaK[i];\n mK[i + 1] = betaK * tauK * deltaK[i];\n }\n}\nfunction monotoneCompute(points, mK, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n let delta, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n const iPixel = pointCurrent[indexAxis];\n const vPixel = pointCurrent[valueAxis];\n if (pointBefore) {\n delta = (iPixel - pointBefore[indexAxis]) / 3;\n pointCurrent[`cp1${indexAxis}`] = iPixel - delta;\n pointCurrent[`cp1${valueAxis}`] = vPixel - delta * mK[i];\n }\n if (pointAfter) {\n delta = (pointAfter[indexAxis] - iPixel) / 3;\n pointCurrent[`cp2${indexAxis}`] = iPixel + delta;\n pointCurrent[`cp2${valueAxis}`] = vPixel + delta * mK[i];\n }\n }\n}\nfunction splineCurveMonotone(points, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n const deltaK = Array(pointsLen).fill(0);\n const mK = Array(pointsLen);\n let i, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n if (pointAfter) {\n const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis];\n deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0;\n }\n mK[i] = !pointBefore ? deltaK[i]\n : !pointAfter ? deltaK[i - 1]\n : (sign(deltaK[i - 1]) !== sign(deltaK[i])) ? 0\n : (deltaK[i - 1] + deltaK[i]) / 2;\n }\n monotoneAdjust(points, deltaK, mK);\n monotoneCompute(points, mK, indexAxis);\n}\nfunction capControlPoint(pt, min, max) {\n return Math.max(Math.min(pt, max), min);\n}\nfunction capBezierPoints(points, area) {\n let i, ilen, point, inArea, inAreaPrev;\n let inAreaNext = _isPointInArea(points[0], area);\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n inAreaPrev = inArea;\n inArea = inAreaNext;\n inAreaNext = i < ilen - 1 && _isPointInArea(points[i + 1], area);\n if (!inArea) {\n continue;\n }\n point = points[i];\n if (inAreaPrev) {\n point.cp1x = capControlPoint(point.cp1x, area.left, area.right);\n point.cp1y = capControlPoint(point.cp1y, area.top, area.bottom);\n }\n if (inAreaNext) {\n point.cp2x = capControlPoint(point.cp2x, area.left, area.right);\n point.cp2y = capControlPoint(point.cp2y, area.top, area.bottom);\n }\n }\n}\nfunction _updateBezierControlPoints(points, options, area, loop, indexAxis) {\n let i, ilen, point, controlPoints;\n if (options.spanGaps) {\n points = points.filter((pt) => !pt.skip);\n }\n if (options.cubicInterpolationMode === 'monotone') {\n splineCurveMonotone(points, indexAxis);\n } else {\n let prev = loop ? points[points.length - 1] : points[0];\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n point = points[i];\n controlPoints = splineCurve(\n prev,\n point,\n points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen],\n options.tension\n );\n point.cp1x = controlPoints.previous.x;\n point.cp1y = controlPoints.previous.y;\n point.cp2x = controlPoints.next.x;\n point.cp2y = controlPoints.next.y;\n prev = point;\n }\n }\n if (options.capBezierPoints) {\n capBezierPoints(points, area);\n }\n}\n\nfunction _isDomSupported() {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\nfunction _getParentNode(domNode) {\n let parent = domNode.parentNode;\n if (parent && parent.toString() === '[object ShadowRoot]') {\n parent = parent.host;\n }\n return parent;\n}\nfunction parseMaxStyle(styleValue, node, parentProperty) {\n let valueInPixels;\n if (typeof styleValue === 'string') {\n valueInPixels = parseInt(styleValue, 10);\n if (styleValue.indexOf('%') !== -1) {\n valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n }\n } else {\n valueInPixels = styleValue;\n }\n return valueInPixels;\n}\nconst getComputedStyle = (element) => window.getComputedStyle(element, null);\nfunction getStyle(el, property) {\n return getComputedStyle(el).getPropertyValue(property);\n}\nconst positions = ['top', 'right', 'bottom', 'left'];\nfunction getPositionedStyle(styles, style, suffix) {\n const result = {};\n suffix = suffix ? '-' + suffix : '';\n for (let i = 0; i < 4; i++) {\n const pos = positions[i];\n result[pos] = parseFloat(styles[style + '-' + pos + suffix]) || 0;\n }\n result.width = result.left + result.right;\n result.height = result.top + result.bottom;\n return result;\n}\nconst useOffsetPos = (x, y, target) => (x > 0 || y > 0) && (!target || !target.shadowRoot);\nfunction getCanvasPosition(e, canvas) {\n const touches = e.touches;\n const source = touches && touches.length ? touches[0] : e;\n const {offsetX, offsetY} = source;\n let box = false;\n let x, y;\n if (useOffsetPos(offsetX, offsetY, e.target)) {\n x = offsetX;\n y = offsetY;\n } else {\n const rect = canvas.getBoundingClientRect();\n x = source.clientX - rect.left;\n y = source.clientY - rect.top;\n box = true;\n }\n return {x, y, box};\n}\nfunction getRelativePosition(evt, chart) {\n if ('native' in evt) {\n return evt;\n }\n const {canvas, currentDevicePixelRatio} = chart;\n const style = getComputedStyle(canvas);\n const borderBox = style.boxSizing === 'border-box';\n const paddings = getPositionedStyle(style, 'padding');\n const borders = getPositionedStyle(style, 'border', 'width');\n const {x, y, box} = getCanvasPosition(evt, canvas);\n const xOffset = paddings.left + (box && borders.left);\n const yOffset = paddings.top + (box && borders.top);\n let {width, height} = chart;\n if (borderBox) {\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n return {\n x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio),\n y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio)\n };\n}\nfunction getContainerSize(canvas, width, height) {\n let maxWidth, maxHeight;\n if (width === undefined || height === undefined) {\n const container = _getParentNode(canvas);\n if (!container) {\n width = canvas.clientWidth;\n height = canvas.clientHeight;\n } else {\n const rect = container.getBoundingClientRect();\n const containerStyle = getComputedStyle(container);\n const containerBorder = getPositionedStyle(containerStyle, 'border', 'width');\n const containerPadding = getPositionedStyle(containerStyle, 'padding');\n width = rect.width - containerPadding.width - containerBorder.width;\n height = rect.height - containerPadding.height - containerBorder.height;\n maxWidth = parseMaxStyle(containerStyle.maxWidth, container, 'clientWidth');\n maxHeight = parseMaxStyle(containerStyle.maxHeight, container, 'clientHeight');\n }\n }\n return {\n width,\n height,\n maxWidth: maxWidth || INFINITY,\n maxHeight: maxHeight || INFINITY\n };\n}\nconst round1 = v => Math.round(v * 10) / 10;\nfunction getMaximumSize(canvas, bbWidth, bbHeight, aspectRatio) {\n const style = getComputedStyle(canvas);\n const margins = getPositionedStyle(style, 'margin');\n const maxWidth = parseMaxStyle(style.maxWidth, canvas, 'clientWidth') || INFINITY;\n const maxHeight = parseMaxStyle(style.maxHeight, canvas, 'clientHeight') || INFINITY;\n const containerSize = getContainerSize(canvas, bbWidth, bbHeight);\n let {width, height} = containerSize;\n if (style.boxSizing === 'content-box') {\n const borders = getPositionedStyle(style, 'border', 'width');\n const paddings = getPositionedStyle(style, 'padding');\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n width = Math.max(0, width - margins.width);\n height = Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height - margins.height);\n width = round1(Math.min(width, maxWidth, containerSize.maxWidth));\n height = round1(Math.min(height, maxHeight, containerSize.maxHeight));\n if (width && !height) {\n height = round1(width / 2);\n }\n return {\n width,\n height\n };\n}\nfunction retinaScale(chart, forceRatio, forceStyle) {\n const pixelRatio = forceRatio || 1;\n const deviceHeight = Math.floor(chart.height * pixelRatio);\n const deviceWidth = Math.floor(chart.width * pixelRatio);\n chart.height = deviceHeight / pixelRatio;\n chart.width = deviceWidth / pixelRatio;\n const canvas = chart.canvas;\n if (canvas.style && (forceStyle || (!canvas.style.height && !canvas.style.width))) {\n canvas.style.height = `${chart.height}px`;\n canvas.style.width = `${chart.width}px`;\n }\n if (chart.currentDevicePixelRatio !== pixelRatio\n || canvas.height !== deviceHeight\n || canvas.width !== deviceWidth) {\n chart.currentDevicePixelRatio = pixelRatio;\n canvas.height = deviceHeight;\n canvas.width = deviceWidth;\n chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n return true;\n }\n return false;\n}\nconst supportsEventListenerOptions = (function() {\n let passiveSupported = false;\n try {\n const options = {\n get passive() {\n passiveSupported = true;\n return false;\n }\n };\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n } catch (e) {\n }\n return passiveSupported;\n}());\nfunction readUsedSize(element, property) {\n const value = getStyle(element, property);\n const matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n return matches ? +matches[1] : undefined;\n}\n\nfunction _pointInLine(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: p1.y + t * (p2.y - p1.y)\n };\n}\nfunction _steppedInterpolation(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: mode === 'middle' ? t < 0.5 ? p1.y : p2.y\n : mode === 'after' ? t < 1 ? p1.y : p2.y\n : t > 0 ? p2.y : p1.y\n };\n}\nfunction _bezierInterpolation(p1, p2, t, mode) {\n const cp1 = {x: p1.cp2x, y: p1.cp2y};\n const cp2 = {x: p2.cp1x, y: p2.cp1y};\n const a = _pointInLine(p1, cp1, t);\n const b = _pointInLine(cp1, cp2, t);\n const c = _pointInLine(cp2, p2, t);\n const d = _pointInLine(a, b, t);\n const e = _pointInLine(b, c, t);\n return _pointInLine(d, e, t);\n}\n\nconst intlCache = new Map();\nfunction getNumberFormat(locale, options) {\n options = options || {};\n const cacheKey = locale + JSON.stringify(options);\n let formatter = intlCache.get(cacheKey);\n if (!formatter) {\n formatter = new Intl.NumberFormat(locale, options);\n intlCache.set(cacheKey, formatter);\n }\n return formatter;\n}\nfunction formatNumber(num, locale, options) {\n return getNumberFormat(locale, options).format(num);\n}\n\nconst getRightToLeftAdapter = function(rectX, width) {\n return {\n x(x) {\n return rectX + rectX + width - x;\n },\n setWidth(w) {\n width = w;\n },\n textAlign(align) {\n if (align === 'center') {\n return align;\n }\n return align === 'right' ? 'left' : 'right';\n },\n xPlus(x, value) {\n return x - value;\n },\n leftForLtr(x, itemWidth) {\n return x - itemWidth;\n },\n };\n};\nconst getLeftToRightAdapter = function() {\n return {\n x(x) {\n return x;\n },\n setWidth(w) {\n },\n textAlign(align) {\n return align;\n },\n xPlus(x, value) {\n return x + value;\n },\n leftForLtr(x, _itemWidth) {\n return x;\n },\n };\n};\nfunction getRtlAdapter(rtl, rectX, width) {\n return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter();\n}\nfunction overrideTextDirection(ctx, direction) {\n let style, original;\n if (direction === 'ltr' || direction === 'rtl') {\n style = ctx.canvas.style;\n original = [\n style.getPropertyValue('direction'),\n style.getPropertyPriority('direction'),\n ];\n style.setProperty('direction', direction, 'important');\n ctx.prevTextDirection = original;\n }\n}\nfunction restoreTextDirection(ctx, original) {\n if (original !== undefined) {\n delete ctx.prevTextDirection;\n ctx.canvas.style.setProperty('direction', original[0], original[1]);\n }\n}\n\nfunction propertyFn(property) {\n if (property === 'angle') {\n return {\n between: _angleBetween,\n compare: _angleDiff,\n normalize: _normalizeAngle,\n };\n }\n return {\n between: _isBetween,\n compare: (a, b) => a - b,\n normalize: x => x\n };\n}\nfunction normalizeSegment({start, end, count, loop, style}) {\n return {\n start: start % count,\n end: end % count,\n loop: loop && (end - start + 1) % count === 0,\n style\n };\n}\nfunction getSegment(segment, points, bounds) {\n const {property, start: startBound, end: endBound} = bounds;\n const {between, normalize} = propertyFn(property);\n const count = points.length;\n let {start, end, loop} = segment;\n let i, ilen;\n if (loop) {\n start += count;\n end += count;\n for (i = 0, ilen = count; i < ilen; ++i) {\n if (!between(normalize(points[start % count][property]), startBound, endBound)) {\n break;\n }\n start--;\n end--;\n }\n start %= count;\n end %= count;\n }\n if (end < start) {\n end += count;\n }\n return {start, end, loop, style: segment.style};\n}\nfunction _boundSegment(segment, points, bounds) {\n if (!bounds) {\n return [segment];\n }\n const {property, start: startBound, end: endBound} = bounds;\n const count = points.length;\n const {compare, between, normalize} = propertyFn(property);\n const {start, end, loop, style} = getSegment(segment, points, bounds);\n const result = [];\n let inside = false;\n let subStart = null;\n let value, point, prevValue;\n const startIsBefore = () => between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0;\n const endIsBefore = () => compare(endBound, value) === 0 || between(endBound, prevValue, value);\n const shouldStart = () => inside || startIsBefore();\n const shouldStop = () => !inside || endIsBefore();\n for (let i = start, prev = start; i <= end; ++i) {\n point = points[i % count];\n if (point.skip) {\n continue;\n }\n value = normalize(point[property]);\n if (value === prevValue) {\n continue;\n }\n inside = between(value, startBound, endBound);\n if (subStart === null && shouldStart()) {\n subStart = compare(value, startBound) === 0 ? i : prev;\n }\n if (subStart !== null && shouldStop()) {\n result.push(normalizeSegment({start: subStart, end: i, loop, count, style}));\n subStart = null;\n }\n prev = i;\n prevValue = value;\n }\n if (subStart !== null) {\n result.push(normalizeSegment({start: subStart, end, loop, count, style}));\n }\n return result;\n}\nfunction _boundSegments(line, bounds) {\n const result = [];\n const segments = line.segments;\n for (let i = 0; i < segments.length; i++) {\n const sub = _boundSegment(segments[i], line.points, bounds);\n if (sub.length) {\n result.push(...sub);\n }\n }\n return result;\n}\nfunction findStartAndEnd(points, count, loop, spanGaps) {\n let start = 0;\n let end = count - 1;\n if (loop && !spanGaps) {\n while (start < count && !points[start].skip) {\n start++;\n }\n }\n while (start < count && points[start].skip) {\n start++;\n }\n start %= count;\n if (loop) {\n end += start;\n }\n while (end > start && points[end % count].skip) {\n end--;\n }\n end %= count;\n return {start, end};\n}\nfunction solidSegments(points, start, max, loop) {\n const count = points.length;\n const result = [];\n let last = start;\n let prev = points[start];\n let end;\n for (end = start + 1; end <= max; ++end) {\n const cur = points[end % count];\n if (cur.skip || cur.stop) {\n if (!prev.skip) {\n loop = false;\n result.push({start: start % count, end: (end - 1) % count, loop});\n start = last = cur.stop ? end : null;\n }\n } else {\n last = end;\n if (prev.skip) {\n start = end;\n }\n }\n prev = cur;\n }\n if (last !== null) {\n result.push({start: start % count, end: last % count, loop});\n }\n return result;\n}\nfunction _computeSegments(line, segmentOptions) {\n const points = line.points;\n const spanGaps = line.options.spanGaps;\n const count = points.length;\n if (!count) {\n return [];\n }\n const loop = !!line._loop;\n const {start, end} = findStartAndEnd(points, count, loop, spanGaps);\n if (spanGaps === true) {\n return splitByStyles(line, [{start, end, loop}], points, segmentOptions);\n }\n const max = end < start ? end + count : end;\n const completeLoop = !!line._fullLoop && start === 0 && end === count - 1;\n return splitByStyles(line, solidSegments(points, start, max, completeLoop), points, segmentOptions);\n}\nfunction splitByStyles(line, segments, points, segmentOptions) {\n if (!segmentOptions || !segmentOptions.setContext || !points) {\n return segments;\n }\n return doSplitByStyles(line, segments, points, segmentOptions);\n}\nfunction doSplitByStyles(line, segments, points, segmentOptions) {\n const chartContext = line._chart.getContext();\n const baseStyle = readStyle(line.options);\n const {_datasetIndex: datasetIndex, options: {spanGaps}} = line;\n const count = points.length;\n const result = [];\n let prevStyle = baseStyle;\n let start = segments[0].start;\n let i = start;\n function addStyle(s, e, l, st) {\n const dir = spanGaps ? -1 : 1;\n if (s === e) {\n return;\n }\n s += count;\n while (points[s % count].skip) {\n s -= dir;\n }\n while (points[e % count].skip) {\n e += dir;\n }\n if (s % count !== e % count) {\n result.push({start: s % count, end: e % count, loop: l, style: st});\n prevStyle = st;\n start = e % count;\n }\n }\n for (const segment of segments) {\n start = spanGaps ? start : segment.start;\n let prev = points[start % count];\n let style;\n for (i = start + 1; i <= segment.end; i++) {\n const pt = points[i % count];\n style = readStyle(segmentOptions.setContext(createContext(chartContext, {\n type: 'segment',\n p0: prev,\n p1: pt,\n p0DataIndex: (i - 1) % count,\n p1DataIndex: i % count,\n datasetIndex\n })));\n if (styleChanged(style, prevStyle)) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n prev = pt;\n prevStyle = style;\n }\n if (start < i - 1) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n }\n return result;\n}\nfunction readStyle(options) {\n return {\n backgroundColor: options.backgroundColor,\n borderCapStyle: options.borderCapStyle,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderJoinStyle: options.borderJoinStyle,\n borderWidth: options.borderWidth,\n borderColor: options.borderColor\n };\n}\nfunction styleChanged(style, prevStyle) {\n return prevStyle && JSON.stringify(style) !== JSON.stringify(prevStyle);\n}\n\nexport { _isPointInArea as $, _factorize as A, finiteOrDefault as B, callback as C, _addGrace as D, _limitValue as E, toDegrees as F, _measureText as G, HALF_PI as H, _int16Range as I, _alignPixel as J, toPadding as K, clipArea as L, renderText as M, unclipArea as N, toFont as O, PI as P, each as Q, _toLeftRightCenter as R, _alignStartEnd as S, TAU as T, overrides as U, merge as V, _capitalize as W, getRelativePosition as X, _rlookupByKey as Y, _lookupByKey as Z, _arrayUnique as _, resolve as a, toLineHeight as a$, getAngleFromPoint as a0, getMaximumSize as a1, _getParentNode as a2, readUsedSize as a3, throttled as a4, supportsEventListenerOptions as a5, _isDomSupported as a6, descriptors as a7, isFunction as a8, _attachContext as a9, getRtlAdapter as aA, overrideTextDirection as aB, _textX as aC, restoreTextDirection as aD, drawPointLegend as aE, noop as aF, distanceBetweenPoints as aG, _setMinAndMaxByKey as aH, niceNum as aI, almostWhole as aJ, almostEquals as aK, _decimalPlaces as aL, _longestText as aM, _filterBetween as aN, _lookup as aO, isPatternOrGradient as aP, getHoverColor as aQ, clone$1 as aR, _merger as aS, _mergerIf as aT, _deprecated as aU, _splitKey as aV, toFontString as aW, splineCurve as aX, splineCurveMonotone as aY, getStyle as aZ, fontString as a_, _createResolver as aa, _descriptors as ab, mergeIf as ac, uid as ad, debounce as ae, retinaScale as af, clearCanvas as ag, setsEqual as ah, _elementsEqual as ai, _isClickEvent as aj, _isBetween as ak, _readValueToProps as al, _updateBezierControlPoints as am, _computeSegments as an, _boundSegments as ao, _steppedInterpolation as ap, _bezierInterpolation as aq, _pointInLine as ar, _steppedLineTo as as, _bezierCurveTo as at, drawPoint as au, addRoundedRectPath as av, toTRBL as aw, toTRBLCorners as ax, _boundSegment as ay, _normalizeAngle as az, isArray as b, PITAU as b0, INFINITY as b1, RAD_PER_DEG as b2, QUARTER_PI as b3, TWO_THIRDS_PI as b4, _angleDiff as b5, color as c, defaults as d, effects as e, resolveObjectKey as f, isNumberFinite as g, createContext as h, isObject as i, defined as j, isNullOrUndef as k, listenArrayEvents as l, toPercentage as m, toDimension as n, formatNumber as o, _angleBetween as p, _getStartAndCountOfVisiblePoints as q, requestAnimFrame as r, sign as s, toRadians as t, unlistenArrayEvents as u, valueOrDefault as v, _scaleRangesChanged as w, isNumber as x, _parseObjectDataRadialScale as y, log10 as z };\n","/*!\n * Chart.js v3.9.1\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nimport { r as requestAnimFrame, a as resolve, e as effects, c as color, d as defaults, i as isObject, b as isArray, v as valueOrDefault, u as unlistenArrayEvents, l as listenArrayEvents, f as resolveObjectKey, g as isNumberFinite, h as createContext, j as defined, s as sign, k as isNullOrUndef, _ as _arrayUnique, t as toRadians, m as toPercentage, n as toDimension, T as TAU, o as formatNumber, p as _angleBetween, H as HALF_PI, P as PI, q as _getStartAndCountOfVisiblePoints, w as _scaleRangesChanged, x as isNumber, y as _parseObjectDataRadialScale, z as log10, A as _factorize, B as finiteOrDefault, C as callback, D as _addGrace, E as _limitValue, F as toDegrees, G as _measureText, I as _int16Range, J as _alignPixel, K as toPadding, L as clipArea, M as renderText, N as unclipArea, O as toFont, Q as each, R as _toLeftRightCenter, S as _alignStartEnd, U as overrides, V as merge, W as _capitalize, X as getRelativePosition, Y as _rlookupByKey, Z as _lookupByKey, $ as _isPointInArea, a0 as getAngleFromPoint, a1 as getMaximumSize, a2 as _getParentNode, a3 as readUsedSize, a4 as throttled, a5 as supportsEventListenerOptions, a6 as _isDomSupported, a7 as descriptors, a8 as isFunction, a9 as _attachContext, aa as _createResolver, ab as _descriptors, ac as mergeIf, ad as uid, ae as debounce, af as retinaScale, ag as clearCanvas, ah as setsEqual, ai as _elementsEqual, aj as _isClickEvent, ak as _isBetween, al as _readValueToProps, am as _updateBezierControlPoints, an as _computeSegments, ao as _boundSegments, ap as _steppedInterpolation, aq as _bezierInterpolation, ar as _pointInLine, as as _steppedLineTo, at as _bezierCurveTo, au as drawPoint, av as addRoundedRectPath, aw as toTRBL, ax as toTRBLCorners, ay as _boundSegment, az as _normalizeAngle, aA as getRtlAdapter, aB as overrideTextDirection, aC as _textX, aD as restoreTextDirection, aE as drawPointLegend, aF as noop, aG as distanceBetweenPoints, aH as _setMinAndMaxByKey, aI as niceNum, aJ as almostWhole, aK as almostEquals, aL as _decimalPlaces, aM as _longestText, aN as _filterBetween, aO as _lookup } from './chunks/helpers.segment.mjs';\nexport { d as defaults } from './chunks/helpers.segment.mjs';\n\nclass Animator {\n constructor() {\n this._request = null;\n this._charts = new Map();\n this._running = false;\n this._lastDate = undefined;\n }\n _notify(chart, anims, date, type) {\n const callbacks = anims.listeners[type];\n const numSteps = anims.duration;\n callbacks.forEach(fn => fn({\n chart,\n initial: anims.initial,\n numSteps,\n currentStep: Math.min(date - anims.start, numSteps)\n }));\n }\n _refresh() {\n if (this._request) {\n return;\n }\n this._running = true;\n this._request = requestAnimFrame.call(window, () => {\n this._update();\n this._request = null;\n if (this._running) {\n this._refresh();\n }\n });\n }\n _update(date = Date.now()) {\n let remaining = 0;\n this._charts.forEach((anims, chart) => {\n if (!anims.running || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n let draw = false;\n let item;\n for (; i >= 0; --i) {\n item = items[i];\n if (item._active) {\n if (item._total > anims.duration) {\n anims.duration = item._total;\n }\n item.tick(date);\n draw = true;\n } else {\n items[i] = items[items.length - 1];\n items.pop();\n }\n }\n if (draw) {\n chart.draw();\n this._notify(chart, anims, date, 'progress');\n }\n if (!items.length) {\n anims.running = false;\n this._notify(chart, anims, date, 'complete');\n anims.initial = false;\n }\n remaining += items.length;\n });\n this._lastDate = date;\n if (remaining === 0) {\n this._running = false;\n }\n }\n _getAnims(chart) {\n const charts = this._charts;\n let anims = charts.get(chart);\n if (!anims) {\n anims = {\n running: false,\n initial: true,\n items: [],\n listeners: {\n complete: [],\n progress: []\n }\n };\n charts.set(chart, anims);\n }\n return anims;\n }\n listen(chart, event, cb) {\n this._getAnims(chart).listeners[event].push(cb);\n }\n add(chart, items) {\n if (!items || !items.length) {\n return;\n }\n this._getAnims(chart).items.push(...items);\n }\n has(chart) {\n return this._getAnims(chart).items.length > 0;\n }\n start(chart) {\n const anims = this._charts.get(chart);\n if (!anims) {\n return;\n }\n anims.running = true;\n anims.start = Date.now();\n anims.duration = anims.items.reduce((acc, cur) => Math.max(acc, cur._duration), 0);\n this._refresh();\n }\n running(chart) {\n if (!this._running) {\n return false;\n }\n const anims = this._charts.get(chart);\n if (!anims || !anims.running || !anims.items.length) {\n return false;\n }\n return true;\n }\n stop(chart) {\n const anims = this._charts.get(chart);\n if (!anims || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n for (; i >= 0; --i) {\n items[i].cancel();\n }\n anims.items = [];\n this._notify(chart, anims, Date.now(), 'complete');\n }\n remove(chart) {\n return this._charts.delete(chart);\n }\n}\nvar animator = new Animator();\n\nconst transparent = 'transparent';\nconst interpolators = {\n boolean(from, to, factor) {\n return factor > 0.5 ? to : from;\n },\n color(from, to, factor) {\n const c0 = color(from || transparent);\n const c1 = c0.valid && color(to || transparent);\n return c1 && c1.valid\n ? c1.mix(c0, factor).hexString()\n : to;\n },\n number(from, to, factor) {\n return from + (to - from) * factor;\n }\n};\nclass Animation {\n constructor(cfg, target, prop, to) {\n const currentValue = target[prop];\n to = resolve([cfg.to, to, currentValue, cfg.from]);\n const from = resolve([cfg.from, currentValue, to]);\n this._active = true;\n this._fn = cfg.fn || interpolators[cfg.type || typeof from];\n this._easing = effects[cfg.easing] || effects.linear;\n this._start = Math.floor(Date.now() + (cfg.delay || 0));\n this._duration = this._total = Math.floor(cfg.duration);\n this._loop = !!cfg.loop;\n this._target = target;\n this._prop = prop;\n this._from = from;\n this._to = to;\n this._promises = undefined;\n }\n active() {\n return this._active;\n }\n update(cfg, to, date) {\n if (this._active) {\n this._notify(false);\n const currentValue = this._target[this._prop];\n const elapsed = date - this._start;\n const remain = this._duration - elapsed;\n this._start = date;\n this._duration = Math.floor(Math.max(remain, cfg.duration));\n this._total += elapsed;\n this._loop = !!cfg.loop;\n this._to = resolve([cfg.to, to, currentValue, cfg.from]);\n this._from = resolve([cfg.from, currentValue, to]);\n }\n }\n cancel() {\n if (this._active) {\n this.tick(Date.now());\n this._active = false;\n this._notify(false);\n }\n }\n tick(date) {\n const elapsed = date - this._start;\n const duration = this._duration;\n const prop = this._prop;\n const from = this._from;\n const loop = this._loop;\n const to = this._to;\n let factor;\n this._active = from !== to && (loop || (elapsed < duration));\n if (!this._active) {\n this._target[prop] = to;\n this._notify(true);\n return;\n }\n if (elapsed < 0) {\n this._target[prop] = from;\n return;\n }\n factor = (elapsed / duration) % 2;\n factor = loop && factor > 1 ? 2 - factor : factor;\n factor = this._easing(Math.min(1, Math.max(0, factor)));\n this._target[prop] = this._fn(from, to, factor);\n }\n wait() {\n const promises = this._promises || (this._promises = []);\n return new Promise((res, rej) => {\n promises.push({res, rej});\n });\n }\n _notify(resolved) {\n const method = resolved ? 'res' : 'rej';\n const promises = this._promises || [];\n for (let i = 0; i < promises.length; i++) {\n promises[i][method]();\n }\n }\n}\n\nconst numbers = ['x', 'y', 'borderWidth', 'radius', 'tension'];\nconst colors = ['color', 'borderColor', 'backgroundColor'];\ndefaults.set('animation', {\n delay: undefined,\n duration: 1000,\n easing: 'easeOutQuart',\n fn: undefined,\n from: undefined,\n loop: undefined,\n to: undefined,\n type: undefined,\n});\nconst animationOptions = Object.keys(defaults.animation);\ndefaults.describe('animation', {\n _fallback: false,\n _indexable: false,\n _scriptable: (name) => name !== 'onProgress' && name !== 'onComplete' && name !== 'fn',\n});\ndefaults.set('animations', {\n colors: {\n type: 'color',\n properties: colors\n },\n numbers: {\n type: 'number',\n properties: numbers\n },\n});\ndefaults.describe('animations', {\n _fallback: 'animation',\n});\ndefaults.set('transitions', {\n active: {\n animation: {\n duration: 400\n }\n },\n resize: {\n animation: {\n duration: 0\n }\n },\n show: {\n animations: {\n colors: {\n from: 'transparent'\n },\n visible: {\n type: 'boolean',\n duration: 0\n },\n }\n },\n hide: {\n animations: {\n colors: {\n to: 'transparent'\n },\n visible: {\n type: 'boolean',\n easing: 'linear',\n fn: v => v | 0\n },\n }\n }\n});\nclass Animations {\n constructor(chart, config) {\n this._chart = chart;\n this._properties = new Map();\n this.configure(config);\n }\n configure(config) {\n if (!isObject(config)) {\n return;\n }\n const animatedProps = this._properties;\n Object.getOwnPropertyNames(config).forEach(key => {\n const cfg = config[key];\n if (!isObject(cfg)) {\n return;\n }\n const resolved = {};\n for (const option of animationOptions) {\n resolved[option] = cfg[option];\n }\n (isArray(cfg.properties) && cfg.properties || [key]).forEach((prop) => {\n if (prop === key || !animatedProps.has(prop)) {\n animatedProps.set(prop, resolved);\n }\n });\n });\n }\n _animateOptions(target, values) {\n const newOptions = values.options;\n const options = resolveTargetOptions(target, newOptions);\n if (!options) {\n return [];\n }\n const animations = this._createAnimations(options, newOptions);\n if (newOptions.$shared) {\n awaitAll(target.options.$animations, newOptions).then(() => {\n target.options = newOptions;\n }, () => {\n });\n }\n return animations;\n }\n _createAnimations(target, values) {\n const animatedProps = this._properties;\n const animations = [];\n const running = target.$animations || (target.$animations = {});\n const props = Object.keys(values);\n const date = Date.now();\n let i;\n for (i = props.length - 1; i >= 0; --i) {\n const prop = props[i];\n if (prop.charAt(0) === '$') {\n continue;\n }\n if (prop === 'options') {\n animations.push(...this._animateOptions(target, values));\n continue;\n }\n const value = values[prop];\n let animation = running[prop];\n const cfg = animatedProps.get(prop);\n if (animation) {\n if (cfg && animation.active()) {\n animation.update(cfg, value, date);\n continue;\n } else {\n animation.cancel();\n }\n }\n if (!cfg || !cfg.duration) {\n target[prop] = value;\n continue;\n }\n running[prop] = animation = new Animation(cfg, target, prop, value);\n animations.push(animation);\n }\n return animations;\n }\n update(target, values) {\n if (this._properties.size === 0) {\n Object.assign(target, values);\n return;\n }\n const animations = this._createAnimations(target, values);\n if (animations.length) {\n animator.add(this._chart, animations);\n return true;\n }\n }\n}\nfunction awaitAll(animations, properties) {\n const running = [];\n const keys = Object.keys(properties);\n for (let i = 0; i < keys.length; i++) {\n const anim = animations[keys[i]];\n if (anim && anim.active()) {\n running.push(anim.wait());\n }\n }\n return Promise.all(running);\n}\nfunction resolveTargetOptions(target, newOptions) {\n if (!newOptions) {\n return;\n }\n let options = target.options;\n if (!options) {\n target.options = newOptions;\n return;\n }\n if (options.$shared) {\n target.options = options = Object.assign({}, options, {$shared: false, $animations: {}});\n }\n return options;\n}\n\nfunction scaleClip(scale, allowedOverflow) {\n const opts = scale && scale.options || {};\n const reverse = opts.reverse;\n const min = opts.min === undefined ? allowedOverflow : 0;\n const max = opts.max === undefined ? allowedOverflow : 0;\n return {\n start: reverse ? max : min,\n end: reverse ? min : max\n };\n}\nfunction defaultClip(xScale, yScale, allowedOverflow) {\n if (allowedOverflow === false) {\n return false;\n }\n const x = scaleClip(xScale, allowedOverflow);\n const y = scaleClip(yScale, allowedOverflow);\n return {\n top: y.end,\n right: x.end,\n bottom: y.start,\n left: x.start\n };\n}\nfunction toClip(value) {\n let t, r, b, l;\n if (isObject(value)) {\n t = value.top;\n r = value.right;\n b = value.bottom;\n l = value.left;\n } else {\n t = r = b = l = value;\n }\n return {\n top: t,\n right: r,\n bottom: b,\n left: l,\n disabled: value === false\n };\n}\nfunction getSortedDatasetIndices(chart, filterVisible) {\n const keys = [];\n const metasets = chart._getSortedDatasetMetas(filterVisible);\n let i, ilen;\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n keys.push(metasets[i].index);\n }\n return keys;\n}\nfunction applyStack(stack, value, dsIndex, options = {}) {\n const keys = stack.keys;\n const singleMode = options.mode === 'single';\n let i, ilen, datasetIndex, otherValue;\n if (value === null) {\n return;\n }\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n datasetIndex = +keys[i];\n if (datasetIndex === dsIndex) {\n if (options.all) {\n continue;\n }\n break;\n }\n otherValue = stack.values[datasetIndex];\n if (isNumberFinite(otherValue) && (singleMode || (value === 0 || sign(value) === sign(otherValue)))) {\n value += otherValue;\n }\n }\n return value;\n}\nfunction convertObjectDataToArray(data) {\n const keys = Object.keys(data);\n const adata = new Array(keys.length);\n let i, ilen, key;\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n key = keys[i];\n adata[i] = {\n x: key,\n y: data[key]\n };\n }\n return adata;\n}\nfunction isStacked(scale, meta) {\n const stacked = scale && scale.options.stacked;\n return stacked || (stacked === undefined && meta.stack !== undefined);\n}\nfunction getStackKey(indexScale, valueScale, meta) {\n return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`;\n}\nfunction getUserBounds(scale) {\n const {min, max, minDefined, maxDefined} = scale.getUserBounds();\n return {\n min: minDefined ? min : Number.NEGATIVE_INFINITY,\n max: maxDefined ? max : Number.POSITIVE_INFINITY\n };\n}\nfunction getOrCreateStack(stacks, stackKey, indexValue) {\n const subStack = stacks[stackKey] || (stacks[stackKey] = {});\n return subStack[indexValue] || (subStack[indexValue] = {});\n}\nfunction getLastIndexInStack(stack, vScale, positive, type) {\n for (const meta of vScale.getMatchingVisibleMetas(type).reverse()) {\n const value = stack[meta.index];\n if ((positive && value > 0) || (!positive && value < 0)) {\n return meta.index;\n }\n }\n return null;\n}\nfunction updateStacks(controller, parsed) {\n const {chart, _cachedMeta: meta} = controller;\n const stacks = chart._stacks || (chart._stacks = {});\n const {iScale, vScale, index: datasetIndex} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const key = getStackKey(iScale, vScale, meta);\n const ilen = parsed.length;\n let stack;\n for (let i = 0; i < ilen; ++i) {\n const item = parsed[i];\n const {[iAxis]: index, [vAxis]: value} = item;\n const itemStacks = item._stacks || (item._stacks = {});\n stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, index);\n stack[datasetIndex] = value;\n stack._top = getLastIndexInStack(stack, vScale, true, meta.type);\n stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type);\n }\n}\nfunction getFirstScaleId(chart, axis) {\n const scales = chart.scales;\n return Object.keys(scales).filter(key => scales[key].axis === axis).shift();\n}\nfunction createDatasetContext(parent, index) {\n return createContext(parent,\n {\n active: false,\n dataset: undefined,\n datasetIndex: index,\n index,\n mode: 'default',\n type: 'dataset'\n }\n );\n}\nfunction createDataContext(parent, index, element) {\n return createContext(parent, {\n active: false,\n dataIndex: index,\n parsed: undefined,\n raw: undefined,\n element,\n index,\n mode: 'default',\n type: 'data'\n });\n}\nfunction clearStacks(meta, items) {\n const datasetIndex = meta.controller.index;\n const axis = meta.vScale && meta.vScale.axis;\n if (!axis) {\n return;\n }\n items = items || meta._parsed;\n for (const parsed of items) {\n const stacks = parsed._stacks;\n if (!stacks || stacks[axis] === undefined || stacks[axis][datasetIndex] === undefined) {\n return;\n }\n delete stacks[axis][datasetIndex];\n }\n}\nconst isDirectUpdateMode = (mode) => mode === 'reset' || mode === 'none';\nconst cloneIfNotShared = (cached, shared) => shared ? cached : Object.assign({}, cached);\nconst createStack = (canStack, meta, chart) => canStack && !meta.hidden && meta._stacked\n && {keys: getSortedDatasetIndices(chart, true), values: null};\nclass DatasetController {\n constructor(chart, datasetIndex) {\n this.chart = chart;\n this._ctx = chart.ctx;\n this.index = datasetIndex;\n this._cachedDataOpts = {};\n this._cachedMeta = this.getMeta();\n this._type = this._cachedMeta.type;\n this.options = undefined;\n this._parsing = false;\n this._data = undefined;\n this._objectData = undefined;\n this._sharedOptions = undefined;\n this._drawStart = undefined;\n this._drawCount = undefined;\n this.enableOptionSharing = false;\n this.supportsDecimation = false;\n this.$context = undefined;\n this._syncList = [];\n this.initialize();\n }\n initialize() {\n const meta = this._cachedMeta;\n this.configure();\n this.linkScales();\n meta._stacked = isStacked(meta.vScale, meta);\n this.addElements();\n }\n updateIndex(datasetIndex) {\n if (this.index !== datasetIndex) {\n clearStacks(this._cachedMeta);\n }\n this.index = datasetIndex;\n }\n linkScales() {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n const chooseId = (axis, x, y, r) => axis === 'x' ? x : axis === 'r' ? r : y;\n const xid = meta.xAxisID = valueOrDefault(dataset.xAxisID, getFirstScaleId(chart, 'x'));\n const yid = meta.yAxisID = valueOrDefault(dataset.yAxisID, getFirstScaleId(chart, 'y'));\n const rid = meta.rAxisID = valueOrDefault(dataset.rAxisID, getFirstScaleId(chart, 'r'));\n const indexAxis = meta.indexAxis;\n const iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid);\n const vid = meta.vAxisID = chooseId(indexAxis, yid, xid, rid);\n meta.xScale = this.getScaleForId(xid);\n meta.yScale = this.getScaleForId(yid);\n meta.rScale = this.getScaleForId(rid);\n meta.iScale = this.getScaleForId(iid);\n meta.vScale = this.getScaleForId(vid);\n }\n getDataset() {\n return this.chart.data.datasets[this.index];\n }\n getMeta() {\n return this.chart.getDatasetMeta(this.index);\n }\n getScaleForId(scaleID) {\n return this.chart.scales[scaleID];\n }\n _getOtherScale(scale) {\n const meta = this._cachedMeta;\n return scale === meta.iScale\n ? meta.vScale\n : meta.iScale;\n }\n reset() {\n this._update('reset');\n }\n _destroy() {\n const meta = this._cachedMeta;\n if (this._data) {\n unlistenArrayEvents(this._data, this);\n }\n if (meta._stacked) {\n clearStacks(meta);\n }\n }\n _dataCheck() {\n const dataset = this.getDataset();\n const data = dataset.data || (dataset.data = []);\n const _data = this._data;\n if (isObject(data)) {\n this._data = convertObjectDataToArray(data);\n } else if (_data !== data) {\n if (_data) {\n unlistenArrayEvents(_data, this);\n const meta = this._cachedMeta;\n clearStacks(meta);\n meta._parsed = [];\n }\n if (data && Object.isExtensible(data)) {\n listenArrayEvents(data, this);\n }\n this._syncList = [];\n this._data = data;\n }\n }\n addElements() {\n const meta = this._cachedMeta;\n this._dataCheck();\n if (this.datasetElementType) {\n meta.dataset = new this.datasetElementType();\n }\n }\n buildOrUpdateElements(resetNewElements) {\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n let stackChanged = false;\n this._dataCheck();\n const oldStacked = meta._stacked;\n meta._stacked = isStacked(meta.vScale, meta);\n if (meta.stack !== dataset.stack) {\n stackChanged = true;\n clearStacks(meta);\n meta.stack = dataset.stack;\n }\n this._resyncElements(resetNewElements);\n if (stackChanged || oldStacked !== meta._stacked) {\n updateStacks(this, meta._parsed);\n }\n }\n configure() {\n const config = this.chart.config;\n const scopeKeys = config.datasetScopeKeys(this._type);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys, true);\n this.options = config.createResolver(scopes, this.getContext());\n this._parsing = this.options.parsing;\n this._cachedDataOpts = {};\n }\n parse(start, count) {\n const {_cachedMeta: meta, _data: data} = this;\n const {iScale, _stacked} = meta;\n const iAxis = iScale.axis;\n let sorted = start === 0 && count === data.length ? true : meta._sorted;\n let prev = start > 0 && meta._parsed[start - 1];\n let i, cur, parsed;\n if (this._parsing === false) {\n meta._parsed = data;\n meta._sorted = true;\n parsed = data;\n } else {\n if (isArray(data[start])) {\n parsed = this.parseArrayData(meta, data, start, count);\n } else if (isObject(data[start])) {\n parsed = this.parseObjectData(meta, data, start, count);\n } else {\n parsed = this.parsePrimitiveData(meta, data, start, count);\n }\n const isNotInOrderComparedToPrev = () => cur[iAxis] === null || (prev && cur[iAxis] < prev[iAxis]);\n for (i = 0; i < count; ++i) {\n meta._parsed[i + start] = cur = parsed[i];\n if (sorted) {\n if (isNotInOrderComparedToPrev()) {\n sorted = false;\n }\n prev = cur;\n }\n }\n meta._sorted = sorted;\n }\n if (_stacked) {\n updateStacks(this, parsed);\n }\n }\n parsePrimitiveData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = new Array(count);\n let i, ilen, index;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n parsed[i] = {\n [iAxis]: singleScale || iScale.parse(labels[index], index),\n [vAxis]: vScale.parse(data[index], index)\n };\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(item[0], index),\n y: yScale.parse(item[1], index)\n };\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(resolveObjectKey(item, xAxisKey), index),\n y: yScale.parse(resolveObjectKey(item, yAxisKey), index)\n };\n }\n return parsed;\n }\n getParsed(index) {\n return this._cachedMeta._parsed[index];\n }\n getDataElement(index) {\n return this._cachedMeta.data[index];\n }\n applyStack(scale, parsed, mode) {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const value = parsed[scale.axis];\n const stack = {\n keys: getSortedDatasetIndices(chart, true),\n values: parsed._stacks[scale.axis]\n };\n return applyStack(stack, value, meta.index, {mode});\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n const parsedValue = parsed[scale.axis];\n let value = parsedValue === null ? NaN : parsedValue;\n const values = stack && parsed._stacks[scale.axis];\n if (stack && values) {\n stack.values = values;\n value = applyStack(stack, parsedValue, this._cachedMeta.index);\n }\n range.min = Math.min(range.min, value);\n range.max = Math.max(range.max, value);\n }\n getMinMax(scale, canStack) {\n const meta = this._cachedMeta;\n const _parsed = meta._parsed;\n const sorted = meta._sorted && scale === meta.iScale;\n const ilen = _parsed.length;\n const otherScale = this._getOtherScale(scale);\n const stack = createStack(canStack, meta, this.chart);\n const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n const {min: otherMin, max: otherMax} = getUserBounds(otherScale);\n let i, parsed;\n function _skip() {\n parsed = _parsed[i];\n const otherValue = parsed[otherScale.axis];\n return !isNumberFinite(parsed[scale.axis]) || otherMin > otherValue || otherMax < otherValue;\n }\n for (i = 0; i < ilen; ++i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n if (sorted) {\n break;\n }\n }\n if (sorted) {\n for (i = ilen - 1; i >= 0; --i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n break;\n }\n }\n return range;\n }\n getAllParsedValues(scale) {\n const parsed = this._cachedMeta._parsed;\n const values = [];\n let i, ilen, value;\n for (i = 0, ilen = parsed.length; i < ilen; ++i) {\n value = parsed[i][scale.axis];\n if (isNumberFinite(value)) {\n values.push(value);\n }\n }\n return values;\n }\n getMaxOverflow() {\n return false;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: iScale ? '' + iScale.getLabelForValue(parsed[iScale.axis]) : '',\n value: vScale ? '' + vScale.getLabelForValue(parsed[vScale.axis]) : ''\n };\n }\n _update(mode) {\n const meta = this._cachedMeta;\n this.update(mode || 'default');\n meta._clip = toClip(valueOrDefault(this.options.clip, defaultClip(meta.xScale, meta.yScale, this.getMaxOverflow())));\n }\n update(mode) {}\n draw() {\n const ctx = this._ctx;\n const chart = this.chart;\n const meta = this._cachedMeta;\n const elements = meta.data || [];\n const area = chart.chartArea;\n const active = [];\n const start = this._drawStart || 0;\n const count = this._drawCount || (elements.length - start);\n const drawActiveElementsOnTop = this.options.drawActiveElementsOnTop;\n let i;\n if (meta.dataset) {\n meta.dataset.draw(ctx, area, start, count);\n }\n for (i = start; i < start + count; ++i) {\n const element = elements[i];\n if (element.hidden) {\n continue;\n }\n if (element.active && drawActiveElementsOnTop) {\n active.push(element);\n } else {\n element.draw(ctx, area);\n }\n }\n for (i = 0; i < active.length; ++i) {\n active[i].draw(ctx, area);\n }\n }\n getStyle(index, active) {\n const mode = active ? 'active' : 'default';\n return index === undefined && this._cachedMeta.dataset\n ? this.resolveDatasetElementOptions(mode)\n : this.resolveDataElementOptions(index || 0, mode);\n }\n getContext(index, active, mode) {\n const dataset = this.getDataset();\n let context;\n if (index >= 0 && index < this._cachedMeta.data.length) {\n const element = this._cachedMeta.data[index];\n context = element.$context ||\n (element.$context = createDataContext(this.getContext(), index, element));\n context.parsed = this.getParsed(index);\n context.raw = dataset.data[index];\n context.index = context.dataIndex = index;\n } else {\n context = this.$context ||\n (this.$context = createDatasetContext(this.chart.getContext(), this.index));\n context.dataset = dataset;\n context.index = context.datasetIndex = this.index;\n }\n context.active = !!active;\n context.mode = mode;\n return context;\n }\n resolveDatasetElementOptions(mode) {\n return this._resolveElementOptions(this.datasetElementType.id, mode);\n }\n resolveDataElementOptions(index, mode) {\n return this._resolveElementOptions(this.dataElementType.id, mode, index);\n }\n _resolveElementOptions(elementType, mode = 'default', index) {\n const active = mode === 'active';\n const cache = this._cachedDataOpts;\n const cacheKey = elementType + '-' + mode;\n const cached = cache[cacheKey];\n const sharing = this.enableOptionSharing && defined(index);\n if (cached) {\n return cloneIfNotShared(cached, sharing);\n }\n const config = this.chart.config;\n const scopeKeys = config.datasetElementScopeKeys(this._type, elementType);\n const prefixes = active ? [`${elementType}Hover`, 'hover', elementType, ''] : [elementType, ''];\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n const names = Object.keys(defaults.elements[elementType]);\n const context = () => this.getContext(index, active);\n const values = config.resolveNamedOptions(scopes, names, context, prefixes);\n if (values.$shared) {\n values.$shared = sharing;\n cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing));\n }\n return values;\n }\n _resolveAnimations(index, transition, active) {\n const chart = this.chart;\n const cache = this._cachedDataOpts;\n const cacheKey = `animation-${transition}`;\n const cached = cache[cacheKey];\n if (cached) {\n return cached;\n }\n let options;\n if (chart.options.animation !== false) {\n const config = this.chart.config;\n const scopeKeys = config.datasetAnimationScopeKeys(this._type, transition);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n options = config.createResolver(scopes, this.getContext(index, active, transition));\n }\n const animations = new Animations(chart, options && options.animations);\n if (options && options._cacheable) {\n cache[cacheKey] = Object.freeze(animations);\n }\n return animations;\n }\n getSharedOptions(options) {\n if (!options.$shared) {\n return;\n }\n return this._sharedOptions || (this._sharedOptions = Object.assign({}, options));\n }\n includeOptions(mode, sharedOptions) {\n return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled;\n }\n _getSharedOptions(start, mode) {\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const previouslySharedOptions = this._sharedOptions;\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions) || (sharedOptions !== previouslySharedOptions);\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n return {sharedOptions, includeOptions};\n }\n updateElement(element, index, properties, mode) {\n if (isDirectUpdateMode(mode)) {\n Object.assign(element, properties);\n } else {\n this._resolveAnimations(index, mode).update(element, properties);\n }\n }\n updateSharedOptions(sharedOptions, mode, newOptions) {\n if (sharedOptions && !isDirectUpdateMode(mode)) {\n this._resolveAnimations(undefined, mode).update(sharedOptions, newOptions);\n }\n }\n _setStyle(element, index, mode, active) {\n element.active = active;\n const options = this.getStyle(index, active);\n this._resolveAnimations(index, mode, active).update(element, {\n options: (!active && this.getSharedOptions(options)) || options\n });\n }\n removeHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', false);\n }\n setHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', true);\n }\n _removeDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', false);\n }\n }\n _setDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', true);\n }\n }\n _resyncElements(resetNewElements) {\n const data = this._data;\n const elements = this._cachedMeta.data;\n for (const [method, arg1, arg2] of this._syncList) {\n this[method](arg1, arg2);\n }\n this._syncList = [];\n const numMeta = elements.length;\n const numData = data.length;\n const count = Math.min(numData, numMeta);\n if (count) {\n this.parse(0, count);\n }\n if (numData > numMeta) {\n this._insertElements(numMeta, numData - numMeta, resetNewElements);\n } else if (numData < numMeta) {\n this._removeElements(numData, numMeta - numData);\n }\n }\n _insertElements(start, count, resetNewElements = true) {\n const meta = this._cachedMeta;\n const data = meta.data;\n const end = start + count;\n let i;\n const move = (arr) => {\n arr.length += count;\n for (i = arr.length - 1; i >= end; i--) {\n arr[i] = arr[i - count];\n }\n };\n move(data);\n for (i = start; i < end; ++i) {\n data[i] = new this.dataElementType();\n }\n if (this._parsing) {\n move(meta._parsed);\n }\n this.parse(start, count);\n if (resetNewElements) {\n this.updateElements(data, start, count, 'reset');\n }\n }\n updateElements(element, start, count, mode) {}\n _removeElements(start, count) {\n const meta = this._cachedMeta;\n if (this._parsing) {\n const removed = meta._parsed.splice(start, count);\n if (meta._stacked) {\n clearStacks(meta, removed);\n }\n }\n meta.data.splice(start, count);\n }\n _sync(args) {\n if (this._parsing) {\n this._syncList.push(args);\n } else {\n const [method, arg1, arg2] = args;\n this[method](arg1, arg2);\n }\n this.chart._dataChanges.push([this.index, ...args]);\n }\n _onDataPush() {\n const count = arguments.length;\n this._sync(['_insertElements', this.getDataset().data.length - count, count]);\n }\n _onDataPop() {\n this._sync(['_removeElements', this._cachedMeta.data.length - 1, 1]);\n }\n _onDataShift() {\n this._sync(['_removeElements', 0, 1]);\n }\n _onDataSplice(start, count) {\n if (count) {\n this._sync(['_removeElements', start, count]);\n }\n const newCount = arguments.length - 2;\n if (newCount) {\n this._sync(['_insertElements', start, newCount]);\n }\n }\n _onDataUnshift() {\n this._sync(['_insertElements', 0, arguments.length]);\n }\n}\nDatasetController.defaults = {};\nDatasetController.prototype.datasetElementType = null;\nDatasetController.prototype.dataElementType = null;\n\nfunction getAllScaleValues(scale, type) {\n if (!scale._cache.$bar) {\n const visibleMetas = scale.getMatchingVisibleMetas(type);\n let values = [];\n for (let i = 0, ilen = visibleMetas.length; i < ilen; i++) {\n values = values.concat(visibleMetas[i].controller.getAllParsedValues(scale));\n }\n scale._cache.$bar = _arrayUnique(values.sort((a, b) => a - b));\n }\n return scale._cache.$bar;\n}\nfunction computeMinSampleSize(meta) {\n const scale = meta.iScale;\n const values = getAllScaleValues(scale, meta.type);\n let min = scale._length;\n let i, ilen, curr, prev;\n const updateMinAndPrev = () => {\n if (curr === 32767 || curr === -32768) {\n return;\n }\n if (defined(prev)) {\n min = Math.min(min, Math.abs(curr - prev) || min);\n }\n prev = curr;\n };\n for (i = 0, ilen = values.length; i < ilen; ++i) {\n curr = scale.getPixelForValue(values[i]);\n updateMinAndPrev();\n }\n prev = undefined;\n for (i = 0, ilen = scale.ticks.length; i < ilen; ++i) {\n curr = scale.getPixelForTick(i);\n updateMinAndPrev();\n }\n return min;\n}\nfunction computeFitCategoryTraits(index, ruler, options, stackCount) {\n const thickness = options.barThickness;\n let size, ratio;\n if (isNullOrUndef(thickness)) {\n size = ruler.min * options.categoryPercentage;\n ratio = options.barPercentage;\n } else {\n size = thickness * stackCount;\n ratio = 1;\n }\n return {\n chunk: size / stackCount,\n ratio,\n start: ruler.pixels[index] - (size / 2)\n };\n}\nfunction computeFlexCategoryTraits(index, ruler, options, stackCount) {\n const pixels = ruler.pixels;\n const curr = pixels[index];\n let prev = index > 0 ? pixels[index - 1] : null;\n let next = index < pixels.length - 1 ? pixels[index + 1] : null;\n const percent = options.categoryPercentage;\n if (prev === null) {\n prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n }\n if (next === null) {\n next = curr + curr - prev;\n }\n const start = curr - (curr - Math.min(prev, next)) / 2 * percent;\n const size = Math.abs(next - prev) / 2 * percent;\n return {\n chunk: size / stackCount,\n ratio: options.barPercentage,\n start\n };\n}\nfunction parseFloatBar(entry, item, vScale, i) {\n const startValue = vScale.parse(entry[0], i);\n const endValue = vScale.parse(entry[1], i);\n const min = Math.min(startValue, endValue);\n const max = Math.max(startValue, endValue);\n let barStart = min;\n let barEnd = max;\n if (Math.abs(min) > Math.abs(max)) {\n barStart = max;\n barEnd = min;\n }\n item[vScale.axis] = barEnd;\n item._custom = {\n barStart,\n barEnd,\n start: startValue,\n end: endValue,\n min,\n max\n };\n}\nfunction parseValue(entry, item, vScale, i) {\n if (isArray(entry)) {\n parseFloatBar(entry, item, vScale, i);\n } else {\n item[vScale.axis] = vScale.parse(entry, i);\n }\n return item;\n}\nfunction parseArrayOrPrimitive(meta, data, start, count) {\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = [];\n let i, ilen, item, entry;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n entry = data[i];\n item = {};\n item[iScale.axis] = singleScale || iScale.parse(labels[i], i);\n parsed.push(parseValue(entry, item, vScale, i));\n }\n return parsed;\n}\nfunction isFloatBar(custom) {\n return custom && custom.barStart !== undefined && custom.barEnd !== undefined;\n}\nfunction barSign(size, vScale, actualBase) {\n if (size !== 0) {\n return sign(size);\n }\n return (vScale.isHorizontal() ? 1 : -1) * (vScale.min >= actualBase ? 1 : -1);\n}\nfunction borderProps(properties) {\n let reverse, start, end, top, bottom;\n if (properties.horizontal) {\n reverse = properties.base > properties.x;\n start = 'left';\n end = 'right';\n } else {\n reverse = properties.base < properties.y;\n start = 'bottom';\n end = 'top';\n }\n if (reverse) {\n top = 'end';\n bottom = 'start';\n } else {\n top = 'start';\n bottom = 'end';\n }\n return {start, end, reverse, top, bottom};\n}\nfunction setBorderSkipped(properties, options, stack, index) {\n let edge = options.borderSkipped;\n const res = {};\n if (!edge) {\n properties.borderSkipped = res;\n return;\n }\n if (edge === true) {\n properties.borderSkipped = {top: true, right: true, bottom: true, left: true};\n return;\n }\n const {start, end, reverse, top, bottom} = borderProps(properties);\n if (edge === 'middle' && stack) {\n properties.enableBorderRadius = true;\n if ((stack._top || 0) === index) {\n edge = top;\n } else if ((stack._bottom || 0) === index) {\n edge = bottom;\n } else {\n res[parseEdge(bottom, start, end, reverse)] = true;\n edge = top;\n }\n }\n res[parseEdge(edge, start, end, reverse)] = true;\n properties.borderSkipped = res;\n}\nfunction parseEdge(edge, a, b, reverse) {\n if (reverse) {\n edge = swap(edge, a, b);\n edge = startEnd(edge, b, a);\n } else {\n edge = startEnd(edge, a, b);\n }\n return edge;\n}\nfunction swap(orig, v1, v2) {\n return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\nfunction startEnd(v, start, end) {\n return v === 'start' ? start : v === 'end' ? end : v;\n}\nfunction setInflateAmount(properties, {inflateAmount}, ratio) {\n properties.inflateAmount = inflateAmount === 'auto'\n ? ratio === 1 ? 0.33 : 0\n : inflateAmount;\n}\nclass BarController extends DatasetController {\n parsePrimitiveData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseArrayData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseObjectData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const iAxisKey = iScale.axis === 'x' ? xAxisKey : yAxisKey;\n const vAxisKey = vScale.axis === 'x' ? xAxisKey : yAxisKey;\n const parsed = [];\n let i, ilen, item, obj;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n obj = data[i];\n item = {};\n item[iScale.axis] = iScale.parse(resolveObjectKey(obj, iAxisKey), i);\n parsed.push(parseValue(resolveObjectKey(obj, vAxisKey), item, vScale, i));\n }\n return parsed;\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n super.updateRangeFromParsed(range, scale, parsed, stack);\n const custom = parsed._custom;\n if (custom && scale === this._cachedMeta.vScale) {\n range.min = Math.min(range.min, custom.min);\n range.max = Math.max(range.max, custom.max);\n }\n }\n getMaxOverflow() {\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const {iScale, vScale} = meta;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const value = isFloatBar(custom)\n ? '[' + custom.start + ', ' + custom.end + ']'\n : '' + vScale.getLabelForValue(parsed[vScale.axis]);\n return {\n label: '' + iScale.getLabelForValue(parsed[iScale.axis]),\n value\n };\n }\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n const meta = this._cachedMeta;\n meta.stack = this.getDataset().stack;\n }\n update(mode) {\n const meta = this._cachedMeta;\n this.updateElements(meta.data, 0, meta.data.length, mode);\n }\n updateElements(bars, start, count, mode) {\n const reset = mode === 'reset';\n const {index, _cachedMeta: {vScale}} = this;\n const base = vScale.getBasePixel();\n const horizontal = vScale.isHorizontal();\n const ruler = this._getRuler();\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n for (let i = start; i < start + count; i++) {\n const parsed = this.getParsed(i);\n const vpixels = reset || isNullOrUndef(parsed[vScale.axis]) ? {base, head: base} : this._calculateBarValuePixels(i);\n const ipixels = this._calculateBarIndexPixels(i, ruler);\n const stack = (parsed._stacks || {})[vScale.axis];\n const properties = {\n horizontal,\n base: vpixels.base,\n enableBorderRadius: !stack || isFloatBar(parsed._custom) || (index === stack._top || index === stack._bottom),\n x: horizontal ? vpixels.head : ipixels.center,\n y: horizontal ? ipixels.center : vpixels.head,\n height: horizontal ? ipixels.size : Math.abs(vpixels.size),\n width: horizontal ? Math.abs(vpixels.size) : ipixels.size\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, bars[i].active ? 'active' : mode);\n }\n const options = properties.options || bars[i].options;\n setBorderSkipped(properties, options, stack, index);\n setInflateAmount(properties, options, ruler.ratio);\n this.updateElement(bars[i], i, properties, mode);\n }\n }\n _getStacks(last, dataIndex) {\n const {iScale} = this._cachedMeta;\n const metasets = iScale.getMatchingVisibleMetas(this._type)\n .filter(meta => meta.controller.options.grouped);\n const stacked = iScale.options.stacked;\n const stacks = [];\n const skipNull = (meta) => {\n const parsed = meta.controller.getParsed(dataIndex);\n const val = parsed && parsed[meta.vScale.axis];\n if (isNullOrUndef(val) || isNaN(val)) {\n return true;\n }\n };\n for (const meta of metasets) {\n if (dataIndex !== undefined && skipNull(meta)) {\n continue;\n }\n if (stacked === false || stacks.indexOf(meta.stack) === -1 ||\n\t\t\t\t(stacked === undefined && meta.stack === undefined)) {\n stacks.push(meta.stack);\n }\n if (meta.index === last) {\n break;\n }\n }\n if (!stacks.length) {\n stacks.push(undefined);\n }\n return stacks;\n }\n _getStackCount(index) {\n return this._getStacks(undefined, index).length;\n }\n _getStackIndex(datasetIndex, name, dataIndex) {\n const stacks = this._getStacks(datasetIndex, dataIndex);\n const index = (name !== undefined)\n ? stacks.indexOf(name)\n : -1;\n return (index === -1)\n ? stacks.length - 1\n : index;\n }\n _getRuler() {\n const opts = this.options;\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const pixels = [];\n let i, ilen;\n for (i = 0, ilen = meta.data.length; i < ilen; ++i) {\n pixels.push(iScale.getPixelForValue(this.getParsed(i)[iScale.axis], i));\n }\n const barThickness = opts.barThickness;\n const min = barThickness || computeMinSampleSize(meta);\n return {\n min,\n pixels,\n start: iScale._startPixel,\n end: iScale._endPixel,\n stackCount: this._getStackCount(),\n scale: iScale,\n grouped: opts.grouped,\n ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage\n };\n }\n _calculateBarValuePixels(index) {\n const {_cachedMeta: {vScale, _stacked}, options: {base: baseValue, minBarLength}} = this;\n const actualBase = baseValue || 0;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const floating = isFloatBar(custom);\n let value = parsed[vScale.axis];\n let start = 0;\n let length = _stacked ? this.applyStack(vScale, parsed, _stacked) : value;\n let head, size;\n if (length !== value) {\n start = length - value;\n length = value;\n }\n if (floating) {\n value = custom.barStart;\n length = custom.barEnd - custom.barStart;\n if (value !== 0 && sign(value) !== sign(custom.barEnd)) {\n start = 0;\n }\n start += value;\n }\n const startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start;\n let base = vScale.getPixelForValue(startValue);\n if (this.chart.getDataVisibility(index)) {\n head = vScale.getPixelForValue(start + length);\n } else {\n head = base;\n }\n size = head - base;\n if (Math.abs(size) < minBarLength) {\n size = barSign(size, vScale, actualBase) * minBarLength;\n if (value === actualBase) {\n base -= size / 2;\n }\n const startPixel = vScale.getPixelForDecimal(0);\n const endPixel = vScale.getPixelForDecimal(1);\n const min = Math.min(startPixel, endPixel);\n const max = Math.max(startPixel, endPixel);\n base = Math.max(Math.min(base, max), min);\n head = base + size;\n }\n if (base === vScale.getPixelForValue(actualBase)) {\n const halfGrid = sign(size) * vScale.getLineWidthForValue(actualBase) / 2;\n base += halfGrid;\n size -= halfGrid;\n }\n return {\n size,\n base,\n head,\n center: head + size / 2\n };\n }\n _calculateBarIndexPixels(index, ruler) {\n const scale = ruler.scale;\n const options = this.options;\n const skipNull = options.skipNull;\n const maxBarThickness = valueOrDefault(options.maxBarThickness, Infinity);\n let center, size;\n if (ruler.grouped) {\n const stackCount = skipNull ? this._getStackCount(index) : ruler.stackCount;\n const range = options.barThickness === 'flex'\n ? computeFlexCategoryTraits(index, ruler, options, stackCount)\n : computeFitCategoryTraits(index, ruler, options, stackCount);\n const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : undefined);\n center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\n size = Math.min(maxBarThickness, range.chunk * range.ratio);\n } else {\n center = scale.getPixelForValue(this.getParsed(index)[scale.axis], index);\n size = Math.min(maxBarThickness, ruler.min * ruler.ratio);\n }\n return {\n base: center - size / 2,\n head: center + size / 2,\n center,\n size\n };\n }\n draw() {\n const meta = this._cachedMeta;\n const vScale = meta.vScale;\n const rects = meta.data;\n const ilen = rects.length;\n let i = 0;\n for (; i < ilen; ++i) {\n if (this.getParsed(i)[vScale.axis] !== null) {\n rects[i].draw(this._ctx);\n }\n }\n }\n}\nBarController.id = 'bar';\nBarController.defaults = {\n datasetElementType: false,\n dataElementType: 'bar',\n categoryPercentage: 0.8,\n barPercentage: 0.9,\n grouped: true,\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'base', 'width', 'height']\n }\n }\n};\nBarController.overrides = {\n scales: {\n _index_: {\n type: 'category',\n offset: true,\n grid: {\n offset: true\n }\n },\n _value_: {\n type: 'linear',\n beginAtZero: true,\n }\n }\n};\n\nclass BubbleController extends DatasetController {\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n }\n parsePrimitiveData(meta, data, start, count) {\n const parsed = super.parsePrimitiveData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n parsed[i]._custom = this.resolveDataElementOptions(i + start).radius;\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const parsed = super.parseArrayData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item[2], this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const parsed = super.parseObjectData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item && item.r && +item.r, this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n getMaxOverflow() {\n const data = this._cachedMeta.data;\n let max = 0;\n for (let i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const {xScale, yScale} = meta;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n const r = parsed._custom;\n return {\n label: meta.label,\n value: '(' + x + ', ' + y + (r ? ', ' + r : '') + ')'\n };\n }\n update(mode) {\n const points = this._cachedMeta.data;\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale} = this._cachedMeta;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const parsed = !reset && this.getParsed(i);\n const properties = {};\n const iPixel = properties[iAxis] = reset ? iScale.getPixelForDecimal(0.5) : iScale.getPixelForValue(parsed[iAxis]);\n const vPixel = properties[vAxis] = reset ? vScale.getBasePixel() : vScale.getPixelForValue(parsed[vAxis]);\n properties.skip = isNaN(iPixel) || isNaN(vPixel);\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n if (reset) {\n properties.options.radius = 0;\n }\n }\n this.updateElement(point, i, properties, mode);\n }\n }\n resolveDataElementOptions(index, mode) {\n const parsed = this.getParsed(index);\n let values = super.resolveDataElementOptions(index, mode);\n if (values.$shared) {\n values = Object.assign({}, values, {$shared: false});\n }\n const radius = values.radius;\n if (mode !== 'active') {\n values.radius = 0;\n }\n values.radius += valueOrDefault(parsed && parsed._custom, radius);\n return values;\n }\n}\nBubbleController.id = 'bubble';\nBubbleController.defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'borderWidth', 'radius']\n }\n }\n};\nBubbleController.overrides = {\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n },\n plugins: {\n tooltip: {\n callbacks: {\n title() {\n return '';\n }\n }\n }\n }\n};\n\nfunction getRatioAndOffset(rotation, circumference, cutout) {\n let ratioX = 1;\n let ratioY = 1;\n let offsetX = 0;\n let offsetY = 0;\n if (circumference < TAU) {\n const startAngle = rotation;\n const endAngle = startAngle + circumference;\n const startX = Math.cos(startAngle);\n const startY = Math.sin(startAngle);\n const endX = Math.cos(endAngle);\n const endY = Math.sin(endAngle);\n const calcMax = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout);\n const calcMin = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout);\n const maxX = calcMax(0, startX, endX);\n const maxY = calcMax(HALF_PI, startY, endY);\n const minX = calcMin(PI, startX, endX);\n const minY = calcMin(PI + HALF_PI, startY, endY);\n ratioX = (maxX - minX) / 2;\n ratioY = (maxY - minY) / 2;\n offsetX = -(maxX + minX) / 2;\n offsetY = -(maxY + minY) / 2;\n }\n return {ratioX, ratioY, offsetX, offsetY};\n}\nclass DoughnutController extends DatasetController {\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n this.enableOptionSharing = true;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.offsetX = undefined;\n this.offsetY = undefined;\n }\n linkScales() {}\n parse(start, count) {\n const data = this.getDataset().data;\n const meta = this._cachedMeta;\n if (this._parsing === false) {\n meta._parsed = data;\n } else {\n let getter = (i) => +data[i];\n if (isObject(data[start])) {\n const {key = 'value'} = this._parsing;\n getter = (i) => +resolveObjectKey(data[i], key);\n }\n let i, ilen;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n meta._parsed[i] = getter(i);\n }\n }\n }\n _getRotation() {\n return toRadians(this.options.rotation - 90);\n }\n _getCircumference() {\n return toRadians(this.options.circumference);\n }\n _getRotationExtents() {\n let min = TAU;\n let max = -TAU;\n for (let i = 0; i < this.chart.data.datasets.length; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n const controller = this.chart.getDatasetMeta(i).controller;\n const rotation = controller._getRotation();\n const circumference = controller._getCircumference();\n min = Math.min(min, rotation);\n max = Math.max(max, rotation + circumference);\n }\n }\n return {\n rotation: min,\n circumference: max - min,\n };\n }\n update(mode) {\n const chart = this.chart;\n const {chartArea} = chart;\n const meta = this._cachedMeta;\n const arcs = meta.data;\n const spacing = this.getMaxBorderWidth() + this.getMaxOffset(arcs) + this.options.spacing;\n const maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0);\n const cutout = Math.min(toPercentage(this.options.cutout, maxSize), 1);\n const chartWeight = this._getRingWeight(this.index);\n const {circumference, rotation} = this._getRotationExtents();\n const {ratioX, ratioY, offsetX, offsetY} = getRatioAndOffset(rotation, circumference, cutout);\n const maxWidth = (chartArea.width - spacing) / ratioX;\n const maxHeight = (chartArea.height - spacing) / ratioY;\n const maxRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n const outerRadius = toDimension(this.options.radius, maxRadius);\n const innerRadius = Math.max(outerRadius * cutout, 0);\n const radiusLength = (outerRadius - innerRadius) / this._getVisibleDatasetWeightTotal();\n this.offsetX = offsetX * outerRadius;\n this.offsetY = offsetY * outerRadius;\n meta.total = this.calculateTotal();\n this.outerRadius = outerRadius - radiusLength * this._getRingWeightOffset(this.index);\n this.innerRadius = Math.max(this.outerRadius - radiusLength * chartWeight, 0);\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n _circumference(i, reset) {\n const opts = this.options;\n const meta = this._cachedMeta;\n const circumference = this._getCircumference();\n if ((reset && opts.animation.animateRotate) || !this.chart.getDataVisibility(i) || meta._parsed[i] === null || meta.data[i].hidden) {\n return 0;\n }\n return this.calculateCircumference(meta._parsed[i] * circumference / TAU);\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const centerX = (chartArea.left + chartArea.right) / 2;\n const centerY = (chartArea.top + chartArea.bottom) / 2;\n const animateScale = reset && animationOpts.animateScale;\n const innerRadius = animateScale ? 0 : this.innerRadius;\n const outerRadius = animateScale ? 0 : this.outerRadius;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n let startAngle = this._getRotation();\n let i;\n for (i = 0; i < start; ++i) {\n startAngle += this._circumference(i, reset);\n }\n for (i = start; i < start + count; ++i) {\n const circumference = this._circumference(i, reset);\n const arc = arcs[i];\n const properties = {\n x: centerX + this.offsetX,\n y: centerY + this.offsetY,\n startAngle,\n endAngle: startAngle + circumference,\n circumference,\n outerRadius,\n innerRadius\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, arc.active ? 'active' : mode);\n }\n startAngle += circumference;\n this.updateElement(arc, i, properties, mode);\n }\n }\n calculateTotal() {\n const meta = this._cachedMeta;\n const metaData = meta.data;\n let total = 0;\n let i;\n for (i = 0; i < metaData.length; i++) {\n const value = meta._parsed[i];\n if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i) && !metaData[i].hidden) {\n total += Math.abs(value);\n }\n }\n return total;\n }\n calculateCircumference(value) {\n const total = this._cachedMeta.total;\n if (total > 0 && !isNaN(value)) {\n return TAU * (Math.abs(value) / total);\n }\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index], chart.options.locale);\n return {\n label: labels[index] || '',\n value,\n };\n }\n getMaxBorderWidth(arcs) {\n let max = 0;\n const chart = this.chart;\n let i, ilen, meta, controller, options;\n if (!arcs) {\n for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\n if (chart.isDatasetVisible(i)) {\n meta = chart.getDatasetMeta(i);\n arcs = meta.data;\n controller = meta.controller;\n break;\n }\n }\n }\n if (!arcs) {\n return 0;\n }\n for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n options = controller.resolveDataElementOptions(i);\n if (options.borderAlign !== 'inner') {\n max = Math.max(max, options.borderWidth || 0, options.hoverBorderWidth || 0);\n }\n }\n return max;\n }\n getMaxOffset(arcs) {\n let max = 0;\n for (let i = 0, ilen = arcs.length; i < ilen; ++i) {\n const options = this.resolveDataElementOptions(i);\n max = Math.max(max, options.offset || 0, options.hoverOffset || 0);\n }\n return max;\n }\n _getRingWeightOffset(datasetIndex) {\n let ringWeightOffset = 0;\n for (let i = 0; i < datasetIndex; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n ringWeightOffset += this._getRingWeight(i);\n }\n }\n return ringWeightOffset;\n }\n _getRingWeight(datasetIndex) {\n return Math.max(valueOrDefault(this.chart.data.datasets[datasetIndex].weight, 1), 0);\n }\n _getVisibleDatasetWeightTotal() {\n return this._getRingWeightOffset(this.chart.data.datasets.length) || 1;\n }\n}\nDoughnutController.id = 'doughnut';\nDoughnutController.defaults = {\n datasetElementType: false,\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: false\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['circumference', 'endAngle', 'innerRadius', 'outerRadius', 'startAngle', 'x', 'y', 'offset', 'borderWidth', 'spacing']\n },\n },\n cutout: '50%',\n rotation: 0,\n circumference: 360,\n radius: '100%',\n spacing: 0,\n indexAxis: 'r',\n};\nDoughnutController.descriptors = {\n _scriptable: (name) => name !== 'spacing',\n _indexable: (name) => name !== 'spacing',\n};\nDoughnutController.overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const {labels: {pointStyle}} = chart.legend.options;\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n },\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(tooltipItem) {\n let dataLabel = tooltipItem.label;\n const value = ': ' + tooltipItem.formattedValue;\n if (isArray(dataLabel)) {\n dataLabel = dataLabel.slice();\n dataLabel[0] += value;\n } else {\n dataLabel += value;\n }\n return dataLabel;\n }\n }\n }\n }\n};\n\nclass LineController extends DatasetController {\n initialize() {\n this.enableOptionSharing = true;\n this.supportsDecimation = true;\n super.initialize();\n }\n update(mode) {\n const meta = this._cachedMeta;\n const {dataset: line, data: points = [], _dataset} = meta;\n const animationsDisabled = this.chart._animationsDisabled;\n let {start, count} = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n this._drawStart = start;\n this._drawCount = count;\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n this.updateElements(points, start, count, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const {spanGaps, segment} = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for (let i = start; i < start + count; ++i) {\n const point = points[i];\n const parsed = this.getParsed(i);\n const properties = directUpdate ? point : {};\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && (Math.abs(parsed[iAxis] - prevParsed[iAxis])) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n const data = meta.data || [];\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n draw() {\n const meta = this._cachedMeta;\n meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis);\n super.draw();\n }\n}\nLineController.id = 'line';\nLineController.defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n showLine: true,\n spanGaps: false,\n};\nLineController.overrides = {\n scales: {\n _index_: {\n type: 'category',\n },\n _value_: {\n type: 'linear',\n },\n }\n};\n\nclass PolarAreaController extends DatasetController {\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index].r, chart.options.locale);\n return {\n label: labels[index] || '',\n value,\n };\n }\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n update(mode) {\n const arcs = this._cachedMeta.data;\n this._updateRadius();\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n getMinMax() {\n const meta = this._cachedMeta;\n const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n meta.data.forEach((element, index) => {\n const parsed = this.getParsed(index).r;\n if (!isNaN(parsed) && this.chart.getDataVisibility(index)) {\n if (parsed < range.min) {\n range.min = parsed;\n }\n if (parsed > range.max) {\n range.max = parsed;\n }\n }\n });\n return range;\n }\n _updateRadius() {\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n const outerRadius = Math.max(minSize / 2, 0);\n const innerRadius = Math.max(opts.cutoutPercentage ? (outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\n const radiusLength = (outerRadius - innerRadius) / chart.getVisibleDatasetCount();\n this.outerRadius = outerRadius - (radiusLength * this.index);\n this.innerRadius = this.outerRadius - radiusLength;\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const scale = this._cachedMeta.rScale;\n const centerX = scale.xCenter;\n const centerY = scale.yCenter;\n const datasetStartAngle = scale.getIndexAngle(0) - 0.5 * PI;\n let angle = datasetStartAngle;\n let i;\n const defaultAngle = 360 / this.countVisibleElements();\n for (i = 0; i < start; ++i) {\n angle += this._computeAngle(i, mode, defaultAngle);\n }\n for (i = start; i < start + count; i++) {\n const arc = arcs[i];\n let startAngle = angle;\n let endAngle = angle + this._computeAngle(i, mode, defaultAngle);\n let outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(this.getParsed(i).r) : 0;\n angle = endAngle;\n if (reset) {\n if (animationOpts.animateScale) {\n outerRadius = 0;\n }\n if (animationOpts.animateRotate) {\n startAngle = endAngle = datasetStartAngle;\n }\n }\n const properties = {\n x: centerX,\n y: centerY,\n innerRadius: 0,\n outerRadius,\n startAngle,\n endAngle,\n options: this.resolveDataElementOptions(i, arc.active ? 'active' : mode)\n };\n this.updateElement(arc, i, properties, mode);\n }\n }\n countVisibleElements() {\n const meta = this._cachedMeta;\n let count = 0;\n meta.data.forEach((element, index) => {\n if (!isNaN(this.getParsed(index).r) && this.chart.getDataVisibility(index)) {\n count++;\n }\n });\n return count;\n }\n _computeAngle(index, mode, defaultAngle) {\n return this.chart.getDataVisibility(index)\n ? toRadians(this.resolveDataElementOptions(index, mode).angle || defaultAngle)\n : 0;\n }\n}\nPolarAreaController.id = 'polarArea';\nPolarAreaController.defaults = {\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: true\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'startAngle', 'endAngle', 'innerRadius', 'outerRadius']\n },\n },\n indexAxis: 'r',\n startAngle: 0,\n};\nPolarAreaController.overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const {labels: {pointStyle}} = chart.legend.options;\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n },\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(context) {\n return context.chart.data.labels[context.dataIndex] + ': ' + context.formattedValue;\n }\n }\n }\n },\n scales: {\n r: {\n type: 'radialLinear',\n angleLines: {\n display: false\n },\n beginAtZero: true,\n grid: {\n circular: true\n },\n pointLabels: {\n display: false\n },\n startAngle: 0\n }\n }\n};\n\nclass PieController extends DoughnutController {\n}\nPieController.id = 'pie';\nPieController.defaults = {\n cutout: 0,\n rotation: 0,\n circumference: 360,\n radius: '100%'\n};\n\nclass RadarController extends DatasetController {\n getLabelAndValue(index) {\n const vScale = this._cachedMeta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: vScale.getLabels()[index],\n value: '' + vScale.getLabelForValue(parsed[vScale.axis])\n };\n }\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n update(mode) {\n const meta = this._cachedMeta;\n const line = meta.dataset;\n const points = meta.data || [];\n const labels = meta.iScale.getLabels();\n line.points = points;\n if (mode !== 'resize') {\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n const properties = {\n _loop: true,\n _fullLoop: labels.length === points.length,\n options\n };\n this.updateElement(line, undefined, properties, mode);\n }\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const scale = this._cachedMeta.rScale;\n const reset = mode === 'reset';\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n const pointPosition = scale.getPointPositionForValue(i, this.getParsed(i).r);\n const x = reset ? scale.xCenter : pointPosition.x;\n const y = reset ? scale.yCenter : pointPosition.y;\n const properties = {\n x,\n y,\n angle: pointPosition.angle,\n skip: isNaN(x) || isNaN(y),\n options\n };\n this.updateElement(point, i, properties, mode);\n }\n }\n}\nRadarController.id = 'radar';\nRadarController.defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n indexAxis: 'r',\n showLine: true,\n elements: {\n line: {\n fill: 'start'\n }\n },\n};\nRadarController.overrides = {\n aspectRatio: 1,\n scales: {\n r: {\n type: 'radialLinear',\n }\n }\n};\n\nclass Element {\n constructor() {\n this.x = undefined;\n this.y = undefined;\n this.active = false;\n this.options = undefined;\n this.$animations = undefined;\n }\n tooltipPosition(useFinalPosition) {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y};\n }\n hasValue() {\n return isNumber(this.x) && isNumber(this.y);\n }\n getProps(props, final) {\n const anims = this.$animations;\n if (!final || !anims) {\n return this;\n }\n const ret = {};\n props.forEach(prop => {\n ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : this[prop];\n });\n return ret;\n }\n}\nElement.defaults = {};\nElement.defaultRoutes = undefined;\n\nconst formatters = {\n values(value) {\n return isArray(value) ? value : '' + value;\n },\n numeric(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const locale = this.chart.options.locale;\n let notation;\n let delta = tickValue;\n if (ticks.length > 1) {\n const maxTick = Math.max(Math.abs(ticks[0].value), Math.abs(ticks[ticks.length - 1].value));\n if (maxTick < 1e-4 || maxTick > 1e+15) {\n notation = 'scientific';\n }\n delta = calculateDelta(tickValue, ticks);\n }\n const logDelta = log10(Math.abs(delta));\n const numDecimal = Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0);\n const options = {notation, minimumFractionDigits: numDecimal, maximumFractionDigits: numDecimal};\n Object.assign(options, this.options.ticks.format);\n return formatNumber(tickValue, locale, options);\n },\n logarithmic(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const remain = tickValue / (Math.pow(10, Math.floor(log10(tickValue))));\n if (remain === 1 || remain === 2 || remain === 5) {\n return formatters.numeric.call(this, tickValue, index, ticks);\n }\n return '';\n }\n};\nfunction calculateDelta(tickValue, ticks) {\n let delta = ticks.length > 3 ? ticks[2].value - ticks[1].value : ticks[1].value - ticks[0].value;\n if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) {\n delta = tickValue - Math.floor(tickValue);\n }\n return delta;\n}\nvar Ticks = {formatters};\n\ndefaults.set('scale', {\n display: true,\n offset: false,\n reverse: false,\n beginAtZero: false,\n bounds: 'ticks',\n grace: 0,\n grid: {\n display: true,\n lineWidth: 1,\n drawBorder: true,\n drawOnChartArea: true,\n drawTicks: true,\n tickLength: 8,\n tickWidth: (_ctx, options) => options.lineWidth,\n tickColor: (_ctx, options) => options.color,\n offset: false,\n borderDash: [],\n borderDashOffset: 0.0,\n borderWidth: 1\n },\n title: {\n display: false,\n text: '',\n padding: {\n top: 4,\n bottom: 4\n }\n },\n ticks: {\n minRotation: 0,\n maxRotation: 50,\n mirror: false,\n textStrokeWidth: 0,\n textStrokeColor: '',\n padding: 3,\n display: true,\n autoSkip: true,\n autoSkipPadding: 3,\n labelOffset: 0,\n callback: Ticks.formatters.values,\n minor: {},\n major: {},\n align: 'center',\n crossAlign: 'near',\n showLabelBackdrop: false,\n backdropColor: 'rgba(255, 255, 255, 0.75)',\n backdropPadding: 2,\n }\n});\ndefaults.route('scale.ticks', 'color', '', 'color');\ndefaults.route('scale.grid', 'color', '', 'borderColor');\ndefaults.route('scale.grid', 'borderColor', '', 'borderColor');\ndefaults.route('scale.title', 'color', '', 'color');\ndefaults.describe('scale', {\n _fallback: false,\n _scriptable: (name) => !name.startsWith('before') && !name.startsWith('after') && name !== 'callback' && name !== 'parser',\n _indexable: (name) => name !== 'borderDash' && name !== 'tickBorderDash',\n});\ndefaults.describe('scales', {\n _fallback: 'scale',\n});\ndefaults.describe('scale.ticks', {\n _scriptable: (name) => name !== 'backdropPadding' && name !== 'callback',\n _indexable: (name) => name !== 'backdropPadding',\n});\n\nfunction autoSkip(scale, ticks) {\n const tickOpts = scale.options.ticks;\n const ticksLimit = tickOpts.maxTicksLimit || determineMaxTicks(scale);\n const majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\n const numMajorIndices = majorIndices.length;\n const first = majorIndices[0];\n const last = majorIndices[numMajorIndices - 1];\n const newTicks = [];\n if (numMajorIndices > ticksLimit) {\n skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit);\n return newTicks;\n }\n const spacing = calculateSpacing(majorIndices, ticks, ticksLimit);\n if (numMajorIndices > 0) {\n let i, ilen;\n const avgMajorSpacing = numMajorIndices > 1 ? Math.round((last - first) / (numMajorIndices - 1)) : null;\n skip(ticks, newTicks, spacing, isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\n for (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) {\n skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]);\n }\n skip(ticks, newTicks, spacing, last, isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n return newTicks;\n }\n skip(ticks, newTicks, spacing);\n return newTicks;\n}\nfunction determineMaxTicks(scale) {\n const offset = scale.options.offset;\n const tickLength = scale._tickSize();\n const maxScale = scale._length / tickLength + (offset ? 0 : 1);\n const maxChart = scale._maxLength / tickLength;\n return Math.floor(Math.min(maxScale, maxChart));\n}\nfunction calculateSpacing(majorIndices, ticks, ticksLimit) {\n const evenMajorSpacing = getEvenSpacing(majorIndices);\n const spacing = ticks.length / ticksLimit;\n if (!evenMajorSpacing) {\n return Math.max(spacing, 1);\n }\n const factors = _factorize(evenMajorSpacing);\n for (let i = 0, ilen = factors.length - 1; i < ilen; i++) {\n const factor = factors[i];\n if (factor > spacing) {\n return factor;\n }\n }\n return Math.max(spacing, 1);\n}\nfunction getMajorIndices(ticks) {\n const result = [];\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (ticks[i].major) {\n result.push(i);\n }\n }\n return result;\n}\nfunction skipMajors(ticks, newTicks, majorIndices, spacing) {\n let count = 0;\n let next = majorIndices[0];\n let i;\n spacing = Math.ceil(spacing);\n for (i = 0; i < ticks.length; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = majorIndices[count * spacing];\n }\n }\n}\nfunction skip(ticks, newTicks, spacing, majorStart, majorEnd) {\n const start = valueOrDefault(majorStart, 0);\n const end = Math.min(valueOrDefault(majorEnd, ticks.length), ticks.length);\n let count = 0;\n let length, i, next;\n spacing = Math.ceil(spacing);\n if (majorEnd) {\n length = majorEnd - majorStart;\n spacing = length / Math.floor(length / spacing);\n }\n next = start;\n while (next < 0) {\n count++;\n next = Math.round(start + count * spacing);\n }\n for (i = Math.max(start, 0); i < end; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = Math.round(start + count * spacing);\n }\n }\n}\nfunction getEvenSpacing(arr) {\n const len = arr.length;\n let i, diff;\n if (len < 2) {\n return false;\n }\n for (diff = arr[0], i = 1; i < len; ++i) {\n if (arr[i] - arr[i - 1] !== diff) {\n return false;\n }\n }\n return diff;\n}\n\nconst reverseAlign = (align) => align === 'left' ? 'right' : align === 'right' ? 'left' : align;\nconst offsetFromEdge = (scale, edge, offset) => edge === 'top' || edge === 'left' ? scale[edge] + offset : scale[edge] - offset;\nfunction sample(arr, numItems) {\n const result = [];\n const increment = arr.length / numItems;\n const len = arr.length;\n let i = 0;\n for (; i < len; i += increment) {\n result.push(arr[Math.floor(i)]);\n }\n return result;\n}\nfunction getPixelForGridLine(scale, index, offsetGridLines) {\n const length = scale.ticks.length;\n const validIndex = Math.min(index, length - 1);\n const start = scale._startPixel;\n const end = scale._endPixel;\n const epsilon = 1e-6;\n let lineValue = scale.getPixelForTick(validIndex);\n let offset;\n if (offsetGridLines) {\n if (length === 1) {\n offset = Math.max(lineValue - start, end - lineValue);\n } else if (index === 0) {\n offset = (scale.getPixelForTick(1) - lineValue) / 2;\n } else {\n offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\n }\n lineValue += validIndex < index ? offset : -offset;\n if (lineValue < start - epsilon || lineValue > end + epsilon) {\n return;\n }\n }\n return lineValue;\n}\nfunction garbageCollect(caches, length) {\n each(caches, (cache) => {\n const gc = cache.gc;\n const gcLen = gc.length / 2;\n let i;\n if (gcLen > length) {\n for (i = 0; i < gcLen; ++i) {\n delete cache.data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n });\n}\nfunction getTickMarkLength(options) {\n return options.drawTicks ? options.tickLength : 0;\n}\nfunction getTitleHeight(options, fallback) {\n if (!options.display) {\n return 0;\n }\n const font = toFont(options.font, fallback);\n const padding = toPadding(options.padding);\n const lines = isArray(options.text) ? options.text.length : 1;\n return (lines * font.lineHeight) + padding.height;\n}\nfunction createScaleContext(parent, scale) {\n return createContext(parent, {\n scale,\n type: 'scale'\n });\n}\nfunction createTickContext(parent, index, tick) {\n return createContext(parent, {\n tick,\n index,\n type: 'tick'\n });\n}\nfunction titleAlign(align, position, reverse) {\n let ret = _toLeftRightCenter(align);\n if ((reverse && position !== 'right') || (!reverse && position === 'right')) {\n ret = reverseAlign(ret);\n }\n return ret;\n}\nfunction titleArgs(scale, offset, position, align) {\n const {top, left, bottom, right, chart} = scale;\n const {chartArea, scales} = chart;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n const height = bottom - top;\n const width = right - left;\n if (scale.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleY = scales[positionAxisID].getPixelForValue(value) + height - offset;\n } else if (position === 'center') {\n titleY = (chartArea.bottom + chartArea.top) / 2 + height - offset;\n } else {\n titleY = offsetFromEdge(scale, position, offset);\n }\n maxWidth = right - left;\n } else {\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleX = scales[positionAxisID].getPixelForValue(value) - width + offset;\n } else if (position === 'center') {\n titleX = (chartArea.left + chartArea.right) / 2 - width + offset;\n } else {\n titleX = offsetFromEdge(scale, position, offset);\n }\n titleY = _alignStartEnd(align, bottom, top);\n rotation = position === 'left' ? -HALF_PI : HALF_PI;\n }\n return {titleX, titleY, maxWidth, rotation};\n}\nclass Scale extends Element {\n constructor(cfg) {\n super();\n this.id = cfg.id;\n this.type = cfg.type;\n this.options = undefined;\n this.ctx = cfg.ctx;\n this.chart = cfg.chart;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this._margins = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n this.maxWidth = undefined;\n this.maxHeight = undefined;\n this.paddingTop = undefined;\n this.paddingBottom = undefined;\n this.paddingLeft = undefined;\n this.paddingRight = undefined;\n this.axis = undefined;\n this.labelRotation = undefined;\n this.min = undefined;\n this.max = undefined;\n this._range = undefined;\n this.ticks = [];\n this._gridLineItems = null;\n this._labelItems = null;\n this._labelSizes = null;\n this._length = 0;\n this._maxLength = 0;\n this._longestTextCache = {};\n this._startPixel = undefined;\n this._endPixel = undefined;\n this._reversePixels = false;\n this._userMax = undefined;\n this._userMin = undefined;\n this._suggestedMax = undefined;\n this._suggestedMin = undefined;\n this._ticksLength = 0;\n this._borderValue = 0;\n this._cache = {};\n this._dataLimitsCached = false;\n this.$context = undefined;\n }\n init(options) {\n this.options = options.setContext(this.getContext());\n this.axis = options.axis;\n this._userMin = this.parse(options.min);\n this._userMax = this.parse(options.max);\n this._suggestedMin = this.parse(options.suggestedMin);\n this._suggestedMax = this.parse(options.suggestedMax);\n }\n parse(raw, index) {\n return raw;\n }\n getUserBounds() {\n let {_userMin, _userMax, _suggestedMin, _suggestedMax} = this;\n _userMin = finiteOrDefault(_userMin, Number.POSITIVE_INFINITY);\n _userMax = finiteOrDefault(_userMax, Number.NEGATIVE_INFINITY);\n _suggestedMin = finiteOrDefault(_suggestedMin, Number.POSITIVE_INFINITY);\n _suggestedMax = finiteOrDefault(_suggestedMax, Number.NEGATIVE_INFINITY);\n return {\n min: finiteOrDefault(_userMin, _suggestedMin),\n max: finiteOrDefault(_userMax, _suggestedMax),\n minDefined: isNumberFinite(_userMin),\n maxDefined: isNumberFinite(_userMax)\n };\n }\n getMinMax(canStack) {\n let {min, max, minDefined, maxDefined} = this.getUserBounds();\n let range;\n if (minDefined && maxDefined) {\n return {min, max};\n }\n const metas = this.getMatchingVisibleMetas();\n for (let i = 0, ilen = metas.length; i < ilen; ++i) {\n range = metas[i].controller.getMinMax(this, canStack);\n if (!minDefined) {\n min = Math.min(min, range.min);\n }\n if (!maxDefined) {\n max = Math.max(max, range.max);\n }\n }\n min = maxDefined && min > max ? max : min;\n max = minDefined && min > max ? min : max;\n return {\n min: finiteOrDefault(min, finiteOrDefault(max, min)),\n max: finiteOrDefault(max, finiteOrDefault(min, max))\n };\n }\n getPadding() {\n return {\n left: this.paddingLeft || 0,\n top: this.paddingTop || 0,\n right: this.paddingRight || 0,\n bottom: this.paddingBottom || 0\n };\n }\n getTicks() {\n return this.ticks;\n }\n getLabels() {\n const data = this.chart.data;\n return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n }\n beforeLayout() {\n this._cache = {};\n this._dataLimitsCached = false;\n }\n beforeUpdate() {\n callback(this.options.beforeUpdate, [this]);\n }\n update(maxWidth, maxHeight, margins) {\n const {beginAtZero, grace, ticks: tickOpts} = this.options;\n const sampleSize = tickOpts.sampleSize;\n this.beforeUpdate();\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins = Object.assign({\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }, margins);\n this.ticks = null;\n this._labelSizes = null;\n this._gridLineItems = null;\n this._labelItems = null;\n this.beforeSetDimensions();\n this.setDimensions();\n this.afterSetDimensions();\n this._maxLength = this.isHorizontal()\n ? this.width + margins.left + margins.right\n : this.height + margins.top + margins.bottom;\n if (!this._dataLimitsCached) {\n this.beforeDataLimits();\n this.determineDataLimits();\n this.afterDataLimits();\n this._range = _addGrace(this, grace, beginAtZero);\n this._dataLimitsCached = true;\n }\n this.beforeBuildTicks();\n this.ticks = this.buildTicks() || [];\n this.afterBuildTicks();\n const samplingEnabled = sampleSize < this.ticks.length;\n this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks);\n this.configure();\n this.beforeCalculateLabelRotation();\n this.calculateLabelRotation();\n this.afterCalculateLabelRotation();\n if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto')) {\n this.ticks = autoSkip(this, this.ticks);\n this._labelSizes = null;\n this.afterAutoSkip();\n }\n if (samplingEnabled) {\n this._convertTicksToLabels(this.ticks);\n }\n this.beforeFit();\n this.fit();\n this.afterFit();\n this.afterUpdate();\n }\n configure() {\n let reversePixels = this.options.reverse;\n let startPixel, endPixel;\n if (this.isHorizontal()) {\n startPixel = this.left;\n endPixel = this.right;\n } else {\n startPixel = this.top;\n endPixel = this.bottom;\n reversePixels = !reversePixels;\n }\n this._startPixel = startPixel;\n this._endPixel = endPixel;\n this._reversePixels = reversePixels;\n this._length = endPixel - startPixel;\n this._alignToPixels = this.options.alignToPixels;\n }\n afterUpdate() {\n callback(this.options.afterUpdate, [this]);\n }\n beforeSetDimensions() {\n callback(this.options.beforeSetDimensions, [this]);\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = 0;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = 0;\n this.bottom = this.height;\n }\n this.paddingLeft = 0;\n this.paddingTop = 0;\n this.paddingRight = 0;\n this.paddingBottom = 0;\n }\n afterSetDimensions() {\n callback(this.options.afterSetDimensions, [this]);\n }\n _callHooks(name) {\n this.chart.notifyPlugins(name, this.getContext());\n callback(this.options[name], [this]);\n }\n beforeDataLimits() {\n this._callHooks('beforeDataLimits');\n }\n determineDataLimits() {}\n afterDataLimits() {\n this._callHooks('afterDataLimits');\n }\n beforeBuildTicks() {\n this._callHooks('beforeBuildTicks');\n }\n buildTicks() {\n return [];\n }\n afterBuildTicks() {\n this._callHooks('afterBuildTicks');\n }\n beforeTickToLabelConversion() {\n callback(this.options.beforeTickToLabelConversion, [this]);\n }\n generateTickLabels(ticks) {\n const tickOpts = this.options.ticks;\n let i, ilen, tick;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n tick = ticks[i];\n tick.label = callback(tickOpts.callback, [tick.value, i, ticks], this);\n }\n }\n afterTickToLabelConversion() {\n callback(this.options.afterTickToLabelConversion, [this]);\n }\n beforeCalculateLabelRotation() {\n callback(this.options.beforeCalculateLabelRotation, [this]);\n }\n calculateLabelRotation() {\n const options = this.options;\n const tickOpts = options.ticks;\n const numTicks = this.ticks.length;\n const minRotation = tickOpts.minRotation || 0;\n const maxRotation = tickOpts.maxRotation;\n let labelRotation = minRotation;\n let tickWidth, maxHeight, maxLabelDiagonal;\n if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) {\n this.labelRotation = minRotation;\n return;\n }\n const labelSizes = this._getLabelSizes();\n const maxLabelWidth = labelSizes.widest.width;\n const maxLabelHeight = labelSizes.highest.height;\n const maxWidth = _limitValue(this.chart.width - maxLabelWidth, 0, this.maxWidth);\n tickWidth = options.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1);\n if (maxLabelWidth + 6 > tickWidth) {\n tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\n maxHeight = this.maxHeight - getTickMarkLength(options.grid)\n\t\t\t\t- tickOpts.padding - getTitleHeight(options.title, this.chart.options.font);\n maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n labelRotation = toDegrees(Math.min(\n Math.asin(_limitValue((labelSizes.highest.height + 6) / tickWidth, -1, 1)),\n Math.asin(_limitValue(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin(_limitValue(maxLabelHeight / maxLabelDiagonal, -1, 1))\n ));\n labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n }\n this.labelRotation = labelRotation;\n }\n afterCalculateLabelRotation() {\n callback(this.options.afterCalculateLabelRotation, [this]);\n }\n afterAutoSkip() {}\n beforeFit() {\n callback(this.options.beforeFit, [this]);\n }\n fit() {\n const minSize = {\n width: 0,\n height: 0\n };\n const {chart, options: {ticks: tickOpts, title: titleOpts, grid: gridOpts}} = this;\n const display = this._isVisible();\n const isHorizontal = this.isHorizontal();\n if (display) {\n const titleHeight = getTitleHeight(titleOpts, chart.options.font);\n if (isHorizontal) {\n minSize.width = this.maxWidth;\n minSize.height = getTickMarkLength(gridOpts) + titleHeight;\n } else {\n minSize.height = this.maxHeight;\n minSize.width = getTickMarkLength(gridOpts) + titleHeight;\n }\n if (tickOpts.display && this.ticks.length) {\n const {first, last, widest, highest} = this._getLabelSizes();\n const tickPadding = tickOpts.padding * 2;\n const angleRadians = toRadians(this.labelRotation);\n const cos = Math.cos(angleRadians);\n const sin = Math.sin(angleRadians);\n if (isHorizontal) {\n const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height;\n minSize.height = Math.min(this.maxHeight, minSize.height + labelHeight + tickPadding);\n } else {\n const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height;\n minSize.width = Math.min(this.maxWidth, minSize.width + labelWidth + tickPadding);\n }\n this._calculatePadding(first, last, sin, cos);\n }\n }\n this._handleMargins();\n if (isHorizontal) {\n this.width = this._length = chart.width - this._margins.left - this._margins.right;\n this.height = minSize.height;\n } else {\n this.width = minSize.width;\n this.height = this._length = chart.height - this._margins.top - this._margins.bottom;\n }\n }\n _calculatePadding(first, last, sin, cos) {\n const {ticks: {align, padding}, position} = this.options;\n const isRotated = this.labelRotation !== 0;\n const labelsBelowTicks = position !== 'top' && this.axis === 'x';\n if (this.isHorizontal()) {\n const offsetLeft = this.getPixelForTick(0) - this.left;\n const offsetRight = this.right - this.getPixelForTick(this.ticks.length - 1);\n let paddingLeft = 0;\n let paddingRight = 0;\n if (isRotated) {\n if (labelsBelowTicks) {\n paddingLeft = cos * first.width;\n paddingRight = sin * last.height;\n } else {\n paddingLeft = sin * first.height;\n paddingRight = cos * last.width;\n }\n } else if (align === 'start') {\n paddingRight = last.width;\n } else if (align === 'end') {\n paddingLeft = first.width;\n } else if (align !== 'inner') {\n paddingLeft = first.width / 2;\n paddingRight = last.width / 2;\n }\n this.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * this.width / (this.width - offsetLeft), 0);\n this.paddingRight = Math.max((paddingRight - offsetRight + padding) * this.width / (this.width - offsetRight), 0);\n } else {\n let paddingTop = last.height / 2;\n let paddingBottom = first.height / 2;\n if (align === 'start') {\n paddingTop = 0;\n paddingBottom = first.height;\n } else if (align === 'end') {\n paddingTop = last.height;\n paddingBottom = 0;\n }\n this.paddingTop = paddingTop + padding;\n this.paddingBottom = paddingBottom + padding;\n }\n }\n _handleMargins() {\n if (this._margins) {\n this._margins.left = Math.max(this.paddingLeft, this._margins.left);\n this._margins.top = Math.max(this.paddingTop, this._margins.top);\n this._margins.right = Math.max(this.paddingRight, this._margins.right);\n this._margins.bottom = Math.max(this.paddingBottom, this._margins.bottom);\n }\n }\n afterFit() {\n callback(this.options.afterFit, [this]);\n }\n isHorizontal() {\n const {axis, position} = this.options;\n return position === 'top' || position === 'bottom' || axis === 'x';\n }\n isFullSize() {\n return this.options.fullSize;\n }\n _convertTicksToLabels(ticks) {\n this.beforeTickToLabelConversion();\n this.generateTickLabels(ticks);\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (isNullOrUndef(ticks[i].label)) {\n ticks.splice(i, 1);\n ilen--;\n i--;\n }\n }\n this.afterTickToLabelConversion();\n }\n _getLabelSizes() {\n let labelSizes = this._labelSizes;\n if (!labelSizes) {\n const sampleSize = this.options.ticks.sampleSize;\n let ticks = this.ticks;\n if (sampleSize < ticks.length) {\n ticks = sample(ticks, sampleSize);\n }\n this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length);\n }\n return labelSizes;\n }\n _computeLabelSizes(ticks, length) {\n const {ctx, _longestTextCache: caches} = this;\n const widths = [];\n const heights = [];\n let widestLabelSize = 0;\n let highestLabelSize = 0;\n let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel;\n for (i = 0; i < length; ++i) {\n label = ticks[i].label;\n tickFont = this._resolveTickFontOptions(i);\n ctx.font = fontString = tickFont.string;\n cache = caches[fontString] = caches[fontString] || {data: {}, gc: []};\n lineHeight = tickFont.lineHeight;\n width = height = 0;\n if (!isNullOrUndef(label) && !isArray(label)) {\n width = _measureText(ctx, cache.data, cache.gc, width, label);\n height = lineHeight;\n } else if (isArray(label)) {\n for (j = 0, jlen = label.length; j < jlen; ++j) {\n nestedLabel = label[j];\n if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n width = _measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n height += lineHeight;\n }\n }\n }\n widths.push(width);\n heights.push(height);\n widestLabelSize = Math.max(width, widestLabelSize);\n highestLabelSize = Math.max(height, highestLabelSize);\n }\n garbageCollect(caches, length);\n const widest = widths.indexOf(widestLabelSize);\n const highest = heights.indexOf(highestLabelSize);\n const valueAt = (idx) => ({width: widths[idx] || 0, height: heights[idx] || 0});\n return {\n first: valueAt(0),\n last: valueAt(length - 1),\n widest: valueAt(widest),\n highest: valueAt(highest),\n widths,\n heights,\n };\n }\n getLabelForValue(value) {\n return value;\n }\n getPixelForValue(value, index) {\n return NaN;\n }\n getValueForPixel(pixel) {}\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getPixelForDecimal(decimal) {\n if (this._reversePixels) {\n decimal = 1 - decimal;\n }\n const pixel = this._startPixel + decimal * this._length;\n return _int16Range(this._alignToPixels ? _alignPixel(this.chart, pixel, 0) : pixel);\n }\n getDecimalForPixel(pixel) {\n const decimal = (pixel - this._startPixel) / this._length;\n return this._reversePixels ? 1 - decimal : decimal;\n }\n getBasePixel() {\n return this.getPixelForValue(this.getBaseValue());\n }\n getBaseValue() {\n const {min, max} = this;\n return min < 0 && max < 0 ? max :\n min > 0 && max > 0 ? min :\n 0;\n }\n getContext(index) {\n const ticks = this.ticks || [];\n if (index >= 0 && index < ticks.length) {\n const tick = ticks[index];\n return tick.$context ||\n\t\t\t\t(tick.$context = createTickContext(this.getContext(), index, tick));\n }\n return this.$context ||\n\t\t\t(this.$context = createScaleContext(this.chart.getContext(), this));\n }\n _tickSize() {\n const optionTicks = this.options.ticks;\n const rot = toRadians(this.labelRotation);\n const cos = Math.abs(Math.cos(rot));\n const sin = Math.abs(Math.sin(rot));\n const labelSizes = this._getLabelSizes();\n const padding = optionTicks.autoSkipPadding || 0;\n const w = labelSizes ? labelSizes.widest.width + padding : 0;\n const h = labelSizes ? labelSizes.highest.height + padding : 0;\n return this.isHorizontal()\n ? h * cos > w * sin ? w / cos : h / sin\n : h * sin < w * cos ? h / cos : w / sin;\n }\n _isVisible() {\n const display = this.options.display;\n if (display !== 'auto') {\n return !!display;\n }\n return this.getMatchingVisibleMetas().length > 0;\n }\n _computeGridLineItems(chartArea) {\n const axis = this.axis;\n const chart = this.chart;\n const options = this.options;\n const {grid, position} = options;\n const offset = grid.offset;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const ticksLength = ticks.length + (offset ? 1 : 0);\n const tl = getTickMarkLength(grid);\n const items = [];\n const borderOpts = grid.setContext(this.getContext());\n const axisWidth = borderOpts.drawBorder ? borderOpts.borderWidth : 0;\n const axisHalfWidth = axisWidth / 2;\n const alignBorderValue = function(pixel) {\n return _alignPixel(chart, pixel, axisWidth);\n };\n let borderValue, i, lineValue, alignedLineValue;\n let tx1, ty1, tx2, ty2, x1, y1, x2, y2;\n if (position === 'top') {\n borderValue = alignBorderValue(this.bottom);\n ty1 = this.bottom - tl;\n ty2 = borderValue - axisHalfWidth;\n y1 = alignBorderValue(chartArea.top) + axisHalfWidth;\n y2 = chartArea.bottom;\n } else if (position === 'bottom') {\n borderValue = alignBorderValue(this.top);\n y1 = chartArea.top;\n y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\n ty1 = borderValue + axisHalfWidth;\n ty2 = this.top + tl;\n } else if (position === 'left') {\n borderValue = alignBorderValue(this.right);\n tx1 = this.right - tl;\n tx2 = borderValue - axisHalfWidth;\n x1 = alignBorderValue(chartArea.left) + axisHalfWidth;\n x2 = chartArea.right;\n } else if (position === 'right') {\n borderValue = alignBorderValue(this.left);\n x1 = chartArea.left;\n x2 = alignBorderValue(chartArea.right) - axisHalfWidth;\n tx1 = borderValue + axisHalfWidth;\n tx2 = this.left + tl;\n } else if (axis === 'x') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.top + chartArea.bottom) / 2 + 0.5);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n y1 = chartArea.top;\n y2 = chartArea.bottom;\n ty1 = borderValue + axisHalfWidth;\n ty2 = ty1 + tl;\n } else if (axis === 'y') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n tx1 = borderValue - axisHalfWidth;\n tx2 = tx1 - tl;\n x1 = chartArea.left;\n x2 = chartArea.right;\n }\n const limit = valueOrDefault(options.ticks.maxTicksLimit, ticksLength);\n const step = Math.max(1, Math.ceil(ticksLength / limit));\n for (i = 0; i < ticksLength; i += step) {\n const optsAtIndex = grid.setContext(this.getContext(i));\n const lineWidth = optsAtIndex.lineWidth;\n const lineColor = optsAtIndex.color;\n const borderDash = optsAtIndex.borderDash || [];\n const borderDashOffset = optsAtIndex.borderDashOffset;\n const tickWidth = optsAtIndex.tickWidth;\n const tickColor = optsAtIndex.tickColor;\n const tickBorderDash = optsAtIndex.tickBorderDash || [];\n const tickBorderDashOffset = optsAtIndex.tickBorderDashOffset;\n lineValue = getPixelForGridLine(this, i, offset);\n if (lineValue === undefined) {\n continue;\n }\n alignedLineValue = _alignPixel(chart, lineValue, lineWidth);\n if (isHorizontal) {\n tx1 = tx2 = x1 = x2 = alignedLineValue;\n } else {\n ty1 = ty2 = y1 = y2 = alignedLineValue;\n }\n items.push({\n tx1,\n ty1,\n tx2,\n ty2,\n x1,\n y1,\n x2,\n y2,\n width: lineWidth,\n color: lineColor,\n borderDash,\n borderDashOffset,\n tickWidth,\n tickColor,\n tickBorderDash,\n tickBorderDashOffset,\n });\n }\n this._ticksLength = ticksLength;\n this._borderValue = borderValue;\n return items;\n }\n _computeLabelItems(chartArea) {\n const axis = this.axis;\n const options = this.options;\n const {position, ticks: optionTicks} = options;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const {align, crossAlign, padding, mirror} = optionTicks;\n const tl = getTickMarkLength(options.grid);\n const tickAndPadding = tl + padding;\n const hTickAndPadding = mirror ? -padding : tickAndPadding;\n const rotation = -toRadians(this.labelRotation);\n const items = [];\n let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n let textBaseline = 'middle';\n if (position === 'top') {\n y = this.bottom - hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'bottom') {\n y = this.top + hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'left') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (position === 'right') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (axis === 'x') {\n if (position === 'center') {\n y = ((chartArea.top + chartArea.bottom) / 2) + tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n y = this.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding;\n }\n textAlign = this._getXAxisLabelAlignment();\n } else if (axis === 'y') {\n if (position === 'center') {\n x = ((chartArea.left + chartArea.right) / 2) - tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n x = this.chart.scales[positionAxisID].getPixelForValue(value);\n }\n textAlign = this._getYAxisLabelAlignment(tl).textAlign;\n }\n if (axis === 'y') {\n if (align === 'start') {\n textBaseline = 'top';\n } else if (align === 'end') {\n textBaseline = 'bottom';\n }\n }\n const labelSizes = this._getLabelSizes();\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n label = tick.label;\n const optsAtIndex = optionTicks.setContext(this.getContext(i));\n pixel = this.getPixelForTick(i) + optionTicks.labelOffset;\n font = this._resolveTickFontOptions(i);\n lineHeight = font.lineHeight;\n lineCount = isArray(label) ? label.length : 1;\n const halfCount = lineCount / 2;\n const color = optsAtIndex.color;\n const strokeColor = optsAtIndex.textStrokeColor;\n const strokeWidth = optsAtIndex.textStrokeWidth;\n let tickTextAlign = textAlign;\n if (isHorizontal) {\n x = pixel;\n if (textAlign === 'inner') {\n if (i === ilen - 1) {\n tickTextAlign = !this.options.reverse ? 'right' : 'left';\n } else if (i === 0) {\n tickTextAlign = !this.options.reverse ? 'left' : 'right';\n } else {\n tickTextAlign = 'center';\n }\n }\n if (position === 'top') {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = -lineCount * lineHeight + lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight;\n } else {\n textOffset = -labelSizes.highest.height + lineHeight / 2;\n }\n } else {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight;\n } else {\n textOffset = labelSizes.highest.height - lineCount * lineHeight;\n }\n }\n if (mirror) {\n textOffset *= -1;\n }\n } else {\n y = pixel;\n textOffset = (1 - lineCount) * lineHeight / 2;\n }\n let backdrop;\n if (optsAtIndex.showLabelBackdrop) {\n const labelPadding = toPadding(optsAtIndex.backdropPadding);\n const height = labelSizes.heights[i];\n const width = labelSizes.widths[i];\n let top = y + textOffset - labelPadding.top;\n let left = x - labelPadding.left;\n switch (textBaseline) {\n case 'middle':\n top -= height / 2;\n break;\n case 'bottom':\n top -= height;\n break;\n }\n switch (textAlign) {\n case 'center':\n left -= width / 2;\n break;\n case 'right':\n left -= width;\n break;\n }\n backdrop = {\n left,\n top,\n width: width + labelPadding.width,\n height: height + labelPadding.height,\n color: optsAtIndex.backdropColor,\n };\n }\n items.push({\n rotation,\n label,\n font,\n color,\n strokeColor,\n strokeWidth,\n textOffset,\n textAlign: tickTextAlign,\n textBaseline,\n translation: [x, y],\n backdrop,\n });\n }\n return items;\n }\n _getXAxisLabelAlignment() {\n const {position, ticks} = this.options;\n const rotation = -toRadians(this.labelRotation);\n if (rotation) {\n return position === 'top' ? 'left' : 'right';\n }\n let align = 'center';\n if (ticks.align === 'start') {\n align = 'left';\n } else if (ticks.align === 'end') {\n align = 'right';\n } else if (ticks.align === 'inner') {\n align = 'inner';\n }\n return align;\n }\n _getYAxisLabelAlignment(tl) {\n const {position, ticks: {crossAlign, mirror, padding}} = this.options;\n const labelSizes = this._getLabelSizes();\n const tickAndPadding = tl + padding;\n const widest = labelSizes.widest.width;\n let textAlign;\n let x;\n if (position === 'left') {\n if (mirror) {\n x = this.right + padding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += (widest / 2);\n } else {\n textAlign = 'right';\n x += widest;\n }\n } else {\n x = this.right - tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= (widest / 2);\n } else {\n textAlign = 'left';\n x = this.left;\n }\n }\n } else if (position === 'right') {\n if (mirror) {\n x = this.left + padding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= (widest / 2);\n } else {\n textAlign = 'left';\n x -= widest;\n }\n } else {\n x = this.left + tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x = this.right;\n }\n }\n } else {\n textAlign = 'right';\n }\n return {textAlign, x};\n }\n _computeLabelArea() {\n if (this.options.ticks.mirror) {\n return;\n }\n const chart = this.chart;\n const position = this.options.position;\n if (position === 'left' || position === 'right') {\n return {top: 0, left: this.left, bottom: chart.height, right: this.right};\n } if (position === 'top' || position === 'bottom') {\n return {top: this.top, left: 0, bottom: this.bottom, right: chart.width};\n }\n }\n drawBackground() {\n const {ctx, options: {backgroundColor}, left, top, width, height} = this;\n if (backgroundColor) {\n ctx.save();\n ctx.fillStyle = backgroundColor;\n ctx.fillRect(left, top, width, height);\n ctx.restore();\n }\n }\n getLineWidthForValue(value) {\n const grid = this.options.grid;\n if (!this._isVisible() || !grid.display) {\n return 0;\n }\n const ticks = this.ticks;\n const index = ticks.findIndex(t => t.value === value);\n if (index >= 0) {\n const opts = grid.setContext(this.getContext(index));\n return opts.lineWidth;\n }\n return 0;\n }\n drawGrid(chartArea) {\n const grid = this.options.grid;\n const ctx = this.ctx;\n const items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea));\n let i, ilen;\n const drawLine = (p1, p2, style) => {\n if (!style.width || !style.color) {\n return;\n }\n ctx.save();\n ctx.lineWidth = style.width;\n ctx.strokeStyle = style.color;\n ctx.setLineDash(style.borderDash || []);\n ctx.lineDashOffset = style.borderDashOffset;\n ctx.beginPath();\n ctx.moveTo(p1.x, p1.y);\n ctx.lineTo(p2.x, p2.y);\n ctx.stroke();\n ctx.restore();\n };\n if (grid.display) {\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n const item = items[i];\n if (grid.drawOnChartArea) {\n drawLine(\n {x: item.x1, y: item.y1},\n {x: item.x2, y: item.y2},\n item\n );\n }\n if (grid.drawTicks) {\n drawLine(\n {x: item.tx1, y: item.ty1},\n {x: item.tx2, y: item.ty2},\n {\n color: item.tickColor,\n width: item.tickWidth,\n borderDash: item.tickBorderDash,\n borderDashOffset: item.tickBorderDashOffset\n }\n );\n }\n }\n }\n }\n drawBorder() {\n const {chart, ctx, options: {grid}} = this;\n const borderOpts = grid.setContext(this.getContext());\n const axisWidth = grid.drawBorder ? borderOpts.borderWidth : 0;\n if (!axisWidth) {\n return;\n }\n const lastLineWidth = grid.setContext(this.getContext(0)).lineWidth;\n const borderValue = this._borderValue;\n let x1, x2, y1, y2;\n if (this.isHorizontal()) {\n x1 = _alignPixel(chart, this.left, axisWidth) - axisWidth / 2;\n x2 = _alignPixel(chart, this.right, lastLineWidth) + lastLineWidth / 2;\n y1 = y2 = borderValue;\n } else {\n y1 = _alignPixel(chart, this.top, axisWidth) - axisWidth / 2;\n y2 = _alignPixel(chart, this.bottom, lastLineWidth) + lastLineWidth / 2;\n x1 = x2 = borderValue;\n }\n ctx.save();\n ctx.lineWidth = borderOpts.borderWidth;\n ctx.strokeStyle = borderOpts.borderColor;\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.stroke();\n ctx.restore();\n }\n drawLabels(chartArea) {\n const optionTicks = this.options.ticks;\n if (!optionTicks.display) {\n return;\n }\n const ctx = this.ctx;\n const area = this._computeLabelArea();\n if (area) {\n clipArea(ctx, area);\n }\n const items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea));\n let i, ilen;\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n const item = items[i];\n const tickFont = item.font;\n const label = item.label;\n if (item.backdrop) {\n ctx.fillStyle = item.backdrop.color;\n ctx.fillRect(item.backdrop.left, item.backdrop.top, item.backdrop.width, item.backdrop.height);\n }\n let y = item.textOffset;\n renderText(ctx, label, 0, y, tickFont, item);\n }\n if (area) {\n unclipArea(ctx);\n }\n }\n drawTitle() {\n const {ctx, options: {position, title, reverse}} = this;\n if (!title.display) {\n return;\n }\n const font = toFont(title.font);\n const padding = toPadding(title.padding);\n const align = title.align;\n let offset = font.lineHeight / 2;\n if (position === 'bottom' || position === 'center' || isObject(position)) {\n offset += padding.bottom;\n if (isArray(title.text)) {\n offset += font.lineHeight * (title.text.length - 1);\n }\n } else {\n offset += padding.top;\n }\n const {titleX, titleY, maxWidth, rotation} = titleArgs(this, offset, position, align);\n renderText(ctx, title.text, 0, 0, font, {\n color: title.color,\n maxWidth,\n rotation,\n textAlign: titleAlign(align, position, reverse),\n textBaseline: 'middle',\n translation: [titleX, titleY],\n });\n }\n draw(chartArea) {\n if (!this._isVisible()) {\n return;\n }\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawBorder();\n this.drawTitle();\n this.drawLabels(chartArea);\n }\n _layers() {\n const opts = this.options;\n const tz = opts.ticks && opts.ticks.z || 0;\n const gz = valueOrDefault(opts.grid && opts.grid.z, -1);\n if (!this._isVisible() || this.draw !== Scale.prototype.draw) {\n return [{\n z: tz,\n draw: (chartArea) => {\n this.draw(chartArea);\n }\n }];\n }\n return [{\n z: gz,\n draw: (chartArea) => {\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawTitle();\n }\n }, {\n z: gz + 1,\n draw: () => {\n this.drawBorder();\n }\n }, {\n z: tz,\n draw: (chartArea) => {\n this.drawLabels(chartArea);\n }\n }];\n }\n getMatchingVisibleMetas(type) {\n const metas = this.chart.getSortedVisibleDatasetMetas();\n const axisID = this.axis + 'AxisID';\n const result = [];\n let i, ilen;\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n const meta = metas[i];\n if (meta[axisID] === this.id && (!type || meta.type === type)) {\n result.push(meta);\n }\n }\n return result;\n }\n _resolveTickFontOptions(index) {\n const opts = this.options.ticks.setContext(this.getContext(index));\n return toFont(opts.font);\n }\n _maxDigits() {\n const fontSize = this._resolveTickFontOptions(0).lineHeight;\n return (this.isHorizontal() ? this.width : this.height) / fontSize;\n }\n}\n\nclass TypedRegistry {\n constructor(type, scope, override) {\n this.type = type;\n this.scope = scope;\n this.override = override;\n this.items = Object.create(null);\n }\n isForType(type) {\n return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype);\n }\n register(item) {\n const proto = Object.getPrototypeOf(item);\n let parentScope;\n if (isIChartComponent(proto)) {\n parentScope = this.register(proto);\n }\n const items = this.items;\n const id = item.id;\n const scope = this.scope + '.' + id;\n if (!id) {\n throw new Error('class does not have id: ' + item);\n }\n if (id in items) {\n return scope;\n }\n items[id] = item;\n registerDefaults(item, scope, parentScope);\n if (this.override) {\n defaults.override(item.id, item.overrides);\n }\n return scope;\n }\n get(id) {\n return this.items[id];\n }\n unregister(item) {\n const items = this.items;\n const id = item.id;\n const scope = this.scope;\n if (id in items) {\n delete items[id];\n }\n if (scope && id in defaults[scope]) {\n delete defaults[scope][id];\n if (this.override) {\n delete overrides[id];\n }\n }\n }\n}\nfunction registerDefaults(item, scope, parentScope) {\n const itemDefaults = merge(Object.create(null), [\n parentScope ? defaults.get(parentScope) : {},\n defaults.get(scope),\n item.defaults\n ]);\n defaults.set(scope, itemDefaults);\n if (item.defaultRoutes) {\n routeDefaults(scope, item.defaultRoutes);\n }\n if (item.descriptors) {\n defaults.describe(scope, item.descriptors);\n }\n}\nfunction routeDefaults(scope, routes) {\n Object.keys(routes).forEach(property => {\n const propertyParts = property.split('.');\n const sourceName = propertyParts.pop();\n const sourceScope = [scope].concat(propertyParts).join('.');\n const parts = routes[property].split('.');\n const targetName = parts.pop();\n const targetScope = parts.join('.');\n defaults.route(sourceScope, sourceName, targetScope, targetName);\n });\n}\nfunction isIChartComponent(proto) {\n return 'id' in proto && 'defaults' in proto;\n}\n\nclass Registry {\n constructor() {\n this.controllers = new TypedRegistry(DatasetController, 'datasets', true);\n this.elements = new TypedRegistry(Element, 'elements');\n this.plugins = new TypedRegistry(Object, 'plugins');\n this.scales = new TypedRegistry(Scale, 'scales');\n this._typedRegistries = [this.controllers, this.scales, this.elements];\n }\n add(...args) {\n this._each('register', args);\n }\n remove(...args) {\n this._each('unregister', args);\n }\n addControllers(...args) {\n this._each('register', args, this.controllers);\n }\n addElements(...args) {\n this._each('register', args, this.elements);\n }\n addPlugins(...args) {\n this._each('register', args, this.plugins);\n }\n addScales(...args) {\n this._each('register', args, this.scales);\n }\n getController(id) {\n return this._get(id, this.controllers, 'controller');\n }\n getElement(id) {\n return this._get(id, this.elements, 'element');\n }\n getPlugin(id) {\n return this._get(id, this.plugins, 'plugin');\n }\n getScale(id) {\n return this._get(id, this.scales, 'scale');\n }\n removeControllers(...args) {\n this._each('unregister', args, this.controllers);\n }\n removeElements(...args) {\n this._each('unregister', args, this.elements);\n }\n removePlugins(...args) {\n this._each('unregister', args, this.plugins);\n }\n removeScales(...args) {\n this._each('unregister', args, this.scales);\n }\n _each(method, args, typedRegistry) {\n [...args].forEach(arg => {\n const reg = typedRegistry || this._getRegistryForType(arg);\n if (typedRegistry || reg.isForType(arg) || (reg === this.plugins && arg.id)) {\n this._exec(method, reg, arg);\n } else {\n each(arg, item => {\n const itemReg = typedRegistry || this._getRegistryForType(item);\n this._exec(method, itemReg, item);\n });\n }\n });\n }\n _exec(method, registry, component) {\n const camelMethod = _capitalize(method);\n callback(component['before' + camelMethod], [], component);\n registry[method](component);\n callback(component['after' + camelMethod], [], component);\n }\n _getRegistryForType(type) {\n for (let i = 0; i < this._typedRegistries.length; i++) {\n const reg = this._typedRegistries[i];\n if (reg.isForType(type)) {\n return reg;\n }\n }\n return this.plugins;\n }\n _get(id, typedRegistry, type) {\n const item = typedRegistry.get(id);\n if (item === undefined) {\n throw new Error('\"' + id + '\" is not a registered ' + type + '.');\n }\n return item;\n }\n}\nvar registry = new Registry();\n\nclass ScatterController extends DatasetController {\n update(mode) {\n const meta = this._cachedMeta;\n const {data: points = []} = meta;\n const animationsDisabled = this.chart._animationsDisabled;\n let {start, count} = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n this._drawStart = start;\n this._drawCount = count;\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n if (this.options.showLine) {\n const {dataset: line, _dataset} = meta;\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n }\n this.updateElements(points, start, count, mode);\n }\n addElements() {\n const {showLine} = this.options;\n if (!this.datasetElementType && showLine) {\n this.datasetElementType = registry.getElement('line');\n }\n super.addElements();\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const {spanGaps, segment} = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for (let i = start; i < start + count; ++i) {\n const point = points[i];\n const parsed = this.getParsed(i);\n const properties = directUpdate ? point : {};\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && (Math.abs(parsed[iAxis] - prevParsed[iAxis])) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const data = meta.data || [];\n if (!this.options.showLine) {\n let max = 0;\n for (let i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n}\nScatterController.id = 'scatter';\nScatterController.defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n showLine: false,\n fill: false\n};\nScatterController.overrides = {\n interaction: {\n mode: 'point'\n },\n plugins: {\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(item) {\n return '(' + item.label + ', ' + item.formattedValue + ')';\n }\n }\n }\n },\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n};\n\nvar controllers = /*#__PURE__*/Object.freeze({\n__proto__: null,\nBarController: BarController,\nBubbleController: BubbleController,\nDoughnutController: DoughnutController,\nLineController: LineController,\nPolarAreaController: PolarAreaController,\nPieController: PieController,\nRadarController: RadarController,\nScatterController: ScatterController\n});\n\nfunction abstract() {\n throw new Error('This method is not implemented: Check that a complete date adapter is provided.');\n}\nclass DateAdapter {\n constructor(options) {\n this.options = options || {};\n }\n init(chartOptions) {}\n formats() {\n return abstract();\n }\n parse(value, format) {\n return abstract();\n }\n format(timestamp, format) {\n return abstract();\n }\n add(timestamp, amount, unit) {\n return abstract();\n }\n diff(a, b, unit) {\n return abstract();\n }\n startOf(timestamp, unit, weekday) {\n return abstract();\n }\n endOf(timestamp, unit) {\n return abstract();\n }\n}\nDateAdapter.override = function(members) {\n Object.assign(DateAdapter.prototype, members);\n};\nvar adapters = {\n _date: DateAdapter\n};\n\nfunction binarySearch(metaset, axis, value, intersect) {\n const {controller, data, _sorted} = metaset;\n const iScale = controller._cachedMeta.iScale;\n if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) {\n const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;\n if (!intersect) {\n return lookupMethod(data, axis, value);\n } else if (controller._sharedOptions) {\n const el = data[0];\n const range = typeof el.getRange === 'function' && el.getRange(axis);\n if (range) {\n const start = lookupMethod(data, axis, value - range);\n const end = lookupMethod(data, axis, value + range);\n return {lo: start.lo, hi: end.hi};\n }\n }\n }\n return {lo: 0, hi: data.length - 1};\n}\nfunction evaluateInteractionItems(chart, axis, position, handler, intersect) {\n const metasets = chart.getSortedVisibleDatasetMetas();\n const value = position[axis];\n for (let i = 0, ilen = metasets.length; i < ilen; ++i) {\n const {index, data} = metasets[i];\n const {lo, hi} = binarySearch(metasets[i], axis, value, intersect);\n for (let j = lo; j <= hi; ++j) {\n const element = data[j];\n if (!element.skip) {\n handler(element, index, j);\n }\n }\n }\n}\nfunction getDistanceMetricForAxis(axis) {\n const useX = axis.indexOf('x') !== -1;\n const useY = axis.indexOf('y') !== -1;\n return function(pt1, pt2) {\n const deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n const deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n };\n}\nfunction getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) {\n const items = [];\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return items;\n }\n const evaluationFunc = function(element, datasetIndex, index) {\n if (!includeInvisible && !_isPointInArea(element, chart.chartArea, 0)) {\n return;\n }\n if (element.inRange(position.x, position.y, useFinalPosition)) {\n items.push({element, datasetIndex, index});\n }\n };\n evaluateInteractionItems(chart, axis, position, evaluationFunc, true);\n return items;\n}\nfunction getNearestRadialItems(chart, position, axis, useFinalPosition) {\n let items = [];\n function evaluationFunc(element, datasetIndex, index) {\n const {startAngle, endAngle} = element.getProps(['startAngle', 'endAngle'], useFinalPosition);\n const {angle} = getAngleFromPoint(element, {x: position.x, y: position.y});\n if (_angleBetween(angle, startAngle, endAngle)) {\n items.push({element, datasetIndex, index});\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n let items = [];\n const distanceMetric = getDistanceMetricForAxis(axis);\n let minDistance = Number.POSITIVE_INFINITY;\n function evaluationFunc(element, datasetIndex, index) {\n const inRange = element.inRange(position.x, position.y, useFinalPosition);\n if (intersect && !inRange) {\n return;\n }\n const center = element.getCenterPoint(useFinalPosition);\n const pointInArea = !!includeInvisible || chart.isPointInArea(center);\n if (!pointInArea && !inRange) {\n return;\n }\n const distance = distanceMetric(position, center);\n if (distance < minDistance) {\n items = [{element, datasetIndex, index}];\n minDistance = distance;\n } else if (distance === minDistance) {\n items.push({element, datasetIndex, index});\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction getNearestItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return [];\n }\n return axis === 'r' && !intersect\n ? getNearestRadialItems(chart, position, axis, useFinalPosition)\n : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible);\n}\nfunction getAxisItems(chart, position, axis, intersect, useFinalPosition) {\n const items = [];\n const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n let intersectsItem = false;\n evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index) => {\n if (element[rangeMethod](position[axis], useFinalPosition)) {\n items.push({element, datasetIndex, index});\n intersectsItem = intersectsItem || element.inRange(position.x, position.y, useFinalPosition);\n }\n });\n if (intersect && !intersectsItem) {\n return [];\n }\n return items;\n}\nvar Interaction = {\n evaluateInteractionItems,\n modes: {\n index(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'x';\n const includeInvisible = options.includeInvisible || false;\n const items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible)\n : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n const elements = [];\n if (!items.length) {\n return [];\n }\n chart.getSortedVisibleDatasetMetas().forEach((meta) => {\n const index = items[0].index;\n const element = meta.data[index];\n if (element && !element.skip) {\n elements.push({element, datasetIndex: meta.index, index});\n }\n });\n return elements;\n },\n dataset(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n let items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) :\n getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n if (items.length > 0) {\n const datasetIndex = items[0].datasetIndex;\n const data = chart.getDatasetMeta(datasetIndex).data;\n items = [];\n for (let i = 0; i < data.length; ++i) {\n items.push({element: data[i], datasetIndex, index: i});\n }\n }\n return items;\n },\n point(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible);\n },\n nearest(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getNearestItems(chart, position, axis, options.intersect, useFinalPosition, includeInvisible);\n },\n x(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'x', options.intersect, useFinalPosition);\n },\n y(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'y', options.intersect, useFinalPosition);\n }\n }\n};\n\nconst STATIC_POSITIONS = ['left', 'top', 'right', 'bottom'];\nfunction filterByPosition(array, position) {\n return array.filter(v => v.pos === position);\n}\nfunction filterDynamicPositionByAxis(array, axis) {\n return array.filter(v => STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis);\n}\nfunction sortByWeight(array, reverse) {\n return array.sort((a, b) => {\n const v0 = reverse ? b : a;\n const v1 = reverse ? a : b;\n return v0.weight === v1.weight ?\n v0.index - v1.index :\n v0.weight - v1.weight;\n });\n}\nfunction wrapBoxes(boxes) {\n const layoutBoxes = [];\n let i, ilen, box, pos, stack, stackWeight;\n for (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\n box = boxes[i];\n ({position: pos, options: {stack, stackWeight = 1}} = box);\n layoutBoxes.push({\n index: i,\n box,\n pos,\n horizontal: box.isHorizontal(),\n weight: box.weight,\n stack: stack && (pos + stack),\n stackWeight\n });\n }\n return layoutBoxes;\n}\nfunction buildStacks(layouts) {\n const stacks = {};\n for (const wrap of layouts) {\n const {stack, pos, stackWeight} = wrap;\n if (!stack || !STATIC_POSITIONS.includes(pos)) {\n continue;\n }\n const _stack = stacks[stack] || (stacks[stack] = {count: 0, placed: 0, weight: 0, size: 0});\n _stack.count++;\n _stack.weight += stackWeight;\n }\n return stacks;\n}\nfunction setLayoutDims(layouts, params) {\n const stacks = buildStacks(layouts);\n const {vBoxMaxWidth, hBoxMaxHeight} = params;\n let i, ilen, layout;\n for (i = 0, ilen = layouts.length; i < ilen; ++i) {\n layout = layouts[i];\n const {fullSize} = layout.box;\n const stack = stacks[layout.stack];\n const factor = stack && layout.stackWeight / stack.weight;\n if (layout.horizontal) {\n layout.width = factor ? factor * vBoxMaxWidth : fullSize && params.availableWidth;\n layout.height = hBoxMaxHeight;\n } else {\n layout.width = vBoxMaxWidth;\n layout.height = factor ? factor * hBoxMaxHeight : fullSize && params.availableHeight;\n }\n }\n return stacks;\n}\nfunction buildLayoutBoxes(boxes) {\n const layoutBoxes = wrapBoxes(boxes);\n const fullSize = sortByWeight(layoutBoxes.filter(wrap => wrap.box.fullSize), true);\n const left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n const right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n const top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n const bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, 'x');\n const centerVertical = filterDynamicPositionByAxis(layoutBoxes, 'y');\n return {\n fullSize,\n leftAndTop: left.concat(top),\n rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal),\n chartArea: filterByPosition(layoutBoxes, 'chartArea'),\n vertical: left.concat(right).concat(centerVertical),\n horizontal: top.concat(bottom).concat(centerHorizontal)\n };\n}\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n}\nfunction updateMaxPadding(maxPadding, boxPadding) {\n maxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n maxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n maxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n}\nfunction updateDims(chartArea, params, layout, stacks) {\n const {pos, box} = layout;\n const maxPadding = chartArea.maxPadding;\n if (!isObject(pos)) {\n if (layout.size) {\n chartArea[pos] -= layout.size;\n }\n const stack = stacks[layout.stack] || {size: 0, count: 1};\n stack.size = Math.max(stack.size, layout.horizontal ? box.height : box.width);\n layout.size = stack.size / stack.count;\n chartArea[pos] += layout.size;\n }\n if (box.getPadding) {\n updateMaxPadding(maxPadding, box.getPadding());\n }\n const newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right'));\n const newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom'));\n const widthChanged = newWidth !== chartArea.w;\n const heightChanged = newHeight !== chartArea.h;\n chartArea.w = newWidth;\n chartArea.h = newHeight;\n return layout.horizontal\n ? {same: widthChanged, other: heightChanged}\n : {same: heightChanged, other: widthChanged};\n}\nfunction handleMaxPadding(chartArea) {\n const maxPadding = chartArea.maxPadding;\n function updatePos(pos) {\n const change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n chartArea[pos] += change;\n return change;\n }\n chartArea.y += updatePos('top');\n chartArea.x += updatePos('left');\n updatePos('right');\n updatePos('bottom');\n}\nfunction getMargins(horizontal, chartArea) {\n const maxPadding = chartArea.maxPadding;\n function marginForPositions(positions) {\n const margin = {left: 0, top: 0, right: 0, bottom: 0};\n positions.forEach((pos) => {\n margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n });\n return margin;\n }\n return horizontal\n ? marginForPositions(['left', 'right'])\n : marginForPositions(['top', 'bottom']);\n}\nfunction fitBoxes(boxes, chartArea, params, stacks) {\n const refitBoxes = [];\n let i, ilen, layout, box, refit, changed;\n for (i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i) {\n layout = boxes[i];\n box = layout.box;\n box.update(\n layout.width || chartArea.w,\n layout.height || chartArea.h,\n getMargins(layout.horizontal, chartArea)\n );\n const {same, other} = updateDims(chartArea, params, layout, stacks);\n refit |= same && refitBoxes.length;\n changed = changed || other;\n if (!box.fullSize) {\n refitBoxes.push(layout);\n }\n }\n return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed;\n}\nfunction setBoxDims(box, left, top, width, height) {\n box.top = top;\n box.left = left;\n box.right = left + width;\n box.bottom = top + height;\n box.width = width;\n box.height = height;\n}\nfunction placeBoxes(boxes, chartArea, params, stacks) {\n const userPadding = params.padding;\n let {x, y} = chartArea;\n for (const layout of boxes) {\n const box = layout.box;\n const stack = stacks[layout.stack] || {count: 1, placed: 0, weight: 1};\n const weight = (layout.stackWeight / stack.weight) || 1;\n if (layout.horizontal) {\n const width = chartArea.w * weight;\n const height = stack.size || box.height;\n if (defined(stack.start)) {\n y = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, userPadding.left, y, params.outerWidth - userPadding.right - userPadding.left, height);\n } else {\n setBoxDims(box, chartArea.left + stack.placed, y, width, height);\n }\n stack.start = y;\n stack.placed += width;\n y = box.bottom;\n } else {\n const height = chartArea.h * weight;\n const width = stack.size || box.width;\n if (defined(stack.start)) {\n x = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, x, userPadding.top, width, params.outerHeight - userPadding.bottom - userPadding.top);\n } else {\n setBoxDims(box, x, chartArea.top + stack.placed, width, height);\n }\n stack.start = x;\n stack.placed += height;\n x = box.right;\n }\n }\n chartArea.x = x;\n chartArea.y = y;\n}\ndefaults.set('layout', {\n autoPadding: true,\n padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }\n});\nvar layouts = {\n addBox(chart, item) {\n if (!chart.boxes) {\n chart.boxes = [];\n }\n item.fullSize = item.fullSize || false;\n item.position = item.position || 'top';\n item.weight = item.weight || 0;\n item._layers = item._layers || function() {\n return [{\n z: 0,\n draw(chartArea) {\n item.draw(chartArea);\n }\n }];\n };\n chart.boxes.push(item);\n },\n removeBox(chart, layoutItem) {\n const index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n if (index !== -1) {\n chart.boxes.splice(index, 1);\n }\n },\n configure(chart, item, options) {\n item.fullSize = options.fullSize;\n item.position = options.position;\n item.weight = options.weight;\n },\n update(chart, width, height, minPadding) {\n if (!chart) {\n return;\n }\n const padding = toPadding(chart.options.layout.padding);\n const availableWidth = Math.max(width - padding.width, 0);\n const availableHeight = Math.max(height - padding.height, 0);\n const boxes = buildLayoutBoxes(chart.boxes);\n const verticalBoxes = boxes.vertical;\n const horizontalBoxes = boxes.horizontal;\n each(chart.boxes, box => {\n if (typeof box.beforeLayout === 'function') {\n box.beforeLayout();\n }\n });\n const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap) =>\n wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1;\n const params = Object.freeze({\n outerWidth: width,\n outerHeight: height,\n padding,\n availableWidth,\n availableHeight,\n vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount,\n hBoxMaxHeight: availableHeight / 2\n });\n const maxPadding = Object.assign({}, padding);\n updateMaxPadding(maxPadding, toPadding(minPadding));\n const chartArea = Object.assign({\n maxPadding,\n w: availableWidth,\n h: availableHeight,\n x: padding.left,\n y: padding.top\n }, padding);\n const stacks = setLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n fitBoxes(boxes.fullSize, chartArea, params, stacks);\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) {\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n }\n handleMaxPadding(chartArea);\n placeBoxes(boxes.leftAndTop, chartArea, params, stacks);\n chartArea.x += chartArea.w;\n chartArea.y += chartArea.h;\n placeBoxes(boxes.rightAndBottom, chartArea, params, stacks);\n chart.chartArea = {\n left: chartArea.left,\n top: chartArea.top,\n right: chartArea.left + chartArea.w,\n bottom: chartArea.top + chartArea.h,\n height: chartArea.h,\n width: chartArea.w,\n };\n each(boxes.chartArea, (layout) => {\n const box = layout.box;\n Object.assign(box, chart.chartArea);\n box.update(chartArea.w, chartArea.h, {left: 0, top: 0, right: 0, bottom: 0});\n });\n }\n};\n\nclass BasePlatform {\n acquireContext(canvas, aspectRatio) {}\n releaseContext(context) {\n return false;\n }\n addEventListener(chart, type, listener) {}\n removeEventListener(chart, type, listener) {}\n getDevicePixelRatio() {\n return 1;\n }\n getMaximumSize(element, width, height, aspectRatio) {\n width = Math.max(0, width || element.width);\n height = height || element.height;\n return {\n width,\n height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height)\n };\n }\n isAttached(canvas) {\n return true;\n }\n updateConfig(config) {\n }\n}\n\nclass BasicPlatform extends BasePlatform {\n acquireContext(item) {\n return item && item.getContext && item.getContext('2d') || null;\n }\n updateConfig(config) {\n config.options.animation = false;\n }\n}\n\nconst EXPANDO_KEY = '$chartjs';\nconst EVENT_TYPES = {\n touchstart: 'mousedown',\n touchmove: 'mousemove',\n touchend: 'mouseup',\n pointerenter: 'mouseenter',\n pointerdown: 'mousedown',\n pointermove: 'mousemove',\n pointerup: 'mouseup',\n pointerleave: 'mouseout',\n pointerout: 'mouseout'\n};\nconst isNullOrEmpty = value => value === null || value === '';\nfunction initCanvas(canvas, aspectRatio) {\n const style = canvas.style;\n const renderHeight = canvas.getAttribute('height');\n const renderWidth = canvas.getAttribute('width');\n canvas[EXPANDO_KEY] = {\n initial: {\n height: renderHeight,\n width: renderWidth,\n style: {\n display: style.display,\n height: style.height,\n width: style.width\n }\n }\n };\n style.display = style.display || 'block';\n style.boxSizing = style.boxSizing || 'border-box';\n if (isNullOrEmpty(renderWidth)) {\n const displayWidth = readUsedSize(canvas, 'width');\n if (displayWidth !== undefined) {\n canvas.width = displayWidth;\n }\n }\n if (isNullOrEmpty(renderHeight)) {\n if (canvas.style.height === '') {\n canvas.height = canvas.width / (aspectRatio || 2);\n } else {\n const displayHeight = readUsedSize(canvas, 'height');\n if (displayHeight !== undefined) {\n canvas.height = displayHeight;\n }\n }\n }\n return canvas;\n}\nconst eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\nfunction addListener(node, type, listener) {\n node.addEventListener(type, listener, eventListenerOptions);\n}\nfunction removeListener(chart, type, listener) {\n chart.canvas.removeEventListener(type, listener, eventListenerOptions);\n}\nfunction fromNativeEvent(event, chart) {\n const type = EVENT_TYPES[event.type] || event.type;\n const {x, y} = getRelativePosition(event, chart);\n return {\n type,\n chart,\n native: event,\n x: x !== undefined ? x : null,\n y: y !== undefined ? y : null,\n };\n}\nfunction nodeListContains(nodeList, canvas) {\n for (const node of nodeList) {\n if (node === canvas || node.contains(canvas)) {\n return true;\n }\n }\n}\nfunction createAttachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.addedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.removedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n return observer;\n}\nfunction createDetachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.removedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.addedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n return observer;\n}\nconst drpListeningCharts = new Map();\nlet oldDevicePixelRatio = 0;\nfunction onWindowResize() {\n const dpr = window.devicePixelRatio;\n if (dpr === oldDevicePixelRatio) {\n return;\n }\n oldDevicePixelRatio = dpr;\n drpListeningCharts.forEach((resize, chart) => {\n if (chart.currentDevicePixelRatio !== dpr) {\n resize();\n }\n });\n}\nfunction listenDevicePixelRatioChanges(chart, resize) {\n if (!drpListeningCharts.size) {\n window.addEventListener('resize', onWindowResize);\n }\n drpListeningCharts.set(chart, resize);\n}\nfunction unlistenDevicePixelRatioChanges(chart) {\n drpListeningCharts.delete(chart);\n if (!drpListeningCharts.size) {\n window.removeEventListener('resize', onWindowResize);\n }\n}\nfunction createResizeObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const container = canvas && _getParentNode(canvas);\n if (!container) {\n return;\n }\n const resize = throttled((width, height) => {\n const w = container.clientWidth;\n listener(width, height);\n if (w < container.clientWidth) {\n listener();\n }\n }, window);\n const observer = new ResizeObserver(entries => {\n const entry = entries[0];\n const width = entry.contentRect.width;\n const height = entry.contentRect.height;\n if (width === 0 && height === 0) {\n return;\n }\n resize(width, height);\n });\n observer.observe(container);\n listenDevicePixelRatioChanges(chart, resize);\n return observer;\n}\nfunction releaseObserver(chart, type, observer) {\n if (observer) {\n observer.disconnect();\n }\n if (type === 'resize') {\n unlistenDevicePixelRatioChanges(chart);\n }\n}\nfunction createProxyAndListen(chart, type, listener) {\n const canvas = chart.canvas;\n const proxy = throttled((event) => {\n if (chart.ctx !== null) {\n listener(fromNativeEvent(event, chart));\n }\n }, chart, (args) => {\n const event = args[0];\n return [event, event.offsetX, event.offsetY];\n });\n addListener(canvas, type, proxy);\n return proxy;\n}\nclass DomPlatform extends BasePlatform {\n acquireContext(canvas, aspectRatio) {\n const context = canvas && canvas.getContext && canvas.getContext('2d');\n if (context && context.canvas === canvas) {\n initCanvas(canvas, aspectRatio);\n return context;\n }\n return null;\n }\n releaseContext(context) {\n const canvas = context.canvas;\n if (!canvas[EXPANDO_KEY]) {\n return false;\n }\n const initial = canvas[EXPANDO_KEY].initial;\n ['height', 'width'].forEach((prop) => {\n const value = initial[prop];\n if (isNullOrUndef(value)) {\n canvas.removeAttribute(prop);\n } else {\n canvas.setAttribute(prop, value);\n }\n });\n const style = initial.style || {};\n Object.keys(style).forEach((key) => {\n canvas.style[key] = style[key];\n });\n canvas.width = canvas.width;\n delete canvas[EXPANDO_KEY];\n return true;\n }\n addEventListener(chart, type, listener) {\n this.removeEventListener(chart, type);\n const proxies = chart.$proxies || (chart.$proxies = {});\n const handlers = {\n attach: createAttachObserver,\n detach: createDetachObserver,\n resize: createResizeObserver\n };\n const handler = handlers[type] || createProxyAndListen;\n proxies[type] = handler(chart, type, listener);\n }\n removeEventListener(chart, type) {\n const proxies = chart.$proxies || (chart.$proxies = {});\n const proxy = proxies[type];\n if (!proxy) {\n return;\n }\n const handlers = {\n attach: releaseObserver,\n detach: releaseObserver,\n resize: releaseObserver\n };\n const handler = handlers[type] || removeListener;\n handler(chart, type, proxy);\n proxies[type] = undefined;\n }\n getDevicePixelRatio() {\n return window.devicePixelRatio;\n }\n getMaximumSize(canvas, width, height, aspectRatio) {\n return getMaximumSize(canvas, width, height, aspectRatio);\n }\n isAttached(canvas) {\n const container = _getParentNode(canvas);\n return !!(container && container.isConnected);\n }\n}\n\nfunction _detectPlatform(canvas) {\n if (!_isDomSupported() || (typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas)) {\n return BasicPlatform;\n }\n return DomPlatform;\n}\n\nclass PluginService {\n constructor() {\n this._init = [];\n }\n notify(chart, hook, args, filter) {\n if (hook === 'beforeInit') {\n this._init = this._createDescriptors(chart, true);\n this._notify(this._init, chart, 'install');\n }\n const descriptors = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart);\n const result = this._notify(descriptors, chart, hook, args);\n if (hook === 'afterDestroy') {\n this._notify(descriptors, chart, 'stop');\n this._notify(this._init, chart, 'uninstall');\n }\n return result;\n }\n _notify(descriptors, chart, hook, args) {\n args = args || {};\n for (const descriptor of descriptors) {\n const plugin = descriptor.plugin;\n const method = plugin[hook];\n const params = [chart, args, descriptor.options];\n if (callback(method, params, plugin) === false && args.cancelable) {\n return false;\n }\n }\n return true;\n }\n invalidate() {\n if (!isNullOrUndef(this._cache)) {\n this._oldCache = this._cache;\n this._cache = undefined;\n }\n }\n _descriptors(chart) {\n if (this._cache) {\n return this._cache;\n }\n const descriptors = this._cache = this._createDescriptors(chart);\n this._notifyStateChanges(chart);\n return descriptors;\n }\n _createDescriptors(chart, all) {\n const config = chart && chart.config;\n const options = valueOrDefault(config.options && config.options.plugins, {});\n const plugins = allPlugins(config);\n return options === false && !all ? [] : createDescriptors(chart, plugins, options, all);\n }\n _notifyStateChanges(chart) {\n const previousDescriptors = this._oldCache || [];\n const descriptors = this._cache;\n const diff = (a, b) => a.filter(x => !b.some(y => x.plugin.id === y.plugin.id));\n this._notify(diff(previousDescriptors, descriptors), chart, 'stop');\n this._notify(diff(descriptors, previousDescriptors), chart, 'start');\n }\n}\nfunction allPlugins(config) {\n const localIds = {};\n const plugins = [];\n const keys = Object.keys(registry.plugins.items);\n for (let i = 0; i < keys.length; i++) {\n plugins.push(registry.getPlugin(keys[i]));\n }\n const local = config.plugins || [];\n for (let i = 0; i < local.length; i++) {\n const plugin = local[i];\n if (plugins.indexOf(plugin) === -1) {\n plugins.push(plugin);\n localIds[plugin.id] = true;\n }\n }\n return {plugins, localIds};\n}\nfunction getOpts(options, all) {\n if (!all && options === false) {\n return null;\n }\n if (options === true) {\n return {};\n }\n return options;\n}\nfunction createDescriptors(chart, {plugins, localIds}, options, all) {\n const result = [];\n const context = chart.getContext();\n for (const plugin of plugins) {\n const id = plugin.id;\n const opts = getOpts(options[id], all);\n if (opts === null) {\n continue;\n }\n result.push({\n plugin,\n options: pluginOpts(chart.config, {plugin, local: localIds[id]}, opts, context)\n });\n }\n return result;\n}\nfunction pluginOpts(config, {plugin, local}, opts, context) {\n const keys = config.pluginScopeKeys(plugin);\n const scopes = config.getOptionScopes(opts, keys);\n if (local && plugin.defaults) {\n scopes.push(plugin.defaults);\n }\n return config.createResolver(scopes, context, [''], {\n scriptable: false,\n indexable: false,\n allKeys: true\n });\n}\n\nfunction getIndexAxis(type, options) {\n const datasetDefaults = defaults.datasets[type] || {};\n const datasetOptions = (options.datasets || {})[type] || {};\n return datasetOptions.indexAxis || options.indexAxis || datasetDefaults.indexAxis || 'x';\n}\nfunction getAxisFromDefaultScaleID(id, indexAxis) {\n let axis = id;\n if (id === '_index_') {\n axis = indexAxis;\n } else if (id === '_value_') {\n axis = indexAxis === 'x' ? 'y' : 'x';\n }\n return axis;\n}\nfunction getDefaultScaleIDFromAxis(axis, indexAxis) {\n return axis === indexAxis ? '_index_' : '_value_';\n}\nfunction axisFromPosition(position) {\n if (position === 'top' || position === 'bottom') {\n return 'x';\n }\n if (position === 'left' || position === 'right') {\n return 'y';\n }\n}\nfunction determineAxis(id, scaleOptions) {\n if (id === 'x' || id === 'y') {\n return id;\n }\n return scaleOptions.axis || axisFromPosition(scaleOptions.position) || id.charAt(0).toLowerCase();\n}\nfunction mergeScaleConfig(config, options) {\n const chartDefaults = overrides[config.type] || {scales: {}};\n const configScales = options.scales || {};\n const chartIndexAxis = getIndexAxis(config.type, options);\n const firstIDs = Object.create(null);\n const scales = Object.create(null);\n Object.keys(configScales).forEach(id => {\n const scaleConf = configScales[id];\n if (!isObject(scaleConf)) {\n return console.error(`Invalid scale configuration for scale: ${id}`);\n }\n if (scaleConf._proxy) {\n return console.warn(`Ignoring resolver passed as options for scale: ${id}`);\n }\n const axis = determineAxis(id, scaleConf);\n const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis);\n const defaultScaleOptions = chartDefaults.scales || {};\n firstIDs[axis] = firstIDs[axis] || id;\n scales[id] = mergeIf(Object.create(null), [{axis}, scaleConf, defaultScaleOptions[axis], defaultScaleOptions[defaultId]]);\n });\n config.data.datasets.forEach(dataset => {\n const type = dataset.type || config.type;\n const indexAxis = dataset.indexAxis || getIndexAxis(type, options);\n const datasetDefaults = overrides[type] || {};\n const defaultScaleOptions = datasetDefaults.scales || {};\n Object.keys(defaultScaleOptions).forEach(defaultID => {\n const axis = getAxisFromDefaultScaleID(defaultID, indexAxis);\n const id = dataset[axis + 'AxisID'] || firstIDs[axis] || axis;\n scales[id] = scales[id] || Object.create(null);\n mergeIf(scales[id], [{axis}, configScales[id], defaultScaleOptions[defaultID]]);\n });\n });\n Object.keys(scales).forEach(key => {\n const scale = scales[key];\n mergeIf(scale, [defaults.scales[scale.type], defaults.scale]);\n });\n return scales;\n}\nfunction initOptions(config) {\n const options = config.options || (config.options = {});\n options.plugins = valueOrDefault(options.plugins, {});\n options.scales = mergeScaleConfig(config, options);\n}\nfunction initData(data) {\n data = data || {};\n data.datasets = data.datasets || [];\n data.labels = data.labels || [];\n return data;\n}\nfunction initConfig(config) {\n config = config || {};\n config.data = initData(config.data);\n initOptions(config);\n return config;\n}\nconst keyCache = new Map();\nconst keysCached = new Set();\nfunction cachedKeys(cacheKey, generate) {\n let keys = keyCache.get(cacheKey);\n if (!keys) {\n keys = generate();\n keyCache.set(cacheKey, keys);\n keysCached.add(keys);\n }\n return keys;\n}\nconst addIfFound = (set, obj, key) => {\n const opts = resolveObjectKey(obj, key);\n if (opts !== undefined) {\n set.add(opts);\n }\n};\nclass Config {\n constructor(config) {\n this._config = initConfig(config);\n this._scopeCache = new Map();\n this._resolverCache = new Map();\n }\n get platform() {\n return this._config.platform;\n }\n get type() {\n return this._config.type;\n }\n set type(type) {\n this._config.type = type;\n }\n get data() {\n return this._config.data;\n }\n set data(data) {\n this._config.data = initData(data);\n }\n get options() {\n return this._config.options;\n }\n set options(options) {\n this._config.options = options;\n }\n get plugins() {\n return this._config.plugins;\n }\n update() {\n const config = this._config;\n this.clearCache();\n initOptions(config);\n }\n clearCache() {\n this._scopeCache.clear();\n this._resolverCache.clear();\n }\n datasetScopeKeys(datasetType) {\n return cachedKeys(datasetType,\n () => [[\n `datasets.${datasetType}`,\n ''\n ]]);\n }\n datasetAnimationScopeKeys(datasetType, transition) {\n return cachedKeys(`${datasetType}.transition.${transition}`,\n () => [\n [\n `datasets.${datasetType}.transitions.${transition}`,\n `transitions.${transition}`,\n ],\n [\n `datasets.${datasetType}`,\n ''\n ]\n ]);\n }\n datasetElementScopeKeys(datasetType, elementType) {\n return cachedKeys(`${datasetType}-${elementType}`,\n () => [[\n `datasets.${datasetType}.elements.${elementType}`,\n `datasets.${datasetType}`,\n `elements.${elementType}`,\n ''\n ]]);\n }\n pluginScopeKeys(plugin) {\n const id = plugin.id;\n const type = this.type;\n return cachedKeys(`${type}-plugin-${id}`,\n () => [[\n `plugins.${id}`,\n ...plugin.additionalOptionScopes || [],\n ]]);\n }\n _cachedScopes(mainScope, resetCache) {\n const _scopeCache = this._scopeCache;\n let cache = _scopeCache.get(mainScope);\n if (!cache || resetCache) {\n cache = new Map();\n _scopeCache.set(mainScope, cache);\n }\n return cache;\n }\n getOptionScopes(mainScope, keyLists, resetCache) {\n const {options, type} = this;\n const cache = this._cachedScopes(mainScope, resetCache);\n const cached = cache.get(keyLists);\n if (cached) {\n return cached;\n }\n const scopes = new Set();\n keyLists.forEach(keys => {\n if (mainScope) {\n scopes.add(mainScope);\n keys.forEach(key => addIfFound(scopes, mainScope, key));\n }\n keys.forEach(key => addIfFound(scopes, options, key));\n keys.forEach(key => addIfFound(scopes, overrides[type] || {}, key));\n keys.forEach(key => addIfFound(scopes, defaults, key));\n keys.forEach(key => addIfFound(scopes, descriptors, key));\n });\n const array = Array.from(scopes);\n if (array.length === 0) {\n array.push(Object.create(null));\n }\n if (keysCached.has(keyLists)) {\n cache.set(keyLists, array);\n }\n return array;\n }\n chartOptionScopes() {\n const {options, type} = this;\n return [\n options,\n overrides[type] || {},\n defaults.datasets[type] || {},\n {type},\n defaults,\n descriptors\n ];\n }\n resolveNamedOptions(scopes, names, context, prefixes = ['']) {\n const result = {$shared: true};\n const {resolver, subPrefixes} = getResolver(this._resolverCache, scopes, prefixes);\n let options = resolver;\n if (needContext(resolver, names)) {\n result.$shared = false;\n context = isFunction(context) ? context() : context;\n const subResolver = this.createResolver(scopes, context, subPrefixes);\n options = _attachContext(resolver, context, subResolver);\n }\n for (const prop of names) {\n result[prop] = options[prop];\n }\n return result;\n }\n createResolver(scopes, context, prefixes = [''], descriptorDefaults) {\n const {resolver} = getResolver(this._resolverCache, scopes, prefixes);\n return isObject(context)\n ? _attachContext(resolver, context, undefined, descriptorDefaults)\n : resolver;\n }\n}\nfunction getResolver(resolverCache, scopes, prefixes) {\n let cache = resolverCache.get(scopes);\n if (!cache) {\n cache = new Map();\n resolverCache.set(scopes, cache);\n }\n const cacheKey = prefixes.join();\n let cached = cache.get(cacheKey);\n if (!cached) {\n const resolver = _createResolver(scopes, prefixes);\n cached = {\n resolver,\n subPrefixes: prefixes.filter(p => !p.toLowerCase().includes('hover'))\n };\n cache.set(cacheKey, cached);\n }\n return cached;\n}\nconst hasFunction = value => isObject(value)\n && Object.getOwnPropertyNames(value).reduce((acc, key) => acc || isFunction(value[key]), false);\nfunction needContext(proxy, names) {\n const {isScriptable, isIndexable} = _descriptors(proxy);\n for (const prop of names) {\n const scriptable = isScriptable(prop);\n const indexable = isIndexable(prop);\n const value = (indexable || scriptable) && proxy[prop];\n if ((scriptable && (isFunction(value) || hasFunction(value)))\n || (indexable && isArray(value))) {\n return true;\n }\n }\n return false;\n}\n\nvar version = \"3.9.1\";\n\nconst KNOWN_POSITIONS = ['top', 'bottom', 'left', 'right', 'chartArea'];\nfunction positionIsHorizontal(position, axis) {\n return position === 'top' || position === 'bottom' || (KNOWN_POSITIONS.indexOf(position) === -1 && axis === 'x');\n}\nfunction compare2Level(l1, l2) {\n return function(a, b) {\n return a[l1] === b[l1]\n ? a[l2] - b[l2]\n : a[l1] - b[l1];\n };\n}\nfunction onAnimationsComplete(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n chart.notifyPlugins('afterRender');\n callback(animationOptions && animationOptions.onComplete, [context], chart);\n}\nfunction onAnimationProgress(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n callback(animationOptions && animationOptions.onProgress, [context], chart);\n}\nfunction getCanvas(item) {\n if (_isDomSupported() && typeof item === 'string') {\n item = document.getElementById(item);\n } else if (item && item.length) {\n item = item[0];\n }\n if (item && item.canvas) {\n item = item.canvas;\n }\n return item;\n}\nconst instances = {};\nconst getChart = (key) => {\n const canvas = getCanvas(key);\n return Object.values(instances).filter((c) => c.canvas === canvas).pop();\n};\nfunction moveNumericKeys(obj, start, move) {\n const keys = Object.keys(obj);\n for (const key of keys) {\n const intKey = +key;\n if (intKey >= start) {\n const value = obj[key];\n delete obj[key];\n if (move > 0 || intKey > start) {\n obj[intKey + move] = value;\n }\n }\n }\n}\nfunction determineLastEvent(e, lastEvent, inChartArea, isClick) {\n if (!inChartArea || e.type === 'mouseout') {\n return null;\n }\n if (isClick) {\n return lastEvent;\n }\n return e;\n}\nclass Chart {\n constructor(item, userConfig) {\n const config = this.config = new Config(userConfig);\n const initialCanvas = getCanvas(item);\n const existingChart = getChart(initialCanvas);\n if (existingChart) {\n throw new Error(\n 'Canvas is already in use. Chart with ID \\'' + existingChart.id + '\\'' +\n\t\t\t\t' must be destroyed before the canvas with ID \\'' + existingChart.canvas.id + '\\' can be reused.'\n );\n }\n const options = config.createResolver(config.chartOptionScopes(), this.getContext());\n this.platform = new (config.platform || _detectPlatform(initialCanvas))();\n this.platform.updateConfig(config);\n const context = this.platform.acquireContext(initialCanvas, options.aspectRatio);\n const canvas = context && context.canvas;\n const height = canvas && canvas.height;\n const width = canvas && canvas.width;\n this.id = uid();\n this.ctx = context;\n this.canvas = canvas;\n this.width = width;\n this.height = height;\n this._options = options;\n this._aspectRatio = this.aspectRatio;\n this._layers = [];\n this._metasets = [];\n this._stacks = undefined;\n this.boxes = [];\n this.currentDevicePixelRatio = undefined;\n this.chartArea = undefined;\n this._active = [];\n this._lastEvent = undefined;\n this._listeners = {};\n this._responsiveListeners = undefined;\n this._sortedMetasets = [];\n this.scales = {};\n this._plugins = new PluginService();\n this.$proxies = {};\n this._hiddenIndices = {};\n this.attached = false;\n this._animationsDisabled = undefined;\n this.$context = undefined;\n this._doResize = debounce(mode => this.update(mode), options.resizeDelay || 0);\n this._dataChanges = [];\n instances[this.id] = this;\n if (!context || !canvas) {\n console.error(\"Failed to create chart: can't acquire context from the given item\");\n return;\n }\n animator.listen(this, 'complete', onAnimationsComplete);\n animator.listen(this, 'progress', onAnimationProgress);\n this._initialize();\n if (this.attached) {\n this.update();\n }\n }\n get aspectRatio() {\n const {options: {aspectRatio, maintainAspectRatio}, width, height, _aspectRatio} = this;\n if (!isNullOrUndef(aspectRatio)) {\n return aspectRatio;\n }\n if (maintainAspectRatio && _aspectRatio) {\n return _aspectRatio;\n }\n return height ? width / height : null;\n }\n get data() {\n return this.config.data;\n }\n set data(data) {\n this.config.data = data;\n }\n get options() {\n return this._options;\n }\n set options(options) {\n this.config.options = options;\n }\n _initialize() {\n this.notifyPlugins('beforeInit');\n if (this.options.responsive) {\n this.resize();\n } else {\n retinaScale(this, this.options.devicePixelRatio);\n }\n this.bindEvents();\n this.notifyPlugins('afterInit');\n return this;\n }\n clear() {\n clearCanvas(this.canvas, this.ctx);\n return this;\n }\n stop() {\n animator.stop(this);\n return this;\n }\n resize(width, height) {\n if (!animator.running(this)) {\n this._resize(width, height);\n } else {\n this._resizeBeforeDraw = {width, height};\n }\n }\n _resize(width, height) {\n const options = this.options;\n const canvas = this.canvas;\n const aspectRatio = options.maintainAspectRatio && this.aspectRatio;\n const newSize = this.platform.getMaximumSize(canvas, width, height, aspectRatio);\n const newRatio = options.devicePixelRatio || this.platform.getDevicePixelRatio();\n const mode = this.width ? 'resize' : 'attach';\n this.width = newSize.width;\n this.height = newSize.height;\n this._aspectRatio = this.aspectRatio;\n if (!retinaScale(this, newRatio, true)) {\n return;\n }\n this.notifyPlugins('resize', {size: newSize});\n callback(options.onResize, [this, newSize], this);\n if (this.attached) {\n if (this._doResize(mode)) {\n this.render();\n }\n }\n }\n ensureScalesHaveIDs() {\n const options = this.options;\n const scalesOptions = options.scales || {};\n each(scalesOptions, (axisOptions, axisID) => {\n axisOptions.id = axisID;\n });\n }\n buildOrUpdateScales() {\n const options = this.options;\n const scaleOpts = options.scales;\n const scales = this.scales;\n const updated = Object.keys(scales).reduce((obj, id) => {\n obj[id] = false;\n return obj;\n }, {});\n let items = [];\n if (scaleOpts) {\n items = items.concat(\n Object.keys(scaleOpts).map((id) => {\n const scaleOptions = scaleOpts[id];\n const axis = determineAxis(id, scaleOptions);\n const isRadial = axis === 'r';\n const isHorizontal = axis === 'x';\n return {\n options: scaleOptions,\n dposition: isRadial ? 'chartArea' : isHorizontal ? 'bottom' : 'left',\n dtype: isRadial ? 'radialLinear' : isHorizontal ? 'category' : 'linear'\n };\n })\n );\n }\n each(items, (item) => {\n const scaleOptions = item.options;\n const id = scaleOptions.id;\n const axis = determineAxis(id, scaleOptions);\n const scaleType = valueOrDefault(scaleOptions.type, item.dtype);\n if (scaleOptions.position === undefined || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) {\n scaleOptions.position = item.dposition;\n }\n updated[id] = true;\n let scale = null;\n if (id in scales && scales[id].type === scaleType) {\n scale = scales[id];\n } else {\n const scaleClass = registry.getScale(scaleType);\n scale = new scaleClass({\n id,\n type: scaleType,\n ctx: this.ctx,\n chart: this\n });\n scales[scale.id] = scale;\n }\n scale.init(scaleOptions, options);\n });\n each(updated, (hasUpdated, id) => {\n if (!hasUpdated) {\n delete scales[id];\n }\n });\n each(scales, (scale) => {\n layouts.configure(this, scale, scale.options);\n layouts.addBox(this, scale);\n });\n }\n _updateMetasets() {\n const metasets = this._metasets;\n const numData = this.data.datasets.length;\n const numMeta = metasets.length;\n metasets.sort((a, b) => a.index - b.index);\n if (numMeta > numData) {\n for (let i = numData; i < numMeta; ++i) {\n this._destroyDatasetMeta(i);\n }\n metasets.splice(numData, numMeta - numData);\n }\n this._sortedMetasets = metasets.slice(0).sort(compare2Level('order', 'index'));\n }\n _removeUnreferencedMetasets() {\n const {_metasets: metasets, data: {datasets}} = this;\n if (metasets.length > datasets.length) {\n delete this._stacks;\n }\n metasets.forEach((meta, index) => {\n if (datasets.filter(x => x === meta._dataset).length === 0) {\n this._destroyDatasetMeta(index);\n }\n });\n }\n buildOrUpdateControllers() {\n const newControllers = [];\n const datasets = this.data.datasets;\n let i, ilen;\n this._removeUnreferencedMetasets();\n for (i = 0, ilen = datasets.length; i < ilen; i++) {\n const dataset = datasets[i];\n let meta = this.getDatasetMeta(i);\n const type = dataset.type || this.config.type;\n if (meta.type && meta.type !== type) {\n this._destroyDatasetMeta(i);\n meta = this.getDatasetMeta(i);\n }\n meta.type = type;\n meta.indexAxis = dataset.indexAxis || getIndexAxis(type, this.options);\n meta.order = dataset.order || 0;\n meta.index = i;\n meta.label = '' + dataset.label;\n meta.visible = this.isDatasetVisible(i);\n if (meta.controller) {\n meta.controller.updateIndex(i);\n meta.controller.linkScales();\n } else {\n const ControllerClass = registry.getController(type);\n const {datasetElementType, dataElementType} = defaults.datasets[type];\n Object.assign(ControllerClass.prototype, {\n dataElementType: registry.getElement(dataElementType),\n datasetElementType: datasetElementType && registry.getElement(datasetElementType)\n });\n meta.controller = new ControllerClass(this, i);\n newControllers.push(meta.controller);\n }\n }\n this._updateMetasets();\n return newControllers;\n }\n _resetElements() {\n each(this.data.datasets, (dataset, datasetIndex) => {\n this.getDatasetMeta(datasetIndex).controller.reset();\n }, this);\n }\n reset() {\n this._resetElements();\n this.notifyPlugins('reset');\n }\n update(mode) {\n const config = this.config;\n config.update();\n const options = this._options = config.createResolver(config.chartOptionScopes(), this.getContext());\n const animsDisabled = this._animationsDisabled = !options.animation;\n this._updateScales();\n this._checkEventBindings();\n this._updateHiddenIndices();\n this._plugins.invalidate();\n if (this.notifyPlugins('beforeUpdate', {mode, cancelable: true}) === false) {\n return;\n }\n const newControllers = this.buildOrUpdateControllers();\n this.notifyPlugins('beforeElementsUpdate');\n let minPadding = 0;\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; i++) {\n const {controller} = this.getDatasetMeta(i);\n const reset = !animsDisabled && newControllers.indexOf(controller) === -1;\n controller.buildOrUpdateElements(reset);\n minPadding = Math.max(+controller.getMaxOverflow(), minPadding);\n }\n minPadding = this._minPadding = options.layout.autoPadding ? minPadding : 0;\n this._updateLayout(minPadding);\n if (!animsDisabled) {\n each(newControllers, (controller) => {\n controller.reset();\n });\n }\n this._updateDatasets(mode);\n this.notifyPlugins('afterUpdate', {mode});\n this._layers.sort(compare2Level('z', '_idx'));\n const {_active, _lastEvent} = this;\n if (_lastEvent) {\n this._eventHandler(_lastEvent, true);\n } else if (_active.length) {\n this._updateHoverStyles(_active, _active, true);\n }\n this.render();\n }\n _updateScales() {\n each(this.scales, (scale) => {\n layouts.removeBox(this, scale);\n });\n this.ensureScalesHaveIDs();\n this.buildOrUpdateScales();\n }\n _checkEventBindings() {\n const options = this.options;\n const existingEvents = new Set(Object.keys(this._listeners));\n const newEvents = new Set(options.events);\n if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== options.responsive) {\n this.unbindEvents();\n this.bindEvents();\n }\n }\n _updateHiddenIndices() {\n const {_hiddenIndices} = this;\n const changes = this._getUniformDataChanges() || [];\n for (const {method, start, count} of changes) {\n const move = method === '_removeElements' ? -count : count;\n moveNumericKeys(_hiddenIndices, start, move);\n }\n }\n _getUniformDataChanges() {\n const _dataChanges = this._dataChanges;\n if (!_dataChanges || !_dataChanges.length) {\n return;\n }\n this._dataChanges = [];\n const datasetCount = this.data.datasets.length;\n const makeSet = (idx) => new Set(\n _dataChanges\n .filter(c => c[0] === idx)\n .map((c, i) => i + ',' + c.splice(1).join(','))\n );\n const changeSet = makeSet(0);\n for (let i = 1; i < datasetCount; i++) {\n if (!setsEqual(changeSet, makeSet(i))) {\n return;\n }\n }\n return Array.from(changeSet)\n .map(c => c.split(','))\n .map(a => ({method: a[1], start: +a[2], count: +a[3]}));\n }\n _updateLayout(minPadding) {\n if (this.notifyPlugins('beforeLayout', {cancelable: true}) === false) {\n return;\n }\n layouts.update(this, this.width, this.height, minPadding);\n const area = this.chartArea;\n const noArea = area.width <= 0 || area.height <= 0;\n this._layers = [];\n each(this.boxes, (box) => {\n if (noArea && box.position === 'chartArea') {\n return;\n }\n if (box.configure) {\n box.configure();\n }\n this._layers.push(...box._layers());\n }, this);\n this._layers.forEach((item, index) => {\n item._idx = index;\n });\n this.notifyPlugins('afterLayout');\n }\n _updateDatasets(mode) {\n if (this.notifyPlugins('beforeDatasetsUpdate', {mode, cancelable: true}) === false) {\n return;\n }\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this.getDatasetMeta(i).controller.configure();\n }\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._updateDataset(i, isFunction(mode) ? mode({datasetIndex: i}) : mode);\n }\n this.notifyPlugins('afterDatasetsUpdate', {mode});\n }\n _updateDataset(index, mode) {\n const meta = this.getDatasetMeta(index);\n const args = {meta, index, mode, cancelable: true};\n if (this.notifyPlugins('beforeDatasetUpdate', args) === false) {\n return;\n }\n meta.controller._update(mode);\n args.cancelable = false;\n this.notifyPlugins('afterDatasetUpdate', args);\n }\n render() {\n if (this.notifyPlugins('beforeRender', {cancelable: true}) === false) {\n return;\n }\n if (animator.has(this)) {\n if (this.attached && !animator.running(this)) {\n animator.start(this);\n }\n } else {\n this.draw();\n onAnimationsComplete({chart: this});\n }\n }\n draw() {\n let i;\n if (this._resizeBeforeDraw) {\n const {width, height} = this._resizeBeforeDraw;\n this._resize(width, height);\n this._resizeBeforeDraw = null;\n }\n this.clear();\n if (this.width <= 0 || this.height <= 0) {\n return;\n }\n if (this.notifyPlugins('beforeDraw', {cancelable: true}) === false) {\n return;\n }\n const layers = this._layers;\n for (i = 0; i < layers.length && layers[i].z <= 0; ++i) {\n layers[i].draw(this.chartArea);\n }\n this._drawDatasets();\n for (; i < layers.length; ++i) {\n layers[i].draw(this.chartArea);\n }\n this.notifyPlugins('afterDraw');\n }\n _getSortedDatasetMetas(filterVisible) {\n const metasets = this._sortedMetasets;\n const result = [];\n let i, ilen;\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n const meta = metasets[i];\n if (!filterVisible || meta.visible) {\n result.push(meta);\n }\n }\n return result;\n }\n getSortedVisibleDatasetMetas() {\n return this._getSortedDatasetMetas(true);\n }\n _drawDatasets() {\n if (this.notifyPlugins('beforeDatasetsDraw', {cancelable: true}) === false) {\n return;\n }\n const metasets = this.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n this._drawDataset(metasets[i]);\n }\n this.notifyPlugins('afterDatasetsDraw');\n }\n _drawDataset(meta) {\n const ctx = this.ctx;\n const clip = meta._clip;\n const useClip = !clip.disabled;\n const area = this.chartArea;\n const args = {\n meta,\n index: meta.index,\n cancelable: true\n };\n if (this.notifyPlugins('beforeDatasetDraw', args) === false) {\n return;\n }\n if (useClip) {\n clipArea(ctx, {\n left: clip.left === false ? 0 : area.left - clip.left,\n right: clip.right === false ? this.width : area.right + clip.right,\n top: clip.top === false ? 0 : area.top - clip.top,\n bottom: clip.bottom === false ? this.height : area.bottom + clip.bottom\n });\n }\n meta.controller.draw();\n if (useClip) {\n unclipArea(ctx);\n }\n args.cancelable = false;\n this.notifyPlugins('afterDatasetDraw', args);\n }\n isPointInArea(point) {\n return _isPointInArea(point, this.chartArea, this._minPadding);\n }\n getElementsAtEventForMode(e, mode, options, useFinalPosition) {\n const method = Interaction.modes[mode];\n if (typeof method === 'function') {\n return method(this, e, options, useFinalPosition);\n }\n return [];\n }\n getDatasetMeta(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n const metasets = this._metasets;\n let meta = metasets.filter(x => x && x._dataset === dataset).pop();\n if (!meta) {\n meta = {\n type: null,\n data: [],\n dataset: null,\n controller: null,\n hidden: null,\n xAxisID: null,\n yAxisID: null,\n order: dataset && dataset.order || 0,\n index: datasetIndex,\n _dataset: dataset,\n _parsed: [],\n _sorted: false\n };\n metasets.push(meta);\n }\n return meta;\n }\n getContext() {\n return this.$context || (this.$context = createContext(null, {chart: this, type: 'chart'}));\n }\n getVisibleDatasetCount() {\n return this.getSortedVisibleDatasetMetas().length;\n }\n isDatasetVisible(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n if (!dataset) {\n return false;\n }\n const meta = this.getDatasetMeta(datasetIndex);\n return typeof meta.hidden === 'boolean' ? !meta.hidden : !dataset.hidden;\n }\n setDatasetVisibility(datasetIndex, visible) {\n const meta = this.getDatasetMeta(datasetIndex);\n meta.hidden = !visible;\n }\n toggleDataVisibility(index) {\n this._hiddenIndices[index] = !this._hiddenIndices[index];\n }\n getDataVisibility(index) {\n return !this._hiddenIndices[index];\n }\n _updateVisibility(datasetIndex, dataIndex, visible) {\n const mode = visible ? 'show' : 'hide';\n const meta = this.getDatasetMeta(datasetIndex);\n const anims = meta.controller._resolveAnimations(undefined, mode);\n if (defined(dataIndex)) {\n meta.data[dataIndex].hidden = !visible;\n this.update();\n } else {\n this.setDatasetVisibility(datasetIndex, visible);\n anims.update(meta, {visible});\n this.update((ctx) => ctx.datasetIndex === datasetIndex ? mode : undefined);\n }\n }\n hide(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, false);\n }\n show(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, true);\n }\n _destroyDatasetMeta(datasetIndex) {\n const meta = this._metasets[datasetIndex];\n if (meta && meta.controller) {\n meta.controller._destroy();\n }\n delete this._metasets[datasetIndex];\n }\n _stop() {\n let i, ilen;\n this.stop();\n animator.remove(this);\n for (i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._destroyDatasetMeta(i);\n }\n }\n destroy() {\n this.notifyPlugins('beforeDestroy');\n const {canvas, ctx} = this;\n this._stop();\n this.config.clearCache();\n if (canvas) {\n this.unbindEvents();\n clearCanvas(canvas, ctx);\n this.platform.releaseContext(ctx);\n this.canvas = null;\n this.ctx = null;\n }\n this.notifyPlugins('destroy');\n delete instances[this.id];\n this.notifyPlugins('afterDestroy');\n }\n toBase64Image(...args) {\n return this.canvas.toDataURL(...args);\n }\n bindEvents() {\n this.bindUserEvents();\n if (this.options.responsive) {\n this.bindResponsiveEvents();\n } else {\n this.attached = true;\n }\n }\n bindUserEvents() {\n const listeners = this._listeners;\n const platform = this.platform;\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const listener = (e, x, y) => {\n e.offsetX = x;\n e.offsetY = y;\n this._eventHandler(e);\n };\n each(this.options.events, (type) => _add(type, listener));\n }\n bindResponsiveEvents() {\n if (!this._responsiveListeners) {\n this._responsiveListeners = {};\n }\n const listeners = this._responsiveListeners;\n const platform = this.platform;\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const _remove = (type, listener) => {\n if (listeners[type]) {\n platform.removeEventListener(this, type, listener);\n delete listeners[type];\n }\n };\n const listener = (width, height) => {\n if (this.canvas) {\n this.resize(width, height);\n }\n };\n let detached;\n const attached = () => {\n _remove('attach', attached);\n this.attached = true;\n this.resize();\n _add('resize', listener);\n _add('detach', detached);\n };\n detached = () => {\n this.attached = false;\n _remove('resize', listener);\n this._stop();\n this._resize(0, 0);\n _add('attach', attached);\n };\n if (platform.isAttached(this.canvas)) {\n attached();\n } else {\n detached();\n }\n }\n unbindEvents() {\n each(this._listeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._listeners = {};\n each(this._responsiveListeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._responsiveListeners = undefined;\n }\n updateHoverStyle(items, mode, enabled) {\n const prefix = enabled ? 'set' : 'remove';\n let meta, item, i, ilen;\n if (mode === 'dataset') {\n meta = this.getDatasetMeta(items[0].datasetIndex);\n meta.controller['_' + prefix + 'DatasetHoverStyle']();\n }\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n item = items[i];\n const controller = item && this.getDatasetMeta(item.datasetIndex).controller;\n if (controller) {\n controller[prefix + 'HoverStyle'](item.element, item.datasetIndex, item.index);\n }\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements) {\n const lastActive = this._active || [];\n const active = activeElements.map(({datasetIndex, index}) => {\n const meta = this.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('No dataset found at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index,\n };\n });\n const changed = !_elementsEqual(active, lastActive);\n if (changed) {\n this._active = active;\n this._lastEvent = null;\n this._updateHoverStyles(active, lastActive);\n }\n }\n notifyPlugins(hook, args, filter) {\n return this._plugins.notify(this, hook, args, filter);\n }\n _updateHoverStyles(active, lastActive, replay) {\n const hoverOptions = this.options.hover;\n const diff = (a, b) => a.filter(x => !b.some(y => x.datasetIndex === y.datasetIndex && x.index === y.index));\n const deactivated = diff(lastActive, active);\n const activated = replay ? active : diff(active, lastActive);\n if (deactivated.length) {\n this.updateHoverStyle(deactivated, hoverOptions.mode, false);\n }\n if (activated.length && hoverOptions.mode) {\n this.updateHoverStyle(activated, hoverOptions.mode, true);\n }\n }\n _eventHandler(e, replay) {\n const args = {\n event: e,\n replay,\n cancelable: true,\n inChartArea: this.isPointInArea(e)\n };\n const eventFilter = (plugin) => (plugin.options.events || this.options.events).includes(e.native.type);\n if (this.notifyPlugins('beforeEvent', args, eventFilter) === false) {\n return;\n }\n const changed = this._handleEvent(e, replay, args.inChartArea);\n args.cancelable = false;\n this.notifyPlugins('afterEvent', args, eventFilter);\n if (changed || args.changed) {\n this.render();\n }\n return this;\n }\n _handleEvent(e, replay, inChartArea) {\n const {_active: lastActive = [], options} = this;\n const useFinalPosition = replay;\n const active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition);\n const isClick = _isClickEvent(e);\n const lastEvent = determineLastEvent(e, this._lastEvent, inChartArea, isClick);\n if (inChartArea) {\n this._lastEvent = null;\n callback(options.onHover, [e, active, this], this);\n if (isClick) {\n callback(options.onClick, [e, active, this], this);\n }\n }\n const changed = !_elementsEqual(active, lastActive);\n if (changed || replay) {\n this._active = active;\n this._updateHoverStyles(active, lastActive, replay);\n }\n this._lastEvent = lastEvent;\n return changed;\n }\n _getActiveElements(e, lastActive, inChartArea, useFinalPosition) {\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const hoverOptions = this.options.hover;\n return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition);\n }\n}\nconst invalidatePlugins = () => each(Chart.instances, (chart) => chart._plugins.invalidate());\nconst enumerable = true;\nObject.defineProperties(Chart, {\n defaults: {\n enumerable,\n value: defaults\n },\n instances: {\n enumerable,\n value: instances\n },\n overrides: {\n enumerable,\n value: overrides\n },\n registry: {\n enumerable,\n value: registry\n },\n version: {\n enumerable,\n value: version\n },\n getChart: {\n enumerable,\n value: getChart\n },\n register: {\n enumerable,\n value: (...items) => {\n registry.add(...items);\n invalidatePlugins();\n }\n },\n unregister: {\n enumerable,\n value: (...items) => {\n registry.remove(...items);\n invalidatePlugins();\n }\n }\n});\n\nfunction clipArc(ctx, element, endAngle) {\n const {startAngle, pixelMargin, x, y, outerRadius, innerRadius} = element;\n let angleMargin = pixelMargin / outerRadius;\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n if (innerRadius > pixelMargin) {\n angleMargin = pixelMargin / innerRadius;\n ctx.arc(x, y, innerRadius, endAngle + angleMargin, startAngle - angleMargin, true);\n } else {\n ctx.arc(x, y, pixelMargin, endAngle + HALF_PI, startAngle - HALF_PI);\n }\n ctx.closePath();\n ctx.clip();\n}\nfunction toRadiusCorners(value) {\n return _readValueToProps(value, ['outerStart', 'outerEnd', 'innerStart', 'innerEnd']);\n}\nfunction parseBorderRadius$1(arc, innerRadius, outerRadius, angleDelta) {\n const o = toRadiusCorners(arc.options.borderRadius);\n const halfThickness = (outerRadius - innerRadius) / 2;\n const innerLimit = Math.min(halfThickness, angleDelta * innerRadius / 2);\n const computeOuterLimit = (val) => {\n const outerArcLimit = (outerRadius - Math.min(halfThickness, val)) * angleDelta / 2;\n return _limitValue(val, 0, Math.min(halfThickness, outerArcLimit));\n };\n return {\n outerStart: computeOuterLimit(o.outerStart),\n outerEnd: computeOuterLimit(o.outerEnd),\n innerStart: _limitValue(o.innerStart, 0, innerLimit),\n innerEnd: _limitValue(o.innerEnd, 0, innerLimit),\n };\n}\nfunction rThetaToXY(r, theta, x, y) {\n return {\n x: x + r * Math.cos(theta),\n y: y + r * Math.sin(theta),\n };\n}\nfunction pathArc(ctx, element, offset, spacing, end, circular) {\n const {x, y, startAngle: start, pixelMargin, innerRadius: innerR} = element;\n const outerRadius = Math.max(element.outerRadius + spacing + offset - pixelMargin, 0);\n const innerRadius = innerR > 0 ? innerR + spacing + offset + pixelMargin : 0;\n let spacingOffset = 0;\n const alpha = end - start;\n if (spacing) {\n const noSpacingInnerRadius = innerR > 0 ? innerR - spacing : 0;\n const noSpacingOuterRadius = outerRadius > 0 ? outerRadius - spacing : 0;\n const avNogSpacingRadius = (noSpacingInnerRadius + noSpacingOuterRadius) / 2;\n const adjustedAngle = avNogSpacingRadius !== 0 ? (alpha * avNogSpacingRadius) / (avNogSpacingRadius + spacing) : alpha;\n spacingOffset = (alpha - adjustedAngle) / 2;\n }\n const beta = Math.max(0.001, alpha * outerRadius - offset / PI) / outerRadius;\n const angleOffset = (alpha - beta) / 2;\n const startAngle = start + angleOffset + spacingOffset;\n const endAngle = end - angleOffset - spacingOffset;\n const {outerStart, outerEnd, innerStart, innerEnd} = parseBorderRadius$1(element, innerRadius, outerRadius, endAngle - startAngle);\n const outerStartAdjustedRadius = outerRadius - outerStart;\n const outerEndAdjustedRadius = outerRadius - outerEnd;\n const outerStartAdjustedAngle = startAngle + outerStart / outerStartAdjustedRadius;\n const outerEndAdjustedAngle = endAngle - outerEnd / outerEndAdjustedRadius;\n const innerStartAdjustedRadius = innerRadius + innerStart;\n const innerEndAdjustedRadius = innerRadius + innerEnd;\n const innerStartAdjustedAngle = startAngle + innerStart / innerStartAdjustedRadius;\n const innerEndAdjustedAngle = endAngle - innerEnd / innerEndAdjustedRadius;\n ctx.beginPath();\n if (circular) {\n ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerEndAdjustedAngle);\n if (outerEnd > 0) {\n const pCenter = rThetaToXY(outerEndAdjustedRadius, outerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerEnd, outerEndAdjustedAngle, endAngle + HALF_PI);\n }\n const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y);\n ctx.lineTo(p4.x, p4.y);\n if (innerEnd > 0) {\n const pCenter = rThetaToXY(innerEndAdjustedRadius, innerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerEnd, endAngle + HALF_PI, innerEndAdjustedAngle + Math.PI);\n }\n ctx.arc(x, y, innerRadius, endAngle - (innerEnd / innerRadius), startAngle + (innerStart / innerRadius), true);\n if (innerStart > 0) {\n const pCenter = rThetaToXY(innerStartAdjustedRadius, innerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerStart, innerStartAdjustedAngle + Math.PI, startAngle - HALF_PI);\n }\n const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y);\n ctx.lineTo(p8.x, p8.y);\n if (outerStart > 0) {\n const pCenter = rThetaToXY(outerStartAdjustedRadius, outerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerStart, startAngle - HALF_PI, outerStartAdjustedAngle);\n }\n } else {\n ctx.moveTo(x, y);\n const outerStartX = Math.cos(outerStartAdjustedAngle) * outerRadius + x;\n const outerStartY = Math.sin(outerStartAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerStartX, outerStartY);\n const outerEndX = Math.cos(outerEndAdjustedAngle) * outerRadius + x;\n const outerEndY = Math.sin(outerEndAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerEndX, outerEndY);\n }\n ctx.closePath();\n}\nfunction drawArc(ctx, element, offset, spacing, circular) {\n const {fullCircles, startAngle, circumference} = element;\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, startAngle + TAU, circular);\n for (let i = 0; i < fullCircles; ++i) {\n ctx.fill();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + circumference % TAU;\n if (circumference % TAU === 0) {\n endAngle += TAU;\n }\n }\n }\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.fill();\n return endAngle;\n}\nfunction drawFullCircleBorders(ctx, element, inner) {\n const {x, y, startAngle, pixelMargin, fullCircles} = element;\n const outerRadius = Math.max(element.outerRadius - pixelMargin, 0);\n const innerRadius = element.innerRadius + pixelMargin;\n let i;\n if (inner) {\n clipArc(ctx, element, startAngle + TAU);\n }\n ctx.beginPath();\n ctx.arc(x, y, innerRadius, startAngle + TAU, startAngle, true);\n for (i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle, startAngle + TAU);\n for (i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n}\nfunction drawBorder(ctx, element, offset, spacing, endAngle, circular) {\n const {options} = element;\n const {borderWidth, borderJoinStyle} = options;\n const inner = options.borderAlign === 'inner';\n if (!borderWidth) {\n return;\n }\n if (inner) {\n ctx.lineWidth = borderWidth * 2;\n ctx.lineJoin = borderJoinStyle || 'round';\n } else {\n ctx.lineWidth = borderWidth;\n ctx.lineJoin = borderJoinStyle || 'bevel';\n }\n if (element.fullCircles) {\n drawFullCircleBorders(ctx, element, inner);\n }\n if (inner) {\n clipArc(ctx, element, endAngle);\n }\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.stroke();\n}\nclass ArcElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.circumference = undefined;\n this.startAngle = undefined;\n this.endAngle = undefined;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.pixelMargin = 0;\n this.fullCircles = 0;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(chartX, chartY, useFinalPosition) {\n const point = this.getProps(['x', 'y'], useFinalPosition);\n const {angle, distance} = getAngleFromPoint(point, {x: chartX, y: chartY});\n const {startAngle, endAngle, innerRadius, outerRadius, circumference} = this.getProps([\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference'\n ], useFinalPosition);\n const rAdjust = this.options.spacing / 2;\n const _circumference = valueOrDefault(circumference, endAngle - startAngle);\n const betweenAngles = _circumference >= TAU || _angleBetween(angle, startAngle, endAngle);\n const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);\n return (betweenAngles && withinRadius);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y, startAngle, endAngle, innerRadius, outerRadius} = this.getProps([\n 'x',\n 'y',\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference',\n ], useFinalPosition);\n const {offset, spacing} = this.options;\n const halfAngle = (startAngle + endAngle) / 2;\n const halfRadius = (innerRadius + outerRadius + spacing + offset) / 2;\n return {\n x: x + Math.cos(halfAngle) * halfRadius,\n y: y + Math.sin(halfAngle) * halfRadius\n };\n }\n tooltipPosition(useFinalPosition) {\n return this.getCenterPoint(useFinalPosition);\n }\n draw(ctx) {\n const {options, circumference} = this;\n const offset = (options.offset || 0) / 2;\n const spacing = (options.spacing || 0) / 2;\n const circular = options.circular;\n this.pixelMargin = (options.borderAlign === 'inner') ? 0.33 : 0;\n this.fullCircles = circumference > TAU ? Math.floor(circumference / TAU) : 0;\n if (circumference === 0 || this.innerRadius < 0 || this.outerRadius < 0) {\n return;\n }\n ctx.save();\n let radiusOffset = 0;\n if (offset) {\n radiusOffset = offset / 2;\n const halfAngle = (this.startAngle + this.endAngle) / 2;\n ctx.translate(Math.cos(halfAngle) * radiusOffset, Math.sin(halfAngle) * radiusOffset);\n if (this.circumference >= PI) {\n radiusOffset = offset;\n }\n }\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n const endAngle = drawArc(ctx, this, radiusOffset, spacing, circular);\n drawBorder(ctx, this, radiusOffset, spacing, endAngle, circular);\n ctx.restore();\n }\n}\nArcElement.id = 'arc';\nArcElement.defaults = {\n borderAlign: 'center',\n borderColor: '#fff',\n borderJoinStyle: undefined,\n borderRadius: 0,\n borderWidth: 2,\n offset: 0,\n spacing: 0,\n angle: undefined,\n circular: true,\n};\nArcElement.defaultRoutes = {\n backgroundColor: 'backgroundColor'\n};\n\nfunction setStyle(ctx, options, style = options) {\n ctx.lineCap = valueOrDefault(style.borderCapStyle, options.borderCapStyle);\n ctx.setLineDash(valueOrDefault(style.borderDash, options.borderDash));\n ctx.lineDashOffset = valueOrDefault(style.borderDashOffset, options.borderDashOffset);\n ctx.lineJoin = valueOrDefault(style.borderJoinStyle, options.borderJoinStyle);\n ctx.lineWidth = valueOrDefault(style.borderWidth, options.borderWidth);\n ctx.strokeStyle = valueOrDefault(style.borderColor, options.borderColor);\n}\nfunction lineTo(ctx, previous, target) {\n ctx.lineTo(target.x, target.y);\n}\nfunction getLineMethod(options) {\n if (options.stepped) {\n return _steppedLineTo;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierCurveTo;\n }\n return lineTo;\n}\nfunction pathVars(points, segment, params = {}) {\n const count = points.length;\n const {start: paramsStart = 0, end: paramsEnd = count - 1} = params;\n const {start: segmentStart, end: segmentEnd} = segment;\n const start = Math.max(paramsStart, segmentStart);\n const end = Math.min(paramsEnd, segmentEnd);\n const outside = paramsStart < segmentStart && paramsEnd < segmentStart || paramsStart > segmentEnd && paramsEnd > segmentEnd;\n return {\n count,\n start,\n loop: segment.loop,\n ilen: end < start && !outside ? count + end - start : end - start\n };\n}\nfunction pathSegment(ctx, line, segment, params) {\n const {points, options} = line;\n const {count, start, loop, ilen} = pathVars(points, segment, params);\n const lineMethod = getLineMethod(options);\n let {move = true, reverse} = params || {};\n let i, point, prev;\n for (i = 0; i <= ilen; ++i) {\n point = points[(start + (reverse ? ilen - i : i)) % count];\n if (point.skip) {\n continue;\n } else if (move) {\n ctx.moveTo(point.x, point.y);\n move = false;\n } else {\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n prev = point;\n }\n if (loop) {\n point = points[(start + (reverse ? ilen : 0)) % count];\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n return !!loop;\n}\nfunction fastPathSegment(ctx, line, segment, params) {\n const points = line.points;\n const {count, start, ilen} = pathVars(points, segment, params);\n const {move = true, reverse} = params || {};\n let avgX = 0;\n let countX = 0;\n let i, point, prevX, minY, maxY, lastY;\n const pointIndex = (index) => (start + (reverse ? ilen - index : index)) % count;\n const drawX = () => {\n if (minY !== maxY) {\n ctx.lineTo(avgX, maxY);\n ctx.lineTo(avgX, minY);\n ctx.lineTo(avgX, lastY);\n }\n };\n if (move) {\n point = points[pointIndex(0)];\n ctx.moveTo(point.x, point.y);\n }\n for (i = 0; i <= ilen; ++i) {\n point = points[pointIndex(i)];\n if (point.skip) {\n continue;\n }\n const x = point.x;\n const y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n } else if (y > maxY) {\n maxY = y;\n }\n avgX = (countX * avgX + x) / ++countX;\n } else {\n drawX();\n ctx.lineTo(x, y);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n }\n lastY = y;\n }\n drawX();\n}\nfunction _getSegmentMethod(line) {\n const opts = line.options;\n const borderDash = opts.borderDash && opts.borderDash.length;\n const useFastPath = !line._decimated && !line._loop && !opts.tension && opts.cubicInterpolationMode !== 'monotone' && !opts.stepped && !borderDash;\n return useFastPath ? fastPathSegment : pathSegment;\n}\nfunction _getInterpolationMethod(options) {\n if (options.stepped) {\n return _steppedInterpolation;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierInterpolation;\n }\n return _pointInLine;\n}\nfunction strokePathWithCache(ctx, line, start, count) {\n let path = line._path;\n if (!path) {\n path = line._path = new Path2D();\n if (line.path(path, start, count)) {\n path.closePath();\n }\n }\n setStyle(ctx, line.options);\n ctx.stroke(path);\n}\nfunction strokePathDirect(ctx, line, start, count) {\n const {segments, options} = line;\n const segmentMethod = _getSegmentMethod(line);\n for (const segment of segments) {\n setStyle(ctx, options, segment.style);\n ctx.beginPath();\n if (segmentMethod(ctx, line, segment, {start, end: start + count - 1})) {\n ctx.closePath();\n }\n ctx.stroke();\n }\n}\nconst usePath2D = typeof Path2D === 'function';\nfunction draw(ctx, line, start, count) {\n if (usePath2D && !line.options.segment) {\n strokePathWithCache(ctx, line, start, count);\n } else {\n strokePathDirect(ctx, line, start, count);\n }\n}\nclass LineElement extends Element {\n constructor(cfg) {\n super();\n this.animated = true;\n this.options = undefined;\n this._chart = undefined;\n this._loop = undefined;\n this._fullLoop = undefined;\n this._path = undefined;\n this._points = undefined;\n this._segments = undefined;\n this._decimated = false;\n this._pointsUpdated = false;\n this._datasetIndex = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n updateControlPoints(chartArea, indexAxis) {\n const options = this.options;\n if ((options.tension || options.cubicInterpolationMode === 'monotone') && !options.stepped && !this._pointsUpdated) {\n const loop = options.spanGaps ? this._loop : this._fullLoop;\n _updateBezierControlPoints(this._points, options, chartArea, loop, indexAxis);\n this._pointsUpdated = true;\n }\n }\n set points(points) {\n this._points = points;\n delete this._segments;\n delete this._path;\n this._pointsUpdated = false;\n }\n get points() {\n return this._points;\n }\n get segments() {\n return this._segments || (this._segments = _computeSegments(this, this.options.segment));\n }\n first() {\n const segments = this.segments;\n const points = this.points;\n return segments.length && points[segments[0].start];\n }\n last() {\n const segments = this.segments;\n const points = this.points;\n const count = segments.length;\n return count && points[segments[count - 1].end];\n }\n interpolate(point, property) {\n const options = this.options;\n const value = point[property];\n const points = this.points;\n const segments = _boundSegments(this, {property, start: value, end: value});\n if (!segments.length) {\n return;\n }\n const result = [];\n const _interpolate = _getInterpolationMethod(options);\n let i, ilen;\n for (i = 0, ilen = segments.length; i < ilen; ++i) {\n const {start, end} = segments[i];\n const p1 = points[start];\n const p2 = points[end];\n if (p1 === p2) {\n result.push(p1);\n continue;\n }\n const t = Math.abs((value - p1[property]) / (p2[property] - p1[property]));\n const interpolated = _interpolate(p1, p2, t, options.stepped);\n interpolated[property] = point[property];\n result.push(interpolated);\n }\n return result.length === 1 ? result[0] : result;\n }\n pathSegment(ctx, segment, params) {\n const segmentMethod = _getSegmentMethod(this);\n return segmentMethod(ctx, this, segment, params);\n }\n path(ctx, start, count) {\n const segments = this.segments;\n const segmentMethod = _getSegmentMethod(this);\n let loop = this._loop;\n start = start || 0;\n count = count || (this.points.length - start);\n for (const segment of segments) {\n loop &= segmentMethod(ctx, this, segment, {start, end: start + count - 1});\n }\n return !!loop;\n }\n draw(ctx, chartArea, start, count) {\n const options = this.options || {};\n const points = this.points || [];\n if (points.length && options.borderWidth) {\n ctx.save();\n draw(ctx, this, start, count);\n ctx.restore();\n }\n if (this.animated) {\n this._pointsUpdated = false;\n this._path = undefined;\n }\n }\n}\nLineElement.id = 'line';\nLineElement.defaults = {\n borderCapStyle: 'butt',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: 'miter',\n borderWidth: 3,\n capBezierPoints: true,\n cubicInterpolationMode: 'default',\n fill: false,\n spanGaps: false,\n stepped: false,\n tension: 0,\n};\nLineElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\nLineElement.descriptors = {\n _scriptable: true,\n _indexable: (name) => name !== 'borderDash' && name !== 'fill',\n};\n\nfunction inRange$1(el, pos, axis, useFinalPosition) {\n const options = el.options;\n const {[axis]: value} = el.getProps([axis], useFinalPosition);\n return (Math.abs(pos - value) < options.radius + options.hitRadius);\n}\nclass PointElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.parsed = undefined;\n this.skip = undefined;\n this.stop = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n const options = this.options;\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return ((Math.pow(mouseX - x, 2) + Math.pow(mouseY - y, 2)) < Math.pow(options.hitRadius + options.radius, 2));\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange$1(this, mouseX, 'x', useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange$1(this, mouseY, 'y', useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y};\n }\n size(options) {\n options = options || this.options || {};\n let radius = options.radius || 0;\n radius = Math.max(radius, radius && options.hoverRadius || 0);\n const borderWidth = radius && options.borderWidth || 0;\n return (radius + borderWidth) * 2;\n }\n draw(ctx, area) {\n const options = this.options;\n if (this.skip || options.radius < 0.1 || !_isPointInArea(this, area, this.size(options) / 2)) {\n return;\n }\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.fillStyle = options.backgroundColor;\n drawPoint(ctx, options, this.x, this.y);\n }\n getRange() {\n const options = this.options || {};\n return options.radius + options.hitRadius;\n }\n}\nPointElement.id = 'point';\nPointElement.defaults = {\n borderWidth: 1,\n hitRadius: 1,\n hoverBorderWidth: 1,\n hoverRadius: 4,\n pointStyle: 'circle',\n radius: 3,\n rotation: 0\n};\nPointElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\n\nfunction getBarBounds(bar, useFinalPosition) {\n const {x, y, base, width, height} = bar.getProps(['x', 'y', 'base', 'width', 'height'], useFinalPosition);\n let left, right, top, bottom, half;\n if (bar.horizontal) {\n half = height / 2;\n left = Math.min(x, base);\n right = Math.max(x, base);\n top = y - half;\n bottom = y + half;\n } else {\n half = width / 2;\n left = x - half;\n right = x + half;\n top = Math.min(y, base);\n bottom = Math.max(y, base);\n }\n return {left, top, right, bottom};\n}\nfunction skipOrLimit(skip, value, min, max) {\n return skip ? 0 : _limitValue(value, min, max);\n}\nfunction parseBorderWidth(bar, maxW, maxH) {\n const value = bar.options.borderWidth;\n const skip = bar.borderSkipped;\n const o = toTRBL(value);\n return {\n t: skipOrLimit(skip.top, o.top, 0, maxH),\n r: skipOrLimit(skip.right, o.right, 0, maxW),\n b: skipOrLimit(skip.bottom, o.bottom, 0, maxH),\n l: skipOrLimit(skip.left, o.left, 0, maxW)\n };\n}\nfunction parseBorderRadius(bar, maxW, maxH) {\n const {enableBorderRadius} = bar.getProps(['enableBorderRadius']);\n const value = bar.options.borderRadius;\n const o = toTRBLCorners(value);\n const maxR = Math.min(maxW, maxH);\n const skip = bar.borderSkipped;\n const enableBorder = enableBorderRadius || isObject(value);\n return {\n topLeft: skipOrLimit(!enableBorder || skip.top || skip.left, o.topLeft, 0, maxR),\n topRight: skipOrLimit(!enableBorder || skip.top || skip.right, o.topRight, 0, maxR),\n bottomLeft: skipOrLimit(!enableBorder || skip.bottom || skip.left, o.bottomLeft, 0, maxR),\n bottomRight: skipOrLimit(!enableBorder || skip.bottom || skip.right, o.bottomRight, 0, maxR)\n };\n}\nfunction boundingRects(bar) {\n const bounds = getBarBounds(bar);\n const width = bounds.right - bounds.left;\n const height = bounds.bottom - bounds.top;\n const border = parseBorderWidth(bar, width / 2, height / 2);\n const radius = parseBorderRadius(bar, width / 2, height / 2);\n return {\n outer: {\n x: bounds.left,\n y: bounds.top,\n w: width,\n h: height,\n radius\n },\n inner: {\n x: bounds.left + border.l,\n y: bounds.top + border.t,\n w: width - border.l - border.r,\n h: height - border.t - border.b,\n radius: {\n topLeft: Math.max(0, radius.topLeft - Math.max(border.t, border.l)),\n topRight: Math.max(0, radius.topRight - Math.max(border.t, border.r)),\n bottomLeft: Math.max(0, radius.bottomLeft - Math.max(border.b, border.l)),\n bottomRight: Math.max(0, radius.bottomRight - Math.max(border.b, border.r)),\n }\n }\n };\n}\nfunction inRange(bar, x, y, useFinalPosition) {\n const skipX = x === null;\n const skipY = y === null;\n const skipBoth = skipX && skipY;\n const bounds = bar && !skipBoth && getBarBounds(bar, useFinalPosition);\n return bounds\n\t\t&& (skipX || _isBetween(x, bounds.left, bounds.right))\n\t\t&& (skipY || _isBetween(y, bounds.top, bounds.bottom));\n}\nfunction hasRadius(radius) {\n return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight;\n}\nfunction addNormalRectPath(ctx, rect) {\n ctx.rect(rect.x, rect.y, rect.w, rect.h);\n}\nfunction inflateRect(rect, amount, refRect = {}) {\n const x = rect.x !== refRect.x ? -amount : 0;\n const y = rect.y !== refRect.y ? -amount : 0;\n const w = (rect.x + rect.w !== refRect.x + refRect.w ? amount : 0) - x;\n const h = (rect.y + rect.h !== refRect.y + refRect.h ? amount : 0) - y;\n return {\n x: rect.x + x,\n y: rect.y + y,\n w: rect.w + w,\n h: rect.h + h,\n radius: rect.radius\n };\n}\nclass BarElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.horizontal = undefined;\n this.base = undefined;\n this.width = undefined;\n this.height = undefined;\n this.inflateAmount = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n draw(ctx) {\n const {inflateAmount, options: {borderColor, backgroundColor}} = this;\n const {inner, outer} = boundingRects(this);\n const addRectPath = hasRadius(outer.radius) ? addRoundedRectPath : addNormalRectPath;\n ctx.save();\n if (outer.w !== inner.w || outer.h !== inner.h) {\n ctx.beginPath();\n addRectPath(ctx, inflateRect(outer, inflateAmount, inner));\n ctx.clip();\n addRectPath(ctx, inflateRect(inner, -inflateAmount, outer));\n ctx.fillStyle = borderColor;\n ctx.fill('evenodd');\n }\n ctx.beginPath();\n addRectPath(ctx, inflateRect(inner, inflateAmount));\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n return inRange(this, mouseX, mouseY, useFinalPosition);\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange(this, mouseX, null, useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange(this, null, mouseY, useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y, base, horizontal} = this.getProps(['x', 'y', 'base', 'horizontal'], useFinalPosition);\n return {\n x: horizontal ? (x + base) / 2 : x,\n y: horizontal ? y : (y + base) / 2\n };\n }\n getRange(axis) {\n return axis === 'x' ? this.width / 2 : this.height / 2;\n }\n}\nBarElement.id = 'bar';\nBarElement.defaults = {\n borderSkipped: 'start',\n borderWidth: 0,\n borderRadius: 0,\n inflateAmount: 'auto',\n pointStyle: undefined\n};\nBarElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\n\nvar elements = /*#__PURE__*/Object.freeze({\n__proto__: null,\nArcElement: ArcElement,\nLineElement: LineElement,\nPointElement: PointElement,\nBarElement: BarElement\n});\n\nfunction lttbDecimation(data, start, count, availableWidth, options) {\n const samples = options.samples || availableWidth;\n if (samples >= count) {\n return data.slice(start, start + count);\n }\n const decimated = [];\n const bucketWidth = (count - 2) / (samples - 2);\n let sampledIndex = 0;\n const endIndex = start + count - 1;\n let a = start;\n let i, maxAreaPoint, maxArea, area, nextA;\n decimated[sampledIndex++] = data[a];\n for (i = 0; i < samples - 2; i++) {\n let avgX = 0;\n let avgY = 0;\n let j;\n const avgRangeStart = Math.floor((i + 1) * bucketWidth) + 1 + start;\n const avgRangeEnd = Math.min(Math.floor((i + 2) * bucketWidth) + 1, count) + start;\n const avgRangeLength = avgRangeEnd - avgRangeStart;\n for (j = avgRangeStart; j < avgRangeEnd; j++) {\n avgX += data[j].x;\n avgY += data[j].y;\n }\n avgX /= avgRangeLength;\n avgY /= avgRangeLength;\n const rangeOffs = Math.floor(i * bucketWidth) + 1 + start;\n const rangeTo = Math.min(Math.floor((i + 1) * bucketWidth) + 1, count) + start;\n const {x: pointAx, y: pointAy} = data[a];\n maxArea = area = -1;\n for (j = rangeOffs; j < rangeTo; j++) {\n area = 0.5 * Math.abs(\n (pointAx - avgX) * (data[j].y - pointAy) -\n (pointAx - data[j].x) * (avgY - pointAy)\n );\n if (area > maxArea) {\n maxArea = area;\n maxAreaPoint = data[j];\n nextA = j;\n }\n }\n decimated[sampledIndex++] = maxAreaPoint;\n a = nextA;\n }\n decimated[sampledIndex++] = data[endIndex];\n return decimated;\n}\nfunction minMaxDecimation(data, start, count, availableWidth) {\n let avgX = 0;\n let countX = 0;\n let i, point, x, y, prevX, minIndex, maxIndex, startIndex, minY, maxY;\n const decimated = [];\n const endIndex = start + count - 1;\n const xMin = data[start].x;\n const xMax = data[endIndex].x;\n const dx = xMax - xMin;\n for (i = start; i < start + count; ++i) {\n point = data[i];\n x = (point.x - xMin) / dx * availableWidth;\n y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n minIndex = i;\n } else if (y > maxY) {\n maxY = y;\n maxIndex = i;\n }\n avgX = (countX * avgX + point.x) / ++countX;\n } else {\n const lastIndex = i - 1;\n if (!isNullOrUndef(minIndex) && !isNullOrUndef(maxIndex)) {\n const intermediateIndex1 = Math.min(minIndex, maxIndex);\n const intermediateIndex2 = Math.max(minIndex, maxIndex);\n if (intermediateIndex1 !== startIndex && intermediateIndex1 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex1],\n x: avgX,\n });\n }\n if (intermediateIndex2 !== startIndex && intermediateIndex2 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex2],\n x: avgX\n });\n }\n }\n if (i > 0 && lastIndex !== startIndex) {\n decimated.push(data[lastIndex]);\n }\n decimated.push(point);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n minIndex = maxIndex = startIndex = i;\n }\n }\n return decimated;\n}\nfunction cleanDecimatedDataset(dataset) {\n if (dataset._decimated) {\n const data = dataset._data;\n delete dataset._decimated;\n delete dataset._data;\n Object.defineProperty(dataset, 'data', {value: data});\n }\n}\nfunction cleanDecimatedData(chart) {\n chart.data.datasets.forEach((dataset) => {\n cleanDecimatedDataset(dataset);\n });\n}\nfunction getStartAndCountOfVisiblePointsSimplified(meta, points) {\n const pointCount = points.length;\n let start = 0;\n let count;\n const {iScale} = meta;\n const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(_lookupByKey(points, iScale.axis, min).lo, 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(_lookupByKey(points, iScale.axis, max).hi + 1, start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n return {start, count};\n}\nvar plugin_decimation = {\n id: 'decimation',\n defaults: {\n algorithm: 'min-max',\n enabled: false,\n },\n beforeElementsUpdate: (chart, args, options) => {\n if (!options.enabled) {\n cleanDecimatedData(chart);\n return;\n }\n const availableWidth = chart.width;\n chart.data.datasets.forEach((dataset, datasetIndex) => {\n const {_data, indexAxis} = dataset;\n const meta = chart.getDatasetMeta(datasetIndex);\n const data = _data || dataset.data;\n if (resolve([indexAxis, chart.options.indexAxis]) === 'y') {\n return;\n }\n if (!meta.controller.supportsDecimation) {\n return;\n }\n const xAxis = chart.scales[meta.xAxisID];\n if (xAxis.type !== 'linear' && xAxis.type !== 'time') {\n return;\n }\n if (chart.options.parsing) {\n return;\n }\n let {start, count} = getStartAndCountOfVisiblePointsSimplified(meta, data);\n const threshold = options.threshold || 4 * availableWidth;\n if (count <= threshold) {\n cleanDecimatedDataset(dataset);\n return;\n }\n if (isNullOrUndef(_data)) {\n dataset._data = data;\n delete dataset.data;\n Object.defineProperty(dataset, 'data', {\n configurable: true,\n enumerable: true,\n get: function() {\n return this._decimated;\n },\n set: function(d) {\n this._data = d;\n }\n });\n }\n let decimated;\n switch (options.algorithm) {\n case 'lttb':\n decimated = lttbDecimation(data, start, count, availableWidth, options);\n break;\n case 'min-max':\n decimated = minMaxDecimation(data, start, count, availableWidth);\n break;\n default:\n throw new Error(`Unsupported decimation algorithm '${options.algorithm}'`);\n }\n dataset._decimated = decimated;\n });\n },\n destroy(chart) {\n cleanDecimatedData(chart);\n }\n};\n\nfunction _segments(line, target, property) {\n const segments = line.segments;\n const points = line.points;\n const tpoints = target.points;\n const parts = [];\n for (const segment of segments) {\n let {start, end} = segment;\n end = _findSegmentEnd(start, end, points);\n const bounds = _getBounds(property, points[start], points[end], segment.loop);\n if (!target.segments) {\n parts.push({\n source: segment,\n target: bounds,\n start: points[start],\n end: points[end]\n });\n continue;\n }\n const targetSegments = _boundSegments(target, bounds);\n for (const tgt of targetSegments) {\n const subBounds = _getBounds(property, tpoints[tgt.start], tpoints[tgt.end], tgt.loop);\n const fillSources = _boundSegment(segment, points, subBounds);\n for (const fillSource of fillSources) {\n parts.push({\n source: fillSource,\n target: tgt,\n start: {\n [property]: _getEdge(bounds, subBounds, 'start', Math.max)\n },\n end: {\n [property]: _getEdge(bounds, subBounds, 'end', Math.min)\n }\n });\n }\n }\n }\n return parts;\n}\nfunction _getBounds(property, first, last, loop) {\n if (loop) {\n return;\n }\n let start = first[property];\n let end = last[property];\n if (property === 'angle') {\n start = _normalizeAngle(start);\n end = _normalizeAngle(end);\n }\n return {property, start, end};\n}\nfunction _pointsFromSegments(boundary, line) {\n const {x = null, y = null} = boundary || {};\n const linePoints = line.points;\n const points = [];\n line.segments.forEach(({start, end}) => {\n end = _findSegmentEnd(start, end, linePoints);\n const first = linePoints[start];\n const last = linePoints[end];\n if (y !== null) {\n points.push({x: first.x, y});\n points.push({x: last.x, y});\n } else if (x !== null) {\n points.push({x, y: first.y});\n points.push({x, y: last.y});\n }\n });\n return points;\n}\nfunction _findSegmentEnd(start, end, points) {\n for (;end > start; end--) {\n const point = points[end];\n if (!isNaN(point.x) && !isNaN(point.y)) {\n break;\n }\n }\n return end;\n}\nfunction _getEdge(a, b, prop, fn) {\n if (a && b) {\n return fn(a[prop], b[prop]);\n }\n return a ? a[prop] : b ? b[prop] : 0;\n}\n\nfunction _createBoundaryLine(boundary, line) {\n let points = [];\n let _loop = false;\n if (isArray(boundary)) {\n _loop = true;\n points = boundary;\n } else {\n points = _pointsFromSegments(boundary, line);\n }\n return points.length ? new LineElement({\n points,\n options: {tension: 0},\n _loop,\n _fullLoop: _loop\n }) : null;\n}\nfunction _shouldApplyFill(source) {\n return source && source.fill !== false;\n}\n\nfunction _resolveTarget(sources, index, propagate) {\n const source = sources[index];\n let fill = source.fill;\n const visited = [index];\n let target;\n if (!propagate) {\n return fill;\n }\n while (fill !== false && visited.indexOf(fill) === -1) {\n if (!isNumberFinite(fill)) {\n return fill;\n }\n target = sources[fill];\n if (!target) {\n return false;\n }\n if (target.visible) {\n return fill;\n }\n visited.push(fill);\n fill = target.fill;\n }\n return false;\n}\nfunction _decodeFill(line, index, count) {\n const fill = parseFillOption(line);\n if (isObject(fill)) {\n return isNaN(fill.value) ? false : fill;\n }\n let target = parseFloat(fill);\n if (isNumberFinite(target) && Math.floor(target) === target) {\n return decodeTargetIndex(fill[0], index, target, count);\n }\n return ['origin', 'start', 'end', 'stack', 'shape'].indexOf(fill) >= 0 && fill;\n}\nfunction decodeTargetIndex(firstCh, index, target, count) {\n if (firstCh === '-' || firstCh === '+') {\n target = index + target;\n }\n if (target === index || target < 0 || target >= count) {\n return false;\n }\n return target;\n}\nfunction _getTargetPixel(fill, scale) {\n let pixel = null;\n if (fill === 'start') {\n pixel = scale.bottom;\n } else if (fill === 'end') {\n pixel = scale.top;\n } else if (isObject(fill)) {\n pixel = scale.getPixelForValue(fill.value);\n } else if (scale.getBasePixel) {\n pixel = scale.getBasePixel();\n }\n return pixel;\n}\nfunction _getTargetValue(fill, scale, startValue) {\n let value;\n if (fill === 'start') {\n value = startValue;\n } else if (fill === 'end') {\n value = scale.options.reverse ? scale.min : scale.max;\n } else if (isObject(fill)) {\n value = fill.value;\n } else {\n value = scale.getBaseValue();\n }\n return value;\n}\nfunction parseFillOption(line) {\n const options = line.options;\n const fillOption = options.fill;\n let fill = valueOrDefault(fillOption && fillOption.target, fillOption);\n if (fill === undefined) {\n fill = !!options.backgroundColor;\n }\n if (fill === false || fill === null) {\n return false;\n }\n if (fill === true) {\n return 'origin';\n }\n return fill;\n}\n\nfunction _buildStackLine(source) {\n const {scale, index, line} = source;\n const points = [];\n const segments = line.segments;\n const sourcePoints = line.points;\n const linesBelow = getLinesBelow(scale, index);\n linesBelow.push(_createBoundaryLine({x: null, y: scale.bottom}, line));\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n for (let j = segment.start; j <= segment.end; j++) {\n addPointsBelow(points, sourcePoints[j], linesBelow);\n }\n }\n return new LineElement({points, options: {}});\n}\nfunction getLinesBelow(scale, index) {\n const below = [];\n const metas = scale.getMatchingVisibleMetas('line');\n for (let i = 0; i < metas.length; i++) {\n const meta = metas[i];\n if (meta.index === index) {\n break;\n }\n if (!meta.hidden) {\n below.unshift(meta.dataset);\n }\n }\n return below;\n}\nfunction addPointsBelow(points, sourcePoint, linesBelow) {\n const postponed = [];\n for (let j = 0; j < linesBelow.length; j++) {\n const line = linesBelow[j];\n const {first, last, point} = findPoint(line, sourcePoint, 'x');\n if (!point || (first && last)) {\n continue;\n }\n if (first) {\n postponed.unshift(point);\n } else {\n points.push(point);\n if (!last) {\n break;\n }\n }\n }\n points.push(...postponed);\n}\nfunction findPoint(line, sourcePoint, property) {\n const point = line.interpolate(sourcePoint, property);\n if (!point) {\n return {};\n }\n const pointValue = point[property];\n const segments = line.segments;\n const linePoints = line.points;\n let first = false;\n let last = false;\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const firstValue = linePoints[segment.start][property];\n const lastValue = linePoints[segment.end][property];\n if (_isBetween(pointValue, firstValue, lastValue)) {\n first = pointValue === firstValue;\n last = pointValue === lastValue;\n break;\n }\n }\n return {first, last, point};\n}\n\nclass simpleArc {\n constructor(opts) {\n this.x = opts.x;\n this.y = opts.y;\n this.radius = opts.radius;\n }\n pathSegment(ctx, bounds, opts) {\n const {x, y, radius} = this;\n bounds = bounds || {start: 0, end: TAU};\n ctx.arc(x, y, radius, bounds.end, bounds.start, true);\n return !opts.bounds;\n }\n interpolate(point) {\n const {x, y, radius} = this;\n const angle = point.angle;\n return {\n x: x + Math.cos(angle) * radius,\n y: y + Math.sin(angle) * radius,\n angle\n };\n }\n}\n\nfunction _getTarget(source) {\n const {chart, fill, line} = source;\n if (isNumberFinite(fill)) {\n return getLineByIndex(chart, fill);\n }\n if (fill === 'stack') {\n return _buildStackLine(source);\n }\n if (fill === 'shape') {\n return true;\n }\n const boundary = computeBoundary(source);\n if (boundary instanceof simpleArc) {\n return boundary;\n }\n return _createBoundaryLine(boundary, line);\n}\nfunction getLineByIndex(chart, index) {\n const meta = chart.getDatasetMeta(index);\n const visible = meta && chart.isDatasetVisible(index);\n return visible ? meta.dataset : null;\n}\nfunction computeBoundary(source) {\n const scale = source.scale || {};\n if (scale.getPointPositionForValue) {\n return computeCircularBoundary(source);\n }\n return computeLinearBoundary(source);\n}\nfunction computeLinearBoundary(source) {\n const {scale = {}, fill} = source;\n const pixel = _getTargetPixel(fill, scale);\n if (isNumberFinite(pixel)) {\n const horizontal = scale.isHorizontal();\n return {\n x: horizontal ? pixel : null,\n y: horizontal ? null : pixel\n };\n }\n return null;\n}\nfunction computeCircularBoundary(source) {\n const {scale, fill} = source;\n const options = scale.options;\n const length = scale.getLabels().length;\n const start = options.reverse ? scale.max : scale.min;\n const value = _getTargetValue(fill, scale, start);\n const target = [];\n if (options.grid.circular) {\n const center = scale.getPointPositionForValue(0, start);\n return new simpleArc({\n x: center.x,\n y: center.y,\n radius: scale.getDistanceFromCenterForValue(value)\n });\n }\n for (let i = 0; i < length; ++i) {\n target.push(scale.getPointPositionForValue(i, value));\n }\n return target;\n}\n\nfunction _drawfill(ctx, source, area) {\n const target = _getTarget(source);\n const {line, scale, axis} = source;\n const lineOpts = line.options;\n const fillOption = lineOpts.fill;\n const color = lineOpts.backgroundColor;\n const {above = color, below = color} = fillOption || {};\n if (target && line.points.length) {\n clipArea(ctx, area);\n doFill(ctx, {line, target, above, below, area, scale, axis});\n unclipArea(ctx);\n }\n}\nfunction doFill(ctx, cfg) {\n const {line, target, above, below, area, scale} = cfg;\n const property = line._loop ? 'angle' : cfg.axis;\n ctx.save();\n if (property === 'x' && below !== above) {\n clipVertical(ctx, target, area.top);\n fill(ctx, {line, target, color: above, scale, property});\n ctx.restore();\n ctx.save();\n clipVertical(ctx, target, area.bottom);\n }\n fill(ctx, {line, target, color: below, scale, property});\n ctx.restore();\n}\nfunction clipVertical(ctx, target, clipY) {\n const {segments, points} = target;\n let first = true;\n let lineLoop = false;\n ctx.beginPath();\n for (const segment of segments) {\n const {start, end} = segment;\n const firstPoint = points[start];\n const lastPoint = points[_findSegmentEnd(start, end, points)];\n if (first) {\n ctx.moveTo(firstPoint.x, firstPoint.y);\n first = false;\n } else {\n ctx.lineTo(firstPoint.x, clipY);\n ctx.lineTo(firstPoint.x, firstPoint.y);\n }\n lineLoop = !!target.pathSegment(ctx, segment, {move: lineLoop});\n if (lineLoop) {\n ctx.closePath();\n } else {\n ctx.lineTo(lastPoint.x, clipY);\n }\n }\n ctx.lineTo(target.first().x, clipY);\n ctx.closePath();\n ctx.clip();\n}\nfunction fill(ctx, cfg) {\n const {line, target, property, color, scale} = cfg;\n const segments = _segments(line, target, property);\n for (const {source: src, target: tgt, start, end} of segments) {\n const {style: {backgroundColor = color} = {}} = src;\n const notShape = target !== true;\n ctx.save();\n ctx.fillStyle = backgroundColor;\n clipBounds(ctx, scale, notShape && _getBounds(property, start, end));\n ctx.beginPath();\n const lineLoop = !!line.pathSegment(ctx, src);\n let loop;\n if (notShape) {\n if (lineLoop) {\n ctx.closePath();\n } else {\n interpolatedLineTo(ctx, target, end, property);\n }\n const targetLoop = !!target.pathSegment(ctx, tgt, {move: lineLoop, reverse: true});\n loop = lineLoop && targetLoop;\n if (!loop) {\n interpolatedLineTo(ctx, target, start, property);\n }\n }\n ctx.closePath();\n ctx.fill(loop ? 'evenodd' : 'nonzero');\n ctx.restore();\n }\n}\nfunction clipBounds(ctx, scale, bounds) {\n const {top, bottom} = scale.chart.chartArea;\n const {property, start, end} = bounds || {};\n if (property === 'x') {\n ctx.beginPath();\n ctx.rect(start, top, end - start, bottom - top);\n ctx.clip();\n }\n}\nfunction interpolatedLineTo(ctx, target, point, property) {\n const interpolatedPoint = target.interpolate(point, property);\n if (interpolatedPoint) {\n ctx.lineTo(interpolatedPoint.x, interpolatedPoint.y);\n }\n}\n\nvar index = {\n id: 'filler',\n afterDatasetsUpdate(chart, _args, options) {\n const count = (chart.data.datasets || []).length;\n const sources = [];\n let meta, i, line, source;\n for (i = 0; i < count; ++i) {\n meta = chart.getDatasetMeta(i);\n line = meta.dataset;\n source = null;\n if (line && line.options && line instanceof LineElement) {\n source = {\n visible: chart.isDatasetVisible(i),\n index: i,\n fill: _decodeFill(line, i, count),\n chart,\n axis: meta.controller.options.indexAxis,\n scale: meta.vScale,\n line,\n };\n }\n meta.$filler = source;\n sources.push(source);\n }\n for (i = 0; i < count; ++i) {\n source = sources[i];\n if (!source || source.fill === false) {\n continue;\n }\n source.fill = _resolveTarget(sources, i, options.propagate);\n }\n },\n beforeDraw(chart, _args, options) {\n const draw = options.drawTime === 'beforeDraw';\n const metasets = chart.getSortedVisibleDatasetMetas();\n const area = chart.chartArea;\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n if (!source) {\n continue;\n }\n source.line.updateControlPoints(area, source.axis);\n if (draw && source.fill) {\n _drawfill(chart.ctx, source, area);\n }\n }\n },\n beforeDatasetsDraw(chart, _args, options) {\n if (options.drawTime !== 'beforeDatasetsDraw') {\n return;\n }\n const metasets = chart.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n if (_shouldApplyFill(source)) {\n _drawfill(chart.ctx, source, chart.chartArea);\n }\n }\n },\n beforeDatasetDraw(chart, args, options) {\n const source = args.meta.$filler;\n if (!_shouldApplyFill(source) || options.drawTime !== 'beforeDatasetDraw') {\n return;\n }\n _drawfill(chart.ctx, source, chart.chartArea);\n },\n defaults: {\n propagate: true,\n drawTime: 'beforeDatasetDraw'\n }\n};\n\nconst getBoxSize = (labelOpts, fontSize) => {\n let {boxHeight = fontSize, boxWidth = fontSize} = labelOpts;\n if (labelOpts.usePointStyle) {\n boxHeight = Math.min(boxHeight, fontSize);\n boxWidth = labelOpts.pointStyleWidth || Math.min(boxWidth, fontSize);\n }\n return {\n boxWidth,\n boxHeight,\n itemHeight: Math.max(fontSize, boxHeight)\n };\n};\nconst itemsEqual = (a, b) => a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index;\nclass Legend extends Element {\n constructor(config) {\n super();\n this._added = false;\n this.legendHitBoxes = [];\n this._hoveredItem = null;\n this.doughnutMode = false;\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this.legendItems = undefined;\n this.columnSizes = undefined;\n this.lineWidths = undefined;\n this.maxHeight = undefined;\n this.maxWidth = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.height = undefined;\n this.width = undefined;\n this._margins = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight, margins) {\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins;\n this.setDimensions();\n this.buildLabels();\n this.fit();\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = this._margins.left;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = this._margins.top;\n this.bottom = this.height;\n }\n }\n buildLabels() {\n const labelOpts = this.options.labels || {};\n let legendItems = callback(labelOpts.generateLabels, [this.chart], this) || [];\n if (labelOpts.filter) {\n legendItems = legendItems.filter((item) => labelOpts.filter(item, this.chart.data));\n }\n if (labelOpts.sort) {\n legendItems = legendItems.sort((a, b) => labelOpts.sort(a, b, this.chart.data));\n }\n if (this.options.reverse) {\n legendItems.reverse();\n }\n this.legendItems = legendItems;\n }\n fit() {\n const {options, ctx} = this;\n if (!options.display) {\n this.width = this.height = 0;\n return;\n }\n const labelOpts = options.labels;\n const labelFont = toFont(labelOpts.font);\n const fontSize = labelFont.size;\n const titleHeight = this._computeTitleHeight();\n const {boxWidth, itemHeight} = getBoxSize(labelOpts, fontSize);\n let width, height;\n ctx.font = labelFont.string;\n if (this.isHorizontal()) {\n width = this.maxWidth;\n height = this._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n } else {\n height = this.maxHeight;\n width = this._fitCols(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n }\n this.width = Math.min(width, options.maxWidth || this.maxWidth);\n this.height = Math.min(height, options.maxHeight || this.maxHeight);\n }\n _fitRows(titleHeight, fontSize, boxWidth, itemHeight) {\n const {ctx, maxWidth, options: {labels: {padding}}} = this;\n const hitboxes = this.legendHitBoxes = [];\n const lineWidths = this.lineWidths = [0];\n const lineHeight = itemHeight + padding;\n let totalHeight = titleHeight;\n ctx.textAlign = 'left';\n ctx.textBaseline = 'middle';\n let row = -1;\n let top = -lineHeight;\n this.legendItems.forEach((legendItem, i) => {\n const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) {\n totalHeight += lineHeight;\n lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\n top += lineHeight;\n row++;\n }\n hitboxes[i] = {left: 0, top, row, width: itemWidth, height: itemHeight};\n lineWidths[lineWidths.length - 1] += itemWidth + padding;\n });\n return totalHeight;\n }\n _fitCols(titleHeight, fontSize, boxWidth, itemHeight) {\n const {ctx, maxHeight, options: {labels: {padding}}} = this;\n const hitboxes = this.legendHitBoxes = [];\n const columnSizes = this.columnSizes = [];\n const heightLimit = maxHeight - titleHeight;\n let totalWidth = padding;\n let currentColWidth = 0;\n let currentColHeight = 0;\n let left = 0;\n let col = 0;\n this.legendItems.forEach((legendItem, i) => {\n const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) {\n totalWidth += currentColWidth + padding;\n columnSizes.push({width: currentColWidth, height: currentColHeight});\n left += currentColWidth + padding;\n col++;\n currentColWidth = currentColHeight = 0;\n }\n hitboxes[i] = {left, top: currentColHeight, col, width: itemWidth, height: itemHeight};\n currentColWidth = Math.max(currentColWidth, itemWidth);\n currentColHeight += itemHeight + padding;\n });\n totalWidth += currentColWidth;\n columnSizes.push({width: currentColWidth, height: currentColHeight});\n return totalWidth;\n }\n adjustHitBoxes() {\n if (!this.options.display) {\n return;\n }\n const titleHeight = this._computeTitleHeight();\n const {legendHitBoxes: hitboxes, options: {align, labels: {padding}, rtl}} = this;\n const rtlHelper = getRtlAdapter(rtl, this.left, this.width);\n if (this.isHorizontal()) {\n let row = 0;\n let left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n for (const hitbox of hitboxes) {\n if (row !== hitbox.row) {\n row = hitbox.row;\n left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n }\n hitbox.top += this.top + titleHeight + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(left), hitbox.width);\n left += hitbox.width + padding;\n }\n } else {\n let col = 0;\n let top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n for (const hitbox of hitboxes) {\n if (hitbox.col !== col) {\n col = hitbox.col;\n top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n }\n hitbox.top = top;\n hitbox.left += this.left + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(hitbox.left), hitbox.width);\n top += hitbox.height + padding;\n }\n }\n }\n isHorizontal() {\n return this.options.position === 'top' || this.options.position === 'bottom';\n }\n draw() {\n if (this.options.display) {\n const ctx = this.ctx;\n clipArea(ctx, this);\n this._draw();\n unclipArea(ctx);\n }\n }\n _draw() {\n const {options: opts, columnSizes, lineWidths, ctx} = this;\n const {align, labels: labelOpts} = opts;\n const defaultColor = defaults.color;\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const labelFont = toFont(labelOpts.font);\n const {color: fontColor, padding} = labelOpts;\n const fontSize = labelFont.size;\n const halfFontSize = fontSize / 2;\n let cursor;\n this.drawTitle();\n ctx.textAlign = rtlHelper.textAlign('left');\n ctx.textBaseline = 'middle';\n ctx.lineWidth = 0.5;\n ctx.font = labelFont.string;\n const {boxWidth, boxHeight, itemHeight} = getBoxSize(labelOpts, fontSize);\n const drawLegendBox = function(x, y, legendItem) {\n if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) {\n return;\n }\n ctx.save();\n const lineWidth = valueOrDefault(legendItem.lineWidth, 1);\n ctx.fillStyle = valueOrDefault(legendItem.fillStyle, defaultColor);\n ctx.lineCap = valueOrDefault(legendItem.lineCap, 'butt');\n ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, 0);\n ctx.lineJoin = valueOrDefault(legendItem.lineJoin, 'miter');\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, defaultColor);\n ctx.setLineDash(valueOrDefault(legendItem.lineDash, []));\n if (labelOpts.usePointStyle) {\n const drawOptions = {\n radius: boxHeight * Math.SQRT2 / 2,\n pointStyle: legendItem.pointStyle,\n rotation: legendItem.rotation,\n borderWidth: lineWidth\n };\n const centerX = rtlHelper.xPlus(x, boxWidth / 2);\n const centerY = y + halfFontSize;\n drawPointLegend(ctx, drawOptions, centerX, centerY, labelOpts.pointStyleWidth && boxWidth);\n } else {\n const yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0);\n const xBoxLeft = rtlHelper.leftForLtr(x, boxWidth);\n const borderRadius = toTRBLCorners(legendItem.borderRadius);\n ctx.beginPath();\n if (Object.values(borderRadius).some(v => v !== 0)) {\n addRoundedRectPath(ctx, {\n x: xBoxLeft,\n y: yBoxTop,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius,\n });\n } else {\n ctx.rect(xBoxLeft, yBoxTop, boxWidth, boxHeight);\n }\n ctx.fill();\n if (lineWidth !== 0) {\n ctx.stroke();\n }\n }\n ctx.restore();\n };\n const fillText = function(x, y, legendItem) {\n renderText(ctx, legendItem.text, x, y + (itemHeight / 2), labelFont, {\n strikethrough: legendItem.hidden,\n textAlign: rtlHelper.textAlign(legendItem.textAlign)\n });\n };\n const isHorizontal = this.isHorizontal();\n const titleHeight = this._computeTitleHeight();\n if (isHorizontal) {\n cursor = {\n x: _alignStartEnd(align, this.left + padding, this.right - lineWidths[0]),\n y: this.top + padding + titleHeight,\n line: 0\n };\n } else {\n cursor = {\n x: this.left + padding,\n y: _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[0].height),\n line: 0\n };\n }\n overrideTextDirection(this.ctx, opts.textDirection);\n const lineHeight = itemHeight + padding;\n this.legendItems.forEach((legendItem, i) => {\n ctx.strokeStyle = legendItem.fontColor || fontColor;\n ctx.fillStyle = legendItem.fontColor || fontColor;\n const textWidth = ctx.measureText(legendItem.text).width;\n const textAlign = rtlHelper.textAlign(legendItem.textAlign || (legendItem.textAlign = labelOpts.textAlign));\n const width = boxWidth + halfFontSize + textWidth;\n let x = cursor.x;\n let y = cursor.y;\n rtlHelper.setWidth(this.width);\n if (isHorizontal) {\n if (i > 0 && x + width + padding > this.right) {\n y = cursor.y += lineHeight;\n cursor.line++;\n x = cursor.x = _alignStartEnd(align, this.left + padding, this.right - lineWidths[cursor.line]);\n }\n } else if (i > 0 && y + lineHeight > this.bottom) {\n x = cursor.x = x + columnSizes[cursor.line].width + padding;\n cursor.line++;\n y = cursor.y = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[cursor.line].height);\n }\n const realX = rtlHelper.x(x);\n drawLegendBox(realX, y, legendItem);\n x = _textX(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : this.right, opts.rtl);\n fillText(rtlHelper.x(x), y, legendItem);\n if (isHorizontal) {\n cursor.x += width + padding;\n } else {\n cursor.y += lineHeight;\n }\n });\n restoreTextDirection(this.ctx, opts.textDirection);\n }\n drawTitle() {\n const opts = this.options;\n const titleOpts = opts.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n if (!titleOpts.display) {\n return;\n }\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const ctx = this.ctx;\n const position = titleOpts.position;\n const halfFontSize = titleFont.size / 2;\n const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize;\n let y;\n let left = this.left;\n let maxWidth = this.width;\n if (this.isHorizontal()) {\n maxWidth = Math.max(...this.lineWidths);\n y = this.top + topPaddingPlusHalfFontSize;\n left = _alignStartEnd(opts.align, left, this.right - maxWidth);\n } else {\n const maxHeight = this.columnSizes.reduce((acc, size) => Math.max(acc, size.height), 0);\n y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, this.top, this.bottom - maxHeight - opts.labels.padding - this._computeTitleHeight());\n }\n const x = _alignStartEnd(position, left, left + maxWidth);\n ctx.textAlign = rtlHelper.textAlign(_toLeftRightCenter(position));\n ctx.textBaseline = 'middle';\n ctx.strokeStyle = titleOpts.color;\n ctx.fillStyle = titleOpts.color;\n ctx.font = titleFont.string;\n renderText(ctx, titleOpts.text, x, y, titleFont);\n }\n _computeTitleHeight() {\n const titleOpts = this.options.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n return titleOpts.display ? titleFont.lineHeight + titlePadding.height : 0;\n }\n _getLegendItemAt(x, y) {\n let i, hitBox, lh;\n if (_isBetween(x, this.left, this.right)\n && _isBetween(y, this.top, this.bottom)) {\n lh = this.legendHitBoxes;\n for (i = 0; i < lh.length; ++i) {\n hitBox = lh[i];\n if (_isBetween(x, hitBox.left, hitBox.left + hitBox.width)\n && _isBetween(y, hitBox.top, hitBox.top + hitBox.height)) {\n return this.legendItems[i];\n }\n }\n }\n return null;\n }\n handleEvent(e) {\n const opts = this.options;\n if (!isListened(e.type, opts)) {\n return;\n }\n const hoveredItem = this._getLegendItemAt(e.x, e.y);\n if (e.type === 'mousemove' || e.type === 'mouseout') {\n const previous = this._hoveredItem;\n const sameItem = itemsEqual(previous, hoveredItem);\n if (previous && !sameItem) {\n callback(opts.onLeave, [e, previous, this], this);\n }\n this._hoveredItem = hoveredItem;\n if (hoveredItem && !sameItem) {\n callback(opts.onHover, [e, hoveredItem, this], this);\n }\n } else if (hoveredItem) {\n callback(opts.onClick, [e, hoveredItem, this], this);\n }\n }\n}\nfunction isListened(type, opts) {\n if ((type === 'mousemove' || type === 'mouseout') && (opts.onHover || opts.onLeave)) {\n return true;\n }\n if (opts.onClick && (type === 'click' || type === 'mouseup')) {\n return true;\n }\n return false;\n}\nvar plugin_legend = {\n id: 'legend',\n _element: Legend,\n start(chart, _args, options) {\n const legend = chart.legend = new Legend({ctx: chart.ctx, options, chart});\n layouts.configure(chart, legend, options);\n layouts.addBox(chart, legend);\n },\n stop(chart) {\n layouts.removeBox(chart, chart.legend);\n delete chart.legend;\n },\n beforeUpdate(chart, _args, options) {\n const legend = chart.legend;\n layouts.configure(chart, legend, options);\n legend.options = options;\n },\n afterUpdate(chart) {\n const legend = chart.legend;\n legend.buildLabels();\n legend.adjustHitBoxes();\n },\n afterEvent(chart, args) {\n if (!args.replay) {\n chart.legend.handleEvent(args.event);\n }\n },\n defaults: {\n display: true,\n position: 'top',\n align: 'center',\n fullSize: true,\n reverse: false,\n weight: 1000,\n onClick(e, legendItem, legend) {\n const index = legendItem.datasetIndex;\n const ci = legend.chart;\n if (ci.isDatasetVisible(index)) {\n ci.hide(index);\n legendItem.hidden = true;\n } else {\n ci.show(index);\n legendItem.hidden = false;\n }\n },\n onHover: null,\n onLeave: null,\n labels: {\n color: (ctx) => ctx.chart.options.color,\n boxWidth: 40,\n padding: 10,\n generateLabels(chart) {\n const datasets = chart.data.datasets;\n const {labels: {usePointStyle, pointStyle, textAlign, color}} = chart.legend.options;\n return chart._getSortedDatasetMetas().map((meta) => {\n const style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\n const borderWidth = toPadding(style.borderWidth);\n return {\n text: datasets[meta.index].label,\n fillStyle: style.backgroundColor,\n fontColor: color,\n hidden: !meta.visible,\n lineCap: style.borderCapStyle,\n lineDash: style.borderDash,\n lineDashOffset: style.borderDashOffset,\n lineJoin: style.borderJoinStyle,\n lineWidth: (borderWidth.width + borderWidth.height) / 4,\n strokeStyle: style.borderColor,\n pointStyle: pointStyle || style.pointStyle,\n rotation: style.rotation,\n textAlign: textAlign || style.textAlign,\n borderRadius: 0,\n datasetIndex: meta.index\n };\n }, this);\n }\n },\n title: {\n color: (ctx) => ctx.chart.options.color,\n display: false,\n position: 'center',\n text: '',\n }\n },\n descriptors: {\n _scriptable: (name) => !name.startsWith('on'),\n labels: {\n _scriptable: (name) => !['generateLabels', 'filter', 'sort'].includes(name),\n }\n },\n};\n\nclass Title extends Element {\n constructor(config) {\n super();\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this._padding = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight) {\n const opts = this.options;\n this.left = 0;\n this.top = 0;\n if (!opts.display) {\n this.width = this.height = this.right = this.bottom = 0;\n return;\n }\n this.width = this.right = maxWidth;\n this.height = this.bottom = maxHeight;\n const lineCount = isArray(opts.text) ? opts.text.length : 1;\n this._padding = toPadding(opts.padding);\n const textSize = lineCount * toFont(opts.font).lineHeight + this._padding.height;\n if (this.isHorizontal()) {\n this.height = textSize;\n } else {\n this.width = textSize;\n }\n }\n isHorizontal() {\n const pos = this.options.position;\n return pos === 'top' || pos === 'bottom';\n }\n _drawArgs(offset) {\n const {top, left, bottom, right, options} = this;\n const align = options.align;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n if (this.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n titleY = top + offset;\n maxWidth = right - left;\n } else {\n if (options.position === 'left') {\n titleX = left + offset;\n titleY = _alignStartEnd(align, bottom, top);\n rotation = PI * -0.5;\n } else {\n titleX = right - offset;\n titleY = _alignStartEnd(align, top, bottom);\n rotation = PI * 0.5;\n }\n maxWidth = bottom - top;\n }\n return {titleX, titleY, maxWidth, rotation};\n }\n draw() {\n const ctx = this.ctx;\n const opts = this.options;\n if (!opts.display) {\n return;\n }\n const fontOpts = toFont(opts.font);\n const lineHeight = fontOpts.lineHeight;\n const offset = lineHeight / 2 + this._padding.top;\n const {titleX, titleY, maxWidth, rotation} = this._drawArgs(offset);\n renderText(ctx, opts.text, 0, 0, fontOpts, {\n color: opts.color,\n maxWidth,\n rotation,\n textAlign: _toLeftRightCenter(opts.align),\n textBaseline: 'middle',\n translation: [titleX, titleY],\n });\n }\n}\nfunction createTitle(chart, titleOpts) {\n const title = new Title({\n ctx: chart.ctx,\n options: titleOpts,\n chart\n });\n layouts.configure(chart, title, titleOpts);\n layouts.addBox(chart, title);\n chart.titleBlock = title;\n}\nvar plugin_title = {\n id: 'title',\n _element: Title,\n start(chart, _args, options) {\n createTitle(chart, options);\n },\n stop(chart) {\n const titleBlock = chart.titleBlock;\n layouts.removeBox(chart, titleBlock);\n delete chart.titleBlock;\n },\n beforeUpdate(chart, _args, options) {\n const title = chart.titleBlock;\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'bold',\n },\n fullSize: true,\n padding: 10,\n position: 'top',\n text: '',\n weight: 2000\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false,\n },\n};\n\nconst map = new WeakMap();\nvar plugin_subtitle = {\n id: 'subtitle',\n start(chart, _args, options) {\n const title = new Title({\n ctx: chart.ctx,\n options,\n chart\n });\n layouts.configure(chart, title, options);\n layouts.addBox(chart, title);\n map.set(chart, title);\n },\n stop(chart) {\n layouts.removeBox(chart, map.get(chart));\n map.delete(chart);\n },\n beforeUpdate(chart, _args, options) {\n const title = map.get(chart);\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'normal',\n },\n fullSize: true,\n padding: 0,\n position: 'top',\n text: '',\n weight: 1500\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false,\n },\n};\n\nconst positioners = {\n average(items) {\n if (!items.length) {\n return false;\n }\n let i, len;\n let x = 0;\n let y = 0;\n let count = 0;\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const pos = el.tooltipPosition();\n x += pos.x;\n y += pos.y;\n ++count;\n }\n }\n return {\n x: x / count,\n y: y / count\n };\n },\n nearest(items, eventPosition) {\n if (!items.length) {\n return false;\n }\n let x = eventPosition.x;\n let y = eventPosition.y;\n let minDistance = Number.POSITIVE_INFINITY;\n let i, len, nearestElement;\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const center = el.getCenterPoint();\n const d = distanceBetweenPoints(eventPosition, center);\n if (d < minDistance) {\n minDistance = d;\n nearestElement = el;\n }\n }\n }\n if (nearestElement) {\n const tp = nearestElement.tooltipPosition();\n x = tp.x;\n y = tp.y;\n }\n return {\n x,\n y\n };\n }\n};\nfunction pushOrConcat(base, toPush) {\n if (toPush) {\n if (isArray(toPush)) {\n Array.prototype.push.apply(base, toPush);\n } else {\n base.push(toPush);\n }\n }\n return base;\n}\nfunction splitNewlines(str) {\n if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n return str.split('\\n');\n }\n return str;\n}\nfunction createTooltipItem(chart, item) {\n const {element, datasetIndex, index} = item;\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n const {label, value} = controller.getLabelAndValue(index);\n return {\n chart,\n label,\n parsed: controller.getParsed(index),\n raw: chart.data.datasets[datasetIndex].data[index],\n formattedValue: value,\n dataset: controller.getDataset(),\n dataIndex: index,\n datasetIndex,\n element\n };\n}\nfunction getTooltipSize(tooltip, options) {\n const ctx = tooltip.chart.ctx;\n const {body, footer, title} = tooltip;\n const {boxWidth, boxHeight} = options;\n const bodyFont = toFont(options.bodyFont);\n const titleFont = toFont(options.titleFont);\n const footerFont = toFont(options.footerFont);\n const titleLineCount = title.length;\n const footerLineCount = footer.length;\n const bodyLineItemCount = body.length;\n const padding = toPadding(options.padding);\n let height = padding.height;\n let width = 0;\n let combinedBodyLength = body.reduce((count, bodyItem) => count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 0);\n combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length;\n if (titleLineCount) {\n height += titleLineCount * titleFont.lineHeight\n\t\t\t+ (titleLineCount - 1) * options.titleSpacing\n\t\t\t+ options.titleMarginBottom;\n }\n if (combinedBodyLength) {\n const bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight;\n height += bodyLineItemCount * bodyLineHeight\n\t\t\t+ (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight\n\t\t\t+ (combinedBodyLength - 1) * options.bodySpacing;\n }\n if (footerLineCount) {\n height += options.footerMarginTop\n\t\t\t+ footerLineCount * footerFont.lineHeight\n\t\t\t+ (footerLineCount - 1) * options.footerSpacing;\n }\n let widthPadding = 0;\n const maxLineWidth = function(line) {\n width = Math.max(width, ctx.measureText(line).width + widthPadding);\n };\n ctx.save();\n ctx.font = titleFont.string;\n each(tooltip.title, maxLineWidth);\n ctx.font = bodyFont.string;\n each(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth);\n widthPadding = options.displayColors ? (boxWidth + 2 + options.boxPadding) : 0;\n each(body, (bodyItem) => {\n each(bodyItem.before, maxLineWidth);\n each(bodyItem.lines, maxLineWidth);\n each(bodyItem.after, maxLineWidth);\n });\n widthPadding = 0;\n ctx.font = footerFont.string;\n each(tooltip.footer, maxLineWidth);\n ctx.restore();\n width += padding.width;\n return {width, height};\n}\nfunction determineYAlign(chart, size) {\n const {y, height} = size;\n if (y < height / 2) {\n return 'top';\n } else if (y > (chart.height - height / 2)) {\n return 'bottom';\n }\n return 'center';\n}\nfunction doesNotFitWithAlign(xAlign, chart, options, size) {\n const {x, width} = size;\n const caret = options.caretSize + options.caretPadding;\n if (xAlign === 'left' && x + width + caret > chart.width) {\n return true;\n }\n if (xAlign === 'right' && x - width - caret < 0) {\n return true;\n }\n}\nfunction determineXAlign(chart, options, size, yAlign) {\n const {x, width} = size;\n const {width: chartWidth, chartArea: {left, right}} = chart;\n let xAlign = 'center';\n if (yAlign === 'center') {\n xAlign = x <= (left + right) / 2 ? 'left' : 'right';\n } else if (x <= width / 2) {\n xAlign = 'left';\n } else if (x >= chartWidth - width / 2) {\n xAlign = 'right';\n }\n if (doesNotFitWithAlign(xAlign, chart, options, size)) {\n xAlign = 'center';\n }\n return xAlign;\n}\nfunction determineAlignment(chart, options, size) {\n const yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size);\n return {\n xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign),\n yAlign\n };\n}\nfunction alignX(size, xAlign) {\n let {x, width} = size;\n if (xAlign === 'right') {\n x -= width;\n } else if (xAlign === 'center') {\n x -= (width / 2);\n }\n return x;\n}\nfunction alignY(size, yAlign, paddingAndSize) {\n let {y, height} = size;\n if (yAlign === 'top') {\n y += paddingAndSize;\n } else if (yAlign === 'bottom') {\n y -= height + paddingAndSize;\n } else {\n y -= (height / 2);\n }\n return y;\n}\nfunction getBackgroundPoint(options, size, alignment, chart) {\n const {caretSize, caretPadding, cornerRadius} = options;\n const {xAlign, yAlign} = alignment;\n const paddingAndSize = caretSize + caretPadding;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n let x = alignX(size, xAlign);\n const y = alignY(size, yAlign, paddingAndSize);\n if (yAlign === 'center') {\n if (xAlign === 'left') {\n x += paddingAndSize;\n } else if (xAlign === 'right') {\n x -= paddingAndSize;\n }\n } else if (xAlign === 'left') {\n x -= Math.max(topLeft, bottomLeft) + caretSize;\n } else if (xAlign === 'right') {\n x += Math.max(topRight, bottomRight) + caretSize;\n }\n return {\n x: _limitValue(x, 0, chart.width - size.width),\n y: _limitValue(y, 0, chart.height - size.height)\n };\n}\nfunction getAlignedX(tooltip, align, options) {\n const padding = toPadding(options.padding);\n return align === 'center'\n ? tooltip.x + tooltip.width / 2\n : align === 'right'\n ? tooltip.x + tooltip.width - padding.right\n : tooltip.x + padding.left;\n}\nfunction getBeforeAfterBodyLines(callback) {\n return pushOrConcat([], splitNewlines(callback));\n}\nfunction createTooltipContext(parent, tooltip, tooltipItems) {\n return createContext(parent, {\n tooltip,\n tooltipItems,\n type: 'tooltip'\n });\n}\nfunction overrideCallbacks(callbacks, context) {\n const override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks;\n return override ? callbacks.override(override) : callbacks;\n}\nclass Tooltip extends Element {\n constructor(config) {\n super();\n this.opacity = 0;\n this._active = [];\n this._eventPosition = undefined;\n this._size = undefined;\n this._cachedAnimations = undefined;\n this._tooltipItems = [];\n this.$animations = undefined;\n this.$context = undefined;\n this.chart = config.chart || config._chart;\n this._chart = this.chart;\n this.options = config.options;\n this.dataPoints = undefined;\n this.title = undefined;\n this.beforeBody = undefined;\n this.body = undefined;\n this.afterBody = undefined;\n this.footer = undefined;\n this.xAlign = undefined;\n this.yAlign = undefined;\n this.x = undefined;\n this.y = undefined;\n this.height = undefined;\n this.width = undefined;\n this.caretX = undefined;\n this.caretY = undefined;\n this.labelColors = undefined;\n this.labelPointStyles = undefined;\n this.labelTextColors = undefined;\n }\n initialize(options) {\n this.options = options;\n this._cachedAnimations = undefined;\n this.$context = undefined;\n }\n _resolveAnimations() {\n const cached = this._cachedAnimations;\n if (cached) {\n return cached;\n }\n const chart = this.chart;\n const options = this.options.setContext(this.getContext());\n const opts = options.enabled && chart.options.animation && options.animations;\n const animations = new Animations(this.chart, opts);\n if (opts._cacheable) {\n this._cachedAnimations = Object.freeze(animations);\n }\n return animations;\n }\n getContext() {\n return this.$context ||\n\t\t\t(this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems));\n }\n getTitle(context, options) {\n const {callbacks} = options;\n const beforeTitle = callbacks.beforeTitle.apply(this, [context]);\n const title = callbacks.title.apply(this, [context]);\n const afterTitle = callbacks.afterTitle.apply(this, [context]);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeTitle));\n lines = pushOrConcat(lines, splitNewlines(title));\n lines = pushOrConcat(lines, splitNewlines(afterTitle));\n return lines;\n }\n getBeforeBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(options.callbacks.beforeBody.apply(this, [tooltipItems]));\n }\n getBody(tooltipItems, options) {\n const {callbacks} = options;\n const bodyItems = [];\n each(tooltipItems, (context) => {\n const bodyItem = {\n before: [],\n lines: [],\n after: []\n };\n const scoped = overrideCallbacks(callbacks, context);\n pushOrConcat(bodyItem.before, splitNewlines(scoped.beforeLabel.call(this, context)));\n pushOrConcat(bodyItem.lines, scoped.label.call(this, context));\n pushOrConcat(bodyItem.after, splitNewlines(scoped.afterLabel.call(this, context)));\n bodyItems.push(bodyItem);\n });\n return bodyItems;\n }\n getAfterBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(options.callbacks.afterBody.apply(this, [tooltipItems]));\n }\n getFooter(tooltipItems, options) {\n const {callbacks} = options;\n const beforeFooter = callbacks.beforeFooter.apply(this, [tooltipItems]);\n const footer = callbacks.footer.apply(this, [tooltipItems]);\n const afterFooter = callbacks.afterFooter.apply(this, [tooltipItems]);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeFooter));\n lines = pushOrConcat(lines, splitNewlines(footer));\n lines = pushOrConcat(lines, splitNewlines(afterFooter));\n return lines;\n }\n _createItems(options) {\n const active = this._active;\n const data = this.chart.data;\n const labelColors = [];\n const labelPointStyles = [];\n const labelTextColors = [];\n let tooltipItems = [];\n let i, len;\n for (i = 0, len = active.length; i < len; ++i) {\n tooltipItems.push(createTooltipItem(this.chart, active[i]));\n }\n if (options.filter) {\n tooltipItems = tooltipItems.filter((element, index, array) => options.filter(element, index, array, data));\n }\n if (options.itemSort) {\n tooltipItems = tooltipItems.sort((a, b) => options.itemSort(a, b, data));\n }\n each(tooltipItems, (context) => {\n const scoped = overrideCallbacks(options.callbacks, context);\n labelColors.push(scoped.labelColor.call(this, context));\n labelPointStyles.push(scoped.labelPointStyle.call(this, context));\n labelTextColors.push(scoped.labelTextColor.call(this, context));\n });\n this.labelColors = labelColors;\n this.labelPointStyles = labelPointStyles;\n this.labelTextColors = labelTextColors;\n this.dataPoints = tooltipItems;\n return tooltipItems;\n }\n update(changed, replay) {\n const options = this.options.setContext(this.getContext());\n const active = this._active;\n let properties;\n let tooltipItems = [];\n if (!active.length) {\n if (this.opacity !== 0) {\n properties = {\n opacity: 0\n };\n }\n } else {\n const position = positioners[options.position].call(this, active, this._eventPosition);\n tooltipItems = this._createItems(options);\n this.title = this.getTitle(tooltipItems, options);\n this.beforeBody = this.getBeforeBody(tooltipItems, options);\n this.body = this.getBody(tooltipItems, options);\n this.afterBody = this.getAfterBody(tooltipItems, options);\n this.footer = this.getFooter(tooltipItems, options);\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, size);\n const alignment = determineAlignment(this.chart, options, positionAndSize);\n const backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, this.chart);\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n properties = {\n opacity: 1,\n x: backgroundPoint.x,\n y: backgroundPoint.y,\n width: size.width,\n height: size.height,\n caretX: position.x,\n caretY: position.y\n };\n }\n this._tooltipItems = tooltipItems;\n this.$context = undefined;\n if (properties) {\n this._resolveAnimations().update(this, properties);\n }\n if (changed && options.external) {\n options.external.call(this, {chart: this.chart, tooltip: this, replay});\n }\n }\n drawCaret(tooltipPoint, ctx, size, options) {\n const caretPosition = this.getCaretPosition(tooltipPoint, size, options);\n ctx.lineTo(caretPosition.x1, caretPosition.y1);\n ctx.lineTo(caretPosition.x2, caretPosition.y2);\n ctx.lineTo(caretPosition.x3, caretPosition.y3);\n }\n getCaretPosition(tooltipPoint, size, options) {\n const {xAlign, yAlign} = this;\n const {caretSize, cornerRadius} = options;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n const {x: ptX, y: ptY} = tooltipPoint;\n const {width, height} = size;\n let x1, x2, x3, y1, y2, y3;\n if (yAlign === 'center') {\n y2 = ptY + (height / 2);\n if (xAlign === 'left') {\n x1 = ptX;\n x2 = x1 - caretSize;\n y1 = y2 + caretSize;\n y3 = y2 - caretSize;\n } else {\n x1 = ptX + width;\n x2 = x1 + caretSize;\n y1 = y2 - caretSize;\n y3 = y2 + caretSize;\n }\n x3 = x1;\n } else {\n if (xAlign === 'left') {\n x2 = ptX + Math.max(topLeft, bottomLeft) + (caretSize);\n } else if (xAlign === 'right') {\n x2 = ptX + width - Math.max(topRight, bottomRight) - caretSize;\n } else {\n x2 = this.caretX;\n }\n if (yAlign === 'top') {\n y1 = ptY;\n y2 = y1 - caretSize;\n x1 = x2 - caretSize;\n x3 = x2 + caretSize;\n } else {\n y1 = ptY + height;\n y2 = y1 + caretSize;\n x1 = x2 + caretSize;\n x3 = x2 - caretSize;\n }\n y3 = y1;\n }\n return {x1, x2, x3, y1, y2, y3};\n }\n drawTitle(pt, ctx, options) {\n const title = this.title;\n const length = title.length;\n let titleFont, titleSpacing, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.titleAlign, options);\n ctx.textAlign = rtlHelper.textAlign(options.titleAlign);\n ctx.textBaseline = 'middle';\n titleFont = toFont(options.titleFont);\n titleSpacing = options.titleSpacing;\n ctx.fillStyle = options.titleColor;\n ctx.font = titleFont.string;\n for (i = 0; i < length; ++i) {\n ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2);\n pt.y += titleFont.lineHeight + titleSpacing;\n if (i + 1 === length) {\n pt.y += options.titleMarginBottom - titleSpacing;\n }\n }\n }\n }\n _drawColorBox(ctx, pt, i, rtlHelper, options) {\n const labelColors = this.labelColors[i];\n const labelPointStyle = this.labelPointStyles[i];\n const {boxHeight, boxWidth, boxPadding} = options;\n const bodyFont = toFont(options.bodyFont);\n const colorX = getAlignedX(this, 'left', options);\n const rtlColorX = rtlHelper.x(colorX);\n const yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0;\n const colorY = pt.y + yOffSet;\n if (options.usePointStyle) {\n const drawOptions = {\n radius: Math.min(boxWidth, boxHeight) / 2,\n pointStyle: labelPointStyle.pointStyle,\n rotation: labelPointStyle.rotation,\n borderWidth: 1\n };\n const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2;\n const centerY = colorY + boxHeight / 2;\n ctx.strokeStyle = options.multiKeyBackground;\n ctx.fillStyle = options.multiKeyBackground;\n drawPoint(ctx, drawOptions, centerX, centerY);\n ctx.strokeStyle = labelColors.borderColor;\n ctx.fillStyle = labelColors.backgroundColor;\n drawPoint(ctx, drawOptions, centerX, centerY);\n } else {\n ctx.lineWidth = isObject(labelColors.borderWidth) ? Math.max(...Object.values(labelColors.borderWidth)) : (labelColors.borderWidth || 1);\n ctx.strokeStyle = labelColors.borderColor;\n ctx.setLineDash(labelColors.borderDash || []);\n ctx.lineDashOffset = labelColors.borderDashOffset || 0;\n const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth - boxPadding);\n const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - boxPadding - 2);\n const borderRadius = toTRBLCorners(labelColors.borderRadius);\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n ctx.fillStyle = options.multiKeyBackground;\n addRoundedRectPath(ctx, {\n x: outerX,\n y: colorY,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius,\n });\n ctx.fill();\n ctx.stroke();\n ctx.fillStyle = labelColors.backgroundColor;\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: innerX,\n y: colorY + 1,\n w: boxWidth - 2,\n h: boxHeight - 2,\n radius: borderRadius,\n });\n ctx.fill();\n } else {\n ctx.fillStyle = options.multiKeyBackground;\n ctx.fillRect(outerX, colorY, boxWidth, boxHeight);\n ctx.strokeRect(outerX, colorY, boxWidth, boxHeight);\n ctx.fillStyle = labelColors.backgroundColor;\n ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2);\n }\n }\n ctx.fillStyle = this.labelTextColors[i];\n }\n drawBody(pt, ctx, options) {\n const {body} = this;\n const {bodySpacing, bodyAlign, displayColors, boxHeight, boxWidth, boxPadding} = options;\n const bodyFont = toFont(options.bodyFont);\n let bodyLineHeight = bodyFont.lineHeight;\n let xLinePadding = 0;\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n const fillLineOfText = function(line) {\n ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2);\n pt.y += bodyLineHeight + bodySpacing;\n };\n const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n let bodyItem, textColor, lines, i, j, ilen, jlen;\n ctx.textAlign = bodyAlign;\n ctx.textBaseline = 'middle';\n ctx.font = bodyFont.string;\n pt.x = getAlignedX(this, bodyAlignForCalculation, options);\n ctx.fillStyle = options.bodyColor;\n each(this.beforeBody, fillLineOfText);\n xLinePadding = displayColors && bodyAlignForCalculation !== 'right'\n ? bodyAlign === 'center' ? (boxWidth / 2 + boxPadding) : (boxWidth + 2 + boxPadding)\n : 0;\n for (i = 0, ilen = body.length; i < ilen; ++i) {\n bodyItem = body[i];\n textColor = this.labelTextColors[i];\n ctx.fillStyle = textColor;\n each(bodyItem.before, fillLineOfText);\n lines = bodyItem.lines;\n if (displayColors && lines.length) {\n this._drawColorBox(ctx, pt, i, rtlHelper, options);\n bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight);\n }\n for (j = 0, jlen = lines.length; j < jlen; ++j) {\n fillLineOfText(lines[j]);\n bodyLineHeight = bodyFont.lineHeight;\n }\n each(bodyItem.after, fillLineOfText);\n }\n xLinePadding = 0;\n bodyLineHeight = bodyFont.lineHeight;\n each(this.afterBody, fillLineOfText);\n pt.y -= bodySpacing;\n }\n drawFooter(pt, ctx, options) {\n const footer = this.footer;\n const length = footer.length;\n let footerFont, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.footerAlign, options);\n pt.y += options.footerMarginTop;\n ctx.textAlign = rtlHelper.textAlign(options.footerAlign);\n ctx.textBaseline = 'middle';\n footerFont = toFont(options.footerFont);\n ctx.fillStyle = options.footerColor;\n ctx.font = footerFont.string;\n for (i = 0; i < length; ++i) {\n ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2);\n pt.y += footerFont.lineHeight + options.footerSpacing;\n }\n }\n }\n drawBackground(pt, ctx, tooltipSize, options) {\n const {xAlign, yAlign} = this;\n const {x, y} = pt;\n const {width, height} = tooltipSize;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(options.cornerRadius);\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.beginPath();\n ctx.moveTo(x + topLeft, y);\n if (yAlign === 'top') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width - topRight, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + topRight);\n if (yAlign === 'center' && xAlign === 'right') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width, y + height - bottomRight);\n ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRight, y + height);\n if (yAlign === 'bottom') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + bottomLeft, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeft);\n if (yAlign === 'center' && xAlign === 'left') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x, y + topLeft);\n ctx.quadraticCurveTo(x, y, x + topLeft, y);\n ctx.closePath();\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n }\n _updateAnimationTarget(options) {\n const chart = this.chart;\n const anims = this.$animations;\n const animX = anims && anims.x;\n const animY = anims && anims.y;\n if (animX || animY) {\n const position = positioners[options.position].call(this, this._active, this._eventPosition);\n if (!position) {\n return;\n }\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, this._size);\n const alignment = determineAlignment(chart, options, positionAndSize);\n const point = getBackgroundPoint(options, positionAndSize, alignment, chart);\n if (animX._to !== point.x || animY._to !== point.y) {\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n this.width = size.width;\n this.height = size.height;\n this.caretX = position.x;\n this.caretY = position.y;\n this._resolveAnimations().update(this, point);\n }\n }\n }\n _willRender() {\n return !!this.opacity;\n }\n draw(ctx) {\n const options = this.options.setContext(this.getContext());\n let opacity = this.opacity;\n if (!opacity) {\n return;\n }\n this._updateAnimationTarget(options);\n const tooltipSize = {\n width: this.width,\n height: this.height\n };\n const pt = {\n x: this.x,\n y: this.y\n };\n opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity;\n const padding = toPadding(options.padding);\n const hasTooltipContent = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length;\n if (options.enabled && hasTooltipContent) {\n ctx.save();\n ctx.globalAlpha = opacity;\n this.drawBackground(pt, ctx, tooltipSize, options);\n overrideTextDirection(ctx, options.textDirection);\n pt.y += padding.top;\n this.drawTitle(pt, ctx, options);\n this.drawBody(pt, ctx, options);\n this.drawFooter(pt, ctx, options);\n restoreTextDirection(ctx, options.textDirection);\n ctx.restore();\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements, eventPosition) {\n const lastActive = this._active;\n const active = activeElements.map(({datasetIndex, index}) => {\n const meta = this.chart.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('Cannot find a dataset at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index,\n };\n });\n const changed = !_elementsEqual(lastActive, active);\n const positionChanged = this._positionChanged(active, eventPosition);\n if (changed || positionChanged) {\n this._active = active;\n this._eventPosition = eventPosition;\n this._ignoreReplayEvents = true;\n this.update(true);\n }\n }\n handleEvent(e, replay, inChartArea = true) {\n if (replay && this._ignoreReplayEvents) {\n return false;\n }\n this._ignoreReplayEvents = false;\n const options = this.options;\n const lastActive = this._active || [];\n const active = this._getActiveElements(e, lastActive, replay, inChartArea);\n const positionChanged = this._positionChanged(active, e);\n const changed = replay || !_elementsEqual(active, lastActive) || positionChanged;\n if (changed) {\n this._active = active;\n if (options.enabled || options.external) {\n this._eventPosition = {\n x: e.x,\n y: e.y\n };\n this.update(true, replay);\n }\n }\n return changed;\n }\n _getActiveElements(e, lastActive, replay, inChartArea) {\n const options = this.options;\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay);\n if (options.reverse) {\n active.reverse();\n }\n return active;\n }\n _positionChanged(active, e) {\n const {caretX, caretY, options} = this;\n const position = positioners[options.position].call(this, active, e);\n return position !== false && (caretX !== position.x || caretY !== position.y);\n }\n}\nTooltip.positioners = positioners;\nvar plugin_tooltip = {\n id: 'tooltip',\n _element: Tooltip,\n positioners,\n afterInit(chart, _args, options) {\n if (options) {\n chart.tooltip = new Tooltip({chart, options});\n }\n },\n beforeUpdate(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n reset(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n afterDraw(chart) {\n const tooltip = chart.tooltip;\n if (tooltip && tooltip._willRender()) {\n const args = {\n tooltip\n };\n if (chart.notifyPlugins('beforeTooltipDraw', args) === false) {\n return;\n }\n tooltip.draw(chart.ctx);\n chart.notifyPlugins('afterTooltipDraw', args);\n }\n },\n afterEvent(chart, args) {\n if (chart.tooltip) {\n const useFinalPosition = args.replay;\n if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) {\n args.changed = true;\n }\n }\n },\n defaults: {\n enabled: true,\n external: null,\n position: 'average',\n backgroundColor: 'rgba(0,0,0,0.8)',\n titleColor: '#fff',\n titleFont: {\n weight: 'bold',\n },\n titleSpacing: 2,\n titleMarginBottom: 6,\n titleAlign: 'left',\n bodyColor: '#fff',\n bodySpacing: 2,\n bodyFont: {\n },\n bodyAlign: 'left',\n footerColor: '#fff',\n footerSpacing: 2,\n footerMarginTop: 6,\n footerFont: {\n weight: 'bold',\n },\n footerAlign: 'left',\n padding: 6,\n caretPadding: 2,\n caretSize: 5,\n cornerRadius: 6,\n boxHeight: (ctx, opts) => opts.bodyFont.size,\n boxWidth: (ctx, opts) => opts.bodyFont.size,\n multiKeyBackground: '#fff',\n displayColors: true,\n boxPadding: 0,\n borderColor: 'rgba(0,0,0,0)',\n borderWidth: 0,\n animation: {\n duration: 400,\n easing: 'easeOutQuart',\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'width', 'height', 'caretX', 'caretY'],\n },\n opacity: {\n easing: 'linear',\n duration: 200\n }\n },\n callbacks: {\n beforeTitle: noop,\n title(tooltipItems) {\n if (tooltipItems.length > 0) {\n const item = tooltipItems[0];\n const labels = item.chart.data.labels;\n const labelCount = labels ? labels.length : 0;\n if (this && this.options && this.options.mode === 'dataset') {\n return item.dataset.label || '';\n } else if (item.label) {\n return item.label;\n } else if (labelCount > 0 && item.dataIndex < labelCount) {\n return labels[item.dataIndex];\n }\n }\n return '';\n },\n afterTitle: noop,\n beforeBody: noop,\n beforeLabel: noop,\n label(tooltipItem) {\n if (this && this.options && this.options.mode === 'dataset') {\n return tooltipItem.label + ': ' + tooltipItem.formattedValue || tooltipItem.formattedValue;\n }\n let label = tooltipItem.dataset.label || '';\n if (label) {\n label += ': ';\n }\n const value = tooltipItem.formattedValue;\n if (!isNullOrUndef(value)) {\n label += value;\n }\n return label;\n },\n labelColor(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n borderColor: options.borderColor,\n backgroundColor: options.backgroundColor,\n borderWidth: options.borderWidth,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderRadius: 0,\n };\n },\n labelTextColor() {\n return this.options.bodyColor;\n },\n labelPointStyle(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n pointStyle: options.pointStyle,\n rotation: options.rotation,\n };\n },\n afterLabel: noop,\n afterBody: noop,\n beforeFooter: noop,\n footer: noop,\n afterFooter: noop\n }\n },\n defaultRoutes: {\n bodyFont: 'font',\n footerFont: 'font',\n titleFont: 'font'\n },\n descriptors: {\n _scriptable: (name) => name !== 'filter' && name !== 'itemSort' && name !== 'external',\n _indexable: false,\n callbacks: {\n _scriptable: false,\n _indexable: false,\n },\n animation: {\n _fallback: false\n },\n animations: {\n _fallback: 'animation'\n }\n },\n additionalOptionScopes: ['interaction']\n};\n\nvar plugins = /*#__PURE__*/Object.freeze({\n__proto__: null,\nDecimation: plugin_decimation,\nFiller: index,\nLegend: plugin_legend,\nSubTitle: plugin_subtitle,\nTitle: plugin_title,\nTooltip: plugin_tooltip\n});\n\nconst addIfString = (labels, raw, index, addedLabels) => {\n if (typeof raw === 'string') {\n index = labels.push(raw) - 1;\n addedLabels.unshift({index, label: raw});\n } else if (isNaN(raw)) {\n index = null;\n }\n return index;\n};\nfunction findOrAddLabel(labels, raw, index, addedLabels) {\n const first = labels.indexOf(raw);\n if (first === -1) {\n return addIfString(labels, raw, index, addedLabels);\n }\n const last = labels.lastIndexOf(raw);\n return first !== last ? index : first;\n}\nconst validIndex = (index, max) => index === null ? null : _limitValue(Math.round(index), 0, max);\nclass CategoryScale extends Scale {\n constructor(cfg) {\n super(cfg);\n this._startValue = undefined;\n this._valueRange = 0;\n this._addedLabels = [];\n }\n init(scaleOptions) {\n const added = this._addedLabels;\n if (added.length) {\n const labels = this.getLabels();\n for (const {index, label} of added) {\n if (labels[index] === label) {\n labels.splice(index, 1);\n }\n }\n this._addedLabels = [];\n }\n super.init(scaleOptions);\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n const labels = this.getLabels();\n index = isFinite(index) && labels[index] === raw ? index\n : findOrAddLabel(labels, raw, valueOrDefault(index, raw), this._addedLabels);\n return validIndex(index, labels.length - 1);\n }\n determineDataLimits() {\n const {minDefined, maxDefined} = this.getUserBounds();\n let {min, max} = this.getMinMax(true);\n if (this.options.bounds === 'ticks') {\n if (!minDefined) {\n min = 0;\n }\n if (!maxDefined) {\n max = this.getLabels().length - 1;\n }\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const min = this.min;\n const max = this.max;\n const offset = this.options.offset;\n const ticks = [];\n let labels = this.getLabels();\n labels = (min === 0 && max === labels.length - 1) ? labels : labels.slice(min, max + 1);\n this._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1);\n this._startValue = this.min - (offset ? 0.5 : 0);\n for (let value = min; value <= max; value++) {\n ticks.push({value});\n }\n return ticks;\n }\n getLabelForValue(value) {\n const labels = this.getLabels();\n if (value >= 0 && value < labels.length) {\n return labels[value];\n }\n return value;\n }\n configure() {\n super.configure();\n if (!this.isHorizontal()) {\n this._reversePixels = !this._reversePixels;\n }\n }\n getPixelForValue(value) {\n if (typeof value !== 'number') {\n value = this.parse(value);\n }\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getValueForPixel(pixel) {\n return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange);\n }\n getBasePixel() {\n return this.bottom;\n }\n}\nCategoryScale.id = 'category';\nCategoryScale.defaults = {\n ticks: {\n callback: CategoryScale.prototype.getLabelForValue\n }\n};\n\nfunction generateTicks$1(generationOptions, dataRange) {\n const ticks = [];\n const MIN_SPACING = 1e-14;\n const {bounds, step, min, max, precision, count, maxTicks, maxDigits, includeBounds} = generationOptions;\n const unit = step || 1;\n const maxSpaces = maxTicks - 1;\n const {min: rmin, max: rmax} = dataRange;\n const minDefined = !isNullOrUndef(min);\n const maxDefined = !isNullOrUndef(max);\n const countDefined = !isNullOrUndef(count);\n const minSpacing = (rmax - rmin) / (maxDigits + 1);\n let spacing = niceNum((rmax - rmin) / maxSpaces / unit) * unit;\n let factor, niceMin, niceMax, numSpaces;\n if (spacing < MIN_SPACING && !minDefined && !maxDefined) {\n return [{value: rmin}, {value: rmax}];\n }\n numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n if (numSpaces > maxSpaces) {\n spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit;\n }\n if (!isNullOrUndef(precision)) {\n factor = Math.pow(10, precision);\n spacing = Math.ceil(spacing * factor) / factor;\n }\n if (bounds === 'ticks') {\n niceMin = Math.floor(rmin / spacing) * spacing;\n niceMax = Math.ceil(rmax / spacing) * spacing;\n } else {\n niceMin = rmin;\n niceMax = rmax;\n }\n if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1000)) {\n numSpaces = Math.round(Math.min((max - min) / spacing, maxTicks));\n spacing = (max - min) / numSpaces;\n niceMin = min;\n niceMax = max;\n } else if (countDefined) {\n niceMin = minDefined ? min : niceMin;\n niceMax = maxDefined ? max : niceMax;\n numSpaces = count - 1;\n spacing = (niceMax - niceMin) / numSpaces;\n } else {\n numSpaces = (niceMax - niceMin) / spacing;\n if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n numSpaces = Math.round(numSpaces);\n } else {\n numSpaces = Math.ceil(numSpaces);\n }\n }\n const decimalPlaces = Math.max(\n _decimalPlaces(spacing),\n _decimalPlaces(niceMin)\n );\n factor = Math.pow(10, isNullOrUndef(precision) ? decimalPlaces : precision);\n niceMin = Math.round(niceMin * factor) / factor;\n niceMax = Math.round(niceMax * factor) / factor;\n let j = 0;\n if (minDefined) {\n if (includeBounds && niceMin !== min) {\n ticks.push({value: min});\n if (niceMin < min) {\n j++;\n }\n if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) {\n j++;\n }\n } else if (niceMin < min) {\n j++;\n }\n }\n for (; j < numSpaces; ++j) {\n ticks.push({value: Math.round((niceMin + j * spacing) * factor) / factor});\n }\n if (maxDefined && includeBounds && niceMax !== max) {\n if (ticks.length && almostEquals(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) {\n ticks[ticks.length - 1].value = max;\n } else {\n ticks.push({value: max});\n }\n } else if (!maxDefined || niceMax === max) {\n ticks.push({value: niceMax});\n }\n return ticks;\n}\nfunction relativeLabelSize(value, minSpacing, {horizontal, minRotation}) {\n const rad = toRadians(minRotation);\n const ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 0.001;\n const length = 0.75 * minSpacing * ('' + value).length;\n return Math.min(minSpacing / ratio, length);\n}\nclass LinearScaleBase extends Scale {\n constructor(cfg) {\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._endValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n if ((typeof raw === 'number' || raw instanceof Number) && !isFinite(+raw)) {\n return null;\n }\n return +raw;\n }\n handleTickRangeOptions() {\n const {beginAtZero} = this.options;\n const {minDefined, maxDefined} = this.getUserBounds();\n let {min, max} = this;\n const setMin = v => (min = minDefined ? min : v);\n const setMax = v => (max = maxDefined ? max : v);\n if (beginAtZero) {\n const minSign = sign(min);\n const maxSign = sign(max);\n if (minSign < 0 && maxSign < 0) {\n setMax(0);\n } else if (minSign > 0 && maxSign > 0) {\n setMin(0);\n }\n }\n if (min === max) {\n let offset = 1;\n if (max >= Number.MAX_SAFE_INTEGER || min <= Number.MIN_SAFE_INTEGER) {\n offset = Math.abs(max * 0.05);\n }\n setMax(max + offset);\n if (!beginAtZero) {\n setMin(min - offset);\n }\n }\n this.min = min;\n this.max = max;\n }\n getTickLimit() {\n const tickOpts = this.options.ticks;\n let {maxTicksLimit, stepSize} = tickOpts;\n let maxTicks;\n if (stepSize) {\n maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1;\n if (maxTicks > 1000) {\n console.warn(`scales.${this.id}.ticks.stepSize: ${stepSize} would result generating up to ${maxTicks} ticks. Limiting to 1000.`);\n maxTicks = 1000;\n }\n } else {\n maxTicks = this.computeTickLimit();\n maxTicksLimit = maxTicksLimit || 11;\n }\n if (maxTicksLimit) {\n maxTicks = Math.min(maxTicksLimit, maxTicks);\n }\n return maxTicks;\n }\n computeTickLimit() {\n return Number.POSITIVE_INFINITY;\n }\n buildTicks() {\n const opts = this.options;\n const tickOpts = opts.ticks;\n let maxTicks = this.getTickLimit();\n maxTicks = Math.max(2, maxTicks);\n const numericGeneratorOptions = {\n maxTicks,\n bounds: opts.bounds,\n min: opts.min,\n max: opts.max,\n precision: tickOpts.precision,\n step: tickOpts.stepSize,\n count: tickOpts.count,\n maxDigits: this._maxDigits(),\n horizontal: this.isHorizontal(),\n minRotation: tickOpts.minRotation || 0,\n includeBounds: tickOpts.includeBounds !== false\n };\n const dataRange = this._range || this;\n const ticks = generateTicks$1(numericGeneratorOptions, dataRange);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n configure() {\n const ticks = this.ticks;\n let start = this.min;\n let end = this.max;\n super.configure();\n if (this.options.offset && ticks.length) {\n const offset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\n start -= offset;\n end += offset;\n }\n this._startValue = start;\n this._endValue = end;\n this._valueRange = end - start;\n }\n getLabelForValue(value) {\n return formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n}\n\nclass LinearScale extends LinearScaleBase {\n determineDataLimits() {\n const {min, max} = this.getMinMax(true);\n this.min = isNumberFinite(min) ? min : 0;\n this.max = isNumberFinite(max) ? max : 1;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n const horizontal = this.isHorizontal();\n const length = horizontal ? this.width : this.height;\n const minRotation = toRadians(this.options.ticks.minRotation);\n const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 0.001;\n const tickFont = this._resolveTickFontOptions(0);\n return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio));\n }\n getPixelForValue(value) {\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n }\n}\nLinearScale.id = 'linear';\nLinearScale.defaults = {\n ticks: {\n callback: Ticks.formatters.numeric\n }\n};\n\nfunction isMajor(tickVal) {\n const remain = tickVal / (Math.pow(10, Math.floor(log10(tickVal))));\n return remain === 1;\n}\nfunction generateTicks(generationOptions, dataRange) {\n const endExp = Math.floor(log10(dataRange.max));\n const endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp));\n const ticks = [];\n let tickVal = finiteOrDefault(generationOptions.min, Math.pow(10, Math.floor(log10(dataRange.min))));\n let exp = Math.floor(log10(tickVal));\n let significand = Math.floor(tickVal / Math.pow(10, exp));\n let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n do {\n ticks.push({value: tickVal, major: isMajor(tickVal)});\n ++significand;\n if (significand === 10) {\n significand = 1;\n ++exp;\n precision = exp >= 0 ? 1 : precision;\n }\n tickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision;\n } while (exp < endExp || (exp === endExp && significand < endSignificand));\n const lastTick = finiteOrDefault(generationOptions.max, tickVal);\n ticks.push({value: lastTick, major: isMajor(tickVal)});\n return ticks;\n}\nclass LogarithmicScale extends Scale {\n constructor(cfg) {\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n const value = LinearScaleBase.prototype.parse.apply(this, [raw, index]);\n if (value === 0) {\n this._zero = true;\n return undefined;\n }\n return isNumberFinite(value) && value > 0 ? value : null;\n }\n determineDataLimits() {\n const {min, max} = this.getMinMax(true);\n this.min = isNumberFinite(min) ? Math.max(0, min) : null;\n this.max = isNumberFinite(max) ? Math.max(0, max) : null;\n if (this.options.beginAtZero) {\n this._zero = true;\n }\n this.handleTickRangeOptions();\n }\n handleTickRangeOptions() {\n const {minDefined, maxDefined} = this.getUserBounds();\n let min = this.min;\n let max = this.max;\n const setMin = v => (min = minDefined ? min : v);\n const setMax = v => (max = maxDefined ? max : v);\n const exp = (v, m) => Math.pow(10, Math.floor(log10(v)) + m);\n if (min === max) {\n if (min <= 0) {\n setMin(1);\n setMax(10);\n } else {\n setMin(exp(min, -1));\n setMax(exp(max, +1));\n }\n }\n if (min <= 0) {\n setMin(exp(max, -1));\n }\n if (max <= 0) {\n setMax(exp(min, +1));\n }\n if (this._zero && this.min !== this._suggestedMin && min === exp(this.min, 0)) {\n setMin(exp(min, -1));\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const opts = this.options;\n const generationOptions = {\n min: this._userMin,\n max: this._userMax\n };\n const ticks = generateTicks(generationOptions, this);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n getLabelForValue(value) {\n return value === undefined\n ? '0'\n : formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n configure() {\n const start = this.min;\n super.configure();\n this._startValue = log10(start);\n this._valueRange = log10(this.max) - log10(start);\n }\n getPixelForValue(value) {\n if (value === undefined || value === 0) {\n value = this.min;\n }\n if (value === null || isNaN(value)) {\n return NaN;\n }\n return this.getPixelForDecimal(value === this.min\n ? 0\n : (log10(value) - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n const decimal = this.getDecimalForPixel(pixel);\n return Math.pow(10, this._startValue + decimal * this._valueRange);\n }\n}\nLogarithmicScale.id = 'logarithmic';\nLogarithmicScale.defaults = {\n ticks: {\n callback: Ticks.formatters.logarithmic,\n major: {\n enabled: true\n }\n }\n};\n\nfunction getTickBackdropHeight(opts) {\n const tickOpts = opts.ticks;\n if (tickOpts.display && opts.display) {\n const padding = toPadding(tickOpts.backdropPadding);\n return valueOrDefault(tickOpts.font && tickOpts.font.size, defaults.font.size) + padding.height;\n }\n return 0;\n}\nfunction measureLabelSize(ctx, font, label) {\n label = isArray(label) ? label : [label];\n return {\n w: _longestText(ctx, font.string, label),\n h: label.length * font.lineHeight\n };\n}\nfunction determineLimits(angle, pos, size, min, max) {\n if (angle === min || angle === max) {\n return {\n start: pos - (size / 2),\n end: pos + (size / 2)\n };\n } else if (angle < min || angle > max) {\n return {\n start: pos - size,\n end: pos\n };\n }\n return {\n start: pos,\n end: pos + size\n };\n}\nfunction fitWithPointLabels(scale) {\n const orig = {\n l: scale.left + scale._padding.left,\n r: scale.right - scale._padding.right,\n t: scale.top + scale._padding.top,\n b: scale.bottom - scale._padding.bottom\n };\n const limits = Object.assign({}, orig);\n const labelSizes = [];\n const padding = [];\n const valueCount = scale._pointLabels.length;\n const pointLabelOpts = scale.options.pointLabels;\n const additionalAngle = pointLabelOpts.centerPointLabels ? PI / valueCount : 0;\n for (let i = 0; i < valueCount; i++) {\n const opts = pointLabelOpts.setContext(scale.getPointLabelContext(i));\n padding[i] = opts.padding;\n const pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle);\n const plFont = toFont(opts.font);\n const textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]);\n labelSizes[i] = textSize;\n const angleRadians = _normalizeAngle(scale.getIndexAngle(i) + additionalAngle);\n const angle = Math.round(toDegrees(angleRadians));\n const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n const vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n updateLimits(limits, orig, angleRadians, hLimits, vLimits);\n }\n scale.setCenterPoint(\n orig.l - limits.l,\n limits.r - orig.r,\n orig.t - limits.t,\n limits.b - orig.b\n );\n scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding);\n}\nfunction updateLimits(limits, orig, angle, hLimits, vLimits) {\n const sin = Math.abs(Math.sin(angle));\n const cos = Math.abs(Math.cos(angle));\n let x = 0;\n let y = 0;\n if (hLimits.start < orig.l) {\n x = (orig.l - hLimits.start) / sin;\n limits.l = Math.min(limits.l, orig.l - x);\n } else if (hLimits.end > orig.r) {\n x = (hLimits.end - orig.r) / sin;\n limits.r = Math.max(limits.r, orig.r + x);\n }\n if (vLimits.start < orig.t) {\n y = (orig.t - vLimits.start) / cos;\n limits.t = Math.min(limits.t, orig.t - y);\n } else if (vLimits.end > orig.b) {\n y = (vLimits.end - orig.b) / cos;\n limits.b = Math.max(limits.b, orig.b + y);\n }\n}\nfunction buildPointLabelItems(scale, labelSizes, padding) {\n const items = [];\n const valueCount = scale._pointLabels.length;\n const opts = scale.options;\n const extra = getTickBackdropHeight(opts) / 2;\n const outerDistance = scale.drawingArea;\n const additionalAngle = opts.pointLabels.centerPointLabels ? PI / valueCount : 0;\n for (let i = 0; i < valueCount; i++) {\n const pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + padding[i], additionalAngle);\n const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));\n const size = labelSizes[i];\n const y = yForAngle(pointLabelPosition.y, size.h, angle);\n const textAlign = getTextAlignForAngle(angle);\n const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign);\n items.push({\n x: pointLabelPosition.x,\n y,\n textAlign,\n left,\n top: y,\n right: left + size.w,\n bottom: y + size.h\n });\n }\n return items;\n}\nfunction getTextAlignForAngle(angle) {\n if (angle === 0 || angle === 180) {\n return 'center';\n } else if (angle < 180) {\n return 'left';\n }\n return 'right';\n}\nfunction leftForTextAlign(x, w, align) {\n if (align === 'right') {\n x -= w;\n } else if (align === 'center') {\n x -= (w / 2);\n }\n return x;\n}\nfunction yForAngle(y, h, angle) {\n if (angle === 90 || angle === 270) {\n y -= (h / 2);\n } else if (angle > 270 || angle < 90) {\n y -= h;\n }\n return y;\n}\nfunction drawPointLabels(scale, labelCount) {\n const {ctx, options: {pointLabels}} = scale;\n for (let i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i));\n const plFont = toFont(optsAtIndex.font);\n const {x, y, textAlign, left, top, right, bottom} = scale._pointLabelItems[i];\n const {backdropColor} = optsAtIndex;\n if (!isNullOrUndef(backdropColor)) {\n const borderRadius = toTRBLCorners(optsAtIndex.borderRadius);\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillStyle = backdropColor;\n const backdropLeft = left - padding.left;\n const backdropTop = top - padding.top;\n const backdropWidth = right - left + padding.width;\n const backdropHeight = bottom - top + padding.height;\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: backdropLeft,\n y: backdropTop,\n w: backdropWidth,\n h: backdropHeight,\n radius: borderRadius,\n });\n ctx.fill();\n } else {\n ctx.fillRect(backdropLeft, backdropTop, backdropWidth, backdropHeight);\n }\n }\n renderText(\n ctx,\n scale._pointLabels[i],\n x,\n y + (plFont.lineHeight / 2),\n plFont,\n {\n color: optsAtIndex.color,\n textAlign: textAlign,\n textBaseline: 'middle'\n }\n );\n }\n}\nfunction pathRadiusLine(scale, radius, circular, labelCount) {\n const {ctx} = scale;\n if (circular) {\n ctx.arc(scale.xCenter, scale.yCenter, radius, 0, TAU);\n } else {\n let pointPosition = scale.getPointPosition(0, radius);\n ctx.moveTo(pointPosition.x, pointPosition.y);\n for (let i = 1; i < labelCount; i++) {\n pointPosition = scale.getPointPosition(i, radius);\n ctx.lineTo(pointPosition.x, pointPosition.y);\n }\n }\n}\nfunction drawRadiusLine(scale, gridLineOpts, radius, labelCount) {\n const ctx = scale.ctx;\n const circular = gridLineOpts.circular;\n const {color, lineWidth} = gridLineOpts;\n if ((!circular && !labelCount) || !color || !lineWidth || radius < 0) {\n return;\n }\n ctx.save();\n ctx.strokeStyle = color;\n ctx.lineWidth = lineWidth;\n ctx.setLineDash(gridLineOpts.borderDash);\n ctx.lineDashOffset = gridLineOpts.borderDashOffset;\n ctx.beginPath();\n pathRadiusLine(scale, radius, circular, labelCount);\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n}\nfunction createPointLabelContext(parent, index, label) {\n return createContext(parent, {\n label,\n index,\n type: 'pointLabel'\n });\n}\nclass RadialLinearScale extends LinearScaleBase {\n constructor(cfg) {\n super(cfg);\n this.xCenter = undefined;\n this.yCenter = undefined;\n this.drawingArea = undefined;\n this._pointLabels = [];\n this._pointLabelItems = [];\n }\n setDimensions() {\n const padding = this._padding = toPadding(getTickBackdropHeight(this.options) / 2);\n const w = this.width = this.maxWidth - padding.width;\n const h = this.height = this.maxHeight - padding.height;\n this.xCenter = Math.floor(this.left + w / 2 + padding.left);\n this.yCenter = Math.floor(this.top + h / 2 + padding.top);\n this.drawingArea = Math.floor(Math.min(w, h) / 2);\n }\n determineDataLimits() {\n const {min, max} = this.getMinMax(false);\n this.min = isNumberFinite(min) && !isNaN(min) ? min : 0;\n this.max = isNumberFinite(max) && !isNaN(max) ? max : 0;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n }\n generateTickLabels(ticks) {\n LinearScaleBase.prototype.generateTickLabels.call(this, ticks);\n this._pointLabels = this.getLabels()\n .map((value, index) => {\n const label = callback(this.options.pointLabels.callback, [value, index], this);\n return label || label === 0 ? label : '';\n })\n .filter((v, i) => this.chart.getDataVisibility(i));\n }\n fit() {\n const opts = this.options;\n if (opts.display && opts.pointLabels.display) {\n fitWithPointLabels(this);\n } else {\n this.setCenterPoint(0, 0, 0, 0);\n }\n }\n setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) {\n this.xCenter += Math.floor((leftMovement - rightMovement) / 2);\n this.yCenter += Math.floor((topMovement - bottomMovement) / 2);\n this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(leftMovement, rightMovement, topMovement, bottomMovement));\n }\n getIndexAngle(index) {\n const angleMultiplier = TAU / (this._pointLabels.length || 1);\n const startAngle = this.options.startAngle || 0;\n return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));\n }\n getDistanceFromCenterForValue(value) {\n if (isNullOrUndef(value)) {\n return NaN;\n }\n const scalingFactor = this.drawingArea / (this.max - this.min);\n if (this.options.reverse) {\n return (this.max - value) * scalingFactor;\n }\n return (value - this.min) * scalingFactor;\n }\n getValueForDistanceFromCenter(distance) {\n if (isNullOrUndef(distance)) {\n return NaN;\n }\n const scaledDistance = distance / (this.drawingArea / (this.max - this.min));\n return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance;\n }\n getPointLabelContext(index) {\n const pointLabels = this._pointLabels || [];\n if (index >= 0 && index < pointLabels.length) {\n const pointLabel = pointLabels[index];\n return createPointLabelContext(this.getContext(), index, pointLabel);\n }\n }\n getPointPosition(index, distanceFromCenter, additionalAngle = 0) {\n const angle = this.getIndexAngle(index) - HALF_PI + additionalAngle;\n return {\n x: Math.cos(angle) * distanceFromCenter + this.xCenter,\n y: Math.sin(angle) * distanceFromCenter + this.yCenter,\n angle\n };\n }\n getPointPositionForValue(index, value) {\n return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n }\n getBasePosition(index) {\n return this.getPointPositionForValue(index || 0, this.getBaseValue());\n }\n getPointLabelPosition(index) {\n const {left, top, right, bottom} = this._pointLabelItems[index];\n return {\n left,\n top,\n right,\n bottom,\n };\n }\n drawBackground() {\n const {backgroundColor, grid: {circular}} = this.options;\n if (backgroundColor) {\n const ctx = this.ctx;\n ctx.save();\n ctx.beginPath();\n pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this._pointLabels.length);\n ctx.closePath();\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n }\n drawGrid() {\n const ctx = this.ctx;\n const opts = this.options;\n const {angleLines, grid} = opts;\n const labelCount = this._pointLabels.length;\n let i, offset, position;\n if (opts.pointLabels.display) {\n drawPointLabels(this, labelCount);\n }\n if (grid.display) {\n this.ticks.forEach((tick, index) => {\n if (index !== 0) {\n offset = this.getDistanceFromCenterForValue(tick.value);\n const optsAtIndex = grid.setContext(this.getContext(index - 1));\n drawRadiusLine(this, optsAtIndex, offset, labelCount);\n }\n });\n }\n if (angleLines.display) {\n ctx.save();\n for (i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i));\n const {color, lineWidth} = optsAtIndex;\n if (!lineWidth || !color) {\n continue;\n }\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = color;\n ctx.setLineDash(optsAtIndex.borderDash);\n ctx.lineDashOffset = optsAtIndex.borderDashOffset;\n offset = this.getDistanceFromCenterForValue(opts.ticks.reverse ? this.min : this.max);\n position = this.getPointPosition(i, offset);\n ctx.beginPath();\n ctx.moveTo(this.xCenter, this.yCenter);\n ctx.lineTo(position.x, position.y);\n ctx.stroke();\n }\n ctx.restore();\n }\n }\n drawBorder() {}\n drawLabels() {\n const ctx = this.ctx;\n const opts = this.options;\n const tickOpts = opts.ticks;\n if (!tickOpts.display) {\n return;\n }\n const startAngle = this.getIndexAngle(0);\n let offset, width;\n ctx.save();\n ctx.translate(this.xCenter, this.yCenter);\n ctx.rotate(startAngle);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n this.ticks.forEach((tick, index) => {\n if (index === 0 && !opts.reverse) {\n return;\n }\n const optsAtIndex = tickOpts.setContext(this.getContext(index));\n const tickFont = toFont(optsAtIndex.font);\n offset = this.getDistanceFromCenterForValue(this.ticks[index].value);\n if (optsAtIndex.showLabelBackdrop) {\n ctx.font = tickFont.string;\n width = ctx.measureText(tick.label).width;\n ctx.fillStyle = optsAtIndex.backdropColor;\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillRect(\n -width / 2 - padding.left,\n -offset - tickFont.size / 2 - padding.top,\n width + padding.width,\n tickFont.size + padding.height\n );\n }\n renderText(ctx, tick.label, 0, -offset, tickFont, {\n color: optsAtIndex.color,\n });\n });\n ctx.restore();\n }\n drawTitle() {}\n}\nRadialLinearScale.id = 'radialLinear';\nRadialLinearScale.defaults = {\n display: true,\n animate: true,\n position: 'chartArea',\n angleLines: {\n display: true,\n lineWidth: 1,\n borderDash: [],\n borderDashOffset: 0.0\n },\n grid: {\n circular: false\n },\n startAngle: 0,\n ticks: {\n showLabelBackdrop: true,\n callback: Ticks.formatters.numeric\n },\n pointLabels: {\n backdropColor: undefined,\n backdropPadding: 2,\n display: true,\n font: {\n size: 10\n },\n callback(label) {\n return label;\n },\n padding: 5,\n centerPointLabels: false\n }\n};\nRadialLinearScale.defaultRoutes = {\n 'angleLines.color': 'borderColor',\n 'pointLabels.color': 'color',\n 'ticks.color': 'color'\n};\nRadialLinearScale.descriptors = {\n angleLines: {\n _fallback: 'grid'\n }\n};\n\nconst INTERVALS = {\n millisecond: {common: true, size: 1, steps: 1000},\n second: {common: true, size: 1000, steps: 60},\n minute: {common: true, size: 60000, steps: 60},\n hour: {common: true, size: 3600000, steps: 24},\n day: {common: true, size: 86400000, steps: 30},\n week: {common: false, size: 604800000, steps: 4},\n month: {common: true, size: 2.628e9, steps: 12},\n quarter: {common: false, size: 7.884e9, steps: 4},\n year: {common: true, size: 3.154e10}\n};\nconst UNITS = (Object.keys(INTERVALS));\nfunction sorter(a, b) {\n return a - b;\n}\nfunction parse(scale, input) {\n if (isNullOrUndef(input)) {\n return null;\n }\n const adapter = scale._adapter;\n const {parser, round, isoWeekday} = scale._parseOpts;\n let value = input;\n if (typeof parser === 'function') {\n value = parser(value);\n }\n if (!isNumberFinite(value)) {\n value = typeof parser === 'string'\n ? adapter.parse(value, parser)\n : adapter.parse(value);\n }\n if (value === null) {\n return null;\n }\n if (round) {\n value = round === 'week' && (isNumber(isoWeekday) || isoWeekday === true)\n ? adapter.startOf(value, 'isoWeek', isoWeekday)\n : adapter.startOf(value, round);\n }\n return +value;\n}\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\n const ilen = UNITS.length;\n for (let i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\n const interval = INTERVALS[UNITS[i]];\n const factor = interval.steps ? interval.steps : Number.MAX_SAFE_INTEGER;\n if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n return UNITS[i];\n }\n }\n return UNITS[ilen - 1];\n}\nfunction determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\n for (let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) {\n const unit = UNITS[i];\n if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n return unit;\n }\n }\n return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\nfunction determineMajorUnit(unit) {\n for (let i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\n if (INTERVALS[UNITS[i]].common) {\n return UNITS[i];\n }\n }\n}\nfunction addTick(ticks, time, timestamps) {\n if (!timestamps) {\n ticks[time] = true;\n } else if (timestamps.length) {\n const {lo, hi} = _lookup(timestamps, time);\n const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi];\n ticks[timestamp] = true;\n }\n}\nfunction setMajorTicks(scale, ticks, map, majorUnit) {\n const adapter = scale._adapter;\n const first = +adapter.startOf(ticks[0].value, majorUnit);\n const last = ticks[ticks.length - 1].value;\n let major, index;\n for (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) {\n index = map[major];\n if (index >= 0) {\n ticks[index].major = true;\n }\n }\n return ticks;\n}\nfunction ticksFromTimestamps(scale, values, majorUnit) {\n const ticks = [];\n const map = {};\n const ilen = values.length;\n let i, value;\n for (i = 0; i < ilen; ++i) {\n value = values[i];\n map[value] = i;\n ticks.push({\n value,\n major: false\n });\n }\n return (ilen === 0 || !majorUnit) ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n}\nclass TimeScale extends Scale {\n constructor(props) {\n super(props);\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n this._unit = 'day';\n this._majorUnit = undefined;\n this._offsets = {};\n this._normalized = false;\n this._parseOpts = undefined;\n }\n init(scaleOpts, opts) {\n const time = scaleOpts.time || (scaleOpts.time = {});\n const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date);\n adapter.init(opts);\n mergeIf(time.displayFormats, adapter.formats());\n this._parseOpts = {\n parser: time.parser,\n round: time.round,\n isoWeekday: time.isoWeekday\n };\n super.init(scaleOpts);\n this._normalized = opts.normalized;\n }\n parse(raw, index) {\n if (raw === undefined) {\n return null;\n }\n return parse(this, raw);\n }\n beforeLayout() {\n super.beforeLayout();\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n }\n determineDataLimits() {\n const options = this.options;\n const adapter = this._adapter;\n const unit = options.time.unit || 'day';\n let {min, max, minDefined, maxDefined} = this.getUserBounds();\n function _applyBounds(bounds) {\n if (!minDefined && !isNaN(bounds.min)) {\n min = Math.min(min, bounds.min);\n }\n if (!maxDefined && !isNaN(bounds.max)) {\n max = Math.max(max, bounds.max);\n }\n }\n if (!minDefined || !maxDefined) {\n _applyBounds(this._getLabelBounds());\n if (options.bounds !== 'ticks' || options.ticks.source !== 'labels') {\n _applyBounds(this.getMinMax(false));\n }\n }\n min = isNumberFinite(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit);\n max = isNumberFinite(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1;\n this.min = Math.min(min, max - 1);\n this.max = Math.max(min + 1, max);\n }\n _getLabelBounds() {\n const arr = this.getLabelTimestamps();\n let min = Number.POSITIVE_INFINITY;\n let max = Number.NEGATIVE_INFINITY;\n if (arr.length) {\n min = arr[0];\n max = arr[arr.length - 1];\n }\n return {min, max};\n }\n buildTicks() {\n const options = this.options;\n const timeOpts = options.time;\n const tickOpts = options.ticks;\n const timestamps = tickOpts.source === 'labels' ? this.getLabelTimestamps() : this._generate();\n if (options.bounds === 'ticks' && timestamps.length) {\n this.min = this._userMin || timestamps[0];\n this.max = this._userMax || timestamps[timestamps.length - 1];\n }\n const min = this.min;\n const max = this.max;\n const ticks = _filterBetween(timestamps, min, max);\n this._unit = timeOpts.unit || (tickOpts.autoSkip\n ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min))\n : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max));\n this._majorUnit = !tickOpts.major.enabled || this._unit === 'year' ? undefined\n : determineMajorUnit(this._unit);\n this.initOffsets(timestamps);\n if (options.reverse) {\n ticks.reverse();\n }\n return ticksFromTimestamps(this, ticks, this._majorUnit);\n }\n afterAutoSkip() {\n if (this.options.offsetAfterAutoskip) {\n this.initOffsets(this.ticks.map(tick => +tick.value));\n }\n }\n initOffsets(timestamps) {\n let start = 0;\n let end = 0;\n let first, last;\n if (this.options.offset && timestamps.length) {\n first = this.getDecimalForValue(timestamps[0]);\n if (timestamps.length === 1) {\n start = 1 - first;\n } else {\n start = (this.getDecimalForValue(timestamps[1]) - first) / 2;\n }\n last = this.getDecimalForValue(timestamps[timestamps.length - 1]);\n if (timestamps.length === 1) {\n end = last;\n } else {\n end = (last - this.getDecimalForValue(timestamps[timestamps.length - 2])) / 2;\n }\n }\n const limit = timestamps.length < 3 ? 0.5 : 0.25;\n start = _limitValue(start, 0, limit);\n end = _limitValue(end, 0, limit);\n this._offsets = {start, end, factor: 1 / (start + 1 + end)};\n }\n _generate() {\n const adapter = this._adapter;\n const min = this.min;\n const max = this.max;\n const options = this.options;\n const timeOpts = options.time;\n const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min));\n const stepSize = valueOrDefault(timeOpts.stepSize, 1);\n const weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n const hasWeekday = isNumber(weekday) || weekday === true;\n const ticks = {};\n let first = min;\n let time, count;\n if (hasWeekday) {\n first = +adapter.startOf(first, 'isoWeek', weekday);\n }\n first = +adapter.startOf(first, hasWeekday ? 'day' : minor);\n if (adapter.diff(max, min, minor) > 100000 * stepSize) {\n throw new Error(min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor);\n }\n const timestamps = options.ticks.source === 'data' && this.getDataTimestamps();\n for (time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++) {\n addTick(ticks, time, timestamps);\n }\n if (time === max || options.bounds === 'ticks' || count === 1) {\n addTick(ticks, time, timestamps);\n }\n return Object.keys(ticks).sort((a, b) => a - b).map(x => +x);\n }\n getLabelForValue(value) {\n const adapter = this._adapter;\n const timeOpts = this.options.time;\n if (timeOpts.tooltipFormat) {\n return adapter.format(value, timeOpts.tooltipFormat);\n }\n return adapter.format(value, timeOpts.displayFormats.datetime);\n }\n _tickFormatFunction(time, index, ticks, format) {\n const options = this.options;\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const majorUnit = this._majorUnit;\n const minorFormat = unit && formats[unit];\n const majorFormat = majorUnit && formats[majorUnit];\n const tick = ticks[index];\n const major = majorUnit && majorFormat && tick && tick.major;\n const label = this._adapter.format(time, format || (major ? majorFormat : minorFormat));\n const formatter = options.ticks.callback;\n return formatter ? callback(formatter, [label, index, ticks], this) : label;\n }\n generateTickLabels(ticks) {\n let i, ilen, tick;\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n tick.label = this._tickFormatFunction(tick.value, i, ticks);\n }\n }\n getDecimalForValue(value) {\n return value === null ? NaN : (value - this.min) / (this.max - this.min);\n }\n getPixelForValue(value) {\n const offsets = this._offsets;\n const pos = this.getDecimalForValue(value);\n return this.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const pos = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return this.min + pos * (this.max - this.min);\n }\n _getLabelSize(label) {\n const ticksOpts = this.options.ticks;\n const tickLabelWidth = this.ctx.measureText(label).width;\n const angle = toRadians(this.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n const cosRotation = Math.cos(angle);\n const sinRotation = Math.sin(angle);\n const tickFontSize = this._resolveTickFontOptions(0).size;\n return {\n w: (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation),\n h: (tickLabelWidth * sinRotation) + (tickFontSize * cosRotation)\n };\n }\n _getLabelCapacity(exampleTime) {\n const timeOpts = this.options.time;\n const displayFormats = timeOpts.displayFormats;\n const format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n const exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [exampleTime], this._majorUnit), format);\n const size = this._getLabelSize(exampleLabel);\n const capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1;\n return capacity > 0 ? capacity : 1;\n }\n getDataTimestamps() {\n let timestamps = this._cache.data || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const metas = this.getMatchingVisibleMetas();\n if (this._normalized && metas.length) {\n return (this._cache.data = metas[0].controller.getAllParsedValues(this));\n }\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this));\n }\n return (this._cache.data = this.normalize(timestamps));\n }\n getLabelTimestamps() {\n const timestamps = this._cache.labels || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const labels = this.getLabels();\n for (i = 0, ilen = labels.length; i < ilen; ++i) {\n timestamps.push(parse(this, labels[i]));\n }\n return (this._cache.labels = this._normalized ? timestamps : this.normalize(timestamps));\n }\n normalize(values) {\n return _arrayUnique(values.sort(sorter));\n }\n}\nTimeScale.id = 'time';\nTimeScale.defaults = {\n bounds: 'data',\n adapters: {},\n time: {\n parser: false,\n unit: false,\n round: false,\n isoWeekday: false,\n minUnit: 'millisecond',\n displayFormats: {}\n },\n ticks: {\n source: 'auto',\n major: {\n enabled: false\n }\n }\n};\n\nfunction interpolate(table, val, reverse) {\n let lo = 0;\n let hi = table.length - 1;\n let prevSource, nextSource, prevTarget, nextTarget;\n if (reverse) {\n if (val >= table[lo].pos && val <= table[hi].pos) {\n ({lo, hi} = _lookupByKey(table, 'pos', val));\n }\n ({pos: prevSource, time: prevTarget} = table[lo]);\n ({pos: nextSource, time: nextTarget} = table[hi]);\n } else {\n if (val >= table[lo].time && val <= table[hi].time) {\n ({lo, hi} = _lookupByKey(table, 'time', val));\n }\n ({time: prevSource, pos: prevTarget} = table[lo]);\n ({time: nextSource, pos: nextTarget} = table[hi]);\n }\n const span = nextSource - prevSource;\n return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget;\n}\nclass TimeSeriesScale extends TimeScale {\n constructor(props) {\n super(props);\n this._table = [];\n this._minPos = undefined;\n this._tableRange = undefined;\n }\n initOffsets() {\n const timestamps = this._getTimestampsForTable();\n const table = this._table = this.buildLookupTable(timestamps);\n this._minPos = interpolate(table, this.min);\n this._tableRange = interpolate(table, this.max) - this._minPos;\n super.initOffsets(timestamps);\n }\n buildLookupTable(timestamps) {\n const {min, max} = this;\n const items = [];\n const table = [];\n let i, ilen, prev, curr, next;\n for (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n curr = timestamps[i];\n if (curr >= min && curr <= max) {\n items.push(curr);\n }\n }\n if (items.length < 2) {\n return [\n {time: min, pos: 0},\n {time: max, pos: 1}\n ];\n }\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n next = items[i + 1];\n prev = items[i - 1];\n curr = items[i];\n if (Math.round((next + prev) / 2) !== curr) {\n table.push({time: curr, pos: i / (ilen - 1)});\n }\n }\n return table;\n }\n _getTimestampsForTable() {\n let timestamps = this._cache.all || [];\n if (timestamps.length) {\n return timestamps;\n }\n const data = this.getDataTimestamps();\n const label = this.getLabelTimestamps();\n if (data.length && label.length) {\n timestamps = this.normalize(data.concat(label));\n } else {\n timestamps = data.length ? data : label;\n }\n timestamps = this._cache.all = timestamps;\n return timestamps;\n }\n getDecimalForValue(value) {\n return (interpolate(this._table, value) - this._minPos) / this._tableRange;\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const decimal = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return interpolate(this._table, decimal * this._tableRange + this._minPos, true);\n }\n}\nTimeSeriesScale.id = 'timeseries';\nTimeSeriesScale.defaults = TimeScale.defaults;\n\nvar scales = /*#__PURE__*/Object.freeze({\n__proto__: null,\nCategoryScale: CategoryScale,\nLinearScale: LinearScale,\nLogarithmicScale: LogarithmicScale,\nRadialLinearScale: RadialLinearScale,\nTimeScale: TimeScale,\nTimeSeriesScale: TimeSeriesScale\n});\n\nconst registerables = [\n controllers,\n elements,\n plugins,\n scales,\n];\n\nexport { Animation, Animations, ArcElement, BarController, BarElement, BasePlatform, BasicPlatform, BubbleController, CategoryScale, Chart, DatasetController, plugin_decimation as Decimation, DomPlatform, DoughnutController, Element, index as Filler, Interaction, plugin_legend as Legend, LineController, LineElement, LinearScale, LogarithmicScale, PieController, PointElement, PolarAreaController, RadarController, RadialLinearScale, Scale, ScatterController, plugin_subtitle as SubTitle, Ticks, TimeScale, TimeSeriesScale, plugin_title as Title, plugin_tooltip as Tooltip, adapters as _adapters, _detectPlatform, animator, controllers, elements, layouts, plugins, registerables, registry, scales };\n","
\n
\n
\n \n
\n
\n
\n \n \n
\n
\n\n\n
\n
\n
\n {{ cycle }}\n
\n
\n
\n\n
\n \n {{ barChart }}\n \n
\n","import { AfterViewInit, Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { faPlayCircle } from '@fortawesome/pro-solid-svg-icons';\nimport { BarChartMetadata, DEFAULT_BAR_CHART_OPTIONS } from '@shared/charts/bar-chart/bar-chart.metadata';\nimport { UsanaChart } from '@shared/charts/chart';\nimport { DataViewer } from '@shared/data-view/data-view.decorator';\nimport { Chart, ChartConfiguration, ChartData } from 'chart.js';\n\n@Component({\n selector: 'u-bar-chart',\n templateUrl: './bar-chart.component.html',\n styleUrls: ['./bar-chart.component.scss'],\n})\nexport class BarChartComponent implements AfterViewInit, UsanaChart {\n readonly PLAY_CIRCLE_ICON = faPlayCircle;\n\n @Input() metadata: BarChartMetadata;\n @Input() data: ChartData;\n @Output() readonly paginate = new EventEmitter();\n\n @ViewChild('canvas', { static: false }) canvas: ElementRef;\n\n currentPage = 0;\n\n barChart: any;\n\n ngAfterViewInit() {\n if (this.metadata && this.data) {\n this.setMetadata(this.metadata);\n this.setData(this.data);\n this.renderChart();\n }\n }\n\n get isFirstPage() {\n return this.currentPage === 0;\n }\n\n get pageAmount() {\n return this.data ? this.data.labels.length : 0;\n }\n\n renderChart() {\n this.barChart = new Chart(this.canvas.nativeElement, { ...(this.metadata.options as ChartConfiguration) });\n }\n\n onChartClick() {}\n\n setData(data: ChartData) {\n if (data && this.metadata) {\n this.metadata.options.data = data;\n\n if (this.barChart) {\n this.barChart.destroy();\n this.renderChart();\n }\n }\n }\n\n setMetadata(metadata: BarChartMetadata) {\n // @ts-ignore\n this.metadata.options = { ...DEFAULT_BAR_CHART_OPTIONS, ...metadata.options };\n this.metadata.categories = metadata.categories;\n this.metadata.hasNextPage = metadata.hasNextPage;\n }\n\n paginateBack() {\n this.currentPage = this.currentPage - this.pageAmount;\n this.paginate.emit(this.currentPage);\n }\n\n paginateForward() {\n this.currentPage = this.currentPage + this.pageAmount;\n this.paginate.emit(this.currentPage);\n }\n\n trackByCycle(index, cycle) {\n return cycle;\n }\n\n trackByIndex(index) {\n return index;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TranslationModule } from '@common/translation/translation.module';\nimport { DataViewerComponent } from '@shared/data-view/data-view.decorator';\nimport { UsanaLoggingService } from '@usana/ux/common/logging';\nimport { CommonIconsModule } from '../../../../common/src/common-icons/common-icons.module';\nimport { BarChartComponent } from './bar-chart.component';\n\n@NgModule({\n declarations: [BarChartComponent],\n exports: [BarChartComponent],\n imports: [CommonModule, TranslationModule, CommonIconsModule],\n})\nexport class BarChartModule {\n constructor() {\n if (DataViewerComponent('stackedBar', BarChartComponent)) {\n // if this triggers it\n UsanaLoggingService.logMsg('stackedBar data view was defined multiple times', true);\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DataViewComponent } from './data-view.component';\n\n@NgModule({\n declarations: [DataViewComponent],\n exports: [DataViewComponent],\n imports: [CommonModule],\n})\nexport class DataViewModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TranslationModule } from '@common/translation/translation.module';\nimport { NgxsModule } from '@ngxs/store';\nimport { BarChartModule } from '@shared/charts/bar-chart/bar-chart.module';\nimport { DataViewModule } from '@shared/data-view/data-view.module';\nimport { LoadingSpinnerModule } from '@shared/loading-spinner/loading-spinner.module';\nimport { WidgetModule } from '@usana/ux/widget';\nimport { BarController, BarElement, CategoryScale, Chart, LinearScale, Tooltip } from 'chart.js';\nimport { BaoyingIconsModule } from '../../baoying-icons/baoying-icons.module';\nimport { BaoyingVolumeReportState } from '../state/baoying-volume-report.state';\nimport { BaoyingVolumeWidgetComponent } from './baoying-volume-widget.component';\n\n@NgModule({\n declarations: [BaoyingVolumeWidgetComponent],\n exports: [BaoyingVolumeWidgetComponent],\n imports: [\n CommonModule,\n WidgetModule,\n LoadingSpinnerModule,\n NgxsModule.forFeature([BaoyingVolumeReportState]),\n DataViewModule,\n BarChartModule,\n TranslationModule,\n BaoyingIconsModule,\n ],\n})\nexport class BaoyingVolumeWidgetModule {\n constructor() {\n Chart.register(LinearScale, Tooltip, CategoryScale, BarController, BarElement);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { HomeModule } from '@common/home/home.module';\nimport { ImportantDatesModule } from '@common/important-dates/important-dates.module';\nimport { NotificationWidgetModule } from '@common/notifications/notification-widget/notification-widget.module';\nimport { PacesetterWidgetModule } from '@common/pacesetter/pacesetter-widget.module';\nimport { TranslationModule } from '@common/translation/translation.module';\nimport { UsanaNewsModule } from '@common/usana-news/usana-news.module';\nimport { InterpolationPipeModule } from '@shared/pipes/interpolate/interpolate.module';\nimport { QuickLinksModule } from '@shared/quick-links/quick-links.module';\nimport { BaoyingFpvModule } from '../../../baoying-fpv/baoying-fpv.module';\nimport { BaoyingVolumeWidgetModule } from '../../../baoying-volume/baoying-volume-widget/baoying-volume-widget.module';\nimport { BaoyingHomePageComponent } from './baoying-home-page.component';\nimport { PcBlockedModalComponent } from './pc-blocked-modal/pc-blocked-modal.component';\n\n@NgModule({\n declarations: [BaoyingHomePageComponent, PcBlockedModalComponent],\n imports: [\n CommonModule,\n HomeModule,\n UsanaNewsModule,\n QuickLinksModule,\n PacesetterWidgetModule,\n ImportantDatesModule,\n InterpolationPipeModule,\n NotificationWidgetModule,\n BaoyingFpvModule,\n BaoyingVolumeWidgetModule,\n TranslationModule,\n ],\n exports: [BaoyingHomePageComponent],\n})\nexport class BaoyingHomePageModule {}\n","import { DatePipe } from '@angular/common';\nimport { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { ApplicationRef, DoBootstrap, LOCALE_ID, NgModule } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { HubCommonModule } from '@common/common.module';\nimport { WithCredentialsInterceptor } from '@common/interceptors/with-credentials.interceptor';\nimport { UsanaLocaleService } from '@common/services/locale.service';\nimport { NgxsReduxDevtoolsPluginModule } from '@ngxs/devtools-plugin';\nimport { NgxsModule } from '@ngxs/store';\nimport { ConfirmationModalModule } from '@shared/confirmation-modal/confirmation-modal.module';\nimport { FooterModule } from '@shared/footer/footer.module';\nimport { HubInterruptModule } from '@shared/hub-interrupt/hub-interrupt.module';\nimport { UsanaLoggerModule } from '@shared/logger/logger.module';\nimport { SideModalModule } from '@shared/side-modal/side-modal.module';\nimport { UsanaToastModule } from '@shared/toast/toast.module';\nimport { IMAGE_SERVICE_BACKEND_URL, IMAGE_SERVICE_PUBLIC_URL } from '@usana/ux/image-service-browser';\nimport { LOGIN_REALM } from '@usana/ux/sso-auth';\nimport { GRAPH_URL_TRANSLATION } from '@usana/ux/translations';\nimport { AppState } from '@usanaHub/app/state/app.state';\nimport { BsLocaleService } from 'ngx-bootstrap/datepicker';\nimport { environment } from '../../../../environments/environment';\nimport { CmsComponentService } from '../../../common/src/cms/services/cms-component.service';\nimport { AuthResponseInterceptor } from '../../../common/src/interceptors/auth-response.interceptor';\nimport { TranslationModule } from '../../../common/src/translation/translation.module';\nimport { BaoyingAppHubRoutingModule } from './baoying-app-hub-routing.module';\nimport { BaoyingHubComponent } from './baoying-app-hub/baoying-app-hub.component';\nimport { BaoyingHubLayoutComponent } from './baoying-app-hub/baoying-hub-layout/baoying-hub-layout.component';\nimport { BaoyingIconsModule } from './baoying-icons/baoying-icons.module';\nimport { BaoyingUplineLeaderReportModule } from './baoying-upline-leader-report/baoying-upline-leader-report.module';\nimport { BaoyingVolumeReportModule } from './baoying-volume/baoying-volume-report/baoying-volume-report.module';\nimport { CbecRedirectionService } from './cbec/cbec-redirection.service';\nimport { BAOYING_SUPPORTED_LOCALE_MAP } from './constants/baoying-supported-locales';\nimport { BaoyingHomePageModule } from './pages/home-page/baoying-home-page/baoying-home-page.module';\n\n@NgModule({\n declarations: [BaoyingHubComponent, BaoyingHubLayoutComponent],\n imports: [\n BrowserModule,\n NgxsModule.forRoot([AppState], {\n developmentMode: !environment.production,\n }),\n NgxsReduxDevtoolsPluginModule.forRoot(),\n UsanaLoggerModule,\n FooterModule,\n HttpClientModule,\n HubCommonModule,\n SideModalModule,\n UsanaToastModule,\n BaoyingVolumeReportModule,\n ConfirmationModalModule,\n BaoyingUplineLeaderReportModule,\n BaoyingHomePageModule,\n TranslationModule,\n HubInterruptModule,\n BaoyingAppHubRoutingModule,\n BaoyingIconsModule,\n ],\n providers: [\n BsLocaleService,\n DatePipe,\n [\n { provide: HTTP_INTERCEPTORS, useClass: WithCredentialsInterceptor, multi: true },\n { provide: HTTP_INTERCEPTORS, useClass: AuthResponseInterceptor, multi: true },\n ],\n { provide: LOCALE_ID, useValue: 'zh-CN' },\n {\n provide: LOGIN_REALM,\n useValue: 'baoying',\n },\n CbecRedirectionService,\n { provide: CmsComponentService, useClass: CmsComponentService },\n { provide: GRAPH_URL_TRANSLATION, useValue: environment.i18nServiceUrl + '/graphql' },\n { provide: IMAGE_SERVICE_BACKEND_URL, useValue: environment.imageServiceBackendUrl },\n { provide: IMAGE_SERVICE_PUBLIC_URL, useValue: environment.imageServicePublicUrl },\n ],\n})\nexport class BaoyingAppHubModule implements DoBootstrap {\n constructor(private localeService: UsanaLocaleService, cbecRedirectionService: CbecRedirectionService) {\n if (!cbecRedirectionService.isInitialized()) {\n console.log('failed to initialize the cbec redirection');\n }\n }\n\n ngDoBootstrap(appRef: ApplicationRef): void {\n appRef.bootstrap(BaoyingHubComponent);\n this.localeService.setLocaleMap(BAOYING_SUPPORTED_LOCALE_MAP);\n }\n}\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\nimport { environment } from '../../../environments/environment';\nimport { BaoyingAppHubModule } from './app/baoying-app-hub.module';\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic()\n .bootstrapModule(BaoyingAppHubModule)\n .catch(err => console.log(err));\n","export const AuthenticationConstants = {\n LOGIN_REDIRECT_URL: '/home',\n U2D_REDIRECT_URL: '/dotCom/myUsanaRedirect',\n BLACKLISTED_REDIRECT_URLS: ['/login', '/logoutSuccess', '/logout', '/u2dRedirect', '/needsPaperWorkRedirect'],\n TEMPLATE_PREFIX: 'authentication/',\n LEGACY_I18N_COOKIE_NAME: 'i18n.cookie.locale',\n LEGACY_SESSION_ID_COOKIE_NAME: 'HUB_SESSION_ID',\n DEFAULT_KEEP_ALIVE_INTERVAL: 5 * 60 * 1000, // 5 minutes\n};\n\nexport const USER_TYPE_PATTERN = /(AM|PC)/;\n","// eslint-disable-next-line max-classes-per-file\nimport { HttpParams } from '@angular/common/http';\nimport { AppUser, UserProfile } from '@common/authentication/model/user-profile';\nimport { LoginResponse } from '@usana/ux/sso-auth';\n\nexport class SwitchUser {\n public static readonly type = '[User Profile] SWITCH USER';\n\n constructor(public userId: string) {}\n}\n\nexport class SwitchUserSuccess {\n public static readonly type = '[User Profile] SWITCH USER SUCCESS';\n\n constructor(public loginResponse: LoginResponse) {}\n}\n\nexport class SwitchUserFailure {\n public static readonly type = '[User Profile] SWITCH USER FAILURE';\n\n constructor(public errorMessage: string) {}\n}\n\nexport class ClearSwitchUserAlertClicked {\n public static readonly type = '[User Profile] CLEAR SWITCH USER ALERT CLICKED';\n}\n\nexport class ReloadSwitchedUserClicked {\n public static readonly type = '[User Profile] RELOAD SWITCHED USER CLICKED';\n}\n\nexport class SwitchBack {\n public static readonly type = '[User Profile] SWITCH BACK';\n}\n\nexport class SetAppUser {\n static readonly type = '[User Profile] SET APP USER';\n\n constructor(public user: AppUser) {}\n}\n\nexport class ForceLoadUserProfile {\n static readonly type = '[User Profile] FORCE LOAD USER PROFILE';\n\n constructor(public withParams: HttpParams | { [param: string]: string | string[] }) {}\n}\n\nexport class SetUserProfile {\n static readonly type = '[User Profile] SET USER PROFILE';\n\n constructor(public userProfile: UserProfile) {}\n}\n\nexport class ForceLoadUserProfileFailure {\n static readonly type = '[User Profile] FORCE LOAD USER PROFILE FAILURE';\n\n constructor(public userProfile: UserProfile) {}\n}\n\nexport class EditUser {\n static readonly type = '[User Profile] EDIT APP USER';\n\n constructor(public userProps: Partial) {}\n}\n\nexport class EditUserProfile {\n static readonly type = '[User Profile] EDIT USER PROFILE';\n\n constructor(public profileProps: Partial) {}\n}\n\nexport class StartUserTimeout {\n static readonly type = '[User Profile] START USER TIMEOUT';\n}\n\nexport class NavigateToLogin {\n static readonly type = '[User Profile] NAVIGATE TO LOGIN';\n constructor(public redirectUrl?: string) {}\n}\n","export const DATE_PICKER_TEXT_FIELD_CONFIG = {\n dateInputFormat: 'MM/DD/YYYY',\n containerClass: 'theme-usana',\n showWeekNumbers: false,\n customTodayClass: 'today',\n isAnimated: false,\n adaptivePosition: true,\n};\n","import { FormatWidth, getLocaleDateFormat } from '@angular/common';\nimport { AppUser, UserProfile } from '@common/authentication/model/user-profile';\nimport { UserProfileState } from '@common/authentication/state/user-profile.state';\nimport { DATE_PICKER_TEXT_FIELD_CONFIG } from '@common/constants/date-picker-text-field-config';\nimport { Selector } from '@ngxs/store';\nimport { USER_TYPE_PATTERN } from '../authentication.constants';\nimport { SwitchUserAlert } from '../model/switch-user-alert';\n\nexport class UserProfileSelectors {\n @Selector([UserProfileState])\n static getUserProfile(state: UserProfile): UserProfile {\n return state;\n }\n\n @Selector([UserProfileSelectors.getUserProfile])\n static getUser(state: UserProfile): AppUser {\n return state?.user;\n }\n\n // removes the user type from the username. Ex: 111000AM -> 111000\n @Selector([UserProfileSelectors.getUser])\n static getBaseUsername(user: AppUser): string {\n return user.username?.replace(USER_TYPE_PATTERN, '');\n }\n\n @Selector([UserProfileState])\n static getLocale(state: UserProfile): string {\n return state.locale || 'en_US';\n }\n\n @Selector([UserProfileState])\n static getI18NLocale(state: UserProfile): string {\n return state.i18NLocalCode || 'en';\n }\n\n @Selector([UserProfileSelectors.getI18NLocale])\n static getLocalizedDatepickerConfig(locale: string): any {\n let config = DATE_PICKER_TEXT_FIELD_CONFIG;\n\n if (locale) {\n let localeDateFormat = getLocaleDateFormat(locale, FormatWidth.Medium);\n\n if (localeDateFormat) {\n // ngx-bootstrap only recogizes uppercase\n localeDateFormat = localeDateFormat.toLocaleUpperCase();\n\n config = {\n ...config,\n dateInputFormat: localeDateFormat,\n };\n }\n }\n\n return config;\n }\n\n @Selector([UserProfileSelectors.getBaseUsername])\n static getFirstBusinessCenterId(baseUsername: string): string {\n return baseUsername + '.001';\n }\n\n @Selector([UserProfileSelectors.getUser])\n static getUserHasBASAccess(userProfile: AppUser): boolean {\n let userHasBASAccess = false;\n\n if (userProfile && userProfile.authorities) {\n userHasBASAccess = userProfile.authorities.some((authority) => authority.authority === 'ROLE_DLM_ACCESS');\n }\n\n return userHasBASAccess;\n }\n\n @Selector([UserProfileSelectors.getUserProfile])\n static getSwitchUserAlert(state: UserProfile): SwitchUserAlert {\n return state?.switchUserAlert;\n }\n}\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { UserProfile } from '@common/authentication/model/user-profile';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UserProfileService {\n constructor(private http: HttpClient) {}\n\n /**\n * forces a reload from the backend.\n * @param withParams the httpParams to pass to the backend.\n */\n forceReload(withParams: HttpParams | { [param: string]: string | string[] }): Observable {\n return this.loadRequestAttrs(withParams);\n }\n\n /**\n * load request attrs from backend.\n * add the given params to the request.\n */\n private loadRequestAttrs(httpParams: HttpParams | { [param: string]: string | string[] }): Observable {\n return this.http.get('/mvc/cm/RequestAttrs', {\n headers: {\n 'Content-Type': 'application/json',\n 'Cache-Control': 'no-cache',\n },\n params: httpParams,\n });\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { NavigationStart, Router } from '@angular/router';\nimport { LOCATION_TOKEN } from '@usana/ux/common';\nimport { Observable, Subscription, timer } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { TIME_CONSTANTS_MS } from '../../constants/time.constants';\nimport { ESignPaperwork } from '../models/esign-paperwork.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PaperworkService {\n readonly PAPERWORK_CHECK_INTERVAL = TIME_CONSTANTS_MS.MINUTE * 5;\n paperworkTimer$ = timer(this.PAPERWORK_CHECK_INTERVAL, this.PAPERWORK_CHECK_INTERVAL);\n paperworkTimerElapsed = false;\n\n paperworkTimedSubscription: Subscription;\n paperworkNavigationSubscription: Subscription;\n\n activePaperwork: ESignPaperwork[];\n\n constructor(@Inject(LOCATION_TOKEN) private location: Location, private http: HttpClient, private router: Router) {}\n\n getPaperwork(): Observable {\n return this.http.get('/mvc/paperwork');\n }\n\n watchForPaperwork(): void {\n this.checkPaperwork();\n\n if (!this.paperworkTimedSubscription) {\n this.paperworkTimedSubscription = this.paperworkTimer$.subscribe(() => {\n this.paperworkTimerElapsed = true;\n });\n }\n\n if (!this.paperworkNavigationSubscription) {\n this.paperworkNavigationSubscription = this.router.events\n .pipe(filter((event) => event instanceof NavigationStart))\n .subscribe((_event) => {\n if (this.paperworkTimerElapsed) {\n this.checkPaperwork();\n this.paperworkTimerElapsed = false;\n }\n });\n }\n }\n\n checkPaperwork(): void {\n this.getPaperwork().subscribe((paperwork) => {\n paperwork.forEach((currentPaperwork) => {\n if (currentPaperwork.required) {\n const paperworkIdentifier = currentPaperwork.name + ':' + currentPaperwork.versionId;\n\n if (currentPaperwork.optional) {\n let optionalPaperworkDisplayed = sessionStorage.getItem('optionalPaperwork') || '';\n\n if (!optionalPaperworkDisplayed.includes(paperworkIdentifier)) {\n optionalPaperworkDisplayed += ';' + paperworkIdentifier;\n sessionStorage.setItem('optionalPaperwork', optionalPaperworkDisplayed);\n\n this.location.href = currentPaperwork.url;\n }\n } else {\n this.location.href = currentPaperwork.url;\n }\n }\n });\n });\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { UserProfile } from '@common/authentication/model/user-profile';\nimport { UserProfileService } from '@common/authentication/services/user-profile.service';\nimport { LoadEarningsOptInStatus } from '@common/cms/earnings-opt-in/state/earnings-opt-in.actions';\nimport { SetHomeWidgets } from '@common/home/state/home.actions';\nimport {\n LoadCurrentNotifications,\n LoadLoginInterruptNotifications,\n} from '@common/notifications/state/notification.actions';\nimport { UsanaLocaleService } from '@common/services/locale.service';\nimport { LoadSystemAlerts } from '@common/system-alerts/state/system-alerts.actions';\nimport { Action, State, StateContext } from '@ngxs/store';\nimport { PerformanceService } from '@shared/performance/performance.service';\nimport { LOCATION_TOKEN } from '@usana/ux/common';\nimport { LoginResponse, SsoAuthService } from '@usana/ux/sso-auth';\nimport { SsoSwitchUserService } from '@usana/ux/sso-auth/switch-user';\nimport { LoadImportantDates, SetSupportedMarkets } from '@usanaHub/app/state/app.actions';\nimport { getI18NLocalCode } from '@usanaHub/app/state/app.utils';\nimport cloneDeep from 'lodash/cloneDeep';\nimport { BsLocaleService } from 'ngx-bootstrap/datepicker';\nimport { CookieService } from 'ngx-cookie';\nimport { Observable } from 'rxjs';\nimport { catchError, first, mergeMap } from 'rxjs/operators';\nimport { environment } from '../../../../../environments/environment';\nimport { CustomerTypeCodes } from '../../constants/customer-type-codes';\nimport { PaperworkService } from '../../paperwork/services/paperwork.service';\nimport { AuthenticationConstants } from '../authentication.constants';\nimport {\n ClearSwitchUserAlertClicked,\n EditUser,\n EditUserProfile,\n ForceLoadUserProfile,\n ForceLoadUserProfileFailure,\n NavigateToLogin,\n ReloadSwitchedUserClicked,\n SetUserProfile,\n StartUserTimeout,\n SwitchBack,\n SwitchUser,\n SwitchUserFailure,\n SwitchUserSuccess,\n} from './user-profile.actions';\n\n@State({\n name: 'userProfile',\n defaults: null,\n})\n@Injectable()\nexport class UserProfileState {\n constructor(\n private router: Router,\n private route: ActivatedRoute,\n private userProfileService: UserProfileService,\n private bootstrapLocaleSvc: BsLocaleService,\n private usanaLocaleService: UsanaLocaleService,\n private ssoSwitchUserService: SsoSwitchUserService,\n private ssoAuthService: SsoAuthService,\n private paperWorkService: PaperworkService,\n @Inject(LOCATION_TOKEN) private location: Location,\n private cookieService: CookieService\n ) {}\n\n @Action(SwitchUser)\n switchUser(ctx: StateContext, action: SwitchUser): Observable {\n return this.handleSwitchUserResponse(\n this.ssoSwitchUserService.switchToUser(action.userId),\n ctx,\n 'Cant switch user'\n );\n }\n\n @Action(SwitchBack)\n switchBack(ctx: StateContext, _action: SwitchUser): Observable {\n return this.handleSwitchUserResponse(this.ssoSwitchUserService.switchBack(), ctx, 'Error switching back');\n }\n\n @Action(SwitchUserSuccess)\n switchUserSuccess(ctx: StateContext, action: SwitchUserSuccess): void {\n // if they are an affiliate kick them to shop, otherwise do normal hub logic.\n const newUser = this.ssoAuthService.parseIdTokenJwt(action.loginResponse.tokens.idToken);\n\n if (newUser.customerType === CustomerTypeCodes.affiliate) {\n this.location.assign(\n `https://${environment.STATIC_CART_ORIGIN_SUBDOMAIN}.${environment.DEPLOY_SITEDOMAIN}${environment.STATIC_CART_ORIGIN_ROOT_URI}`\n );\n } else {\n // reload the user now that we have changed\n // unfortunately tman isn't smart enough to do this inline, so we can't dispatch it\n // normally I would do a ForceLoad dispatch, but since we have to hard reload the page\n // it doesn't make since to perform all the extra operation that come with it.\n this.userProfileService\n .forceReload({\n TO_USER_LOCALE: 't',\n })\n .pipe(first())\n .subscribe(() => {\n if (!action.loginResponse.interrupts?.length) {\n this.location.reload();\n } else {\n ctx.patchState({\n switchUserAlert: {\n loginResponse: action.loginResponse,\n },\n });\n }\n });\n }\n }\n\n @Action(SwitchUserFailure)\n switchUserFailure(ctx: StateContext, action: SwitchUserFailure): void {\n ctx.patchState({\n switchUserAlert: {\n errorMessage: action.errorMessage,\n },\n });\n }\n\n @Action(ClearSwitchUserAlertClicked)\n clearSwitchUserAlertClicked(ctx: StateContext, _action: SwitchUserFailure): void {\n ctx.patchState({\n switchUserAlert: undefined,\n });\n }\n\n @Action(ReloadSwitchedUserClicked)\n reloadSwitchedUserClicked(_ctx: StateContext, _action: ReloadSwitchedUserClicked): void {\n this.location.reload();\n }\n\n @Action(ForceLoadUserProfile)\n forceLoadProfile(ctx: StateContext, action: ForceLoadUserProfile) {\n PerformanceService.mark('UserProfile:ForceLoad');\n\n return this.userProfileService.forceReload(action.withParams).pipe(\n mergeMap((userProfile) => {\n const userExists = userProfile && userProfile.user;\n const anonAllowed = this.route.snapshot.data && this.route.snapshot.data.anonAllowed;\n\n let loginResponseAction: any;\n if (userExists || anonAllowed) {\n loginResponseAction = new SetUserProfile(userProfile);\n } else {\n loginResponseAction = new ForceLoadUserProfileFailure(userProfile);\n }\n\n return ctx.dispatch(loginResponseAction);\n }),\n catchError((_error) => ctx.dispatch(new ForceLoadUserProfileFailure(undefined)))\n );\n }\n\n @Action(SetUserProfile)\n setUserProfile({ setState, dispatch }: StateContext, { userProfile }: SetUserProfile) {\n const locale = userProfile.locale;\n\n if (locale) {\n const code = getI18NLocalCode(locale);\n this.bootstrapLocaleSvc.use(code);\n this.usanaLocaleService.setNGLocale(code);\n userProfile.i18NLocalCode = code;\n this.setLocaleCookie(userProfile.fullLocale);\n }\n\n if (userProfile.user && userProfile.user.country === 'PH') {\n dispatch(new LoadEarningsOptInStatus());\n }\n\n PerformanceService.mark('UserProfile:Set');\n setState(userProfile);\n if (userProfile.user && userProfile.user.coreSecureToken) {\n this.ssoAuthService.setUserFromIdToken(userProfile.user.ssoIdToken);\n this.paperWorkService.watchForPaperwork();\n\n dispatch([\n new SetSupportedMarkets(),\n new LoadSystemAlerts(),\n new LoadCurrentNotifications(),\n new LoadLoginInterruptNotifications(),\n new LoadImportantDates(),\n new SetHomeWidgets(['volumeReport', 'fourWeekCycleReport']),\n new StartUserTimeout(),\n ]);\n }\n }\n\n @Action(ForceLoadUserProfileFailure)\n forceLoadUserProfileFailure(ctx: StateContext, action: ForceLoadUserProfileFailure) {\n ctx.dispatch([new SetUserProfile(action.userProfile), new NavigateToLogin(this.router.url)]);\n }\n\n @Action(EditUser)\n editUser({ patchState, getState }: StateContext, action: EditUser) {\n const userProfile = cloneDeep(getState());\n userProfile.user = { ...userProfile.user, ...action.userProps };\n patchState(userProfile);\n }\n\n @Action(EditUserProfile)\n editProfile({ patchState, getState }: StateContext, action: EditUserProfile) {\n const currentProfile = { ...getState() };\n const profile = { ...currentProfile, ...action.profileProps };\n patchState(profile);\n }\n\n private handleSwitchUserResponse(\n switchUserResponse: Observable,\n ctx: StateContext,\n errorMessage?: string\n ): Observable {\n return switchUserResponse.pipe(\n mergeMap((loginResponse: LoginResponse) => {\n if (loginResponse.success) {\n return ctx.dispatch(new SwitchUserSuccess(loginResponse));\n } else if (errorMessage) {\n // TODO Login Service returns untranslated tags that reference the new translation service,\n // translation out scope with current ticket.\n return ctx.dispatch(new SwitchUserFailure(errorMessage));\n }\n }),\n catchError(() => ctx.dispatch(new SwitchUserFailure(errorMessage)))\n );\n }\n\n private setLocaleCookie(locale) {\n let domain = this.location.hostname;\n const domainParts = domain.split('.');\n if (domainParts.length >= 3) {\n domain = domainParts.slice(1).join('.');\n }\n const nextYear = new Date();\n nextYear.setDate(new Date().getDate() + 365);\n this.cookieService.put(AuthenticationConstants.LEGACY_I18N_COOKIE_NAME, locale, {\n expires: nextYear,\n path: '/',\n domain: domain,\n });\n }\n}\n","/* eslint-disable max-classes-per-file */\nexport class LoadEarningsOptInStatus {\n static readonly type = '[Earnings-Opt-In] LOAD EARNINGS OPT IN STATUS';\n}\n\nexport class LoadEarningsOptIn {\n static readonly type = '[Earnings-Opt-In] LOAD EARNINGS OPT IN';\n}\n","export enum CustomerTypeCodes {\n affiliate = 'AM',\n associate = 'A',\n distributor = 'D',\n employee = 'EM',\n preferredCustomer = 'PC',\n}\n","export enum CustomerTypes {\n associate = 'assoc',\n preferredCustomer = 'pc',\n employee = 'empl',\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FullDateTimeWithTimezoneService } from '@common/custom-locale-pipes/full-date-time-with-timezone/full-date-time-with-timezone.service';\nimport { FullDateTimeWithTimezonePipe } from '@common/custom-locale-pipes/full-date-time-with-timezone/pipe/full-date-time-with-timezone.pipe';\nimport { AbbreviateTimezoneNamePipe } from '@shared/pipes/abbreviate-timezone/abbreviate-timezone-name.pipe';\n\n@NgModule({\n declarations: [FullDateTimeWithTimezonePipe],\n exports: [FullDateTimeWithTimezonePipe],\n imports: [CommonModule],\n providers: [AbbreviateTimezoneNamePipe, FullDateTimeWithTimezoneService],\n})\nexport class FullDateTimeWithTimezoneModule {}\n","import { DatePipe } from '@angular/common';\nimport { Injectable } from '@angular/core';\nimport { AbbreviateTimezoneNamePipe } from '@shared/pipes/abbreviate-timezone/abbreviate-timezone-name.pipe';\n\n@Injectable()\nexport class FullDateTimeWithTimezoneService {\n constructor(private datePipe: DatePipe, private abbreviateTimezoneNamePipe: AbbreviateTimezoneNamePipe) {}\n\n transformDate(date: any) {\n if (isNaN(date)) {\n return date;\n } else {\n return (\n this.datePipe.transform(date, 'medium') +\n ' ' +\n this.abbreviateTimezoneNamePipe.transform(Intl.DateTimeFormat().resolvedOptions().timeZone)\n );\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { FullDateTimeWithTimezoneService } from '@common/custom-locale-pipes/full-date-time-with-timezone/full-date-time-with-timezone.service';\n\n@Pipe({\n name: 'fullDateTimeWithTimezone',\n})\nexport class FullDateTimeWithTimezonePipe implements PipeTransform {\n constructor(private fullDateWithTimezoneService: FullDateTimeWithTimezoneService) {}\n\n transform(date: any, ...args: any[]): any {\n return this.fullDateWithTimezoneService.transformDate(date);\n }\n}\n","export class SetHomeWidgets {\n static readonly type = '[Home] SET WIDGETS FOR HOME PAGE';\n constructor(public widgets: string[]) {}\n}\n","// eslint-disable-next-line max-classes-per-file\nimport { NavigationLevel } from '@common/navigation/state/navigation.state.model';\n\nexport class ChangeOpenNavigationLevel {\n static readonly type = '[NAVIGATION] CHANGE LEVEL';\n constructor(public level: NavigationLevel) {}\n}\n\nexport class UpdateTopNavHeight {\n static readonly type = '[NAVIGATION] TOP HEIGHT';\n constructor(public height: number) {}\n}\n\nexport class UpdateTopNavRender {\n static readonly type = '[NAVIGATION] TOP RENDER';\n constructor(public fixed: boolean, public mobileHide: boolean) {}\n}\n","export enum NavigationLevel {\n NONE,\n FIRST,\n SECOND,\n}\n\nexport interface NavigationStateModel {\n navLevelOpen: NavigationLevel;\n topNavHeight: number;\n fixedNav: boolean;\n mobileHide: boolean;\n}\n","import {\n IconDefinition,\n faBusinessTime,\n faLayerGroup,\n faListOl,\n faPortrait,\n faSignalStream,\n faStar,\n faUserFriends,\n} from '@fortawesome/pro-solid-svg-icons';\nimport { environment } from '../../../../environments/environment';\n\nconst HTTP_BASE_PREFIX = `${environment.apiDomain}`;\n\nexport const NOTIFICATION_ENDPOINTS = {\n archived: `${HTTP_BASE_PREFIX}/notification/archivedMessagesForHub`,\n notifications: `${HTTP_BASE_PREFIX}/notification/message`,\n notificationByConcatKey: `${HTTP_BASE_PREFIX}/notification/header/HUB/CONCATKEY/`,\n subscriptions: `${HTTP_BASE_PREFIX}/notification/subscription/`,\n timezones: `${HTTP_BASE_PREFIX}/notification/timeZone/all`,\n userTimezone: `${HTTP_BASE_PREFIX}/notification/timeZone`,\n validNumber: `${HTTP_BASE_PREFIX}/notification/sms/validNumber`,\n simpleValidation: `${HTTP_BASE_PREFIX}/notification/sms/simpleValidation`,\n countryCodeList: `${HTTP_BASE_PREFIX}/notification/sms/countryCodeList`,\n allPhoneNumbers: `${HTTP_BASE_PREFIX}/notification/sms/allNumbers`,\n removeNumber: `${HTTP_BASE_PREFIX}/notification/sms/removeNumber`,\n allowedUser: `${HTTP_BASE_PREFIX}/notification/sms/availableCountries`,\n optOut: `${HTTP_BASE_PREFIX}/notification/sms/opt`,\n optIn: `${HTTP_BASE_PREFIX}/notification/sms/opt/in`,\n resendChallengeCode: `${HTTP_BASE_PREFIX}/notification/sms/resend/challengeCode`,\n};\n\nexport const NOTIFICATION_ICON_MAP: { [key: string]: IconDefinition } = {\n ORDERS: faListOl,\n TEAM_BUILDING: faUserFriends,\n RECOGNITION: faStar,\n CUSTOMER_SERVICE: faPortrait,\n MY_BUSINESS: faBusinessTime,\n TRAINING: faLayerGroup,\n MARKETING: faSignalStream,\n};\n\nexport const NOTIFICATION_TRANSLATION_TAGS = {\n markAllAsRead: 'notifications.landing.markAllAsRead',\n markAllAsUnread: 'notifications.landing.markAllAsUnread',\n notificationSettings: 'notifications.landing.notificationSettings',\n viewAll: 'notifications.landing.viewAllNotifications',\n widgetTitle: 'notifications.landing-widget-title',\n};\n","import { HttpClient, HttpErrorResponse } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { NOTIFICATION_ENDPOINTS, NOTIFICATION_TRANSLATION_TAGS } from '@common/notifications/notification.constants';\nimport { Notification, SinglePhoneNumber } from '@common/notifications/notification.model';\nimport { MarkAsRead, MarkAsUnread } from '@common/notifications/state/notification.actions';\nimport { Store } from '@ngxs/store';\nimport { DropdownMenuItem } from '@shared/dropdown/dropdown.model';\nimport { SideModalService } from '@shared/side-modal/side-modal.service';\nimport { WINDOW_TOKEN } from '@usana/ux/common';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { environment } from '../../../../environments/environment';\n\n@Injectable()\nexport class NotificationService {\n constructor(\n private http: HttpClient,\n private router: Router,\n private sideModalService: SideModalService,\n private store: Store,\n @Inject(WINDOW_TOKEN) private window: any\n ) {}\n\n private static handleError(error: HttpErrorResponse) {\n return throwError(error.error.message);\n }\n\n getArchivedNotifications(): Observable {\n const startDate = new Date();\n const endDate = new Date();\n\n startDate.setMonth(startDate.getMonth() - 3);\n endDate.setDate(endDate.getDate() - 14);\n\n return this.http.get(NOTIFICATION_ENDPOINTS.archived).pipe(\n map((response: Notification[]) =>\n this.sortNotificationsByDate(response).map((notification) => {\n notification.deleted = true;\n return notification;\n })\n )\n );\n }\n\n getLoginInterruptNotifications(): Observable {\n return this.http\n .get(NOTIFICATION_ENDPOINTS.notifications, {\n params: {\n expired: 'false',\n unread: 'true',\n deleted: 'false',\n channels: 'LOGIN_INTERRUPT',\n },\n })\n .pipe(map((response: Notification[]) => this.sortNotificationsByDate(response)));\n }\n\n getNotificationByConcatKey(key: string): Observable {\n return this.http\n .get(NOTIFICATION_ENDPOINTS.notificationByConcatKey + key)\n .pipe(map((response: Notification) => response));\n }\n\n getCurrentNotifications(): Observable {\n const startDate = new Date();\n startDate.setDate(startDate.getDate() - 14);\n\n return this.http\n .get(NOTIFICATION_ENDPOINTS.notifications, {\n params: {\n startDateAfter: startDate.toISOString(),\n deleted: 'false',\n subscribedOnly: 'true',\n channels: 'HUB',\n },\n })\n .pipe(map((response: Notification[]) => this.sortNotificationsByDate(response)));\n }\n\n updateNotifications(notifications: Notification[]): Observable {\n return this.http\n .put(NOTIFICATION_ENDPOINTS.notifications, notifications, {\n params: {\n channel: 'HUB',\n },\n })\n .pipe(map((response: Notification[]) => this.sortNotificationsByDate(response)));\n }\n\n loginInterruptOptIn(): Observable {\n return this.http.post(NOTIFICATION_ENDPOINTS.optIn, '').pipe(\n map((phoneNumber: SinglePhoneNumber) => phoneNumber),\n catchError(NotificationService.handleError)\n );\n }\n\n sortNotificationsByDate(notifications: Notification[]) {\n if (!notifications) {\n return [];\n }\n\n return notifications.sort((curr, next) => curr.millisSinceNotification - next.millisSinceNotification);\n }\n\n getDropdownMenuItems(limit: boolean, displayedNotifications: Notification[]): DropdownMenuItem[] {\n return [\n {\n id: 0,\n text: NOTIFICATION_TRANSLATION_TAGS.markAllAsRead,\n action: () => this.markAsRead(displayedNotifications),\n hideWhen: () => !displayedNotifications.length,\n },\n {\n id: 1,\n text: NOTIFICATION_TRANSLATION_TAGS.markAllAsUnread,\n action: () => this.markAsUnread(displayedNotifications),\n hideWhen: () => !displayedNotifications.length,\n },\n {\n id: 2,\n text: NOTIFICATION_TRANSLATION_TAGS.notificationSettings,\n action: () => this.navigateToSettingsPage(),\n },\n {\n id: 3,\n text: NOTIFICATION_TRANSLATION_TAGS.viewAll,\n action: () => this.navigateToNotificationPage(),\n hideWhen: () => !limit,\n },\n ];\n }\n\n markAsRead(notifications: Notification[]) {\n return this.store.dispatch(new MarkAsRead(notifications));\n }\n\n markAsUnread(notifications: Notification[]) {\n return this.store.dispatch(new MarkAsUnread(notifications));\n }\n\n navigateToNotificationPage(): void {\n this.router.navigate(['notification']);\n this.close();\n }\n\n navigateToSettingsPage(): void {\n this.window.open(`https://sso.${environment.DEPLOY_SITEDOMAIN}/account/settings/notifications`);\n this.close();\n }\n\n close(): void {\n this.sideModalService.close();\n }\n}\n","// eslint-disable-next-line max-classes-per-file\nimport { Notification } from '@common/notifications/notification.model';\n\nexport class LoadArchivedNotifications {\n static readonly type = '[Notifications] LOAD ARCHIVED NOTIFICATIONS';\n}\n\nexport class LoadLoginInterruptNotifications {\n static readonly type = '[Notifications] LOAD LOGIN INTERRUPT NOTIFICATIONS';\n}\n\nexport class LoadCurrentNotifications {\n static readonly type = '[Notifications] LOAD CURRENT NOTIFICATIONS';\n}\n\nexport class LoadSingleNotification {\n static readonly type = 'Notification LOAD Single NOTIFICATION';\n\n constructor(public key: string) {}\n}\n\nexport class MarkAsRead {\n static readonly type = '[Notifications] MARK NOTIFICATION AS READ';\n\n constructor(public notifications: Notification[]) {}\n}\n\nexport class MarkAsUnread {\n static readonly type = '[Notifications] MARK NOTIFICATION AS UNREAD';\n\n constructor(public notifications: Notification[]) {}\n}\n\nexport class DeleteNotification {\n static readonly type = '[Notifications] DELETE NOTIFICATION';\n\n constructor(public notification: Notification) {}\n}\n\nexport class UpdatePhoneNumber {\n static readonly type = '[Notifications] Update Phone number';\n\n constructor(public phoneNumber: string) {}\n}\n","import { NotificationState } from '@common/notifications/state/notification.state';\nimport { NotificationStateModel } from '@common/notifications/state/notification.state.model';\nimport { Selector } from '@ngxs/store';\n\nexport class NotificationSelectors {\n @Selector([NotificationState])\n public static getCurrentNotifications(state: NotificationStateModel) {\n return state.currentNotifications.filter((notification) => !notification.deleted);\n }\n\n @Selector([NotificationState])\n public static getSingleNotification(state: NotificationStateModel) {\n return state.singleNotification;\n }\n\n @Selector([NotificationState])\n public static getArchivedNotifications(state: NotificationStateModel) {\n return state.archivedNotifications;\n }\n\n @Selector([NotificationState])\n public static getInterruptNotifications(state: NotificationStateModel) {\n return state.interruptNotifications.filter((notification) => !notification.read);\n }\n\n @Selector([NotificationState])\n static loginInterruptOptIn(state: NotificationStateModel) {\n return state.phoneNumber;\n }\n}\n","import { Notification } from '@common/notifications/notification.model';\nimport { NotificationStateModel } from '@common/notifications/state/notification.state.model';\nimport { StateContext } from '@ngxs/store';\nimport { patch, updateItem } from '@ngxs/store/operators';\n\nexport const updateNotifications = (\n ctx: StateContext,\n updatedNotifications: Notification[]\n) => {\n updatedNotifications.forEach((updatedNotification) => {\n ctx.setState(\n patch({\n archivedNotifications: updateItem(\n (notification) => notification.id === updatedNotification.id,\n updatedNotification\n ),\n currentNotifications: updateItem(\n (notification) => notification.id === updatedNotification.id,\n updatedNotification\n ),\n interruptNotifications: updateItem(\n (notification) => notification.id === updatedNotification.id,\n updatedNotification\n ),\n })\n );\n });\n};\n\nexport const filterNotificationsByChannel = (notifications, channel) => {\n notifications = notifications.filter((notification) => notification.category.channel === channel);\n\n notifications.forEach((notification) => {\n notification.content = notification.content.filter((content) => content.channel === channel);\n });\n return notifications;\n};\n","import { Injectable } from '@angular/core';\nimport { NotificationService } from '@common/notifications/notification.service';\nimport {\n DeleteNotification,\n LoadArchivedNotifications,\n LoadCurrentNotifications,\n LoadLoginInterruptNotifications,\n LoadSingleNotification,\n MarkAsRead,\n MarkAsUnread,\n UpdatePhoneNumber,\n} from '@common/notifications/state/notification.actions';\nimport {\n DEFAULT_NOTIFICATION_STATE,\n NotificationStateModel,\n} from '@common/notifications/state/notification.state.model';\nimport {\n filterNotificationsByChannel,\n updateNotifications,\n} from '@common/notifications/state/notification.state.utils';\nimport { Action, State, StateContext } from '@ngxs/store';\nimport cloneDeep from 'lodash/cloneDeep';\nimport { map } from 'rxjs/operators';\n\n@State({\n name: 'notifications',\n defaults: DEFAULT_NOTIFICATION_STATE,\n})\n@Injectable()\nexport class NotificationState {\n constructor(private notificationService: NotificationService) {}\n\n @Action(LoadArchivedNotifications)\n getArchivedNotifications(ctx: StateContext, action: LoadArchivedNotifications) {\n return this.notificationService.getArchivedNotifications().pipe(\n map((archivedNotifications) => {\n const filteredNotifications = filterNotificationsByChannel(archivedNotifications, 'HUB');\n ctx.patchState({ archivedNotifications: filteredNotifications });\n })\n );\n }\n\n @Action(LoadCurrentNotifications)\n getCurrentNotification(ctx: StateContext, action: LoadCurrentNotifications) {\n return this.notificationService.getCurrentNotifications().pipe(\n map((currentNotifications) => {\n const filteredNotifications = filterNotificationsByChannel(currentNotifications, 'HUB');\n ctx.patchState({ currentNotifications: filteredNotifications });\n })\n );\n }\n\n @Action(LoadSingleNotification)\n getSingleNotification(ctx: StateContext, action: LoadSingleNotification) {\n return this.notificationService.getNotificationByConcatKey(action.key).pipe(\n map((singleNotification) => {\n ctx.patchState({ singleNotification });\n })\n );\n }\n\n @Action(LoadLoginInterruptNotifications)\n getInterruptNotification(ctx: StateContext, action: LoadLoginInterruptNotifications) {\n return this.notificationService.getLoginInterruptNotifications().pipe(\n map((interruptNotifications) => {\n const filteredNotifications = filterNotificationsByChannel(interruptNotifications, 'LOGIN_INTERRUPT');\n ctx.patchState({ interruptNotifications: filteredNotifications });\n })\n );\n }\n\n @Action(MarkAsRead)\n markNotificationsAsRead(ctx: StateContext, action: MarkAsRead) {\n const updatedNotifications = cloneDeep(action.notifications);\n\n updatedNotifications.forEach((notification) => {\n notification.read = true;\n });\n\n return this.notificationService.updateNotifications(updatedNotifications).pipe(\n map(() => {\n const filteredNotifications = filterNotificationsByChannel(updatedNotifications, 'HUB');\n updateNotifications(ctx, filteredNotifications);\n })\n );\n }\n\n @Action(MarkAsUnread)\n markNotificationsAsUnread(ctx: StateContext, action: MarkAsUnread) {\n const updatedNotifications = cloneDeep(action.notifications);\n\n updatedNotifications.forEach((notification) => {\n notification.read = false;\n });\n\n return this.notificationService.updateNotifications(updatedNotifications).pipe(\n map(() => {\n const filteredNotifications = filterNotificationsByChannel(updatedNotifications, 'HUB');\n updateNotifications(ctx, filteredNotifications);\n })\n );\n }\n\n @Action(DeleteNotification)\n deleteNotification(ctx: StateContext, action: DeleteNotification) {\n const { archivedNotifications } = cloneDeep(ctx.getState());\n const deletedNotification = { ...action.notification };\n\n deletedNotification.deleted = true;\n archivedNotifications.push(deletedNotification);\n\n archivedNotifications.sort((a, b) => a.millisSinceNotification - b.millisSinceNotification);\n\n const filteredNotifications = filterNotificationsByChannel([deletedNotification], 'HUB');\n ctx.patchState({ archivedNotifications: filteredNotifications });\n\n return this.notificationService\n .updateNotifications([deletedNotification])\n .pipe(map(() => updateNotifications(ctx, [deletedNotification])));\n }\n\n @Action(UpdatePhoneNumber)\n updatePhoneNumber({ patchState }: StateContext, action: UpdatePhoneNumber) {\n return patchState({ phoneNumber: action.phoneNumber });\n }\n}\n","import { Notification } from '@common/notifications/notification.model';\n\nexport interface NotificationStateModel {\n archivedNotifications: Notification[];\n currentNotifications: Notification[];\n interruptNotifications: Notification[];\n singleNotification: Notification;\n phoneNumber: string;\n}\n\nexport const DEFAULT_NOTIFICATION_STATE = {\n archivedNotifications: [],\n currentNotifications: [],\n interruptNotifications: [],\n phoneNumber: '',\n};\n","import { HttpClient, HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { PacesetterWidgetModel } from '@common/pacesetter/pacesetter-widget.model';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PacesetterWidgetService {\n constructor(private http: HttpClient) {}\n\n private static handleError(error: HttpErrorResponse) {\n return throwError(error.error.message);\n }\n\n getPacesetterStatusData(locale): Observable {\n return this.http.get('/dlm2/rest/pacesetterWidget/status', this.getHeaders(locale)).pipe(\n map((pacesetterData: PacesetterWidgetModel) => pacesetterData),\n catchError(PacesetterWidgetService.handleError)\n );\n }\n\n getPacesetterWidgetData(locale): Observable {\n return this.http.get('/dlm2/rest/pacesetterWidget', this.getHeaders(locale)).pipe(\n map((pacesetterData: PacesetterWidgetModel) => pacesetterData),\n catchError(PacesetterWidgetService.handleError)\n );\n }\n\n getHeaders(locale) {\n return {\n headers: {\n Accept: 'application/json;charset=UTF-8',\n 'Content-Type': 'application/json;charset=UTF-8',\n 'Content-Language': locale,\n },\n };\n }\n}\n","import { inject } from '@angular/core';\nimport { ActivatedRouteSnapshot, ResolveFn, RouterStateSnapshot } from '@angular/router';\nimport { Store } from '@ngxs/store';\nimport { filter } from 'rxjs/operators';\nimport { UserProfile } from '../authentication/model/user-profile';\nimport { UserProfileSelectors } from '../authentication/state/user-profile.selectors';\n\nexport const userProfileResolverFn: ResolveFn = (\n _route: ActivatedRouteSnapshot,\n _state: RouterStateSnapshot\n) =>\n inject(Store)\n .select(UserProfileSelectors.getUserProfile)\n .pipe(filter((userProfile: UserProfile) => !!userProfile));\n","import { registerLocaleData } from '@angular/common';\nimport { Injectable } from '@angular/core';\nimport { ForceLoadUserProfile } from '@common/authentication/state/user-profile.actions';\nimport { Store } from '@ngxs/store';\n\n@Injectable({ providedIn: 'root' })\nexport class UsanaLocaleService {\n private localeMap: { [key: string]: any };\n\n constructor(private store: Store) {}\n\n setNGLocale(locale: string) {\n const localModule = this.localeMap[locale];\n if (localModule) {\n registerLocaleData(localModule.default, locale);\n }\n }\n\n setLocaleMap(localeMap: { [key: string]: any }) {\n this.localeMap = localeMap;\n }\n\n setLocale(locale: string): string {\n const dataLayer = (window as any).dataLayer;\n if (!!dataLayer) {\n dataLayer.push({ event: 'CDMarketEvent', marketVal: locale });\n }\n\n if (window.OneTrust) {\n const hubMarket = locale.toLowerCase().replace('_', '-');\n window.OneTrust.changeLanguage(hubMarket);\n // wait a second after we changeLanguage to see if it returned a translation\n setTimeout(() => {\n const networkCapture: PerformanceEntry[] = performance\n .getEntriesByType('resource')\n .filter((r: PerformanceResourceTiming) => r.initiatorType === 'fetch');\n const regEx = /.*(consent).*(?.{4}\\S)\\.json/gi;\n const fetchedOneTrustLocales = networkCapture\n .filter((x) => x.name.match(regEx))\n .map(\n (a) =>\n a.name\n .split('/')\n .filter((b) => b.includes('.json'))[0]\n .split('.')[0]\n );\n if (!fetchedOneTrustLocales.includes(hubMarket)) {\n // didn't find a language file so fetch the default and end\n window.OneTrust.changeLanguage(hubMarket.split('-')[0]);\n }\n }, 1000);\n }\n\n // force reload with our new locale\n this.store.dispatch(new ForceLoadUserProfile({ SET_LOCALE: locale }));\n return '';\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { UserProfileSelectors } from '@common/authentication/state/user-profile.selectors';\nimport { Store } from '@ngxs/store';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UserBASAccessService {\n constructor(private store: Store, private router: Router) {}\n\n get userHasBASAccess(): boolean {\n return this.store.selectSnapshot(UserProfileSelectors.getUserHasBASAccess);\n }\n\n navigateToBASPage(): void {\n this.router.navigate(['/content', 'BusAcceleratorSuite']);\n }\n\n userHasBASAccessOrRedirect(): boolean {\n const userHasBASAccess = this.userHasBASAccess;\n\n if (!userHasBASAccess) {\n this.navigateToBASPage();\n }\n\n return userHasBASAccess;\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class WindowSizingService {\n readonly xsBreakpoint = 336;\n readonly mobileBreakpoint = 767;\n readonly tabletBreakpoint = 959;\n readonly hubBannerBreakPoint = 1365;\n readonly xxlBreakpoint = 1400;\n\n get width() {\n return document.body.offsetWidth;\n }\n\n isDesktopSize() {\n return this.width > this.tabletBreakpoint;\n }\n\n isBannerDesktopSize() {\n return this.width >= this.hubBannerBreakPoint;\n }\n\n isHubBannerBreakPointSize() {\n return this.width > this.mobileBreakpoint && this.width <= this.hubBannerBreakPoint;\n }\n\n isTabletSize() {\n return this.width > this.mobileBreakpoint && this.width <= this.tabletBreakpoint;\n }\n\n isMobileSize() {\n return this.width <= this.mobileBreakpoint;\n }\n\n isXSMobileSize() {\n return this.width <= this.xsBreakpoint;\n }\n\n isXxlDesktopSize() {\n return this.width >= this.xxlBreakpoint;\n }\n\n getElementOffset(element) {\n const documentElement = document.documentElement;\n const box = element[0].getBoundingClientRect();\n const top = box.top + window.pageYOffset - documentElement.clientTop;\n const left = box.left + window.pageXOffset - documentElement.clientLeft;\n return { top: top, left: left };\n }\n}\n","// eslint-disable-next-line max-classes-per-file\nimport { SystemAlert } from './system-alerts.state.model';\n\nexport class LoadSystemAlerts {\n static readonly type = '[SystemAlerts] LOAD SYS ALERTS';\n}\n\nexport class SetSystemAlerts {\n static readonly type = '[SystemAlerts] SET SYS ALERTS';\n constructor(public alerts: SystemAlert[]) {}\n}\n\nexport class DeleteSystemAlert {\n static readonly type = '[SystemAlerts] DELETE SYS ALERT';\n constructor(public index: number) {}\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TranslationService } from '@common/translation/translation.service';\n\n@Pipe({\n name: 'translate',\n pure: false, // sad\n})\nexport class TranslatePipe implements PipeTransform {\n constructor(private translateService: TranslationService) {}\n\n transform(input): string {\n if (input && this.translateService.tagContainsNull(input) === false) {\n return this.translateService.getTranslationForFilter(input);\n } else {\n return input;\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TranslatePipe } from './pipes/translate.pipe';\n\n@NgModule({\n declarations: [TranslatePipe],\n imports: [CommonModule],\n exports: [TranslatePipe],\n})\nexport class TranslationModule {}\n","import { HttpClient } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { UserProfile } from '@common/authentication/model/user-profile';\nimport { UserProfileSelectors } from '@common/authentication/state/user-profile.selectors';\nimport { LocaleStorageTranslationTag, TranslationsToResolve } from '@common/translation/translation.model';\nimport { Store } from '@ngxs/store';\nimport { WINDOW_TOKEN } from '@usana/ux/common';\nimport { Subscription } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class TranslationService {\n processing = false;\n maxStoredTime = 604800000; // 7 days in milliseconds - max-stored time for translations.\n translations = {};\n translateQueue = {};\n // set this here, so we don't have to keep creating new dates a bunch of times.\n loadTime = new Date().getTime();\n processInterval: number;\n _locale = null;\n storeSubs: Subscription;\n oneTimeSub: Subscription;\n\n constructor(private http: HttpClient, private store: Store, @Inject(WINDOW_TOKEN) protected readonly window: any) {\n this.storeSubs = this.store.select(UserProfileSelectors.getUserProfile).subscribe((userProfile: UserProfile) => {\n if (userProfile && userProfile.locale) {\n // get new locale\n if (this._locale !== userProfile.locale) {\n const oldLoc = this._locale;\n // set new locale\n this._locale = userProfile.locale;\n // let's swap the queue keys over to the new locale\n const qKeys = Object.keys(this.translateQueue);\n qKeys.forEach((item) => {\n // the key is of the form prefix|tag|locale, so we need to replace the locale after the last |\n const mutatedKey = item.substring(0, item.lastIndexOf('|') + 1) + this._locale;\n this.translateQueue[mutatedKey] = this.translateQueue[item];\n delete this.translateQueue[item];\n });\n\n if (qKeys.length > 0) {\n // just for logging\n // eslint-disable-next-line no-console\n console.debug('de-RaceCond [' + oldLoc + '->' + this._locale + '] ' + qKeys.length + ' tags');\n }\n }\n }\n });\n }\n\n stopProcessing(): void {\n if (this.processInterval) {\n this.window.clearInterval(this.processInterval);\n this.processInterval = undefined;\n }\n }\n\n stopProcessingIfEmpty(): void {\n if (Object.keys(this.translateQueue).length === 0) {\n this.stopProcessing();\n }\n }\n\n startProcessing(): void {\n if (!this.processInterval) {\n this.processInterval = this.window.setInterval(() => this.processQueue(), 300, 0, false);\n }\n }\n\n getTranslationForFilter(tag: string): string {\n // only continue if we have the request attrs.\n if (!this._locale) {\n return null;\n }\n const transKey = this.getStorageKey(tag, this._locale);\n\n const storedTranslation = this.loadFromLocalStorage(transKey);\n // if the tag was in local storage for the right locale, and has not expired just resolve the value\n if (storedTranslation && storedTranslation.timeStamp + this.maxStoredTime > this.loadTime) {\n return storedTranslation.tagValue;\n }\n\n if (this.translations[transKey] !== undefined && this.translations[transKey] !== null) {\n // The translation has already been added, so just return it.\n return this.translations[transKey];\n } else {\n this.translations[transKey] = null;\n this.getTranslationPromiseInternal(tag).then((result: any) => {\n this.translations[transKey] = result.value;\n return this.translations[transKey];\n });\n }\n }\n\n getTranslationPromiseInternal(tag: string): Promise<{ [tag: string]: string }> {\n return new Promise<{ [p: string]: string }>((resolve, reject) => {\n if (!this._locale) {\n this.oneTimeSub = this.store\n .select(UserProfileSelectors.getUserProfile)\n .subscribe((userProfile: UserProfile) => {\n if (userProfile && userProfile.locale) {\n this.doPromise(tag, userProfile.locale, resolve);\n }\n if (this.oneTimeSub) {\n this.oneTimeSub.unsubscribe();\n }\n });\n } else {\n this.doPromise(tag, this._locale, resolve);\n }\n });\n }\n\n doPromise(pTag: string, pLoc: string, resolve): void {\n // get the translation key if we didn't get it\n const transKey = this.getStorageKey(pTag, pLoc);\n\n const storedTranslation = this.loadFromLocalStorage(transKey);\n // if the tag was in local storage for the right locale, and has not expired just resolve the value\n if (storedTranslation && storedTranslation.timeStamp + this.maxStoredTime > this.loadTime) {\n resolve({ value: storedTranslation.tagValue, locale: pLoc });\n } else {\n if (!this.translateQueue[transKey]) {\n this.translateQueue[transKey] = { transTag: pTag, resolve: resolve };\n }\n this.startProcessing();\n }\n }\n\n getTranslationPromise(tag: string): Promise<{ [tag: string]: string }> {\n return this.getTranslationPromiseInternal(tag);\n }\n\n getTranslationListPromise(tags: string[]): Promise<{ [tag: string]: any }> {\n return new Promise((resolve): void => {\n const promises = [];\n\n tags.forEach((tag: string): void => {\n promises.push(this.getTranslationPromiseInternal(tag));\n });\n\n Promise.all(promises).then((values): void => {\n const translationMap = {};\n for (let i = 0; i < values.length; i++) {\n translationMap[tags[i]] = values[i];\n }\n resolve(translationMap);\n });\n });\n }\n\n processQueue(): void {\n //\n // Process each translation in the queue by adding it to a processed list.\n //\n const translationCount = Object.keys(this.translateQueue).length;\n if (translationCount > 0 && !this.processing && this._locale) {\n const translationList: string[] = [];\n const translationsToResolve: TranslationsToResolve = {};\n for (const translation of Object.keys(this.translateQueue)) {\n const object = [this.translateQueue[translation]][0];\n translationList.push(object.transTag);\n if (!translationsToResolve[object.transTag]) {\n //\n // if no map entry exists create a new array for the key.\n //\n translationsToResolve[object.transTag] = [];\n }\n translationsToResolve[object.transTag].push(object);\n }\n\n if (translationList.length > 0) {\n this.loadFromHttp(translationList, translationsToResolve);\n }\n }\n }\n\n convertCharCodesToActualCharacters(value: string): string {\n const el = document.createElement('span');\n el.innerHTML = value;\n return el.innerHTML;\n }\n\n loadFromHttp(translationList: string[], translationsToResolve: TranslationsToResolve): void {\n this.processing = true;\n let urlParams = '?locale=' + this._locale;\n translationList.sort().forEach((tag) => {\n urlParams += '&tag=' + encodeURI(tag);\n });\n //\n // Using a get so we can do some caching.\n //\n this.http\n .get('/mvc/translation/get' + urlParams)\n .toPromise()\n .then(\n (response: any) => {\n const result = response;\n for (const tag in result.translations) {\n if (result.translations.hasOwnProperty(tag)) {\n const tagValue = this.convertCharCodesToActualCharacters(result.translations[tag]);\n // Lets not store bad values - note: some HUB translation tags are broken.\n if (tag !== tagValue) {\n // Drop the value into localeStorage and remove it from the hash map.\n this.storeTagInLocalStorage(tag, tagValue, result.requestLocale);\n }\n delete this.translateQueue[this.getStorageKey(tag, result.requestLocale)];\n let promiseList = translationsToResolve[tag]; // resolve all promises of the resolved tag\n if (typeof promiseList === 'undefined') {\n promiseList = translationsToResolve[decodeURI(tag)];\n }\n // resolve all promises of the resolved tag\n for (const item of promiseList) {\n item.resolve({ value: tagValue, locale: result.requestLocale });\n }\n }\n }\n this.processing = false;\n this.stopProcessingIfEmpty();\n },\n (error) => {\n this.processing = false;\n this.stopProcessingIfEmpty();\n }\n );\n }\n\n loadFromLocalStorage(key: string): LocaleStorageTranslationTag {\n // only do this if we're in a compatible browser.\n if (Storage) {\n return JSON.parse(localStorage.getItem(key));\n }\n }\n\n storeTagInLocalStorage(tag: string, tagValue: string, locale: string): void {\n // only do this if we're in a compatible browser.\n if (Storage) {\n const storedTag: LocaleStorageTranslationTag = {\n tagValue: tagValue,\n timeStamp: new Date().getTime(),\n };\n localStorage.setItem(this.getStorageKey(tag, locale), JSON.stringify(storedTag));\n }\n }\n\n getStorageKey(tag: string, locale: string): string {\n return 'translationStorage|' + tag + '|' + locale;\n }\n\n tagContainsNull(tag: string): boolean {\n return tag.search(/null/) > -1;\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const WindowToken = new InjectionToken('Window');\nexport const windowProvider = () => window;\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { LoadingSpinnerComponent } from './loading-spinner.component';\n\n@NgModule({\n declarations: [LoadingSpinnerComponent],\n exports: [LoadingSpinnerComponent],\n imports: [CommonModule],\n})\nexport class LoadingSpinnerModule {}\n","export class PerformanceService {\n private static readonly hasPerformance = !!window.performance;\n\n static mark(markName: string): void {\n if (this.hasPerformance) {\n performance.mark(markName);\n }\n }\n}\n","// these aren't really private, but nor are they really useful to document\n\n/**\n * @private\n */\nclass LuxonError extends Error {}\n\n/**\n * @private\n */\nexport class InvalidDateTimeError extends LuxonError {\n constructor(reason) {\n super(`Invalid DateTime: ${reason.toMessage()}`);\n }\n}\n\n/**\n * @private\n */\nexport class InvalidIntervalError extends LuxonError {\n constructor(reason) {\n super(`Invalid Interval: ${reason.toMessage()}`);\n }\n}\n\n/**\n * @private\n */\nexport class InvalidDurationError extends LuxonError {\n constructor(reason) {\n super(`Invalid Duration: ${reason.toMessage()}`);\n }\n}\n\n/**\n * @private\n */\nexport class ConflictingSpecificationError extends LuxonError {}\n\n/**\n * @private\n */\nexport class InvalidUnitError extends LuxonError {\n constructor(unit) {\n super(`Invalid unit ${unit}`);\n }\n}\n\n/**\n * @private\n */\nexport class InvalidArgumentError extends LuxonError {}\n\n/**\n * @private\n */\nexport class ZoneIsAbstractError extends LuxonError {\n constructor() {\n super(\"Zone is an abstract class\");\n }\n}\n","/**\n * @private\n */\n\nconst n = \"numeric\",\n s = \"short\",\n l = \"long\";\n\nexport const DATE_SHORT = {\n year: n,\n month: n,\n day: n,\n};\n\nexport const DATE_MED = {\n year: n,\n month: s,\n day: n,\n};\n\nexport const DATE_MED_WITH_WEEKDAY = {\n year: n,\n month: s,\n day: n,\n weekday: s,\n};\n\nexport const DATE_FULL = {\n year: n,\n month: l,\n day: n,\n};\n\nexport const DATE_HUGE = {\n year: n,\n month: l,\n day: n,\n weekday: l,\n};\n\nexport const TIME_SIMPLE = {\n hour: n,\n minute: n,\n};\n\nexport const TIME_WITH_SECONDS = {\n hour: n,\n minute: n,\n second: n,\n};\n\nexport const TIME_WITH_SHORT_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n timeZoneName: s,\n};\n\nexport const TIME_WITH_LONG_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n timeZoneName: l,\n};\n\nexport const TIME_24_SIMPLE = {\n hour: n,\n minute: n,\n hourCycle: \"h23\",\n};\n\nexport const TIME_24_WITH_SECONDS = {\n hour: n,\n minute: n,\n second: n,\n hourCycle: \"h23\",\n};\n\nexport const TIME_24_WITH_SHORT_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n hourCycle: \"h23\",\n timeZoneName: s,\n};\n\nexport const TIME_24_WITH_LONG_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n hourCycle: \"h23\",\n timeZoneName: l,\n};\n\nexport const DATETIME_SHORT = {\n year: n,\n month: n,\n day: n,\n hour: n,\n minute: n,\n};\n\nexport const DATETIME_SHORT_WITH_SECONDS = {\n year: n,\n month: n,\n day: n,\n hour: n,\n minute: n,\n second: n,\n};\n\nexport const DATETIME_MED = {\n year: n,\n month: s,\n day: n,\n hour: n,\n minute: n,\n};\n\nexport const DATETIME_MED_WITH_SECONDS = {\n year: n,\n month: s,\n day: n,\n hour: n,\n minute: n,\n second: n,\n};\n\nexport const DATETIME_MED_WITH_WEEKDAY = {\n year: n,\n month: s,\n day: n,\n weekday: s,\n hour: n,\n minute: n,\n};\n\nexport const DATETIME_FULL = {\n year: n,\n month: l,\n day: n,\n hour: n,\n minute: n,\n timeZoneName: s,\n};\n\nexport const DATETIME_FULL_WITH_SECONDS = {\n year: n,\n month: l,\n day: n,\n hour: n,\n minute: n,\n second: n,\n timeZoneName: s,\n};\n\nexport const DATETIME_HUGE = {\n year: n,\n month: l,\n day: n,\n weekday: l,\n hour: n,\n minute: n,\n timeZoneName: l,\n};\n\nexport const DATETIME_HUGE_WITH_SECONDS = {\n year: n,\n month: l,\n day: n,\n weekday: l,\n hour: n,\n minute: n,\n second: n,\n timeZoneName: l,\n};\n","import { ZoneIsAbstractError } from \"./errors.js\";\n\n/**\n * @interface\n */\nexport default class Zone {\n /**\n * The type of zone\n * @abstract\n * @type {string}\n */\n get type() {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * The name of this zone.\n * @abstract\n * @type {string}\n */\n get name() {\n throw new ZoneIsAbstractError();\n }\n\n get ianaName() {\n return this.name;\n }\n\n /**\n * Returns whether the offset is known to be fixed for the whole year.\n * @abstract\n * @type {boolean}\n */\n get isUniversal() {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Returns the offset's common name (such as EST) at the specified timestamp\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to get the name\n * @param {Object} opts - Options to affect the format\n * @param {string} opts.format - What style of offset to return. Accepts 'long' or 'short'.\n * @param {string} opts.locale - What locale to return the offset name in.\n * @return {string}\n */\n offsetName(ts, opts) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Returns the offset's value as a string\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to get the offset\n * @param {string} format - What style of offset to return.\n * Accepts 'narrow', 'short', or 'techie'. Returning '+6', '+06:00', or '+0600' respectively\n * @return {string}\n */\n formatOffset(ts, format) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Return the offset in minutes for this zone at the specified timestamp.\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to compute the offset\n * @return {number}\n */\n offset(ts) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Return whether this Zone is equal to another zone\n * @abstract\n * @param {Zone} otherZone - the zone to compare\n * @return {boolean}\n */\n equals(otherZone) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Return whether this Zone is valid.\n * @abstract\n * @type {boolean}\n */\n get isValid() {\n throw new ZoneIsAbstractError();\n }\n}\n","import { formatOffset, parseZoneInfo } from \"../impl/util.js\";\nimport Zone from \"../zone.js\";\n\nlet singleton = null;\n\n/**\n * Represents the local zone for this JavaScript environment.\n * @implements {Zone}\n */\nexport default class SystemZone extends Zone {\n /**\n * Get a singleton instance of the local zone\n * @return {SystemZone}\n */\n static get instance() {\n if (singleton === null) {\n singleton = new SystemZone();\n }\n return singleton;\n }\n\n /** @override **/\n get type() {\n return \"system\";\n }\n\n /** @override **/\n get name() {\n return new Intl.DateTimeFormat().resolvedOptions().timeZone;\n }\n\n /** @override **/\n get isUniversal() {\n return false;\n }\n\n /** @override **/\n offsetName(ts, { format, locale }) {\n return parseZoneInfo(ts, format, locale);\n }\n\n /** @override **/\n formatOffset(ts, format) {\n return formatOffset(this.offset(ts), format);\n }\n\n /** @override **/\n offset(ts) {\n return -new Date(ts).getTimezoneOffset();\n }\n\n /** @override **/\n equals(otherZone) {\n return otherZone.type === \"system\";\n }\n\n /** @override **/\n get isValid() {\n return true;\n }\n}\n","import { formatOffset, parseZoneInfo, isUndefined, objToLocalTS } from \"../impl/util.js\";\nimport Zone from \"../zone.js\";\n\nlet dtfCache = {};\nfunction makeDTF(zone) {\n if (!dtfCache[zone]) {\n dtfCache[zone] = new Intl.DateTimeFormat(\"en-US\", {\n hour12: false,\n timeZone: zone,\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n era: \"short\",\n });\n }\n return dtfCache[zone];\n}\n\nconst typeToPos = {\n year: 0,\n month: 1,\n day: 2,\n era: 3,\n hour: 4,\n minute: 5,\n second: 6,\n};\n\nfunction hackyOffset(dtf, date) {\n const formatted = dtf.format(date).replace(/\\u200E/g, \"\"),\n parsed = /(\\d+)\\/(\\d+)\\/(\\d+) (AD|BC),? (\\d+):(\\d+):(\\d+)/.exec(formatted),\n [, fMonth, fDay, fYear, fadOrBc, fHour, fMinute, fSecond] = parsed;\n return [fYear, fMonth, fDay, fadOrBc, fHour, fMinute, fSecond];\n}\n\nfunction partsOffset(dtf, date) {\n const formatted = dtf.formatToParts(date);\n const filled = [];\n for (let i = 0; i < formatted.length; i++) {\n const { type, value } = formatted[i];\n const pos = typeToPos[type];\n\n if (type === \"era\") {\n filled[pos] = value;\n } else if (!isUndefined(pos)) {\n filled[pos] = parseInt(value, 10);\n }\n }\n return filled;\n}\n\nlet ianaZoneCache = {};\n/**\n * A zone identified by an IANA identifier, like America/New_York\n * @implements {Zone}\n */\nexport default class IANAZone extends Zone {\n /**\n * @param {string} name - Zone name\n * @return {IANAZone}\n */\n static create(name) {\n if (!ianaZoneCache[name]) {\n ianaZoneCache[name] = new IANAZone(name);\n }\n return ianaZoneCache[name];\n }\n\n /**\n * Reset local caches. Should only be necessary in testing scenarios.\n * @return {void}\n */\n static resetCache() {\n ianaZoneCache = {};\n dtfCache = {};\n }\n\n /**\n * Returns whether the provided string is a valid specifier. This only checks the string's format, not that the specifier identifies a known zone; see isValidZone for that.\n * @param {string} s - The string to check validity on\n * @example IANAZone.isValidSpecifier(\"America/New_York\") //=> true\n * @example IANAZone.isValidSpecifier(\"Sport~~blorp\") //=> false\n * @deprecated This method returns false for some valid IANA names. Use isValidZone instead.\n * @return {boolean}\n */\n static isValidSpecifier(s) {\n return this.isValidZone(s);\n }\n\n /**\n * Returns whether the provided string identifies a real zone\n * @param {string} zone - The string to check\n * @example IANAZone.isValidZone(\"America/New_York\") //=> true\n * @example IANAZone.isValidZone(\"Fantasia/Castle\") //=> false\n * @example IANAZone.isValidZone(\"Sport~~blorp\") //=> false\n * @return {boolean}\n */\n static isValidZone(zone) {\n if (!zone) {\n return false;\n }\n try {\n new Intl.DateTimeFormat(\"en-US\", { timeZone: zone }).format();\n return true;\n } catch (e) {\n return false;\n }\n }\n\n constructor(name) {\n super();\n /** @private **/\n this.zoneName = name;\n /** @private **/\n this.valid = IANAZone.isValidZone(name);\n }\n\n /** @override **/\n get type() {\n return \"iana\";\n }\n\n /** @override **/\n get name() {\n return this.zoneName;\n }\n\n /** @override **/\n get isUniversal() {\n return false;\n }\n\n /** @override **/\n offsetName(ts, { format, locale }) {\n return parseZoneInfo(ts, format, locale, this.name);\n }\n\n /** @override **/\n formatOffset(ts, format) {\n return formatOffset(this.offset(ts), format);\n }\n\n /** @override **/\n offset(ts) {\n const date = new Date(ts);\n\n if (isNaN(date)) return NaN;\n\n const dtf = makeDTF(this.name);\n let [year, month, day, adOrBc, hour, minute, second] = dtf.formatToParts\n ? partsOffset(dtf, date)\n : hackyOffset(dtf, date);\n\n if (adOrBc === \"BC\") {\n year = -Math.abs(year) + 1;\n }\n\n // because we're using hour12 and https://bugs.chromium.org/p/chromium/issues/detail?id=1025564&can=2&q=%2224%3A00%22%20datetimeformat\n const adjustedHour = hour === 24 ? 0 : hour;\n\n const asUTC = objToLocalTS({\n year,\n month,\n day,\n hour: adjustedHour,\n minute,\n second,\n millisecond: 0,\n });\n\n let asTS = +date;\n const over = asTS % 1000;\n asTS -= over >= 0 ? over : 1000 + over;\n return (asUTC - asTS) / (60 * 1000);\n }\n\n /** @override **/\n equals(otherZone) {\n return otherZone.type === \"iana\" && otherZone.name === this.name;\n }\n\n /** @override **/\n get isValid() {\n return this.valid;\n }\n}\n","import { hasLocaleWeekInfo, hasRelative, padStart, roundTo, validateWeekSettings } from \"./util.js\";\nimport * as English from \"./english.js\";\nimport Settings from \"../settings.js\";\nimport DateTime from \"../datetime.js\";\nimport IANAZone from \"../zones/IANAZone.js\";\n\n// todo - remap caching\n\nlet intlLFCache = {};\nfunction getCachedLF(locString, opts = {}) {\n const key = JSON.stringify([locString, opts]);\n let dtf = intlLFCache[key];\n if (!dtf) {\n dtf = new Intl.ListFormat(locString, opts);\n intlLFCache[key] = dtf;\n }\n return dtf;\n}\n\nlet intlDTCache = {};\nfunction getCachedDTF(locString, opts = {}) {\n const key = JSON.stringify([locString, opts]);\n let dtf = intlDTCache[key];\n if (!dtf) {\n dtf = new Intl.DateTimeFormat(locString, opts);\n intlDTCache[key] = dtf;\n }\n return dtf;\n}\n\nlet intlNumCache = {};\nfunction getCachedINF(locString, opts = {}) {\n const key = JSON.stringify([locString, opts]);\n let inf = intlNumCache[key];\n if (!inf) {\n inf = new Intl.NumberFormat(locString, opts);\n intlNumCache[key] = inf;\n }\n return inf;\n}\n\nlet intlRelCache = {};\nfunction getCachedRTF(locString, opts = {}) {\n const { base, ...cacheKeyOpts } = opts; // exclude `base` from the options\n const key = JSON.stringify([locString, cacheKeyOpts]);\n let inf = intlRelCache[key];\n if (!inf) {\n inf = new Intl.RelativeTimeFormat(locString, opts);\n intlRelCache[key] = inf;\n }\n return inf;\n}\n\nlet sysLocaleCache = null;\nfunction systemLocale() {\n if (sysLocaleCache) {\n return sysLocaleCache;\n } else {\n sysLocaleCache = new Intl.DateTimeFormat().resolvedOptions().locale;\n return sysLocaleCache;\n }\n}\n\nlet weekInfoCache = {};\nfunction getCachedWeekInfo(locString) {\n let data = weekInfoCache[locString];\n if (!data) {\n const locale = new Intl.Locale(locString);\n // browsers currently implement this as a property, but spec says it should be a getter function\n data = \"getWeekInfo\" in locale ? locale.getWeekInfo() : locale.weekInfo;\n weekInfoCache[locString] = data;\n }\n return data;\n}\n\nfunction parseLocaleString(localeStr) {\n // I really want to avoid writing a BCP 47 parser\n // see, e.g. https://github.com/wooorm/bcp-47\n // Instead, we'll do this:\n\n // a) if the string has no -u extensions, just leave it alone\n // b) if it does, use Intl to resolve everything\n // c) if Intl fails, try again without the -u\n\n // private subtags and unicode subtags have ordering requirements,\n // and we're not properly parsing this, so just strip out the\n // private ones if they exist.\n const xIndex = localeStr.indexOf(\"-x-\");\n if (xIndex !== -1) {\n localeStr = localeStr.substring(0, xIndex);\n }\n\n const uIndex = localeStr.indexOf(\"-u-\");\n if (uIndex === -1) {\n return [localeStr];\n } else {\n let options;\n let selectedStr;\n try {\n options = getCachedDTF(localeStr).resolvedOptions();\n selectedStr = localeStr;\n } catch (e) {\n const smaller = localeStr.substring(0, uIndex);\n options = getCachedDTF(smaller).resolvedOptions();\n selectedStr = smaller;\n }\n\n const { numberingSystem, calendar } = options;\n return [selectedStr, numberingSystem, calendar];\n }\n}\n\nfunction intlConfigString(localeStr, numberingSystem, outputCalendar) {\n if (outputCalendar || numberingSystem) {\n if (!localeStr.includes(\"-u-\")) {\n localeStr += \"-u\";\n }\n\n if (outputCalendar) {\n localeStr += `-ca-${outputCalendar}`;\n }\n\n if (numberingSystem) {\n localeStr += `-nu-${numberingSystem}`;\n }\n return localeStr;\n } else {\n return localeStr;\n }\n}\n\nfunction mapMonths(f) {\n const ms = [];\n for (let i = 1; i <= 12; i++) {\n const dt = DateTime.utc(2009, i, 1);\n ms.push(f(dt));\n }\n return ms;\n}\n\nfunction mapWeekdays(f) {\n const ms = [];\n for (let i = 1; i <= 7; i++) {\n const dt = DateTime.utc(2016, 11, 13 + i);\n ms.push(f(dt));\n }\n return ms;\n}\n\nfunction listStuff(loc, length, englishFn, intlFn) {\n const mode = loc.listingMode();\n\n if (mode === \"error\") {\n return null;\n } else if (mode === \"en\") {\n return englishFn(length);\n } else {\n return intlFn(length);\n }\n}\n\nfunction supportsFastNumbers(loc) {\n if (loc.numberingSystem && loc.numberingSystem !== \"latn\") {\n return false;\n } else {\n return (\n loc.numberingSystem === \"latn\" ||\n !loc.locale ||\n loc.locale.startsWith(\"en\") ||\n new Intl.DateTimeFormat(loc.intl).resolvedOptions().numberingSystem === \"latn\"\n );\n }\n}\n\n/**\n * @private\n */\n\nclass PolyNumberFormatter {\n constructor(intl, forceSimple, opts) {\n this.padTo = opts.padTo || 0;\n this.floor = opts.floor || false;\n\n const { padTo, floor, ...otherOpts } = opts;\n\n if (!forceSimple || Object.keys(otherOpts).length > 0) {\n const intlOpts = { useGrouping: false, ...opts };\n if (opts.padTo > 0) intlOpts.minimumIntegerDigits = opts.padTo;\n this.inf = getCachedINF(intl, intlOpts);\n }\n }\n\n format(i) {\n if (this.inf) {\n const fixed = this.floor ? Math.floor(i) : i;\n return this.inf.format(fixed);\n } else {\n // to match the browser's numberformatter defaults\n const fixed = this.floor ? Math.floor(i) : roundTo(i, 3);\n return padStart(fixed, this.padTo);\n }\n }\n}\n\n/**\n * @private\n */\n\nclass PolyDateFormatter {\n constructor(dt, intl, opts) {\n this.opts = opts;\n this.originalZone = undefined;\n\n let z = undefined;\n if (this.opts.timeZone) {\n // Don't apply any workarounds if a timeZone is explicitly provided in opts\n this.dt = dt;\n } else if (dt.zone.type === \"fixed\") {\n // UTC-8 or Etc/UTC-8 are not part of tzdata, only Etc/GMT+8 and the like.\n // That is why fixed-offset TZ is set to that unless it is:\n // 1. Representing offset 0 when UTC is used to maintain previous behavior and does not become GMT.\n // 2. Unsupported by the browser:\n // - some do not support Etc/\n // - < Etc/GMT-14, > Etc/GMT+12, and 30-minute or 45-minute offsets are not part of tzdata\n const gmtOffset = -1 * (dt.offset / 60);\n const offsetZ = gmtOffset >= 0 ? `Etc/GMT+${gmtOffset}` : `Etc/GMT${gmtOffset}`;\n if (dt.offset !== 0 && IANAZone.create(offsetZ).valid) {\n z = offsetZ;\n this.dt = dt;\n } else {\n // Not all fixed-offset zones like Etc/+4:30 are present in tzdata so\n // we manually apply the offset and substitute the zone as needed.\n z = \"UTC\";\n this.dt = dt.offset === 0 ? dt : dt.setZone(\"UTC\").plus({ minutes: dt.offset });\n this.originalZone = dt.zone;\n }\n } else if (dt.zone.type === \"system\") {\n this.dt = dt;\n } else if (dt.zone.type === \"iana\") {\n this.dt = dt;\n z = dt.zone.name;\n } else {\n // Custom zones can have any offset / offsetName so we just manually\n // apply the offset and substitute the zone as needed.\n z = \"UTC\";\n this.dt = dt.setZone(\"UTC\").plus({ minutes: dt.offset });\n this.originalZone = dt.zone;\n }\n\n const intlOpts = { ...this.opts };\n intlOpts.timeZone = intlOpts.timeZone || z;\n this.dtf = getCachedDTF(intl, intlOpts);\n }\n\n format() {\n if (this.originalZone) {\n // If we have to substitute in the actual zone name, we have to use\n // formatToParts so that the timezone can be replaced.\n return this.formatToParts()\n .map(({ value }) => value)\n .join(\"\");\n }\n return this.dtf.format(this.dt.toJSDate());\n }\n\n formatToParts() {\n const parts = this.dtf.formatToParts(this.dt.toJSDate());\n if (this.originalZone) {\n return parts.map((part) => {\n if (part.type === \"timeZoneName\") {\n const offsetName = this.originalZone.offsetName(this.dt.ts, {\n locale: this.dt.locale,\n format: this.opts.timeZoneName,\n });\n return {\n ...part,\n value: offsetName,\n };\n } else {\n return part;\n }\n });\n }\n return parts;\n }\n\n resolvedOptions() {\n return this.dtf.resolvedOptions();\n }\n}\n\n/**\n * @private\n */\nclass PolyRelFormatter {\n constructor(intl, isEnglish, opts) {\n this.opts = { style: \"long\", ...opts };\n if (!isEnglish && hasRelative()) {\n this.rtf = getCachedRTF(intl, opts);\n }\n }\n\n format(count, unit) {\n if (this.rtf) {\n return this.rtf.format(count, unit);\n } else {\n return English.formatRelativeTime(unit, count, this.opts.numeric, this.opts.style !== \"long\");\n }\n }\n\n formatToParts(count, unit) {\n if (this.rtf) {\n return this.rtf.formatToParts(count, unit);\n } else {\n return [];\n }\n }\n}\n\nconst fallbackWeekSettings = {\n firstDay: 1,\n minimalDays: 4,\n weekend: [6, 7],\n};\n\n/**\n * @private\n */\n\nexport default class Locale {\n static fromOpts(opts) {\n return Locale.create(\n opts.locale,\n opts.numberingSystem,\n opts.outputCalendar,\n opts.weekSettings,\n opts.defaultToEN\n );\n }\n\n static create(locale, numberingSystem, outputCalendar, weekSettings, defaultToEN = false) {\n const specifiedLocale = locale || Settings.defaultLocale;\n // the system locale is useful for human readable strings but annoying for parsing/formatting known formats\n const localeR = specifiedLocale || (defaultToEN ? \"en-US\" : systemLocale());\n const numberingSystemR = numberingSystem || Settings.defaultNumberingSystem;\n const outputCalendarR = outputCalendar || Settings.defaultOutputCalendar;\n const weekSettingsR = validateWeekSettings(weekSettings) || Settings.defaultWeekSettings;\n return new Locale(localeR, numberingSystemR, outputCalendarR, weekSettingsR, specifiedLocale);\n }\n\n static resetCache() {\n sysLocaleCache = null;\n intlDTCache = {};\n intlNumCache = {};\n intlRelCache = {};\n }\n\n static fromObject({ locale, numberingSystem, outputCalendar, weekSettings } = {}) {\n return Locale.create(locale, numberingSystem, outputCalendar, weekSettings);\n }\n\n constructor(locale, numbering, outputCalendar, weekSettings, specifiedLocale) {\n const [parsedLocale, parsedNumberingSystem, parsedOutputCalendar] = parseLocaleString(locale);\n\n this.locale = parsedLocale;\n this.numberingSystem = numbering || parsedNumberingSystem || null;\n this.outputCalendar = outputCalendar || parsedOutputCalendar || null;\n this.weekSettings = weekSettings;\n this.intl = intlConfigString(this.locale, this.numberingSystem, this.outputCalendar);\n\n this.weekdaysCache = { format: {}, standalone: {} };\n this.monthsCache = { format: {}, standalone: {} };\n this.meridiemCache = null;\n this.eraCache = {};\n\n this.specifiedLocale = specifiedLocale;\n this.fastNumbersCached = null;\n }\n\n get fastNumbers() {\n if (this.fastNumbersCached == null) {\n this.fastNumbersCached = supportsFastNumbers(this);\n }\n\n return this.fastNumbersCached;\n }\n\n listingMode() {\n const isActuallyEn = this.isEnglish();\n const hasNoWeirdness =\n (this.numberingSystem === null || this.numberingSystem === \"latn\") &&\n (this.outputCalendar === null || this.outputCalendar === \"gregory\");\n return isActuallyEn && hasNoWeirdness ? \"en\" : \"intl\";\n }\n\n clone(alts) {\n if (!alts || Object.getOwnPropertyNames(alts).length === 0) {\n return this;\n } else {\n return Locale.create(\n alts.locale || this.specifiedLocale,\n alts.numberingSystem || this.numberingSystem,\n alts.outputCalendar || this.outputCalendar,\n validateWeekSettings(alts.weekSettings) || this.weekSettings,\n alts.defaultToEN || false\n );\n }\n }\n\n redefaultToEN(alts = {}) {\n return this.clone({ ...alts, defaultToEN: true });\n }\n\n redefaultToSystem(alts = {}) {\n return this.clone({ ...alts, defaultToEN: false });\n }\n\n months(length, format = false) {\n return listStuff(this, length, English.months, () => {\n const intl = format ? { month: length, day: \"numeric\" } : { month: length },\n formatStr = format ? \"format\" : \"standalone\";\n if (!this.monthsCache[formatStr][length]) {\n this.monthsCache[formatStr][length] = mapMonths((dt) => this.extract(dt, intl, \"month\"));\n }\n return this.monthsCache[formatStr][length];\n });\n }\n\n weekdays(length, format = false) {\n return listStuff(this, length, English.weekdays, () => {\n const intl = format\n ? { weekday: length, year: \"numeric\", month: \"long\", day: \"numeric\" }\n : { weekday: length },\n formatStr = format ? \"format\" : \"standalone\";\n if (!this.weekdaysCache[formatStr][length]) {\n this.weekdaysCache[formatStr][length] = mapWeekdays((dt) =>\n this.extract(dt, intl, \"weekday\")\n );\n }\n return this.weekdaysCache[formatStr][length];\n });\n }\n\n meridiems() {\n return listStuff(\n this,\n undefined,\n () => English.meridiems,\n () => {\n // In theory there could be aribitrary day periods. We're gonna assume there are exactly two\n // for AM and PM. This is probably wrong, but it's makes parsing way easier.\n if (!this.meridiemCache) {\n const intl = { hour: \"numeric\", hourCycle: \"h12\" };\n this.meridiemCache = [DateTime.utc(2016, 11, 13, 9), DateTime.utc(2016, 11, 13, 19)].map(\n (dt) => this.extract(dt, intl, \"dayperiod\")\n );\n }\n\n return this.meridiemCache;\n }\n );\n }\n\n eras(length) {\n return listStuff(this, length, English.eras, () => {\n const intl = { era: length };\n\n // This is problematic. Different calendars are going to define eras totally differently. What I need is the minimum set of dates\n // to definitely enumerate them.\n if (!this.eraCache[length]) {\n this.eraCache[length] = [DateTime.utc(-40, 1, 1), DateTime.utc(2017, 1, 1)].map((dt) =>\n this.extract(dt, intl, \"era\")\n );\n }\n\n return this.eraCache[length];\n });\n }\n\n extract(dt, intlOpts, field) {\n const df = this.dtFormatter(dt, intlOpts),\n results = df.formatToParts(),\n matching = results.find((m) => m.type.toLowerCase() === field);\n return matching ? matching.value : null;\n }\n\n numberFormatter(opts = {}) {\n // this forcesimple option is never used (the only caller short-circuits on it, but it seems safer to leave)\n // (in contrast, the rest of the condition is used heavily)\n return new PolyNumberFormatter(this.intl, opts.forceSimple || this.fastNumbers, opts);\n }\n\n dtFormatter(dt, intlOpts = {}) {\n return new PolyDateFormatter(dt, this.intl, intlOpts);\n }\n\n relFormatter(opts = {}) {\n return new PolyRelFormatter(this.intl, this.isEnglish(), opts);\n }\n\n listFormatter(opts = {}) {\n return getCachedLF(this.intl, opts);\n }\n\n isEnglish() {\n return (\n this.locale === \"en\" ||\n this.locale.toLowerCase() === \"en-us\" ||\n new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith(\"en-us\")\n );\n }\n\n getWeekSettings() {\n if (this.weekSettings) {\n return this.weekSettings;\n } else if (!hasLocaleWeekInfo()) {\n return fallbackWeekSettings;\n } else {\n return getCachedWeekInfo(this.locale);\n }\n }\n\n getStartOfWeek() {\n return this.getWeekSettings().firstDay;\n }\n\n getMinDaysInFirstWeek() {\n return this.getWeekSettings().minimalDays;\n }\n\n getWeekendDays() {\n return this.getWeekSettings().weekend;\n }\n\n equals(other) {\n return (\n this.locale === other.locale &&\n this.numberingSystem === other.numberingSystem &&\n this.outputCalendar === other.outputCalendar\n );\n }\n}\n","import * as Formats from \"./formats.js\";\nimport { pick } from \"./util.js\";\n\nfunction stringify(obj) {\n return JSON.stringify(obj, Object.keys(obj).sort());\n}\n\n/**\n * @private\n */\n\nexport const monthsLong = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n];\n\nexport const monthsShort = [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n];\n\nexport const monthsNarrow = [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"];\n\nexport function months(length) {\n switch (length) {\n case \"narrow\":\n return [...monthsNarrow];\n case \"short\":\n return [...monthsShort];\n case \"long\":\n return [...monthsLong];\n case \"numeric\":\n return [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"10\", \"11\", \"12\"];\n case \"2-digit\":\n return [\"01\", \"02\", \"03\", \"04\", \"05\", \"06\", \"07\", \"08\", \"09\", \"10\", \"11\", \"12\"];\n default:\n return null;\n }\n}\n\nexport const weekdaysLong = [\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n \"Sunday\",\n];\n\nexport const weekdaysShort = [\"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"];\n\nexport const weekdaysNarrow = [\"M\", \"T\", \"W\", \"T\", \"F\", \"S\", \"S\"];\n\nexport function weekdays(length) {\n switch (length) {\n case \"narrow\":\n return [...weekdaysNarrow];\n case \"short\":\n return [...weekdaysShort];\n case \"long\":\n return [...weekdaysLong];\n case \"numeric\":\n return [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\"];\n default:\n return null;\n }\n}\n\nexport const meridiems = [\"AM\", \"PM\"];\n\nexport const erasLong = [\"Before Christ\", \"Anno Domini\"];\n\nexport const erasShort = [\"BC\", \"AD\"];\n\nexport const erasNarrow = [\"B\", \"A\"];\n\nexport function eras(length) {\n switch (length) {\n case \"narrow\":\n return [...erasNarrow];\n case \"short\":\n return [...erasShort];\n case \"long\":\n return [...erasLong];\n default:\n return null;\n }\n}\n\nexport function meridiemForDateTime(dt) {\n return meridiems[dt.hour < 12 ? 0 : 1];\n}\n\nexport function weekdayForDateTime(dt, length) {\n return weekdays(length)[dt.weekday - 1];\n}\n\nexport function monthForDateTime(dt, length) {\n return months(length)[dt.month - 1];\n}\n\nexport function eraForDateTime(dt, length) {\n return eras(length)[dt.year < 0 ? 0 : 1];\n}\n\nexport function formatRelativeTime(unit, count, numeric = \"always\", narrow = false) {\n const units = {\n years: [\"year\", \"yr.\"],\n quarters: [\"quarter\", \"qtr.\"],\n months: [\"month\", \"mo.\"],\n weeks: [\"week\", \"wk.\"],\n days: [\"day\", \"day\", \"days\"],\n hours: [\"hour\", \"hr.\"],\n minutes: [\"minute\", \"min.\"],\n seconds: [\"second\", \"sec.\"],\n };\n\n const lastable = [\"hours\", \"minutes\", \"seconds\"].indexOf(unit) === -1;\n\n if (numeric === \"auto\" && lastable) {\n const isDay = unit === \"days\";\n switch (count) {\n case 1:\n return isDay ? \"tomorrow\" : `next ${units[unit][0]}`;\n case -1:\n return isDay ? \"yesterday\" : `last ${units[unit][0]}`;\n case 0:\n return isDay ? \"today\" : `this ${units[unit][0]}`;\n default: // fall through\n }\n }\n\n const isInPast = Object.is(count, -0) || count < 0,\n fmtValue = Math.abs(count),\n singular = fmtValue === 1,\n lilUnits = units[unit],\n fmtUnit = narrow\n ? singular\n ? lilUnits[1]\n : lilUnits[2] || lilUnits[1]\n : singular\n ? units[unit][0]\n : unit;\n return isInPast ? `${fmtValue} ${fmtUnit} ago` : `in ${fmtValue} ${fmtUnit}`;\n}\n\nexport function formatString(knownFormat) {\n // these all have the offsets removed because we don't have access to them\n // without all the intl stuff this is backfilling\n const filtered = pick(knownFormat, [\n \"weekday\",\n \"era\",\n \"year\",\n \"month\",\n \"day\",\n \"hour\",\n \"minute\",\n \"second\",\n \"timeZoneName\",\n \"hourCycle\",\n ]),\n key = stringify(filtered),\n dateTimeHuge = \"EEEE, LLLL d, yyyy, h:mm a\";\n switch (key) {\n case stringify(Formats.DATE_SHORT):\n return \"M/d/yyyy\";\n case stringify(Formats.DATE_MED):\n return \"LLL d, yyyy\";\n case stringify(Formats.DATE_MED_WITH_WEEKDAY):\n return \"EEE, LLL d, yyyy\";\n case stringify(Formats.DATE_FULL):\n return \"LLLL d, yyyy\";\n case stringify(Formats.DATE_HUGE):\n return \"EEEE, LLLL d, yyyy\";\n case stringify(Formats.TIME_SIMPLE):\n return \"h:mm a\";\n case stringify(Formats.TIME_WITH_SECONDS):\n return \"h:mm:ss a\";\n case stringify(Formats.TIME_WITH_SHORT_OFFSET):\n return \"h:mm a\";\n case stringify(Formats.TIME_WITH_LONG_OFFSET):\n return \"h:mm a\";\n case stringify(Formats.TIME_24_SIMPLE):\n return \"HH:mm\";\n case stringify(Formats.TIME_24_WITH_SECONDS):\n return \"HH:mm:ss\";\n case stringify(Formats.TIME_24_WITH_SHORT_OFFSET):\n return \"HH:mm\";\n case stringify(Formats.TIME_24_WITH_LONG_OFFSET):\n return \"HH:mm\";\n case stringify(Formats.DATETIME_SHORT):\n return \"M/d/yyyy, h:mm a\";\n case stringify(Formats.DATETIME_MED):\n return \"LLL d, yyyy, h:mm a\";\n case stringify(Formats.DATETIME_FULL):\n return \"LLLL d, yyyy, h:mm a\";\n case stringify(Formats.DATETIME_HUGE):\n return dateTimeHuge;\n case stringify(Formats.DATETIME_SHORT_WITH_SECONDS):\n return \"M/d/yyyy, h:mm:ss a\";\n case stringify(Formats.DATETIME_MED_WITH_SECONDS):\n return \"LLL d, yyyy, h:mm:ss a\";\n case stringify(Formats.DATETIME_MED_WITH_WEEKDAY):\n return \"EEE, d LLL yyyy, h:mm a\";\n case stringify(Formats.DATETIME_FULL_WITH_SECONDS):\n return \"LLLL d, yyyy, h:mm:ss a\";\n case stringify(Formats.DATETIME_HUGE_WITH_SECONDS):\n return \"EEEE, LLLL d, yyyy, h:mm:ss a\";\n default:\n return dateTimeHuge;\n }\n}\n","import { formatOffset, signedOffset } from \"../impl/util.js\";\nimport Zone from \"../zone.js\";\n\nlet singleton = null;\n\n/**\n * A zone with a fixed offset (meaning no DST)\n * @implements {Zone}\n */\nexport default class FixedOffsetZone extends Zone {\n /**\n * Get a singleton instance of UTC\n * @return {FixedOffsetZone}\n */\n static get utcInstance() {\n if (singleton === null) {\n singleton = new FixedOffsetZone(0);\n }\n return singleton;\n }\n\n /**\n * Get an instance with a specified offset\n * @param {number} offset - The offset in minutes\n * @return {FixedOffsetZone}\n */\n static instance(offset) {\n return offset === 0 ? FixedOffsetZone.utcInstance : new FixedOffsetZone(offset);\n }\n\n /**\n * Get an instance of FixedOffsetZone from a UTC offset string, like \"UTC+6\"\n * @param {string} s - The offset string to parse\n * @example FixedOffsetZone.parseSpecifier(\"UTC+6\")\n * @example FixedOffsetZone.parseSpecifier(\"UTC+06\")\n * @example FixedOffsetZone.parseSpecifier(\"UTC-6:00\")\n * @return {FixedOffsetZone}\n */\n static parseSpecifier(s) {\n if (s) {\n const r = s.match(/^utc(?:([+-]\\d{1,2})(?::(\\d{2}))?)?$/i);\n if (r) {\n return new FixedOffsetZone(signedOffset(r[1], r[2]));\n }\n }\n return null;\n }\n\n constructor(offset) {\n super();\n /** @private **/\n this.fixed = offset;\n }\n\n /** @override **/\n get type() {\n return \"fixed\";\n }\n\n /** @override **/\n get name() {\n return this.fixed === 0 ? \"UTC\" : `UTC${formatOffset(this.fixed, \"narrow\")}`;\n }\n\n get ianaName() {\n if (this.fixed === 0) {\n return \"Etc/UTC\";\n } else {\n return `Etc/GMT${formatOffset(-this.fixed, \"narrow\")}`;\n }\n }\n\n /** @override **/\n offsetName() {\n return this.name;\n }\n\n /** @override **/\n formatOffset(ts, format) {\n return formatOffset(this.fixed, format);\n }\n\n /** @override **/\n get isUniversal() {\n return true;\n }\n\n /** @override **/\n offset() {\n return this.fixed;\n }\n\n /** @override **/\n equals(otherZone) {\n return otherZone.type === \"fixed\" && otherZone.fixed === this.fixed;\n }\n\n /** @override **/\n get isValid() {\n return true;\n }\n}\n","import Zone from \"../zone.js\";\n\n/**\n * A zone that failed to parse. You should never need to instantiate this.\n * @implements {Zone}\n */\nexport default class InvalidZone extends Zone {\n constructor(zoneName) {\n super();\n /** @private */\n this.zoneName = zoneName;\n }\n\n /** @override **/\n get type() {\n return \"invalid\";\n }\n\n /** @override **/\n get name() {\n return this.zoneName;\n }\n\n /** @override **/\n get isUniversal() {\n return false;\n }\n\n /** @override **/\n offsetName() {\n return null;\n }\n\n /** @override **/\n formatOffset() {\n return \"\";\n }\n\n /** @override **/\n offset() {\n return NaN;\n }\n\n /** @override **/\n equals() {\n return false;\n }\n\n /** @override **/\n get isValid() {\n return false;\n }\n}\n","/**\n * @private\n */\n\nimport Zone from \"../zone.js\";\nimport IANAZone from \"../zones/IANAZone.js\";\nimport FixedOffsetZone from \"../zones/fixedOffsetZone.js\";\nimport InvalidZone from \"../zones/invalidZone.js\";\n\nimport { isUndefined, isString, isNumber } from \"./util.js\";\nimport SystemZone from \"../zones/systemZone.js\";\n\nexport function normalizeZone(input, defaultZone) {\n let offset;\n if (isUndefined(input) || input === null) {\n return defaultZone;\n } else if (input instanceof Zone) {\n return input;\n } else if (isString(input)) {\n const lowered = input.toLowerCase();\n if (lowered === \"default\") return defaultZone;\n else if (lowered === \"local\" || lowered === \"system\") return SystemZone.instance;\n else if (lowered === \"utc\" || lowered === \"gmt\") return FixedOffsetZone.utcInstance;\n else return FixedOffsetZone.parseSpecifier(lowered) || IANAZone.create(input);\n } else if (isNumber(input)) {\n return FixedOffsetZone.instance(input);\n } else if (typeof input === \"object\" && \"offset\" in input && typeof input.offset === \"function\") {\n // This is dumb, but the instanceof check above doesn't seem to really work\n // so we're duck checking it\n return input;\n } else {\n return new InvalidZone(input);\n }\n}\n","/*\n This is just a junk drawer, containing anything used across multiple classes.\n Because Luxon is small(ish), this should stay small and we won't worry about splitting\n it up into, say, parsingUtil.js and basicUtil.js and so on. But they are divided up by feature area.\n*/\n\nimport { InvalidArgumentError } from \"../errors.js\";\nimport Settings from \"../settings.js\";\nimport { dayOfWeek, isoWeekdayToLocal } from \"./conversions.js\";\n\n/**\n * @private\n */\n\n// TYPES\n\nexport function isUndefined(o) {\n return typeof o === \"undefined\";\n}\n\nexport function isNumber(o) {\n return typeof o === \"number\";\n}\n\nexport function isInteger(o) {\n return typeof o === \"number\" && o % 1 === 0;\n}\n\nexport function isString(o) {\n return typeof o === \"string\";\n}\n\nexport function isDate(o) {\n return Object.prototype.toString.call(o) === \"[object Date]\";\n}\n\n// CAPABILITIES\n\nexport function hasRelative() {\n try {\n return typeof Intl !== \"undefined\" && !!Intl.RelativeTimeFormat;\n } catch (e) {\n return false;\n }\n}\n\nexport function hasLocaleWeekInfo() {\n try {\n return (\n typeof Intl !== \"undefined\" &&\n !!Intl.Locale &&\n (\"weekInfo\" in Intl.Locale.prototype || \"getWeekInfo\" in Intl.Locale.prototype)\n );\n } catch (e) {\n return false;\n }\n}\n\n// OBJECTS AND ARRAYS\n\nexport function maybeArray(thing) {\n return Array.isArray(thing) ? thing : [thing];\n}\n\nexport function bestBy(arr, by, compare) {\n if (arr.length === 0) {\n return undefined;\n }\n return arr.reduce((best, next) => {\n const pair = [by(next), next];\n if (!best) {\n return pair;\n } else if (compare(best[0], pair[0]) === best[0]) {\n return best;\n } else {\n return pair;\n }\n }, null)[1];\n}\n\nexport function pick(obj, keys) {\n return keys.reduce((a, k) => {\n a[k] = obj[k];\n return a;\n }, {});\n}\n\nexport function hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nexport function validateWeekSettings(settings) {\n if (settings == null) {\n return null;\n } else if (typeof settings !== \"object\") {\n throw new InvalidArgumentError(\"Week settings must be an object\");\n } else {\n if (\n !integerBetween(settings.firstDay, 1, 7) ||\n !integerBetween(settings.minimalDays, 1, 7) ||\n !Array.isArray(settings.weekend) ||\n settings.weekend.some((v) => !integerBetween(v, 1, 7))\n ) {\n throw new InvalidArgumentError(\"Invalid week settings\");\n }\n return {\n firstDay: settings.firstDay,\n minimalDays: settings.minimalDays,\n weekend: Array.from(settings.weekend),\n };\n }\n}\n\n// NUMBERS AND STRINGS\n\nexport function integerBetween(thing, bottom, top) {\n return isInteger(thing) && thing >= bottom && thing <= top;\n}\n\n// x % n but takes the sign of n instead of x\nexport function floorMod(x, n) {\n return x - n * Math.floor(x / n);\n}\n\nexport function padStart(input, n = 2) {\n const isNeg = input < 0;\n let padded;\n if (isNeg) {\n padded = \"-\" + (\"\" + -input).padStart(n, \"0\");\n } else {\n padded = (\"\" + input).padStart(n, \"0\");\n }\n return padded;\n}\n\nexport function parseInteger(string) {\n if (isUndefined(string) || string === null || string === \"\") {\n return undefined;\n } else {\n return parseInt(string, 10);\n }\n}\n\nexport function parseFloating(string) {\n if (isUndefined(string) || string === null || string === \"\") {\n return undefined;\n } else {\n return parseFloat(string);\n }\n}\n\nexport function parseMillis(fraction) {\n // Return undefined (instead of 0) in these cases, where fraction is not set\n if (isUndefined(fraction) || fraction === null || fraction === \"\") {\n return undefined;\n } else {\n const f = parseFloat(\"0.\" + fraction) * 1000;\n return Math.floor(f);\n }\n}\n\nexport function roundTo(number, digits, towardZero = false) {\n const factor = 10 ** digits,\n rounder = towardZero ? Math.trunc : Math.round;\n return rounder(number * factor) / factor;\n}\n\n// DATE BASICS\n\nexport function isLeapYear(year) {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\n\nexport function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n}\n\nexport function daysInMonth(year, month) {\n const modMonth = floorMod(month - 1, 12) + 1,\n modYear = year + (month - modMonth) / 12;\n\n if (modMonth === 2) {\n return isLeapYear(modYear) ? 29 : 28;\n } else {\n return [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][modMonth - 1];\n }\n}\n\n// convert a calendar object to a local timestamp (epoch, but with the offset baked in)\nexport function objToLocalTS(obj) {\n let d = Date.UTC(\n obj.year,\n obj.month - 1,\n obj.day,\n obj.hour,\n obj.minute,\n obj.second,\n obj.millisecond\n );\n\n // for legacy reasons, years between 0 and 99 are interpreted as 19XX; revert that\n if (obj.year < 100 && obj.year >= 0) {\n d = new Date(d);\n // set the month and day again, this is necessary because year 2000 is a leap year, but year 100 is not\n // so if obj.year is in 99, but obj.day makes it roll over into year 100,\n // the calculations done by Date.UTC are using year 2000 - which is incorrect\n d.setUTCFullYear(obj.year, obj.month - 1, obj.day);\n }\n return +d;\n}\n\n// adapted from moment.js: https://github.com/moment/moment/blob/000ac1800e620f770f4eb31b5ae908f6167b0ab2/src/lib/units/week-calendar-utils.js\nfunction firstWeekOffset(year, minDaysInFirstWeek, startOfWeek) {\n const fwdlw = isoWeekdayToLocal(dayOfWeek(year, 1, minDaysInFirstWeek), startOfWeek);\n return -fwdlw + minDaysInFirstWeek - 1;\n}\n\nexport function weeksInWeekYear(weekYear, minDaysInFirstWeek = 4, startOfWeek = 1) {\n const weekOffset = firstWeekOffset(weekYear, minDaysInFirstWeek, startOfWeek);\n const weekOffsetNext = firstWeekOffset(weekYear + 1, minDaysInFirstWeek, startOfWeek);\n return (daysInYear(weekYear) - weekOffset + weekOffsetNext) / 7;\n}\n\nexport function untruncateYear(year) {\n if (year > 99) {\n return year;\n } else return year > Settings.twoDigitCutoffYear ? 1900 + year : 2000 + year;\n}\n\n// PARSING\n\nexport function parseZoneInfo(ts, offsetFormat, locale, timeZone = null) {\n const date = new Date(ts),\n intlOpts = {\n hourCycle: \"h23\",\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n };\n\n if (timeZone) {\n intlOpts.timeZone = timeZone;\n }\n\n const modified = { timeZoneName: offsetFormat, ...intlOpts };\n\n const parsed = new Intl.DateTimeFormat(locale, modified)\n .formatToParts(date)\n .find((m) => m.type.toLowerCase() === \"timezonename\");\n return parsed ? parsed.value : null;\n}\n\n// signedOffset('-5', '30') -> -330\nexport function signedOffset(offHourStr, offMinuteStr) {\n let offHour = parseInt(offHourStr, 10);\n\n // don't || this because we want to preserve -0\n if (Number.isNaN(offHour)) {\n offHour = 0;\n }\n\n const offMin = parseInt(offMinuteStr, 10) || 0,\n offMinSigned = offHour < 0 || Object.is(offHour, -0) ? -offMin : offMin;\n return offHour * 60 + offMinSigned;\n}\n\n// COERCION\n\nexport function asNumber(value) {\n const numericValue = Number(value);\n if (typeof value === \"boolean\" || value === \"\" || Number.isNaN(numericValue))\n throw new InvalidArgumentError(`Invalid unit value ${value}`);\n return numericValue;\n}\n\nexport function normalizeObject(obj, normalizer) {\n const normalized = {};\n for (const u in obj) {\n if (hasOwnProperty(obj, u)) {\n const v = obj[u];\n if (v === undefined || v === null) continue;\n normalized[normalizer(u)] = asNumber(v);\n }\n }\n return normalized;\n}\n\nexport function formatOffset(offset, format) {\n const hours = Math.trunc(Math.abs(offset / 60)),\n minutes = Math.trunc(Math.abs(offset % 60)),\n sign = offset >= 0 ? \"+\" : \"-\";\n\n switch (format) {\n case \"short\":\n return `${sign}${padStart(hours, 2)}:${padStart(minutes, 2)}`;\n case \"narrow\":\n return `${sign}${hours}${minutes > 0 ? `:${minutes}` : \"\"}`;\n case \"techie\":\n return `${sign}${padStart(hours, 2)}${padStart(minutes, 2)}`;\n default:\n throw new RangeError(`Value format ${format} is out of range for property format`);\n }\n}\n\nexport function timeObject(obj) {\n return pick(obj, [\"hour\", \"minute\", \"second\", \"millisecond\"]);\n}\n","import SystemZone from \"./zones/systemZone.js\";\nimport IANAZone from \"./zones/IANAZone.js\";\nimport Locale from \"./impl/locale.js\";\n\nimport { normalizeZone } from \"./impl/zoneUtil.js\";\nimport { validateWeekSettings } from \"./impl/util.js\";\n\nlet now = () => Date.now(),\n defaultZone = \"system\",\n defaultLocale = null,\n defaultNumberingSystem = null,\n defaultOutputCalendar = null,\n twoDigitCutoffYear = 60,\n throwOnInvalid,\n defaultWeekSettings = null;\n\n/**\n * Settings contains static getters and setters that control Luxon's overall behavior. Luxon is a simple library with few options, but the ones it does have live here.\n */\nexport default class Settings {\n /**\n * Get the callback for returning the current timestamp.\n * @type {function}\n */\n static get now() {\n return now;\n }\n\n /**\n * Set the callback for returning the current timestamp.\n * The function should return a number, which will be interpreted as an Epoch millisecond count\n * @type {function}\n * @example Settings.now = () => Date.now() + 3000 // pretend it is 3 seconds in the future\n * @example Settings.now = () => 0 // always pretend it's Jan 1, 1970 at midnight in UTC time\n */\n static set now(n) {\n now = n;\n }\n\n /**\n * Set the default time zone to create DateTimes in. Does not affect existing instances.\n * Use the value \"system\" to reset this value to the system's time zone.\n * @type {string}\n */\n static set defaultZone(zone) {\n defaultZone = zone;\n }\n\n /**\n * Get the default time zone object currently used to create DateTimes. Does not affect existing instances.\n * The default value is the system's time zone (the one set on the machine that runs this code).\n * @type {Zone}\n */\n static get defaultZone() {\n return normalizeZone(defaultZone, SystemZone.instance);\n }\n\n /**\n * Get the default locale to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static get defaultLocale() {\n return defaultLocale;\n }\n\n /**\n * Set the default locale to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static set defaultLocale(locale) {\n defaultLocale = locale;\n }\n\n /**\n * Get the default numbering system to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static get defaultNumberingSystem() {\n return defaultNumberingSystem;\n }\n\n /**\n * Set the default numbering system to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static set defaultNumberingSystem(numberingSystem) {\n defaultNumberingSystem = numberingSystem;\n }\n\n /**\n * Get the default output calendar to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static get defaultOutputCalendar() {\n return defaultOutputCalendar;\n }\n\n /**\n * Set the default output calendar to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static set defaultOutputCalendar(outputCalendar) {\n defaultOutputCalendar = outputCalendar;\n }\n\n /**\n * @typedef {Object} WeekSettings\n * @property {number} firstDay\n * @property {number} minimalDays\n * @property {number[]} weekend\n */\n\n /**\n * @return {WeekSettings|null}\n */\n static get defaultWeekSettings() {\n return defaultWeekSettings;\n }\n\n /**\n * Allows overriding the default locale week settings, i.e. the start of the week, the weekend and\n * how many days are required in the first week of a year.\n * Does not affect existing instances.\n *\n * @param {WeekSettings|null} weekSettings\n */\n static set defaultWeekSettings(weekSettings) {\n defaultWeekSettings = validateWeekSettings(weekSettings);\n }\n\n /**\n * Get the cutoff year after which a string encoding a year as two digits is interpreted to occur in the current century.\n * @type {number}\n */\n static get twoDigitCutoffYear() {\n return twoDigitCutoffYear;\n }\n\n /**\n * Set the cutoff year after which a string encoding a year as two digits is interpreted to occur in the current century.\n * @type {number}\n * @example Settings.twoDigitCutoffYear = 0 // cut-off year is 0, so all 'yy' are interpreted as current century\n * @example Settings.twoDigitCutoffYear = 50 // '49' -> 1949; '50' -> 2050\n * @example Settings.twoDigitCutoffYear = 1950 // interpreted as 50\n * @example Settings.twoDigitCutoffYear = 2050 // ALSO interpreted as 50\n */\n static set twoDigitCutoffYear(cutoffYear) {\n twoDigitCutoffYear = cutoffYear % 100;\n }\n\n /**\n * Get whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals\n * @type {boolean}\n */\n static get throwOnInvalid() {\n return throwOnInvalid;\n }\n\n /**\n * Set whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals\n * @type {boolean}\n */\n static set throwOnInvalid(t) {\n throwOnInvalid = t;\n }\n\n /**\n * Reset Luxon's global caches. Should only be necessary in testing scenarios.\n * @return {void}\n */\n static resetCaches() {\n Locale.resetCache();\n IANAZone.resetCache();\n }\n}\n","export default class Invalid {\n constructor(reason, explanation) {\n this.reason = reason;\n this.explanation = explanation;\n }\n\n toMessage() {\n if (this.explanation) {\n return `${this.reason}: ${this.explanation}`;\n } else {\n return this.reason;\n }\n }\n}\n","import {\n integerBetween,\n isLeapYear,\n timeObject,\n daysInYear,\n daysInMonth,\n weeksInWeekYear,\n isInteger,\n isUndefined,\n} from \"./util.js\";\nimport Invalid from \"./invalid.js\";\nimport { ConflictingSpecificationError } from \"../errors.js\";\n\nconst nonLeapLadder = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334],\n leapLadder = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335];\n\nfunction unitOutOfRange(unit, value) {\n return new Invalid(\n \"unit out of range\",\n `you specified ${value} (of type ${typeof value}) as a ${unit}, which is invalid`\n );\n}\n\nexport function dayOfWeek(year, month, day) {\n const d = new Date(Date.UTC(year, month - 1, day));\n\n if (year < 100 && year >= 0) {\n d.setUTCFullYear(d.getUTCFullYear() - 1900);\n }\n\n const js = d.getUTCDay();\n\n return js === 0 ? 7 : js;\n}\n\nfunction computeOrdinal(year, month, day) {\n return day + (isLeapYear(year) ? leapLadder : nonLeapLadder)[month - 1];\n}\n\nfunction uncomputeOrdinal(year, ordinal) {\n const table = isLeapYear(year) ? leapLadder : nonLeapLadder,\n month0 = table.findIndex((i) => i < ordinal),\n day = ordinal - table[month0];\n return { month: month0 + 1, day };\n}\n\nexport function isoWeekdayToLocal(isoWeekday, startOfWeek) {\n return ((isoWeekday - startOfWeek + 7) % 7) + 1;\n}\n\n/**\n * @private\n */\n\nexport function gregorianToWeek(gregObj, minDaysInFirstWeek = 4, startOfWeek = 1) {\n const { year, month, day } = gregObj,\n ordinal = computeOrdinal(year, month, day),\n weekday = isoWeekdayToLocal(dayOfWeek(year, month, day), startOfWeek);\n\n let weekNumber = Math.floor((ordinal - weekday + 14 - minDaysInFirstWeek) / 7),\n weekYear;\n\n if (weekNumber < 1) {\n weekYear = year - 1;\n weekNumber = weeksInWeekYear(weekYear, minDaysInFirstWeek, startOfWeek);\n } else if (weekNumber > weeksInWeekYear(year, minDaysInFirstWeek, startOfWeek)) {\n weekYear = year + 1;\n weekNumber = 1;\n } else {\n weekYear = year;\n }\n\n return { weekYear, weekNumber, weekday, ...timeObject(gregObj) };\n}\n\nexport function weekToGregorian(weekData, minDaysInFirstWeek = 4, startOfWeek = 1) {\n const { weekYear, weekNumber, weekday } = weekData,\n weekdayOfJan4 = isoWeekdayToLocal(dayOfWeek(weekYear, 1, minDaysInFirstWeek), startOfWeek),\n yearInDays = daysInYear(weekYear);\n\n let ordinal = weekNumber * 7 + weekday - weekdayOfJan4 - 7 + minDaysInFirstWeek,\n year;\n\n if (ordinal < 1) {\n year = weekYear - 1;\n ordinal += daysInYear(year);\n } else if (ordinal > yearInDays) {\n year = weekYear + 1;\n ordinal -= daysInYear(weekYear);\n } else {\n year = weekYear;\n }\n\n const { month, day } = uncomputeOrdinal(year, ordinal);\n return { year, month, day, ...timeObject(weekData) };\n}\n\nexport function gregorianToOrdinal(gregData) {\n const { year, month, day } = gregData;\n const ordinal = computeOrdinal(year, month, day);\n return { year, ordinal, ...timeObject(gregData) };\n}\n\nexport function ordinalToGregorian(ordinalData) {\n const { year, ordinal } = ordinalData;\n const { month, day } = uncomputeOrdinal(year, ordinal);\n return { year, month, day, ...timeObject(ordinalData) };\n}\n\n/**\n * Check if local week units like localWeekday are used in obj.\n * If so, validates that they are not mixed with ISO week units and then copies them to the normal week unit properties.\n * Modifies obj in-place!\n * @param obj the object values\n */\nexport function usesLocalWeekValues(obj, loc) {\n const hasLocaleWeekData =\n !isUndefined(obj.localWeekday) ||\n !isUndefined(obj.localWeekNumber) ||\n !isUndefined(obj.localWeekYear);\n if (hasLocaleWeekData) {\n const hasIsoWeekData =\n !isUndefined(obj.weekday) || !isUndefined(obj.weekNumber) || !isUndefined(obj.weekYear);\n\n if (hasIsoWeekData) {\n throw new ConflictingSpecificationError(\n \"Cannot mix locale-based week fields with ISO-based week fields\"\n );\n }\n if (!isUndefined(obj.localWeekday)) obj.weekday = obj.localWeekday;\n if (!isUndefined(obj.localWeekNumber)) obj.weekNumber = obj.localWeekNumber;\n if (!isUndefined(obj.localWeekYear)) obj.weekYear = obj.localWeekYear;\n delete obj.localWeekday;\n delete obj.localWeekNumber;\n delete obj.localWeekYear;\n return {\n minDaysInFirstWeek: loc.getMinDaysInFirstWeek(),\n startOfWeek: loc.getStartOfWeek(),\n };\n } else {\n return { minDaysInFirstWeek: 4, startOfWeek: 1 };\n }\n}\n\nexport function hasInvalidWeekData(obj, minDaysInFirstWeek = 4, startOfWeek = 1) {\n const validYear = isInteger(obj.weekYear),\n validWeek = integerBetween(\n obj.weekNumber,\n 1,\n weeksInWeekYear(obj.weekYear, minDaysInFirstWeek, startOfWeek)\n ),\n validWeekday = integerBetween(obj.weekday, 1, 7);\n\n if (!validYear) {\n return unitOutOfRange(\"weekYear\", obj.weekYear);\n } else if (!validWeek) {\n return unitOutOfRange(\"week\", obj.weekNumber);\n } else if (!validWeekday) {\n return unitOutOfRange(\"weekday\", obj.weekday);\n } else return false;\n}\n\nexport function hasInvalidOrdinalData(obj) {\n const validYear = isInteger(obj.year),\n validOrdinal = integerBetween(obj.ordinal, 1, daysInYear(obj.year));\n\n if (!validYear) {\n return unitOutOfRange(\"year\", obj.year);\n } else if (!validOrdinal) {\n return unitOutOfRange(\"ordinal\", obj.ordinal);\n } else return false;\n}\n\nexport function hasInvalidGregorianData(obj) {\n const validYear = isInteger(obj.year),\n validMonth = integerBetween(obj.month, 1, 12),\n validDay = integerBetween(obj.day, 1, daysInMonth(obj.year, obj.month));\n\n if (!validYear) {\n return unitOutOfRange(\"year\", obj.year);\n } else if (!validMonth) {\n return unitOutOfRange(\"month\", obj.month);\n } else if (!validDay) {\n return unitOutOfRange(\"day\", obj.day);\n } else return false;\n}\n\nexport function hasInvalidTimeData(obj) {\n const { hour, minute, second, millisecond } = obj;\n const validHour =\n integerBetween(hour, 0, 23) ||\n (hour === 24 && minute === 0 && second === 0 && millisecond === 0),\n validMinute = integerBetween(minute, 0, 59),\n validSecond = integerBetween(second, 0, 59),\n validMillisecond = integerBetween(millisecond, 0, 999);\n\n if (!validHour) {\n return unitOutOfRange(\"hour\", hour);\n } else if (!validMinute) {\n return unitOutOfRange(\"minute\", minute);\n } else if (!validSecond) {\n return unitOutOfRange(\"second\", second);\n } else if (!validMillisecond) {\n return unitOutOfRange(\"millisecond\", millisecond);\n } else return false;\n}\n","import * as English from \"./english.js\";\nimport * as Formats from \"./formats.js\";\nimport { padStart } from \"./util.js\";\n\nfunction stringifyTokens(splits, tokenToString) {\n let s = \"\";\n for (const token of splits) {\n if (token.literal) {\n s += token.val;\n } else {\n s += tokenToString(token.val);\n }\n }\n return s;\n}\n\nconst macroTokenToFormatOpts = {\n D: Formats.DATE_SHORT,\n DD: Formats.DATE_MED,\n DDD: Formats.DATE_FULL,\n DDDD: Formats.DATE_HUGE,\n t: Formats.TIME_SIMPLE,\n tt: Formats.TIME_WITH_SECONDS,\n ttt: Formats.TIME_WITH_SHORT_OFFSET,\n tttt: Formats.TIME_WITH_LONG_OFFSET,\n T: Formats.TIME_24_SIMPLE,\n TT: Formats.TIME_24_WITH_SECONDS,\n TTT: Formats.TIME_24_WITH_SHORT_OFFSET,\n TTTT: Formats.TIME_24_WITH_LONG_OFFSET,\n f: Formats.DATETIME_SHORT,\n ff: Formats.DATETIME_MED,\n fff: Formats.DATETIME_FULL,\n ffff: Formats.DATETIME_HUGE,\n F: Formats.DATETIME_SHORT_WITH_SECONDS,\n FF: Formats.DATETIME_MED_WITH_SECONDS,\n FFF: Formats.DATETIME_FULL_WITH_SECONDS,\n FFFF: Formats.DATETIME_HUGE_WITH_SECONDS,\n};\n\n/**\n * @private\n */\n\nexport default class Formatter {\n static create(locale, opts = {}) {\n return new Formatter(locale, opts);\n }\n\n static parseFormat(fmt) {\n // white-space is always considered a literal in user-provided formats\n // the \" \" token has a special meaning (see unitForToken)\n\n let current = null,\n currentFull = \"\",\n bracketed = false;\n const splits = [];\n for (let i = 0; i < fmt.length; i++) {\n const c = fmt.charAt(i);\n if (c === \"'\") {\n if (currentFull.length > 0) {\n splits.push({ literal: bracketed || /^\\s+$/.test(currentFull), val: currentFull });\n }\n current = null;\n currentFull = \"\";\n bracketed = !bracketed;\n } else if (bracketed) {\n currentFull += c;\n } else if (c === current) {\n currentFull += c;\n } else {\n if (currentFull.length > 0) {\n splits.push({ literal: /^\\s+$/.test(currentFull), val: currentFull });\n }\n currentFull = c;\n current = c;\n }\n }\n\n if (currentFull.length > 0) {\n splits.push({ literal: bracketed || /^\\s+$/.test(currentFull), val: currentFull });\n }\n\n return splits;\n }\n\n static macroTokenToFormatOpts(token) {\n return macroTokenToFormatOpts[token];\n }\n\n constructor(locale, formatOpts) {\n this.opts = formatOpts;\n this.loc = locale;\n this.systemLoc = null;\n }\n\n formatWithSystemDefault(dt, opts) {\n if (this.systemLoc === null) {\n this.systemLoc = this.loc.redefaultToSystem();\n }\n const df = this.systemLoc.dtFormatter(dt, { ...this.opts, ...opts });\n return df.format();\n }\n\n dtFormatter(dt, opts = {}) {\n return this.loc.dtFormatter(dt, { ...this.opts, ...opts });\n }\n\n formatDateTime(dt, opts) {\n return this.dtFormatter(dt, opts).format();\n }\n\n formatDateTimeParts(dt, opts) {\n return this.dtFormatter(dt, opts).formatToParts();\n }\n\n formatInterval(interval, opts) {\n const df = this.dtFormatter(interval.start, opts);\n return df.dtf.formatRange(interval.start.toJSDate(), interval.end.toJSDate());\n }\n\n resolvedOptions(dt, opts) {\n return this.dtFormatter(dt, opts).resolvedOptions();\n }\n\n num(n, p = 0) {\n // we get some perf out of doing this here, annoyingly\n if (this.opts.forceSimple) {\n return padStart(n, p);\n }\n\n const opts = { ...this.opts };\n\n if (p > 0) {\n opts.padTo = p;\n }\n\n return this.loc.numberFormatter(opts).format(n);\n }\n\n formatDateTimeFromString(dt, fmt) {\n const knownEnglish = this.loc.listingMode() === \"en\",\n useDateTimeFormatter = this.loc.outputCalendar && this.loc.outputCalendar !== \"gregory\",\n string = (opts, extract) => this.loc.extract(dt, opts, extract),\n formatOffset = (opts) => {\n if (dt.isOffsetFixed && dt.offset === 0 && opts.allowZ) {\n return \"Z\";\n }\n\n return dt.isValid ? dt.zone.formatOffset(dt.ts, opts.format) : \"\";\n },\n meridiem = () =>\n knownEnglish\n ? English.meridiemForDateTime(dt)\n : string({ hour: \"numeric\", hourCycle: \"h12\" }, \"dayperiod\"),\n month = (length, standalone) =>\n knownEnglish\n ? English.monthForDateTime(dt, length)\n : string(standalone ? { month: length } : { month: length, day: \"numeric\" }, \"month\"),\n weekday = (length, standalone) =>\n knownEnglish\n ? English.weekdayForDateTime(dt, length)\n : string(\n standalone ? { weekday: length } : { weekday: length, month: \"long\", day: \"numeric\" },\n \"weekday\"\n ),\n maybeMacro = (token) => {\n const formatOpts = Formatter.macroTokenToFormatOpts(token);\n if (formatOpts) {\n return this.formatWithSystemDefault(dt, formatOpts);\n } else {\n return token;\n }\n },\n era = (length) =>\n knownEnglish ? English.eraForDateTime(dt, length) : string({ era: length }, \"era\"),\n tokenToString = (token) => {\n // Where possible: https://cldr.unicode.org/translation/date-time/date-time-symbols\n switch (token) {\n // ms\n case \"S\":\n return this.num(dt.millisecond);\n case \"u\":\n // falls through\n case \"SSS\":\n return this.num(dt.millisecond, 3);\n // seconds\n case \"s\":\n return this.num(dt.second);\n case \"ss\":\n return this.num(dt.second, 2);\n // fractional seconds\n case \"uu\":\n return this.num(Math.floor(dt.millisecond / 10), 2);\n case \"uuu\":\n return this.num(Math.floor(dt.millisecond / 100));\n // minutes\n case \"m\":\n return this.num(dt.minute);\n case \"mm\":\n return this.num(dt.minute, 2);\n // hours\n case \"h\":\n return this.num(dt.hour % 12 === 0 ? 12 : dt.hour % 12);\n case \"hh\":\n return this.num(dt.hour % 12 === 0 ? 12 : dt.hour % 12, 2);\n case \"H\":\n return this.num(dt.hour);\n case \"HH\":\n return this.num(dt.hour, 2);\n // offset\n case \"Z\":\n // like +6\n return formatOffset({ format: \"narrow\", allowZ: this.opts.allowZ });\n case \"ZZ\":\n // like +06:00\n return formatOffset({ format: \"short\", allowZ: this.opts.allowZ });\n case \"ZZZ\":\n // like +0600\n return formatOffset({ format: \"techie\", allowZ: this.opts.allowZ });\n case \"ZZZZ\":\n // like EST\n return dt.zone.offsetName(dt.ts, { format: \"short\", locale: this.loc.locale });\n case \"ZZZZZ\":\n // like Eastern Standard Time\n return dt.zone.offsetName(dt.ts, { format: \"long\", locale: this.loc.locale });\n // zone\n case \"z\":\n // like America/New_York\n return dt.zoneName;\n // meridiems\n case \"a\":\n return meridiem();\n // dates\n case \"d\":\n return useDateTimeFormatter ? string({ day: \"numeric\" }, \"day\") : this.num(dt.day);\n case \"dd\":\n return useDateTimeFormatter ? string({ day: \"2-digit\" }, \"day\") : this.num(dt.day, 2);\n // weekdays - standalone\n case \"c\":\n // like 1\n return this.num(dt.weekday);\n case \"ccc\":\n // like 'Tues'\n return weekday(\"short\", true);\n case \"cccc\":\n // like 'Tuesday'\n return weekday(\"long\", true);\n case \"ccccc\":\n // like 'T'\n return weekday(\"narrow\", true);\n // weekdays - format\n case \"E\":\n // like 1\n return this.num(dt.weekday);\n case \"EEE\":\n // like 'Tues'\n return weekday(\"short\", false);\n case \"EEEE\":\n // like 'Tuesday'\n return weekday(\"long\", false);\n case \"EEEEE\":\n // like 'T'\n return weekday(\"narrow\", false);\n // months - standalone\n case \"L\":\n // like 1\n return useDateTimeFormatter\n ? string({ month: \"numeric\", day: \"numeric\" }, \"month\")\n : this.num(dt.month);\n case \"LL\":\n // like 01, doesn't seem to work\n return useDateTimeFormatter\n ? string({ month: \"2-digit\", day: \"numeric\" }, \"month\")\n : this.num(dt.month, 2);\n case \"LLL\":\n // like Jan\n return month(\"short\", true);\n case \"LLLL\":\n // like January\n return month(\"long\", true);\n case \"LLLLL\":\n // like J\n return month(\"narrow\", true);\n // months - format\n case \"M\":\n // like 1\n return useDateTimeFormatter\n ? string({ month: \"numeric\" }, \"month\")\n : this.num(dt.month);\n case \"MM\":\n // like 01\n return useDateTimeFormatter\n ? string({ month: \"2-digit\" }, \"month\")\n : this.num(dt.month, 2);\n case \"MMM\":\n // like Jan\n return month(\"short\", false);\n case \"MMMM\":\n // like January\n return month(\"long\", false);\n case \"MMMMM\":\n // like J\n return month(\"narrow\", false);\n // years\n case \"y\":\n // like 2014\n return useDateTimeFormatter ? string({ year: \"numeric\" }, \"year\") : this.num(dt.year);\n case \"yy\":\n // like 14\n return useDateTimeFormatter\n ? string({ year: \"2-digit\" }, \"year\")\n : this.num(dt.year.toString().slice(-2), 2);\n case \"yyyy\":\n // like 0012\n return useDateTimeFormatter\n ? string({ year: \"numeric\" }, \"year\")\n : this.num(dt.year, 4);\n case \"yyyyyy\":\n // like 000012\n return useDateTimeFormatter\n ? string({ year: \"numeric\" }, \"year\")\n : this.num(dt.year, 6);\n // eras\n case \"G\":\n // like AD\n return era(\"short\");\n case \"GG\":\n // like Anno Domini\n return era(\"long\");\n case \"GGGGG\":\n return era(\"narrow\");\n case \"kk\":\n return this.num(dt.weekYear.toString().slice(-2), 2);\n case \"kkkk\":\n return this.num(dt.weekYear, 4);\n case \"W\":\n return this.num(dt.weekNumber);\n case \"WW\":\n return this.num(dt.weekNumber, 2);\n case \"n\":\n return this.num(dt.localWeekNumber);\n case \"nn\":\n return this.num(dt.localWeekNumber, 2);\n case \"ii\":\n return this.num(dt.localWeekYear.toString().slice(-2), 2);\n case \"iiii\":\n return this.num(dt.localWeekYear, 4);\n case \"o\":\n return this.num(dt.ordinal);\n case \"ooo\":\n return this.num(dt.ordinal, 3);\n case \"q\":\n // like 1\n return this.num(dt.quarter);\n case \"qq\":\n // like 01\n return this.num(dt.quarter, 2);\n case \"X\":\n return this.num(Math.floor(dt.ts / 1000));\n case \"x\":\n return this.num(dt.ts);\n default:\n return maybeMacro(token);\n }\n };\n\n return stringifyTokens(Formatter.parseFormat(fmt), tokenToString);\n }\n\n formatDurationFromString(dur, fmt) {\n const tokenToField = (token) => {\n switch (token[0]) {\n case \"S\":\n return \"millisecond\";\n case \"s\":\n return \"second\";\n case \"m\":\n return \"minute\";\n case \"h\":\n return \"hour\";\n case \"d\":\n return \"day\";\n case \"w\":\n return \"week\";\n case \"M\":\n return \"month\";\n case \"y\":\n return \"year\";\n default:\n return null;\n }\n },\n tokenToString = (lildur) => (token) => {\n const mapped = tokenToField(token);\n if (mapped) {\n return this.num(lildur.get(mapped), token.length);\n } else {\n return token;\n }\n },\n tokens = Formatter.parseFormat(fmt),\n realTokens = tokens.reduce(\n (found, { literal, val }) => (literal ? found : found.concat(val)),\n []\n ),\n collapsed = dur.shiftTo(...realTokens.map(tokenToField).filter((t) => t));\n return stringifyTokens(tokens, tokenToString(collapsed));\n }\n}\n","import {\n untruncateYear,\n signedOffset,\n parseInteger,\n parseMillis,\n isUndefined,\n parseFloating,\n} from \"./util.js\";\nimport * as English from \"./english.js\";\nimport FixedOffsetZone from \"../zones/fixedOffsetZone.js\";\nimport IANAZone from \"../zones/IANAZone.js\";\n\n/*\n * This file handles parsing for well-specified formats. Here's how it works:\n * Two things go into parsing: a regex to match with and an extractor to take apart the groups in the match.\n * An extractor is just a function that takes a regex match array and returns a { year: ..., month: ... } object\n * parse() does the work of executing the regex and applying the extractor. It takes multiple regex/extractor pairs to try in sequence.\n * Extractors can take a \"cursor\" representing the offset in the match to look at. This makes it easy to combine extractors.\n * combineExtractors() does the work of combining them, keeping track of the cursor through multiple extractions.\n * Some extractions are super dumb and simpleParse and fromStrings help DRY them.\n */\n\nconst ianaRegex = /[A-Za-z_+-]{1,256}(?::?\\/[A-Za-z0-9_+-]{1,256}(?:\\/[A-Za-z0-9_+-]{1,256})?)?/;\n\nfunction combineRegexes(...regexes) {\n const full = regexes.reduce((f, r) => f + r.source, \"\");\n return RegExp(`^${full}$`);\n}\n\nfunction combineExtractors(...extractors) {\n return (m) =>\n extractors\n .reduce(\n ([mergedVals, mergedZone, cursor], ex) => {\n const [val, zone, next] = ex(m, cursor);\n return [{ ...mergedVals, ...val }, zone || mergedZone, next];\n },\n [{}, null, 1]\n )\n .slice(0, 2);\n}\n\nfunction parse(s, ...patterns) {\n if (s == null) {\n return [null, null];\n }\n\n for (const [regex, extractor] of patterns) {\n const m = regex.exec(s);\n if (m) {\n return extractor(m);\n }\n }\n return [null, null];\n}\n\nfunction simpleParse(...keys) {\n return (match, cursor) => {\n const ret = {};\n let i;\n\n for (i = 0; i < keys.length; i++) {\n ret[keys[i]] = parseInteger(match[cursor + i]);\n }\n return [ret, null, cursor + i];\n };\n}\n\n// ISO and SQL parsing\nconst offsetRegex = /(?:(Z)|([+-]\\d\\d)(?::?(\\d\\d))?)/;\nconst isoExtendedZone = `(?:${offsetRegex.source}?(?:\\\\[(${ianaRegex.source})\\\\])?)?`;\nconst isoTimeBaseRegex = /(\\d\\d)(?::?(\\d\\d)(?::?(\\d\\d)(?:[.,](\\d{1,30}))?)?)?/;\nconst isoTimeRegex = RegExp(`${isoTimeBaseRegex.source}${isoExtendedZone}`);\nconst isoTimeExtensionRegex = RegExp(`(?:T${isoTimeRegex.source})?`);\nconst isoYmdRegex = /([+-]\\d{6}|\\d{4})(?:-?(\\d\\d)(?:-?(\\d\\d))?)?/;\nconst isoWeekRegex = /(\\d{4})-?W(\\d\\d)(?:-?(\\d))?/;\nconst isoOrdinalRegex = /(\\d{4})-?(\\d{3})/;\nconst extractISOWeekData = simpleParse(\"weekYear\", \"weekNumber\", \"weekDay\");\nconst extractISOOrdinalData = simpleParse(\"year\", \"ordinal\");\nconst sqlYmdRegex = /(\\d{4})-(\\d\\d)-(\\d\\d)/; // dumbed-down version of the ISO one\nconst sqlTimeRegex = RegExp(\n `${isoTimeBaseRegex.source} ?(?:${offsetRegex.source}|(${ianaRegex.source}))?`\n);\nconst sqlTimeExtensionRegex = RegExp(`(?: ${sqlTimeRegex.source})?`);\n\nfunction int(match, pos, fallback) {\n const m = match[pos];\n return isUndefined(m) ? fallback : parseInteger(m);\n}\n\nfunction extractISOYmd(match, cursor) {\n const item = {\n year: int(match, cursor),\n month: int(match, cursor + 1, 1),\n day: int(match, cursor + 2, 1),\n };\n\n return [item, null, cursor + 3];\n}\n\nfunction extractISOTime(match, cursor) {\n const item = {\n hours: int(match, cursor, 0),\n minutes: int(match, cursor + 1, 0),\n seconds: int(match, cursor + 2, 0),\n milliseconds: parseMillis(match[cursor + 3]),\n };\n\n return [item, null, cursor + 4];\n}\n\nfunction extractISOOffset(match, cursor) {\n const local = !match[cursor] && !match[cursor + 1],\n fullOffset = signedOffset(match[cursor + 1], match[cursor + 2]),\n zone = local ? null : FixedOffsetZone.instance(fullOffset);\n return [{}, zone, cursor + 3];\n}\n\nfunction extractIANAZone(match, cursor) {\n const zone = match[cursor] ? IANAZone.create(match[cursor]) : null;\n return [{}, zone, cursor + 1];\n}\n\n// ISO time parsing\n\nconst isoTimeOnly = RegExp(`^T?${isoTimeBaseRegex.source}$`);\n\n// ISO duration parsing\n\nconst isoDuration =\n /^-?P(?:(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)Y)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)M)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)W)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)D)?(?:T(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)H)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)M)?(?:(-?\\d{1,20})(?:[.,](-?\\d{1,20}))?S)?)?)$/;\n\nfunction extractISODuration(match) {\n const [s, yearStr, monthStr, weekStr, dayStr, hourStr, minuteStr, secondStr, millisecondsStr] =\n match;\n\n const hasNegativePrefix = s[0] === \"-\";\n const negativeSeconds = secondStr && secondStr[0] === \"-\";\n\n const maybeNegate = (num, force = false) =>\n num !== undefined && (force || (num && hasNegativePrefix)) ? -num : num;\n\n return [\n {\n years: maybeNegate(parseFloating(yearStr)),\n months: maybeNegate(parseFloating(monthStr)),\n weeks: maybeNegate(parseFloating(weekStr)),\n days: maybeNegate(parseFloating(dayStr)),\n hours: maybeNegate(parseFloating(hourStr)),\n minutes: maybeNegate(parseFloating(minuteStr)),\n seconds: maybeNegate(parseFloating(secondStr), secondStr === \"-0\"),\n milliseconds: maybeNegate(parseMillis(millisecondsStr), negativeSeconds),\n },\n ];\n}\n\n// These are a little braindead. EDT *should* tell us that we're in, say, America/New_York\n// and not just that we're in -240 *right now*. But since I don't think these are used that often\n// I'm just going to ignore that\nconst obsOffsets = {\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n};\n\nfunction fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n const result = {\n year: yearStr.length === 2 ? untruncateYear(parseInteger(yearStr)) : parseInteger(yearStr),\n month: English.monthsShort.indexOf(monthStr) + 1,\n day: parseInteger(dayStr),\n hour: parseInteger(hourStr),\n minute: parseInteger(minuteStr),\n };\n\n if (secondStr) result.second = parseInteger(secondStr);\n if (weekdayStr) {\n result.weekday =\n weekdayStr.length > 3\n ? English.weekdaysLong.indexOf(weekdayStr) + 1\n : English.weekdaysShort.indexOf(weekdayStr) + 1;\n }\n\n return result;\n}\n\n// RFC 2822/5322\nconst rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\\d\\d)(\\d\\d)))$/;\n\nfunction extractRFC2822(match) {\n const [\n ,\n weekdayStr,\n dayStr,\n monthStr,\n yearStr,\n hourStr,\n minuteStr,\n secondStr,\n obsOffset,\n milOffset,\n offHourStr,\n offMinuteStr,\n ] = match,\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n\n let offset;\n if (obsOffset) {\n offset = obsOffsets[obsOffset];\n } else if (milOffset) {\n offset = 0;\n } else {\n offset = signedOffset(offHourStr, offMinuteStr);\n }\n\n return [result, new FixedOffsetZone(offset)];\n}\n\nfunction preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, \" \")\n .replace(/(\\s\\s+)/g, \" \")\n .trim();\n}\n\n// http date\n\nconst rfc1123 =\n /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\\d\\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\\d{4}) (\\d\\d):(\\d\\d):(\\d\\d) GMT$/,\n rfc850 =\n /^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\\d\\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\\d\\d) (\\d\\d):(\\d\\d):(\\d\\d) GMT$/,\n ascii =\n /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \\d|\\d\\d) (\\d\\d):(\\d\\d):(\\d\\d) (\\d{4})$/;\n\nfunction extractRFC1123Or850(match) {\n const [, weekdayStr, dayStr, monthStr, yearStr, hourStr, minuteStr, secondStr] = match,\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n return [result, FixedOffsetZone.utcInstance];\n}\n\nfunction extractASCII(match) {\n const [, weekdayStr, monthStr, dayStr, hourStr, minuteStr, secondStr, yearStr] = match,\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n return [result, FixedOffsetZone.utcInstance];\n}\n\nconst isoYmdWithTimeExtensionRegex = combineRegexes(isoYmdRegex, isoTimeExtensionRegex);\nconst isoWeekWithTimeExtensionRegex = combineRegexes(isoWeekRegex, isoTimeExtensionRegex);\nconst isoOrdinalWithTimeExtensionRegex = combineRegexes(isoOrdinalRegex, isoTimeExtensionRegex);\nconst isoTimeCombinedRegex = combineRegexes(isoTimeRegex);\n\nconst extractISOYmdTimeAndOffset = combineExtractors(\n extractISOYmd,\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\nconst extractISOWeekTimeAndOffset = combineExtractors(\n extractISOWeekData,\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\nconst extractISOOrdinalDateAndTime = combineExtractors(\n extractISOOrdinalData,\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\nconst extractISOTimeAndOffset = combineExtractors(\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\n\n/*\n * @private\n */\n\nexport function parseISODate(s) {\n return parse(\n s,\n [isoYmdWithTimeExtensionRegex, extractISOYmdTimeAndOffset],\n [isoWeekWithTimeExtensionRegex, extractISOWeekTimeAndOffset],\n [isoOrdinalWithTimeExtensionRegex, extractISOOrdinalDateAndTime],\n [isoTimeCombinedRegex, extractISOTimeAndOffset]\n );\n}\n\nexport function parseRFC2822Date(s) {\n return parse(preprocessRFC2822(s), [rfc2822, extractRFC2822]);\n}\n\nexport function parseHTTPDate(s) {\n return parse(\n s,\n [rfc1123, extractRFC1123Or850],\n [rfc850, extractRFC1123Or850],\n [ascii, extractASCII]\n );\n}\n\nexport function parseISODuration(s) {\n return parse(s, [isoDuration, extractISODuration]);\n}\n\nconst extractISOTimeOnly = combineExtractors(extractISOTime);\n\nexport function parseISOTimeOnly(s) {\n return parse(s, [isoTimeOnly, extractISOTimeOnly]);\n}\n\nconst sqlYmdWithTimeExtensionRegex = combineRegexes(sqlYmdRegex, sqlTimeExtensionRegex);\nconst sqlTimeCombinedRegex = combineRegexes(sqlTimeRegex);\n\nconst extractISOTimeOffsetAndIANAZone = combineExtractors(\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\n\nexport function parseSQL(s) {\n return parse(\n s,\n [sqlYmdWithTimeExtensionRegex, extractISOYmdTimeAndOffset],\n [sqlTimeCombinedRegex, extractISOTimeOffsetAndIANAZone]\n );\n}\n","import { InvalidArgumentError, InvalidDurationError, InvalidUnitError } from \"./errors.js\";\nimport Formatter from \"./impl/formatter.js\";\nimport Invalid from \"./impl/invalid.js\";\nimport Locale from \"./impl/locale.js\";\nimport { parseISODuration, parseISOTimeOnly } from \"./impl/regexParser.js\";\nimport {\n asNumber,\n hasOwnProperty,\n isNumber,\n isUndefined,\n normalizeObject,\n roundTo,\n} from \"./impl/util.js\";\nimport Settings from \"./settings.js\";\nimport DateTime from \"./datetime.js\";\n\nconst INVALID = \"Invalid Duration\";\n\n// unit conversion constants\nexport const lowOrderMatrix = {\n weeks: {\n days: 7,\n hours: 7 * 24,\n minutes: 7 * 24 * 60,\n seconds: 7 * 24 * 60 * 60,\n milliseconds: 7 * 24 * 60 * 60 * 1000,\n },\n days: {\n hours: 24,\n minutes: 24 * 60,\n seconds: 24 * 60 * 60,\n milliseconds: 24 * 60 * 60 * 1000,\n },\n hours: { minutes: 60, seconds: 60 * 60, milliseconds: 60 * 60 * 1000 },\n minutes: { seconds: 60, milliseconds: 60 * 1000 },\n seconds: { milliseconds: 1000 },\n },\n casualMatrix = {\n years: {\n quarters: 4,\n months: 12,\n weeks: 52,\n days: 365,\n hours: 365 * 24,\n minutes: 365 * 24 * 60,\n seconds: 365 * 24 * 60 * 60,\n milliseconds: 365 * 24 * 60 * 60 * 1000,\n },\n quarters: {\n months: 3,\n weeks: 13,\n days: 91,\n hours: 91 * 24,\n minutes: 91 * 24 * 60,\n seconds: 91 * 24 * 60 * 60,\n milliseconds: 91 * 24 * 60 * 60 * 1000,\n },\n months: {\n weeks: 4,\n days: 30,\n hours: 30 * 24,\n minutes: 30 * 24 * 60,\n seconds: 30 * 24 * 60 * 60,\n milliseconds: 30 * 24 * 60 * 60 * 1000,\n },\n\n ...lowOrderMatrix,\n },\n daysInYearAccurate = 146097.0 / 400,\n daysInMonthAccurate = 146097.0 / 4800,\n accurateMatrix = {\n years: {\n quarters: 4,\n months: 12,\n weeks: daysInYearAccurate / 7,\n days: daysInYearAccurate,\n hours: daysInYearAccurate * 24,\n minutes: daysInYearAccurate * 24 * 60,\n seconds: daysInYearAccurate * 24 * 60 * 60,\n milliseconds: daysInYearAccurate * 24 * 60 * 60 * 1000,\n },\n quarters: {\n months: 3,\n weeks: daysInYearAccurate / 28,\n days: daysInYearAccurate / 4,\n hours: (daysInYearAccurate * 24) / 4,\n minutes: (daysInYearAccurate * 24 * 60) / 4,\n seconds: (daysInYearAccurate * 24 * 60 * 60) / 4,\n milliseconds: (daysInYearAccurate * 24 * 60 * 60 * 1000) / 4,\n },\n months: {\n weeks: daysInMonthAccurate / 7,\n days: daysInMonthAccurate,\n hours: daysInMonthAccurate * 24,\n minutes: daysInMonthAccurate * 24 * 60,\n seconds: daysInMonthAccurate * 24 * 60 * 60,\n milliseconds: daysInMonthAccurate * 24 * 60 * 60 * 1000,\n },\n ...lowOrderMatrix,\n };\n\n// units ordered by size\nconst orderedUnits = [\n \"years\",\n \"quarters\",\n \"months\",\n \"weeks\",\n \"days\",\n \"hours\",\n \"minutes\",\n \"seconds\",\n \"milliseconds\",\n];\n\nconst reverseUnits = orderedUnits.slice(0).reverse();\n\n// clone really means \"create another instance just like this one, but with these changes\"\nfunction clone(dur, alts, clear = false) {\n // deep merge for vals\n const conf = {\n values: clear ? alts.values : { ...dur.values, ...(alts.values || {}) },\n loc: dur.loc.clone(alts.loc),\n conversionAccuracy: alts.conversionAccuracy || dur.conversionAccuracy,\n matrix: alts.matrix || dur.matrix,\n };\n return new Duration(conf);\n}\n\nfunction durationToMillis(matrix, vals) {\n let sum = vals.milliseconds ?? 0;\n for (const unit of reverseUnits.slice(1)) {\n if (vals[unit]) {\n sum += vals[unit] * matrix[unit][\"milliseconds\"];\n }\n }\n return sum;\n}\n\n// NB: mutates parameters\nfunction normalizeValues(matrix, vals) {\n // the logic below assumes the overall value of the duration is positive\n // if this is not the case, factor is used to make it so\n const factor = durationToMillis(matrix, vals) < 0 ? -1 : 1;\n\n orderedUnits.reduceRight((previous, current) => {\n if (!isUndefined(vals[current])) {\n if (previous) {\n const previousVal = vals[previous] * factor;\n const conv = matrix[current][previous];\n\n // if (previousVal < 0):\n // lower order unit is negative (e.g. { years: 2, days: -2 })\n // normalize this by reducing the higher order unit by the appropriate amount\n // and increasing the lower order unit\n // this can never make the higher order unit negative, because this function only operates\n // on positive durations, so the amount of time represented by the lower order unit cannot\n // be larger than the higher order unit\n // else:\n // lower order unit is positive (e.g. { years: 2, days: 450 } or { years: -2, days: 450 })\n // in this case we attempt to convert as much as possible from the lower order unit into\n // the higher order one\n //\n // Math.floor takes care of both of these cases, rounding away from 0\n // if previousVal < 0 it makes the absolute value larger\n // if previousVal >= it makes the absolute value smaller\n const rollUp = Math.floor(previousVal / conv);\n vals[current] += rollUp * factor;\n vals[previous] -= rollUp * conv * factor;\n }\n return current;\n } else {\n return previous;\n }\n }, null);\n\n // try to convert any decimals into smaller units if possible\n // for example for { years: 2.5, days: 0, seconds: 0 } we want to get { years: 2, days: 182, hours: 12 }\n orderedUnits.reduce((previous, current) => {\n if (!isUndefined(vals[current])) {\n if (previous) {\n const fraction = vals[previous] % 1;\n vals[previous] -= fraction;\n vals[current] += fraction * matrix[previous][current];\n }\n return current;\n } else {\n return previous;\n }\n }, null);\n}\n\n// Remove all properties with a value of 0 from an object\nfunction removeZeroes(vals) {\n const newVals = {};\n for (const [key, value] of Object.entries(vals)) {\n if (value !== 0) {\n newVals[key] = value;\n }\n }\n return newVals;\n}\n\n/**\n * A Duration object represents a period of time, like \"2 months\" or \"1 day, 1 hour\". Conceptually, it's just a map of units to their quantities, accompanied by some additional configuration and methods for creating, parsing, interrogating, transforming, and formatting them. They can be used on their own or in conjunction with other Luxon types; for example, you can use {@link DateTime#plus} to add a Duration object to a DateTime, producing another DateTime.\n *\n * Here is a brief overview of commonly used methods and getters in Duration:\n *\n * * **Creation** To create a Duration, use {@link Duration.fromMillis}, {@link Duration.fromObject}, or {@link Duration.fromISO}.\n * * **Unit values** See the {@link Duration#years}, {@link Duration#months}, {@link Duration#weeks}, {@link Duration#days}, {@link Duration#hours}, {@link Duration#minutes}, {@link Duration#seconds}, {@link Duration#milliseconds} accessors.\n * * **Configuration** See {@link Duration#locale} and {@link Duration#numberingSystem} accessors.\n * * **Transformation** To create new Durations out of old ones use {@link Duration#plus}, {@link Duration#minus}, {@link Duration#normalize}, {@link Duration#set}, {@link Duration#reconfigure}, {@link Duration#shiftTo}, and {@link Duration#negate}.\n * * **Output** To convert the Duration into other representations, see {@link Duration#as}, {@link Duration#toISO}, {@link Duration#toFormat}, and {@link Duration#toJSON}\n *\n * There's are more methods documented below. In addition, for more information on subtler topics like internationalization and validity, see the external documentation.\n */\nexport default class Duration {\n /**\n * @private\n */\n constructor(config) {\n const accurate = config.conversionAccuracy === \"longterm\" || false;\n let matrix = accurate ? accurateMatrix : casualMatrix;\n\n if (config.matrix) {\n matrix = config.matrix;\n }\n\n /**\n * @access private\n */\n this.values = config.values;\n /**\n * @access private\n */\n this.loc = config.loc || Locale.create();\n /**\n * @access private\n */\n this.conversionAccuracy = accurate ? \"longterm\" : \"casual\";\n /**\n * @access private\n */\n this.invalid = config.invalid || null;\n /**\n * @access private\n */\n this.matrix = matrix;\n /**\n * @access private\n */\n this.isLuxonDuration = true;\n }\n\n /**\n * Create Duration from a number of milliseconds.\n * @param {number} count of milliseconds\n * @param {Object} opts - options for parsing\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @return {Duration}\n */\n static fromMillis(count, opts) {\n return Duration.fromObject({ milliseconds: count }, opts);\n }\n\n /**\n * Create a Duration from a JavaScript object with keys like 'years' and 'hours'.\n * If this object is empty then a zero milliseconds duration is returned.\n * @param {Object} obj - the object to create the DateTime from\n * @param {number} obj.years\n * @param {number} obj.quarters\n * @param {number} obj.months\n * @param {number} obj.weeks\n * @param {number} obj.days\n * @param {number} obj.hours\n * @param {number} obj.minutes\n * @param {number} obj.seconds\n * @param {number} obj.milliseconds\n * @param {Object} [opts=[]] - options for creating this Duration\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the preset conversion system to use\n * @param {string} [opts.matrix=Object] - the custom conversion system to use\n * @return {Duration}\n */\n static fromObject(obj, opts = {}) {\n if (obj == null || typeof obj !== \"object\") {\n throw new InvalidArgumentError(\n `Duration.fromObject: argument expected to be an object, got ${\n obj === null ? \"null\" : typeof obj\n }`\n );\n }\n\n return new Duration({\n values: normalizeObject(obj, Duration.normalizeUnit),\n loc: Locale.fromObject(opts),\n conversionAccuracy: opts.conversionAccuracy,\n matrix: opts.matrix,\n });\n }\n\n /**\n * Create a Duration from DurationLike.\n *\n * @param {Object | number | Duration} durationLike\n * One of:\n * - object with keys like 'years' and 'hours'.\n * - number representing milliseconds\n * - Duration instance\n * @return {Duration}\n */\n static fromDurationLike(durationLike) {\n if (isNumber(durationLike)) {\n return Duration.fromMillis(durationLike);\n } else if (Duration.isDuration(durationLike)) {\n return durationLike;\n } else if (typeof durationLike === \"object\") {\n return Duration.fromObject(durationLike);\n } else {\n throw new InvalidArgumentError(\n `Unknown duration argument ${durationLike} of type ${typeof durationLike}`\n );\n }\n }\n\n /**\n * Create a Duration from an ISO 8601 duration string.\n * @param {string} text - text to parse\n * @param {Object} opts - options for parsing\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the preset conversion system to use\n * @param {string} [opts.matrix=Object] - the preset conversion system to use\n * @see https://en.wikipedia.org/wiki/ISO_8601#Durations\n * @example Duration.fromISO('P3Y6M1W4DT12H30M5S').toObject() //=> { years: 3, months: 6, weeks: 1, days: 4, hours: 12, minutes: 30, seconds: 5 }\n * @example Duration.fromISO('PT23H').toObject() //=> { hours: 23 }\n * @example Duration.fromISO('P5Y3M').toObject() //=> { years: 5, months: 3 }\n * @return {Duration}\n */\n static fromISO(text, opts) {\n const [parsed] = parseISODuration(text);\n if (parsed) {\n return Duration.fromObject(parsed, opts);\n } else {\n return Duration.invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ISO 8601`);\n }\n }\n\n /**\n * Create a Duration from an ISO 8601 time string.\n * @param {string} text - text to parse\n * @param {Object} opts - options for parsing\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the preset conversion system to use\n * @param {string} [opts.matrix=Object] - the conversion system to use\n * @see https://en.wikipedia.org/wiki/ISO_8601#Times\n * @example Duration.fromISOTime('11:22:33.444').toObject() //=> { hours: 11, minutes: 22, seconds: 33, milliseconds: 444 }\n * @example Duration.fromISOTime('11:00').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @example Duration.fromISOTime('T11:00').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @example Duration.fromISOTime('1100').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @example Duration.fromISOTime('T1100').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @return {Duration}\n */\n static fromISOTime(text, opts) {\n const [parsed] = parseISOTimeOnly(text);\n if (parsed) {\n return Duration.fromObject(parsed, opts);\n } else {\n return Duration.invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ISO 8601`);\n }\n }\n\n /**\n * Create an invalid Duration.\n * @param {string} reason - simple string of why this datetime is invalid. Should not contain parameters or anything else data-dependent\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n * @return {Duration}\n */\n static invalid(reason, explanation = null) {\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the Duration is invalid\");\n }\n\n const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidDurationError(invalid);\n } else {\n return new Duration({ invalid });\n }\n }\n\n /**\n * @private\n */\n static normalizeUnit(unit) {\n const normalized = {\n year: \"years\",\n years: \"years\",\n quarter: \"quarters\",\n quarters: \"quarters\",\n month: \"months\",\n months: \"months\",\n week: \"weeks\",\n weeks: \"weeks\",\n day: \"days\",\n days: \"days\",\n hour: \"hours\",\n hours: \"hours\",\n minute: \"minutes\",\n minutes: \"minutes\",\n second: \"seconds\",\n seconds: \"seconds\",\n millisecond: \"milliseconds\",\n milliseconds: \"milliseconds\",\n }[unit ? unit.toLowerCase() : unit];\n\n if (!normalized) throw new InvalidUnitError(unit);\n\n return normalized;\n }\n\n /**\n * Check if an object is a Duration. Works across context boundaries\n * @param {object} o\n * @return {boolean}\n */\n static isDuration(o) {\n return (o && o.isLuxonDuration) || false;\n }\n\n /**\n * Get the locale of a Duration, such 'en-GB'\n * @type {string}\n */\n get locale() {\n return this.isValid ? this.loc.locale : null;\n }\n\n /**\n * Get the numbering system of a Duration, such 'beng'. The numbering system is used when formatting the Duration\n *\n * @type {string}\n */\n get numberingSystem() {\n return this.isValid ? this.loc.numberingSystem : null;\n }\n\n /**\n * Returns a string representation of this Duration formatted according to the specified format string. You may use these tokens:\n * * `S` for milliseconds\n * * `s` for seconds\n * * `m` for minutes\n * * `h` for hours\n * * `d` for days\n * * `w` for weeks\n * * `M` for months\n * * `y` for years\n * Notes:\n * * Add padding by repeating the token, e.g. \"yy\" pads the years to two digits, \"hhhh\" pads the hours out to four digits\n * * Tokens can be escaped by wrapping with single quotes.\n * * The duration will be converted to the set of units in the format string using {@link Duration#shiftTo} and the Durations's conversion accuracy setting.\n * @param {string} fmt - the format string\n * @param {Object} opts - options\n * @param {boolean} [opts.floor=true] - floor numerical values\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"y d s\") //=> \"1 6 2\"\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"yy dd sss\") //=> \"01 06 002\"\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"M S\") //=> \"12 518402000\"\n * @return {string}\n */\n toFormat(fmt, opts = {}) {\n // reverse-compat since 1.2; we always round down now, never up, and we do it by default\n const fmtOpts = {\n ...opts,\n floor: opts.round !== false && opts.floor !== false,\n };\n return this.isValid\n ? Formatter.create(this.loc, fmtOpts).formatDurationFromString(this, fmt)\n : INVALID;\n }\n\n /**\n * Returns a string representation of a Duration with all units included.\n * To modify its behavior, use `listStyle` and any Intl.NumberFormat option, though `unitDisplay` is especially relevant.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat#options\n * @param {Object} opts - Formatting options. Accepts the same keys as the options parameter of the native `Intl.NumberFormat` constructor, as well as `listStyle`.\n * @param {string} [opts.listStyle='narrow'] - How to format the merged list. Corresponds to the `style` property of the options parameter of the native `Intl.ListFormat` constructor.\n * @example\n * ```js\n * var dur = Duration.fromObject({ days: 1, hours: 5, minutes: 6 })\n * dur.toHuman() //=> '1 day, 5 hours, 6 minutes'\n * dur.toHuman({ listStyle: \"long\" }) //=> '1 day, 5 hours, and 6 minutes'\n * dur.toHuman({ unitDisplay: \"short\" }) //=> '1 day, 5 hr, 6 min'\n * ```\n */\n toHuman(opts = {}) {\n if (!this.isValid) return INVALID;\n\n const l = orderedUnits\n .map((unit) => {\n const val = this.values[unit];\n if (isUndefined(val)) {\n return null;\n }\n return this.loc\n .numberFormatter({ style: \"unit\", unitDisplay: \"long\", ...opts, unit: unit.slice(0, -1) })\n .format(val);\n })\n .filter((n) => n);\n\n return this.loc\n .listFormatter({ type: \"conjunction\", style: opts.listStyle || \"narrow\", ...opts })\n .format(l);\n }\n\n /**\n * Returns a JavaScript object with this Duration's values.\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toObject() //=> { years: 1, days: 6, seconds: 2 }\n * @return {Object}\n */\n toObject() {\n if (!this.isValid) return {};\n return { ...this.values };\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this Duration.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Durations\n * @example Duration.fromObject({ years: 3, seconds: 45 }).toISO() //=> 'P3YT45S'\n * @example Duration.fromObject({ months: 4, seconds: 45 }).toISO() //=> 'P4MT45S'\n * @example Duration.fromObject({ months: 5 }).toISO() //=> 'P5M'\n * @example Duration.fromObject({ minutes: 5 }).toISO() //=> 'PT5M'\n * @example Duration.fromObject({ milliseconds: 6 }).toISO() //=> 'PT0.006S'\n * @return {string}\n */\n toISO() {\n // we could use the formatter, but this is an easier way to get the minimum string\n if (!this.isValid) return null;\n\n let s = \"P\";\n if (this.years !== 0) s += this.years + \"Y\";\n if (this.months !== 0 || this.quarters !== 0) s += this.months + this.quarters * 3 + \"M\";\n if (this.weeks !== 0) s += this.weeks + \"W\";\n if (this.days !== 0) s += this.days + \"D\";\n if (this.hours !== 0 || this.minutes !== 0 || this.seconds !== 0 || this.milliseconds !== 0)\n s += \"T\";\n if (this.hours !== 0) s += this.hours + \"H\";\n if (this.minutes !== 0) s += this.minutes + \"M\";\n if (this.seconds !== 0 || this.milliseconds !== 0)\n // this will handle \"floating point madness\" by removing extra decimal places\n // https://stackoverflow.com/questions/588004/is-floating-point-math-broken\n s += roundTo(this.seconds + this.milliseconds / 1000, 3) + \"S\";\n if (s === \"P\") s += \"T0S\";\n return s;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this Duration, formatted as a time of day.\n * Note that this will return null if the duration is invalid, negative, or equal to or greater than 24 hours.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Times\n * @param {Object} opts - options\n * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\n * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\n * @param {boolean} [opts.includePrefix=false] - include the `T` prefix\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example Duration.fromObject({ hours: 11 }).toISOTime() //=> '11:00:00.000'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ suppressMilliseconds: true }) //=> '11:00:00'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ suppressSeconds: true }) //=> '11:00'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ includePrefix: true }) //=> 'T11:00:00.000'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ format: 'basic' }) //=> '110000.000'\n * @return {string}\n */\n toISOTime(opts = {}) {\n if (!this.isValid) return null;\n\n const millis = this.toMillis();\n if (millis < 0 || millis >= 86400000) return null;\n\n opts = {\n suppressMilliseconds: false,\n suppressSeconds: false,\n includePrefix: false,\n format: \"extended\",\n ...opts,\n includeOffset: false,\n };\n\n const dateTime = DateTime.fromMillis(millis, { zone: \"UTC\" });\n return dateTime.toISOTime(opts);\n }\n\n /**\n * Returns an ISO 8601 representation of this Duration appropriate for use in JSON.\n * @return {string}\n */\n toJSON() {\n return this.toISO();\n }\n\n /**\n * Returns an ISO 8601 representation of this Duration appropriate for use in debugging.\n * @return {string}\n */\n toString() {\n return this.toISO();\n }\n\n /**\n * Returns a string representation of this Duration appropriate for the REPL.\n * @return {string}\n */\n [Symbol.for(\"nodejs.util.inspect.custom\")]() {\n if (this.isValid) {\n return `Duration { values: ${JSON.stringify(this.values)} }`;\n } else {\n return `Duration { Invalid, reason: ${this.invalidReason} }`;\n }\n }\n\n /**\n * Returns an milliseconds value of this Duration.\n * @return {number}\n */\n toMillis() {\n if (!this.isValid) return NaN;\n\n return durationToMillis(this.matrix, this.values);\n }\n\n /**\n * Returns an milliseconds value of this Duration. Alias of {@link toMillis}\n * @return {number}\n */\n valueOf() {\n return this.toMillis();\n }\n\n /**\n * Make this Duration longer by the specified amount. Return a newly-constructed Duration.\n * @param {Duration|Object|number} duration - The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n * @return {Duration}\n */\n plus(duration) {\n if (!this.isValid) return this;\n\n const dur = Duration.fromDurationLike(duration),\n result = {};\n\n for (const k of orderedUnits) {\n if (hasOwnProperty(dur.values, k) || hasOwnProperty(this.values, k)) {\n result[k] = dur.get(k) + this.get(k);\n }\n }\n\n return clone(this, { values: result }, true);\n }\n\n /**\n * Make this Duration shorter by the specified amount. Return a newly-constructed Duration.\n * @param {Duration|Object|number} duration - The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n * @return {Duration}\n */\n minus(duration) {\n if (!this.isValid) return this;\n\n const dur = Duration.fromDurationLike(duration);\n return this.plus(dur.negate());\n }\n\n /**\n * Scale this Duration by the specified amount. Return a newly-constructed Duration.\n * @param {function} fn - The function to apply to each unit. Arity is 1 or 2: the value of the unit and, optionally, the unit name. Must return a number.\n * @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnits(x => x * 2) //=> { hours: 2, minutes: 60 }\n * @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnits((x, u) => u === \"hours\" ? x * 2 : x) //=> { hours: 2, minutes: 30 }\n * @return {Duration}\n */\n mapUnits(fn) {\n if (!this.isValid) return this;\n const result = {};\n for (const k of Object.keys(this.values)) {\n result[k] = asNumber(fn(this.values[k], k));\n }\n return clone(this, { values: result }, true);\n }\n\n /**\n * Get the value of unit.\n * @param {string} unit - a unit such as 'minute' or 'day'\n * @example Duration.fromObject({years: 2, days: 3}).get('years') //=> 2\n * @example Duration.fromObject({years: 2, days: 3}).get('months') //=> 0\n * @example Duration.fromObject({years: 2, days: 3}).get('days') //=> 3\n * @return {number}\n */\n get(unit) {\n return this[Duration.normalizeUnit(unit)];\n }\n\n /**\n * \"Set\" the values of specified units. Return a newly-constructed Duration.\n * @param {Object} values - a mapping of units to numbers\n * @example dur.set({ years: 2017 })\n * @example dur.set({ hours: 8, minutes: 30 })\n * @return {Duration}\n */\n set(values) {\n if (!this.isValid) return this;\n\n const mixed = { ...this.values, ...normalizeObject(values, Duration.normalizeUnit) };\n return clone(this, { values: mixed });\n }\n\n /**\n * \"Set\" the locale and/or numberingSystem. Returns a newly-constructed Duration.\n * @example dur.reconfigure({ locale: 'en-GB' })\n * @return {Duration}\n */\n reconfigure({ locale, numberingSystem, conversionAccuracy, matrix } = {}) {\n const loc = this.loc.clone({ locale, numberingSystem });\n const opts = { loc, matrix, conversionAccuracy };\n return clone(this, opts);\n }\n\n /**\n * Return the length of the duration in the specified unit.\n * @param {string} unit - a unit such as 'minutes' or 'days'\n * @example Duration.fromObject({years: 1}).as('days') //=> 365\n * @example Duration.fromObject({years: 1}).as('months') //=> 12\n * @example Duration.fromObject({hours: 60}).as('days') //=> 2.5\n * @return {number}\n */\n as(unit) {\n return this.isValid ? this.shiftTo(unit).get(unit) : NaN;\n }\n\n /**\n * Reduce this Duration to its canonical representation in its current units.\n * Assuming the overall value of the Duration is positive, this means:\n * - excessive values for lower-order units are converted to higher-order units (if possible, see first and second example)\n * - negative lower-order units are converted to higher order units (there must be such a higher order unit, otherwise\n * the overall value would be negative, see third example)\n * - fractional values for higher-order units are converted to lower-order units (if possible, see fourth example)\n *\n * If the overall value is negative, the result of this method is equivalent to `this.negate().normalize().negate()`.\n * @example Duration.fromObject({ years: 2, days: 5000 }).normalize().toObject() //=> { years: 15, days: 255 }\n * @example Duration.fromObject({ days: 5000 }).normalize().toObject() //=> { days: 5000 }\n * @example Duration.fromObject({ hours: 12, minutes: -45 }).normalize().toObject() //=> { hours: 11, minutes: 15 }\n * @example Duration.fromObject({ years: 2.5, days: 0, hours: 0 }).normalize().toObject() //=> { years: 2, days: 182, hours: 12 }\n * @return {Duration}\n */\n normalize() {\n if (!this.isValid) return this;\n const vals = this.toObject();\n normalizeValues(this.matrix, vals);\n return clone(this, { values: vals }, true);\n }\n\n /**\n * Rescale units to its largest representation\n * @example Duration.fromObject({ milliseconds: 90000 }).rescale().toObject() //=> { minutes: 1, seconds: 30 }\n * @return {Duration}\n */\n rescale() {\n if (!this.isValid) return this;\n const vals = removeZeroes(this.normalize().shiftToAll().toObject());\n return clone(this, { values: vals }, true);\n }\n\n /**\n * Convert this Duration into its representation in a different set of units.\n * @example Duration.fromObject({ hours: 1, seconds: 30 }).shiftTo('minutes', 'milliseconds').toObject() //=> { minutes: 60, milliseconds: 30000 }\n * @return {Duration}\n */\n shiftTo(...units) {\n if (!this.isValid) return this;\n\n if (units.length === 0) {\n return this;\n }\n\n units = units.map((u) => Duration.normalizeUnit(u));\n\n const built = {},\n accumulated = {},\n vals = this.toObject();\n let lastUnit;\n\n for (const k of orderedUnits) {\n if (units.indexOf(k) >= 0) {\n lastUnit = k;\n\n let own = 0;\n\n // anything we haven't boiled down yet should get boiled to this unit\n for (const ak in accumulated) {\n own += this.matrix[ak][k] * accumulated[ak];\n accumulated[ak] = 0;\n }\n\n // plus anything that's already in this unit\n if (isNumber(vals[k])) {\n own += vals[k];\n }\n\n // only keep the integer part for now in the hopes of putting any decimal part\n // into a smaller unit later\n const i = Math.trunc(own);\n built[k] = i;\n accumulated[k] = (own * 1000 - i * 1000) / 1000;\n\n // otherwise, keep it in the wings to boil it later\n } else if (isNumber(vals[k])) {\n accumulated[k] = vals[k];\n }\n }\n\n // anything leftover becomes the decimal for the last unit\n // lastUnit must be defined since units is not empty\n for (const key in accumulated) {\n if (accumulated[key] !== 0) {\n built[lastUnit] +=\n key === lastUnit ? accumulated[key] : accumulated[key] / this.matrix[lastUnit][key];\n }\n }\n\n normalizeValues(this.matrix, built);\n return clone(this, { values: built }, true);\n }\n\n /**\n * Shift this Duration to all available units.\n * Same as shiftTo(\"years\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", \"seconds\", \"milliseconds\")\n * @return {Duration}\n */\n shiftToAll() {\n if (!this.isValid) return this;\n return this.shiftTo(\n \"years\",\n \"months\",\n \"weeks\",\n \"days\",\n \"hours\",\n \"minutes\",\n \"seconds\",\n \"milliseconds\"\n );\n }\n\n /**\n * Return the negative of this Duration.\n * @example Duration.fromObject({ hours: 1, seconds: 30 }).negate().toObject() //=> { hours: -1, seconds: -30 }\n * @return {Duration}\n */\n negate() {\n if (!this.isValid) return this;\n const negated = {};\n for (const k of Object.keys(this.values)) {\n negated[k] = this.values[k] === 0 ? 0 : -this.values[k];\n }\n return clone(this, { values: negated }, true);\n }\n\n /**\n * Get the years.\n * @type {number}\n */\n get years() {\n return this.isValid ? this.values.years || 0 : NaN;\n }\n\n /**\n * Get the quarters.\n * @type {number}\n */\n get quarters() {\n return this.isValid ? this.values.quarters || 0 : NaN;\n }\n\n /**\n * Get the months.\n * @type {number}\n */\n get months() {\n return this.isValid ? this.values.months || 0 : NaN;\n }\n\n /**\n * Get the weeks\n * @type {number}\n */\n get weeks() {\n return this.isValid ? this.values.weeks || 0 : NaN;\n }\n\n /**\n * Get the days.\n * @type {number}\n */\n get days() {\n return this.isValid ? this.values.days || 0 : NaN;\n }\n\n /**\n * Get the hours.\n * @type {number}\n */\n get hours() {\n return this.isValid ? this.values.hours || 0 : NaN;\n }\n\n /**\n * Get the minutes.\n * @type {number}\n */\n get minutes() {\n return this.isValid ? this.values.minutes || 0 : NaN;\n }\n\n /**\n * Get the seconds.\n * @return {number}\n */\n get seconds() {\n return this.isValid ? this.values.seconds || 0 : NaN;\n }\n\n /**\n * Get the milliseconds.\n * @return {number}\n */\n get milliseconds() {\n return this.isValid ? this.values.milliseconds || 0 : NaN;\n }\n\n /**\n * Returns whether the Duration is invalid. Invalid durations are returned by diff operations\n * on invalid DateTimes or Intervals.\n * @return {boolean}\n */\n get isValid() {\n return this.invalid === null;\n }\n\n /**\n * Returns an error code if this Duration became invalid, or null if the Duration is valid\n * @return {string}\n */\n get invalidReason() {\n return this.invalid ? this.invalid.reason : null;\n }\n\n /**\n * Returns an explanation of why this Duration became invalid, or null if the Duration is valid\n * @type {string}\n */\n get invalidExplanation() {\n return this.invalid ? this.invalid.explanation : null;\n }\n\n /**\n * Equality check\n * Two Durations are equal iff they have the same units and the same values for each unit.\n * @param {Duration} other\n * @return {boolean}\n */\n equals(other) {\n if (!this.isValid || !other.isValid) {\n return false;\n }\n\n if (!this.loc.equals(other.loc)) {\n return false;\n }\n\n function eq(v1, v2) {\n // Consider 0 and undefined as equal\n if (v1 === undefined || v1 === 0) return v2 === undefined || v2 === 0;\n return v1 === v2;\n }\n\n for (const u of orderedUnits) {\n if (!eq(this.values[u], other.values[u])) {\n return false;\n }\n }\n return true;\n }\n}\n","import DateTime, { friendlyDateTime } from \"./datetime.js\";\nimport Duration from \"./duration.js\";\nimport Settings from \"./settings.js\";\nimport { InvalidArgumentError, InvalidIntervalError } from \"./errors.js\";\nimport Invalid from \"./impl/invalid.js\";\nimport Formatter from \"./impl/formatter.js\";\nimport * as Formats from \"./impl/formats.js\";\n\nconst INVALID = \"Invalid Interval\";\n\n// checks if the start is equal to or before the end\nfunction validateStartEnd(start, end) {\n if (!start || !start.isValid) {\n return Interval.invalid(\"missing or invalid start\");\n } else if (!end || !end.isValid) {\n return Interval.invalid(\"missing or invalid end\");\n } else if (end < start) {\n return Interval.invalid(\n \"end before start\",\n `The end of an interval must be after its start, but you had start=${start.toISO()} and end=${end.toISO()}`\n );\n } else {\n return null;\n }\n}\n\n/**\n * An Interval object represents a half-open interval of time, where each endpoint is a {@link DateTime}. Conceptually, it's a container for those two endpoints, accompanied by methods for creating, parsing, interrogating, comparing, transforming, and formatting them.\n *\n * Here is a brief overview of the most commonly used methods and getters in Interval:\n *\n * * **Creation** To create an Interval, use {@link Interval.fromDateTimes}, {@link Interval.after}, {@link Interval.before}, or {@link Interval.fromISO}.\n * * **Accessors** Use {@link Interval#start} and {@link Interval#end} to get the start and end.\n * * **Interrogation** To analyze the Interval, use {@link Interval#count}, {@link Interval#length}, {@link Interval#hasSame}, {@link Interval#contains}, {@link Interval#isAfter}, or {@link Interval#isBefore}.\n * * **Transformation** To create other Intervals out of this one, use {@link Interval#set}, {@link Interval#splitAt}, {@link Interval#splitBy}, {@link Interval#divideEqually}, {@link Interval.merge}, {@link Interval.xor}, {@link Interval#union}, {@link Interval#intersection}, or {@link Interval#difference}.\n * * **Comparison** To compare this Interval to another one, use {@link Interval#equals}, {@link Interval#overlaps}, {@link Interval#abutsStart}, {@link Interval#abutsEnd}, {@link Interval#engulfs}\n * * **Output** To convert the Interval into other representations, see {@link Interval#toString}, {@link Interval#toLocaleString}, {@link Interval#toISO}, {@link Interval#toISODate}, {@link Interval#toISOTime}, {@link Interval#toFormat}, and {@link Interval#toDuration}.\n */\nexport default class Interval {\n /**\n * @private\n */\n constructor(config) {\n /**\n * @access private\n */\n this.s = config.start;\n /**\n * @access private\n */\n this.e = config.end;\n /**\n * @access private\n */\n this.invalid = config.invalid || null;\n /**\n * @access private\n */\n this.isLuxonInterval = true;\n }\n\n /**\n * Create an invalid Interval.\n * @param {string} reason - simple string of why this Interval is invalid. Should not contain parameters or anything else data-dependent\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n * @return {Interval}\n */\n static invalid(reason, explanation = null) {\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the Interval is invalid\");\n }\n\n const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidIntervalError(invalid);\n } else {\n return new Interval({ invalid });\n }\n }\n\n /**\n * Create an Interval from a start DateTime and an end DateTime. Inclusive of the start but not the end.\n * @param {DateTime|Date|Object} start\n * @param {DateTime|Date|Object} end\n * @return {Interval}\n */\n static fromDateTimes(start, end) {\n const builtStart = friendlyDateTime(start),\n builtEnd = friendlyDateTime(end);\n\n const validateError = validateStartEnd(builtStart, builtEnd);\n\n if (validateError == null) {\n return new Interval({\n start: builtStart,\n end: builtEnd,\n });\n } else {\n return validateError;\n }\n }\n\n /**\n * Create an Interval from a start DateTime and a Duration to extend to.\n * @param {DateTime|Date|Object} start\n * @param {Duration|Object|number} duration - the length of the Interval.\n * @return {Interval}\n */\n static after(start, duration) {\n const dur = Duration.fromDurationLike(duration),\n dt = friendlyDateTime(start);\n return Interval.fromDateTimes(dt, dt.plus(dur));\n }\n\n /**\n * Create an Interval from an end DateTime and a Duration to extend backwards to.\n * @param {DateTime|Date|Object} end\n * @param {Duration|Object|number} duration - the length of the Interval.\n * @return {Interval}\n */\n static before(end, duration) {\n const dur = Duration.fromDurationLike(duration),\n dt = friendlyDateTime(end);\n return Interval.fromDateTimes(dt.minus(dur), dt);\n }\n\n /**\n * Create an Interval from an ISO 8601 string.\n * Accepts `/`, `/`, and `/` formats.\n * @param {string} text - the ISO string to parse\n * @param {Object} [opts] - options to pass {@link DateTime#fromISO} and optionally {@link Duration#fromISO}\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @return {Interval}\n */\n static fromISO(text, opts) {\n const [s, e] = (text || \"\").split(\"/\", 2);\n if (s && e) {\n let start, startIsValid;\n try {\n start = DateTime.fromISO(s, opts);\n startIsValid = start.isValid;\n } catch (e) {\n startIsValid = false;\n }\n\n let end, endIsValid;\n try {\n end = DateTime.fromISO(e, opts);\n endIsValid = end.isValid;\n } catch (e) {\n endIsValid = false;\n }\n\n if (startIsValid && endIsValid) {\n return Interval.fromDateTimes(start, end);\n }\n\n if (startIsValid) {\n const dur = Duration.fromISO(e, opts);\n if (dur.isValid) {\n return Interval.after(start, dur);\n }\n } else if (endIsValid) {\n const dur = Duration.fromISO(s, opts);\n if (dur.isValid) {\n return Interval.before(end, dur);\n }\n }\n }\n return Interval.invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ISO 8601`);\n }\n\n /**\n * Check if an object is an Interval. Works across context boundaries\n * @param {object} o\n * @return {boolean}\n */\n static isInterval(o) {\n return (o && o.isLuxonInterval) || false;\n }\n\n /**\n * Returns the start of the Interval\n * @type {DateTime}\n */\n get start() {\n return this.isValid ? this.s : null;\n }\n\n /**\n * Returns the end of the Interval\n * @type {DateTime}\n */\n get end() {\n return this.isValid ? this.e : null;\n }\n\n /**\n * Returns whether this Interval's end is at least its start, meaning that the Interval isn't 'backwards'.\n * @type {boolean}\n */\n get isValid() {\n return this.invalidReason === null;\n }\n\n /**\n * Returns an error code if this Interval is invalid, or null if the Interval is valid\n * @type {string}\n */\n get invalidReason() {\n return this.invalid ? this.invalid.reason : null;\n }\n\n /**\n * Returns an explanation of why this Interval became invalid, or null if the Interval is valid\n * @type {string}\n */\n get invalidExplanation() {\n return this.invalid ? this.invalid.explanation : null;\n }\n\n /**\n * Returns the length of the Interval in the specified unit.\n * @param {string} unit - the unit (such as 'hours' or 'days') to return the length in.\n * @return {number}\n */\n length(unit = \"milliseconds\") {\n return this.isValid ? this.toDuration(...[unit]).get(unit) : NaN;\n }\n\n /**\n * Returns the count of minutes, hours, days, months, or years included in the Interval, even in part.\n * Unlike {@link Interval#length} this counts sections of the calendar, not periods of time, e.g. specifying 'day'\n * asks 'what dates are included in this interval?', not 'how many days long is this interval?'\n * @param {string} [unit='milliseconds'] - the unit of time to count.\n * @param {Object} opts - options\n * @param {boolean} [opts.useLocaleWeeks=false] - If true, use weeks based on the locale, i.e. use the locale-dependent start of the week; this operation will always use the locale of the start DateTime\n * @return {number}\n */\n count(unit = \"milliseconds\", opts) {\n if (!this.isValid) return NaN;\n const start = this.start.startOf(unit, opts);\n let end;\n if (opts?.useLocaleWeeks) {\n end = this.end.reconfigure({ locale: start.locale });\n } else {\n end = this.end;\n }\n end = end.startOf(unit, opts);\n return Math.floor(end.diff(start, unit).get(unit)) + (end.valueOf() !== this.end.valueOf());\n }\n\n /**\n * Returns whether this Interval's start and end are both in the same unit of time\n * @param {string} unit - the unit of time to check sameness on\n * @return {boolean}\n */\n hasSame(unit) {\n return this.isValid ? this.isEmpty() || this.e.minus(1).hasSame(this.s, unit) : false;\n }\n\n /**\n * Return whether this Interval has the same start and end DateTimes.\n * @return {boolean}\n */\n isEmpty() {\n return this.s.valueOf() === this.e.valueOf();\n }\n\n /**\n * Return whether this Interval's start is after the specified DateTime.\n * @param {DateTime} dateTime\n * @return {boolean}\n */\n isAfter(dateTime) {\n if (!this.isValid) return false;\n return this.s > dateTime;\n }\n\n /**\n * Return whether this Interval's end is before the specified DateTime.\n * @param {DateTime} dateTime\n * @return {boolean}\n */\n isBefore(dateTime) {\n if (!this.isValid) return false;\n return this.e <= dateTime;\n }\n\n /**\n * Return whether this Interval contains the specified DateTime.\n * @param {DateTime} dateTime\n * @return {boolean}\n */\n contains(dateTime) {\n if (!this.isValid) return false;\n return this.s <= dateTime && this.e > dateTime;\n }\n\n /**\n * \"Sets\" the start and/or end dates. Returns a newly-constructed Interval.\n * @param {Object} values - the values to set\n * @param {DateTime} values.start - the starting DateTime\n * @param {DateTime} values.end - the ending DateTime\n * @return {Interval}\n */\n set({ start, end } = {}) {\n if (!this.isValid) return this;\n return Interval.fromDateTimes(start || this.s, end || this.e);\n }\n\n /**\n * Split this Interval at each of the specified DateTimes\n * @param {...DateTime} dateTimes - the unit of time to count.\n * @return {Array}\n */\n splitAt(...dateTimes) {\n if (!this.isValid) return [];\n const sorted = dateTimes\n .map(friendlyDateTime)\n .filter((d) => this.contains(d))\n .sort((a, b) => a.toMillis() - b.toMillis()),\n results = [];\n let { s } = this,\n i = 0;\n\n while (s < this.e) {\n const added = sorted[i] || this.e,\n next = +added > +this.e ? this.e : added;\n results.push(Interval.fromDateTimes(s, next));\n s = next;\n i += 1;\n }\n\n return results;\n }\n\n /**\n * Split this Interval into smaller Intervals, each of the specified length.\n * Left over time is grouped into a smaller interval\n * @param {Duration|Object|number} duration - The length of each resulting interval.\n * @return {Array}\n */\n splitBy(duration) {\n const dur = Duration.fromDurationLike(duration);\n\n if (!this.isValid || !dur.isValid || dur.as(\"milliseconds\") === 0) {\n return [];\n }\n\n let { s } = this,\n idx = 1,\n next;\n\n const results = [];\n while (s < this.e) {\n const added = this.start.plus(dur.mapUnits((x) => x * idx));\n next = +added > +this.e ? this.e : added;\n results.push(Interval.fromDateTimes(s, next));\n s = next;\n idx += 1;\n }\n\n return results;\n }\n\n /**\n * Split this Interval into the specified number of smaller intervals.\n * @param {number} numberOfParts - The number of Intervals to divide the Interval into.\n * @return {Array}\n */\n divideEqually(numberOfParts) {\n if (!this.isValid) return [];\n return this.splitBy(this.length() / numberOfParts).slice(0, numberOfParts);\n }\n\n /**\n * Return whether this Interval overlaps with the specified Interval\n * @param {Interval} other\n * @return {boolean}\n */\n overlaps(other) {\n return this.e > other.s && this.s < other.e;\n }\n\n /**\n * Return whether this Interval's end is adjacent to the specified Interval's start.\n * @param {Interval} other\n * @return {boolean}\n */\n abutsStart(other) {\n if (!this.isValid) return false;\n return +this.e === +other.s;\n }\n\n /**\n * Return whether this Interval's start is adjacent to the specified Interval's end.\n * @param {Interval} other\n * @return {boolean}\n */\n abutsEnd(other) {\n if (!this.isValid) return false;\n return +other.e === +this.s;\n }\n\n /**\n * Return whether this Interval engulfs the start and end of the specified Interval.\n * @param {Interval} other\n * @return {boolean}\n */\n engulfs(other) {\n if (!this.isValid) return false;\n return this.s <= other.s && this.e >= other.e;\n }\n\n /**\n * Return whether this Interval has the same start and end as the specified Interval.\n * @param {Interval} other\n * @return {boolean}\n */\n equals(other) {\n if (!this.isValid || !other.isValid) {\n return false;\n }\n\n return this.s.equals(other.s) && this.e.equals(other.e);\n }\n\n /**\n * Return an Interval representing the intersection of this Interval and the specified Interval.\n * Specifically, the resulting Interval has the maximum start time and the minimum end time of the two Intervals.\n * Returns null if the intersection is empty, meaning, the intervals don't intersect.\n * @param {Interval} other\n * @return {Interval}\n */\n intersection(other) {\n if (!this.isValid) return this;\n const s = this.s > other.s ? this.s : other.s,\n e = this.e < other.e ? this.e : other.e;\n\n if (s >= e) {\n return null;\n } else {\n return Interval.fromDateTimes(s, e);\n }\n }\n\n /**\n * Return an Interval representing the union of this Interval and the specified Interval.\n * Specifically, the resulting Interval has the minimum start time and the maximum end time of the two Intervals.\n * @param {Interval} other\n * @return {Interval}\n */\n union(other) {\n if (!this.isValid) return this;\n const s = this.s < other.s ? this.s : other.s,\n e = this.e > other.e ? this.e : other.e;\n return Interval.fromDateTimes(s, e);\n }\n\n /**\n * Merge an array of Intervals into a equivalent minimal set of Intervals.\n * Combines overlapping and adjacent Intervals.\n * @param {Array} intervals\n * @return {Array}\n */\n static merge(intervals) {\n const [found, final] = intervals\n .sort((a, b) => a.s - b.s)\n .reduce(\n ([sofar, current], item) => {\n if (!current) {\n return [sofar, item];\n } else if (current.overlaps(item) || current.abutsStart(item)) {\n return [sofar, current.union(item)];\n } else {\n return [sofar.concat([current]), item];\n }\n },\n [[], null]\n );\n if (final) {\n found.push(final);\n }\n return found;\n }\n\n /**\n * Return an array of Intervals representing the spans of time that only appear in one of the specified Intervals.\n * @param {Array} intervals\n * @return {Array}\n */\n static xor(intervals) {\n let start = null,\n currentCount = 0;\n const results = [],\n ends = intervals.map((i) => [\n { time: i.s, type: \"s\" },\n { time: i.e, type: \"e\" },\n ]),\n flattened = Array.prototype.concat(...ends),\n arr = flattened.sort((a, b) => a.time - b.time);\n\n for (const i of arr) {\n currentCount += i.type === \"s\" ? 1 : -1;\n\n if (currentCount === 1) {\n start = i.time;\n } else {\n if (start && +start !== +i.time) {\n results.push(Interval.fromDateTimes(start, i.time));\n }\n\n start = null;\n }\n }\n\n return Interval.merge(results);\n }\n\n /**\n * Return an Interval representing the span of time in this Interval that doesn't overlap with any of the specified Intervals.\n * @param {...Interval} intervals\n * @return {Array}\n */\n difference(...intervals) {\n return Interval.xor([this].concat(intervals))\n .map((i) => this.intersection(i))\n .filter((i) => i && !i.isEmpty());\n }\n\n /**\n * Returns a string representation of this Interval appropriate for debugging.\n * @return {string}\n */\n toString() {\n if (!this.isValid) return INVALID;\n return `[${this.s.toISO()} – ${this.e.toISO()})`;\n }\n\n /**\n * Returns a string representation of this Interval appropriate for the REPL.\n * @return {string}\n */\n [Symbol.for(\"nodejs.util.inspect.custom\")]() {\n if (this.isValid) {\n return `Interval { start: ${this.s.toISO()}, end: ${this.e.toISO()} }`;\n } else {\n return `Interval { Invalid, reason: ${this.invalidReason} }`;\n }\n }\n\n /**\n * Returns a localized string representing this Interval. Accepts the same options as the\n * Intl.DateTimeFormat constructor and any presets defined by Luxon, such as\n * {@link DateTime.DATE_FULL} or {@link DateTime.TIME_SIMPLE}. The exact behavior of this method\n * is browser-specific, but in general it will return an appropriate representation of the\n * Interval in the assigned locale. Defaults to the system's locale if no locale has been\n * specified.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param {Object} [formatOpts=DateTime.DATE_SHORT] - Either a DateTime preset or\n * Intl.DateTimeFormat constructor options.\n * @param {Object} opts - Options to override the configuration of the start DateTime.\n * @example Interval.fromISO('2022-11-07T09:00Z/2022-11-08T09:00Z').toLocaleString(); //=> 11/7/2022 – 11/8/2022\n * @example Interval.fromISO('2022-11-07T09:00Z/2022-11-08T09:00Z').toLocaleString(DateTime.DATE_FULL); //=> November 7 – 8, 2022\n * @example Interval.fromISO('2022-11-07T09:00Z/2022-11-08T09:00Z').toLocaleString(DateTime.DATE_FULL, { locale: 'fr-FR' }); //=> 7–8 novembre 2022\n * @example Interval.fromISO('2022-11-07T17:00Z/2022-11-07T19:00Z').toLocaleString(DateTime.TIME_SIMPLE); //=> 6:00 – 8:00 PM\n * @example Interval.fromISO('2022-11-07T17:00Z/2022-11-07T19:00Z').toLocaleString({ weekday: 'short', month: 'short', day: '2-digit', hour: '2-digit', minute: '2-digit' }); //=> Mon, Nov 07, 6:00 – 8:00 p\n * @return {string}\n */\n toLocaleString(formatOpts = Formats.DATE_SHORT, opts = {}) {\n return this.isValid\n ? Formatter.create(this.s.loc.clone(opts), formatOpts).formatInterval(this)\n : INVALID;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this Interval.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @param {Object} opts - The same options as {@link DateTime#toISO}\n * @return {string}\n */\n toISO(opts) {\n if (!this.isValid) return INVALID;\n return `${this.s.toISO(opts)}/${this.e.toISO(opts)}`;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of date of this Interval.\n * The time components are ignored.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @return {string}\n */\n toISODate() {\n if (!this.isValid) return INVALID;\n return `${this.s.toISODate()}/${this.e.toISODate()}`;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of time of this Interval.\n * The date components are ignored.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @param {Object} opts - The same options as {@link DateTime#toISO}\n * @return {string}\n */\n toISOTime(opts) {\n if (!this.isValid) return INVALID;\n return `${this.s.toISOTime(opts)}/${this.e.toISOTime(opts)}`;\n }\n\n /**\n * Returns a string representation of this Interval formatted according to the specified format\n * string. **You may not want this.** See {@link Interval#toLocaleString} for a more flexible\n * formatting tool.\n * @param {string} dateFormat - The format string. This string formats the start and end time.\n * See {@link DateTime#toFormat} for details.\n * @param {Object} opts - Options.\n * @param {string} [opts.separator = ' – '] - A separator to place between the start and end\n * representations.\n * @return {string}\n */\n toFormat(dateFormat, { separator = \" – \" } = {}) {\n if (!this.isValid) return INVALID;\n return `${this.s.toFormat(dateFormat)}${separator}${this.e.toFormat(dateFormat)}`;\n }\n\n /**\n * Return a Duration representing the time spanned by this interval.\n * @param {string|string[]} [unit=['milliseconds']] - the unit or units (such as 'hours' or 'days') to include in the duration.\n * @param {Object} opts - options that affect the creation of the Duration\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @example Interval.fromDateTimes(dt1, dt2).toDuration().toObject() //=> { milliseconds: 88489257 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration('days').toObject() //=> { days: 1.0241812152777778 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes']).toObject() //=> { hours: 24, minutes: 34.82095 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes', 'seconds']).toObject() //=> { hours: 24, minutes: 34, seconds: 49.257 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration('seconds').toObject() //=> { seconds: 88489.257 }\n * @return {Duration}\n */\n toDuration(unit, opts) {\n if (!this.isValid) {\n return Duration.invalid(this.invalidReason);\n }\n return this.e.diff(this.s, unit, opts);\n }\n\n /**\n * Run mapFn on the interval start and end, returning a new Interval from the resulting DateTimes\n * @param {function} mapFn\n * @return {Interval}\n * @example Interval.fromDateTimes(dt1, dt2).mapEndpoints(endpoint => endpoint.toUTC())\n * @example Interval.fromDateTimes(dt1, dt2).mapEndpoints(endpoint => endpoint.plus({ hours: 2 }))\n */\n mapEndpoints(mapFn) {\n return Interval.fromDateTimes(mapFn(this.s), mapFn(this.e));\n }\n}\n","import DateTime from \"./datetime.js\";\nimport Settings from \"./settings.js\";\nimport Locale from \"./impl/locale.js\";\nimport IANAZone from \"./zones/IANAZone.js\";\nimport { normalizeZone } from \"./impl/zoneUtil.js\";\n\nimport { hasLocaleWeekInfo, hasRelative } from \"./impl/util.js\";\n\n/**\n * The Info class contains static methods for retrieving general time and date related data. For example, it has methods for finding out if a time zone has a DST, for listing the months in any supported locale, and for discovering which of Luxon features are available in the current environment.\n */\nexport default class Info {\n /**\n * Return whether the specified zone contains a DST.\n * @param {string|Zone} [zone='local'] - Zone to check. Defaults to the environment's local zone.\n * @return {boolean}\n */\n static hasDST(zone = Settings.defaultZone) {\n const proto = DateTime.now().setZone(zone).set({ month: 12 });\n\n return !zone.isUniversal && proto.offset !== proto.set({ month: 6 }).offset;\n }\n\n /**\n * Return whether the specified zone is a valid IANA specifier.\n * @param {string} zone - Zone to check\n * @return {boolean}\n */\n static isValidIANAZone(zone) {\n return IANAZone.isValidZone(zone);\n }\n\n /**\n * Converts the input into a {@link Zone} instance.\n *\n * * If `input` is already a Zone instance, it is returned unchanged.\n * * If `input` is a string containing a valid time zone name, a Zone instance\n * with that name is returned.\n * * If `input` is a string that doesn't refer to a known time zone, a Zone\n * instance with {@link Zone#isValid} == false is returned.\n * * If `input is a number, a Zone instance with the specified fixed offset\n * in minutes is returned.\n * * If `input` is `null` or `undefined`, the default zone is returned.\n * @param {string|Zone|number} [input] - the value to be converted\n * @return {Zone}\n */\n static normalizeZone(input) {\n return normalizeZone(input, Settings.defaultZone);\n }\n\n /**\n * Get the weekday on which the week starts according to the given locale.\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @returns {number} the start of the week, 1 for Monday through 7 for Sunday\n */\n static getStartOfWeek({ locale = null, locObj = null } = {}) {\n return (locObj || Locale.create(locale)).getStartOfWeek();\n }\n\n /**\n * Get the minimum number of days necessary in a week before it is considered part of the next year according\n * to the given locale.\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @returns {number}\n */\n static getMinimumDaysInFirstWeek({ locale = null, locObj = null } = {}) {\n return (locObj || Locale.create(locale)).getMinDaysInFirstWeek();\n }\n\n /**\n * Get the weekdays, which are considered the weekend according to the given locale\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @returns {number[]} an array of weekdays, 1 for Monday through 7 for Sunday\n */\n static getWeekendWeekdays({ locale = null, locObj = null } = {}) {\n // copy the array, because we cache it internally\n return (locObj || Locale.create(locale)).getWeekendDays().slice();\n }\n\n /**\n * Return an array of standalone month names.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param {string} [length='long'] - the length of the month representation, such as \"numeric\", \"2-digit\", \"narrow\", \"short\", \"long\"\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @param {string} [opts.outputCalendar='gregory'] - the calendar\n * @example Info.months()[0] //=> 'January'\n * @example Info.months('short')[0] //=> 'Jan'\n * @example Info.months('numeric')[0] //=> '1'\n * @example Info.months('short', { locale: 'fr-CA' } )[0] //=> 'janv.'\n * @example Info.months('numeric', { locale: 'ar' })[0] //=> '١'\n * @example Info.months('long', { outputCalendar: 'islamic' })[0] //=> 'Rabiʻ I'\n * @return {Array}\n */\n static months(\n length = \"long\",\n { locale = null, numberingSystem = null, locObj = null, outputCalendar = \"gregory\" } = {}\n ) {\n return (locObj || Locale.create(locale, numberingSystem, outputCalendar)).months(length);\n }\n\n /**\n * Return an array of format month names.\n * Format months differ from standalone months in that they're meant to appear next to the day of the month. In some languages, that\n * changes the string.\n * See {@link Info#months}\n * @param {string} [length='long'] - the length of the month representation, such as \"numeric\", \"2-digit\", \"narrow\", \"short\", \"long\"\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @param {string} [opts.outputCalendar='gregory'] - the calendar\n * @return {Array}\n */\n static monthsFormat(\n length = \"long\",\n { locale = null, numberingSystem = null, locObj = null, outputCalendar = \"gregory\" } = {}\n ) {\n return (locObj || Locale.create(locale, numberingSystem, outputCalendar)).months(length, true);\n }\n\n /**\n * Return an array of standalone week names.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param {string} [length='long'] - the length of the weekday representation, such as \"narrow\", \"short\", \"long\".\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @example Info.weekdays()[0] //=> 'Monday'\n * @example Info.weekdays('short')[0] //=> 'Mon'\n * @example Info.weekdays('short', { locale: 'fr-CA' })[0] //=> 'lun.'\n * @example Info.weekdays('short', { locale: 'ar' })[0] //=> 'الاثنين'\n * @return {Array}\n */\n static weekdays(length = \"long\", { locale = null, numberingSystem = null, locObj = null } = {}) {\n return (locObj || Locale.create(locale, numberingSystem, null)).weekdays(length);\n }\n\n /**\n * Return an array of format week names.\n * Format weekdays differ from standalone weekdays in that they're meant to appear next to more date information. In some languages, that\n * changes the string.\n * See {@link Info#weekdays}\n * @param {string} [length='long'] - the length of the month representation, such as \"narrow\", \"short\", \"long\".\n * @param {Object} opts - options\n * @param {string} [opts.locale=null] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @return {Array}\n */\n static weekdaysFormat(\n length = \"long\",\n { locale = null, numberingSystem = null, locObj = null } = {}\n ) {\n return (locObj || Locale.create(locale, numberingSystem, null)).weekdays(length, true);\n }\n\n /**\n * Return an array of meridiems.\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @example Info.meridiems() //=> [ 'AM', 'PM' ]\n * @example Info.meridiems({ locale: 'my' }) //=> [ 'နံနက်', 'ညနေ' ]\n * @return {Array}\n */\n static meridiems({ locale = null } = {}) {\n return Locale.create(locale).meridiems();\n }\n\n /**\n * Return an array of eras, such as ['BC', 'AD']. The locale can be specified, but the calendar system is always Gregorian.\n * @param {string} [length='short'] - the length of the era representation, such as \"short\" or \"long\".\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @example Info.eras() //=> [ 'BC', 'AD' ]\n * @example Info.eras('long') //=> [ 'Before Christ', 'Anno Domini' ]\n * @example Info.eras('long', { locale: 'fr' }) //=> [ 'avant Jésus-Christ', 'après Jésus-Christ' ]\n * @return {Array}\n */\n static eras(length = \"short\", { locale = null } = {}) {\n return Locale.create(locale, null, \"gregory\").eras(length);\n }\n\n /**\n * Return the set of available features in this environment.\n * Some features of Luxon are not available in all environments. For example, on older browsers, relative time formatting support is not available. Use this function to figure out if that's the case.\n * Keys:\n * * `relative`: whether this environment supports relative time formatting\n * * `localeWeek`: whether this environment supports different weekdays for the start of the week based on the locale\n * @example Info.features() //=> { relative: false, localeWeek: true }\n * @return {Object}\n */\n static features() {\n return { relative: hasRelative(), localeWeek: hasLocaleWeekInfo() };\n }\n}\n","import Duration from \"../duration.js\";\n\nfunction dayDiff(earlier, later) {\n const utcDayStart = (dt) => dt.toUTC(0, { keepLocalTime: true }).startOf(\"day\").valueOf(),\n ms = utcDayStart(later) - utcDayStart(earlier);\n return Math.floor(Duration.fromMillis(ms).as(\"days\"));\n}\n\nfunction highOrderDiffs(cursor, later, units) {\n const differs = [\n [\"years\", (a, b) => b.year - a.year],\n [\"quarters\", (a, b) => b.quarter - a.quarter + (b.year - a.year) * 4],\n [\"months\", (a, b) => b.month - a.month + (b.year - a.year) * 12],\n [\n \"weeks\",\n (a, b) => {\n const days = dayDiff(a, b);\n return (days - (days % 7)) / 7;\n },\n ],\n [\"days\", dayDiff],\n ];\n\n const results = {};\n const earlier = cursor;\n let lowestOrder, highWater;\n\n /* This loop tries to diff using larger units first.\n If we overshoot, we backtrack and try the next smaller unit.\n \"cursor\" starts out at the earlier timestamp and moves closer and closer to \"later\"\n as we use smaller and smaller units.\n highWater keeps track of where we would be if we added one more of the smallest unit,\n this is used later to potentially convert any difference smaller than the smallest higher order unit\n into a fraction of that smallest higher order unit\n */\n for (const [unit, differ] of differs) {\n if (units.indexOf(unit) >= 0) {\n lowestOrder = unit;\n\n results[unit] = differ(cursor, later);\n highWater = earlier.plus(results);\n\n if (highWater > later) {\n // we overshot the end point, backtrack cursor by 1\n results[unit]--;\n cursor = earlier.plus(results);\n\n // if we are still overshooting now, we need to backtrack again\n // this happens in certain situations when diffing times in different zones,\n // because this calculation ignores time zones\n if (cursor > later) {\n // keep the \"overshot by 1\" around as highWater\n highWater = cursor;\n // backtrack cursor by 1\n results[unit]--;\n cursor = earlier.plus(results);\n }\n } else {\n cursor = highWater;\n }\n }\n }\n\n return [cursor, results, highWater, lowestOrder];\n}\n\nexport default function (earlier, later, units, opts) {\n let [cursor, results, highWater, lowestOrder] = highOrderDiffs(earlier, later, units);\n\n const remainingMillis = later - cursor;\n\n const lowerOrderUnits = units.filter(\n (u) => [\"hours\", \"minutes\", \"seconds\", \"milliseconds\"].indexOf(u) >= 0\n );\n\n if (lowerOrderUnits.length === 0) {\n if (highWater < later) {\n highWater = cursor.plus({ [lowestOrder]: 1 });\n }\n\n if (highWater !== cursor) {\n results[lowestOrder] = (results[lowestOrder] || 0) + remainingMillis / (highWater - cursor);\n }\n }\n\n const duration = Duration.fromObject(results, opts);\n\n if (lowerOrderUnits.length > 0) {\n return Duration.fromMillis(remainingMillis, opts)\n .shiftTo(...lowerOrderUnits)\n .plus(duration);\n } else {\n return duration;\n }\n}\n","const numberingSystems = {\n arab: \"[\\u0660-\\u0669]\",\n arabext: \"[\\u06F0-\\u06F9]\",\n bali: \"[\\u1B50-\\u1B59]\",\n beng: \"[\\u09E6-\\u09EF]\",\n deva: \"[\\u0966-\\u096F]\",\n fullwide: \"[\\uFF10-\\uFF19]\",\n gujr: \"[\\u0AE6-\\u0AEF]\",\n hanidec: \"[〇|一|二|三|四|五|六|七|八|九]\",\n khmr: \"[\\u17E0-\\u17E9]\",\n knda: \"[\\u0CE6-\\u0CEF]\",\n laoo: \"[\\u0ED0-\\u0ED9]\",\n limb: \"[\\u1946-\\u194F]\",\n mlym: \"[\\u0D66-\\u0D6F]\",\n mong: \"[\\u1810-\\u1819]\",\n mymr: \"[\\u1040-\\u1049]\",\n orya: \"[\\u0B66-\\u0B6F]\",\n tamldec: \"[\\u0BE6-\\u0BEF]\",\n telu: \"[\\u0C66-\\u0C6F]\",\n thai: \"[\\u0E50-\\u0E59]\",\n tibt: \"[\\u0F20-\\u0F29]\",\n latn: \"\\\\d\",\n};\n\nconst numberingSystemsUTF16 = {\n arab: [1632, 1641],\n arabext: [1776, 1785],\n bali: [6992, 7001],\n beng: [2534, 2543],\n deva: [2406, 2415],\n fullwide: [65296, 65303],\n gujr: [2790, 2799],\n khmr: [6112, 6121],\n knda: [3302, 3311],\n laoo: [3792, 3801],\n limb: [6470, 6479],\n mlym: [3430, 3439],\n mong: [6160, 6169],\n mymr: [4160, 4169],\n orya: [2918, 2927],\n tamldec: [3046, 3055],\n telu: [3174, 3183],\n thai: [3664, 3673],\n tibt: [3872, 3881],\n};\n\nconst hanidecChars = numberingSystems.hanidec.replace(/[\\[|\\]]/g, \"\").split(\"\");\n\nexport function parseDigits(str) {\n let value = parseInt(str, 10);\n if (isNaN(value)) {\n value = \"\";\n for (let i = 0; i < str.length; i++) {\n const code = str.charCodeAt(i);\n\n if (str[i].search(numberingSystems.hanidec) !== -1) {\n value += hanidecChars.indexOf(str[i]);\n } else {\n for (const key in numberingSystemsUTF16) {\n const [min, max] = numberingSystemsUTF16[key];\n if (code >= min && code <= max) {\n value += code - min;\n }\n }\n }\n }\n return parseInt(value, 10);\n } else {\n return value;\n }\n}\n\nexport function digitRegex({ numberingSystem }, append = \"\") {\n return new RegExp(`${numberingSystems[numberingSystem || \"latn\"]}${append}`);\n}\n","import { parseMillis, isUndefined, untruncateYear, signedOffset, hasOwnProperty } from \"./util.js\";\nimport Formatter from \"./formatter.js\";\nimport FixedOffsetZone from \"../zones/fixedOffsetZone.js\";\nimport IANAZone from \"../zones/IANAZone.js\";\nimport DateTime from \"../datetime.js\";\nimport { digitRegex, parseDigits } from \"./digits.js\";\nimport { ConflictingSpecificationError } from \"../errors.js\";\n\nconst MISSING_FTP = \"missing Intl.DateTimeFormat.formatToParts support\";\n\nfunction intUnit(regex, post = (i) => i) {\n return { regex, deser: ([s]) => post(parseDigits(s)) };\n}\n\nconst NBSP = String.fromCharCode(160);\nconst spaceOrNBSP = `[ ${NBSP}]`;\nconst spaceOrNBSPRegExp = new RegExp(spaceOrNBSP, \"g\");\n\nfunction fixListRegex(s) {\n // make dots optional and also make them literal\n // make space and non breakable space characters interchangeable\n return s.replace(/\\./g, \"\\\\.?\").replace(spaceOrNBSPRegExp, spaceOrNBSP);\n}\n\nfunction stripInsensitivities(s) {\n return s\n .replace(/\\./g, \"\") // ignore dots that were made optional\n .replace(spaceOrNBSPRegExp, \" \") // interchange space and nbsp\n .toLowerCase();\n}\n\nfunction oneOf(strings, startIndex) {\n if (strings === null) {\n return null;\n } else {\n return {\n regex: RegExp(strings.map(fixListRegex).join(\"|\")),\n deser: ([s]) =>\n strings.findIndex((i) => stripInsensitivities(s) === stripInsensitivities(i)) + startIndex,\n };\n }\n}\n\nfunction offset(regex, groups) {\n return { regex, deser: ([, h, m]) => signedOffset(h, m), groups };\n}\n\nfunction simple(regex) {\n return { regex, deser: ([s]) => s };\n}\n\nfunction escapeToken(value) {\n return value.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\");\n}\n\n/**\n * @param token\n * @param {Locale} loc\n */\nfunction unitForToken(token, loc) {\n const one = digitRegex(loc),\n two = digitRegex(loc, \"{2}\"),\n three = digitRegex(loc, \"{3}\"),\n four = digitRegex(loc, \"{4}\"),\n six = digitRegex(loc, \"{6}\"),\n oneOrTwo = digitRegex(loc, \"{1,2}\"),\n oneToThree = digitRegex(loc, \"{1,3}\"),\n oneToSix = digitRegex(loc, \"{1,6}\"),\n oneToNine = digitRegex(loc, \"{1,9}\"),\n twoToFour = digitRegex(loc, \"{2,4}\"),\n fourToSix = digitRegex(loc, \"{4,6}\"),\n literal = (t) => ({ regex: RegExp(escapeToken(t.val)), deser: ([s]) => s, literal: true }),\n unitate = (t) => {\n if (token.literal) {\n return literal(t);\n }\n switch (t.val) {\n // era\n case \"G\":\n return oneOf(loc.eras(\"short\"), 0);\n case \"GG\":\n return oneOf(loc.eras(\"long\"), 0);\n // years\n case \"y\":\n return intUnit(oneToSix);\n case \"yy\":\n return intUnit(twoToFour, untruncateYear);\n case \"yyyy\":\n return intUnit(four);\n case \"yyyyy\":\n return intUnit(fourToSix);\n case \"yyyyyy\":\n return intUnit(six);\n // months\n case \"M\":\n return intUnit(oneOrTwo);\n case \"MM\":\n return intUnit(two);\n case \"MMM\":\n return oneOf(loc.months(\"short\", true), 1);\n case \"MMMM\":\n return oneOf(loc.months(\"long\", true), 1);\n case \"L\":\n return intUnit(oneOrTwo);\n case \"LL\":\n return intUnit(two);\n case \"LLL\":\n return oneOf(loc.months(\"short\", false), 1);\n case \"LLLL\":\n return oneOf(loc.months(\"long\", false), 1);\n // dates\n case \"d\":\n return intUnit(oneOrTwo);\n case \"dd\":\n return intUnit(two);\n // ordinals\n case \"o\":\n return intUnit(oneToThree);\n case \"ooo\":\n return intUnit(three);\n // time\n case \"HH\":\n return intUnit(two);\n case \"H\":\n return intUnit(oneOrTwo);\n case \"hh\":\n return intUnit(two);\n case \"h\":\n return intUnit(oneOrTwo);\n case \"mm\":\n return intUnit(two);\n case \"m\":\n return intUnit(oneOrTwo);\n case \"q\":\n return intUnit(oneOrTwo);\n case \"qq\":\n return intUnit(two);\n case \"s\":\n return intUnit(oneOrTwo);\n case \"ss\":\n return intUnit(two);\n case \"S\":\n return intUnit(oneToThree);\n case \"SSS\":\n return intUnit(three);\n case \"u\":\n return simple(oneToNine);\n case \"uu\":\n return simple(oneOrTwo);\n case \"uuu\":\n return intUnit(one);\n // meridiem\n case \"a\":\n return oneOf(loc.meridiems(), 0);\n // weekYear (k)\n case \"kkkk\":\n return intUnit(four);\n case \"kk\":\n return intUnit(twoToFour, untruncateYear);\n // weekNumber (W)\n case \"W\":\n return intUnit(oneOrTwo);\n case \"WW\":\n return intUnit(two);\n // weekdays\n case \"E\":\n case \"c\":\n return intUnit(one);\n case \"EEE\":\n return oneOf(loc.weekdays(\"short\", false), 1);\n case \"EEEE\":\n return oneOf(loc.weekdays(\"long\", false), 1);\n case \"ccc\":\n return oneOf(loc.weekdays(\"short\", true), 1);\n case \"cccc\":\n return oneOf(loc.weekdays(\"long\", true), 1);\n // offset/zone\n case \"Z\":\n case \"ZZ\":\n return offset(new RegExp(`([+-]${oneOrTwo.source})(?::(${two.source}))?`), 2);\n case \"ZZZ\":\n return offset(new RegExp(`([+-]${oneOrTwo.source})(${two.source})?`), 2);\n // we don't support ZZZZ (PST) or ZZZZZ (Pacific Standard Time) in parsing\n // because we don't have any way to figure out what they are\n case \"z\":\n return simple(/[a-z_+-/]{1,256}?/i);\n // this special-case \"token\" represents a place where a macro-token expanded into a white-space literal\n // in this case we accept any non-newline white-space\n case \" \":\n return simple(/[^\\S\\n\\r]/);\n default:\n return literal(t);\n }\n };\n\n const unit = unitate(token) || {\n invalidReason: MISSING_FTP,\n };\n\n unit.token = token;\n\n return unit;\n}\n\nconst partTypeStyleToTokenVal = {\n year: {\n \"2-digit\": \"yy\",\n numeric: \"yyyyy\",\n },\n month: {\n numeric: \"M\",\n \"2-digit\": \"MM\",\n short: \"MMM\",\n long: \"MMMM\",\n },\n day: {\n numeric: \"d\",\n \"2-digit\": \"dd\",\n },\n weekday: {\n short: \"EEE\",\n long: \"EEEE\",\n },\n dayperiod: \"a\",\n dayPeriod: \"a\",\n hour12: {\n numeric: \"h\",\n \"2-digit\": \"hh\",\n },\n hour24: {\n numeric: \"H\",\n \"2-digit\": \"HH\",\n },\n minute: {\n numeric: \"m\",\n \"2-digit\": \"mm\",\n },\n second: {\n numeric: \"s\",\n \"2-digit\": \"ss\",\n },\n timeZoneName: {\n long: \"ZZZZZ\",\n short: \"ZZZ\",\n },\n};\n\nfunction tokenForPart(part, formatOpts, resolvedOpts) {\n const { type, value } = part;\n\n if (type === \"literal\") {\n const isSpace = /^\\s+$/.test(value);\n return {\n literal: !isSpace,\n val: isSpace ? \" \" : value,\n };\n }\n\n const style = formatOpts[type];\n\n // The user might have explicitly specified hour12 or hourCycle\n // if so, respect their decision\n // if not, refer back to the resolvedOpts, which are based on the locale\n let actualType = type;\n if (type === \"hour\") {\n if (formatOpts.hour12 != null) {\n actualType = formatOpts.hour12 ? \"hour12\" : \"hour24\";\n } else if (formatOpts.hourCycle != null) {\n if (formatOpts.hourCycle === \"h11\" || formatOpts.hourCycle === \"h12\") {\n actualType = \"hour12\";\n } else {\n actualType = \"hour24\";\n }\n } else {\n // tokens only differentiate between 24 hours or not,\n // so we do not need to check hourCycle here, which is less supported anyways\n actualType = resolvedOpts.hour12 ? \"hour12\" : \"hour24\";\n }\n }\n let val = partTypeStyleToTokenVal[actualType];\n if (typeof val === \"object\") {\n val = val[style];\n }\n\n if (val) {\n return {\n literal: false,\n val,\n };\n }\n\n return undefined;\n}\n\nfunction buildRegex(units) {\n const re = units.map((u) => u.regex).reduce((f, r) => `${f}(${r.source})`, \"\");\n return [`^${re}$`, units];\n}\n\nfunction match(input, regex, handlers) {\n const matches = input.match(regex);\n\n if (matches) {\n const all = {};\n let matchIndex = 1;\n for (const i in handlers) {\n if (hasOwnProperty(handlers, i)) {\n const h = handlers[i],\n groups = h.groups ? h.groups + 1 : 1;\n if (!h.literal && h.token) {\n all[h.token.val[0]] = h.deser(matches.slice(matchIndex, matchIndex + groups));\n }\n matchIndex += groups;\n }\n }\n return [matches, all];\n } else {\n return [matches, {}];\n }\n}\n\nfunction dateTimeFromMatches(matches) {\n const toField = (token) => {\n switch (token) {\n case \"S\":\n return \"millisecond\";\n case \"s\":\n return \"second\";\n case \"m\":\n return \"minute\";\n case \"h\":\n case \"H\":\n return \"hour\";\n case \"d\":\n return \"day\";\n case \"o\":\n return \"ordinal\";\n case \"L\":\n case \"M\":\n return \"month\";\n case \"y\":\n return \"year\";\n case \"E\":\n case \"c\":\n return \"weekday\";\n case \"W\":\n return \"weekNumber\";\n case \"k\":\n return \"weekYear\";\n case \"q\":\n return \"quarter\";\n default:\n return null;\n }\n };\n\n let zone = null;\n let specificOffset;\n if (!isUndefined(matches.z)) {\n zone = IANAZone.create(matches.z);\n }\n\n if (!isUndefined(matches.Z)) {\n if (!zone) {\n zone = new FixedOffsetZone(matches.Z);\n }\n specificOffset = matches.Z;\n }\n\n if (!isUndefined(matches.q)) {\n matches.M = (matches.q - 1) * 3 + 1;\n }\n\n if (!isUndefined(matches.h)) {\n if (matches.h < 12 && matches.a === 1) {\n matches.h += 12;\n } else if (matches.h === 12 && matches.a === 0) {\n matches.h = 0;\n }\n }\n\n if (matches.G === 0 && matches.y) {\n matches.y = -matches.y;\n }\n\n if (!isUndefined(matches.u)) {\n matches.S = parseMillis(matches.u);\n }\n\n const vals = Object.keys(matches).reduce((r, k) => {\n const f = toField(k);\n if (f) {\n r[f] = matches[k];\n }\n\n return r;\n }, {});\n\n return [vals, zone, specificOffset];\n}\n\nlet dummyDateTimeCache = null;\n\nfunction getDummyDateTime() {\n if (!dummyDateTimeCache) {\n dummyDateTimeCache = DateTime.fromMillis(1555555555555);\n }\n\n return dummyDateTimeCache;\n}\n\nfunction maybeExpandMacroToken(token, locale) {\n if (token.literal) {\n return token;\n }\n\n const formatOpts = Formatter.macroTokenToFormatOpts(token.val);\n const tokens = formatOptsToTokens(formatOpts, locale);\n\n if (tokens == null || tokens.includes(undefined)) {\n return token;\n }\n\n return tokens;\n}\n\nexport function expandMacroTokens(tokens, locale) {\n return Array.prototype.concat(...tokens.map((t) => maybeExpandMacroToken(t, locale)));\n}\n\n/**\n * @private\n */\n\nexport function explainFromTokens(locale, input, format) {\n const tokens = expandMacroTokens(Formatter.parseFormat(format), locale),\n units = tokens.map((t) => unitForToken(t, locale)),\n disqualifyingUnit = units.find((t) => t.invalidReason);\n\n if (disqualifyingUnit) {\n return { input, tokens, invalidReason: disqualifyingUnit.invalidReason };\n } else {\n const [regexString, handlers] = buildRegex(units),\n regex = RegExp(regexString, \"i\"),\n [rawMatches, matches] = match(input, regex, handlers),\n [result, zone, specificOffset] = matches\n ? dateTimeFromMatches(matches)\n : [null, null, undefined];\n if (hasOwnProperty(matches, \"a\") && hasOwnProperty(matches, \"H\")) {\n throw new ConflictingSpecificationError(\n \"Can't include meridiem when specifying 24-hour format\"\n );\n }\n return { input, tokens, regex, rawMatches, matches, result, zone, specificOffset };\n }\n}\n\nexport function parseFromTokens(locale, input, format) {\n const { result, zone, specificOffset, invalidReason } = explainFromTokens(locale, input, format);\n return [result, zone, specificOffset, invalidReason];\n}\n\nexport function formatOptsToTokens(formatOpts, locale) {\n if (!formatOpts) {\n return null;\n }\n\n const formatter = Formatter.create(locale, formatOpts);\n const df = formatter.dtFormatter(getDummyDateTime());\n const parts = df.formatToParts();\n const resolvedOpts = df.resolvedOptions();\n return parts.map((p) => tokenForPart(p, formatOpts, resolvedOpts));\n}\n","import Duration from \"./duration.js\";\nimport Interval from \"./interval.js\";\nimport Settings from \"./settings.js\";\nimport Info from \"./info.js\";\nimport Formatter from \"./impl/formatter.js\";\nimport FixedOffsetZone from \"./zones/fixedOffsetZone.js\";\nimport Locale from \"./impl/locale.js\";\nimport {\n isUndefined,\n maybeArray,\n isDate,\n isNumber,\n bestBy,\n daysInMonth,\n daysInYear,\n isLeapYear,\n weeksInWeekYear,\n normalizeObject,\n roundTo,\n objToLocalTS,\n padStart,\n} from \"./impl/util.js\";\nimport { normalizeZone } from \"./impl/zoneUtil.js\";\nimport diff from \"./impl/diff.js\";\nimport { parseRFC2822Date, parseISODate, parseHTTPDate, parseSQL } from \"./impl/regexParser.js\";\nimport {\n parseFromTokens,\n explainFromTokens,\n formatOptsToTokens,\n expandMacroTokens,\n} from \"./impl/tokenParser.js\";\nimport {\n gregorianToWeek,\n weekToGregorian,\n gregorianToOrdinal,\n ordinalToGregorian,\n hasInvalidGregorianData,\n hasInvalidWeekData,\n hasInvalidOrdinalData,\n hasInvalidTimeData,\n usesLocalWeekValues,\n isoWeekdayToLocal,\n} from \"./impl/conversions.js\";\nimport * as Formats from \"./impl/formats.js\";\nimport {\n InvalidArgumentError,\n ConflictingSpecificationError,\n InvalidUnitError,\n InvalidDateTimeError,\n} from \"./errors.js\";\nimport Invalid from \"./impl/invalid.js\";\n\nconst INVALID = \"Invalid DateTime\";\nconst MAX_DATE = 8.64e15;\n\nfunction unsupportedZone(zone) {\n return new Invalid(\"unsupported zone\", `the zone \"${zone.name}\" is not supported`);\n}\n\n// we cache week data on the DT object and this intermediates the cache\n/**\n * @param {DateTime} dt\n */\nfunction possiblyCachedWeekData(dt) {\n if (dt.weekData === null) {\n dt.weekData = gregorianToWeek(dt.c);\n }\n return dt.weekData;\n}\n\n/**\n * @param {DateTime} dt\n */\nfunction possiblyCachedLocalWeekData(dt) {\n if (dt.localWeekData === null) {\n dt.localWeekData = gregorianToWeek(\n dt.c,\n dt.loc.getMinDaysInFirstWeek(),\n dt.loc.getStartOfWeek()\n );\n }\n return dt.localWeekData;\n}\n\n// clone really means, \"make a new object with these modifications\". all \"setters\" really use this\n// to create a new object while only changing some of the properties\nfunction clone(inst, alts) {\n const current = {\n ts: inst.ts,\n zone: inst.zone,\n c: inst.c,\n o: inst.o,\n loc: inst.loc,\n invalid: inst.invalid,\n };\n return new DateTime({ ...current, ...alts, old: current });\n}\n\n// find the right offset a given local time. The o input is our guess, which determines which\n// offset we'll pick in ambiguous cases (e.g. there are two 3 AMs b/c Fallback DST)\nfunction fixOffset(localTS, o, tz) {\n // Our UTC time is just a guess because our offset is just a guess\n let utcGuess = localTS - o * 60 * 1000;\n\n // Test whether the zone matches the offset for this ts\n const o2 = tz.offset(utcGuess);\n\n // If so, offset didn't change and we're done\n if (o === o2) {\n return [utcGuess, o];\n }\n\n // If not, change the ts by the difference in the offset\n utcGuess -= (o2 - o) * 60 * 1000;\n\n // If that gives us the local time we want, we're done\n const o3 = tz.offset(utcGuess);\n if (o2 === o3) {\n return [utcGuess, o2];\n }\n\n // If it's different, we're in a hole time. The offset has changed, but the we don't adjust the time\n return [localTS - Math.min(o2, o3) * 60 * 1000, Math.max(o2, o3)];\n}\n\n// convert an epoch timestamp into a calendar object with the given offset\nfunction tsToObj(ts, offset) {\n ts += offset * 60 * 1000;\n\n const d = new Date(ts);\n\n return {\n year: d.getUTCFullYear(),\n month: d.getUTCMonth() + 1,\n day: d.getUTCDate(),\n hour: d.getUTCHours(),\n minute: d.getUTCMinutes(),\n second: d.getUTCSeconds(),\n millisecond: d.getUTCMilliseconds(),\n };\n}\n\n// convert a calendar object to a epoch timestamp\nfunction objToTS(obj, offset, zone) {\n return fixOffset(objToLocalTS(obj), offset, zone);\n}\n\n// create a new DT instance by adding a duration, adjusting for DSTs\nfunction adjustTime(inst, dur) {\n const oPre = inst.o,\n year = inst.c.year + Math.trunc(dur.years),\n month = inst.c.month + Math.trunc(dur.months) + Math.trunc(dur.quarters) * 3,\n c = {\n ...inst.c,\n year,\n month,\n day:\n Math.min(inst.c.day, daysInMonth(year, month)) +\n Math.trunc(dur.days) +\n Math.trunc(dur.weeks) * 7,\n },\n millisToAdd = Duration.fromObject({\n years: dur.years - Math.trunc(dur.years),\n quarters: dur.quarters - Math.trunc(dur.quarters),\n months: dur.months - Math.trunc(dur.months),\n weeks: dur.weeks - Math.trunc(dur.weeks),\n days: dur.days - Math.trunc(dur.days),\n hours: dur.hours,\n minutes: dur.minutes,\n seconds: dur.seconds,\n milliseconds: dur.milliseconds,\n }).as(\"milliseconds\"),\n localTS = objToLocalTS(c);\n\n let [ts, o] = fixOffset(localTS, oPre, inst.zone);\n\n if (millisToAdd !== 0) {\n ts += millisToAdd;\n // that could have changed the offset by going over a DST, but we want to keep the ts the same\n o = inst.zone.offset(ts);\n }\n\n return { ts, o };\n}\n\n// helper useful in turning the results of parsing into real dates\n// by handling the zone options\nfunction parseDataToDateTime(parsed, parsedZone, opts, format, text, specificOffset) {\n const { setZone, zone } = opts;\n if ((parsed && Object.keys(parsed).length !== 0) || parsedZone) {\n const interpretationZone = parsedZone || zone,\n inst = DateTime.fromObject(parsed, {\n ...opts,\n zone: interpretationZone,\n specificOffset,\n });\n return setZone ? inst : inst.setZone(zone);\n } else {\n return DateTime.invalid(\n new Invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ${format}`)\n );\n }\n}\n\n// if you want to output a technical format (e.g. RFC 2822), this helper\n// helps handle the details\nfunction toTechFormat(dt, format, allowZ = true) {\n return dt.isValid\n ? Formatter.create(Locale.create(\"en-US\"), {\n allowZ,\n forceSimple: true,\n }).formatDateTimeFromString(dt, format)\n : null;\n}\n\nfunction toISODate(o, extended) {\n const longFormat = o.c.year > 9999 || o.c.year < 0;\n let c = \"\";\n if (longFormat && o.c.year >= 0) c += \"+\";\n c += padStart(o.c.year, longFormat ? 6 : 4);\n\n if (extended) {\n c += \"-\";\n c += padStart(o.c.month);\n c += \"-\";\n c += padStart(o.c.day);\n } else {\n c += padStart(o.c.month);\n c += padStart(o.c.day);\n }\n return c;\n}\n\nfunction toISOTime(\n o,\n extended,\n suppressSeconds,\n suppressMilliseconds,\n includeOffset,\n extendedZone\n) {\n let c = padStart(o.c.hour);\n if (extended) {\n c += \":\";\n c += padStart(o.c.minute);\n if (o.c.millisecond !== 0 || o.c.second !== 0 || !suppressSeconds) {\n c += \":\";\n }\n } else {\n c += padStart(o.c.minute);\n }\n\n if (o.c.millisecond !== 0 || o.c.second !== 0 || !suppressSeconds) {\n c += padStart(o.c.second);\n\n if (o.c.millisecond !== 0 || !suppressMilliseconds) {\n c += \".\";\n c += padStart(o.c.millisecond, 3);\n }\n }\n\n if (includeOffset) {\n if (o.isOffsetFixed && o.offset === 0 && !extendedZone) {\n c += \"Z\";\n } else if (o.o < 0) {\n c += \"-\";\n c += padStart(Math.trunc(-o.o / 60));\n c += \":\";\n c += padStart(Math.trunc(-o.o % 60));\n } else {\n c += \"+\";\n c += padStart(Math.trunc(o.o / 60));\n c += \":\";\n c += padStart(Math.trunc(o.o % 60));\n }\n }\n\n if (extendedZone) {\n c += \"[\" + o.zone.ianaName + \"]\";\n }\n return c;\n}\n\n// defaults for unspecified units in the supported calendars\nconst defaultUnitValues = {\n month: 1,\n day: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n },\n defaultWeekUnitValues = {\n weekNumber: 1,\n weekday: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n },\n defaultOrdinalUnitValues = {\n ordinal: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n };\n\n// Units in the supported calendars, sorted by bigness\nconst orderedUnits = [\"year\", \"month\", \"day\", \"hour\", \"minute\", \"second\", \"millisecond\"],\n orderedWeekUnits = [\n \"weekYear\",\n \"weekNumber\",\n \"weekday\",\n \"hour\",\n \"minute\",\n \"second\",\n \"millisecond\",\n ],\n orderedOrdinalUnits = [\"year\", \"ordinal\", \"hour\", \"minute\", \"second\", \"millisecond\"];\n\n// standardize case and plurality in units\nfunction normalizeUnit(unit) {\n const normalized = {\n year: \"year\",\n years: \"year\",\n month: \"month\",\n months: \"month\",\n day: \"day\",\n days: \"day\",\n hour: \"hour\",\n hours: \"hour\",\n minute: \"minute\",\n minutes: \"minute\",\n quarter: \"quarter\",\n quarters: \"quarter\",\n second: \"second\",\n seconds: \"second\",\n millisecond: \"millisecond\",\n milliseconds: \"millisecond\",\n weekday: \"weekday\",\n weekdays: \"weekday\",\n weeknumber: \"weekNumber\",\n weeksnumber: \"weekNumber\",\n weeknumbers: \"weekNumber\",\n weekyear: \"weekYear\",\n weekyears: \"weekYear\",\n ordinal: \"ordinal\",\n }[unit.toLowerCase()];\n\n if (!normalized) throw new InvalidUnitError(unit);\n\n return normalized;\n}\n\nfunction normalizeUnitWithLocalWeeks(unit) {\n switch (unit.toLowerCase()) {\n case \"localweekday\":\n case \"localweekdays\":\n return \"localWeekday\";\n case \"localweeknumber\":\n case \"localweeknumbers\":\n return \"localWeekNumber\";\n case \"localweekyear\":\n case \"localweekyears\":\n return \"localWeekYear\";\n default:\n return normalizeUnit(unit);\n }\n}\n\n// this is a dumbed down version of fromObject() that runs about 60% faster\n// but doesn't do any validation, makes a bunch of assumptions about what units\n// are present, and so on.\nfunction quickDT(obj, opts) {\n const zone = normalizeZone(opts.zone, Settings.defaultZone),\n loc = Locale.fromObject(opts),\n tsNow = Settings.now();\n\n let ts, o;\n\n // assume we have the higher-order units\n if (!isUndefined(obj.year)) {\n for (const u of orderedUnits) {\n if (isUndefined(obj[u])) {\n obj[u] = defaultUnitValues[u];\n }\n }\n\n const invalid = hasInvalidGregorianData(obj) || hasInvalidTimeData(obj);\n if (invalid) {\n return DateTime.invalid(invalid);\n }\n\n const offsetProvis = zone.offset(tsNow);\n [ts, o] = objToTS(obj, offsetProvis, zone);\n } else {\n ts = tsNow;\n }\n\n return new DateTime({ ts, zone, loc, o });\n}\n\nfunction diffRelative(start, end, opts) {\n const round = isUndefined(opts.round) ? true : opts.round,\n format = (c, unit) => {\n c = roundTo(c, round || opts.calendary ? 0 : 2, true);\n const formatter = end.loc.clone(opts).relFormatter(opts);\n return formatter.format(c, unit);\n },\n differ = (unit) => {\n if (opts.calendary) {\n if (!end.hasSame(start, unit)) {\n return end.startOf(unit).diff(start.startOf(unit), unit).get(unit);\n } else return 0;\n } else {\n return end.diff(start, unit).get(unit);\n }\n };\n\n if (opts.unit) {\n return format(differ(opts.unit), opts.unit);\n }\n\n for (const unit of opts.units) {\n const count = differ(unit);\n if (Math.abs(count) >= 1) {\n return format(count, unit);\n }\n }\n return format(start > end ? -0 : 0, opts.units[opts.units.length - 1]);\n}\n\nfunction lastOpts(argList) {\n let opts = {},\n args;\n if (argList.length > 0 && typeof argList[argList.length - 1] === \"object\") {\n opts = argList[argList.length - 1];\n args = Array.from(argList).slice(0, argList.length - 1);\n } else {\n args = Array.from(argList);\n }\n return [opts, args];\n}\n\n/**\n * A DateTime is an immutable data structure representing a specific date and time and accompanying methods. It contains class and instance methods for creating, parsing, interrogating, transforming, and formatting them.\n *\n * A DateTime comprises of:\n * * A timestamp. Each DateTime instance refers to a specific millisecond of the Unix epoch.\n * * A time zone. Each instance is considered in the context of a specific zone (by default the local system's zone).\n * * Configuration properties that effect how output strings are formatted, such as `locale`, `numberingSystem`, and `outputCalendar`.\n *\n * Here is a brief overview of the most commonly used functionality it provides:\n *\n * * **Creation**: To create a DateTime from its components, use one of its factory class methods: {@link DateTime.local}, {@link DateTime.utc}, and (most flexibly) {@link DateTime.fromObject}. To create one from a standard string format, use {@link DateTime.fromISO}, {@link DateTime.fromHTTP}, and {@link DateTime.fromRFC2822}. To create one from a custom string format, use {@link DateTime.fromFormat}. To create one from a native JS date, use {@link DateTime.fromJSDate}.\n * * **Gregorian calendar and time**: To examine the Gregorian properties of a DateTime individually (i.e as opposed to collectively through {@link DateTime#toObject}), use the {@link DateTime#year}, {@link DateTime#month},\n * {@link DateTime#day}, {@link DateTime#hour}, {@link DateTime#minute}, {@link DateTime#second}, {@link DateTime#millisecond} accessors.\n * * **Week calendar**: For ISO week calendar attributes, see the {@link DateTime#weekYear}, {@link DateTime#weekNumber}, and {@link DateTime#weekday} accessors.\n * * **Configuration** See the {@link DateTime#locale} and {@link DateTime#numberingSystem} accessors.\n * * **Transformation**: To transform the DateTime into other DateTimes, use {@link DateTime#set}, {@link DateTime#reconfigure}, {@link DateTime#setZone}, {@link DateTime#setLocale}, {@link DateTime.plus}, {@link DateTime#minus}, {@link DateTime#endOf}, {@link DateTime#startOf}, {@link DateTime#toUTC}, and {@link DateTime#toLocal}.\n * * **Output**: To convert the DateTime to other representations, use the {@link DateTime#toRelative}, {@link DateTime#toRelativeCalendar}, {@link DateTime#toJSON}, {@link DateTime#toISO}, {@link DateTime#toHTTP}, {@link DateTime#toObject}, {@link DateTime#toRFC2822}, {@link DateTime#toString}, {@link DateTime#toLocaleString}, {@link DateTime#toFormat}, {@link DateTime#toMillis} and {@link DateTime#toJSDate}.\n *\n * There's plenty others documented below. In addition, for more information on subtler topics like internationalization, time zones, alternative calendars, validity, and so on, see the external documentation.\n */\nexport default class DateTime {\n /**\n * @access private\n */\n constructor(config) {\n const zone = config.zone || Settings.defaultZone;\n\n let invalid =\n config.invalid ||\n (Number.isNaN(config.ts) ? new Invalid(\"invalid input\") : null) ||\n (!zone.isValid ? unsupportedZone(zone) : null);\n /**\n * @access private\n */\n this.ts = isUndefined(config.ts) ? Settings.now() : config.ts;\n\n let c = null,\n o = null;\n if (!invalid) {\n const unchanged = config.old && config.old.ts === this.ts && config.old.zone.equals(zone);\n\n if (unchanged) {\n [c, o] = [config.old.c, config.old.o];\n } else {\n const ot = zone.offset(this.ts);\n c = tsToObj(this.ts, ot);\n invalid = Number.isNaN(c.year) ? new Invalid(\"invalid input\") : null;\n c = invalid ? null : c;\n o = invalid ? null : ot;\n }\n }\n\n /**\n * @access private\n */\n this._zone = zone;\n /**\n * @access private\n */\n this.loc = config.loc || Locale.create();\n /**\n * @access private\n */\n this.invalid = invalid;\n /**\n * @access private\n */\n this.weekData = null;\n /**\n * @access private\n */\n this.localWeekData = null;\n /**\n * @access private\n */\n this.c = c;\n /**\n * @access private\n */\n this.o = o;\n /**\n * @access private\n */\n this.isLuxonDateTime = true;\n }\n\n // CONSTRUCT\n\n /**\n * Create a DateTime for the current instant, in the system's time zone.\n *\n * Use Settings to override these default values if needed.\n * @example DateTime.now().toISO() //~> now in the ISO format\n * @return {DateTime}\n */\n static now() {\n return new DateTime({});\n }\n\n /**\n * Create a local DateTime\n * @param {number} [year] - The calendar year. If omitted (as in, call `local()` with no arguments), the current time will be used\n * @param {number} [month=1] - The month, 1-indexed\n * @param {number} [day=1] - The day of the month, 1-indexed\n * @param {number} [hour=0] - The hour of the day, in 24-hour time\n * @param {number} [minute=0] - The minute of the hour, meaning a number between 0 and 59\n * @param {number} [second=0] - The second of the minute, meaning a number between 0 and 59\n * @param {number} [millisecond=0] - The millisecond of the second, meaning a number between 0 and 999\n * @example DateTime.local() //~> now\n * @example DateTime.local({ zone: \"America/New_York\" }) //~> now, in US east coast time\n * @example DateTime.local(2017) //~> 2017-01-01T00:00:00\n * @example DateTime.local(2017, 3) //~> 2017-03-01T00:00:00\n * @example DateTime.local(2017, 3, 12, { locale: \"fr\" }) //~> 2017-03-12T00:00:00, with a French locale\n * @example DateTime.local(2017, 3, 12, 5) //~> 2017-03-12T05:00:00\n * @example DateTime.local(2017, 3, 12, 5, { zone: \"utc\" }) //~> 2017-03-12T05:00:00, in UTC\n * @example DateTime.local(2017, 3, 12, 5, 45) //~> 2017-03-12T05:45:00\n * @example DateTime.local(2017, 3, 12, 5, 45, 10) //~> 2017-03-12T05:45:10\n * @example DateTime.local(2017, 3, 12, 5, 45, 10, 765) //~> 2017-03-12T05:45:10.765\n * @return {DateTime}\n */\n static local() {\n const [opts, args] = lastOpts(arguments),\n [year, month, day, hour, minute, second, millisecond] = args;\n return quickDT({ year, month, day, hour, minute, second, millisecond }, opts);\n }\n\n /**\n * Create a DateTime in UTC\n * @param {number} [year] - The calendar year. If omitted (as in, call `utc()` with no arguments), the current time will be used\n * @param {number} [month=1] - The month, 1-indexed\n * @param {number} [day=1] - The day of the month\n * @param {number} [hour=0] - The hour of the day, in 24-hour time\n * @param {number} [minute=0] - The minute of the hour, meaning a number between 0 and 59\n * @param {number} [second=0] - The second of the minute, meaning a number between 0 and 59\n * @param {number} [millisecond=0] - The millisecond of the second, meaning a number between 0 and 999\n * @param {Object} options - configuration options for the DateTime\n * @param {string} [options.locale] - a locale to set on the resulting DateTime instance\n * @param {string} [options.outputCalendar] - the output calendar to set on the resulting DateTime instance\n * @param {string} [options.numberingSystem] - the numbering system to set on the resulting DateTime instance\n * @example DateTime.utc() //~> now\n * @example DateTime.utc(2017) //~> 2017-01-01T00:00:00Z\n * @example DateTime.utc(2017, 3) //~> 2017-03-01T00:00:00Z\n * @example DateTime.utc(2017, 3, 12) //~> 2017-03-12T00:00:00Z\n * @example DateTime.utc(2017, 3, 12, 5) //~> 2017-03-12T05:00:00Z\n * @example DateTime.utc(2017, 3, 12, 5, 45) //~> 2017-03-12T05:45:00Z\n * @example DateTime.utc(2017, 3, 12, 5, 45, { locale: \"fr\" }) //~> 2017-03-12T05:45:00Z with a French locale\n * @example DateTime.utc(2017, 3, 12, 5, 45, 10) //~> 2017-03-12T05:45:10Z\n * @example DateTime.utc(2017, 3, 12, 5, 45, 10, 765, { locale: \"fr\" }) //~> 2017-03-12T05:45:10.765Z with a French locale\n * @return {DateTime}\n */\n static utc() {\n const [opts, args] = lastOpts(arguments),\n [year, month, day, hour, minute, second, millisecond] = args;\n\n opts.zone = FixedOffsetZone.utcInstance;\n return quickDT({ year, month, day, hour, minute, second, millisecond }, opts);\n }\n\n /**\n * Create a DateTime from a JavaScript Date object. Uses the default zone.\n * @param {Date} date - a JavaScript Date object\n * @param {Object} options - configuration options for the DateTime\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n * @return {DateTime}\n */\n static fromJSDate(date, options = {}) {\n const ts = isDate(date) ? date.valueOf() : NaN;\n if (Number.isNaN(ts)) {\n return DateTime.invalid(\"invalid input\");\n }\n\n const zoneToUse = normalizeZone(options.zone, Settings.defaultZone);\n if (!zoneToUse.isValid) {\n return DateTime.invalid(unsupportedZone(zoneToUse));\n }\n\n return new DateTime({\n ts: ts,\n zone: zoneToUse,\n loc: Locale.fromObject(options),\n });\n }\n\n /**\n * Create a DateTime from a number of milliseconds since the epoch (meaning since 1 January 1970 00:00:00 UTC). Uses the default zone.\n * @param {number} milliseconds - a number of milliseconds since 1970 UTC\n * @param {Object} options - configuration options for the DateTime\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n * @param {string} [options.locale] - a locale to set on the resulting DateTime instance\n * @param {string} options.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} options.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @return {DateTime}\n */\n static fromMillis(milliseconds, options = {}) {\n if (!isNumber(milliseconds)) {\n throw new InvalidArgumentError(\n `fromMillis requires a numerical input, but received a ${typeof milliseconds} with value ${milliseconds}`\n );\n } else if (milliseconds < -MAX_DATE || milliseconds > MAX_DATE) {\n // this isn't perfect because because we can still end up out of range because of additional shifting, but it's a start\n return DateTime.invalid(\"Timestamp out of range\");\n } else {\n return new DateTime({\n ts: milliseconds,\n zone: normalizeZone(options.zone, Settings.defaultZone),\n loc: Locale.fromObject(options),\n });\n }\n }\n\n /**\n * Create a DateTime from a number of seconds since the epoch (meaning since 1 January 1970 00:00:00 UTC). Uses the default zone.\n * @param {number} seconds - a number of seconds since 1970 UTC\n * @param {Object} options - configuration options for the DateTime\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n * @param {string} [options.locale] - a locale to set on the resulting DateTime instance\n * @param {string} options.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} options.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @return {DateTime}\n */\n static fromSeconds(seconds, options = {}) {\n if (!isNumber(seconds)) {\n throw new InvalidArgumentError(\"fromSeconds requires a numerical input\");\n } else {\n return new DateTime({\n ts: seconds * 1000,\n zone: normalizeZone(options.zone, Settings.defaultZone),\n loc: Locale.fromObject(options),\n });\n }\n }\n\n /**\n * Create a DateTime from a JavaScript object with keys like 'year' and 'hour' with reasonable defaults.\n * @param {Object} obj - the object to create the DateTime from\n * @param {number} obj.year - a year, such as 1987\n * @param {number} obj.month - a month, 1-12\n * @param {number} obj.day - a day of the month, 1-31, depending on the month\n * @param {number} obj.ordinal - day of the year, 1-365 or 366\n * @param {number} obj.weekYear - an ISO week year\n * @param {number} obj.weekNumber - an ISO week number, between 1 and 52 or 53, depending on the year\n * @param {number} obj.weekday - an ISO weekday, 1-7, where 1 is Monday and 7 is Sunday\n * @param {number} obj.localWeekYear - a week year, according to the locale\n * @param {number} obj.localWeekNumber - a week number, between 1 and 52 or 53, depending on the year, according to the locale\n * @param {number} obj.localWeekday - a weekday, 1-7, where 1 is the first and 7 is the last day of the week, according to the locale\n * @param {number} obj.hour - hour of the day, 0-23\n * @param {number} obj.minute - minute of the hour, 0-59\n * @param {number} obj.second - second of the minute, 0-59\n * @param {number} obj.millisecond - millisecond of the second, 0-999\n * @param {Object} opts - options for creating this DateTime\n * @param {string|Zone} [opts.zone='local'] - interpret the numbers in the context of a particular zone. Can take any value taken as the first argument to setZone()\n * @param {string} [opts.locale='system\\'s locale'] - a locale to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @example DateTime.fromObject({ year: 1982, month: 5, day: 25}).toISODate() //=> '1982-05-25'\n * @example DateTime.fromObject({ year: 1982 }).toISODate() //=> '1982-01-01'\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }) //~> today at 10:26:06\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }, { zone: 'utc' }),\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }, { zone: 'local' })\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }, { zone: 'America/New_York' })\n * @example DateTime.fromObject({ weekYear: 2016, weekNumber: 2, weekday: 3 }).toISODate() //=> '2016-01-13'\n * @example DateTime.fromObject({ localWeekYear: 2022, localWeekNumber: 1, localWeekday: 1 }, { locale: \"en-US\" }).toISODate() //=> '2021-12-26'\n * @return {DateTime}\n */\n static fromObject(obj, opts = {}) {\n obj = obj || {};\n const zoneToUse = normalizeZone(opts.zone, Settings.defaultZone);\n if (!zoneToUse.isValid) {\n return DateTime.invalid(unsupportedZone(zoneToUse));\n }\n\n const loc = Locale.fromObject(opts);\n const normalized = normalizeObject(obj, normalizeUnitWithLocalWeeks);\n const { minDaysInFirstWeek, startOfWeek } = usesLocalWeekValues(normalized, loc);\n\n const tsNow = Settings.now(),\n offsetProvis = !isUndefined(opts.specificOffset)\n ? opts.specificOffset\n : zoneToUse.offset(tsNow),\n containsOrdinal = !isUndefined(normalized.ordinal),\n containsGregorYear = !isUndefined(normalized.year),\n containsGregorMD = !isUndefined(normalized.month) || !isUndefined(normalized.day),\n containsGregor = containsGregorYear || containsGregorMD,\n definiteWeekDef = normalized.weekYear || normalized.weekNumber;\n\n // cases:\n // just a weekday -> this week's instance of that weekday, no worries\n // (gregorian data or ordinal) + (weekYear or weekNumber) -> error\n // (gregorian month or day) + ordinal -> error\n // otherwise just use weeks or ordinals or gregorian, depending on what's specified\n\n if ((containsGregor || containsOrdinal) && definiteWeekDef) {\n throw new ConflictingSpecificationError(\n \"Can't mix weekYear/weekNumber units with year/month/day or ordinals\"\n );\n }\n\n if (containsGregorMD && containsOrdinal) {\n throw new ConflictingSpecificationError(\"Can't mix ordinal dates with month/day\");\n }\n\n const useWeekData = definiteWeekDef || (normalized.weekday && !containsGregor);\n\n // configure ourselves to deal with gregorian dates or week stuff\n let units,\n defaultValues,\n objNow = tsToObj(tsNow, offsetProvis);\n if (useWeekData) {\n units = orderedWeekUnits;\n defaultValues = defaultWeekUnitValues;\n objNow = gregorianToWeek(objNow, minDaysInFirstWeek, startOfWeek);\n } else if (containsOrdinal) {\n units = orderedOrdinalUnits;\n defaultValues = defaultOrdinalUnitValues;\n objNow = gregorianToOrdinal(objNow);\n } else {\n units = orderedUnits;\n defaultValues = defaultUnitValues;\n }\n\n // set default values for missing stuff\n let foundFirst = false;\n for (const u of units) {\n const v = normalized[u];\n if (!isUndefined(v)) {\n foundFirst = true;\n } else if (foundFirst) {\n normalized[u] = defaultValues[u];\n } else {\n normalized[u] = objNow[u];\n }\n }\n\n // make sure the values we have are in range\n const higherOrderInvalid = useWeekData\n ? hasInvalidWeekData(normalized, minDaysInFirstWeek, startOfWeek)\n : containsOrdinal\n ? hasInvalidOrdinalData(normalized)\n : hasInvalidGregorianData(normalized),\n invalid = higherOrderInvalid || hasInvalidTimeData(normalized);\n\n if (invalid) {\n return DateTime.invalid(invalid);\n }\n\n // compute the actual time\n const gregorian = useWeekData\n ? weekToGregorian(normalized, minDaysInFirstWeek, startOfWeek)\n : containsOrdinal\n ? ordinalToGregorian(normalized)\n : normalized,\n [tsFinal, offsetFinal] = objToTS(gregorian, offsetProvis, zoneToUse),\n inst = new DateTime({\n ts: tsFinal,\n zone: zoneToUse,\n o: offsetFinal,\n loc,\n });\n\n // gregorian data + weekday serves only to validate\n if (normalized.weekday && containsGregor && obj.weekday !== inst.weekday) {\n return DateTime.invalid(\n \"mismatched weekday\",\n `you can't specify both a weekday of ${normalized.weekday} and a date of ${inst.toISO()}`\n );\n }\n\n return inst;\n }\n\n /**\n * Create a DateTime from an ISO 8601 string\n * @param {string} text - the ISO string\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the time to this zone\n * @param {boolean} [opts.setZone=false] - override the zone with a fixed-offset zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} [opts.outputCalendar] - the output calendar to set on the resulting DateTime instance\n * @param {string} [opts.numberingSystem] - the numbering system to set on the resulting DateTime instance\n * @example DateTime.fromISO('2016-05-25T09:08:34.123')\n * @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00')\n * @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00', {setZone: true})\n * @example DateTime.fromISO('2016-05-25T09:08:34.123', {zone: 'utc'})\n * @example DateTime.fromISO('2016-W05-4')\n * @return {DateTime}\n */\n static fromISO(text, opts = {}) {\n const [vals, parsedZone] = parseISODate(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"ISO 8601\", text);\n }\n\n /**\n * Create a DateTime from an RFC 2822 string\n * @param {string} text - the RFC 2822 string\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - convert the time to this zone. Since the offset is always specified in the string itself, this has no effect on the interpretation of string, merely the zone the resulting DateTime is expressed in.\n * @param {boolean} [opts.setZone=false] - override the zone with a fixed-offset zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @example DateTime.fromRFC2822('25 Nov 2016 13:23:12 GMT')\n * @example DateTime.fromRFC2822('Fri, 25 Nov 2016 13:23:12 +0600')\n * @example DateTime.fromRFC2822('25 Nov 2016 13:23 Z')\n * @return {DateTime}\n */\n static fromRFC2822(text, opts = {}) {\n const [vals, parsedZone] = parseRFC2822Date(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"RFC 2822\", text);\n }\n\n /**\n * Create a DateTime from an HTTP header date\n * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1\n * @param {string} text - the HTTP header date\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - convert the time to this zone. Since HTTP dates are always in UTC, this has no effect on the interpretation of string, merely the zone the resulting DateTime is expressed in.\n * @param {boolean} [opts.setZone=false] - override the zone with the fixed-offset zone specified in the string. For HTTP dates, this is always UTC, so this option is equivalent to setting the `zone` option to 'utc', but this option is included for consistency with similar methods.\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @example DateTime.fromHTTP('Sun, 06 Nov 1994 08:49:37 GMT')\n * @example DateTime.fromHTTP('Sunday, 06-Nov-94 08:49:37 GMT')\n * @example DateTime.fromHTTP('Sun Nov 6 08:49:37 1994')\n * @return {DateTime}\n */\n static fromHTTP(text, opts = {}) {\n const [vals, parsedZone] = parseHTTPDate(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"HTTP\", opts);\n }\n\n /**\n * Create a DateTime from an input string and format string.\n * Defaults to en-US if no locale has been specified, regardless of the system's locale. For a table of tokens and their interpretations, see [here](https://moment.github.io/luxon/#/parsing?id=table-of-tokens).\n * @param {string} text - the string to parse\n * @param {string} fmt - the format the string is expected to be in (see the link below for the formats)\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the DateTime to this zone\n * @param {boolean} [opts.setZone=false] - override the zone with a zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='en-US'] - a locale string to use when parsing. Will also set the DateTime to this locale\n * @param {string} opts.numberingSystem - the numbering system to use when parsing. Will also set the resulting DateTime to this numbering system\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @return {DateTime}\n */\n static fromFormat(text, fmt, opts = {}) {\n if (isUndefined(text) || isUndefined(fmt)) {\n throw new InvalidArgumentError(\"fromFormat requires an input string and a format\");\n }\n\n const { locale = null, numberingSystem = null } = opts,\n localeToUse = Locale.fromOpts({\n locale,\n numberingSystem,\n defaultToEN: true,\n }),\n [vals, parsedZone, specificOffset, invalid] = parseFromTokens(localeToUse, text, fmt);\n if (invalid) {\n return DateTime.invalid(invalid);\n } else {\n return parseDataToDateTime(vals, parsedZone, opts, `format ${fmt}`, text, specificOffset);\n }\n }\n\n /**\n * @deprecated use fromFormat instead\n */\n static fromString(text, fmt, opts = {}) {\n return DateTime.fromFormat(text, fmt, opts);\n }\n\n /**\n * Create a DateTime from a SQL date, time, or datetime\n * Defaults to en-US if no locale has been specified, regardless of the system's locale\n * @param {string} text - the string to parse\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the DateTime to this zone\n * @param {boolean} [opts.setZone=false] - override the zone with a zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='en-US'] - a locale string to use when parsing. Will also set the DateTime to this locale\n * @param {string} opts.numberingSystem - the numbering system to use when parsing. Will also set the resulting DateTime to this numbering system\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @example DateTime.fromSQL('2017-05-15')\n * @example DateTime.fromSQL('2017-05-15 09:12:34')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342+06:00')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342 America/Los_Angeles')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342 America/Los_Angeles', { setZone: true })\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342', { zone: 'America/Los_Angeles' })\n * @example DateTime.fromSQL('09:12:34.342')\n * @return {DateTime}\n */\n static fromSQL(text, opts = {}) {\n const [vals, parsedZone] = parseSQL(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"SQL\", text);\n }\n\n /**\n * Create an invalid DateTime.\n * @param {string} reason - simple string of why this DateTime is invalid. Should not contain parameters or anything else data-dependent.\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n * @return {DateTime}\n */\n static invalid(reason, explanation = null) {\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the DateTime is invalid\");\n }\n\n const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidDateTimeError(invalid);\n } else {\n return new DateTime({ invalid });\n }\n }\n\n /**\n * Check if an object is an instance of DateTime. Works across context boundaries\n * @param {object} o\n * @return {boolean}\n */\n static isDateTime(o) {\n return (o && o.isLuxonDateTime) || false;\n }\n\n /**\n * Produce the format string for a set of options\n * @param formatOpts\n * @param localeOpts\n * @returns {string}\n */\n static parseFormatForOpts(formatOpts, localeOpts = {}) {\n const tokenList = formatOptsToTokens(formatOpts, Locale.fromObject(localeOpts));\n return !tokenList ? null : tokenList.map((t) => (t ? t.val : null)).join(\"\");\n }\n\n /**\n * Produce the the fully expanded format token for the locale\n * Does NOT quote characters, so quoted tokens will not round trip correctly\n * @param fmt\n * @param localeOpts\n * @returns {string}\n */\n static expandFormat(fmt, localeOpts = {}) {\n const expanded = expandMacroTokens(Formatter.parseFormat(fmt), Locale.fromObject(localeOpts));\n return expanded.map((t) => t.val).join(\"\");\n }\n\n // INFO\n\n /**\n * Get the value of unit.\n * @param {string} unit - a unit such as 'minute' or 'day'\n * @example DateTime.local(2017, 7, 4).get('month'); //=> 7\n * @example DateTime.local(2017, 7, 4).get('day'); //=> 4\n * @return {number}\n */\n get(unit) {\n return this[unit];\n }\n\n /**\n * Returns whether the DateTime is valid. Invalid DateTimes occur when:\n * * The DateTime was created from invalid calendar information, such as the 13th month or February 30\n * * The DateTime was created by an operation on another invalid date\n * @type {boolean}\n */\n get isValid() {\n return this.invalid === null;\n }\n\n /**\n * Returns an error code if this DateTime is invalid, or null if the DateTime is valid\n * @type {string}\n */\n get invalidReason() {\n return this.invalid ? this.invalid.reason : null;\n }\n\n /**\n * Returns an explanation of why this DateTime became invalid, or null if the DateTime is valid\n * @type {string}\n */\n get invalidExplanation() {\n return this.invalid ? this.invalid.explanation : null;\n }\n\n /**\n * Get the locale of a DateTime, such 'en-GB'. The locale is used when formatting the DateTime\n *\n * @type {string}\n */\n get locale() {\n return this.isValid ? this.loc.locale : null;\n }\n\n /**\n * Get the numbering system of a DateTime, such 'beng'. The numbering system is used when formatting the DateTime\n *\n * @type {string}\n */\n get numberingSystem() {\n return this.isValid ? this.loc.numberingSystem : null;\n }\n\n /**\n * Get the output calendar of a DateTime, such 'islamic'. The output calendar is used when formatting the DateTime\n *\n * @type {string}\n */\n get outputCalendar() {\n return this.isValid ? this.loc.outputCalendar : null;\n }\n\n /**\n * Get the time zone associated with this DateTime.\n * @type {Zone}\n */\n get zone() {\n return this._zone;\n }\n\n /**\n * Get the name of the time zone.\n * @type {string}\n */\n get zoneName() {\n return this.isValid ? this.zone.name : null;\n }\n\n /**\n * Get the year\n * @example DateTime.local(2017, 5, 25).year //=> 2017\n * @type {number}\n */\n get year() {\n return this.isValid ? this.c.year : NaN;\n }\n\n /**\n * Get the quarter\n * @example DateTime.local(2017, 5, 25).quarter //=> 2\n * @type {number}\n */\n get quarter() {\n return this.isValid ? Math.ceil(this.c.month / 3) : NaN;\n }\n\n /**\n * Get the month (1-12).\n * @example DateTime.local(2017, 5, 25).month //=> 5\n * @type {number}\n */\n get month() {\n return this.isValid ? this.c.month : NaN;\n }\n\n /**\n * Get the day of the month (1-30ish).\n * @example DateTime.local(2017, 5, 25).day //=> 25\n * @type {number}\n */\n get day() {\n return this.isValid ? this.c.day : NaN;\n }\n\n /**\n * Get the hour of the day (0-23).\n * @example DateTime.local(2017, 5, 25, 9).hour //=> 9\n * @type {number}\n */\n get hour() {\n return this.isValid ? this.c.hour : NaN;\n }\n\n /**\n * Get the minute of the hour (0-59).\n * @example DateTime.local(2017, 5, 25, 9, 30).minute //=> 30\n * @type {number}\n */\n get minute() {\n return this.isValid ? this.c.minute : NaN;\n }\n\n /**\n * Get the second of the minute (0-59).\n * @example DateTime.local(2017, 5, 25, 9, 30, 52).second //=> 52\n * @type {number}\n */\n get second() {\n return this.isValid ? this.c.second : NaN;\n }\n\n /**\n * Get the millisecond of the second (0-999).\n * @example DateTime.local(2017, 5, 25, 9, 30, 52, 654).millisecond //=> 654\n * @type {number}\n */\n get millisecond() {\n return this.isValid ? this.c.millisecond : NaN;\n }\n\n /**\n * Get the week year\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2014, 12, 31).weekYear //=> 2015\n * @type {number}\n */\n get weekYear() {\n return this.isValid ? possiblyCachedWeekData(this).weekYear : NaN;\n }\n\n /**\n * Get the week number of the week year (1-52ish).\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2017, 5, 25).weekNumber //=> 21\n * @type {number}\n */\n get weekNumber() {\n return this.isValid ? possiblyCachedWeekData(this).weekNumber : NaN;\n }\n\n /**\n * Get the day of the week.\n * 1 is Monday and 7 is Sunday\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2014, 11, 31).weekday //=> 4\n * @type {number}\n */\n get weekday() {\n return this.isValid ? possiblyCachedWeekData(this).weekday : NaN;\n }\n\n /**\n * Returns true if this date is on a weekend according to the locale, false otherwise\n * @returns {boolean}\n */\n get isWeekend() {\n return this.isValid && this.loc.getWeekendDays().includes(this.weekday);\n }\n\n /**\n * Get the day of the week according to the locale.\n * 1 is the first day of the week and 7 is the last day of the week.\n * If the locale assigns Sunday as the first day of the week, then a date which is a Sunday will return 1,\n * @returns {number}\n */\n get localWeekday() {\n return this.isValid ? possiblyCachedLocalWeekData(this).weekday : NaN;\n }\n\n /**\n * Get the week number of the week year according to the locale. Different locales assign week numbers differently,\n * because the week can start on different days of the week (see localWeekday) and because a different number of days\n * is required for a week to count as the first week of a year.\n * @returns {number}\n */\n get localWeekNumber() {\n return this.isValid ? possiblyCachedLocalWeekData(this).weekNumber : NaN;\n }\n\n /**\n * Get the week year according to the locale. Different locales assign week numbers (and therefor week years)\n * differently, see localWeekNumber.\n * @returns {number}\n */\n get localWeekYear() {\n return this.isValid ? possiblyCachedLocalWeekData(this).weekYear : NaN;\n }\n\n /**\n * Get the ordinal (meaning the day of the year)\n * @example DateTime.local(2017, 5, 25).ordinal //=> 145\n * @type {number|DateTime}\n */\n get ordinal() {\n return this.isValid ? gregorianToOrdinal(this.c).ordinal : NaN;\n }\n\n /**\n * Get the human readable short month name, such as 'Oct'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).monthShort //=> Oct\n * @type {string}\n */\n get monthShort() {\n return this.isValid ? Info.months(\"short\", { locObj: this.loc })[this.month - 1] : null;\n }\n\n /**\n * Get the human readable long month name, such as 'October'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).monthLong //=> October\n * @type {string}\n */\n get monthLong() {\n return this.isValid ? Info.months(\"long\", { locObj: this.loc })[this.month - 1] : null;\n }\n\n /**\n * Get the human readable short weekday, such as 'Mon'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).weekdayShort //=> Mon\n * @type {string}\n */\n get weekdayShort() {\n return this.isValid ? Info.weekdays(\"short\", { locObj: this.loc })[this.weekday - 1] : null;\n }\n\n /**\n * Get the human readable long weekday, such as 'Monday'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).weekdayLong //=> Monday\n * @type {string}\n */\n get weekdayLong() {\n return this.isValid ? Info.weekdays(\"long\", { locObj: this.loc })[this.weekday - 1] : null;\n }\n\n /**\n * Get the UTC offset of this DateTime in minutes\n * @example DateTime.now().offset //=> -240\n * @example DateTime.utc().offset //=> 0\n * @type {number}\n */\n get offset() {\n return this.isValid ? +this.o : NaN;\n }\n\n /**\n * Get the short human name for the zone's current offset, for example \"EST\" or \"EDT\".\n * Defaults to the system's locale if no locale has been specified\n * @type {string}\n */\n get offsetNameShort() {\n if (this.isValid) {\n return this.zone.offsetName(this.ts, {\n format: \"short\",\n locale: this.locale,\n });\n } else {\n return null;\n }\n }\n\n /**\n * Get the long human name for the zone's current offset, for example \"Eastern Standard Time\" or \"Eastern Daylight Time\".\n * Defaults to the system's locale if no locale has been specified\n * @type {string}\n */\n get offsetNameLong() {\n if (this.isValid) {\n return this.zone.offsetName(this.ts, {\n format: \"long\",\n locale: this.locale,\n });\n } else {\n return null;\n }\n }\n\n /**\n * Get whether this zone's offset ever changes, as in a DST.\n * @type {boolean}\n */\n get isOffsetFixed() {\n return this.isValid ? this.zone.isUniversal : null;\n }\n\n /**\n * Get whether the DateTime is in a DST.\n * @type {boolean}\n */\n get isInDST() {\n if (this.isOffsetFixed) {\n return false;\n } else {\n return (\n this.offset > this.set({ month: 1, day: 1 }).offset ||\n this.offset > this.set({ month: 5 }).offset\n );\n }\n }\n\n /**\n * Get those DateTimes which have the same local time as this DateTime, but a different offset from UTC\n * in this DateTime's zone. During DST changes local time can be ambiguous, for example\n * `2023-10-29T02:30:00` in `Europe/Berlin` can have offset `+01:00` or `+02:00`.\n * This method will return both possible DateTimes if this DateTime's local time is ambiguous.\n * @returns {DateTime[]}\n */\n getPossibleOffsets() {\n if (!this.isValid || this.isOffsetFixed) {\n return [this];\n }\n const dayMs = 86400000;\n const minuteMs = 60000;\n const localTS = objToLocalTS(this.c);\n const oEarlier = this.zone.offset(localTS - dayMs);\n const oLater = this.zone.offset(localTS + dayMs);\n\n const o1 = this.zone.offset(localTS - oEarlier * minuteMs);\n const o2 = this.zone.offset(localTS - oLater * minuteMs);\n if (o1 === o2) {\n return [this];\n }\n const ts1 = localTS - o1 * minuteMs;\n const ts2 = localTS - o2 * minuteMs;\n const c1 = tsToObj(ts1, o1);\n const c2 = tsToObj(ts2, o2);\n if (\n c1.hour === c2.hour &&\n c1.minute === c2.minute &&\n c1.second === c2.second &&\n c1.millisecond === c2.millisecond\n ) {\n return [clone(this, { ts: ts1 }), clone(this, { ts: ts2 })];\n }\n return [this];\n }\n\n /**\n * Returns true if this DateTime is in a leap year, false otherwise\n * @example DateTime.local(2016).isInLeapYear //=> true\n * @example DateTime.local(2013).isInLeapYear //=> false\n * @type {boolean}\n */\n get isInLeapYear() {\n return isLeapYear(this.year);\n }\n\n /**\n * Returns the number of days in this DateTime's month\n * @example DateTime.local(2016, 2).daysInMonth //=> 29\n * @example DateTime.local(2016, 3).daysInMonth //=> 31\n * @type {number}\n */\n get daysInMonth() {\n return daysInMonth(this.year, this.month);\n }\n\n /**\n * Returns the number of days in this DateTime's year\n * @example DateTime.local(2016).daysInYear //=> 366\n * @example DateTime.local(2013).daysInYear //=> 365\n * @type {number}\n */\n get daysInYear() {\n return this.isValid ? daysInYear(this.year) : NaN;\n }\n\n /**\n * Returns the number of weeks in this DateTime's year\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2004).weeksInWeekYear //=> 53\n * @example DateTime.local(2013).weeksInWeekYear //=> 52\n * @type {number}\n */\n get weeksInWeekYear() {\n return this.isValid ? weeksInWeekYear(this.weekYear) : NaN;\n }\n\n /**\n * Returns the number of weeks in this DateTime's local week year\n * @example DateTime.local(2020, 6, {locale: 'en-US'}).weeksInLocalWeekYear //=> 52\n * @example DateTime.local(2020, 6, {locale: 'de-DE'}).weeksInLocalWeekYear //=> 53\n * @type {number}\n */\n get weeksInLocalWeekYear() {\n return this.isValid\n ? weeksInWeekYear(\n this.localWeekYear,\n this.loc.getMinDaysInFirstWeek(),\n this.loc.getStartOfWeek()\n )\n : NaN;\n }\n\n /**\n * Returns the resolved Intl options for this DateTime.\n * This is useful in understanding the behavior of formatting methods\n * @param {Object} opts - the same options as toLocaleString\n * @return {Object}\n */\n resolvedLocaleOptions(opts = {}) {\n const { locale, numberingSystem, calendar } = Formatter.create(\n this.loc.clone(opts),\n opts\n ).resolvedOptions(this);\n return { locale, numberingSystem, outputCalendar: calendar };\n }\n\n // TRANSFORM\n\n /**\n * \"Set\" the DateTime's zone to UTC. Returns a newly-constructed DateTime.\n *\n * Equivalent to {@link DateTime#setZone}('utc')\n * @param {number} [offset=0] - optionally, an offset from UTC in minutes\n * @param {Object} [opts={}] - options to pass to `setZone()`\n * @return {DateTime}\n */\n toUTC(offset = 0, opts = {}) {\n return this.setZone(FixedOffsetZone.instance(offset), opts);\n }\n\n /**\n * \"Set\" the DateTime's zone to the host's local zone. Returns a newly-constructed DateTime.\n *\n * Equivalent to `setZone('local')`\n * @return {DateTime}\n */\n toLocal() {\n return this.setZone(Settings.defaultZone);\n }\n\n /**\n * \"Set\" the DateTime's zone to specified zone. Returns a newly-constructed DateTime.\n *\n * By default, the setter keeps the underlying time the same (as in, the same timestamp), but the new instance will report different local times and consider DSTs when making computations, as with {@link DateTime#plus}. You may wish to use {@link DateTime#toLocal} and {@link DateTime#toUTC} which provide simple convenience wrappers for commonly used zones.\n * @param {string|Zone} [zone='local'] - a zone identifier. As a string, that can be any IANA zone supported by the host environment, or a fixed-offset name of the form 'UTC+3', or the strings 'local' or 'utc'. You may also supply an instance of a {@link DateTime#Zone} class.\n * @param {Object} opts - options\n * @param {boolean} [opts.keepLocalTime=false] - If true, adjust the underlying time so that the local time stays the same, but in the target zone. You should rarely need this.\n * @return {DateTime}\n */\n setZone(zone, { keepLocalTime = false, keepCalendarTime = false } = {}) {\n zone = normalizeZone(zone, Settings.defaultZone);\n if (zone.equals(this.zone)) {\n return this;\n } else if (!zone.isValid) {\n return DateTime.invalid(unsupportedZone(zone));\n } else {\n let newTS = this.ts;\n if (keepLocalTime || keepCalendarTime) {\n const offsetGuess = zone.offset(this.ts);\n const asObj = this.toObject();\n [newTS] = objToTS(asObj, offsetGuess, zone);\n }\n return clone(this, { ts: newTS, zone });\n }\n }\n\n /**\n * \"Set\" the locale, numberingSystem, or outputCalendar. Returns a newly-constructed DateTime.\n * @param {Object} properties - the properties to set\n * @example DateTime.local(2017, 5, 25).reconfigure({ locale: 'en-GB' })\n * @return {DateTime}\n */\n reconfigure({ locale, numberingSystem, outputCalendar } = {}) {\n const loc = this.loc.clone({ locale, numberingSystem, outputCalendar });\n return clone(this, { loc });\n }\n\n /**\n * \"Set\" the locale. Returns a newly-constructed DateTime.\n * Just a convenient alias for reconfigure({ locale })\n * @example DateTime.local(2017, 5, 25).setLocale('en-GB')\n * @return {DateTime}\n */\n setLocale(locale) {\n return this.reconfigure({ locale });\n }\n\n /**\n * \"Set\" the values of specified units. Returns a newly-constructed DateTime.\n * You can only set units with this method; for \"setting\" metadata, see {@link DateTime#reconfigure} and {@link DateTime#setZone}.\n *\n * This method also supports setting locale-based week units, i.e. `localWeekday`, `localWeekNumber` and `localWeekYear`.\n * They cannot be mixed with ISO-week units like `weekday`.\n * @param {Object} values - a mapping of units to numbers\n * @example dt.set({ year: 2017 })\n * @example dt.set({ hour: 8, minute: 30 })\n * @example dt.set({ weekday: 5 })\n * @example dt.set({ year: 2005, ordinal: 234 })\n * @return {DateTime}\n */\n set(values) {\n if (!this.isValid) return this;\n\n const normalized = normalizeObject(values, normalizeUnitWithLocalWeeks);\n const { minDaysInFirstWeek, startOfWeek } = usesLocalWeekValues(normalized, this.loc);\n\n const settingWeekStuff =\n !isUndefined(normalized.weekYear) ||\n !isUndefined(normalized.weekNumber) ||\n !isUndefined(normalized.weekday),\n containsOrdinal = !isUndefined(normalized.ordinal),\n containsGregorYear = !isUndefined(normalized.year),\n containsGregorMD = !isUndefined(normalized.month) || !isUndefined(normalized.day),\n containsGregor = containsGregorYear || containsGregorMD,\n definiteWeekDef = normalized.weekYear || normalized.weekNumber;\n\n if ((containsGregor || containsOrdinal) && definiteWeekDef) {\n throw new ConflictingSpecificationError(\n \"Can't mix weekYear/weekNumber units with year/month/day or ordinals\"\n );\n }\n\n if (containsGregorMD && containsOrdinal) {\n throw new ConflictingSpecificationError(\"Can't mix ordinal dates with month/day\");\n }\n\n let mixed;\n if (settingWeekStuff) {\n mixed = weekToGregorian(\n { ...gregorianToWeek(this.c, minDaysInFirstWeek, startOfWeek), ...normalized },\n minDaysInFirstWeek,\n startOfWeek\n );\n } else if (!isUndefined(normalized.ordinal)) {\n mixed = ordinalToGregorian({ ...gregorianToOrdinal(this.c), ...normalized });\n } else {\n mixed = { ...this.toObject(), ...normalized };\n\n // if we didn't set the day but we ended up on an overflow date,\n // use the last day of the right month\n if (isUndefined(normalized.day)) {\n mixed.day = Math.min(daysInMonth(mixed.year, mixed.month), mixed.day);\n }\n }\n\n const [ts, o] = objToTS(mixed, this.o, this.zone);\n return clone(this, { ts, o });\n }\n\n /**\n * Add a period of time to this DateTime and return the resulting DateTime\n *\n * Adding hours, minutes, seconds, or milliseconds increases the timestamp by the right number of milliseconds. Adding days, months, or years shifts the calendar, accounting for DSTs and leap years along the way. Thus, `dt.plus({ hours: 24 })` may result in a different time than `dt.plus({ days: 1 })` if there's a DST shift in between.\n * @param {Duration|Object|number} duration - The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n * @example DateTime.now().plus(123) //~> in 123 milliseconds\n * @example DateTime.now().plus({ minutes: 15 }) //~> in 15 minutes\n * @example DateTime.now().plus({ days: 1 }) //~> this time tomorrow\n * @example DateTime.now().plus({ days: -1 }) //~> this time yesterday\n * @example DateTime.now().plus({ hours: 3, minutes: 13 }) //~> in 3 hr, 13 min\n * @example DateTime.now().plus(Duration.fromObject({ hours: 3, minutes: 13 })) //~> in 3 hr, 13 min\n * @return {DateTime}\n */\n plus(duration) {\n if (!this.isValid) return this;\n const dur = Duration.fromDurationLike(duration);\n return clone(this, adjustTime(this, dur));\n }\n\n /**\n * Subtract a period of time to this DateTime and return the resulting DateTime\n * See {@link DateTime#plus}\n * @param {Duration|Object|number} duration - The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n @return {DateTime}\n */\n minus(duration) {\n if (!this.isValid) return this;\n const dur = Duration.fromDurationLike(duration).negate();\n return clone(this, adjustTime(this, dur));\n }\n\n /**\n * \"Set\" this DateTime to the beginning of a unit of time.\n * @param {string} unit - The unit to go to the beginning of. Can be 'year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', or 'millisecond'.\n * @param {Object} opts - options\n * @param {boolean} [opts.useLocaleWeeks=false] - If true, use weeks based on the locale, i.e. use the locale-dependent start of the week\n * @example DateTime.local(2014, 3, 3).startOf('month').toISODate(); //=> '2014-03-01'\n * @example DateTime.local(2014, 3, 3).startOf('year').toISODate(); //=> '2014-01-01'\n * @example DateTime.local(2014, 3, 3).startOf('week').toISODate(); //=> '2014-03-03', weeks always start on Mondays\n * @example DateTime.local(2014, 3, 3, 5, 30).startOf('day').toISOTime(); //=> '00:00.000-05:00'\n * @example DateTime.local(2014, 3, 3, 5, 30).startOf('hour').toISOTime(); //=> '05:00:00.000-05:00'\n * @return {DateTime}\n */\n startOf(unit, { useLocaleWeeks = false } = {}) {\n if (!this.isValid) return this;\n\n const o = {},\n normalizedUnit = Duration.normalizeUnit(unit);\n switch (normalizedUnit) {\n case \"years\":\n o.month = 1;\n // falls through\n case \"quarters\":\n case \"months\":\n o.day = 1;\n // falls through\n case \"weeks\":\n case \"days\":\n o.hour = 0;\n // falls through\n case \"hours\":\n o.minute = 0;\n // falls through\n case \"minutes\":\n o.second = 0;\n // falls through\n case \"seconds\":\n o.millisecond = 0;\n break;\n case \"milliseconds\":\n break;\n // no default, invalid units throw in normalizeUnit()\n }\n\n if (normalizedUnit === \"weeks\") {\n if (useLocaleWeeks) {\n const startOfWeek = this.loc.getStartOfWeek();\n const { weekday } = this;\n if (weekday < startOfWeek) {\n o.weekNumber = this.weekNumber - 1;\n }\n o.weekday = startOfWeek;\n } else {\n o.weekday = 1;\n }\n }\n\n if (normalizedUnit === \"quarters\") {\n const q = Math.ceil(this.month / 3);\n o.month = (q - 1) * 3 + 1;\n }\n\n return this.set(o);\n }\n\n /**\n * \"Set\" this DateTime to the end (meaning the last millisecond) of a unit of time\n * @param {string} unit - The unit to go to the end of. Can be 'year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', or 'millisecond'.\n * @param {Object} opts - options\n * @param {boolean} [opts.useLocaleWeeks=false] - If true, use weeks based on the locale, i.e. use the locale-dependent start of the week\n * @example DateTime.local(2014, 3, 3).endOf('month').toISO(); //=> '2014-03-31T23:59:59.999-05:00'\n * @example DateTime.local(2014, 3, 3).endOf('year').toISO(); //=> '2014-12-31T23:59:59.999-05:00'\n * @example DateTime.local(2014, 3, 3).endOf('week').toISO(); // => '2014-03-09T23:59:59.999-05:00', weeks start on Mondays\n * @example DateTime.local(2014, 3, 3, 5, 30).endOf('day').toISO(); //=> '2014-03-03T23:59:59.999-05:00'\n * @example DateTime.local(2014, 3, 3, 5, 30).endOf('hour').toISO(); //=> '2014-03-03T05:59:59.999-05:00'\n * @return {DateTime}\n */\n endOf(unit, opts) {\n return this.isValid\n ? this.plus({ [unit]: 1 })\n .startOf(unit, opts)\n .minus(1)\n : this;\n }\n\n // OUTPUT\n\n /**\n * Returns a string representation of this DateTime formatted according to the specified format string.\n * **You may not want this.** See {@link DateTime#toLocaleString} for a more flexible formatting tool. For a table of tokens and their interpretations, see [here](https://moment.github.io/luxon/#/formatting?id=table-of-tokens).\n * Defaults to en-US if no locale has been specified, regardless of the system's locale.\n * @param {string} fmt - the format string\n * @param {Object} opts - opts to override the configuration options on this DateTime\n * @example DateTime.now().toFormat('yyyy LLL dd') //=> '2017 Apr 22'\n * @example DateTime.now().setLocale('fr').toFormat('yyyy LLL dd') //=> '2017 avr. 22'\n * @example DateTime.now().toFormat('yyyy LLL dd', { locale: \"fr\" }) //=> '2017 avr. 22'\n * @example DateTime.now().toFormat(\"HH 'hours and' mm 'minutes'\") //=> '20 hours and 55 minutes'\n * @return {string}\n */\n toFormat(fmt, opts = {}) {\n return this.isValid\n ? Formatter.create(this.loc.redefaultToEN(opts)).formatDateTimeFromString(this, fmt)\n : INVALID;\n }\n\n /**\n * Returns a localized string representing this date. Accepts the same options as the Intl.DateTimeFormat constructor and any presets defined by Luxon, such as `DateTime.DATE_FULL` or `DateTime.TIME_SIMPLE`.\n * The exact behavior of this method is browser-specific, but in general it will return an appropriate representation\n * of the DateTime in the assigned locale.\n * Defaults to the system's locale if no locale has been specified\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param formatOpts {Object} - Intl.DateTimeFormat constructor options and configuration options\n * @param {Object} opts - opts to override the configuration options on this DateTime\n * @example DateTime.now().toLocaleString(); //=> 4/20/2017\n * @example DateTime.now().setLocale('en-gb').toLocaleString(); //=> '20/04/2017'\n * @example DateTime.now().toLocaleString(DateTime.DATE_FULL); //=> 'April 20, 2017'\n * @example DateTime.now().toLocaleString(DateTime.DATE_FULL, { locale: 'fr' }); //=> '28 août 2022'\n * @example DateTime.now().toLocaleString(DateTime.TIME_SIMPLE); //=> '11:32 AM'\n * @example DateTime.now().toLocaleString(DateTime.DATETIME_SHORT); //=> '4/20/2017, 11:32 AM'\n * @example DateTime.now().toLocaleString({ weekday: 'long', month: 'long', day: '2-digit' }); //=> 'Thursday, April 20'\n * @example DateTime.now().toLocaleString({ weekday: 'short', month: 'short', day: '2-digit', hour: '2-digit', minute: '2-digit' }); //=> 'Thu, Apr 20, 11:27 AM'\n * @example DateTime.now().toLocaleString({ hour: '2-digit', minute: '2-digit', hourCycle: 'h23' }); //=> '11:32'\n * @return {string}\n */\n toLocaleString(formatOpts = Formats.DATE_SHORT, opts = {}) {\n return this.isValid\n ? Formatter.create(this.loc.clone(opts), formatOpts).formatDateTime(this)\n : INVALID;\n }\n\n /**\n * Returns an array of format \"parts\", meaning individual tokens along with metadata. This is allows callers to post-process individual sections of the formatted output.\n * Defaults to the system's locale if no locale has been specified\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/formatToParts\n * @param opts {Object} - Intl.DateTimeFormat constructor options, same as `toLocaleString`.\n * @example DateTime.now().toLocaleParts(); //=> [\n * //=> { type: 'day', value: '25' },\n * //=> { type: 'literal', value: '/' },\n * //=> { type: 'month', value: '05' },\n * //=> { type: 'literal', value: '/' },\n * //=> { type: 'year', value: '1982' }\n * //=> ]\n */\n toLocaleParts(opts = {}) {\n return this.isValid\n ? Formatter.create(this.loc.clone(opts), opts).formatDateTimeParts(this)\n : [];\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime\n * @param {Object} opts - options\n * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\n * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {boolean} [opts.extendedZone=false] - add the time zone format extension\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example DateTime.utc(1983, 5, 25).toISO() //=> '1982-05-25T00:00:00.000Z'\n * @example DateTime.now().toISO() //=> '2017-04-22T20:47:05.335-04:00'\n * @example DateTime.now().toISO({ includeOffset: false }) //=> '2017-04-22T20:47:05.335'\n * @example DateTime.now().toISO({ format: 'basic' }) //=> '20170422T204705.335-0400'\n * @return {string}\n */\n toISO({\n format = \"extended\",\n suppressSeconds = false,\n suppressMilliseconds = false,\n includeOffset = true,\n extendedZone = false,\n } = {}) {\n if (!this.isValid) {\n return null;\n }\n\n const ext = format === \"extended\";\n\n let c = toISODate(this, ext);\n c += \"T\";\n c += toISOTime(this, ext, suppressSeconds, suppressMilliseconds, includeOffset, extendedZone);\n return c;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime's date component\n * @param {Object} opts - options\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example DateTime.utc(1982, 5, 25).toISODate() //=> '1982-05-25'\n * @example DateTime.utc(1982, 5, 25).toISODate({ format: 'basic' }) //=> '19820525'\n * @return {string}\n */\n toISODate({ format = \"extended\" } = {}) {\n if (!this.isValid) {\n return null;\n }\n\n return toISODate(this, format === \"extended\");\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime's week date\n * @example DateTime.utc(1982, 5, 25).toISOWeekDate() //=> '1982-W21-2'\n * @return {string}\n */\n toISOWeekDate() {\n return toTechFormat(this, \"kkkk-'W'WW-c\");\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime's time component\n * @param {Object} opts - options\n * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\n * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {boolean} [opts.extendedZone=true] - add the time zone format extension\n * @param {boolean} [opts.includePrefix=false] - include the `T` prefix\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime() //=> '07:34:19.361Z'\n * @example DateTime.utc().set({ hour: 7, minute: 34, seconds: 0, milliseconds: 0 }).toISOTime({ suppressSeconds: true }) //=> '07:34Z'\n * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime({ format: 'basic' }) //=> '073419.361Z'\n * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime({ includePrefix: true }) //=> 'T07:34:19.361Z'\n * @return {string}\n */\n toISOTime({\n suppressMilliseconds = false,\n suppressSeconds = false,\n includeOffset = true,\n includePrefix = false,\n extendedZone = false,\n format = \"extended\",\n } = {}) {\n if (!this.isValid) {\n return null;\n }\n\n let c = includePrefix ? \"T\" : \"\";\n return (\n c +\n toISOTime(\n this,\n format === \"extended\",\n suppressSeconds,\n suppressMilliseconds,\n includeOffset,\n extendedZone\n )\n );\n }\n\n /**\n * Returns an RFC 2822-compatible string representation of this DateTime\n * @example DateTime.utc(2014, 7, 13).toRFC2822() //=> 'Sun, 13 Jul 2014 00:00:00 +0000'\n * @example DateTime.local(2014, 7, 13).toRFC2822() //=> 'Sun, 13 Jul 2014 00:00:00 -0400'\n * @return {string}\n */\n toRFC2822() {\n return toTechFormat(this, \"EEE, dd LLL yyyy HH:mm:ss ZZZ\", false);\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in HTTP headers. The output is always expressed in GMT.\n * Specifically, the string conforms to RFC 1123.\n * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1\n * @example DateTime.utc(2014, 7, 13).toHTTP() //=> 'Sun, 13 Jul 2014 00:00:00 GMT'\n * @example DateTime.utc(2014, 7, 13, 19).toHTTP() //=> 'Sun, 13 Jul 2014 19:00:00 GMT'\n * @return {string}\n */\n toHTTP() {\n return toTechFormat(this.toUTC(), \"EEE, dd LLL yyyy HH:mm:ss 'GMT'\");\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in SQL Date\n * @example DateTime.utc(2014, 7, 13).toSQLDate() //=> '2014-07-13'\n * @return {string}\n */\n toSQLDate() {\n if (!this.isValid) {\n return null;\n }\n return toISODate(this, true);\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in SQL Time\n * @param {Object} opts - options\n * @param {boolean} [opts.includeZone=false] - include the zone, such as 'America/New_York'. Overrides includeOffset.\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {boolean} [opts.includeOffsetSpace=true] - include the space between the time and the offset, such as '05:15:16.345 -04:00'\n * @example DateTime.utc().toSQL() //=> '05:15:16.345'\n * @example DateTime.now().toSQL() //=> '05:15:16.345 -04:00'\n * @example DateTime.now().toSQL({ includeOffset: false }) //=> '05:15:16.345'\n * @example DateTime.now().toSQL({ includeZone: false }) //=> '05:15:16.345 America/New_York'\n * @return {string}\n */\n toSQLTime({ includeOffset = true, includeZone = false, includeOffsetSpace = true } = {}) {\n let fmt = \"HH:mm:ss.SSS\";\n\n if (includeZone || includeOffset) {\n if (includeOffsetSpace) {\n fmt += \" \";\n }\n if (includeZone) {\n fmt += \"z\";\n } else if (includeOffset) {\n fmt += \"ZZ\";\n }\n }\n\n return toTechFormat(this, fmt, true);\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in SQL DateTime\n * @param {Object} opts - options\n * @param {boolean} [opts.includeZone=false] - include the zone, such as 'America/New_York'. Overrides includeOffset.\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {boolean} [opts.includeOffsetSpace=true] - include the space between the time and the offset, such as '05:15:16.345 -04:00'\n * @example DateTime.utc(2014, 7, 13).toSQL() //=> '2014-07-13 00:00:00.000 Z'\n * @example DateTime.local(2014, 7, 13).toSQL() //=> '2014-07-13 00:00:00.000 -04:00'\n * @example DateTime.local(2014, 7, 13).toSQL({ includeOffset: false }) //=> '2014-07-13 00:00:00.000'\n * @example DateTime.local(2014, 7, 13).toSQL({ includeZone: true }) //=> '2014-07-13 00:00:00.000 America/New_York'\n * @return {string}\n */\n toSQL(opts = {}) {\n if (!this.isValid) {\n return null;\n }\n\n return `${this.toSQLDate()} ${this.toSQLTime(opts)}`;\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for debugging\n * @return {string}\n */\n toString() {\n return this.isValid ? this.toISO() : INVALID;\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for the REPL.\n * @return {string}\n */\n [Symbol.for(\"nodejs.util.inspect.custom\")]() {\n if (this.isValid) {\n return `DateTime { ts: ${this.toISO()}, zone: ${this.zone.name}, locale: ${this.locale} }`;\n } else {\n return `DateTime { Invalid, reason: ${this.invalidReason} }`;\n }\n }\n\n /**\n * Returns the epoch milliseconds of this DateTime. Alias of {@link DateTime#toMillis}\n * @return {number}\n */\n valueOf() {\n return this.toMillis();\n }\n\n /**\n * Returns the epoch milliseconds of this DateTime.\n * @return {number}\n */\n toMillis() {\n return this.isValid ? this.ts : NaN;\n }\n\n /**\n * Returns the epoch seconds of this DateTime.\n * @return {number}\n */\n toSeconds() {\n return this.isValid ? this.ts / 1000 : NaN;\n }\n\n /**\n * Returns the epoch seconds (as a whole number) of this DateTime.\n * @return {number}\n */\n toUnixInteger() {\n return this.isValid ? Math.floor(this.ts / 1000) : NaN;\n }\n\n /**\n * Returns an ISO 8601 representation of this DateTime appropriate for use in JSON.\n * @return {string}\n */\n toJSON() {\n return this.toISO();\n }\n\n /**\n * Returns a BSON serializable equivalent to this DateTime.\n * @return {Date}\n */\n toBSON() {\n return this.toJSDate();\n }\n\n /**\n * Returns a JavaScript object with this DateTime's year, month, day, and so on.\n * @param opts - options for generating the object\n * @param {boolean} [opts.includeConfig=false] - include configuration attributes in the output\n * @example DateTime.now().toObject() //=> { year: 2017, month: 4, day: 22, hour: 20, minute: 49, second: 42, millisecond: 268 }\n * @return {Object}\n */\n toObject(opts = {}) {\n if (!this.isValid) return {};\n\n const base = { ...this.c };\n\n if (opts.includeConfig) {\n base.outputCalendar = this.outputCalendar;\n base.numberingSystem = this.loc.numberingSystem;\n base.locale = this.loc.locale;\n }\n return base;\n }\n\n /**\n * Returns a JavaScript Date equivalent to this DateTime.\n * @return {Date}\n */\n toJSDate() {\n return new Date(this.isValid ? this.ts : NaN);\n }\n\n // COMPARE\n\n /**\n * Return the difference between two DateTimes as a Duration.\n * @param {DateTime} otherDateTime - the DateTime to compare this one to\n * @param {string|string[]} [unit=['milliseconds']] - the unit or array of units (such as 'hours' or 'days') to include in the duration.\n * @param {Object} opts - options that affect the creation of the Duration\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @example\n * var i1 = DateTime.fromISO('1982-05-25T09:45'),\n * i2 = DateTime.fromISO('1983-10-14T10:30');\n * i2.diff(i1).toObject() //=> { milliseconds: 43807500000 }\n * i2.diff(i1, 'hours').toObject() //=> { hours: 12168.75 }\n * i2.diff(i1, ['months', 'days']).toObject() //=> { months: 16, days: 19.03125 }\n * i2.diff(i1, ['months', 'days', 'hours']).toObject() //=> { months: 16, days: 19, hours: 0.75 }\n * @return {Duration}\n */\n diff(otherDateTime, unit = \"milliseconds\", opts = {}) {\n if (!this.isValid || !otherDateTime.isValid) {\n return Duration.invalid(\"created by diffing an invalid DateTime\");\n }\n\n const durOpts = { locale: this.locale, numberingSystem: this.numberingSystem, ...opts };\n\n const units = maybeArray(unit).map(Duration.normalizeUnit),\n otherIsLater = otherDateTime.valueOf() > this.valueOf(),\n earlier = otherIsLater ? this : otherDateTime,\n later = otherIsLater ? otherDateTime : this,\n diffed = diff(earlier, later, units, durOpts);\n\n return otherIsLater ? diffed.negate() : diffed;\n }\n\n /**\n * Return the difference between this DateTime and right now.\n * See {@link DateTime#diff}\n * @param {string|string[]} [unit=['milliseconds']] - the unit or units units (such as 'hours' or 'days') to include in the duration\n * @param {Object} opts - options that affect the creation of the Duration\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @return {Duration}\n */\n diffNow(unit = \"milliseconds\", opts = {}) {\n return this.diff(DateTime.now(), unit, opts);\n }\n\n /**\n * Return an Interval spanning between this DateTime and another DateTime\n * @param {DateTime} otherDateTime - the other end point of the Interval\n * @return {Interval}\n */\n until(otherDateTime) {\n return this.isValid ? Interval.fromDateTimes(this, otherDateTime) : this;\n }\n\n /**\n * Return whether this DateTime is in the same unit of time as another DateTime.\n * Higher-order units must also be identical for this function to return `true`.\n * Note that time zones are **ignored** in this comparison, which compares the **local** calendar time. Use {@link DateTime#setZone} to convert one of the dates if needed.\n * @param {DateTime} otherDateTime - the other DateTime\n * @param {string} unit - the unit of time to check sameness on\n * @param {Object} opts - options\n * @param {boolean} [opts.useLocaleWeeks=false] - If true, use weeks based on the locale, i.e. use the locale-dependent start of the week; only the locale of this DateTime is used\n * @example DateTime.now().hasSame(otherDT, 'day'); //~> true if otherDT is in the same current calendar day\n * @return {boolean}\n */\n hasSame(otherDateTime, unit, opts) {\n if (!this.isValid) return false;\n\n const inputMs = otherDateTime.valueOf();\n const adjustedToZone = this.setZone(otherDateTime.zone, { keepLocalTime: true });\n return (\n adjustedToZone.startOf(unit, opts) <= inputMs && inputMs <= adjustedToZone.endOf(unit, opts)\n );\n }\n\n /**\n * Equality check\n * Two DateTimes are equal if and only if they represent the same millisecond, have the same zone and location, and are both valid.\n * To compare just the millisecond values, use `+dt1 === +dt2`.\n * @param {DateTime} other - the other DateTime\n * @return {boolean}\n */\n equals(other) {\n return (\n this.isValid &&\n other.isValid &&\n this.valueOf() === other.valueOf() &&\n this.zone.equals(other.zone) &&\n this.loc.equals(other.loc)\n );\n }\n\n /**\n * Returns a string representation of a this time relative to now, such as \"in two days\". Can only internationalize if your\n * platform supports Intl.RelativeTimeFormat. Rounds down by default.\n * @param {Object} options - options that affect the output\n * @param {DateTime} [options.base=DateTime.now()] - the DateTime to use as the basis to which this time is compared. Defaults to now.\n * @param {string} [options.style=\"long\"] - the style of units, must be \"long\", \"short\", or \"narrow\"\n * @param {string|string[]} options.unit - use a specific unit or array of units; if omitted, or an array, the method will pick the best unit. Use an array or one of \"years\", \"quarters\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", or \"seconds\"\n * @param {boolean} [options.round=true] - whether to round the numbers in the output.\n * @param {number} [options.padding=0] - padding in milliseconds. This allows you to round up the result if it fits inside the threshold. Don't use in combination with {round: false} because the decimal output will include the padding.\n * @param {string} options.locale - override the locale of this DateTime\n * @param {string} options.numberingSystem - override the numberingSystem of this DateTime. The Intl system may choose not to honor this\n * @example DateTime.now().plus({ days: 1 }).toRelative() //=> \"in 1 day\"\n * @example DateTime.now().setLocale(\"es\").toRelative({ days: 1 }) //=> \"dentro de 1 día\"\n * @example DateTime.now().plus({ days: 1 }).toRelative({ locale: \"fr\" }) //=> \"dans 23 heures\"\n * @example DateTime.now().minus({ days: 2 }).toRelative() //=> \"2 days ago\"\n * @example DateTime.now().minus({ days: 2 }).toRelative({ unit: \"hours\" }) //=> \"48 hours ago\"\n * @example DateTime.now().minus({ hours: 36 }).toRelative({ round: false }) //=> \"1.5 days ago\"\n */\n toRelative(options = {}) {\n if (!this.isValid) return null;\n const base = options.base || DateTime.fromObject({}, { zone: this.zone }),\n padding = options.padding ? (this < base ? -options.padding : options.padding) : 0;\n let units = [\"years\", \"months\", \"days\", \"hours\", \"minutes\", \"seconds\"];\n let unit = options.unit;\n if (Array.isArray(options.unit)) {\n units = options.unit;\n unit = undefined;\n }\n return diffRelative(base, this.plus(padding), {\n ...options,\n numeric: \"always\",\n units,\n unit,\n });\n }\n\n /**\n * Returns a string representation of this date relative to today, such as \"yesterday\" or \"next month\".\n * Only internationalizes on platforms that supports Intl.RelativeTimeFormat.\n * @param {Object} options - options that affect the output\n * @param {DateTime} [options.base=DateTime.now()] - the DateTime to use as the basis to which this time is compared. Defaults to now.\n * @param {string} options.locale - override the locale of this DateTime\n * @param {string} options.unit - use a specific unit; if omitted, the method will pick the unit. Use one of \"years\", \"quarters\", \"months\", \"weeks\", or \"days\"\n * @param {string} options.numberingSystem - override the numberingSystem of this DateTime. The Intl system may choose not to honor this\n * @example DateTime.now().plus({ days: 1 }).toRelativeCalendar() //=> \"tomorrow\"\n * @example DateTime.now().setLocale(\"es\").plus({ days: 1 }).toRelative() //=> \"\"mañana\"\n * @example DateTime.now().plus({ days: 1 }).toRelativeCalendar({ locale: \"fr\" }) //=> \"demain\"\n * @example DateTime.now().minus({ days: 2 }).toRelativeCalendar() //=> \"2 days ago\"\n */\n toRelativeCalendar(options = {}) {\n if (!this.isValid) return null;\n\n return diffRelative(options.base || DateTime.fromObject({}, { zone: this.zone }), this, {\n ...options,\n numeric: \"auto\",\n units: [\"years\", \"months\", \"days\"],\n calendary: true,\n });\n }\n\n /**\n * Return the min of several date times\n * @param {...DateTime} dateTimes - the DateTimes from which to choose the minimum\n * @return {DateTime} the min DateTime, or undefined if called with no argument\n */\n static min(...dateTimes) {\n if (!dateTimes.every(DateTime.isDateTime)) {\n throw new InvalidArgumentError(\"min requires all arguments be DateTimes\");\n }\n return bestBy(dateTimes, (i) => i.valueOf(), Math.min);\n }\n\n /**\n * Return the max of several date times\n * @param {...DateTime} dateTimes - the DateTimes from which to choose the maximum\n * @return {DateTime} the max DateTime, or undefined if called with no argument\n */\n static max(...dateTimes) {\n if (!dateTimes.every(DateTime.isDateTime)) {\n throw new InvalidArgumentError(\"max requires all arguments be DateTimes\");\n }\n return bestBy(dateTimes, (i) => i.valueOf(), Math.max);\n }\n\n // MISC\n\n /**\n * Explain how a string would be parsed by fromFormat()\n * @param {string} text - the string to parse\n * @param {string} fmt - the format the string is expected to be in (see description)\n * @param {Object} options - options taken by fromFormat()\n * @return {Object}\n */\n static fromFormatExplain(text, fmt, options = {}) {\n const { locale = null, numberingSystem = null } = options,\n localeToUse = Locale.fromOpts({\n locale,\n numberingSystem,\n defaultToEN: true,\n });\n return explainFromTokens(localeToUse, text, fmt);\n }\n\n /**\n * @deprecated use fromFormatExplain instead\n */\n static fromStringExplain(text, fmt, options = {}) {\n return DateTime.fromFormatExplain(text, fmt, options);\n }\n\n // FORMAT PRESETS\n\n /**\n * {@link DateTime#toLocaleString} format like 10/14/1983\n * @type {Object}\n */\n static get DATE_SHORT() {\n return Formats.DATE_SHORT;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Oct 14, 1983'\n * @type {Object}\n */\n static get DATE_MED() {\n return Formats.DATE_MED;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Fri, Oct 14, 1983'\n * @type {Object}\n */\n static get DATE_MED_WITH_WEEKDAY() {\n return Formats.DATE_MED_WITH_WEEKDAY;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'October 14, 1983'\n * @type {Object}\n */\n static get DATE_FULL() {\n return Formats.DATE_FULL;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Tuesday, October 14, 1983'\n * @type {Object}\n */\n static get DATE_HUGE() {\n return Formats.DATE_HUGE;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_SIMPLE() {\n return Formats.TIME_SIMPLE;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_WITH_SECONDS() {\n return Formats.TIME_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 AM EDT'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_WITH_SHORT_OFFSET() {\n return Formats.TIME_WITH_SHORT_OFFSET;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_WITH_LONG_OFFSET() {\n return Formats.TIME_WITH_LONG_OFFSET;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_SIMPLE() {\n return Formats.TIME_24_SIMPLE;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_WITH_SECONDS() {\n return Formats.TIME_24_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 EDT', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_WITH_SHORT_OFFSET() {\n return Formats.TIME_24_WITH_SHORT_OFFSET;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 Eastern Daylight Time', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_WITH_LONG_OFFSET() {\n return Formats.TIME_24_WITH_LONG_OFFSET;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '10/14/1983, 9:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_SHORT() {\n return Formats.DATETIME_SHORT;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '10/14/1983, 9:30:33 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_SHORT_WITH_SECONDS() {\n return Formats.DATETIME_SHORT_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Oct 14, 1983, 9:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_MED() {\n return Formats.DATETIME_MED;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Oct 14, 1983, 9:30:33 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_MED_WITH_SECONDS() {\n return Formats.DATETIME_MED_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Fri, 14 Oct 1983, 9:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_MED_WITH_WEEKDAY() {\n return Formats.DATETIME_MED_WITH_WEEKDAY;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'October 14, 1983, 9:30 AM EDT'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_FULL() {\n return Formats.DATETIME_FULL;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'October 14, 1983, 9:30:33 AM EDT'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_FULL_WITH_SECONDS() {\n return Formats.DATETIME_FULL_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Friday, October 14, 1983, 9:30 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_HUGE() {\n return Formats.DATETIME_HUGE;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Friday, October 14, 1983, 9:30:33 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_HUGE_WITH_SECONDS() {\n return Formats.DATETIME_HUGE_WITH_SECONDS;\n }\n}\n\n/**\n * @private\n */\nexport function friendlyDateTime(dateTimeish) {\n if (DateTime.isDateTime(dateTimeish)) {\n return dateTimeish;\n } else if (dateTimeish && dateTimeish.valueOf && isNumber(dateTimeish.valueOf())) {\n return DateTime.fromJSDate(dateTimeish);\n } else if (dateTimeish && typeof dateTimeish === \"object\") {\n return DateTime.fromObject(dateTimeish);\n } else {\n throw new InvalidArgumentError(\n `Unknown datetime argument: ${dateTimeish}, of type ${typeof dateTimeish}`\n );\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DateTime } from 'luxon';\n\n@Pipe({\n name: 'abbreviateTimezoneName',\n})\nexport class AbbreviateTimezoneNamePipe implements PipeTransform {\n transform(timezoneName: string): string {\n return DateTime.now().setZone(timezoneName).offsetNameShort;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { ReplacePipe } from '@shared/pipes/replace/replace.pipe';\n\n@Pipe({\n name: 'interpolate',\n})\nexport class InterpolatePipe implements PipeTransform {\n replacePipe = new ReplacePipe();\n\n transform(value: string, interpolateKeyValues: any): string {\n return this.interpolate(value, interpolateKeyValues);\n }\n\n interpolate(val: string, interpolateKeyValues: { [key: string]: string }) {\n if (val !== null && val !== undefined) {\n const bracketsStart = val.indexOf('{{');\n const bracketsEnd = val.indexOf('}}');\n if (bracketsEnd > -1 && bracketsStart > -1) {\n const variableName = val.substring(bracketsStart + 2, bracketsEnd);\n const variableProperties = variableName.split('.');\n const nestedValue = this.getNestedValues(variableProperties, interpolateKeyValues);\n const replaced = this.replacePipe.transform(val, '{{' + variableName + '}}', nestedValue);\n return this.interpolate(replaced, interpolateKeyValues);\n } else {\n return val;\n }\n }\n }\n\n getNestedValues(properties: string[], interpolateKeyValues: { [key: string]: string }) {\n let nestedValue;\n\n properties.forEach((prop) => {\n if (nestedValue && nestedValue[prop]) {\n nestedValue = nestedValue[prop];\n } else if (interpolateKeyValues[prop]) {\n nestedValue = interpolateKeyValues[prop];\n }\n });\n\n if (typeof nestedValue === 'object') {\n nestedValue = JSON.stringify(nestedValue);\n }\n\n return nestedValue || '';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'replace',\n pure: true,\n})\nexport class ReplacePipe implements PipeTransform {\n transform(input: string, replacedVal: string, withVal: string) {\n input = input || '';\n replacedVal = replacedVal || '';\n withVal = withVal || '';\n return input.replace(new RegExp(replacedVal, 'g'), withVal);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { UnsafePipe } from './unsafe.pipe';\n\n@NgModule({\n declarations: [UnsafePipe],\n imports: [CommonModule],\n exports: [UnsafePipe],\n})\nexport class UnsafeModule {}\n","import { Pipe, PipeTransform, SecurityContext } from '@angular/core';\nimport {\n DomSanitizer,\n SafeHtml,\n SafeResourceUrl,\n SafeScript,\n SafeStyle,\n SafeUrl,\n SafeValue,\n} from '@angular/platform-browser';\n\n@Pipe({ name: 'unsafe', pure: true })\nexport class UnsafePipe implements PipeTransform {\n constructor(private readonly domSanitizer: DomSanitizer) {}\n\n transform(value: any, type?: string): SafeValue | SafeHtml | SafeStyle | SafeScript | SafeUrl | SafeResourceUrl {\n if (!value) {\n return value;\n }\n switch (type) {\n case 'html':\n return this.domSanitizer.bypassSecurityTrustHtml(value);\n case 'style':\n return this.domSanitizer.bypassSecurityTrustStyle(value);\n case 'script':\n return this.domSanitizer.bypassSecurityTrustScript(value);\n case 'url':\n return this.domSanitizer.bypassSecurityTrustUrl(value);\n case 'resourceUrl':\n return this.domSanitizer.bypassSecurityTrustResourceUrl(value);\n default:\n return this.domSanitizer.sanitize(SecurityContext.HTML, value);\n }\n }\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { WindowToken } from '@common/utils/window';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PurplePageService {\n readonly STANDARD_PURPLE_PAGE_QUERY_PARAMS = 'template=blankHubTemplate&site=hub';\n\n constructor(private http: HttpClient, @Inject(WindowToken) private window: Window) {}\n headers = new HttpHeaders({\n Accept: 'text/html, text/plain',\n });\n\n getPurplePageContent(purplePagePath: string): Observable {\n const fullPath = this.getFullPath(purplePagePath);\n\n return this.http.get(fullPath, { headers: this.headers, responseType: 'text' });\n }\n\n getJspItemContent(fullPath: string): Observable {\n return this.http.get(fullPath, { headers: this.headers, responseType: 'text' });\n }\n\n private getFullPath(purplePagePath: string): string {\n let fullPath: string;\n\n const currentUrl = this.window.location.href;\n\n // TODO When upgrading to Angular Routing,\n // rewrite this with Location and ActivatedRoute\n const index = currentUrl.indexOf('?');\n if (index > -1) {\n const currentUrlQueryParams = currentUrl.substring(index);\n fullPath = `/Main/${purplePagePath}${currentUrlQueryParams}&${this.STANDARD_PURPLE_PAGE_QUERY_PARAMS}`;\n } else {\n fullPath = `/Main/${purplePagePath}?${this.STANDARD_PURPLE_PAGE_QUERY_PARAMS}`;\n }\n\n return fullPath;\n }\n}\n","import { Component, ElementRef, Input, OnInit, ViewChild } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { UserBASAccessService } from '../../../../common/src/services/user-bas-access.service';\nimport { PurplePageService } from '../purple-page.service';\n\n@Component({\n selector: 'u-purple-page',\n templateUrl: './purple-page.component.html',\n styleUrls: ['./purple-page.component.scss'],\n})\nexport class PurplePageComponent implements OnInit {\n @Input() path: string;\n @Input() fullPath: string;\n\n @ViewChild('purpleContent', { static: true }) purpleContent: ElementRef;\n\n purplePageContent$: Observable;\n\n constructor(\n private purplePageService: PurplePageService,\n private basAccessService: UserBASAccessService,\n private route: ActivatedRoute,\n private router: Router\n ) {}\n\n ngOnInit(): void {\n this.path = this.route.snapshot.url.map((segment) => segment.path).join('/');\n if (this.path) {\n this.purplePageService.getPurplePageContent(this.path).subscribe(\n (content) => this.renderPurplePageContent(content),\n (error) => {\n if (error.headers.BasRedirectPage) {\n this.basAccessService.navigateToBASPage();\n } else {\n this.router.navigate(['/404']);\n }\n }\n );\n }\n\n if (this.fullPath) {\n // Using type fullPath to get non-purple pages (formerly JspItem)\n this.purplePageService.getJspItemContent(this.fullPath).subscribe((content) => {\n this.renderPurplePageContent(content);\n });\n }\n }\n\n private renderPurplePageContent(content: string): void {\n const fragment = document.createElement('div');\n fragment.innerHTML = content;\n // replace(/(function )(.*\\w\\s*)(\\(\\w*.*\\w*\\))/, 'window.$2 = $1$3') makes `function foo()` to `window.foo = function ()`\n // which will put `foo()` in the global namespace otherwise it won't run in Angular like it did in AngularJS\n // the regExp will also cover functions with multiple arguments\n fragment.innerHTML = fragment.innerHTML.replace(/(function )(.*\\w\\s*)(\\(\\w*.*\\w*\\))/gm, 'window.$2 = $1$3');\n this.purpleContent.nativeElement.appendChild(fragment);\n\n const scripts = this.purpleContent.nativeElement.getElementsByTagName('script');\n // eslint-disable-next-line no-eval\n [...scripts].forEach((script) => eval(script.text));\n }\n}\n","
\n","\n \n \n \n\n \n
  • \n {{ choice.text | translate }}\n
  • \n \n\n","import { Component } from '@angular/core';\nimport { faEllipsis } from '@fortawesome/pro-solid-svg-icons';\nimport { DropdownMenuItem } from '@shared/dropdown/dropdown.model';\n\n@Component({\n selector: 'u-dropdown',\n templateUrl: './dropdown.component.html',\n styleUrls: ['./dropdown.component.scss'],\n})\nexport class UsanaDropdownComponent {\n readonly ELLIPSIS_ICON = faEllipsis;\n\n menuItems: DropdownMenuItem[] = [];\n\n // Might need to tap into these events in the future. Leaving them here for future implementation\n onHidden(): void {}\n\n onShown(): void {}\n\n isOpenChange(): void {}\n\n trackById(index, dropdown) {\n return dropdown.id;\n }\n}\n","import { ComponentFactoryResolver, Directive, Input, OnInit, ViewContainerRef } from '@angular/core';\nimport { UsanaDropdownComponent } from '@shared/dropdown/dropdown.component';\nimport { DropdownMenuItem } from '@shared/dropdown/dropdown.model';\n\n@Directive({\n selector: '[uDropdown]',\n})\nexport class UsanaDropdownDirective implements OnInit {\n @Input() menuItems: DropdownMenuItem[] = [];\n\n constructor(private componentFactoryResolver: ComponentFactoryResolver, public viewContainerRef: ViewContainerRef) {}\n\n ngOnInit(): void {\n this.renderDropdown();\n }\n\n renderDropdown() {\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(UsanaDropdownComponent);\n this.viewContainerRef.clear();\n const dropdownComponent = this.viewContainerRef.createComponent(componentFactory);\n dropdownComponent.instance.menuItems = this.menuItems;\n }\n}\n","\n \n
    \n \n
    \n
    \n \n
    \n \n
    \n
    \n \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n \n \n
    \n
    \n \n
    \n
    \n
    \n \n
    \n
    \n
    \n\n","import { Component, Input, OnDestroy, OnInit, Renderer2, TemplateRef, ViewChild } from '@angular/core';\nimport { ChangeOpenNavigationLevel } from '@common/navigation/state/navigation.actions';\nimport { NavigationLevel } from '@common/navigation/state/navigation.state.model';\nimport { WindowSizingService } from '@common/services/window-size.service';\nimport { Store } from '@ngxs/store';\nimport { DropdownMenuItem } from '@shared/dropdown/dropdown.model';\nimport { animateFlyOut, animateFlyOutLeft } from '@shared/side-modal/side-modal.animations';\nimport { ModalDirective } from 'ngx-bootstrap/modal';\nimport { document } from 'ngx-bootstrap/utils';\n\n@Component({\n selector: 'u-side-modal',\n templateUrl: './side-modal.component.html',\n styleUrls: ['./side-modal.component.scss'],\n animations: [animateFlyOut(), animateFlyOutLeft()],\n})\nexport class SideModalComponent implements OnInit, OnDestroy {\n @Input() isVisible = false;\n @Input() sideModalHeaderTemplate: TemplateRef;\n @Input() sideModalBodyTemplate: TemplateRef;\n @Input() placement: string;\n @Input() callbackFunction: (arg0: any) => void;\n @Input() dropdownMenuItems: DropdownMenuItem[] = [];\n @ViewChild('autoShownModal', { static: false }) autoShownModal: ModalDirective;\n\n constructor(\n private _renderer: Renderer2,\n private readonly windowSizingService: WindowSizingService,\n private store: Store\n ) {}\n\n ngOnInit() {\n if (document && document.body && this.placement) {\n this._renderer.addClass(document.body, `modal-${this.placement}`);\n }\n }\n\n ngOnDestroy(): void {\n // modal-right doesn't yet exist but when/if it does this will reset things\n // so that left and right modals don't collide when toggled back and forth\n this._renderer.removeClass(document.body, `modal-left`);\n this._renderer.removeClass(document.body, `modal-right`);\n }\n\n onClose() {\n this.closeFirstLevelNav();\n if (this.isMobileSize()) {\n // naming is a bit confusing there since this is kind of 2nd level if mobile but 1st if destkop\n this.store.dispatch(new ChangeOpenNavigationLevel(NavigationLevel.NONE));\n }\n document.querySelectorAll('bs-modal-backdrop').forEach((el) => {\n this._renderer.removeChild(document.body, el);\n });\n this._renderer.removeClass(document.body, 'modal-open');\n this._renderer.removeStyle(document.body, 'padding-right');\n this._renderer.removeStyle(document.body, 'overflow-y');\n }\n\n closeFirstLevelNav() {\n this.autoShownModal.hide();\n this.isVisible = false;\n }\n\n isMobileSize() {\n return this.windowSizingService.isMobileSize();\n }\n}\n","import { animate, state, style, transition, trigger } from '@angular/animations';\n\nexport const animateFlyOut = () =>\n trigger('openClose', [\n state('open', style({ transform: 'translateX(0)', opacity: 1 })),\n transition('void => *', [style({ transform: 'translateX(100%)', opacity: 0 }), animate(200)]),\n transition('* => void', [animate(200, style({ transform: 'translateX(100%)', opacity: 0 }))]),\n ]);\n\nexport const animateFlyOutLeft = () =>\n trigger('openCloseLeft', [\n state('open', style({ transform: 'translateX(0)', opacity: 1 })),\n transition('void => *', [style({ transform: 'translateX(-100%)', opacity: 0 }), animate(200)]),\n transition('* => void', [animate(200, style({ transform: 'translateX(-100%)', opacity: 0 }))]),\n ]);\n","import { ComponentFactoryResolver, ComponentRef, Injectable, ViewContainerRef } from '@angular/core';\nimport { SideModalOptions } from '@shared/side-modal/side-modal.model';\nimport { SideModalComponent } from '@shared/side-modal/side-modal/side-modal.component';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SideModalService {\n sideModalContainer: ViewContainerRef;\n sideModalComponent: ComponentRef;\n\n constructor(private componentFactoryResolver: ComponentFactoryResolver) {}\n\n open(sideModalOptions: SideModalOptions) {\n const sideModalRef = this.componentFactoryResolver.resolveComponentFactory(SideModalComponent);\n this.sideModalContainer.clear();\n this.sideModalComponent = this.sideModalContainer.createComponent(sideModalRef);\n this.sideModalComponent.instance.isVisible = true;\n this.sideModalComponent.instance.sideModalBodyTemplate = sideModalOptions.bodyTemplate;\n this.sideModalComponent.instance.sideModalHeaderTemplate = sideModalOptions.headerTemplate;\n this.sideModalComponent.instance.placement = sideModalOptions.placement;\n this.sideModalComponent.instance.callbackFunction = sideModalOptions.callbackFunction;\n this.sideModalComponent.instance.dropdownMenuItems = sideModalOptions.dropdownMenuItems;\n return this.sideModalComponent;\n }\n\n close() {\n this.sideModalContainer.clear();\n this.sideModalComponent.instance.onClose();\n }\n}\n","/* eslint-disable max-classes-per-file */\nexport class IncrementLoading {\n static readonly type = '[Hub] INCREMENT LOADING';\n}\n\nexport class DecrementLoading {\n static readonly type = '[Hub] DECREMENT LOADING';\n}\n\nexport class SetSupportedMarkets {\n static readonly type = '[Hub] SET SUPPORTED MARKETS';\n}\n\nexport class ChangeMarket {\n static readonly type = '[Hub] CHANGE MARKET';\n constructor(public locale: string) {}\n}\n\nexport class LoadImportantDates {\n static readonly type = '[Hub] LOAD IMPORTANT DATES';\n}\n\nexport class InitializeApp {\n static readonly type = '[Hub] INITIALIZE APP';\n}\n","import { AppUser } from '@common/authentication/model/user-profile';\nimport { CustomerTypes } from '@common/constants/customer-types';\n\nconst DEFAULT_ALERT_CUSTOMER_TYPE = 'none';\n\nexport const getCustomerType = (user: AppUser) => {\n if ((user.customerType === 'D' || user.customerType === 'A') && !user.internal && !user.pc) {\n return CustomerTypes.associate;\n } else if ((user.customerType === 'PC' || user.pc) && !user.internal) {\n return CustomerTypes.preferredCustomer;\n } else if ((user.customerType === 'EM' || user.customerType.length < 1) && user.internal) {\n return CustomerTypes.employee;\n } else {\n return DEFAULT_ALERT_CUSTOMER_TYPE;\n }\n};\n\nexport const getI18NLocalCode = (locale) => {\n const usanaLocaleToI18NLocale = {\n kr: 'ko',\n in: 'id',\n jp: 'ja',\n };\n\n const langCode = locale.split('_')[0];\n\n return usanaLocaleToI18NLocale[langCode] || langCode;\n};\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar prefix = 'fas';\nvar iconName = 'chevron-down';\nvar width = 512;\nvar height = 512;\nvar aliases = [];\nvar unicode = 'f078';\nvar svgPathData = 'M233.4 406.6c12.5 12.5 32.8 12.5 45.3 0l192-192c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L256 338.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l192 192z';\n\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [\n width,\n height,\n aliases,\n unicode,\n svgPathData\n ]};\n\nexports.faChevronDown = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = aliases;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;\nexports.aliases = aliases;","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar prefix = 'fas';\nvar iconName = 'chevron-up';\nvar width = 512;\nvar height = 512;\nvar aliases = [];\nvar unicode = 'f077';\nvar svgPathData = 'M233.4 105.4c12.5-12.5 32.8-12.5 45.3 0l192 192c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L256 173.3 86.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l192-192z';\n\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [\n width,\n height,\n aliases,\n unicode,\n svgPathData\n ]};\n\nexports.faChevronUp = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = aliases;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;\nexports.aliases = aliases;","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar prefix = 'fas';\nvar iconName = 'ellipsis';\nvar width = 448;\nvar height = 512;\nvar aliases = [\"ellipsis-h\"];\nvar unicode = 'f141';\nvar svgPathData = 'M8 256a56 56 0 1 1 112 0A56 56 0 1 1 8 256zm160 0a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zm216-56a56 56 0 1 1 0 112 56 56 0 1 1 0-112z';\n\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [\n width,\n height,\n aliases,\n unicode,\n svgPathData\n ]};\n\nexports.faEllipsis = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = aliases;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;\nexports.aliases = aliases;","/**\n * @param items - Specific items to append to the end of an array\n */\nfunction append(items) {\n return function appendOperator(existing) {\n // If `items` is `undefined` or `null` or `[]` but `existing` is provided\n // just return `existing`\n const itemsNotProvidedButExistingIs = (!items || !items.length) && existing;\n if (itemsNotProvidedButExistingIs) {\n return existing;\n }\n if (Array.isArray(existing)) {\n return existing.concat(items);\n }\n // For example if some property is added dynamically\n // and didn't exist before thus it's not `ArrayLike`\n return items;\n };\n}\n\nfunction compose(...operators) {\n return function composeOperator(existing) {\n return operators.reduce((accumulator, operator) => operator(accumulator), existing);\n };\n}\n\nfunction isStateOperator(value) {\n return typeof value === 'function';\n}\nfunction isUndefined(value) {\n return typeof value === 'undefined';\n}\nfunction isPredicate(value) {\n return typeof value === 'function';\n}\nfunction isNumber(value) {\n return typeof value === 'number';\n}\nfunction invalidIndex(index) {\n return Number.isNaN(index) || index === -1;\n}\nfunction isNil(value) {\n return value === null || isUndefined(value);\n}\n\nfunction retrieveValue(operatorOrValue, existing) {\n // If state operator is a function\n // then call it with an original value\n if (isStateOperator(operatorOrValue)) {\n const value = operatorOrValue(existing);\n return value;\n }\n // If operator or value was not provided\n // e.g. `elseOperatorOrValue` is `undefined`\n // then we just return an original value\n if (isUndefined(operatorOrValue)) {\n return existing;\n }\n return operatorOrValue;\n}\n/**\n * @param condition - Condition can be a plain boolean value or a function,\n * that returns boolean, also this function can take a value as an argument\n * to which this state operator applies\n * @param trueOperatorOrValue - Any value or a state operator\n * @param elseOperatorOrValue - Any value or a state operator\n */\nfunction iif(condition, trueOperatorOrValue, elseOperatorOrValue) {\n return function iifOperator(existing) {\n // Convert the value to a boolean\n let result = !!condition;\n // but if it is a function then run it to get the result\n if (isPredicate(condition)) {\n result = condition(existing);\n }\n if (result) {\n return retrieveValue(trueOperatorOrValue, existing);\n }\n return retrieveValue(elseOperatorOrValue, existing);\n };\n}\n\n/**\n * @param value - Value to insert\n * @param [beforePosition] - Specified index to insert value before, optional\n */\nfunction insertItem(value, beforePosition) {\n return function insertItemOperator(existing) {\n // Have to check explicitly for `null` and `undefined`\n // because `value` can be `0`, thus `!value` will return `true`\n if (isNil(value) && existing) {\n return existing;\n }\n // Property may be dynamic and might not existed before\n if (!Array.isArray(existing)) {\n return [value];\n }\n const clone = existing.slice();\n let index = 0;\n // No need to call `isNumber`\n // as we are checking `> 0` not `>= 0`\n // everything except number will return false here\n if (beforePosition > 0) {\n index = beforePosition;\n }\n clone.splice(index, 0, value);\n return clone;\n };\n}\n\nfunction patch(patchObject) {\n return function patchStateOperator(existing) {\n let clone = null;\n for (const k in patchObject) {\n const newValue = patchObject[k];\n const existingPropValue = existing === null || existing === void 0 ? void 0 : existing[k];\n const newPropValue = isStateOperator(newValue)\n ? newValue(existingPropValue)\n : newValue;\n if (newPropValue !== existingPropValue) {\n if (!clone) {\n clone = Object.assign({}, existing);\n }\n clone[k] = newPropValue;\n }\n }\n return clone || existing;\n };\n}\n\n/**\n * @param selector - Index of item in the array or a predicate function\n * that can be provided in `Array.prototype.findIndex`\n * @param operatorOrValue - New value under the `selector` index or a\n * function that can be applied to an existing value\n */\nfunction updateItem(selector, operatorOrValue) {\n return function updateItemOperator(existing) {\n let index = -1;\n if (isPredicate(selector)) {\n index = existing.findIndex(selector);\n }\n else if (isNumber(selector)) {\n index = selector;\n }\n if (invalidIndex(index)) {\n return existing;\n }\n let value = null;\n // Need to check if the new item value will change the existing item value\n // then, only if it will change it then clone the array and set the item\n const theOperatorOrValue = operatorOrValue;\n if (isStateOperator(theOperatorOrValue)) {\n value = theOperatorOrValue(existing[index]);\n }\n else {\n value = theOperatorOrValue;\n }\n // If the value hasn't been mutated\n // then we just return `existing` array\n if (value === existing[index]) {\n return existing;\n }\n const clone = existing.slice();\n clone[index] = value;\n return clone;\n };\n}\n\n/**\n * @param selector - index or predicate to remove an item from an array by\n */\nfunction removeItem(selector) {\n return function removeItemOperator(existing) {\n let index = -1;\n if (isPredicate(selector)) {\n index = existing.findIndex(selector);\n }\n else if (isNumber(selector)) {\n index = selector;\n }\n if (invalidIndex(index)) {\n return existing;\n }\n const clone = existing.slice();\n clone.splice(index, 1);\n return clone;\n };\n}\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { append, compose, iif, insertItem, isPredicate, isStateOperator, patch, removeItem, updateItem };\n","import * as i0 from '@angular/core';\nimport { Injectable, InjectionToken } from '@angular/core';\nimport { ReplaySubject } from 'rxjs';\n\nclass NgxsBootstrapper {\n constructor() {\n /**\n * Use `ReplaySubject`, thus we can get cached value even if the stream is completed\n */\n this.bootstrap$ = new ReplaySubject(1);\n }\n get appBootstrapped$() {\n return this.bootstrap$.asObservable();\n }\n /**\n * This event will be emitted after attaching `ComponentRef` of the root component\n * to the tree of views, that's a signal that application has been fully rendered\n */\n bootstrap() {\n this.bootstrap$.next(true);\n this.bootstrap$.complete();\n }\n}\n/** @nocollapse */ NgxsBootstrapper.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: NgxsBootstrapper, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n/** @nocollapse */ NgxsBootstrapper.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: NgxsBootstrapper, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: NgxsBootstrapper, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\nfunction defaultEqualityCheck(a, b) {\n return a === b;\n}\nfunction areArgumentsShallowlyEqual(equalityCheck, prev, next) {\n if (prev === null || next === null || prev.length !== next.length) {\n return false;\n }\n // Do this in a for loop (and not a `forEach` or an `every`) so we can determine equality as fast as possible.\n const length = prev.length;\n for (let i = 0; i < length; i++) {\n if (!equalityCheck(prev[i], next[i])) {\n return false;\n }\n }\n return true;\n}\n/**\n * Memoize a function on its last inputs only.\n * Originally from: https://github.com/reduxjs/reselect/blob/master/src/index.js\n *\n * @ignore\n */\nfunction memoize(func, equalityCheck = defaultEqualityCheck) {\n let lastArgs = null;\n let lastResult = null;\n // we reference arguments instead of spreading them for performance reasons\n function memoized() {\n // eslint-disable-next-line prefer-rest-params\n if (!areArgumentsShallowlyEqual(equalityCheck, lastArgs, arguments)) {\n // apply arguments instead of spreading for performance.\n // eslint-disable-next-line prefer-rest-params, prefer-spread\n lastResult = func.apply(null, arguments);\n }\n // eslint-disable-next-line prefer-rest-params\n lastArgs = arguments;\n return lastResult;\n }\n memoized.reset = function () {\n // The hidden (for now) ability to reset the memoization\n lastArgs = null;\n lastResult = null;\n };\n return memoized;\n}\n\nclass InitialState {\n static set(state) {\n this._value = state;\n }\n static pop() {\n const state = this._value;\n this._value = {};\n return state;\n }\n}\nInitialState._value = {};\nconst INITIAL_STATE_TOKEN = new InjectionToken('INITIAL_STATE_TOKEN', {\n providedIn: 'root',\n factory: () => InitialState.pop()\n});\n\n// These tokens are internal and can change at any point.\nconst ɵNGXS_STATE_FACTORY = new InjectionToken('ɵNGXS_STATE_FACTORY');\nconst ɵNGXS_STATE_CONTEXT_FACTORY = new InjectionToken('ɵNGXS_STATE_CONTEXT_FACTORY');\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { INITIAL_STATE_TOKEN, InitialState, NgxsBootstrapper, memoize, ɵNGXS_STATE_CONTEXT_FACTORY, ɵNGXS_STATE_FACTORY };\n","import { map } from './map';\nimport { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function exhaustMap(project, resultSelector) {\n if (resultSelector) {\n return (source) => source.pipe(exhaustMap((a, i) => innerFrom(project(a, i)).pipe(map((b, ii) => resultSelector(a, b, i, ii)))));\n }\n return operate((source, subscriber) => {\n let index = 0;\n let innerSub = null;\n let isComplete = false;\n source.subscribe(createOperatorSubscriber(subscriber, (outerValue) => {\n if (!innerSub) {\n innerSub = createOperatorSubscriber(subscriber, undefined, () => {\n innerSub = null;\n isComplete && subscriber.complete();\n });\n innerFrom(project(outerValue, index++)).subscribe(innerSub);\n }\n }, () => {\n isComplete = true;\n !innerSub && subscriber.complete();\n }));\n });\n}\n","import * as i0 from '@angular/core';\nimport { NgZone, PLATFORM_ID, Injectable, Inject, InjectionToken, inject, INJECTOR, ɵglobal, ErrorHandler, Optional, SkipSelf, NgModule, APP_BOOTSTRAP_LISTENER } from '@angular/core';\nimport * as i5 from '@ngxs/store/internals';\nimport { memoize, INITIAL_STATE_TOKEN, NgxsBootstrapper, ɵNGXS_STATE_CONTEXT_FACTORY, ɵNGXS_STATE_FACTORY } from '@ngxs/store/internals';\nimport { isPlatformServer } from '@angular/common';\nimport { Observable, Subject, BehaviorSubject, of, forkJoin, throwError, EMPTY, from, isObservable } from 'rxjs';\nimport { filter, map, share, shareReplay, take, exhaustMap, mergeMap, defaultIfEmpty, catchError, takeUntil, distinctUntilChanged, tap, startWith, pairwise } from 'rxjs/operators';\nimport { isStateOperator } from '@ngxs/store/operators';\n\n/**\n * Returns the type from an action instance/class.\n * @ignore\n */\nfunction getActionTypeFromInstance(action) {\n if (action.constructor && action.constructor.type) {\n return action.constructor.type;\n }\n else {\n return action.type;\n }\n}\n/**\n * Matches a action\n * @ignore\n */\nfunction actionMatcher(action1) {\n const type1 = getActionTypeFromInstance(action1);\n return function (action2) {\n return type1 === getActionTypeFromInstance(action2);\n };\n}\n/**\n * Set a deeply nested value. Example:\n *\n * setValue({ foo: { bar: { eat: false } } },\n * 'foo.bar.eat', true) //=> { foo: { bar: { eat: true } } }\n *\n * While it traverses it also creates new objects from top down.\n *\n * @ignore\n */\nconst setValue = (obj, prop, val) => {\n obj = Object.assign({}, obj);\n const split = prop.split('.');\n const lastIndex = split.length - 1;\n split.reduce((acc, part, index) => {\n if (index === lastIndex) {\n acc[part] = val;\n }\n else {\n acc[part] = Array.isArray(acc[part]) ? acc[part].slice() : Object.assign({}, acc[part]);\n }\n return acc && acc[part];\n }, obj);\n return obj;\n};\n/**\n * Get a deeply nested value. Example:\n *\n * getValue({ foo: bar: [] }, 'foo.bar') //=> []\n *\n * @ignore\n */\nconst getValue = (obj, prop) => prop.split('.').reduce((acc, part) => acc && acc[part], obj);\n/**\n * Simple object check.\n *\n * isObject({a:1}) //=> true\n * isObject(1) //=> false\n *\n * @ignore\n */\nconst isObject$1 = (item) => {\n return item && typeof item === 'object' && !Array.isArray(item);\n};\n/**\n * Deep merge two objects.\n *\n * mergeDeep({a:1, b:{x: 1, y:2}}, {b:{x: 3}, c:4}) //=> {a:1, b:{x:3, y:2}, c:4}\n *\n * @param base base object onto which `sources` will be applied\n */\nconst mergeDeep = (base, ...sources) => {\n if (!sources.length)\n return base;\n const source = sources.shift();\n if (isObject$1(base) && isObject$1(source)) {\n for (const key in source) {\n if (isObject$1(source[key])) {\n if (!base[key])\n Object.assign(base, { [key]: {} });\n mergeDeep(base[key], source[key]);\n }\n else {\n Object.assign(base, { [key]: source[key] });\n }\n }\n }\n return mergeDeep(base, ...sources);\n};\n\nfunction throwStateNameError(name) {\n throw new Error(`${name} is not a valid state name. It needs to be a valid object property name.`);\n}\nfunction throwStateNamePropertyError() {\n throw new Error(`States must register a 'name' property.`);\n}\nfunction throwStateUniqueError(current, newName, oldName) {\n throw new Error(`State name '${current}' from ${newName} already exists in ${oldName}.`);\n}\nfunction throwStateDecoratorError(name) {\n throw new Error(`States must be decorated with @State() decorator, but \"${name}\" isn't.`);\n}\nfunction throwActionDecoratorError() {\n throw new Error('@Action() decorator cannot be used with static methods.');\n}\nfunction throwSelectorDecoratorError() {\n throw new Error('Selectors only work on methods.');\n}\nfunction getZoneWarningMessage() {\n return ('Your application was bootstrapped with nooped zone and your execution strategy requires an actual NgZone!\\n' +\n 'Please set the value of the executionStrategy property to NoopNgxsExecutionStrategy.\\n' +\n 'NgxsModule.forRoot(states, { executionStrategy: NoopNgxsExecutionStrategy })');\n}\nfunction getUndecoratedStateInIvyWarningMessage(name) {\n return `'${name}' class should be decorated with @Injectable() right after the @State() decorator`;\n}\nfunction throwSelectFactoryNotConnectedError() {\n throw new Error('You have forgotten to import the NGXS module!');\n}\nfunction throwPatchingArrayError() {\n throw new Error('Patching arrays is not supported.');\n}\nfunction throwPatchingPrimitiveError() {\n throw new Error('Patching primitives is not supported.');\n}\n\nclass DispatchOutsideZoneNgxsExecutionStrategy {\n constructor(_ngZone, _platformId) {\n this._ngZone = _ngZone;\n this._platformId = _platformId;\n // Caretaker note: we have still left the `typeof` condition in order to avoid\n // creating a breaking change for projects that still use the View Engine.\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n verifyZoneIsNotNooped(_ngZone);\n }\n }\n enter(func) {\n if (isPlatformServer(this._platformId)) {\n return this.runInsideAngular(func);\n }\n return this.runOutsideAngular(func);\n }\n leave(func) {\n return this.runInsideAngular(func);\n }\n runInsideAngular(func) {\n if (NgZone.isInAngularZone()) {\n return func();\n }\n return this._ngZone.run(func);\n }\n runOutsideAngular(func) {\n if (NgZone.isInAngularZone()) {\n return this._ngZone.runOutsideAngular(func);\n }\n return func();\n }\n}\n/** @nocollapse */ DispatchOutsideZoneNgxsExecutionStrategy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: DispatchOutsideZoneNgxsExecutionStrategy, deps: [{ token: i0.NgZone }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable });\n/** @nocollapse */ DispatchOutsideZoneNgxsExecutionStrategy.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: DispatchOutsideZoneNgxsExecutionStrategy, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: DispatchOutsideZoneNgxsExecutionStrategy, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; } });\n// Caretaker note: this should exist as a separate function and not a class method,\n// since class methods are not tree-shakable.\nfunction verifyZoneIsNotNooped(ngZone) {\n // `NoopNgZone` is not exposed publicly as it doesn't expect\n // to be used outside of the core Angular code, thus we just have\n // to check if the zone doesn't extend or instanceof `NgZone`.\n if (ngZone instanceof NgZone) {\n return;\n }\n console.warn(getZoneWarningMessage());\n}\n\nconst ROOT_OPTIONS = new InjectionToken('ROOT_OPTIONS');\nconst ROOT_STATE_TOKEN = new InjectionToken('ROOT_STATE_TOKEN');\nconst FEATURE_STATE_TOKEN = new InjectionToken('FEATURE_STATE_TOKEN');\nconst NGXS_PLUGINS = new InjectionToken('NGXS_PLUGINS');\nconst META_KEY = 'NGXS_META';\nconst META_OPTIONS_KEY = 'NGXS_OPTIONS_META';\nconst SELECTOR_META_KEY = 'NGXS_SELECTOR_META';\n/**\n * The NGXS config settings.\n */\nclass NgxsConfig {\n constructor() {\n /**\n * Defining the default state before module initialization\n * This is convenient if we need to create a define our own set of states.\n * @deprecated will be removed after v4\n * (default: {})\n */\n this.defaultsState = {};\n /**\n * Defining shared selector options\n */\n this.selectorOptions = {\n injectContainerState: true,\n suppressErrors: true // TODO: default is true in v3, will change in v4\n };\n this.compatibility = {\n strictContentSecurityPolicy: false\n };\n this.executionStrategy = DispatchOutsideZoneNgxsExecutionStrategy;\n }\n}\n/** @nocollapse */ NgxsConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: NgxsConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n/** @nocollapse */ NgxsConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: NgxsConfig, providedIn: 'root', useFactory: (options) => mergeDeep(new NgxsConfig(), options), deps: [{ token: ROOT_OPTIONS }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: NgxsConfig, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n useFactory: (options) => mergeDeep(new NgxsConfig(), options),\n deps: [ROOT_OPTIONS]\n }]\n }], ctorParameters: function () { return []; } });\n/**\n * Represents a basic change from a previous to a new value for a single state instance.\n * Passed as a value in a NgxsSimpleChanges object to the ngxsOnChanges hook.\n */\nclass NgxsSimpleChange {\n constructor(previousValue, currentValue, firstChange) {\n this.previousValue = previousValue;\n this.currentValue = currentValue;\n this.firstChange = firstChange;\n }\n}\n\nclass NoopNgxsExecutionStrategy {\n enter(func) {\n return func();\n }\n leave(func) {\n return func();\n }\n}\n/** @nocollapse */ NoopNgxsExecutionStrategy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: NoopNgxsExecutionStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n/** @nocollapse */ NoopNgxsExecutionStrategy.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: NoopNgxsExecutionStrategy, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: NoopNgxsExecutionStrategy, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\n/**\n * The strategy that might be provided by users through `options.executionStrategy`.\n */\nconst USER_PROVIDED_NGXS_EXECUTION_STRATEGY = new InjectionToken('USER_PROVIDED_NGXS_EXECUTION_STRATEGY');\n/*\n * Internal execution strategy injection token\n */\nconst NGXS_EXECUTION_STRATEGY = new InjectionToken('NGXS_EXECUTION_STRATEGY', {\n providedIn: 'root',\n factory: () => {\n const injector = inject(INJECTOR);\n const executionStrategy = injector.get(USER_PROVIDED_NGXS_EXECUTION_STRATEGY);\n return executionStrategy\n ? injector.get(executionStrategy)\n : injector.get(typeof ɵglobal.Zone !== 'undefined'\n ? DispatchOutsideZoneNgxsExecutionStrategy\n : NoopNgxsExecutionStrategy);\n }\n});\n\n/**\n * Ensures metadata is attached to the class and returns it.\n *\n * @ignore\n */\nfunction ensureStoreMetadata$1(target) {\n if (!target.hasOwnProperty(META_KEY)) {\n const defaultMetadata = {\n name: null,\n actions: {},\n defaults: {},\n path: null,\n makeRootSelector(context) {\n return context.getStateGetter(defaultMetadata.name);\n },\n children: []\n };\n Object.defineProperty(target, META_KEY, { value: defaultMetadata });\n }\n return getStoreMetadata$1(target);\n}\n/**\n * Get the metadata attached to the state class if it exists.\n *\n * @ignore\n */\nfunction getStoreMetadata$1(target) {\n return target[META_KEY];\n}\n/**\n * Ensures metadata is attached to the selector and returns it.\n *\n * @ignore\n */\nfunction ensureSelectorMetadata$1(target) {\n if (!target.hasOwnProperty(SELECTOR_META_KEY)) {\n const defaultMetadata = {\n makeRootSelector: null,\n originalFn: null,\n containerClass: null,\n selectorName: null,\n getSelectorOptions: () => ({})\n };\n Object.defineProperty(target, SELECTOR_META_KEY, { value: defaultMetadata });\n }\n return getSelectorMetadata$1(target);\n}\n/**\n * Get the metadata attached to the selector if it exists.\n *\n * @ignore\n */\nfunction getSelectorMetadata$1(target) {\n return target[SELECTOR_META_KEY];\n}\n/**\n * Get a deeply nested value. Example:\n *\n * getValue({ foo: bar: [] }, 'foo.bar') //=> []\n *\n * Note: This is not as fast as the `fastPropGetter` but is strict Content Security Policy compliant.\n * See perf hit: https://jsperf.com/fast-value-getter-given-path/1\n *\n * @ignore\n */\nfunction compliantPropGetter(paths) {\n const copyOfPaths = paths.slice();\n return obj => copyOfPaths.reduce((acc, part) => acc && acc[part], obj);\n}\n/**\n * The generated function is faster than:\n * - pluck (Observable operator)\n * - memoize\n *\n * @ignore\n */\nfunction fastPropGetter(paths) {\n const segments = paths;\n let seg = 'store.' + segments[0];\n let i = 0;\n const l = segments.length;\n let expr = seg;\n while (++i < l) {\n expr = expr + ' && ' + (seg = seg + '.' + segments[i]);\n }\n const fn = new Function('store', 'return ' + expr + ';');\n return fn;\n}\n/**\n * Get a deeply nested value. Example:\n *\n * getValue({ foo: bar: [] }, 'foo.bar') //=> []\n *\n * @ignore\n */\nfunction propGetter(paths, config) {\n if (config && config.compatibility && config.compatibility.strictContentSecurityPolicy) {\n return compliantPropGetter(paths);\n }\n else {\n return fastPropGetter(paths);\n }\n}\n/**\n * Given an array of states, it will return a object graph. Example:\n * const states = [\n * Cart,\n * CartSaved,\n * CartSavedItems\n * ]\n *\n * would return:\n *\n * const graph = {\n * cart: ['saved'],\n * saved: ['items'],\n * items: []\n * };\n *\n * @ignore\n */\nfunction buildGraph(stateClasses) {\n const findName = (stateClass) => {\n const meta = stateClasses.find(g => g === stateClass);\n // Caretaker note: we have still left the `typeof` condition in order to avoid\n // creating a breaking change for projects that still use the View Engine.\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && !meta) {\n throw new Error(`Child state not found: ${stateClass}. \\r\\nYou may have forgotten to add states to module`);\n }\n return meta[META_KEY].name;\n };\n return stateClasses.reduce((result, stateClass) => {\n const { name, children } = stateClass[META_KEY];\n result[name] = (children || []).map(findName);\n return result;\n }, {});\n}\n/**\n * Given a states array, returns object graph\n * returning the name and state metadata. Example:\n *\n * const graph = {\n * cart: { metadata }\n * };\n *\n * @ignore\n */\nfunction nameToState(states) {\n return states.reduce((result, stateClass) => {\n const meta = stateClass[META_KEY];\n result[meta.name] = stateClass;\n return result;\n }, {});\n}\n/**\n * Given a object relationship graph will return the full path\n * for the child items. Example:\n *\n * const graph = {\n * cart: ['saved'],\n * saved: ['items'],\n * items: []\n * };\n *\n * would return:\n *\n * const r = {\n * cart: 'cart',\n * saved: 'cart.saved',\n * items: 'cart.saved.items'\n * };\n *\n * @ignore\n */\nfunction findFullParentPath(obj, newObj = {}) {\n const visit = (child, keyToFind) => {\n for (const key in child) {\n if (child.hasOwnProperty(key) && child[key].indexOf(keyToFind) >= 0) {\n const parent = visit(child, key);\n return parent !== null ? `${parent}.${key}` : key;\n }\n }\n return null;\n };\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n const parent = visit(obj, key);\n newObj[key] = parent ? `${parent}.${key}` : key;\n }\n }\n return newObj;\n}\n/**\n * Given a object graph, it will return the items topologically sorted Example:\n *\n * const graph = {\n * cart: ['saved'],\n * saved: ['items'],\n * items: []\n * };\n *\n * would return:\n *\n * const results = [\n * 'items',\n * 'saved',\n * 'cart'\n * ];\n *\n * @ignore\n */\nfunction topologicalSort(graph) {\n const sorted = [];\n const visited = {};\n const visit = (name, ancestors = []) => {\n if (!Array.isArray(ancestors)) {\n ancestors = [];\n }\n ancestors.push(name);\n visited[name] = true;\n graph[name].forEach((dep) => {\n // Caretaker note: we have still left the `typeof` condition in order to avoid\n // creating a breaking change for projects that still use the View Engine.\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && ancestors.indexOf(dep) >= 0) {\n throw new Error(`Circular dependency '${dep}' is required by '${name}': ${ancestors.join(' -> ')}`);\n }\n if (visited[dep]) {\n return;\n }\n visit(dep, ancestors.slice(0));\n });\n if (sorted.indexOf(name) < 0) {\n sorted.push(name);\n }\n };\n Object.keys(graph).forEach(k => visit(k));\n return sorted.reverse();\n}\n/**\n * Returns if the parameter is a object or not.\n *\n * @ignore\n */\nfunction isObject(obj) {\n return (typeof obj === 'object' && obj !== null) || typeof obj === 'function';\n}\n\n/**\n * RxJS operator for selecting out specific actions.\n *\n * This will grab actions that have just been dispatched as well as actions that have completed\n */\nfunction ofAction(...allowedTypes) {\n return ofActionOperator(allowedTypes);\n}\n/**\n * RxJS operator for selecting out specific actions.\n *\n * This will ONLY grab actions that have just been dispatched\n */\nfunction ofActionDispatched(...allowedTypes) {\n return ofActionOperator(allowedTypes, [\"DISPATCHED\" /* Dispatched */]);\n}\n/**\n * RxJS operator for selecting out specific actions.\n *\n * This will ONLY grab actions that have just been successfully completed\n */\nfunction ofActionSuccessful(...allowedTypes) {\n return ofActionOperator(allowedTypes, [\"SUCCESSFUL\" /* Successful */]);\n}\n/**\n * RxJS operator for selecting out specific actions.\n *\n * This will ONLY grab actions that have just been canceled\n */\nfunction ofActionCanceled(...allowedTypes) {\n return ofActionOperator(allowedTypes, [\"CANCELED\" /* Canceled */]);\n}\n/**\n * RxJS operator for selecting out specific actions.\n *\n * This will ONLY grab actions that have just been completed\n */\nfunction ofActionCompleted(...allowedTypes) {\n const allowedStatuses = [\n \"SUCCESSFUL\" /* Successful */,\n \"CANCELED\" /* Canceled */,\n \"ERRORED\" /* Errored */\n ];\n return ofActionOperator(allowedTypes, allowedStatuses, mapActionResult);\n}\n/**\n * RxJS operator for selecting out specific actions.\n *\n * This will ONLY grab actions that have just thrown an error\n */\nfunction ofActionErrored(...allowedTypes) {\n return ofActionOperator(allowedTypes, [\"ERRORED\" /* Errored */]);\n}\nfunction ofActionOperator(allowedTypes, statuses, \n// This actually could've been `OperatorFunction`,\n// since it maps either to `ctx.action` OR to `ActionCompletion`. But `ActionCompleteion | any`\n// defaults to `any`, thus there is no sense from union type.\nmapOperator = mapAction) {\n const allowedMap = createAllowedActionTypesMap(allowedTypes);\n const allowedStatusMap = statuses && createAllowedStatusesMap(statuses);\n return function (o) {\n return o.pipe(filterStatus(allowedMap, allowedStatusMap), mapOperator());\n };\n}\nfunction filterStatus(allowedTypes, allowedStatuses) {\n return filter((ctx) => {\n const actionType = getActionTypeFromInstance(ctx.action);\n const typeMatch = allowedTypes[actionType];\n const statusMatch = allowedStatuses ? allowedStatuses[ctx.status] : true;\n return typeMatch && statusMatch;\n });\n}\nfunction mapActionResult() {\n return map(({ action, status, error }) => {\n return {\n action,\n result: {\n successful: \"SUCCESSFUL\" /* Successful */ === status,\n canceled: \"CANCELED\" /* Canceled */ === status,\n error\n }\n };\n });\n}\nfunction mapAction() {\n return map((ctx) => ctx.action);\n}\nfunction createAllowedActionTypesMap(types) {\n return types.reduce((filterMap, klass) => {\n filterMap[getActionTypeFromInstance(klass)] = true;\n return filterMap;\n }, {});\n}\nfunction createAllowedStatusesMap(statuses) {\n return statuses.reduce((filterMap, status) => {\n filterMap[status] = true;\n return filterMap;\n }, {});\n}\n\n/**\n * Returns operator that will run\n * `subscribe` outside of the ngxs execution context\n */\nfunction leaveNgxs(ngxsExecutionStrategy) {\n return (source) => {\n return new Observable((sink) => {\n return source.subscribe({\n next(value) {\n ngxsExecutionStrategy.leave(() => sink.next(value));\n },\n error(error) {\n ngxsExecutionStrategy.leave(() => sink.error(error));\n },\n complete() {\n ngxsExecutionStrategy.leave(() => sink.complete());\n }\n });\n });\n };\n}\n\nclass InternalNgxsExecutionStrategy {\n constructor(_executionStrategy) {\n this._executionStrategy = _executionStrategy;\n }\n enter(func) {\n return this._executionStrategy.enter(func);\n }\n leave(func) {\n return this._executionStrategy.leave(func);\n }\n}\n/** @nocollapse */ InternalNgxsExecutionStrategy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: InternalNgxsExecutionStrategy, deps: [{ token: NGXS_EXECUTION_STRATEGY }], target: i0.ɵɵFactoryTarget.Injectable });\n/** @nocollapse */ InternalNgxsExecutionStrategy.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: InternalNgxsExecutionStrategy, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: InternalNgxsExecutionStrategy, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [NGXS_EXECUTION_STRATEGY]\n }] }]; } });\n\n/**\n * This wraps the provided function, and will enforce the following:\n * - The calls will execute in the order that they are made\n * - A call will only be initiated when the previous call has completed\n * - If there is a call currently executing then the new call will be added\n * to the queue and the function will return immediately\n *\n * NOTE: The following assumptions about the operation must hold true:\n * - The operation is synchronous in nature\n * - If any asynchronous side effects of the call exist, it should not\n * have any bearing on the correctness of the next call in the queue\n * - The operation has a void return\n * - The caller should not assume that the call has completed upon\n * return of the function\n * - The caller can assume that all the queued calls will complete\n * within the current microtask\n * - The only way that a call will encounter another call in the queue\n * would be if the call at the front of the queue initiated this call\n * as part of its synchronous execution\n */\nfunction orderedQueueOperation(operation) {\n const callsQueue = [];\n let busyPushingNext = false;\n return function callOperation(...args) {\n if (busyPushingNext) {\n callsQueue.unshift(args);\n return;\n }\n busyPushingNext = true;\n operation(...args);\n while (callsQueue.length > 0) {\n const nextCallArgs = callsQueue.pop();\n nextCallArgs && operation(...nextCallArgs);\n }\n busyPushingNext = false;\n };\n}\n/**\n * Custom Subject that ensures that subscribers are notified of values in the order that they arrived.\n * A standard Subject does not have this guarantee.\n * For example, given the following code:\n * ```typescript\n * const subject = new Subject();\n subject.subscribe(value => {\n if (value === 'start') subject.next('end');\n });\n subject.subscribe(value => { });\n subject.next('start');\n * ```\n * When `subject` is a standard `Subject` the second subscriber would recieve `end` and then `start`.\n * When `subject` is a `OrderedSubject` the second subscriber would recieve `start` and then `end`.\n */\nclass OrderedSubject extends Subject {\n constructor() {\n super(...arguments);\n this._orderedNext = orderedQueueOperation((value) => super.next(value));\n }\n next(value) {\n this._orderedNext(value);\n }\n}\n/**\n * Custom BehaviorSubject that ensures that subscribers are notified of values in the order that they arrived.\n * A standard BehaviorSubject does not have this guarantee.\n * For example, given the following code:\n * ```typescript\n * const subject = new BehaviorSubject();\n subject.subscribe(value => {\n if (value === 'start') subject.next('end');\n });\n subject.subscribe(value => { });\n subject.next('start');\n * ```\n * When `subject` is a standard `BehaviorSubject` the second subscriber would recieve `end` and then `start`.\n * When `subject` is a `OrderedBehaviorSubject` the second subscriber would recieve `start` and then `end`.\n */\nclass OrderedBehaviorSubject extends BehaviorSubject {\n constructor(value) {\n super(value);\n this._orderedNext = orderedQueueOperation((value) => super.next(value));\n this._currentValue = value;\n }\n getValue() {\n return this._currentValue;\n }\n next(value) {\n this._currentValue = value;\n this._orderedNext(value);\n }\n}\n\n/**\n * Internal Action stream that is emitted anytime an action is dispatched.\n */\nclass InternalActions extends OrderedSubject {\n ngOnDestroy() {\n this.complete();\n }\n}\n/** @nocollapse */ InternalActions.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: InternalActions, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\n/** @nocollapse */ InternalActions.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: InternalActions, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: InternalActions, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n/**\n * Action stream that is emitted anytime an action is dispatched.\n *\n * You can listen to this in services to react without stores.\n */\nclass Actions extends Observable {\n constructor(internalActions$, internalExecutionStrategy) {\n const sharedInternalActions$ = internalActions$.pipe(leaveNgxs(internalExecutionStrategy), \n // The `InternalActions` subject emits outside of the Angular zone.\n // We have to re-enter the Angular zone for any incoming consumer.\n // The `share()` operator reduces the number of change detections.\n // This would call leave only once for any stream emission across all active subscribers.\n share());\n super(observer => {\n const childSubscription = sharedInternalActions$.subscribe({\n next: ctx => observer.next(ctx),\n error: error => observer.error(error),\n complete: () => observer.complete()\n });\n observer.add(childSubscription);\n });\n }\n}\n/** @nocollapse */ Actions.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: Actions, deps: [{ token: InternalActions }, { token: InternalNgxsExecutionStrategy }], target: i0.ɵɵFactoryTarget.Injectable });\n/** @nocollapse */ Actions.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: Actions, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: Actions, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: InternalActions }, { type: InternalNgxsExecutionStrategy }]; } });\n\n/**\n * Composes a array of functions from left to right. Example:\n *\n * compose([fn, final])(state, action);\n *\n * then the funcs have a signature like:\n *\n * function fn (state, action, next) {\n * console.log('here', state, action, next);\n * return next(state, action);\n * }\n *\n * function final (state, action) {\n * console.log('here', state, action);\n * return state;\n * }\n *\n * the last function should not call `next`.\n *\n * @ignore\n */\nconst compose = (funcs) => (...args) => {\n const curr = funcs.shift();\n return curr(...args, (...nextArgs) => compose(funcs)(...nextArgs));\n};\n\n/**\n * This operator is used for piping the observable result\n * from the `dispatch()`. It has a \"smart\" error handling\n * strategy that allows us to decide whether we propagate\n * errors to Angular's `ErrorHandler` or enable users to\n * handle them manually. We consider following cases:\n * 1) `store.dispatch()` (no subscribe) -> call `handleError()`\n * 2) `store.dispatch().subscribe()` (no error callback) -> call `handleError()`\n * 3) `store.dispatch().subscribe({ error: ... })` -> don't call `handleError()`\n * 4) `toPromise()` without `catch` -> do `handleError()`\n * 5) `toPromise()` with `catch` -> don't `handleError()`\n */\nfunction ngxsErrorHandler(internalErrorReporter, ngxsExecutionStrategy) {\n return (source) => {\n let subscribed = false;\n source.subscribe({\n error: error => {\n // Do not trigger change detection for a microtask. This depends on the execution\n // strategy being used, but the default `DispatchOutsideZoneNgxsExecutionStrategy`\n // leaves the Angular zone.\n ngxsExecutionStrategy.enter(() => Promise.resolve().then(() => {\n if (!subscribed) {\n ngxsExecutionStrategy.leave(() => internalErrorReporter.reportErrorSafely(error));\n }\n }));\n }\n });\n return new Observable(subscriber => {\n subscribed = true;\n return source.pipe(leaveNgxs(ngxsExecutionStrategy)).subscribe(subscriber);\n });\n };\n}\nclass InternalErrorReporter {\n constructor(_injector) {\n this._injector = _injector;\n /** Will be set lazily to be backward compatible. */\n this._errorHandler = null;\n }\n reportErrorSafely(error) {\n if (this._errorHandler === null) {\n this._errorHandler = this._injector.get(ErrorHandler);\n }\n // The `try-catch` is used to avoid handling the error twice. Suppose we call\n // `handleError` which re-throws the error internally. The re-thrown error will\n // be caught by zone.js which will then get to the `zone.onError.emit()` and the\n // `onError` subscriber will call `handleError` again.\n try {\n this._errorHandler.handleError(error);\n }\n catch (_a) { }\n }\n}\n/** @nocollapse */ InternalErrorReporter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: InternalErrorReporter, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });\n/** @nocollapse */ InternalErrorReporter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: InternalErrorReporter, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: InternalErrorReporter, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i0.Injector }]; } });\n\n/**\n * BehaviorSubject of the entire state.\n * @ignore\n */\nclass StateStream extends OrderedBehaviorSubject {\n constructor() {\n super({});\n }\n ngOnDestroy() {\n // The `StateStream` should never emit values once the root view is removed, e.g. when the `NgModuleRef.destroy()` is called.\n // This will eliminate memory leaks in server-side rendered apps where the `StateStream` is created per each HTTP request, users\n // might forget to unsubscribe from `store.select` or `store.subscribe`, thus this will lead to huge memory leaks in SSR apps.\n this.complete();\n }\n}\n/** @nocollapse */ StateStream.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: StateStream, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n/** @nocollapse */ StateStream.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: StateStream, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: StateStream, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return []; } });\n\nclass PluginManager {\n constructor(_parentManager, _pluginHandlers) {\n this._parentManager = _parentManager;\n this._pluginHandlers = _pluginHandlers;\n this.plugins = [];\n this.registerHandlers();\n }\n get rootPlugins() {\n return (this._parentManager && this._parentManager.plugins) || this.plugins;\n }\n registerHandlers() {\n const pluginHandlers = this.getPluginHandlers();\n this.rootPlugins.push(...pluginHandlers);\n }\n getPluginHandlers() {\n const handlers = this._pluginHandlers || [];\n return handlers.map((plugin) => (plugin.handle ? plugin.handle.bind(plugin) : plugin));\n }\n}\n/** @nocollapse */ PluginManager.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: PluginManager, deps: [{ token: PluginManager, optional: true, skipSelf: true }, { token: NGXS_PLUGINS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\n/** @nocollapse */ PluginManager.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: PluginManager });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: PluginManager, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: PluginManager, decorators: [{\n type: Optional\n }, {\n type: SkipSelf\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [NGXS_PLUGINS]\n }, {\n type: Optional\n }] }]; } });\n\n/**\n * Internal Action result stream that is emitted when an action is completed.\n * This is used as a method of returning the action result to the dispatcher\n * for the observable returned by the dispatch(...) call.\n * The dispatcher then asynchronously pushes the result from this stream onto the main action stream as a result.\n */\nclass InternalDispatchedActionResults extends Subject {\n}\n/** @nocollapse */ InternalDispatchedActionResults.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: InternalDispatchedActionResults, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\n/** @nocollapse */ InternalDispatchedActionResults.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: InternalDispatchedActionResults, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: InternalDispatchedActionResults, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\nclass InternalDispatcher {\n constructor(_actions, _actionResults, _pluginManager, _stateStream, _ngxsExecutionStrategy, _internalErrorReporter) {\n this._actions = _actions;\n this._actionResults = _actionResults;\n this._pluginManager = _pluginManager;\n this._stateStream = _stateStream;\n this._ngxsExecutionStrategy = _ngxsExecutionStrategy;\n this._internalErrorReporter = _internalErrorReporter;\n }\n /**\n * Dispatches event(s).\n */\n dispatch(actionOrActions) {\n const result = this._ngxsExecutionStrategy.enter(() => this.dispatchByEvents(actionOrActions));\n return result.pipe(ngxsErrorHandler(this._internalErrorReporter, this._ngxsExecutionStrategy));\n }\n dispatchByEvents(actionOrActions) {\n if (Array.isArray(actionOrActions)) {\n if (actionOrActions.length === 0)\n return of(this._stateStream.getValue());\n return forkJoin(actionOrActions.map(action => this.dispatchSingle(action)));\n }\n else {\n return this.dispatchSingle(actionOrActions);\n }\n }\n dispatchSingle(action) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const type = getActionTypeFromInstance(action);\n if (!type) {\n const error = new Error(`This action doesn't have a type property: ${action.constructor.name}`);\n return throwError(error);\n }\n }\n const prevState = this._stateStream.getValue();\n const plugins = this._pluginManager.plugins;\n return compose([\n ...plugins,\n (nextState, nextAction) => {\n if (nextState !== prevState) {\n this._stateStream.next(nextState);\n }\n const actionResult$ = this.getActionResultStream(nextAction);\n actionResult$.subscribe(ctx => this._actions.next(ctx));\n this._actions.next({ action: nextAction, status: \"DISPATCHED\" /* Dispatched */ });\n return this.createDispatchObservable(actionResult$);\n }\n ])(prevState, action).pipe(shareReplay());\n }\n getActionResultStream(action) {\n return this._actionResults.pipe(filter((ctx) => ctx.action === action && ctx.status !== \"DISPATCHED\" /* Dispatched */), take(1), shareReplay());\n }\n createDispatchObservable(actionResult$) {\n return actionResult$\n .pipe(exhaustMap((ctx) => {\n switch (ctx.status) {\n case \"SUCCESSFUL\" /* Successful */:\n return of(this._stateStream.getValue());\n case \"ERRORED\" /* Errored */:\n return throwError(ctx.error);\n default:\n return EMPTY;\n }\n }))\n .pipe(shareReplay());\n }\n}\n/** @nocollapse */ InternalDispatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: InternalDispatcher, deps: [{ token: InternalActions }, { token: InternalDispatchedActionResults }, { token: PluginManager }, { token: StateStream }, { token: InternalNgxsExecutionStrategy }, { token: InternalErrorReporter }], target: i0.ɵɵFactoryTarget.Injectable });\n/** @nocollapse */ InternalDispatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: InternalDispatcher, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: InternalDispatcher, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: InternalActions }, { type: InternalDispatchedActionResults }, { type: PluginManager }, { type: StateStream }, { type: InternalNgxsExecutionStrategy }, { type: InternalErrorReporter }]; } });\n\n/**\n * Object freeze code\n * https://github.com/jsdf/deep-freeze\n */\nconst deepFreeze = (o) => {\n Object.freeze(o);\n const oIsFunction = typeof o === 'function';\n const hasOwnProp = Object.prototype.hasOwnProperty;\n Object.getOwnPropertyNames(o).forEach(function (prop) {\n if (hasOwnProp.call(o, prop) &&\n (oIsFunction ? prop !== 'caller' && prop !== 'callee' && prop !== 'arguments' : true) &&\n o[prop] !== null &&\n (typeof o[prop] === 'object' || typeof o[prop] === 'function') &&\n !Object.isFrozen(o[prop])) {\n deepFreeze(o[prop]);\n }\n });\n return o;\n};\n\n/**\n * @ignore\n */\nclass InternalStateOperations {\n constructor(_stateStream, _dispatcher, _config) {\n this._stateStream = _stateStream;\n this._dispatcher = _dispatcher;\n this._config = _config;\n }\n /**\n * Returns the root state operators.\n */\n getRootStateOperations() {\n const rootStateOperations = {\n getState: () => this._stateStream.getValue(),\n setState: (newState) => this._stateStream.next(newState),\n dispatch: (actionOrActions) => this._dispatcher.dispatch(actionOrActions)\n };\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n return this._config.developmentMode\n ? ensureStateAndActionsAreImmutable(rootStateOperations)\n : rootStateOperations;\n }\n else {\n return rootStateOperations;\n }\n }\n setStateToTheCurrentWithNew(results) {\n const stateOperations = this.getRootStateOperations();\n // Get our current stream\n const currentState = stateOperations.getState();\n // Set the state to the current + new\n stateOperations.setState(Object.assign(Object.assign({}, currentState), results.defaults));\n }\n}\n/** @nocollapse */ InternalStateOperations.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: InternalStateOperations, deps: [{ token: StateStream }, { token: InternalDispatcher }, { token: NgxsConfig }], target: i0.ɵɵFactoryTarget.Injectable });\n/** @nocollapse */ InternalStateOperations.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: InternalStateOperations, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: InternalStateOperations, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: StateStream }, { type: InternalDispatcher }, { type: NgxsConfig }]; } });\nfunction ensureStateAndActionsAreImmutable(root) {\n return {\n getState: () => root.getState(),\n setState: value => {\n const frozenValue = deepFreeze(value);\n return root.setState(frozenValue);\n },\n dispatch: actions => {\n return root.dispatch(actions);\n }\n };\n}\n\nfunction simplePatch(value) {\n return (existingState) => {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (Array.isArray(value)) {\n throwPatchingArrayError();\n }\n else if (typeof value !== 'object') {\n throwPatchingPrimitiveError();\n }\n }\n const newState = Object.assign({}, existingState);\n for (const key in value) {\n // deep clone for patch compatibility\n newState[key] = value[key];\n }\n return newState;\n };\n}\n\n/**\n * State Context factory class\n * @ignore\n */\nclass StateContextFactory {\n constructor(_internalStateOperations) {\n this._internalStateOperations = _internalStateOperations;\n }\n /**\n * Create the state context\n */\n createStateContext(mappedStore) {\n const root = this._internalStateOperations.getRootStateOperations();\n return {\n getState() {\n const currentAppState = root.getState();\n return getState(currentAppState, mappedStore.path);\n },\n patchState(val) {\n const currentAppState = root.getState();\n const patchOperator = simplePatch(val);\n return setStateFromOperator(root, currentAppState, patchOperator, mappedStore.path);\n },\n setState(val) {\n const currentAppState = root.getState();\n return isStateOperator(val)\n ? setStateFromOperator(root, currentAppState, val, mappedStore.path)\n : setStateValue(root, currentAppState, val, mappedStore.path);\n },\n dispatch(actions) {\n return root.dispatch(actions);\n }\n };\n }\n}\n/** @nocollapse */ StateContextFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: StateContextFactory, deps: [{ token: InternalStateOperations }], target: i0.ɵɵFactoryTarget.Injectable });\n/** @nocollapse */ StateContextFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: StateContextFactory, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: StateContextFactory, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: InternalStateOperations }]; } });\nfunction setStateValue(root, currentAppState, newValue, path) {\n const newAppState = setValue(currentAppState, path, newValue);\n root.setState(newAppState);\n return newAppState;\n // In doing this refactoring I noticed that there is a 'bug' where the\n // application state is returned instead of this state slice.\n // This has worked this way since the beginning see:\n // https://github.com/ngxs/store/blame/324c667b4b7debd8eb979006c67ca0ae347d88cd/src/state-factory.ts\n // This needs to be fixed, but is a 'breaking' change.\n // I will do this fix in a subsequent PR and we can decide how to handle it.\n}\nfunction setStateFromOperator(root, currentAppState, stateOperator, path) {\n const local = getState(currentAppState, path);\n const newValue = stateOperator(local);\n return setStateValue(root, currentAppState, newValue, path);\n}\nfunction getState(currentAppState, path) {\n return getValue(currentAppState, path);\n}\n\nconst stateNameRegex = new RegExp('^[a-zA-Z0-9_]+$');\nfunction ensureStateNameIsValid(name) {\n if (!name) {\n throwStateNamePropertyError();\n }\n else if (!stateNameRegex.test(name)) {\n throwStateNameError(name);\n }\n}\nfunction ensureStateNameIsUnique(stateName, state, statesByName) {\n const existingState = statesByName[stateName];\n if (existingState && existingState !== state) {\n throwStateUniqueError(stateName, state.name, existingState.name);\n }\n}\nfunction ensureStatesAreDecorated(stateClasses) {\n stateClasses.forEach((stateClass) => {\n if (!getStoreMetadata$1(stateClass)) {\n throwStateDecoratorError(stateClass.name);\n }\n });\n}\n\n/**\n * All provided or injected tokens must have `@Injectable` decorator\n * (previously, injected tokens without `@Injectable` were allowed\n * if another decorator was used, e.g. pipes).\n */\nfunction ensureStateClassIsInjectable(stateClass) {\n if (jit_hasInjectableAnnotation(stateClass) || aot_hasNgInjectableDef(stateClass)) {\n return;\n }\n console.warn(getUndecoratedStateInIvyWarningMessage(stateClass.name));\n}\nfunction aot_hasNgInjectableDef(stateClass) {\n // `ɵprov` is a static property added by the NGCC compiler. It always exists in\n // AOT mode because this property is added before runtime. If an application is running in\n // JIT mode then this property can be added by the `@Injectable()` decorator. The `@Injectable()`\n // decorator has to go after the `@State()` decorator, thus we prevent users from unwanted DI errors.\n return !!stateClass.ɵprov;\n}\nfunction jit_hasInjectableAnnotation(stateClass) {\n // `ɵprov` doesn't exist in JIT mode (for instance when running unit tests with Jest).\n const annotations = stateClass.__annotations__ || [];\n return annotations.some((annotation) => (annotation === null || annotation === void 0 ? void 0 : annotation.ngMetadataName) === 'Injectable');\n}\n\n/**\n * Init action\n */\nclass InitState {\n}\nInitState.type = '@@INIT';\n/**\n * Update action\n */\nclass UpdateState {\n constructor(addedStates) {\n this.addedStates = addedStates;\n }\n}\nUpdateState.type = '@@UPDATE_STATE';\n\nconst NGXS_DEVELOPMENT_OPTIONS = new InjectionToken('NGXS_DEVELOPMENT_OPTIONS', {\n providedIn: 'root',\n factory: () => ({ warnOnUnhandledActions: true })\n});\n\nclass NgxsUnhandledActionsLogger {\n constructor(options) {\n /**\n * These actions should be ignored by default; the user can increase this\n * list in the future via the `ignoreActions` method.\n */\n this._ignoredActions = new Set([InitState.type, UpdateState.type]);\n if (typeof options.warnOnUnhandledActions === 'object') {\n this.ignoreActions(...options.warnOnUnhandledActions.ignore);\n }\n }\n /**\n * Adds actions to the internal list of actions that should be ignored.\n */\n ignoreActions(...actions) {\n for (const action of actions) {\n this._ignoredActions.add(action.type);\n }\n }\n /** @internal */\n warn(action) {\n const actionShouldBeIgnored = Array.from(this._ignoredActions).some(type => type === getActionTypeFromInstance(action));\n if (actionShouldBeIgnored) {\n return;\n }\n action =\n action.constructor && action.constructor.name !== 'Object'\n ? action.constructor.name\n : action.type;\n console.warn(`The ${action} action has been dispatched but hasn't been handled. This may happen if the state with an action handler for this action is not registered.`);\n }\n}\n/** @nocollapse */ NgxsUnhandledActionsLogger.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: NgxsUnhandledActionsLogger, deps: [{ token: NGXS_DEVELOPMENT_OPTIONS }], target: i0.ɵɵFactoryTarget.Injectable });\n/** @nocollapse */ NgxsUnhandledActionsLogger.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: NgxsUnhandledActionsLogger });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: NgxsUnhandledActionsLogger, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [NGXS_DEVELOPMENT_OPTIONS]\n }] }]; } });\n\nconst NG_DEV_MODE = typeof ngDevMode === 'undefined' || ngDevMode;\n/**\n * The `StateFactory` class adds root and feature states to the graph.\n * This extracts state names from state classes, checks if they already\n * exist in the global graph, throws errors if their names are invalid, etc.\n * See its constructor, state factories inject state factories that are\n * parent-level providers. This is required to get feature states from the\n * injector on the same level.\n *\n * The `NgxsModule.forFeature(...)` returns `providers: [StateFactory, ...states]`.\n * The `StateFactory` is initialized on the feature level and goes through `...states`\n * to get them from the injector through `injector.get(state)`.\n * @ignore\n */\nclass StateFactory {\n constructor(_injector, _config, _parentFactory, _actions, _actionResults, _stateContextFactory, _initialState) {\n this._injector = _injector;\n this._config = _config;\n this._parentFactory = _parentFactory;\n this._actions = _actions;\n this._actionResults = _actionResults;\n this._stateContextFactory = _stateContextFactory;\n this._initialState = _initialState;\n this._actionsSubscription = null;\n this._states = [];\n this._statesByName = {};\n this._statePaths = {};\n this.getRuntimeSelectorContext = memoize(() => {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const stateFactory = this;\n function resolveGetter(key) {\n const path = stateFactory.statePaths[key];\n return path ? propGetter(path.split('.'), stateFactory._config) : null;\n }\n const context = this._parentFactory\n ? this._parentFactory.getRuntimeSelectorContext()\n : {\n getStateGetter(key) {\n let getter = resolveGetter(key);\n if (getter) {\n return getter;\n }\n return (...args) => {\n // Late loaded getter\n if (!getter) {\n getter = resolveGetter(key);\n }\n return getter ? getter(...args) : undefined;\n };\n },\n getSelectorOptions(localOptions) {\n const globalSelectorOptions = stateFactory._config.selectorOptions;\n return Object.assign(Object.assign({}, globalSelectorOptions), (localOptions || {}));\n }\n };\n return context;\n });\n }\n get states() {\n return this._parentFactory ? this._parentFactory.states : this._states;\n }\n get statesByName() {\n return this._parentFactory ? this._parentFactory.statesByName : this._statesByName;\n }\n get statePaths() {\n return this._parentFactory ? this._parentFactory.statePaths : this._statePaths;\n }\n static _cloneDefaults(defaults) {\n let value = defaults;\n if (Array.isArray(defaults)) {\n value = defaults.slice();\n }\n else if (isObject(defaults)) {\n value = Object.assign({}, defaults);\n }\n else if (defaults === undefined) {\n value = {};\n }\n return value;\n }\n ngOnDestroy() {\n var _a;\n (_a = this._actionsSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();\n }\n /**\n * Add a new state to the global defs.\n */\n add(stateClasses) {\n if (NG_DEV_MODE) {\n ensureStatesAreDecorated(stateClasses);\n }\n const { newStates } = this.addToStatesMap(stateClasses);\n if (!newStates.length)\n return [];\n const stateGraph = buildGraph(newStates);\n const sortedStates = topologicalSort(stateGraph);\n const paths = findFullParentPath(stateGraph);\n const nameGraph = nameToState(newStates);\n const bootstrappedStores = [];\n for (const name of sortedStates) {\n const stateClass = nameGraph[name];\n const path = paths[name];\n const meta = stateClass[META_KEY];\n this.addRuntimeInfoToMeta(meta, path);\n // Note: previously we called `ensureStateClassIsInjectable` within the\n // `State` decorator. This check is moved here because the `ɵprov` property\n // will not exist on the class in JIT mode (because it's set asynchronously\n // during JIT compilation through `Object.defineProperty`).\n if (NG_DEV_MODE) {\n ensureStateClassIsInjectable(stateClass);\n }\n const stateMap = {\n name,\n path,\n isInitialised: false,\n actions: meta.actions,\n instance: this._injector.get(stateClass),\n defaults: StateFactory._cloneDefaults(meta.defaults)\n };\n // ensure our store hasn't already been added\n // but don't throw since it could be lazy\n // loaded from different paths\n if (!this.hasBeenMountedAndBootstrapped(name, path)) {\n bootstrappedStores.push(stateMap);\n }\n this.states.push(stateMap);\n }\n return bootstrappedStores;\n }\n /**\n * Add a set of states to the store and return the defaults\n */\n addAndReturnDefaults(stateClasses) {\n const classes = stateClasses || [];\n const mappedStores = this.add(classes);\n const defaults = mappedStores.reduce((result, mappedStore) => setValue(result, mappedStore.path, mappedStore.defaults), {});\n return { defaults, states: mappedStores };\n }\n connectActionHandlers() {\n // Note: We have to connect actions only once when the `StateFactory`\n // is being created for the first time. This checks if we're in\n // a child state factory and the parent state factory already exists.\n if (this._parentFactory || this._actionsSubscription !== null) {\n return;\n }\n const dispatched$ = new Subject();\n this._actionsSubscription = this._actions\n .pipe(filter((ctx) => ctx.status === \"DISPATCHED\" /* Dispatched */), mergeMap(ctx => {\n dispatched$.next(ctx);\n const action = ctx.action;\n return this.invokeActions(dispatched$, action).pipe(map(() => ({ action, status: \"SUCCESSFUL\" /* Successful */ })), defaultIfEmpty({ action, status: \"CANCELED\" /* Canceled */ }), catchError(error => of({ action, status: \"ERRORED\" /* Errored */, error })));\n }))\n .subscribe(ctx => this._actionResults.next(ctx));\n }\n /**\n * Invoke actions on the states.\n */\n invokeActions(dispatched$, action) {\n const type = getActionTypeFromInstance(action);\n const results = [];\n // Determines whether the dispatched action has been handled, this is assigned\n // to `true` within the below `for` loop if any `actionMetas` has been found.\n let actionHasBeenHandled = false;\n for (const metadata of this.states) {\n const actionMetas = metadata.actions[type];\n if (actionMetas) {\n for (const actionMeta of actionMetas) {\n const stateContext = this._stateContextFactory.createStateContext(metadata);\n try {\n let result = metadata.instance[actionMeta.fn](stateContext, action);\n if (result instanceof Promise) {\n result = from(result);\n }\n if (isObservable(result)) {\n // If this observable has been completed w/o emitting\n // any value then we wouldn't want to complete the whole chain\n // of actions. Since if any observable completes then\n // action will be canceled.\n // For instance if any action handler would've had such statement:\n // `handler(ctx) { return EMPTY; }`\n // then the action will be canceled.\n // See https://github.com/ngxs/store/issues/1568\n result = result.pipe(mergeMap((value) => {\n if (value instanceof Promise) {\n return from(value);\n }\n if (isObservable(value)) {\n return value;\n }\n return of(value);\n }), defaultIfEmpty({}));\n if (actionMeta.options.cancelUncompleted) {\n // todo: ofActionDispatched should be used with action class\n result = result.pipe(takeUntil(dispatched$.pipe(ofActionDispatched(action))));\n }\n }\n else {\n result = of({}).pipe(shareReplay());\n }\n results.push(result);\n }\n catch (e) {\n results.push(throwError(e));\n }\n actionHasBeenHandled = true;\n }\n }\n }\n // The `NgxsUnhandledActionsLogger` is a tree-shakable class which functions\n // only during development.\n if (NG_DEV_MODE && !actionHasBeenHandled) {\n const unhandledActionsLogger = this._injector.get(NgxsUnhandledActionsLogger, null);\n // The `NgxsUnhandledActionsLogger` will not be resolved by the injector if the\n // `NgxsDevelopmentModule` is not provided. It's enough to check whether the `injector.get`\n // didn't return `null` so we may ensure the module has been imported.\n if (unhandledActionsLogger) {\n unhandledActionsLogger.warn(action);\n }\n }\n if (!results.length) {\n results.push(of({}));\n }\n return forkJoin(results);\n }\n addToStatesMap(stateClasses) {\n const newStates = [];\n const statesMap = this.statesByName;\n for (const stateClass of stateClasses) {\n const stateName = getStoreMetadata$1(stateClass).name;\n if (NG_DEV_MODE) {\n ensureStateNameIsUnique(stateName, stateClass, statesMap);\n }\n const unmountedState = !statesMap[stateName];\n if (unmountedState) {\n newStates.push(stateClass);\n statesMap[stateName] = stateClass;\n }\n }\n return { newStates };\n }\n addRuntimeInfoToMeta(meta, path) {\n this.statePaths[meta.name] = path;\n // TODO: v4 - we plan to get rid of the path property because it is non-deterministic\n // we can do this when we get rid of the incorrectly exposed getStoreMetadata\n // We will need to come up with an alternative in v4 because this is used by many plugins\n meta.path = path;\n }\n hasBeenMountedAndBootstrapped(name, path) {\n const valueIsBootstrappedInInitialState = getValue(this._initialState, path) !== undefined;\n // This checks whether a state has been already added to the global graph and\n // its lifecycle is in 'bootstrapped' state.\n return this.statesByName[name] && valueIsBootstrappedInInitialState;\n }\n}\n/** @nocollapse */ StateFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: StateFactory, deps: [{ token: i0.Injector }, { token: NgxsConfig }, { token: StateFactory, optional: true, skipSelf: true }, { token: InternalActions }, { token: InternalDispatchedActionResults }, { token: StateContextFactory }, { token: INITIAL_STATE_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\n/** @nocollapse */ StateFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: StateFactory });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: StateFactory, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.Injector }, { type: NgxsConfig }, { type: StateFactory, decorators: [{\n type: Optional\n }, {\n type: SkipSelf\n }] }, { type: InternalActions }, { type: InternalDispatchedActionResults }, { type: StateContextFactory }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [INITIAL_STATE_TOKEN]\n }] }]; } });\n\nfunction createRootSelectorFactory(selectorMetaData, selectors, memoizedSelectorFn) {\n return (context) => {\n const { argumentSelectorFunctions, selectorOptions } = getRuntimeSelectorInfo(context, selectorMetaData, selectors);\n return function selectFromRoot(rootState) {\n // Determine arguments from the app state using the selectors\n const results = argumentSelectorFunctions.map((argFn) => argFn(rootState));\n // if the lambda tries to access a something on the\n // state that doesn't exist, it will throw a TypeError.\n // since this is quite usual behaviour, we simply return undefined if so.\n try {\n return memoizedSelectorFn(...results);\n }\n catch (ex) {\n if (ex instanceof TypeError && selectorOptions.suppressErrors) {\n return undefined;\n }\n throw ex;\n }\n };\n };\n}\nfunction createMemoizedSelectorFn(originalFn, creationMetadata) {\n const containerClass = creationMetadata && creationMetadata.containerClass;\n const wrappedFn = function wrappedSelectorFn(...args) {\n const returnValue = originalFn.apply(containerClass, args);\n if (returnValue instanceof Function) {\n const innerMemoizedFn = memoize.apply(null, [returnValue]);\n return innerMemoizedFn;\n }\n return returnValue;\n };\n const memoizedFn = memoize(wrappedFn);\n Object.setPrototypeOf(memoizedFn, originalFn);\n return memoizedFn;\n}\nfunction getRuntimeSelectorInfo(context, selectorMetaData, selectors = []) {\n const localSelectorOptions = selectorMetaData.getSelectorOptions();\n const selectorOptions = context.getSelectorOptions(localSelectorOptions);\n const selectorsToApply = getSelectorsToApply(selectors, selectorOptions, selectorMetaData.containerClass);\n const argumentSelectorFunctions = selectorsToApply.map((selector) => {\n const factory = getRootSelectorFactory(selector);\n return factory(context);\n });\n return {\n selectorOptions,\n argumentSelectorFunctions,\n };\n}\nfunction getSelectorsToApply(selectors = [], selectorOptions, containerClass) {\n const selectorsToApply = [];\n const canInjectContainerState = selectors.length === 0 || selectorOptions.injectContainerState;\n if (containerClass && canInjectContainerState) {\n // If we are on a state class, add it as the first selector parameter\n const metadata = getStoreMetadata$1(containerClass);\n if (metadata) {\n selectorsToApply.push(containerClass);\n }\n }\n if (selectors) {\n selectorsToApply.push(...selectors);\n }\n return selectorsToApply;\n}\n/**\n * This function gets the factory function to create the selector to get the selected slice from the app state\n * @ignore\n */\nfunction getRootSelectorFactory(selector) {\n const metadata = getSelectorMetadata$1(selector) || getStoreMetadata$1(selector);\n return (metadata && metadata.makeRootSelector) || (() => selector);\n}\n\n// tslint:disable:unified-signatures\nclass Store {\n constructor(_stateStream, _internalStateOperations, _config, _internalExecutionStrategy, _stateFactory, initialStateValue) {\n this._stateStream = _stateStream;\n this._internalStateOperations = _internalStateOperations;\n this._config = _config;\n this._internalExecutionStrategy = _internalExecutionStrategy;\n this._stateFactory = _stateFactory;\n /**\n * This is a derived state stream that leaves NGXS execution strategy to emit state changes within the Angular zone,\n * because state is being changed actually within the `` zone, see `InternalDispatcher#dispatchSingle`.\n * All selects would use this stream, and it would call leave only once for any state change across all active selectors.\n */\n this._selectableStateStream = this._stateStream.pipe(leaveNgxs(this._internalExecutionStrategy), shareReplay({ bufferSize: 1, refCount: true }));\n this.initStateStream(initialStateValue);\n }\n /**\n * Dispatches event(s).\n */\n dispatch(actionOrActions) {\n return this._internalStateOperations.getRootStateOperations().dispatch(actionOrActions);\n }\n select(selector) {\n const selectorFn = this.getStoreBoundSelectorFn(selector);\n return this._selectableStateStream.pipe(map(selectorFn), catchError((err) => {\n // if error is TypeError we swallow it to prevent usual errors with property access\n const { suppressErrors } = this._config.selectorOptions;\n if (err instanceof TypeError && suppressErrors) {\n return of(undefined);\n }\n // rethrow other errors\n return throwError(err);\n }), distinctUntilChanged(), leaveNgxs(this._internalExecutionStrategy));\n }\n selectOnce(selector) {\n return this.select(selector).pipe(take(1));\n }\n selectSnapshot(selector) {\n const selectorFn = this.getStoreBoundSelectorFn(selector);\n return selectorFn(this._stateStream.getValue());\n }\n /**\n * Allow the user to subscribe to the root of the state\n */\n subscribe(fn) {\n return this._selectableStateStream\n .pipe(leaveNgxs(this._internalExecutionStrategy))\n .subscribe(fn);\n }\n /**\n * Return the raw value of the state.\n */\n snapshot() {\n return this._internalStateOperations.getRootStateOperations().getState();\n }\n /**\n * Reset the state to a specific point in time. This method is useful\n * for plugin's who need to modify the state directly or unit testing.\n */\n reset(state) {\n return this._internalStateOperations.getRootStateOperations().setState(state);\n }\n getStoreBoundSelectorFn(selector) {\n const makeSelectorFn = getRootSelectorFactory(selector);\n const runtimeContext = this._stateFactory.getRuntimeSelectorContext();\n return makeSelectorFn(runtimeContext);\n }\n initStateStream(initialStateValue) {\n const value = this._stateStream.value;\n const storeIsEmpty = !value || Object.keys(value).length === 0;\n if (storeIsEmpty) {\n const defaultStateNotEmpty = Object.keys(this._config.defaultsState).length > 0;\n const storeValues = defaultStateNotEmpty\n ? Object.assign(Object.assign({}, this._config.defaultsState), initialStateValue) : initialStateValue;\n this._stateStream.next(storeValues);\n }\n }\n}\n/** @nocollapse */ Store.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: Store, deps: [{ token: StateStream }, { token: InternalStateOperations }, { token: NgxsConfig }, { token: InternalNgxsExecutionStrategy }, { token: StateFactory }, { token: INITIAL_STATE_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\n/** @nocollapse */ Store.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: Store, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: Store, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: StateStream }, { type: InternalStateOperations }, { type: NgxsConfig }, { type: InternalNgxsExecutionStrategy }, { type: StateFactory }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [INITIAL_STATE_TOKEN]\n }] }]; } });\n\n/**\n * Allows the select decorator to get access to the DI store, this is used internally\n * in `@Select` decorator.\n */\nclass SelectFactory {\n constructor(store, config) {\n SelectFactory.store = store;\n SelectFactory.config = config;\n }\n ngOnDestroy() {\n SelectFactory.store = null;\n SelectFactory.config = null;\n }\n}\nSelectFactory.store = null;\nSelectFactory.config = null;\n/** @nocollapse */ SelectFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: SelectFactory, deps: [{ token: Store }, { token: NgxsConfig }], target: i0.ɵɵFactoryTarget.Injectable });\n/** @nocollapse */ SelectFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: SelectFactory, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: SelectFactory, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: Store }, { type: NgxsConfig }]; } });\n\nclass LifecycleStateManager {\n constructor(_store, _internalErrorReporter, _internalStateOperations, _stateContextFactory, _bootstrapper) {\n this._store = _store;\n this._internalErrorReporter = _internalErrorReporter;\n this._internalStateOperations = _internalStateOperations;\n this._stateContextFactory = _stateContextFactory;\n this._bootstrapper = _bootstrapper;\n this._destroy$ = new Subject();\n }\n ngOnDestroy() {\n this._destroy$.next();\n }\n ngxsBootstrap(action, results) {\n this._internalStateOperations\n .getRootStateOperations()\n .dispatch(action)\n .pipe(filter(() => !!results), tap(() => this._invokeInitOnStates(results.states)), mergeMap(() => this._bootstrapper.appBootstrapped$), filter(appBootstrapped => !!appBootstrapped), catchError(error => {\n // The `SafeSubscriber` (which is used by most RxJS operators) re-throws\n // errors asynchronously (`setTimeout(() => { throw error })`). This might\n // break existing user's code or unit tests. We catch the error manually to\n // be backward compatible with the old behavior.\n this._internalErrorReporter.reportErrorSafely(error);\n return EMPTY;\n }), takeUntil(this._destroy$))\n .subscribe(() => this._invokeBootstrapOnStates(results.states));\n }\n _invokeInitOnStates(mappedStores) {\n for (const mappedStore of mappedStores) {\n const instance = mappedStore.instance;\n if (instance.ngxsOnChanges) {\n this._store\n .select(state => getValue(state, mappedStore.path))\n .pipe(startWith(undefined), pairwise(), takeUntil(this._destroy$))\n .subscribe(([previousValue, currentValue]) => {\n const change = new NgxsSimpleChange(previousValue, currentValue, !mappedStore.isInitialised);\n instance.ngxsOnChanges(change);\n });\n }\n if (instance.ngxsOnInit) {\n instance.ngxsOnInit(this._getStateContext(mappedStore));\n }\n mappedStore.isInitialised = true;\n }\n }\n _invokeBootstrapOnStates(mappedStores) {\n for (const mappedStore of mappedStores) {\n const instance = mappedStore.instance;\n if (instance.ngxsAfterBootstrap) {\n instance.ngxsAfterBootstrap(this._getStateContext(mappedStore));\n }\n }\n }\n _getStateContext(mappedStore) {\n return this._stateContextFactory.createStateContext(mappedStore);\n }\n}\n/** @nocollapse */ LifecycleStateManager.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: LifecycleStateManager, deps: [{ token: Store }, { token: InternalErrorReporter }, { token: InternalStateOperations }, { token: StateContextFactory }, { token: i5.NgxsBootstrapper }], target: i0.ɵɵFactoryTarget.Injectable });\n/** @nocollapse */ LifecycleStateManager.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: LifecycleStateManager, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: LifecycleStateManager, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: Store }, { type: InternalErrorReporter }, { type: InternalStateOperations }, { type: StateContextFactory }, { type: i5.NgxsBootstrapper }]; } });\n\n/**\n * Root module\n * @ignore\n */\nclass NgxsRootModule {\n constructor(factory, internalStateOperations, _store, _select, states = [], lifecycleStateManager) {\n // Add stores to the state graph and return their defaults\n const results = factory.addAndReturnDefaults(states);\n internalStateOperations.setStateToTheCurrentWithNew(results);\n // Connect our actions stream\n factory.connectActionHandlers();\n // Dispatch the init action and invoke init and bootstrap functions after\n lifecycleStateManager.ngxsBootstrap(new InitState(), results);\n }\n}\n/** @nocollapse */ NgxsRootModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: NgxsRootModule, deps: [{ token: StateFactory }, { token: InternalStateOperations }, { token: Store }, { token: SelectFactory }, { token: ROOT_STATE_TOKEN, optional: true }, { token: LifecycleStateManager }], target: i0.ɵɵFactoryTarget.NgModule });\n/** @nocollapse */ NgxsRootModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: NgxsRootModule });\n/** @nocollapse */ NgxsRootModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: NgxsRootModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: NgxsRootModule, decorators: [{\n type: NgModule\n }], ctorParameters: function () { return [{ type: StateFactory }, { type: InternalStateOperations }, { type: Store }, { type: SelectFactory }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ROOT_STATE_TOKEN]\n }] }, { type: LifecycleStateManager }]; } });\n\n/**\n * Feature module\n * @ignore\n */\nclass NgxsFeatureModule {\n constructor(_store, internalStateOperations, factory, states = [], lifecycleStateManager) {\n // Since FEATURE_STATE_TOKEN is a multi token, we need to\n // flatten it [[Feature1State, Feature2State], [Feature3State]]\n const flattenedStates = NgxsFeatureModule.flattenStates(states);\n // add stores to the state graph and return their defaults\n const results = factory.addAndReturnDefaults(flattenedStates);\n if (results.states.length) {\n internalStateOperations.setStateToTheCurrentWithNew(results);\n // dispatch the update action and invoke init and bootstrap functions after\n lifecycleStateManager.ngxsBootstrap(new UpdateState(results.defaults), results);\n }\n }\n static flattenStates(states = []) {\n return states.reduce((total, values) => total.concat(values), []);\n }\n}\n/** @nocollapse */ NgxsFeatureModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: NgxsFeatureModule, deps: [{ token: Store }, { token: InternalStateOperations }, { token: StateFactory }, { token: FEATURE_STATE_TOKEN, optional: true }, { token: LifecycleStateManager }], target: i0.ɵɵFactoryTarget.NgModule });\n/** @nocollapse */ NgxsFeatureModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: NgxsFeatureModule });\n/** @nocollapse */ NgxsFeatureModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: NgxsFeatureModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: NgxsFeatureModule, decorators: [{\n type: NgModule\n }], ctorParameters: function () { return [{ type: Store }, { type: InternalStateOperations }, { type: StateFactory }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [FEATURE_STATE_TOKEN]\n }] }, { type: LifecycleStateManager }]; } });\n\n/**\n * Ngxs Module\n */\nclass NgxsModule {\n /**\n * Root module factory\n */\n static forRoot(states = [], options = {}) {\n return {\n ngModule: NgxsRootModule,\n providers: [\n StateFactory,\n PluginManager,\n ...states,\n ...NgxsModule.ngxsTokenProviders(states, options)\n ]\n };\n }\n /**\n * Feature module factory\n */\n static forFeature(states = []) {\n return {\n ngModule: NgxsFeatureModule,\n providers: [\n // This is required on the feature level, see comments in `state-factory.ts`.\n StateFactory,\n PluginManager,\n ...states,\n {\n provide: FEATURE_STATE_TOKEN,\n multi: true,\n useValue: states\n }\n ]\n };\n }\n static ngxsTokenProviders(states, options) {\n return [\n {\n provide: USER_PROVIDED_NGXS_EXECUTION_STRATEGY,\n useValue: options.executionStrategy\n },\n {\n provide: ROOT_STATE_TOKEN,\n useValue: states\n },\n {\n provide: ROOT_OPTIONS,\n useValue: options\n },\n {\n provide: APP_BOOTSTRAP_LISTENER,\n useFactory: NgxsModule.appBootstrapListenerFactory,\n multi: true,\n deps: [NgxsBootstrapper]\n },\n {\n provide: ɵNGXS_STATE_CONTEXT_FACTORY,\n useExisting: StateContextFactory\n },\n {\n provide: ɵNGXS_STATE_FACTORY,\n useExisting: StateFactory\n }\n ];\n }\n static appBootstrapListenerFactory(bootstrapper) {\n return () => bootstrapper.bootstrap();\n }\n}\n/** @nocollapse */ NgxsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: NgxsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n/** @nocollapse */ NgxsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: NgxsModule });\n/** @nocollapse */ NgxsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: NgxsModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: NgxsModule, decorators: [{\n type: NgModule\n }] });\n\n/**\n * Decorates a method with a action information.\n */\nfunction Action(actions, options) {\n return (target, name) => {\n // Caretaker note: we have still left the `typeof` condition in order to avoid\n // creating a breaking change for projects that still use the View Engine.\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const isStaticMethod = target.hasOwnProperty('prototype');\n if (isStaticMethod) {\n throwActionDecoratorError();\n }\n }\n const meta = ensureStoreMetadata$1(target.constructor);\n if (!Array.isArray(actions)) {\n actions = [actions];\n }\n for (const action of actions) {\n const type = action.type;\n if (!meta.actions[type]) {\n meta.actions[type] = [];\n }\n meta.actions[type].push({\n fn: name,\n options: options || {},\n type\n });\n }\n };\n}\n\n/**\n * Decorates a class with ngxs state information.\n */\nfunction State(options) {\n return (target) => {\n const stateClass = target;\n const meta = ensureStoreMetadata$1(stateClass);\n const inheritedStateClass = Object.getPrototypeOf(stateClass);\n const optionsWithInheritance = getStateOptions(inheritedStateClass, options);\n mutateMetaData({ meta, inheritedStateClass, optionsWithInheritance });\n stateClass[META_OPTIONS_KEY] = optionsWithInheritance;\n };\n}\nfunction getStateOptions(inheritedStateClass, options) {\n const inheritanceOptions = inheritedStateClass[META_OPTIONS_KEY] || {};\n return Object.assign(Object.assign({}, inheritanceOptions), options);\n}\nfunction mutateMetaData(params) {\n const { meta, inheritedStateClass, optionsWithInheritance } = params;\n const { children, defaults, name } = optionsWithInheritance;\n const stateName = typeof name === 'string' ? name : (name && name.getName()) || null;\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n ensureStateNameIsValid(stateName);\n }\n if (inheritedStateClass.hasOwnProperty(META_KEY)) {\n const inheritedMeta = inheritedStateClass[META_KEY] || {};\n meta.actions = Object.assign(Object.assign({}, meta.actions), inheritedMeta.actions);\n }\n meta.children = children;\n meta.defaults = defaults;\n meta.name = stateName;\n}\n\nconst DOLLAR_CHAR_CODE = 36;\nfunction createSelectObservable(selector) {\n if (!SelectFactory.store) {\n throwSelectFactoryNotConnectedError();\n }\n return SelectFactory.store.select(selector);\n}\nfunction createSelectorFn(name, rawSelector, paths = []) {\n rawSelector = !rawSelector ? removeDollarAtTheEnd(name) : rawSelector;\n if (typeof rawSelector === 'string') {\n const propsArray = paths.length\n ? [rawSelector, ...paths]\n : rawSelector.split('.');\n return propGetter(propsArray, SelectFactory.config);\n }\n return rawSelector;\n}\n/**\n * @example If `foo$` => make it just `foo`\n */\nfunction removeDollarAtTheEnd(name) {\n const lastCharIndex = name.length - 1;\n const dollarAtTheEnd = name.charCodeAt(lastCharIndex) === DOLLAR_CHAR_CODE;\n return dollarAtTheEnd ? name.slice(0, lastCharIndex) : name;\n}\n\n/**\n * Decorator for selecting a slice of state from the store.\n */\nfunction Select(rawSelector, ...paths) {\n return function (target, key) {\n const name = key.toString();\n const selectorId = `__${name}__selector`;\n const selector = createSelectorFn(name, rawSelector, paths);\n Object.defineProperties(target, {\n [selectorId]: {\n writable: true,\n enumerable: false,\n configurable: true\n },\n [name]: {\n enumerable: true,\n configurable: true,\n get() {\n return this[selectorId] || (this[selectorId] = createSelectObservable(selector));\n }\n }\n });\n };\n}\n\nconst SELECTOR_OPTIONS_META_KEY = 'NGXS_SELECTOR_OPTIONS_META';\nconst selectorOptionsMetaAccessor = {\n getOptions: (target) => {\n return (target && target[SELECTOR_OPTIONS_META_KEY]) || {};\n },\n defineOptions: (target, options) => {\n if (!target)\n return;\n target[SELECTOR_OPTIONS_META_KEY] = options;\n },\n};\nfunction setupSelectorMetadata(originalFn, creationMetadata) {\n const selectorMetaData = ensureSelectorMetadata$1(originalFn);\n selectorMetaData.originalFn = originalFn;\n let getExplicitSelectorOptions = () => ({});\n if (creationMetadata) {\n selectorMetaData.containerClass = creationMetadata.containerClass;\n selectorMetaData.selectorName = creationMetadata.selectorName || null;\n getExplicitSelectorOptions =\n creationMetadata.getSelectorOptions || getExplicitSelectorOptions;\n }\n const selectorMetaDataClone = Object.assign({}, selectorMetaData);\n selectorMetaData.getSelectorOptions = () => getLocalSelectorOptions(selectorMetaDataClone, getExplicitSelectorOptions());\n return selectorMetaData;\n}\nfunction getLocalSelectorOptions(selectorMetaData, explicitOptions) {\n return Object.assign(Object.assign(Object.assign(Object.assign({}, (selectorOptionsMetaAccessor.getOptions(selectorMetaData.containerClass) || {})), (selectorOptionsMetaAccessor.getOptions(selectorMetaData.originalFn) || {})), (selectorMetaData.getSelectorOptions() || {})), explicitOptions);\n}\n\n/**\n * Decorator for setting selector options at a method or class level.\n */\nfunction SelectorOptions(options) {\n return (function decorate(target, methodName, descriptor) {\n if (methodName) {\n descriptor || (descriptor = Object.getOwnPropertyDescriptor(target, methodName));\n // Method Decorator\n const originalFn = descriptor.value || descriptor.originalFn;\n if (originalFn) {\n selectorOptionsMetaAccessor.defineOptions(originalFn, options);\n }\n }\n else {\n // Class Decorator\n selectorOptionsMetaAccessor.defineOptions(target, options);\n }\n });\n}\n\nfunction ensureStoreMetadata(target) {\n return ensureStoreMetadata$1(target);\n}\nfunction getStoreMetadata(target) {\n return getStoreMetadata$1(target);\n}\nfunction ensureSelectorMetadata(target) {\n return ensureSelectorMetadata$1(target);\n}\nfunction getSelectorMetadata(target) {\n return getSelectorMetadata$1(target);\n}\n\nfunction createSelector(selectors, projector, creationMetadata) {\n const memoizedFn = createMemoizedSelectorFn(projector, creationMetadata);\n const selectorMetaData = setupSelectorMetadata(projector, creationMetadata);\n selectorMetaData.makeRootSelector = createRootSelectorFactory(selectorMetaData, selectors, memoizedFn);\n return memoizedFn;\n}\n\nfunction Selector(selectors) {\n return (target, key, descriptor) => {\n descriptor || (descriptor = Object.getOwnPropertyDescriptor(target, key));\n const originalFn = descriptor === null || descriptor === void 0 ? void 0 : descriptor.value;\n // Caretaker note: we have still left the `typeof` condition in order to avoid\n // creating a breaking change for projects that still use the View Engine.\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (originalFn && typeof originalFn !== 'function') {\n throwSelectorDecoratorError();\n }\n }\n const memoizedFn = createSelector(selectors, originalFn, {\n containerClass: target,\n selectorName: key.toString(),\n getSelectorOptions() {\n return {};\n },\n });\n const newDescriptor = {\n configurable: true,\n get() {\n return memoizedFn;\n },\n };\n // Add hidden property to descriptor\n newDescriptor['originalFn'] = originalFn;\n return newDescriptor;\n };\n}\n\nclass StateToken {\n constructor(name) {\n this.name = name;\n const selectorMetadata = ensureSelectorMetadata$1(this);\n selectorMetadata.makeRootSelector = (runtimeContext) => {\n return runtimeContext.getStateGetter(this.name);\n };\n }\n getName() {\n return this.name;\n }\n toString() {\n return `StateToken[${this.name}]`;\n }\n}\n\nclass NgxsDevelopmentModule {\n static forRoot(options) {\n return {\n ngModule: NgxsDevelopmentModule,\n providers: [\n NgxsUnhandledActionsLogger,\n { provide: NGXS_DEVELOPMENT_OPTIONS, useValue: options }\n ]\n };\n }\n}\n/** @nocollapse */ NgxsDevelopmentModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: NgxsDevelopmentModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n/** @nocollapse */ NgxsDevelopmentModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: NgxsDevelopmentModule });\n/** @nocollapse */ NgxsDevelopmentModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: NgxsDevelopmentModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.17\", ngImport: i0, type: NgxsDevelopmentModule, decorators: [{\n type: NgModule\n }] });\n\nfunction ensureValidSelector(selector, context = {}) {\n const noun = context.noun || 'selector';\n const prefix = context.prefix ? context.prefix + ': ' : '';\n ensureValueProvided(selector, { noun, prefix: context.prefix });\n const metadata = getSelectorMetadata$1(selector) || getStoreMetadata$1(selector);\n if (!metadata) {\n throw new Error(`${prefix}The value provided as the ${noun} is not a valid selector.`);\n }\n}\nfunction ensureValueProvided(value, context = {}) {\n const noun = context.noun || 'value';\n const prefix = context.prefix ? context.prefix + ': ' : '';\n if (!value) {\n throw new Error(`${prefix}A ${noun} must be provided.`);\n }\n}\n\nfunction createModelSelector(selectorMap) {\n const selectorKeys = Object.keys(selectorMap);\n const selectors = Object.values(selectorMap);\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n ensureValidSelectorMap({\n prefix: '[createModelSelector]',\n selectorMap,\n selectorKeys,\n selectors\n });\n }\n return createSelector(selectors, (...args) => {\n return selectorKeys.reduce((obj, key, index) => {\n obj[key] = args[index];\n return obj;\n }, {});\n });\n}\nfunction ensureValidSelectorMap({ prefix, selectorMap, selectorKeys, selectors }) {\n ensureValueProvided(selectorMap, { prefix, noun: 'selector map' });\n ensureValueProvided(typeof selectorMap === 'object', { prefix, noun: 'valid selector map' });\n ensureValueProvided(selectorKeys.length, { prefix, noun: 'non-empty selector map' });\n selectors.forEach((selector, index) => ensureValidSelector(selector, {\n prefix,\n noun: `selector for the '${selectorKeys[index]}' property`\n }));\n}\n\nfunction createPickSelector(selector, keys) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n ensureValidSelector(selector, { prefix: '[createPickSelector]' });\n }\n const validKeys = keys.filter(Boolean);\n const selectors = validKeys.map(key => createSelector([selector], (s) => s[key]));\n return createSelector([...selectors], (...props) => {\n return validKeys.reduce((acc, key, index) => {\n acc[key] = props[index];\n return acc;\n }, {});\n });\n}\n\nfunction createPropertySelectors(parentSelector) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n ensureValidSelector(parentSelector, {\n prefix: '[createPropertySelectors]',\n noun: 'parent selector'\n });\n }\n const cache = {};\n return new Proxy({}, {\n get(_target, prop) {\n const selector = cache[prop] ||\n createSelector([parentSelector], (s) => s === null || s === void 0 ? void 0 : s[prop]);\n cache[prop] = selector;\n return selector;\n }\n });\n}\n\n/**\n * The public api for consumers of @ngxs/store\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Action, Actions, InitState, NGXS_PLUGINS, NgxsDevelopmentModule, NgxsModule, NgxsSimpleChange, NgxsUnhandledActionsLogger, NoopNgxsExecutionStrategy, Select, Selector, SelectorOptions, State, StateStream, StateToken, Store, UpdateState, actionMatcher, createModelSelector, createPickSelector, createPropertySelectors, createSelector, ensureSelectorMetadata, ensureStoreMetadata, getActionTypeFromInstance, getSelectorMetadata, getStoreMetadata, getValue, ofAction, ofActionCanceled, ofActionCompleted, ofActionDispatched, ofActionErrored, ofActionSuccessful, setValue, NgxsFeatureModule as ɵNgxsFeatureModule, NgxsRootModule as ɵNgxsRootModule };\n","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function pairwise() {\n return operate((source, subscriber) => {\n let prev;\n let hasPrev = false;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n const p = prev;\n prev = value;\n hasPrev && subscriber.next([p, value]);\n hasPrev = true;\n }));\n });\n}\n","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref) {\n var name = _ref.name,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n effect = _ref.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction 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// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction 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// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\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 */\nfunction 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// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\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 */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\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 */\nfunction 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\nmodule.exports = arrayEach;\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 */\nfunction 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\nmodule.exports = arrayFilter;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\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 */\nfunction 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\nmodule.exports = arrayLikeKeys;\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 */\nfunction 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\nmodule.exports = arrayPush;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\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 */\nfunction 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\nmodule.exports = assignValue;\n","var eq = require('./eq');\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 */\nfunction 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\nmodule.exports = assocIndexOf;\n","var copyObject = require('./_copyObject'),\n keys = require('./keys');\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 */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\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 */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n","var defineProperty = require('./_defineProperty');\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 */\nfunction 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\nmodule.exports = baseAssignValue;\n","var Stack = require('./_Stack'),\n arrayEach = require('./_arrayEach'),\n assignValue = require('./_assignValue'),\n baseAssign = require('./_baseAssign'),\n baseAssignIn = require('./_baseAssignIn'),\n cloneBuffer = require('./_cloneBuffer'),\n copyArray = require('./_copyArray'),\n copySymbols = require('./_copySymbols'),\n copySymbolsIn = require('./_copySymbolsIn'),\n getAllKeys = require('./_getAllKeys'),\n getAllKeysIn = require('./_getAllKeysIn'),\n getTag = require('./_getTag'),\n initCloneArray = require('./_initCloneArray'),\n initCloneByTag = require('./_initCloneByTag'),\n initCloneObject = require('./_initCloneObject'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isMap = require('./isMap'),\n isObject = require('./isObject'),\n isSet = require('./isSet'),\n keys = require('./keys'),\n keysIn = require('./keysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar 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 identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\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 */\nfunction 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\nmodule.exports = baseClone;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\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 */\nvar 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\nmodule.exports = baseCreate;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\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 */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\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 */\nfunction 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\nmodule.exports = baseGetTag;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\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 */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\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 */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\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 */\nfunction 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\nmodule.exports = baseIsNative;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\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 */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar 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 identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\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 */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\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 */\nfunction 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\nmodule.exports = baseKeys;\n","var isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\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 */\nfunction 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\nmodule.exports = baseKeysIn;\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 */\nfunction 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\nmodule.exports = baseTimes;\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 */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var Uint8Array = require('./_Uint8Array');\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 */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\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 */\nfunction 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\nmodule.exports = cloneBuffer;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\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 */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\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 */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nmodule.exports = cloneRegExp;\n","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\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 */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\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 */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\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 */\nfunction 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\nmodule.exports = copyArray;\n","var assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\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 */\nfunction 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\nmodule.exports = copyObject;\n","var copyObject = require('./_copyObject'),\n getSymbols = require('./_getSymbols');\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 */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n","var copyObject = require('./_copyObject'),\n getSymbolsIn = require('./_getSymbolsIn');\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 */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\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 */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbolsIn = require('./_getSymbolsIn'),\n keysIn = require('./keysIn');\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 */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n","var isKeyable = require('./_isKeyable');\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 */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\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 */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\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 */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\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 */\nfunction 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\nmodule.exports = getRawTag;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\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 */\nvar 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\nmodule.exports = getSymbols;\n","var arrayPush = require('./_arrayPush'),\n getPrototype = require('./_getPrototype'),\n getSymbols = require('./_getSymbols'),\n stubArray = require('./stubArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\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 */\nvar 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\nmodule.exports = getSymbolsIn;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\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 */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((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\nmodule.exports = getTag;\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 */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\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 */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\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 */\nfunction 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\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\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 */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\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 */\nfunction 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\nmodule.exports = hashSet;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\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 */\nfunction 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\nmodule.exports = initCloneArray;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n cloneDataView = require('./_cloneDataView'),\n cloneRegExp = require('./_cloneRegExp'),\n cloneSymbol = require('./_cloneSymbol'),\n cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar 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/**\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 */\nfunction 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\nmodule.exports = initCloneByTag;\n","var baseCreate = require('./_baseCreate'),\n getPrototype = require('./_getPrototype'),\n isPrototype = require('./_isPrototype');\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 */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\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 */\nfunction 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\nmodule.exports = isIndex;\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 */\nfunction 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\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\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 */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\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 */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\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 */\nfunction 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\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\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 */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\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 */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\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 */\nfunction 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\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\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 */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\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 */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\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 */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\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 */\nfunction 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\nmodule.exports = mapCacheSet;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\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 */\nfunction 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\nmodule.exports = nativeKeysIn;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar 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\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\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 */\nvar nativeObjectToString = objectProto.toString;\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 */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\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 */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\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 */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\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 */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\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 */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\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 */\nfunction 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\nmodule.exports = stackSet;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\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 */\nfunction 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\nmodule.exports = toSource;\n","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\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 */\nfunction cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = cloneDeep;\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 */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\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 */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\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 */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\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 */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\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 */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\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 */\nfunction 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\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\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 */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var baseIsMap = require('./_baseIsMap'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\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 */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\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 */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\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 */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseIsSet = require('./_baseIsSet'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\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 */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\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 */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\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 */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\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 */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","import { Subject } from './Subject';\nexport class BehaviorSubject extends Subject {\n constructor(_value) {\n super();\n this._value = _value;\n }\n get value() {\n return this.getValue();\n }\n _subscribe(subscriber) {\n const subscription = super._subscribe(subscriber);\n !subscription.closed && subscriber.next(this._value);\n return subscription;\n }\n getValue() {\n const { hasError, thrownError, _value } = this;\n if (hasError) {\n throw thrownError;\n }\n this._throwIfClosed();\n return _value;\n }\n next(value) {\n super.next((this._value = value));\n }\n}\n","import { SafeSubscriber, Subscriber } from './Subscriber';\nimport { isSubscription } from './Subscription';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nimport { isFunction } from './util/isFunction';\nimport { errorContext } from './util/errorContext';\nexport class Observable {\n constructor(subscribe) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n lift(operator) {\n const observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n }\n subscribe(observerOrNext, error, complete) {\n const subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);\n errorContext(() => {\n const { operator, source } = this;\n subscriber.add(operator\n ?\n operator.call(subscriber, source)\n : source\n ?\n this._subscribe(subscriber)\n :\n this._trySubscribe(subscriber));\n });\n return subscriber;\n }\n _trySubscribe(sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n sink.error(err);\n }\n }\n forEach(next, promiseCtor) {\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor((resolve, reject) => {\n const subscriber = new SafeSubscriber({\n next: (value) => {\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n subscriber.unsubscribe();\n }\n },\n error: reject,\n complete: resolve,\n });\n this.subscribe(subscriber);\n });\n }\n _subscribe(subscriber) {\n var _a;\n return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber);\n }\n [Symbol_observable]() {\n return this;\n }\n pipe(...operations) {\n return pipeFromArray(operations)(this);\n }\n toPromise(promiseCtor) {\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor((resolve, reject) => {\n let value;\n this.subscribe((x) => (value = x), (err) => reject(err), () => resolve(value));\n });\n }\n}\nObservable.create = (subscribe) => {\n return new Observable(subscribe);\n};\nfunction getPromiseCtor(promiseCtor) {\n var _a;\n return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a !== void 0 ? _a : Promise;\n}\nfunction isObserver(value) {\n return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);\n}\nfunction isSubscriber(value) {\n return (value && value instanceof Subscriber) || (isObserver(value) && isSubscription(value));\n}\n","import { Subject } from './Subject';\nimport { dateTimestampProvider } from './scheduler/dateTimestampProvider';\nexport class ReplaySubject extends Subject {\n constructor(_bufferSize = Infinity, _windowTime = Infinity, _timestampProvider = dateTimestampProvider) {\n super();\n this._bufferSize = _bufferSize;\n this._windowTime = _windowTime;\n this._timestampProvider = _timestampProvider;\n this._buffer = [];\n this._infiniteTimeWindow = true;\n this._infiniteTimeWindow = _windowTime === Infinity;\n this._bufferSize = Math.max(1, _bufferSize);\n this._windowTime = Math.max(1, _windowTime);\n }\n next(value) {\n const { isStopped, _buffer, _infiniteTimeWindow, _timestampProvider, _windowTime } = this;\n if (!isStopped) {\n _buffer.push(value);\n !_infiniteTimeWindow && _buffer.push(_timestampProvider.now() + _windowTime);\n }\n this._trimBuffer();\n super.next(value);\n }\n _subscribe(subscriber) {\n this._throwIfClosed();\n this._trimBuffer();\n const subscription = this._innerSubscribe(subscriber);\n const { _infiniteTimeWindow, _buffer } = this;\n const copy = _buffer.slice();\n for (let i = 0; i < copy.length && !subscriber.closed; i += _infiniteTimeWindow ? 1 : 2) {\n subscriber.next(copy[i]);\n }\n this._checkFinalizedStatuses(subscriber);\n return subscription;\n }\n _trimBuffer() {\n const { _bufferSize, _timestampProvider, _buffer, _infiniteTimeWindow } = this;\n const adjustedBufferSize = (_infiniteTimeWindow ? 1 : 2) * _bufferSize;\n _bufferSize < Infinity && adjustedBufferSize < _buffer.length && _buffer.splice(0, _buffer.length - adjustedBufferSize);\n if (!_infiniteTimeWindow) {\n const now = _timestampProvider.now();\n let last = 0;\n for (let i = 1; i < _buffer.length && _buffer[i] <= now; i += 2) {\n last = i;\n }\n last && _buffer.splice(0, last + 1);\n }\n }\n}\n","import { createErrorClass } from './createErrorClass';\nexport const ObjectUnsubscribedError = createErrorClass((_super) => function ObjectUnsubscribedErrorImpl() {\n _super(this);\n this.name = 'ObjectUnsubscribedError';\n this.message = 'object unsubscribed';\n});\n","import { Observable } from './Observable';\nimport { Subscription, EMPTY_SUBSCRIPTION } from './Subscription';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { arrRemove } from './util/arrRemove';\nimport { errorContext } from './util/errorContext';\nexport class Subject extends Observable {\n constructor() {\n super();\n this.closed = false;\n this.currentObservers = null;\n this.observers = [];\n this.isStopped = false;\n this.hasError = false;\n this.thrownError = null;\n }\n lift(operator) {\n const subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n }\n _throwIfClosed() {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n }\n next(value) {\n errorContext(() => {\n this._throwIfClosed();\n if (!this.isStopped) {\n if (!this.currentObservers) {\n this.currentObservers = Array.from(this.observers);\n }\n for (const observer of this.currentObservers) {\n observer.next(value);\n }\n }\n });\n }\n error(err) {\n errorContext(() => {\n this._throwIfClosed();\n if (!this.isStopped) {\n this.hasError = this.isStopped = true;\n this.thrownError = err;\n const { observers } = this;\n while (observers.length) {\n observers.shift().error(err);\n }\n }\n });\n }\n complete() {\n errorContext(() => {\n this._throwIfClosed();\n if (!this.isStopped) {\n this.isStopped = true;\n const { observers } = this;\n while (observers.length) {\n observers.shift().complete();\n }\n }\n });\n }\n unsubscribe() {\n this.isStopped = this.closed = true;\n this.observers = this.currentObservers = null;\n }\n get observed() {\n var _a;\n return ((_a = this.observers) === null || _a === void 0 ? void 0 : _a.length) > 0;\n }\n _trySubscribe(subscriber) {\n this._throwIfClosed();\n return super._trySubscribe(subscriber);\n }\n _subscribe(subscriber) {\n this._throwIfClosed();\n this._checkFinalizedStatuses(subscriber);\n return this._innerSubscribe(subscriber);\n }\n _innerSubscribe(subscriber) {\n const { hasError, isStopped, observers } = this;\n if (hasError || isStopped) {\n return EMPTY_SUBSCRIPTION;\n }\n this.currentObservers = null;\n observers.push(subscriber);\n return new Subscription(() => {\n this.currentObservers = null;\n arrRemove(observers, subscriber);\n });\n }\n _checkFinalizedStatuses(subscriber) {\n const { hasError, thrownError, isStopped } = this;\n if (hasError) {\n subscriber.error(thrownError);\n }\n else if (isStopped) {\n subscriber.complete();\n }\n }\n asObservable() {\n const observable = new Observable();\n observable.source = this;\n return observable;\n }\n}\nSubject.create = (destination, source) => {\n return new AnonymousSubject(destination, source);\n};\nexport class AnonymousSubject extends Subject {\n constructor(destination, source) {\n super();\n this.destination = destination;\n this.source = source;\n }\n next(value) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.next) === null || _b === void 0 ? void 0 : _b.call(_a, value);\n }\n error(err) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.call(_a, err);\n }\n complete() {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.complete) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n _subscribe(subscriber) {\n var _a, _b;\n return (_b = (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber)) !== null && _b !== void 0 ? _b : EMPTY_SUBSCRIPTION;\n }\n}\n","export const COMPLETE_NOTIFICATION = (() => createNotification('C', undefined, undefined))();\nexport function errorNotification(error) {\n return createNotification('E', undefined, error);\n}\nexport function nextNotification(value) {\n return createNotification('N', value, undefined);\n}\nexport function createNotification(kind, value, error) {\n return {\n kind,\n value,\n error,\n };\n}\n","import { isFunction } from './util/isFunction';\nimport { isSubscription, Subscription } from './Subscription';\nimport { config } from './config';\nimport { reportUnhandledError } from './util/reportUnhandledError';\nimport { noop } from './util/noop';\nimport { nextNotification, errorNotification, COMPLETE_NOTIFICATION } from './NotificationFactories';\nimport { timeoutProvider } from './scheduler/timeoutProvider';\nimport { captureError } from './util/errorContext';\nexport class Subscriber extends Subscription {\n constructor(destination) {\n super();\n this.isStopped = false;\n if (destination) {\n this.destination = destination;\n if (isSubscription(destination)) {\n destination.add(this);\n }\n }\n else {\n this.destination = EMPTY_OBSERVER;\n }\n }\n static create(next, error, complete) {\n return new SafeSubscriber(next, error, complete);\n }\n next(value) {\n if (this.isStopped) {\n handleStoppedNotification(nextNotification(value), this);\n }\n else {\n this._next(value);\n }\n }\n error(err) {\n if (this.isStopped) {\n handleStoppedNotification(errorNotification(err), this);\n }\n else {\n this.isStopped = true;\n this._error(err);\n }\n }\n complete() {\n if (this.isStopped) {\n handleStoppedNotification(COMPLETE_NOTIFICATION, this);\n }\n else {\n this.isStopped = true;\n this._complete();\n }\n }\n unsubscribe() {\n if (!this.closed) {\n this.isStopped = true;\n super.unsubscribe();\n this.destination = null;\n }\n }\n _next(value) {\n this.destination.next(value);\n }\n _error(err) {\n try {\n this.destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n _complete() {\n try {\n this.destination.complete();\n }\n finally {\n this.unsubscribe();\n }\n }\n}\nconst _bind = Function.prototype.bind;\nfunction bind(fn, thisArg) {\n return _bind.call(fn, thisArg);\n}\nclass ConsumerObserver {\n constructor(partialObserver) {\n this.partialObserver = partialObserver;\n }\n next(value) {\n const { partialObserver } = this;\n if (partialObserver.next) {\n try {\n partialObserver.next(value);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n }\n error(err) {\n const { partialObserver } = this;\n if (partialObserver.error) {\n try {\n partialObserver.error(err);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n else {\n handleUnhandledError(err);\n }\n }\n complete() {\n const { partialObserver } = this;\n if (partialObserver.complete) {\n try {\n partialObserver.complete();\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n }\n}\nexport class SafeSubscriber extends Subscriber {\n constructor(observerOrNext, error, complete) {\n super();\n let partialObserver;\n if (isFunction(observerOrNext) || !observerOrNext) {\n partialObserver = {\n next: (observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : undefined),\n error: error !== null && error !== void 0 ? error : undefined,\n complete: complete !== null && complete !== void 0 ? complete : undefined,\n };\n }\n else {\n let context;\n if (this && config.useDeprecatedNextContext) {\n context = Object.create(observerOrNext);\n context.unsubscribe = () => this.unsubscribe();\n partialObserver = {\n next: observerOrNext.next && bind(observerOrNext.next, context),\n error: observerOrNext.error && bind(observerOrNext.error, context),\n complete: observerOrNext.complete && bind(observerOrNext.complete, context),\n };\n }\n else {\n partialObserver = observerOrNext;\n }\n }\n this.destination = new ConsumerObserver(partialObserver);\n }\n}\nfunction handleUnhandledError(error) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n captureError(error);\n }\n else {\n reportUnhandledError(error);\n }\n}\nfunction defaultErrorHandler(err) {\n throw err;\n}\nfunction handleStoppedNotification(notification, subscriber) {\n const { onStoppedNotification } = config;\n onStoppedNotification && timeoutProvider.setTimeout(() => onStoppedNotification(notification, subscriber));\n}\nexport const EMPTY_OBSERVER = {\n closed: true,\n next: noop,\n error: defaultErrorHandler,\n complete: noop,\n};\n","import { createErrorClass } from './createErrorClass';\nexport const UnsubscriptionError = createErrorClass((_super) => function UnsubscriptionErrorImpl(errors) {\n _super(this);\n this.message = errors\n ? `${errors.length} errors occurred during unsubscription:\n${errors.map((err, i) => `${i + 1}) ${err.toString()}`).join('\\n ')}`\n : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n});\n","import { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { arrRemove } from './util/arrRemove';\nexport class Subscription {\n constructor(initialTeardown) {\n this.initialTeardown = initialTeardown;\n this.closed = false;\n this._parentage = null;\n this._finalizers = null;\n }\n unsubscribe() {\n let errors;\n if (!this.closed) {\n this.closed = true;\n const { _parentage } = this;\n if (_parentage) {\n this._parentage = null;\n if (Array.isArray(_parentage)) {\n for (const parent of _parentage) {\n parent.remove(this);\n }\n }\n else {\n _parentage.remove(this);\n }\n }\n const { initialTeardown: initialFinalizer } = this;\n if (isFunction(initialFinalizer)) {\n try {\n initialFinalizer();\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError ? e.errors : [e];\n }\n }\n const { _finalizers } = this;\n if (_finalizers) {\n this._finalizers = null;\n for (const finalizer of _finalizers) {\n try {\n execFinalizer(finalizer);\n }\n catch (err) {\n errors = errors !== null && errors !== void 0 ? errors : [];\n if (err instanceof UnsubscriptionError) {\n errors = [...errors, ...err.errors];\n }\n else {\n errors.push(err);\n }\n }\n }\n }\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n }\n add(teardown) {\n var _a;\n if (teardown && teardown !== this) {\n if (this.closed) {\n execFinalizer(teardown);\n }\n else {\n if (teardown instanceof Subscription) {\n if (teardown.closed || teardown._hasParent(this)) {\n return;\n }\n teardown._addParent(this);\n }\n (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown);\n }\n }\n }\n _hasParent(parent) {\n const { _parentage } = this;\n return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));\n }\n _addParent(parent) {\n const { _parentage } = this;\n this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n }\n _removeParent(parent) {\n const { _parentage } = this;\n if (_parentage === parent) {\n this._parentage = null;\n }\n else if (Array.isArray(_parentage)) {\n arrRemove(_parentage, parent);\n }\n }\n remove(teardown) {\n const { _finalizers } = this;\n _finalizers && arrRemove(_finalizers, teardown);\n if (teardown instanceof Subscription) {\n teardown._removeParent(this);\n }\n }\n}\nSubscription.EMPTY = (() => {\n const empty = new Subscription();\n empty.closed = true;\n return empty;\n})();\nexport const EMPTY_SUBSCRIPTION = Subscription.EMPTY;\nexport function isSubscription(value) {\n return (value instanceof Subscription ||\n (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe)));\n}\nfunction execFinalizer(finalizer) {\n if (isFunction(finalizer)) {\n finalizer();\n }\n else {\n finalizer.unsubscribe();\n }\n}\n","export const config = {\n onUnhandledError: null,\n onStoppedNotification: null,\n Promise: undefined,\n useDeprecatedSynchronousErrorHandling: false,\n useDeprecatedNextContext: false,\n};\n","import { Observable } from '../Observable';\nimport { argsArgArrayOrObject } from '../util/argsArgArrayOrObject';\nimport { from } from './from';\nimport { identity } from '../util/identity';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nimport { popResultSelector, popScheduler } from '../util/args';\nimport { createObject } from '../util/createObject';\nimport { createOperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function combineLatest(...args) {\n const scheduler = popScheduler(args);\n const resultSelector = popResultSelector(args);\n const { args: observables, keys } = argsArgArrayOrObject(args);\n if (observables.length === 0) {\n return from([], scheduler);\n }\n const result = new Observable(combineLatestInit(observables, scheduler, keys\n ?\n (values) => createObject(keys, values)\n :\n identity));\n return resultSelector ? result.pipe(mapOneOrManyArgs(resultSelector)) : result;\n}\nexport function combineLatestInit(observables, scheduler, valueTransform = identity) {\n return (subscriber) => {\n maybeSchedule(scheduler, () => {\n const { length } = observables;\n const values = new Array(length);\n let active = length;\n let remainingFirstValues = length;\n for (let i = 0; i < length; i++) {\n maybeSchedule(scheduler, () => {\n const source = from(observables[i], scheduler);\n let hasFirstValue = false;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n values[i] = value;\n if (!hasFirstValue) {\n hasFirstValue = true;\n remainingFirstValues--;\n }\n if (!remainingFirstValues) {\n subscriber.next(valueTransform(values.slice()));\n }\n }, () => {\n if (!--active) {\n subscriber.complete();\n }\n }));\n }, subscriber);\n }\n }, subscriber);\n };\n}\nfunction maybeSchedule(scheduler, execute, subscription) {\n if (scheduler) {\n executeSchedule(subscription, scheduler, execute);\n }\n else {\n execute();\n }\n}\n","import { concatAll } from '../operators/concatAll';\nimport { popScheduler } from '../util/args';\nimport { from } from './from';\nexport function concat(...args) {\n return concatAll()(from(args, popScheduler(args)));\n}\n","import { mergeAll } from './mergeAll';\nexport function concatAll() {\n return mergeAll(1);\n}\n","import { Observable } from '../Observable';\nexport const EMPTY = new Observable((subscriber) => subscriber.complete());\nexport function empty(scheduler) {\n return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\nfunction emptyScheduled(scheduler) {\n return new Observable((subscriber) => scheduler.schedule(() => subscriber.complete()));\n}\n","import { Observable } from '../Observable';\nimport { argsArgArrayOrObject } from '../util/argsArgArrayOrObject';\nimport { innerFrom } from './innerFrom';\nimport { popResultSelector } from '../util/args';\nimport { createOperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nimport { createObject } from '../util/createObject';\nexport function forkJoin(...args) {\n const resultSelector = popResultSelector(args);\n const { args: sources, keys } = argsArgArrayOrObject(args);\n const result = new Observable((subscriber) => {\n const { length } = sources;\n if (!length) {\n subscriber.complete();\n return;\n }\n const values = new Array(length);\n let remainingCompletions = length;\n let remainingEmissions = length;\n for (let sourceIndex = 0; sourceIndex < length; sourceIndex++) {\n let hasValue = false;\n innerFrom(sources[sourceIndex]).subscribe(createOperatorSubscriber(subscriber, (value) => {\n if (!hasValue) {\n hasValue = true;\n remainingEmissions--;\n }\n values[sourceIndex] = value;\n }, () => remainingCompletions--, undefined, () => {\n if (!remainingCompletions || !hasValue) {\n if (!remainingEmissions) {\n subscriber.next(keys ? createObject(keys, values) : values);\n }\n subscriber.complete();\n }\n }));\n }\n });\n return resultSelector ? result.pipe(mapOneOrManyArgs(resultSelector)) : result;\n}\n","import { operate } from '../util/lift';\nexport function subscribeOn(scheduler, delay = 0) {\n return operate((source, subscriber) => {\n subscriber.add(scheduler.schedule(() => source.subscribe(subscriber), delay));\n });\n}\n","import { Observable } from '../Observable';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function scheduleAsyncIterable(input, scheduler) {\n if (!input) {\n throw new Error('Iterable cannot be null');\n }\n return new Observable((subscriber) => {\n executeSchedule(subscriber, scheduler, () => {\n const iterator = input[Symbol.asyncIterator]();\n executeSchedule(subscriber, scheduler, () => {\n iterator.next().then((result) => {\n if (result.done) {\n subscriber.complete();\n }\n else {\n subscriber.next(result.value);\n }\n });\n }, 0, true);\n });\n });\n}\n","import { scheduled } from '../scheduled/scheduled';\nimport { innerFrom } from './innerFrom';\nexport function from(input, scheduler) {\n return scheduler ? scheduled(input, scheduler) : innerFrom(input);\n}\n","import { scheduleObservable } from './scheduleObservable';\nimport { schedulePromise } from './schedulePromise';\nimport { scheduleArray } from './scheduleArray';\nimport { scheduleIterable } from './scheduleIterable';\nimport { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isPromise } from '../util/isPromise';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isIterable } from '../util/isIterable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isReadableStreamLike } from '../util/isReadableStreamLike';\nimport { scheduleReadableStreamLike } from './scheduleReadableStreamLike';\nexport function scheduled(input, scheduler) {\n if (input != null) {\n if (isInteropObservable(input)) {\n return scheduleObservable(input, scheduler);\n }\n if (isArrayLike(input)) {\n return scheduleArray(input, scheduler);\n }\n if (isPromise(input)) {\n return schedulePromise(input, scheduler);\n }\n if (isAsyncIterable(input)) {\n return scheduleAsyncIterable(input, scheduler);\n }\n if (isIterable(input)) {\n return scheduleIterable(input, scheduler);\n }\n if (isReadableStreamLike(input)) {\n return scheduleReadableStreamLike(input, scheduler);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\n","import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nexport function scheduleObservable(input, scheduler) {\n return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n","import { Observable } from '../Observable';\nexport function scheduleArray(input, scheduler) {\n return new Observable((subscriber) => {\n let i = 0;\n return scheduler.schedule(function () {\n if (i === input.length) {\n subscriber.complete();\n }\n else {\n subscriber.next(input[i++]);\n if (!subscriber.closed) {\n this.schedule();\n }\n }\n });\n });\n}\n","import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nexport function schedulePromise(input, scheduler) {\n return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n","import { Observable } from '../Observable';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from '../util/isFunction';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function scheduleIterable(input, scheduler) {\n return new Observable((subscriber) => {\n let iterator;\n executeSchedule(subscriber, scheduler, () => {\n iterator = input[Symbol_iterator]();\n executeSchedule(subscriber, scheduler, () => {\n let value;\n let done;\n try {\n ({ value, done } = iterator.next());\n }\n catch (err) {\n subscriber.error(err);\n return;\n }\n if (done) {\n subscriber.complete();\n }\n else {\n subscriber.next(value);\n }\n }, 0, true);\n });\n return () => isFunction(iterator === null || iterator === void 0 ? void 0 : iterator.return) && iterator.return();\n });\n}\n","import { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nexport function scheduleReadableStreamLike(input, scheduler) {\n return scheduleAsyncIterable(readableStreamLikeToAsyncGenerator(input), scheduler);\n}\n","import { innerFrom } from '../observable/innerFrom';\nimport { Observable } from '../Observable';\nimport { mergeMap } from '../operators/mergeMap';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isFunction } from '../util/isFunction';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nconst nodeEventEmitterMethods = ['addListener', 'removeListener'];\nconst eventTargetMethods = ['addEventListener', 'removeEventListener'];\nconst jqueryMethods = ['on', 'off'];\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(mapOneOrManyArgs(resultSelector));\n }\n const [add, remove] = isEventTarget(target)\n ? eventTargetMethods.map((methodName) => (handler) => target[methodName](eventName, handler, options))\n :\n isNodeStyleEventEmitter(target)\n ? nodeEventEmitterMethods.map(toCommonHandlerRegistry(target, eventName))\n : isJQueryStyleEventEmitter(target)\n ? jqueryMethods.map(toCommonHandlerRegistry(target, eventName))\n : [];\n if (!add) {\n if (isArrayLike(target)) {\n return mergeMap((subTarget) => fromEvent(subTarget, eventName, options))(innerFrom(target));\n }\n }\n if (!add) {\n throw new TypeError('Invalid event target');\n }\n return new Observable((subscriber) => {\n const handler = (...args) => subscriber.next(1 < args.length ? args : args[0]);\n add(handler);\n return () => remove(handler);\n });\n}\nfunction toCommonHandlerRegistry(target, eventName) {\n return (methodName) => (handler) => target[methodName](eventName, handler);\n}\nfunction isNodeStyleEventEmitter(target) {\n return isFunction(target.addListener) && isFunction(target.removeListener);\n}\nfunction isJQueryStyleEventEmitter(target) {\n return isFunction(target.on) && isFunction(target.off);\n}\nfunction isEventTarget(target) {\n return isFunction(target.addEventListener) && isFunction(target.removeEventListener);\n}\n","import { __asyncValues, __awaiter } from \"tslib\";\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isPromise } from '../util/isPromise';\nimport { Observable } from '../Observable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isIterable } from '../util/isIterable';\nimport { isReadableStreamLike, readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nimport { isFunction } from '../util/isFunction';\nimport { reportUnhandledError } from '../util/reportUnhandledError';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport function innerFrom(input) {\n if (input instanceof Observable) {\n return input;\n }\n if (input != null) {\n if (isInteropObservable(input)) {\n return fromInteropObservable(input);\n }\n if (isArrayLike(input)) {\n return fromArrayLike(input);\n }\n if (isPromise(input)) {\n return fromPromise(input);\n }\n if (isAsyncIterable(input)) {\n return fromAsyncIterable(input);\n }\n if (isIterable(input)) {\n return fromIterable(input);\n }\n if (isReadableStreamLike(input)) {\n return fromReadableStreamLike(input);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\nexport function fromInteropObservable(obj) {\n return new Observable((subscriber) => {\n const obs = obj[Symbol_observable]();\n if (isFunction(obs.subscribe)) {\n return obs.subscribe(subscriber);\n }\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n });\n}\nexport function fromArrayLike(array) {\n return new Observable((subscriber) => {\n for (let i = 0; i < array.length && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n });\n}\nexport function fromPromise(promise) {\n return new Observable((subscriber) => {\n promise\n .then((value) => {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, (err) => subscriber.error(err))\n .then(null, reportUnhandledError);\n });\n}\nexport function fromIterable(iterable) {\n return new Observable((subscriber) => {\n for (const value of iterable) {\n subscriber.next(value);\n if (subscriber.closed) {\n return;\n }\n }\n subscriber.complete();\n });\n}\nexport function fromAsyncIterable(asyncIterable) {\n return new Observable((subscriber) => {\n process(asyncIterable, subscriber).catch((err) => subscriber.error(err));\n });\n}\nexport function fromReadableStreamLike(readableStream) {\n return fromAsyncIterable(readableStreamLikeToAsyncGenerator(readableStream));\n}\nfunction process(asyncIterable, subscriber) {\n var asyncIterable_1, asyncIterable_1_1;\n var e_1, _a;\n return __awaiter(this, void 0, void 0, function* () {\n try {\n for (asyncIterable_1 = __asyncValues(asyncIterable); asyncIterable_1_1 = yield asyncIterable_1.next(), !asyncIterable_1_1.done;) {\n const value = asyncIterable_1_1.value;\n subscriber.next(value);\n if (subscriber.closed) {\n return;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (asyncIterable_1_1 && !asyncIterable_1_1.done && (_a = asyncIterable_1.return)) yield _a.call(asyncIterable_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n subscriber.complete();\n });\n}\n","import { mergeAll } from '../operators/mergeAll';\nimport { innerFrom } from './innerFrom';\nimport { EMPTY } from './empty';\nimport { popNumber, popScheduler } from '../util/args';\nimport { from } from './from';\nexport function merge(...args) {\n const scheduler = popScheduler(args);\n const concurrent = popNumber(args, Infinity);\n const sources = args;\n return !sources.length\n ?\n EMPTY\n : sources.length === 1\n ?\n innerFrom(sources[0])\n :\n mergeAll(concurrent)(from(sources, scheduler));\n}\n","import { popScheduler } from '../util/args';\nimport { from } from './from';\nexport function of(...args) {\n const scheduler = popScheduler(args);\n return from(args, scheduler);\n}\n","import { Observable } from '../Observable';\nimport { isFunction } from '../util/isFunction';\nexport function throwError(errorOrErrorFactory, scheduler) {\n const errorFactory = isFunction(errorOrErrorFactory) ? errorOrErrorFactory : () => errorOrErrorFactory;\n const init = (subscriber) => subscriber.error(errorFactory());\n return new Observable(scheduler ? (subscriber) => scheduler.schedule(init, 0, subscriber) : init);\n}\n","import { Observable } from '../Observable';\nimport { async as asyncScheduler } from '../scheduler/async';\nimport { isScheduler } from '../util/isScheduler';\nimport { isValidDate } from '../util/isDate';\nexport function timer(dueTime = 0, intervalOrScheduler, scheduler = asyncScheduler) {\n let intervalDuration = -1;\n if (intervalOrScheduler != null) {\n if (isScheduler(intervalOrScheduler)) {\n scheduler = intervalOrScheduler;\n }\n else {\n intervalDuration = intervalOrScheduler;\n }\n }\n return new Observable((subscriber) => {\n let due = isValidDate(dueTime) ? +dueTime - scheduler.now() : dueTime;\n if (due < 0) {\n due = 0;\n }\n let n = 0;\n return scheduler.schedule(function () {\n if (!subscriber.closed) {\n subscriber.next(n++);\n if (0 <= intervalDuration) {\n this.schedule(undefined, intervalDuration);\n }\n else {\n subscriber.complete();\n }\n }\n }, due);\n });\n}\n","import { Subscriber } from '../Subscriber';\nexport function createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) {\n return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);\n}\nexport class OperatorSubscriber extends Subscriber {\n constructor(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) {\n super(destination);\n this.onFinalize = onFinalize;\n this.shouldUnsubscribe = shouldUnsubscribe;\n this._next = onNext\n ? function (value) {\n try {\n onNext(value);\n }\n catch (err) {\n destination.error(err);\n }\n }\n : super._next;\n this._error = onError\n ? function (err) {\n try {\n onError(err);\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : super._error;\n this._complete = onComplete\n ? function () {\n try {\n onComplete();\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : super._complete;\n }\n unsubscribe() {\n var _a;\n if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {\n const { closed } = this;\n super.unsubscribe();\n !closed && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this));\n }\n }\n}\n","import { innerFrom } from '../observable/innerFrom';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { operate } from '../util/lift';\nexport function catchError(selector) {\n return operate((source, subscriber) => {\n let innerSub = null;\n let syncUnsub = false;\n let handledResult;\n innerSub = source.subscribe(createOperatorSubscriber(subscriber, undefined, undefined, (err) => {\n handledResult = innerFrom(selector(err, catchError(selector)(source)));\n if (innerSub) {\n innerSub.unsubscribe();\n innerSub = null;\n handledResult.subscribe(subscriber);\n }\n else {\n syncUnsub = true;\n }\n }));\n if (syncUnsub) {\n innerSub.unsubscribe();\n innerSub = null;\n handledResult.subscribe(subscriber);\n }\n });\n}\n","import { mergeMap } from './mergeMap';\nimport { isFunction } from '../util/isFunction';\nexport function concatMap(project, resultSelector) {\n return isFunction(resultSelector) ? mergeMap(project, resultSelector, 1) : mergeMap(project, 1);\n}\n","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function defaultIfEmpty(defaultValue) {\n return operate((source, subscriber) => {\n let hasValue = false;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n hasValue = true;\n subscriber.next(value);\n }, () => {\n if (!hasValue) {\n subscriber.next(defaultValue);\n }\n subscriber.complete();\n }));\n });\n}\n","import { concat } from '../observable/concat';\nimport { take } from './take';\nimport { ignoreElements } from './ignoreElements';\nimport { mapTo } from './mapTo';\nimport { mergeMap } from './mergeMap';\nimport { innerFrom } from '../observable/innerFrom';\nexport function delayWhen(delayDurationSelector, subscriptionDelay) {\n if (subscriptionDelay) {\n return (source) => concat(subscriptionDelay.pipe(take(1), ignoreElements()), source.pipe(delayWhen(delayDurationSelector)));\n }\n return mergeMap((value, index) => innerFrom(delayDurationSelector(value, index)).pipe(take(1), mapTo(value)));\n}\n","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { noop } from '../util/noop';\nexport function ignoreElements() {\n return operate((source, subscriber) => {\n source.subscribe(createOperatorSubscriber(subscriber, noop));\n });\n}\n","import { asyncScheduler } from '../scheduler/async';\nimport { delayWhen } from './delayWhen';\nimport { timer } from '../observable/timer';\nexport function delay(due, scheduler = asyncScheduler) {\n const duration = timer(due, scheduler);\n return delayWhen(() => duration);\n}\n","import { identity } from '../util/identity';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function distinctUntilChanged(comparator, keySelector = identity) {\n comparator = comparator !== null && comparator !== void 0 ? comparator : defaultCompare;\n return operate((source, subscriber) => {\n let previousKey;\n let first = true;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n const currentKey = keySelector(value);\n if (first || !comparator(previousKey, currentKey)) {\n first = false;\n previousKey = currentKey;\n subscriber.next(value);\n }\n }));\n });\n}\nfunction defaultCompare(a, b) {\n return a === b;\n}\n","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function filter(predicate, thisArg) {\n return operate((source, subscriber) => {\n let index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => predicate.call(thisArg, value, index++) && subscriber.next(value)));\n });\n}\n","import { operate } from '../util/lift';\nexport function finalize(callback) {\n return operate((source, subscriber) => {\n try {\n source.subscribe(subscriber);\n }\n finally {\n subscriber.add(callback);\n }\n });\n}\n","import { EmptyError } from '../util/EmptyError';\nimport { filter } from './filter';\nimport { take } from './take';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { identity } from '../util/identity';\nexport function first(predicate, defaultValue) {\n const hasDefaultValue = arguments.length >= 2;\n return (source) => source.pipe(predicate ? filter((v, i) => predicate(v, i, source)) : identity, take(1), hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(() => new EmptyError()));\n}\n","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function map(project, thisArg) {\n return operate((source, subscriber) => {\n let index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n subscriber.next(project.call(thisArg, value, index++));\n }));\n });\n}\n","import { map } from './map';\nexport function mapTo(value) {\n return map(() => value);\n}\n","import { mergeMap } from './mergeMap';\nimport { identity } from '../util/identity';\nexport function mergeAll(concurrent = Infinity) {\n return mergeMap(identity, concurrent);\n}\n","import { map } from './map';\nimport { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { mergeInternals } from './mergeInternals';\nimport { isFunction } from '../util/isFunction';\nexport function mergeMap(project, resultSelector, concurrent = Infinity) {\n if (isFunction(resultSelector)) {\n return mergeMap((a, i) => map((b, ii) => resultSelector(a, b, i, ii))(innerFrom(project(a, i))), concurrent);\n }\n else if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return operate((source, subscriber) => mergeInternals(source, subscriber, project, concurrent));\n}\n","import { innerFrom } from '../observable/innerFrom';\nimport { executeSchedule } from '../util/executeSchedule';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function mergeInternals(source, subscriber, project, concurrent, onBeforeNext, expand, innerSubScheduler, additionalFinalizer) {\n const buffer = [];\n let active = 0;\n let index = 0;\n let isComplete = false;\n const checkComplete = () => {\n if (isComplete && !buffer.length && !active) {\n subscriber.complete();\n }\n };\n const outerNext = (value) => (active < concurrent ? doInnerSub(value) : buffer.push(value));\n const doInnerSub = (value) => {\n expand && subscriber.next(value);\n active++;\n let innerComplete = false;\n innerFrom(project(value, index++)).subscribe(createOperatorSubscriber(subscriber, (innerValue) => {\n onBeforeNext === null || onBeforeNext === void 0 ? void 0 : onBeforeNext(innerValue);\n if (expand) {\n outerNext(innerValue);\n }\n else {\n subscriber.next(innerValue);\n }\n }, () => {\n innerComplete = true;\n }, undefined, () => {\n if (innerComplete) {\n try {\n active--;\n while (buffer.length && active < concurrent) {\n const bufferedValue = buffer.shift();\n if (innerSubScheduler) {\n executeSchedule(subscriber, innerSubScheduler, () => doInnerSub(bufferedValue));\n }\n else {\n doInnerSub(bufferedValue);\n }\n }\n checkComplete();\n }\n catch (err) {\n subscriber.error(err);\n }\n }\n }));\n };\n source.subscribe(createOperatorSubscriber(subscriber, outerNext, () => {\n isComplete = true;\n checkComplete();\n }));\n return () => {\n additionalFinalizer === null || additionalFinalizer === void 0 ? void 0 : additionalFinalizer();\n };\n}\n","import { executeSchedule } from '../util/executeSchedule';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function observeOn(scheduler, delay = 0) {\n return operate((source, subscriber) => {\n source.subscribe(createOperatorSubscriber(subscriber, (value) => executeSchedule(subscriber, scheduler, () => subscriber.next(value), delay), () => executeSchedule(subscriber, scheduler, () => subscriber.complete(), delay), (err) => executeSchedule(subscriber, scheduler, () => subscriber.error(err), delay)));\n });\n}\n","import { operate } from '../util/lift';\nimport { scanInternals } from './scanInternals';\nexport function scan(accumulator, seed) {\n return operate(scanInternals(accumulator, seed, arguments.length >= 2, true));\n}\n","import { createOperatorSubscriber } from './OperatorSubscriber';\nexport function scanInternals(accumulator, seed, hasSeed, emitOnNext, emitBeforeComplete) {\n return (source, subscriber) => {\n let hasState = hasSeed;\n let state = seed;\n let index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n const i = index++;\n state = hasState\n ?\n accumulator(state, value, i)\n :\n ((hasState = true), value);\n emitOnNext && subscriber.next(state);\n }, emitBeforeComplete &&\n (() => {\n hasState && subscriber.next(state);\n subscriber.complete();\n })));\n };\n}\n","import { innerFrom } from '../observable/innerFrom';\nimport { Subject } from '../Subject';\nimport { SafeSubscriber } from '../Subscriber';\nimport { operate } from '../util/lift';\nexport function share(options = {}) {\n const { connector = () => new Subject(), resetOnError = true, resetOnComplete = true, resetOnRefCountZero = true } = options;\n return (wrapperSource) => {\n let connection;\n let resetConnection;\n let subject;\n let refCount = 0;\n let hasCompleted = false;\n let hasErrored = false;\n const cancelReset = () => {\n resetConnection === null || resetConnection === void 0 ? void 0 : resetConnection.unsubscribe();\n resetConnection = undefined;\n };\n const reset = () => {\n cancelReset();\n connection = subject = undefined;\n hasCompleted = hasErrored = false;\n };\n const resetAndUnsubscribe = () => {\n const conn = connection;\n reset();\n conn === null || conn === void 0 ? void 0 : conn.unsubscribe();\n };\n return operate((source, subscriber) => {\n refCount++;\n if (!hasErrored && !hasCompleted) {\n cancelReset();\n }\n const dest = (subject = subject !== null && subject !== void 0 ? subject : connector());\n subscriber.add(() => {\n refCount--;\n if (refCount === 0 && !hasErrored && !hasCompleted) {\n resetConnection = handleReset(resetAndUnsubscribe, resetOnRefCountZero);\n }\n });\n dest.subscribe(subscriber);\n if (!connection &&\n refCount > 0) {\n connection = new SafeSubscriber({\n next: (value) => dest.next(value),\n error: (err) => {\n hasErrored = true;\n cancelReset();\n resetConnection = handleReset(reset, resetOnError, err);\n dest.error(err);\n },\n complete: () => {\n hasCompleted = true;\n cancelReset();\n resetConnection = handleReset(reset, resetOnComplete);\n dest.complete();\n },\n });\n innerFrom(source).subscribe(connection);\n }\n })(wrapperSource);\n };\n}\nfunction handleReset(reset, on, ...args) {\n if (on === true) {\n reset();\n return;\n }\n if (on === false) {\n return;\n }\n const onSubscriber = new SafeSubscriber({\n next: () => {\n onSubscriber.unsubscribe();\n reset();\n },\n });\n return innerFrom(on(...args)).subscribe(onSubscriber);\n}\n","import { ReplaySubject } from '../ReplaySubject';\nimport { share } from './share';\nexport function shareReplay(configOrBufferSize, windowTime, scheduler) {\n let bufferSize;\n let refCount = false;\n if (configOrBufferSize && typeof configOrBufferSize === 'object') {\n ({ bufferSize = Infinity, windowTime = Infinity, refCount = false, scheduler } = configOrBufferSize);\n }\n else {\n bufferSize = (configOrBufferSize !== null && configOrBufferSize !== void 0 ? configOrBufferSize : Infinity);\n }\n return share({\n connector: () => new ReplaySubject(bufferSize, windowTime, scheduler),\n resetOnError: true,\n resetOnComplete: false,\n resetOnRefCountZero: refCount,\n });\n}\n","import { filter } from './filter';\nexport function skip(count) {\n return filter((_, index) => count <= index);\n}\n","import { concat } from '../observable/concat';\nimport { popScheduler } from '../util/args';\nimport { operate } from '../util/lift';\nexport function startWith(...values) {\n const scheduler = popScheduler(values);\n return operate((source, subscriber) => {\n (scheduler ? concat(values, source, scheduler) : concat(values, source)).subscribe(subscriber);\n });\n}\n","import { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function switchMap(project, resultSelector) {\n return operate((source, subscriber) => {\n let innerSubscriber = null;\n let index = 0;\n let isComplete = false;\n const checkComplete = () => isComplete && !innerSubscriber && subscriber.complete();\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n innerSubscriber === null || innerSubscriber === void 0 ? void 0 : innerSubscriber.unsubscribe();\n let innerIndex = 0;\n const outerIndex = index++;\n innerFrom(project(value, outerIndex)).subscribe((innerSubscriber = createOperatorSubscriber(subscriber, (innerValue) => subscriber.next(resultSelector ? resultSelector(value, innerValue, outerIndex, innerIndex++) : innerValue), () => {\n innerSubscriber = null;\n checkComplete();\n })));\n }, () => {\n isComplete = true;\n checkComplete();\n }));\n });\n}\n","import { EMPTY } from '../observable/empty';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function take(count) {\n return count <= 0\n ?\n () => EMPTY\n : operate((source, subscriber) => {\n let seen = 0;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n if (++seen <= count) {\n subscriber.next(value);\n if (count <= seen) {\n subscriber.complete();\n }\n }\n }));\n });\n}\n","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nimport { noop } from '../util/noop';\nexport function takeUntil(notifier) {\n return operate((source, subscriber) => {\n innerFrom(notifier).subscribe(createOperatorSubscriber(subscriber, () => subscriber.complete(), noop));\n !subscriber.closed && source.subscribe(subscriber);\n });\n}\n","import { isFunction } from '../util/isFunction';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { identity } from '../util/identity';\nexport function tap(observerOrNext, error, complete) {\n const tapObserver = isFunction(observerOrNext) || error || complete\n ?\n { next: observerOrNext, error, complete }\n : observerOrNext;\n return tapObserver\n ? operate((source, subscriber) => {\n var _a;\n (_a = tapObserver.subscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n let isUnsub = true;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n var _a;\n (_a = tapObserver.next) === null || _a === void 0 ? void 0 : _a.call(tapObserver, value);\n subscriber.next(value);\n }, () => {\n var _a;\n isUnsub = false;\n (_a = tapObserver.complete) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n subscriber.complete();\n }, (err) => {\n var _a;\n isUnsub = false;\n (_a = tapObserver.error) === null || _a === void 0 ? void 0 : _a.call(tapObserver, err);\n subscriber.error(err);\n }, () => {\n var _a, _b;\n if (isUnsub) {\n (_a = tapObserver.unsubscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n }\n (_b = tapObserver.finalize) === null || _b === void 0 ? void 0 : _b.call(tapObserver);\n }));\n })\n :\n identity;\n}\n","import { EmptyError } from '../util/EmptyError';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function throwIfEmpty(errorFactory = defaultErrorFactory) {\n return operate((source, subscriber) => {\n let hasValue = false;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n hasValue = true;\n subscriber.next(value);\n }, () => (hasValue ? subscriber.complete() : subscriber.error(errorFactory()))));\n });\n}\nfunction defaultErrorFactory() {\n return new EmptyError();\n}\n","import { Subscription } from '../Subscription';\nexport class Action extends Subscription {\n constructor(scheduler, work) {\n super();\n }\n schedule(state, delay = 0) {\n return this;\n }\n}\n","export const intervalProvider = {\n setInterval(handler, timeout, ...args) {\n const { delegate } = intervalProvider;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.setInterval) {\n return delegate.setInterval(handler, timeout, ...args);\n }\n return setInterval(handler, timeout, ...args);\n },\n clearInterval(handle) {\n const { delegate } = intervalProvider;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearInterval) || clearInterval)(handle);\n },\n delegate: undefined,\n};\n","import { Action } from './Action';\nimport { intervalProvider } from './intervalProvider';\nimport { arrRemove } from '../util/arrRemove';\nexport class AsyncAction extends Action {\n constructor(scheduler, work) {\n super(scheduler, work);\n this.scheduler = scheduler;\n this.work = work;\n this.pending = false;\n }\n schedule(state, delay = 0) {\n var _a;\n if (this.closed) {\n return this;\n }\n this.state = state;\n const id = this.id;\n const scheduler = this.scheduler;\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n this.pending = true;\n this.delay = delay;\n this.id = (_a = this.id) !== null && _a !== void 0 ? _a : this.requestAsyncId(scheduler, this.id, delay);\n return this;\n }\n requestAsyncId(scheduler, _id, delay = 0) {\n return intervalProvider.setInterval(scheduler.flush.bind(scheduler, this), delay);\n }\n recycleAsyncId(_scheduler, id, delay = 0) {\n if (delay != null && this.delay === delay && this.pending === false) {\n return id;\n }\n if (id != null) {\n intervalProvider.clearInterval(id);\n }\n return undefined;\n }\n execute(state, delay) {\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n this.pending = false;\n const error = this._execute(state, delay);\n if (error) {\n return error;\n }\n else if (this.pending === false && this.id != null) {\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n }\n _execute(state, _delay) {\n let errored = false;\n let errorValue;\n try {\n this.work(state);\n }\n catch (e) {\n errored = true;\n errorValue = e ? e : new Error('Scheduled action threw falsy error');\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n }\n unsubscribe() {\n if (!this.closed) {\n const { id, scheduler } = this;\n const { actions } = scheduler;\n this.work = this.state = this.scheduler = null;\n this.pending = false;\n arrRemove(actions, this);\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n this.delay = null;\n super.unsubscribe();\n }\n }\n}\n","import { dateTimestampProvider } from './scheduler/dateTimestampProvider';\nexport class Scheduler {\n constructor(schedulerActionCtor, now = Scheduler.now) {\n this.schedulerActionCtor = schedulerActionCtor;\n this.now = now;\n }\n schedule(work, delay = 0, state) {\n return new this.schedulerActionCtor(this, work).schedule(state, delay);\n }\n}\nScheduler.now = dateTimestampProvider.now;\n","import { Scheduler } from '../Scheduler';\nexport class AsyncScheduler extends Scheduler {\n constructor(SchedulerAction, now = Scheduler.now) {\n super(SchedulerAction, now);\n this.actions = [];\n this._active = false;\n }\n flush(action) {\n const { actions } = this;\n if (this._active) {\n actions.push(action);\n return;\n }\n let error;\n this._active = true;\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions.shift()));\n this._active = false;\n if (error) {\n while ((action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\nexport const asyncScheduler = new AsyncScheduler(AsyncAction);\nexport const async = asyncScheduler;\n","export const dateTimestampProvider = {\n now() {\n return (dateTimestampProvider.delegate || Date).now();\n },\n delegate: undefined,\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 { 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 ? super.execute(state, delay) : 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 scheduler.flush(this);\n return 0;\n }\n}\n","export const timeoutProvider = {\n setTimeout(handler, timeout, ...args) {\n const { delegate } = timeoutProvider;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.setTimeout) {\n return delegate.setTimeout(handler, timeout, ...args);\n }\n return setTimeout(handler, timeout, ...args);\n },\n clearTimeout(handle) {\n const { delegate } = timeoutProvider;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout)(handle);\n },\n delegate: undefined,\n};\n","export function getSymbolIterator() {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator';\n }\n return Symbol.iterator;\n}\nexport const iterator = getSymbolIterator();\n","export const observable = (() => (typeof Symbol === 'function' && Symbol.observable) || '@@observable')();\n","import { createErrorClass } from './createErrorClass';\nexport const EmptyError = createErrorClass((_super) => function EmptyErrorImpl() {\n _super(this);\n this.name = 'EmptyError';\n this.message = 'no elements in sequence';\n});\n","import { isFunction } from './isFunction';\nimport { isScheduler } from './isScheduler';\nfunction last(arr) {\n return arr[arr.length - 1];\n}\nexport function popResultSelector(args) {\n return isFunction(last(args)) ? args.pop() : undefined;\n}\nexport function popScheduler(args) {\n return isScheduler(last(args)) ? args.pop() : undefined;\n}\nexport function popNumber(args, defaultValue) {\n return typeof last(args) === 'number' ? args.pop() : defaultValue;\n}\n","const { isArray } = Array;\nconst { getPrototypeOf, prototype: objectProto, keys: getKeys } = Object;\nexport function argsArgArrayOrObject(args) {\n if (args.length === 1) {\n const first = args[0];\n if (isArray(first)) {\n return { args: first, keys: null };\n }\n if (isPOJO(first)) {\n const keys = getKeys(first);\n return {\n args: keys.map((key) => first[key]),\n keys,\n };\n }\n }\n return { args: args, keys: null };\n}\nfunction isPOJO(obj) {\n return obj && typeof obj === 'object' && getPrototypeOf(obj) === objectProto;\n}\n","export function arrRemove(arr, item) {\n if (arr) {\n const index = arr.indexOf(item);\n 0 <= index && arr.splice(index, 1);\n }\n}\n","export function createErrorClass(createImpl) {\n const _super = (instance) => {\n Error.call(instance);\n instance.stack = new Error().stack;\n };\n const ctorFunc = createImpl(_super);\n ctorFunc.prototype = Object.create(Error.prototype);\n ctorFunc.prototype.constructor = ctorFunc;\n return ctorFunc;\n}\n","export function createObject(keys, values) {\n return keys.reduce((result, key, i) => ((result[key] = values[i]), result), {});\n}\n","import { config } from '../config';\nlet context = null;\nexport function errorContext(cb) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n const isRoot = !context;\n if (isRoot) {\n context = { errorThrown: false, error: null };\n }\n cb();\n if (isRoot) {\n const { errorThrown, error } = context;\n context = null;\n if (errorThrown) {\n throw error;\n }\n }\n }\n else {\n cb();\n }\n}\nexport function captureError(err) {\n if (config.useDeprecatedSynchronousErrorHandling && context) {\n context.errorThrown = true;\n context.error = err;\n }\n}\n","export function executeSchedule(parentSubscription, scheduler, work, delay = 0, repeat = false) {\n const scheduleSubscription = scheduler.schedule(function () {\n work();\n if (repeat) {\n parentSubscription.add(this.schedule(null, delay));\n }\n else {\n this.unsubscribe();\n }\n }, delay);\n parentSubscription.add(scheduleSubscription);\n if (!repeat) {\n return scheduleSubscription;\n }\n}\n","export function identity(x) {\n return x;\n}\n","export const isArrayLike = ((x) => x && typeof x.length === 'number' && typeof x !== 'function');\n","import { isFunction } from './isFunction';\nexport function isAsyncIterable(obj) {\n return Symbol.asyncIterator && isFunction(obj === null || obj === void 0 ? void 0 : obj[Symbol.asyncIterator]);\n}\n","export function isValidDate(value) {\n return value instanceof Date && !isNaN(value);\n}\n","export function isFunction(value) {\n return typeof value === 'function';\n}\n","import { observable as Symbol_observable } from '../symbol/observable';\nimport { isFunction } from './isFunction';\nexport function isInteropObservable(input) {\n return isFunction(input[Symbol_observable]);\n}\n","import { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from './isFunction';\nexport function isIterable(input) {\n return isFunction(input === null || input === void 0 ? void 0 : input[Symbol_iterator]);\n}\n","import { Observable } from '../Observable';\nimport { isFunction } from './isFunction';\nexport function isObservable(obj) {\n return !!obj && (obj instanceof Observable || (isFunction(obj.lift) && isFunction(obj.subscribe)));\n}\n","import { isFunction } from \"./isFunction\";\nexport function isPromise(value) {\n return isFunction(value === null || value === void 0 ? void 0 : value.then);\n}\n","import { __asyncGenerator, __await } from \"tslib\";\nimport { isFunction } from './isFunction';\nexport function readableStreamLikeToAsyncGenerator(readableStream) {\n return __asyncGenerator(this, arguments, function* readableStreamLikeToAsyncGenerator_1() {\n const reader = readableStream.getReader();\n try {\n while (true) {\n const { value, done } = yield __await(reader.read());\n if (done) {\n return yield __await(void 0);\n }\n yield yield __await(value);\n }\n }\n finally {\n reader.releaseLock();\n }\n });\n}\nexport function isReadableStreamLike(obj) {\n return isFunction(obj === null || obj === void 0 ? void 0 : obj.getReader);\n}\n","import { isFunction } from './isFunction';\nexport function isScheduler(value) {\n return value && isFunction(value.schedule);\n}\n","import { isFunction } from './isFunction';\nexport function hasLift(source) {\n return isFunction(source === null || source === void 0 ? void 0 : source.lift);\n}\nexport function operate(init) {\n return (source) => {\n if (hasLift(source)) {\n return source.lift(function (liftedSource) {\n try {\n return init(liftedSource, this);\n }\n catch (err) {\n this.error(err);\n }\n });\n }\n throw new TypeError('Unable to lift unknown Observable type');\n };\n}\n","import { map } from \"../operators/map\";\nconst { isArray } = Array;\nfunction callOrApply(fn, args) {\n return isArray(args) ? fn(...args) : fn(args);\n}\nexport function mapOneOrManyArgs(fn) {\n return map(args => callOrApply(fn, args));\n}\n","export function noop() { }\n","import { identity } from './identity';\nexport function pipe(...fns) {\n return pipeFromArray(fns);\n}\nexport function pipeFromArray(fns) {\n if (fns.length === 0) {\n return identity;\n }\n if (fns.length === 1) {\n return fns[0];\n }\n return function piped(input) {\n return fns.reduce((prev, fn) => fn(prev), input);\n };\n}\n","import { config } from '../config';\nimport { timeoutProvider } from '../scheduler/timeoutProvider';\nexport function reportUnhandledError(err) {\n timeoutProvider.setTimeout(() => {\n const { onUnhandledError } = config;\n if (onUnhandledError) {\n onUnhandledError(err);\n }\n else {\n throw err;\n }\n });\n}\n","export function createInvalidObservableTypeError(input) {\n return new TypeError(`You provided ${input !== null && typeof input === 'object' ? 'an invalid object' : `'${input}'`} where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`);\n}\n","/**\n * @license Angular v16.2.12\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n\n/**\n * An injectable service that produces an animation sequence programmatically within an\n * Angular component or directive.\n * Provided by the `BrowserAnimationsModule` or `NoopAnimationsModule`.\n *\n * @usageNotes\n *\n * To use this service, add it to your component or directive as a dependency.\n * The service is instantiated along with your component.\n *\n * Apps do not typically need to create their own animation players, but if you\n * do need to, follow these steps:\n *\n * 1. Use the [AnimationBuilder.build](api/animations/AnimationBuilder#build)() method\n * to create a programmatic animation. The method returns an `AnimationFactory` instance.\n *\n * 2. Use the factory object to create an `AnimationPlayer` and attach it to a DOM element.\n *\n * 3. Use the player object to control the animation programmatically.\n *\n * For example:\n *\n * ```ts\n * // import the service from BrowserAnimationsModule\n * import {AnimationBuilder} from '@angular/animations';\n * // require the service as a dependency\n * class MyCmp {\n * constructor(private _builder: AnimationBuilder) {}\n *\n * makeAnimation(element: any) {\n * // first define a reusable animation\n * const myAnimation = this._builder.build([\n * style({ width: 0 }),\n * animate(1000, style({ width: '100px' }))\n * ]);\n *\n * // use the returned factory object to create a player\n * const player = myAnimation.create(element);\n *\n * player.play();\n * }\n * }\n * ```\n *\n * @publicApi\n */\nclass AnimationBuilder {\n}\n/**\n * A factory object returned from the\n * [AnimationBuilder.build](api/animations/AnimationBuilder#build)()\n * method.\n *\n * @publicApi\n */\nclass AnimationFactory {\n}\n\n/**\n * Specifies automatic styling.\n *\n * @publicApi\n */\nconst AUTO_STYLE = '*';\n/**\n * Creates a named animation trigger, containing a list of [`state()`](api/animations/state)\n * and `transition()` entries to be evaluated when the expression\n * bound to the trigger changes.\n *\n * @param name An identifying string.\n * @param definitions An animation definition object, containing an array of\n * [`state()`](api/animations/state) and `transition()` declarations.\n *\n * @return An object that encapsulates the trigger data.\n *\n * @usageNotes\n * Define an animation trigger in the `animations` section of `@Component` metadata.\n * In the template, reference the trigger by name and bind it to a trigger expression that\n * evaluates to a defined animation state, using the following format:\n *\n * `[@triggerName]=\"expression\"`\n *\n * Animation trigger bindings convert all values to strings, and then match the\n * previous and current values against any linked transitions.\n * Booleans can be specified as `1` or `true` and `0` or `false`.\n *\n * ### Usage Example\n *\n * The following example creates an animation trigger reference based on the provided\n * name value.\n * The provided animation value is expected to be an array consisting of state and\n * transition declarations.\n *\n * ```typescript\n * @Component({\n * selector: \"my-component\",\n * templateUrl: \"my-component-tpl.html\",\n * animations: [\n * trigger(\"myAnimationTrigger\", [\n * state(...),\n * state(...),\n * transition(...),\n * transition(...)\n * ])\n * ]\n * })\n * class MyComponent {\n * myStatusExp = \"something\";\n * }\n * ```\n *\n * The template associated with this component makes use of the defined trigger\n * by binding to an element within its template code.\n *\n * ```html\n * \n *
    ...
    \n * ```\n *\n * ### Using an inline function\n * The `transition` animation method also supports reading an inline function which can decide\n * if its associated animation should be run.\n *\n * ```typescript\n * // this method is run each time the `myAnimationTrigger` trigger value changes.\n * function myInlineMatcherFn(fromState: string, toState: string, element: any, params: {[key:\n string]: any}): boolean {\n * // notice that `element` and `params` are also available here\n * return toState == 'yes-please-animate';\n * }\n *\n * @Component({\n * selector: 'my-component',\n * templateUrl: 'my-component-tpl.html',\n * animations: [\n * trigger('myAnimationTrigger', [\n * transition(myInlineMatcherFn, [\n * // the animation sequence code\n * ]),\n * ])\n * ]\n * })\n * class MyComponent {\n * myStatusExp = \"yes-please-animate\";\n * }\n * ```\n *\n * ### Disabling Animations\n * When true, the special animation control binding `@.disabled` binding prevents\n * all animations from rendering.\n * Place the `@.disabled` binding on an element to disable\n * animations on the element itself, as well as any inner animation triggers\n * within the element.\n *\n * The following example shows how to use this feature:\n *\n * ```typescript\n * @Component({\n * selector: 'my-component',\n * template: `\n *
    \n *
    \n *
    \n * `,\n * animations: [\n * trigger(\"childAnimation\", [\n * // ...\n * ])\n * ]\n * })\n * class MyComponent {\n * isDisabled = true;\n * exp = '...';\n * }\n * ```\n *\n * When `@.disabled` is true, it prevents the `@childAnimation` trigger from animating,\n * along with any inner animations.\n *\n * ### Disable animations application-wide\n * When an area of the template is set to have animations disabled,\n * **all** inner components have their animations disabled as well.\n * This means that you can disable all animations for an app\n * by placing a host binding set on `@.disabled` on the topmost Angular component.\n *\n * ```typescript\n * import {Component, HostBinding} from '@angular/core';\n *\n * @Component({\n * selector: 'app-component',\n * templateUrl: 'app.component.html',\n * })\n * class AppComponent {\n * @HostBinding('@.disabled')\n * public animationsDisabled = true;\n * }\n * ```\n *\n * ### Overriding disablement of inner animations\n * Despite inner animations being disabled, a parent animation can `query()`\n * for inner elements located in disabled areas of the template and still animate\n * them if needed. This is also the case for when a sub animation is\n * queried by a parent and then later animated using `animateChild()`.\n *\n * ### Detecting when an animation is disabled\n * If a region of the DOM (or the entire application) has its animations disabled, the animation\n * trigger callbacks still fire, but for zero seconds. When the callback fires, it provides\n * an instance of an `AnimationEvent`. If animations are disabled,\n * the `.disabled` flag on the event is true.\n *\n * @publicApi\n */\nfunction trigger(name, definitions) {\n return { type: 7 /* AnimationMetadataType.Trigger */, name, definitions, options: {} };\n}\n/**\n * Defines an animation step that combines styling information with timing information.\n *\n * @param timings Sets `AnimateTimings` for the parent animation.\n * A string in the format \"duration [delay] [easing]\".\n * - Duration and delay are expressed as a number and optional time unit,\n * such as \"1s\" or \"10ms\" for one second and 10 milliseconds, respectively.\n * The default unit is milliseconds.\n * - The easing value controls how the animation accelerates and decelerates\n * during its runtime. Value is one of `ease`, `ease-in`, `ease-out`,\n * `ease-in-out`, or a `cubic-bezier()` function call.\n * If not supplied, no easing is applied.\n *\n * For example, the string \"1s 100ms ease-out\" specifies a duration of\n * 1000 milliseconds, and delay of 100 ms, and the \"ease-out\" easing style,\n * which decelerates near the end of the duration.\n * @param styles Sets AnimationStyles for the parent animation.\n * A function call to either `style()` or `keyframes()`\n * that returns a collection of CSS style entries to be applied to the parent animation.\n * When null, uses the styles from the destination state.\n * This is useful when describing an animation step that will complete an animation;\n * see \"Animating to the final state\" in `transitions()`.\n * @returns An object that encapsulates the animation step.\n *\n * @usageNotes\n * Call within an animation `sequence()`, `{@link animations/group group()}`, or\n * `transition()` call to specify an animation step\n * that applies given style data to the parent animation for a given amount of time.\n *\n * ### Syntax Examples\n * **Timing examples**\n *\n * The following examples show various `timings` specifications.\n * - `animate(500)` : Duration is 500 milliseconds.\n * - `animate(\"1s\")` : Duration is 1000 milliseconds.\n * - `animate(\"100ms 0.5s\")` : Duration is 100 milliseconds, delay is 500 milliseconds.\n * - `animate(\"5s ease-in\")` : Duration is 5000 milliseconds, easing in.\n * - `animate(\"5s 10ms cubic-bezier(.17,.67,.88,.1)\")` : Duration is 5000 milliseconds, delay is 10\n * milliseconds, easing according to a bezier curve.\n *\n * **Style examples**\n *\n * The following example calls `style()` to set a single CSS style.\n * ```typescript\n * animate(500, style({ background: \"red\" }))\n * ```\n * The following example calls `keyframes()` to set a CSS style\n * to different values for successive keyframes.\n * ```typescript\n * animate(500, keyframes(\n * [\n * style({ background: \"blue\" }),\n * style({ background: \"red\" })\n * ])\n * ```\n *\n * @publicApi\n */\nfunction animate(timings, styles = null) {\n return { type: 4 /* AnimationMetadataType.Animate */, styles, timings };\n}\n/**\n * @description Defines a list of animation steps to be run in parallel.\n *\n * @param steps An array of animation step objects.\n * - When steps are defined by `style()` or `animate()`\n * function calls, each call within the group is executed instantly.\n * - To specify offset styles to be applied at a later time, define steps with\n * `keyframes()`, or use `animate()` calls with a delay value.\n * For example:\n *\n * ```typescript\n * group([\n * animate(\"1s\", style({ background: \"black\" })),\n * animate(\"2s\", style({ color: \"white\" }))\n * ])\n * ```\n *\n * @param options An options object containing a delay and\n * developer-defined parameters that provide styling defaults and\n * can be overridden on invocation.\n *\n * @return An object that encapsulates the group data.\n *\n * @usageNotes\n * Grouped animations are useful when a series of styles must be\n * animated at different starting times and closed off at different ending times.\n *\n * When called within a `sequence()` or a\n * `transition()` call, does not continue to the next\n * instruction until all of the inner animation steps have completed.\n *\n * @publicApi\n */\nfunction group(steps, options = null) {\n return { type: 3 /* AnimationMetadataType.Group */, steps, options };\n}\n/**\n * Defines a list of animation steps to be run sequentially, one by one.\n *\n * @param steps An array of animation step objects.\n * - Steps defined by `style()` calls apply the styling data immediately.\n * - Steps defined by `animate()` calls apply the styling data over time\n * as specified by the timing data.\n *\n * ```typescript\n * sequence([\n * style({ opacity: 0 }),\n * animate(\"1s\", style({ opacity: 1 }))\n * ])\n * ```\n *\n * @param options An options object containing a delay and\n * developer-defined parameters that provide styling defaults and\n * can be overridden on invocation.\n *\n * @return An object that encapsulates the sequence data.\n *\n * @usageNotes\n * When you pass an array of steps to a\n * `transition()` call, the steps run sequentially by default.\n * Compare this to the `{@link animations/group group()}` call, which runs animation steps in\n *parallel.\n *\n * When a sequence is used within a `{@link animations/group group()}` or a `transition()` call,\n * execution continues to the next instruction only after each of the inner animation\n * steps have completed.\n *\n * @publicApi\n **/\nfunction sequence(steps, options = null) {\n return { type: 2 /* AnimationMetadataType.Sequence */, steps, options };\n}\n/**\n * Declares a key/value object containing CSS properties/styles that\n * can then be used for an animation [`state`](api/animations/state), within an animation\n *`sequence`, or as styling data for calls to `animate()` and `keyframes()`.\n *\n * @param tokens A set of CSS styles or HTML styles associated with an animation state.\n * The value can be any of the following:\n * - A key-value style pair associating a CSS property with a value.\n * - An array of key-value style pairs.\n * - An asterisk (*), to use auto-styling, where styles are derived from the element\n * being animated and applied to the animation when it starts.\n *\n * Auto-styling can be used to define a state that depends on layout or other\n * environmental factors.\n *\n * @return An object that encapsulates the style data.\n *\n * @usageNotes\n * The following examples create animation styles that collect a set of\n * CSS property values:\n *\n * ```typescript\n * // string values for CSS properties\n * style({ background: \"red\", color: \"blue\" })\n *\n * // numerical pixel values\n * style({ width: 100, height: 0 })\n * ```\n *\n * The following example uses auto-styling to allow an element to animate from\n * a height of 0 up to its full height:\n *\n * ```\n * style({ height: 0 }),\n * animate(\"1s\", style({ height: \"*\" }))\n * ```\n *\n * @publicApi\n **/\nfunction style(tokens) {\n return { type: 6 /* AnimationMetadataType.Style */, styles: tokens, offset: null };\n}\n/**\n * Declares an animation state within a trigger attached to an element.\n *\n * @param name One or more names for the defined state in a comma-separated string.\n * The following reserved state names can be supplied to define a style for specific use\n * cases:\n *\n * - `void` You can associate styles with this name to be used when\n * the element is detached from the application. For example, when an `ngIf` evaluates\n * to false, the state of the associated element is void.\n * - `*` (asterisk) Indicates the default state. You can associate styles with this name\n * to be used as the fallback when the state that is being animated is not declared\n * within the trigger.\n *\n * @param styles A set of CSS styles associated with this state, created using the\n * `style()` function.\n * This set of styles persists on the element once the state has been reached.\n * @param options Parameters that can be passed to the state when it is invoked.\n * 0 or more key-value pairs.\n * @return An object that encapsulates the new state data.\n *\n * @usageNotes\n * Use the `trigger()` function to register states to an animation trigger.\n * Use the `transition()` function to animate between states.\n * When a state is active within a component, its associated styles persist on the element,\n * even when the animation ends.\n *\n * @publicApi\n **/\nfunction state(name, styles, options) {\n return { type: 0 /* AnimationMetadataType.State */, name, styles, options };\n}\n/**\n * Defines a set of animation styles, associating each style with an optional `offset` value.\n *\n * @param steps A set of animation styles with optional offset data.\n * The optional `offset` value for a style specifies a percentage of the total animation\n * time at which that style is applied.\n * @returns An object that encapsulates the keyframes data.\n *\n * @usageNotes\n * Use with the `animate()` call. Instead of applying animations\n * from the current state\n * to the destination state, keyframes describe how each style entry is applied and at what point\n * within the animation arc.\n * Compare [CSS Keyframe Animations](https://www.w3schools.com/css/css3_animations.asp).\n *\n * ### Usage\n *\n * In the following example, the offset values describe\n * when each `backgroundColor` value is applied. The color is red at the start, and changes to\n * blue when 20% of the total time has elapsed.\n *\n * ```typescript\n * // the provided offset values\n * animate(\"5s\", keyframes([\n * style({ backgroundColor: \"red\", offset: 0 }),\n * style({ backgroundColor: \"blue\", offset: 0.2 }),\n * style({ backgroundColor: \"orange\", offset: 0.3 }),\n * style({ backgroundColor: \"black\", offset: 1 })\n * ]))\n * ```\n *\n * If there are no `offset` values specified in the style entries, the offsets\n * are calculated automatically.\n *\n * ```typescript\n * animate(\"5s\", keyframes([\n * style({ backgroundColor: \"red\" }) // offset = 0\n * style({ backgroundColor: \"blue\" }) // offset = 0.33\n * style({ backgroundColor: \"orange\" }) // offset = 0.66\n * style({ backgroundColor: \"black\" }) // offset = 1\n * ]))\n *```\n\n * @publicApi\n */\nfunction keyframes(steps) {\n return { type: 5 /* AnimationMetadataType.Keyframes */, steps };\n}\n/**\n * Declares an animation transition which is played when a certain specified condition is met.\n *\n * @param stateChangeExpr A string with a specific format or a function that specifies when the\n * animation transition should occur (see [State Change Expression](#state-change-expression)).\n *\n * @param steps One or more animation objects that represent the animation's instructions.\n *\n * @param options An options object that can be used to specify a delay for the animation or provide\n * custom parameters for it.\n *\n * @returns An object that encapsulates the transition data.\n *\n * @usageNotes\n *\n * ### State Change Expression\n *\n * The State Change Expression instructs Angular when to run the transition's animations, it can\n *either be\n * - a string with a specific syntax\n * - or a function that compares the previous and current state (value of the expression bound to\n * the element's trigger) and returns `true` if the transition should occur or `false` otherwise\n *\n * The string format can be:\n * - `fromState => toState`, which indicates that the transition's animations should occur then the\n * expression bound to the trigger's element goes from `fromState` to `toState`\n *\n * _Example:_\n * ```typescript\n * transition('open => closed', animate('.5s ease-out', style({ height: 0 }) ))\n * ```\n *\n * - `fromState <=> toState`, which indicates that the transition's animations should occur then\n * the expression bound to the trigger's element goes from `fromState` to `toState` or vice versa\n *\n * _Example:_\n * ```typescript\n * transition('enabled <=> disabled', animate('1s cubic-bezier(0.8,0.3,0,1)'))\n * ```\n *\n * - `:enter`/`:leave`, which indicates that the transition's animations should occur when the\n * element enters or exists the DOM\n *\n * _Example:_\n * ```typescript\n * transition(':enter', [\n * style({ opacity: 0 }),\n * animate('500ms', style({ opacity: 1 }))\n * ])\n * ```\n *\n * - `:increment`/`:decrement`, which indicates that the transition's animations should occur when\n * the numerical expression bound to the trigger's element has increased in value or decreased\n *\n * _Example:_\n * ```typescript\n * transition(':increment', query('@counter', animateChild()))\n * ```\n *\n * - a sequence of any of the above divided by commas, which indicates that transition's animations\n * should occur whenever one of the state change expressions matches\n *\n * _Example:_\n * ```typescript\n * transition(':increment, * => enabled, :enter', animate('1s ease', keyframes([\n * style({ transform: 'scale(1)', offset: 0}),\n * style({ transform: 'scale(1.1)', offset: 0.7}),\n * style({ transform: 'scale(1)', offset: 1})\n * ]))),\n * ```\n *\n * Also note that in such context:\n * - `void` can be used to indicate the absence of the element\n * - asterisks can be used as wildcards that match any state\n * - (as a consequence of the above, `void => *` is equivalent to `:enter` and `* => void` is\n * equivalent to `:leave`)\n * - `true` and `false` also match expression values of `1` and `0` respectively (but do not match\n * _truthy_ and _falsy_ values)\n *\n *
    \n *\n * Be careful about entering end leaving elements as their transitions present a common\n * pitfall for developers.\n *\n * Note that when an element with a trigger enters the DOM its `:enter` transition always\n * gets executed, but its `:leave` transition will not be executed if the element is removed\n * alongside its parent (as it will be removed \"without warning\" before its transition has\n * a chance to be executed, the only way that such transition can occur is if the element\n * is exiting the DOM on its own).\n *\n *\n *
    \n *\n * ### Animating to a Final State\n *\n * If the final step in a transition is a call to `animate()` that uses a timing value\n * with no `style` data, that step is automatically considered the final animation arc,\n * for the element to reach the final state, in such case Angular automatically adds or removes\n * CSS styles to ensure that the element is in the correct final state.\n *\n *\n * ### Usage Examples\n *\n * - Transition animations applied based on\n * the trigger's expression value\n *\n * ```HTML\n *
    \n * ...\n *
    \n * ```\n *\n * ```typescript\n * trigger(\"myAnimationTrigger\", [\n * ..., // states\n * transition(\"on => off, open => closed\", animate(500)),\n * transition(\"* <=> error\", query('.indicator', animateChild()))\n * ])\n * ```\n *\n * - Transition animations applied based on custom logic dependent\n * on the trigger's expression value and provided parameters\n *\n * ```HTML\n *
    \n * ...\n *
    \n * ```\n *\n * ```typescript\n * trigger(\"myAnimationTrigger\", [\n * ..., // states\n * transition(\n * (fromState, toState, _element, params) =>\n * ['firststep', 'laststep'].includes(fromState.toLowerCase())\n * && toState === params?.['target'],\n * animate('1s')\n * )\n * ])\n * ```\n *\n * @publicApi\n **/\nfunction transition(stateChangeExpr, steps, options = null) {\n return { type: 1 /* AnimationMetadataType.Transition */, expr: stateChangeExpr, animation: steps, options };\n}\n/**\n * Produces a reusable animation that can be invoked in another animation or sequence,\n * by calling the `useAnimation()` function.\n *\n * @param steps One or more animation objects, as returned by the `animate()`\n * or `sequence()` function, that form a transformation from one state to another.\n * A sequence is used by default when you pass an array.\n * @param options An options object that can contain a delay value for the start of the\n * animation, and additional developer-defined parameters.\n * Provided values for additional parameters are used as defaults,\n * and override values can be passed to the caller on invocation.\n * @returns An object that encapsulates the animation data.\n *\n * @usageNotes\n * The following example defines a reusable animation, providing some default parameter\n * values.\n *\n * ```typescript\n * var fadeAnimation = animation([\n * style({ opacity: '{{ start }}' }),\n * animate('{{ time }}',\n * style({ opacity: '{{ end }}'}))\n * ],\n * { params: { time: '1000ms', start: 0, end: 1 }});\n * ```\n *\n * The following invokes the defined animation with a call to `useAnimation()`,\n * passing in override parameter values.\n *\n * ```js\n * useAnimation(fadeAnimation, {\n * params: {\n * time: '2s',\n * start: 1,\n * end: 0\n * }\n * })\n * ```\n *\n * If any of the passed-in parameter values are missing from this call,\n * the default values are used. If one or more parameter values are missing before a step is\n * animated, `useAnimation()` throws an error.\n *\n * @publicApi\n */\nfunction animation(steps, options = null) {\n return { type: 8 /* AnimationMetadataType.Reference */, animation: steps, options };\n}\n/**\n * Executes a queried inner animation element within an animation sequence.\n *\n * @param options An options object that can contain a delay value for the start of the\n * animation, and additional override values for developer-defined parameters.\n * @return An object that encapsulates the child animation data.\n *\n * @usageNotes\n * Each time an animation is triggered in Angular, the parent animation\n * has priority and any child animations are blocked. In order\n * for a child animation to run, the parent animation must query each of the elements\n * containing child animations, and run them using this function.\n *\n * Note that this feature is designed to be used with `query()` and it will only work\n * with animations that are assigned using the Angular animation library. CSS keyframes\n * and transitions are not handled by this API.\n *\n * @publicApi\n */\nfunction animateChild(options = null) {\n return { type: 9 /* AnimationMetadataType.AnimateChild */, options };\n}\n/**\n * Starts a reusable animation that is created using the `animation()` function.\n *\n * @param animation The reusable animation to start.\n * @param options An options object that can contain a delay value for the start of\n * the animation, and additional override values for developer-defined parameters.\n * @return An object that contains the animation parameters.\n *\n * @publicApi\n */\nfunction useAnimation(animation, options = null) {\n return { type: 10 /* AnimationMetadataType.AnimateRef */, animation, options };\n}\n/**\n * Finds one or more inner elements within the current element that is\n * being animated within a sequence. Use with `animate()`.\n *\n * @param selector The element to query, or a set of elements that contain Angular-specific\n * characteristics, specified with one or more of the following tokens.\n * - `query(\":enter\")` or `query(\":leave\")` : Query for newly inserted/removed elements (not\n * all elements can be queried via these tokens, see\n * [Entering and Leaving Elements](#entering-and-leaving-elements))\n * - `query(\":animating\")` : Query all currently animating elements.\n * - `query(\"@triggerName\")` : Query elements that contain an animation trigger.\n * - `query(\"@*\")` : Query all elements that contain an animation triggers.\n * - `query(\":self\")` : Include the current element into the animation sequence.\n *\n * @param animation One or more animation steps to apply to the queried element or elements.\n * An array is treated as an animation sequence.\n * @param options An options object. Use the 'limit' field to limit the total number of\n * items to collect.\n * @return An object that encapsulates the query data.\n *\n * @usageNotes\n *\n * ### Multiple Tokens\n *\n * Tokens can be merged into a combined query selector string. For example:\n *\n * ```typescript\n * query(':self, .record:enter, .record:leave, @subTrigger', [...])\n * ```\n *\n * The `query()` function collects multiple elements and works internally by using\n * `element.querySelectorAll`. Use the `limit` field of an options object to limit\n * the total number of items to be collected. For example:\n *\n * ```js\n * query('div', [\n * animate(...),\n * animate(...)\n * ], { limit: 1 })\n * ```\n *\n * By default, throws an error when zero items are found. Set the\n * `optional` flag to ignore this error. For example:\n *\n * ```js\n * query('.some-element-that-may-not-be-there', [\n * animate(...),\n * animate(...)\n * ], { optional: true })\n * ```\n *\n * ### Entering and Leaving Elements\n *\n * Not all elements can be queried via the `:enter` and `:leave` tokens, the only ones\n * that can are those that Angular assumes can enter/leave based on their own logic\n * (if their insertion/removal is simply a consequence of that of their parent they\n * should be queried via a different token in their parent's `:enter`/`:leave` transitions).\n *\n * The only elements Angular assumes can enter/leave based on their own logic (thus the only\n * ones that can be queried via the `:enter` and `:leave` tokens) are:\n * - Those inserted dynamically (via `ViewContainerRef`)\n * - Those that have a structural directive (which, under the hood, are a subset of the above ones)\n *\n *
    \n *\n * Note that elements will be successfully queried via `:enter`/`:leave` even if their\n * insertion/removal is not done manually via `ViewContainerRef`or caused by their structural\n * directive (e.g. they enter/exit alongside their parent).\n *\n *
    \n *\n *
    \n *\n * There is an exception to what previously mentioned, besides elements entering/leaving based on\n * their own logic, elements with an animation trigger can always be queried via `:leave` when\n * their parent is also leaving.\n *\n *
    \n *\n * ### Usage Example\n *\n * The following example queries for inner elements and animates them\n * individually using `animate()`.\n *\n * ```typescript\n * @Component({\n * selector: 'inner',\n * template: `\n *
    \n *

    Title

    \n *
    \n * Blah blah blah\n *
    \n *
    \n * `,\n * animations: [\n * trigger('queryAnimation', [\n * transition('* => goAnimate', [\n * // hide the inner elements\n * query('h1', style({ opacity: 0 })),\n * query('.content', style({ opacity: 0 })),\n *\n * // animate the inner elements in, one by one\n * query('h1', animate(1000, style({ opacity: 1 }))),\n * query('.content', animate(1000, style({ opacity: 1 }))),\n * ])\n * ])\n * ]\n * })\n * class Cmp {\n * exp = '';\n *\n * goAnimate() {\n * this.exp = 'goAnimate';\n * }\n * }\n * ```\n *\n * @publicApi\n */\nfunction query(selector, animation, options = null) {\n return { type: 11 /* AnimationMetadataType.Query */, selector, animation, options };\n}\n/**\n * Use within an animation `query()` call to issue a timing gap after\n * each queried item is animated.\n *\n * @param timings A delay value.\n * @param animation One ore more animation steps.\n * @returns An object that encapsulates the stagger data.\n *\n * @usageNotes\n * In the following example, a container element wraps a list of items stamped out\n * by an `ngFor`. The container element contains an animation trigger that will later be set\n * to query for each of the inner items.\n *\n * Each time items are added, the opacity fade-in animation runs,\n * and each removed item is faded out.\n * When either of these animations occur, the stagger effect is\n * applied after each item's animation is started.\n *\n * ```html\n * \n * \n *
    \n *
    \n *
    \n * {{ item }}\n *
    \n *
    \n * ```\n *\n * Here is the component code:\n *\n * ```typescript\n * import {trigger, transition, style, animate, query, stagger} from '@angular/animations';\n * @Component({\n * templateUrl: 'list.component.html',\n * animations: [\n * trigger('listAnimation', [\n * ...\n * ])\n * ]\n * })\n * class ListComponent {\n * items = [];\n *\n * showItems() {\n * this.items = [0,1,2,3,4];\n * }\n *\n * hideItems() {\n * this.items = [];\n * }\n *\n * toggle() {\n * this.items.length ? this.hideItems() : this.showItems();\n * }\n * }\n * ```\n *\n * Here is the animation trigger code:\n *\n * ```typescript\n * trigger('listAnimation', [\n * transition('* => *', [ // each time the binding value changes\n * query(':leave', [\n * stagger(100, [\n * animate('0.5s', style({ opacity: 0 }))\n * ])\n * ]),\n * query(':enter', [\n * style({ opacity: 0 }),\n * stagger(100, [\n * animate('0.5s', style({ opacity: 1 }))\n * ])\n * ])\n * ])\n * ])\n * ```\n *\n * @publicApi\n */\nfunction stagger(timings, animation) {\n return { type: 12 /* AnimationMetadataType.Stagger */, timings, animation };\n}\n\n/**\n * An empty programmatic controller for reusable animations.\n * Used internally when animations are disabled, to avoid\n * checking for the null case when an animation player is expected.\n *\n * @see {@link animate}\n * @see {@link AnimationPlayer}\n * @see {@link ɵAnimationGroupPlayer AnimationGroupPlayer}\n *\n * @publicApi\n */\nclass NoopAnimationPlayer {\n constructor(duration = 0, delay = 0) {\n this._onDoneFns = [];\n this._onStartFns = [];\n this._onDestroyFns = [];\n this._originalOnDoneFns = [];\n this._originalOnStartFns = [];\n this._started = false;\n this._destroyed = false;\n this._finished = false;\n this._position = 0;\n this.parentPlayer = null;\n this.totalTime = duration + delay;\n }\n _onFinish() {\n if (!this._finished) {\n this._finished = true;\n this._onDoneFns.forEach(fn => fn());\n this._onDoneFns = [];\n }\n }\n onStart(fn) {\n this._originalOnStartFns.push(fn);\n this._onStartFns.push(fn);\n }\n onDone(fn) {\n this._originalOnDoneFns.push(fn);\n this._onDoneFns.push(fn);\n }\n onDestroy(fn) {\n this._onDestroyFns.push(fn);\n }\n hasStarted() {\n return this._started;\n }\n init() { }\n play() {\n if (!this.hasStarted()) {\n this._onStart();\n this.triggerMicrotask();\n }\n this._started = true;\n }\n /** @internal */\n triggerMicrotask() {\n queueMicrotask(() => this._onFinish());\n }\n _onStart() {\n this._onStartFns.forEach(fn => fn());\n this._onStartFns = [];\n }\n pause() { }\n restart() { }\n finish() {\n this._onFinish();\n }\n destroy() {\n if (!this._destroyed) {\n this._destroyed = true;\n if (!this.hasStarted()) {\n this._onStart();\n }\n this.finish();\n this._onDestroyFns.forEach(fn => fn());\n this._onDestroyFns = [];\n }\n }\n reset() {\n this._started = false;\n this._finished = false;\n this._onStartFns = this._originalOnStartFns;\n this._onDoneFns = this._originalOnDoneFns;\n }\n setPosition(position) {\n this._position = this.totalTime ? position * this.totalTime : 1;\n }\n getPosition() {\n return this.totalTime ? this._position / this.totalTime : 1;\n }\n /** @internal */\n triggerCallback(phaseName) {\n const methods = phaseName == 'start' ? this._onStartFns : this._onDoneFns;\n methods.forEach(fn => fn());\n methods.length = 0;\n }\n}\n\n/**\n * A programmatic controller for a group of reusable animations.\n * Used internally to control animations.\n *\n * @see {@link AnimationPlayer}\n * @see {@link animations/group group}\n *\n */\nclass AnimationGroupPlayer {\n constructor(_players) {\n this._onDoneFns = [];\n this._onStartFns = [];\n this._finished = false;\n this._started = false;\n this._destroyed = false;\n this._onDestroyFns = [];\n this.parentPlayer = null;\n this.totalTime = 0;\n this.players = _players;\n let doneCount = 0;\n let destroyCount = 0;\n let startCount = 0;\n const total = this.players.length;\n if (total == 0) {\n queueMicrotask(() => this._onFinish());\n }\n else {\n this.players.forEach(player => {\n player.onDone(() => {\n if (++doneCount == total) {\n this._onFinish();\n }\n });\n player.onDestroy(() => {\n if (++destroyCount == total) {\n this._onDestroy();\n }\n });\n player.onStart(() => {\n if (++startCount == total) {\n this._onStart();\n }\n });\n });\n }\n this.totalTime = this.players.reduce((time, player) => Math.max(time, player.totalTime), 0);\n }\n _onFinish() {\n if (!this._finished) {\n this._finished = true;\n this._onDoneFns.forEach(fn => fn());\n this._onDoneFns = [];\n }\n }\n init() {\n this.players.forEach(player => player.init());\n }\n onStart(fn) {\n this._onStartFns.push(fn);\n }\n _onStart() {\n if (!this.hasStarted()) {\n this._started = true;\n this._onStartFns.forEach(fn => fn());\n this._onStartFns = [];\n }\n }\n onDone(fn) {\n this._onDoneFns.push(fn);\n }\n onDestroy(fn) {\n this._onDestroyFns.push(fn);\n }\n hasStarted() {\n return this._started;\n }\n play() {\n if (!this.parentPlayer) {\n this.init();\n }\n this._onStart();\n this.players.forEach(player => player.play());\n }\n pause() {\n this.players.forEach(player => player.pause());\n }\n restart() {\n this.players.forEach(player => player.restart());\n }\n finish() {\n this._onFinish();\n this.players.forEach(player => player.finish());\n }\n destroy() {\n this._onDestroy();\n }\n _onDestroy() {\n if (!this._destroyed) {\n this._destroyed = true;\n this._onFinish();\n this.players.forEach(player => player.destroy());\n this._onDestroyFns.forEach(fn => fn());\n this._onDestroyFns = [];\n }\n }\n reset() {\n this.players.forEach(player => player.reset());\n this._destroyed = false;\n this._finished = false;\n this._started = false;\n }\n setPosition(p) {\n const timeAtPosition = p * this.totalTime;\n this.players.forEach(player => {\n const position = player.totalTime ? Math.min(1, timeAtPosition / player.totalTime) : 1;\n player.setPosition(position);\n });\n }\n getPosition() {\n const longestPlayer = this.players.reduce((longestSoFar, player) => {\n const newPlayerIsLongest = longestSoFar === null || player.totalTime > longestSoFar.totalTime;\n return newPlayerIsLongest ? player : longestSoFar;\n }, null);\n return longestPlayer != null ? longestPlayer.getPosition() : 0;\n }\n beforeDestroy() {\n this.players.forEach(player => {\n if (player.beforeDestroy) {\n player.beforeDestroy();\n }\n });\n }\n /** @internal */\n triggerCallback(phaseName) {\n const methods = phaseName == 'start' ? this._onStartFns : this._onDoneFns;\n methods.forEach(fn => fn());\n methods.length = 0;\n }\n}\n\nconst ɵPRE_STYLE = '!';\n\n/**\n * @module\n * @description\n * Entry point for all animation APIs of the animation package.\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\n\n// This file is not used to build this module. It is only used during editing\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AUTO_STYLE, AnimationBuilder, AnimationFactory, NoopAnimationPlayer, animate, animateChild, animation, group, keyframes, query, sequence, stagger, state, style, transition, trigger, useAnimation, AnimationGroupPlayer as ɵAnimationGroupPlayer, ɵPRE_STYLE };\n","/**\n * @license Angular v16.2.12\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport * as i0 from '@angular/core';\nimport { InjectionToken, inject, Injectable, Optional, Inject, EventEmitter, ɵɵinject, ɵfindLocaleData, ɵLocaleDataIndex, ɵgetLocaleCurrencyCode, ɵgetLocalePluralCase, LOCALE_ID, ɵregisterLocaleData, ɵstringify, Directive, Input, createNgModule, NgModuleRef, ɵRuntimeError, Host, Attribute, RendererStyleFlags2, untracked, ɵisPromise, ɵisSubscribable, Pipe, DEFAULT_CURRENCY_CODE, NgModule, Version, ɵɵdefineInjectable, ɵformatRuntimeError, Renderer2, ElementRef, Injector, PLATFORM_ID, NgZone, numberAttribute, booleanAttribute, ɵunwrapSafeValue } from '@angular/core';\n\nlet _DOM = null;\nfunction getDOM() {\n return _DOM;\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 * A DI Token representing the main rendering context.\n * In a browser and SSR this is the DOM Document.\n * When using SSR, that document is created by [Domino](https://github.com/angular/domino).\n *\n * @publicApi\n */\nconst DOCUMENT = new InjectionToken('DocumentToken');\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 static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: PlatformLocation, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: PlatformLocation, providedIn: 'platform', useFactory: () => inject(BrowserPlatformLocation) }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: PlatformLocation, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'platform', useFactory: () => 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 *\n * @publicApi\n */\nclass BrowserPlatformLocation extends PlatformLocation {\n constructor() {\n super();\n this._doc = inject(DOCUMENT);\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 this._history.pushState(state, title, url);\n }\n replaceState(state, title, url) {\n this._history.replaceState(state, title, url);\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 static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: BrowserPlatformLocation, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: BrowserPlatformLocation, providedIn: 'platform', useFactory: () => new BrowserPlatformLocation() }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: BrowserPlatformLocation, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'platform',\n useFactory: () => new BrowserPlatformLocation(),\n }]\n }], ctorParameters: function () { return []; } });\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 * 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 static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: LocationStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: LocationStrategy, providedIn: 'root', useFactory: () => inject(PathLocationStrategy) }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: LocationStrategy, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: () => inject(PathLocationStrategy) }]\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 {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 may provide a {@link APP_BASE_HREF}\n * or add a `` element to the document to override the default.\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 this._baseHref = href ?? this._platformLocation.getBaseHrefFromDOM() ??\n inject(DOCUMENT).location?.origin ?? '';\n }\n /** @nodoc */\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 getState() {\n return this._platformLocation.getState();\n }\n historyGo(relativePosition = 0) {\n this._platformLocation.historyGo?.(relativePosition);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: PathLocationStrategy, deps: [{ token: PlatformLocation }, { token: APP_BASE_HREF, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: PathLocationStrategy, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: PathLocationStrategy, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: PlatformLocation }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [APP_BASE_HREF]\n }] }]; } });\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 /** @nodoc */\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 getState() {\n return this._platformLocation.getState();\n }\n historyGo(relativePosition = 0) {\n this._platformLocation.historyGo?.(relativePosition);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HashLocationStrategy, deps: [{ token: PlatformLocation }, { token: APP_BASE_HREF, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HashLocationStrategy }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HashLocationStrategy, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: PlatformLocation }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [APP_BASE_HREF]\n }] }]; } });\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(locationStrategy) {\n /** @internal */\n this._subject = new EventEmitter();\n /** @internal */\n this._urlChangeListeners = [];\n /** @internal */\n this._urlChangeSubscription = null;\n this._locationStrategy = locationStrategy;\n const baseHref = this._locationStrategy.getBaseHref();\n // Note: This class's interaction with base HREF does not fully follow the rules\n // outlined in the spec https://www.freesoft.org/CIE/RFC/1808/18.htm.\n // Instead of trying to fix individual bugs with more and more code, we should\n // investigate using the URL constructor and providing the base as a second\n // argument.\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/URL#parameters\n this._basePath = _stripOrigin(stripTrailingSlash(_stripIndexHtml(baseHref)));\n this._locationStrategy.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 /** @nodoc */\n ngOnDestroy() {\n this._urlChangeSubscription?.unsubscribe();\n this._urlChangeListeners = [];\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._locationStrategy.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._locationStrategy.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(_stripBasePath(this._basePath, _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._locationStrategy.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._locationStrategy.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._locationStrategy.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._locationStrategy.forward();\n }\n /**\n * Navigates back in the platform's history.\n */\n back() {\n this._locationStrategy.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 this._locationStrategy.historyGo?.(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 * @returns A function that, when executed, unregisters a URL change listener.\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 return () => {\n const fnIndex = this._urlChangeListeners.indexOf(fn);\n this._urlChangeListeners.splice(fnIndex, 1);\n if (this._urlChangeListeners.length === 0) {\n this._urlChangeSubscription?.unsubscribe();\n this._urlChangeSubscription = null;\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 /**\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 */\n static { this.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 */\n static { this.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 */\n static { this.stripTrailingSlash = stripTrailingSlash; }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: Location, deps: [{ token: LocationStrategy }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: Location, providedIn: 'root', useFactory: createLocation }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: Location, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n // See #23917\n useFactory: createLocation,\n }]\n }], ctorParameters: function () { return [{ type: LocationStrategy }]; } });\nfunction createLocation() {\n return new Location(ɵɵinject(LocationStrategy));\n}\nfunction _stripBasePath(basePath, url) {\n if (!basePath || !url.startsWith(basePath)) {\n return url;\n }\n const strippedUrl = url.substring(basePath.length);\n if (strippedUrl === '' || ['/', ';', '?', '#'].includes(strippedUrl[0])) {\n return strippedUrl;\n }\n return url;\n}\nfunction _stripIndexHtml(url) {\n return url.replace(/\\/index.html$/, '');\n}\nfunction _stripOrigin(baseHref) {\n // DO NOT REFACTOR! Previously, this check looked like this:\n // `/^(https?:)?\\/\\//.test(baseHref)`, but that resulted in\n // syntactically incorrect code after Closure Compiler minification.\n // This was likely caused by a bug in Closure Compiler, but\n // for now, the check is rewritten to use `new RegExp` instead.\n const isAbsoluteUrl = (new RegExp('^(https?:)?//')).test(baseHref);\n if (isAbsoluteUrl) {\n const [, pathname] = baseHref.split(/\\/\\/[^\\/]+/);\n return pathname;\n }\n return baseHref;\n}\n\n/** @internal */\nconst CURRENCIES_EN = { \"ADP\": [undefined, undefined, 0], \"AFN\": [undefined, \"؋\", 0], \"ALL\": [undefined, undefined, 0], \"AMD\": [undefined, \"֏\", 2], \"AOA\": [undefined, \"Kz\"], \"ARS\": [undefined, \"$\"], \"AUD\": [\"A$\", \"$\"], \"AZN\": [undefined, \"₼\"], \"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, 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, \"₾\"], \"GHS\": [undefined, \"GH₵\"], \"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\": [\"₱\"], \"PKR\": [undefined, \"Rs\", 2], \"PLN\": [undefined, \"zł\"], \"PYG\": [undefined, \"₲\", 0], \"RON\": [undefined, \"lei\"], \"RSD\": [undefined, undefined, 0], \"RUB\": [undefined, \"₽\"], \"RWF\": [undefined, \"RF\", 0], \"SBD\": [undefined, \"$\"], \"SEK\": [undefined, \"kr\", 2], \"SGD\": [undefined, \"$\"], \"SHP\": [undefined, \"£\"], \"SLE\": [undefined, undefined, 2], \"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\": [\"F 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 * Format styles that can be used to represent numbers.\n * @see {@link getLocaleNumberFormat}\n * @see [Internationalization (i18n) Guide](/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 {@link NgPlural}\n * @see {@link NgPluralCase}\n * @see [Internationalization (i18n) Guide](/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](/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 {@link getLocaleDateFormat}\n * @see {@link getLocaleTimeFormat}\n * @see {@link getLocaleDateTimeFormat}\n * @see [Internationalization (i18n) Guide](/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 {@link getLocaleNumberSymbol}\n * @see [Internationalization (i18n) Guide](/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](/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](/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](/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](/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](/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](/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](/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 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 {@link FormatWidth}\n * @see [Internationalization (i18n) Guide](/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 {@link FormatWidth}\n * @see [Internationalization (i18n) Guide](/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 {@link FormatWidth}\n * @see [Internationalization (i18n) Guide](/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 {@link NumberSymbol}\n * @see [Internationalization (i18n) Guide](/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 {@link NumberFormatStyle}\n * @see [CLDR website](http://cldr.unicode.org/translation/number-patterns)\n * @see [Internationalization (i18n) Guide](/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](/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](/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](/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 {@link getLocaleExtraDayPeriods}\n * @see [Internationalization (i18n) Guide](/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 /* ɵExtraLocaleDataIndex.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 {@link getLocaleExtraDayPeriodRules}\n * @see [Internationalization (i18n) Guide](/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 /* ɵExtraLocaleDataIndex.ExtraDayPeriodFormats */],\n data[ɵLocaleDataIndex.ExtraData][1 /* ɵExtraLocaleDataIndex.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](/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](/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](/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 /* ɵCurrencyIndex.SymbolNarrow */];\n if (format === 'narrow' && typeof symbolNarrow === 'string') {\n return symbolNarrow;\n }\n return currency[0 /* ɵCurrencyIndex.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](/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 /* ɵCurrencyIndex.NbOfDigits */];\n }\n return typeof digits === 'number' ? digits : DEFAULT_NB_OF_CURRENCY_DIGITS;\n}\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 {@link DatePipe}\n * @see [Internationalization (i18n) Guide](/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 ? dateFormatter(date, locale, dateTimezoneOffset) :\n value === '\\'\\'' ? '\\'' :\n 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.slice(strNum.length - digits);\n }\n return neg + strNum;\n}\nfunction formatFractionalSeconds(milliseconds, digits) {\n const strMs = padNumber(milliseconds, 3);\n return strMs.substring(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\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 {@link formatNumber}\n * @see {@link DecimalPipe}\n * @see [Internationalization (i18n) Guide](/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 suppressed 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 {@link formatNumber}\n * @see {@link DecimalPipe}\n * @see [Internationalization (i18n) Guide](/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](/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.substring(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.substring(0, pos).replace(/'/g, '');\n p.negSuf = negative.slice(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 * @publicApi\n */\nclass NgLocalization {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgLocalization, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgLocalization, providedIn: 'root', useFactory: (locale) => new NgLocaleLocalization(locale), deps: [{ token: LOCALE_ID }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgLocalization, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n useFactory: (locale) => new NgLocaleLocalization(locale),\n deps: [LOCALE_ID],\n }]\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 static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgLocaleLocalization, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgLocaleLocalization }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgLocaleLocalization, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; } });\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\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\nconst WS_REGEXP = /\\s+/;\nconst EMPTY_ARRAY = [];\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(\n // leaving references to differs in place since flex layout is extending NgClass...\n _iterableDiffers, _keyValueDiffers, _ngEl, _renderer) {\n this._iterableDiffers = _iterableDiffers;\n this._keyValueDiffers = _keyValueDiffers;\n this._ngEl = _ngEl;\n this._renderer = _renderer;\n this.initialClasses = EMPTY_ARRAY;\n this.stateMap = new Map();\n }\n set klass(value) {\n this.initialClasses = value != null ? value.trim().split(WS_REGEXP) : EMPTY_ARRAY;\n }\n set ngClass(value) {\n this.rawClass = typeof value === 'string' ? value.trim().split(WS_REGEXP) : value;\n }\n /*\n The NgClass directive uses the custom change detection algorithm for its inputs. The custom\n algorithm is necessary since inputs are represented as complex object or arrays that need to be\n deeply-compared.\n \n This algorithm is perf-sensitive since NgClass is used very frequently and its poor performance\n might negatively impact runtime performance of the entire change detection cycle. The design of\n this algorithm is making sure that:\n - there is no unnecessary DOM manipulation (CSS classes are added / removed from the DOM only when\n needed), even if references to bound objects change;\n - there is no memory allocation if nothing changes (even relatively modest memory allocation\n during the change detection cycle can result in GC pauses for some of the CD cycles).\n \n The algorithm works by iterating over the set of bound classes, staring with [class] binding and\n then going over [ngClass] binding. For each CSS class name:\n - check if it was seen before (this information is tracked in the state map) and if its value\n changed;\n - mark it as \"touched\" - names that are not marked are not present in the latest set of binding\n and we can remove such class name from the internal data structures;\n \n After iteration over all the CSS class names we've got data structure with all the information\n necessary to synchronize changes to the DOM - it is enough to iterate over the state map, flush\n changes to the DOM and reset internal data structures so those are ready for the next change\n detection cycle.\n */\n ngDoCheck() {\n // classes from the [class] binding\n for (const klass of this.initialClasses) {\n this._updateState(klass, true);\n }\n // classes from the [ngClass] binding\n const rawClass = this.rawClass;\n if (Array.isArray(rawClass) || rawClass instanceof Set) {\n for (const klass of rawClass) {\n this._updateState(klass, true);\n }\n }\n else if (rawClass != null) {\n for (const klass of Object.keys(rawClass)) {\n this._updateState(klass, Boolean(rawClass[klass]));\n }\n }\n this._applyStateDiff();\n }\n _updateState(klass, nextEnabled) {\n const state = this.stateMap.get(klass);\n if (state !== undefined) {\n if (state.enabled !== nextEnabled) {\n state.changed = true;\n state.enabled = nextEnabled;\n }\n state.touched = true;\n }\n else {\n this.stateMap.set(klass, { enabled: nextEnabled, changed: true, touched: true });\n }\n }\n _applyStateDiff() {\n for (const stateEntry of this.stateMap) {\n const klass = stateEntry[0];\n const state = stateEntry[1];\n if (state.changed) {\n this._toggleClass(klass, state.enabled);\n state.changed = false;\n }\n else if (!state.touched) {\n // A class that was previously active got removed from the new collection of classes -\n // remove from the DOM as well.\n if (state.enabled) {\n this._toggleClass(klass, false);\n }\n this.stateMap.delete(klass);\n }\n state.touched = false;\n }\n }\n _toggleClass(klass, enabled) {\n if (ngDevMode) {\n if (typeof klass !== 'string') {\n throw new Error(`NgClass can only toggle CSS classes expressed as strings, got ${ɵstringify(klass)}`);\n }\n }\n klass = klass.trim();\n if (klass.length > 0) {\n klass.split(WS_REGEXP).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 static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgClass, deps: [{ token: i0.IterableDiffers }, { token: i0.KeyValueDiffers }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: NgClass, isStandalone: true, selector: \"[ngClass]\", inputs: { klass: [\"class\", \"klass\"], ngClass: \"ngClass\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgClass, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngClass]',\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: i0.IterableDiffers }, { type: i0.KeyValueDiffers }, { type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { klass: [{\n type: Input,\n args: ['class']\n }], ngClass: [{\n type: Input,\n args: ['ngClass']\n }] } });\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 * * `ngComponentOutletInputs`: Optional component inputs object, which will be bind to the\n * component.\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 * * `ngComponentOutletNgModule`: Optional NgModule class reference to allow loading another\n * module dynamically, then loading a component from that module.\n *\n * * `ngComponentOutletNgModuleFactory`: Deprecated config option that allows providing optional\n * NgModule factory to allow loading another module dynamically, then loading a component from that\n * module. Use `ngComponentOutletNgModule` instead.\n *\n * ### Syntax\n *\n * Simple\n * ```\n * \n * ```\n *\n * With inputs\n * ```\n * \n * \n * ```\n *\n * Customized injector/content\n * ```\n * \n * \n * ```\n *\n * Customized NgModule reference\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.ngComponentOutlet = null;\n /**\n * A helper data structure that allows us to track inputs that were part of the\n * ngComponentOutletInputs expression. Tracking inputs is necessary for proper removal of ones\n * that are no longer referenced.\n */\n this._inputsUsed = new Map();\n }\n _needToReCreateNgModuleInstance(changes) {\n // Note: square brackets property accessor is safe for Closure compiler optimizations (the\n // `changes` argument of the `ngOnChanges` lifecycle hook retains the names of the fields that\n // were changed).\n return changes['ngComponentOutletNgModule'] !== undefined ||\n changes['ngComponentOutletNgModuleFactory'] !== undefined;\n }\n _needToReCreateComponentInstance(changes) {\n // Note: square brackets property accessor is safe for Closure compiler optimizations (the\n // `changes` argument of the `ngOnChanges` lifecycle hook retains the names of the fields that\n // were changed).\n return changes['ngComponentOutlet'] !== undefined ||\n changes['ngComponentOutletContent'] !== undefined ||\n changes['ngComponentOutletInjector'] !== undefined ||\n this._needToReCreateNgModuleInstance(changes);\n }\n /** @nodoc */\n ngOnChanges(changes) {\n if (this._needToReCreateComponentInstance(changes)) {\n this._viewContainerRef.clear();\n this._inputsUsed.clear();\n this._componentRef = undefined;\n if (this.ngComponentOutlet) {\n const injector = this.ngComponentOutletInjector || this._viewContainerRef.parentInjector;\n if (this._needToReCreateNgModuleInstance(changes)) {\n this._moduleRef?.destroy();\n if (this.ngComponentOutletNgModule) {\n this._moduleRef =\n createNgModule(this.ngComponentOutletNgModule, getParentInjector(injector));\n }\n else if (this.ngComponentOutletNgModuleFactory) {\n this._moduleRef =\n this.ngComponentOutletNgModuleFactory.create(getParentInjector(injector));\n }\n else {\n this._moduleRef = undefined;\n }\n }\n this._componentRef = this._viewContainerRef.createComponent(this.ngComponentOutlet, {\n injector,\n ngModuleRef: this._moduleRef,\n projectableNodes: this.ngComponentOutletContent,\n });\n }\n }\n }\n /** @nodoc */\n ngDoCheck() {\n if (this._componentRef) {\n if (this.ngComponentOutletInputs) {\n for (const inputName of Object.keys(this.ngComponentOutletInputs)) {\n this._inputsUsed.set(inputName, true);\n }\n }\n this._applyInputStateDiff(this._componentRef);\n }\n }\n /** @nodoc */\n ngOnDestroy() {\n this._moduleRef?.destroy();\n }\n _applyInputStateDiff(componentRef) {\n for (const [inputName, touched] of this._inputsUsed) {\n if (!touched) {\n // The input that was previously active no longer exists and needs to be set to undefined.\n componentRef.setInput(inputName, undefined);\n this._inputsUsed.delete(inputName);\n }\n else {\n // Since touched is true, it can be asserted that the inputs object is not empty.\n componentRef.setInput(inputName, this.ngComponentOutletInputs[inputName]);\n this._inputsUsed.set(inputName, false);\n }\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgComponentOutlet, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: NgComponentOutlet, isStandalone: true, selector: \"[ngComponentOutlet]\", inputs: { ngComponentOutlet: \"ngComponentOutlet\", ngComponentOutletInputs: \"ngComponentOutletInputs\", ngComponentOutletInjector: \"ngComponentOutletInjector\", ngComponentOutletContent: \"ngComponentOutletContent\", ngComponentOutletNgModule: \"ngComponentOutletNgModule\", ngComponentOutletNgModuleFactory: \"ngComponentOutletNgModuleFactory\" }, usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgComponentOutlet, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngComponentOutlet]',\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { ngComponentOutlet: [{\n type: Input\n }], ngComponentOutletInputs: [{\n type: Input\n }], ngComponentOutletInjector: [{\n type: Input\n }], ngComponentOutletContent: [{\n type: Input\n }], ngComponentOutletNgModule: [{\n type: Input\n }], ngComponentOutletNgModuleFactory: [{\n type: Input\n }] } });\n// Helper function that returns an Injector instance of a parent NgModule.\nfunction getParentInjector(injector) {\n const parentNgModule = injector.get(NgModuleRef);\n return parentNgModule.injector;\n}\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/structural-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 further discussion, see\n * [Structural Directives](guide/structural-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 /**\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 {@link TrackByFunction}\n */\n set ngForTrackBy(fn) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && fn != null && typeof fn !== 'function') {\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 this._trackByFn = fn;\n }\n get ngForTrackBy() {\n return this._trackByFn;\n }\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 * 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 * @nodoc\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 if (typeof ngDevMode === 'undefined' || ngDevMode) {\n try {\n // CAUTION: this logic is duplicated for production mode below, as the try-catch\n // is only present in development builds.\n this._differ = this._differs.find(value).create(this.ngForTrackBy);\n }\n catch {\n let errorMessage = `Cannot find a differ supporting object '${value}' of type '` +\n `${getTypeName(value)}'. NgFor only supports binding to Iterables, such as Arrays.`;\n if (typeof value === 'object') {\n errorMessage += ' Did you mean to use the keyvalue pipe?';\n }\n throw new ɵRuntimeError(-2200 /* RuntimeErrorCode.NG_FOR_MISSING_DIFFER */, errorMessage);\n }\n }\n else {\n // CAUTION: this logic is duplicated for development mode above, as the try-catch\n // is only present in development builds.\n this._differ = this._differs.find(value).create(this.ngForTrackBy);\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 viewContainer = this._viewContainer;\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 viewContainer.createEmbeddedView(this._template, new NgForOfContext(item.item, this._ngForOf, -1, -1), currentIndex === null ? undefined : currentIndex);\n }\n else if (currentIndex == null) {\n viewContainer.remove(adjustedPreviousIndex === null ? undefined : adjustedPreviousIndex);\n }\n else if (adjustedPreviousIndex !== null) {\n const view = viewContainer.get(adjustedPreviousIndex);\n viewContainer.move(view, currentIndex);\n applyViewChange(view, item);\n }\n });\n for (let i = 0, ilen = viewContainer.length; i < ilen; i++) {\n const viewRef = viewContainer.get(i);\n const context = viewRef.context;\n context.index = i;\n context.count = ilen;\n context.ngForOf = this._ngForOf;\n }\n changes.forEachIdentityChange((record) => {\n const viewRef = viewContainer.get(record.currentIndex);\n applyViewChange(viewRef, record);\n });\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 static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgForOf, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: NgForOf, isStandalone: true, selector: \"[ngFor][ngForOf]\", inputs: { ngForOf: \"ngForOf\", ngForTrackBy: \"ngForTrackBy\", ngForTemplate: \"ngForTemplate\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgForOf, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngFor][ngForOf]',\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: i0.IterableDiffers }]; }, propDecorators: { ngForOf: [{\n type: Input\n }], ngForTrackBy: [{\n type: Input\n }], ngForTemplate: [{\n type: Input\n }] } });\nfunction applyViewChange(view, record) {\n view.context.$implicit = record.item;\n}\nfunction getTypeName(type) {\n return type['name'] || typeof type;\n}\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](guide/structural-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 static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgIf, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: NgIf, isStandalone: true, selector: \"[ngIf]\", inputs: { ngIf: \"ngIf\", ngIfThen: \"ngIfThen\", ngIfElse: \"ngIfElse\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgIf, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngIf]',\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }]; }, propDecorators: { 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\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 {@link NgSwitchCase}\n * @see {@link NgSwitchDefault}\n * @see [Structural Directives](guide/structural-directives)\n *\n */\nclass NgSwitch {\n constructor() {\n this._defaultViews = [];\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 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.length > 0 && useDefault !== this._defaultUsed) {\n this._defaultUsed = useDefault;\n for (const defaultView of this._defaultViews) {\n defaultView.enforceState(useDefault);\n }\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgSwitch, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: NgSwitch, isStandalone: true, selector: \"[ngSwitch]\", inputs: { ngSwitch: \"ngSwitch\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgSwitch, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngSwitch]',\n standalone: true,\n }]\n }], propDecorators: { 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 {@link NgSwitch}\n * @see {@link 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 * @nodoc\n */\n ngDoCheck() {\n this._view.enforceState(this.ngSwitch._matchCase(this.ngSwitchCase));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgSwitchCase, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: NgSwitch, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: NgSwitchCase, isStandalone: true, selector: \"[ngSwitchCase]\", inputs: { ngSwitchCase: \"ngSwitchCase\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgSwitchCase, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngSwitchCase]',\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: NgSwitch, decorators: [{\n type: Optional\n }, {\n type: Host\n }] }]; }, propDecorators: { 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 {@link NgSwitch}\n * @see {@link 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 static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgSwitchDefault, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: NgSwitch, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: NgSwitchDefault, isStandalone: true, selector: \"[ngSwitchDefault]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgSwitchDefault, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngSwitchDefault]',\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: NgSwitch, decorators: [{\n type: Optional\n }, {\n type: Host\n }] }]; } });\nfunction throwNgSwitchProviderNotFoundError(attrName, directiveName) {\n throw new ɵRuntimeError(2000 /* RuntimeErrorCode.PARENT_NG_SWITCH_NOT_FOUND */, `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 * @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._updateView(value);\n }\n addCase(value, switchView) {\n this._caseViews[value] = switchView;\n }\n _updateView(switchValue) {\n this._clearViews();\n const cases = Object.keys(this._caseViews);\n const key = getPluralCategory(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 static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgPlural, deps: [{ token: NgLocalization }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: NgPlural, isStandalone: true, selector: \"[ngPlural]\", inputs: { ngPlural: \"ngPlural\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgPlural, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngPlural]',\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: NgLocalization }]; }, propDecorators: { 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 static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgPluralCase, deps: [{ token: 'ngPluralCase', attribute: true }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: NgPlural, host: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: NgPluralCase, isStandalone: true, selector: \"[ngPluralCase]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgPluralCase, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngPluralCase]',\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Attribute,\n args: ['ngPluralCase']\n }] }, { type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: NgPlural, decorators: [{\n type: Host\n }] }]; } });\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 const flags = name.indexOf('-') === -1 ? undefined : RendererStyleFlags2.DashCase;\n if (value != null) {\n this._renderer.setStyle(this._ngEl.nativeElement, name, unit ? `${value}${unit}` : value, flags);\n }\n else {\n this._renderer.removeStyle(this._ngEl.nativeElement, name, flags);\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 static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgStyle, deps: [{ token: i0.ElementRef }, { token: i0.KeyValueDiffers }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: NgStyle, isStandalone: true, selector: \"[ngStyle]\", inputs: { ngStyle: \"ngStyle\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgStyle, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngStyle]',\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.KeyValueDiffers }, { type: i0.Renderer2 }]; }, propDecorators: { ngStyle: [{\n type: Input,\n args: ['ngStyle']\n }] } });\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 /** Injector to be used within the embedded view. */\n this.ngTemplateOutletInjector = null;\n }\n /** @nodoc */\n ngOnChanges(changes) {\n if (changes['ngTemplateOutlet'] || changes['ngTemplateOutletInjector']) {\n const viewContainerRef = this._viewContainerRef;\n if (this._viewRef) {\n viewContainerRef.remove(viewContainerRef.indexOf(this._viewRef));\n }\n if (this.ngTemplateOutlet) {\n const { ngTemplateOutlet: template, ngTemplateOutletContext: context, ngTemplateOutletInjector: injector, } = this;\n this._viewRef =\n viewContainerRef.createEmbeddedView(template, context, injector ? { injector } : undefined);\n }\n else {\n this._viewRef = null;\n }\n }\n else if (this._viewRef && changes['ngTemplateOutletContext'] && this.ngTemplateOutletContext) {\n this._viewRef.context = this.ngTemplateOutletContext;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgTemplateOutlet, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.2.12\", type: NgTemplateOutlet, isStandalone: true, selector: \"[ngTemplateOutlet]\", inputs: { ngTemplateOutletContext: \"ngTemplateOutletContext\", ngTemplateOutlet: \"ngTemplateOutlet\", ngTemplateOutletInjector: \"ngTemplateOutletInjector\" }, usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgTemplateOutlet, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngTemplateOutlet]',\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { ngTemplateOutletContext: [{\n type: Input\n }], ngTemplateOutlet: [{\n type: Input\n }], ngTemplateOutletInjector: [{\n type: Input\n }] } });\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\nfunction invalidPipeArgumentError(type, value) {\n return new ɵRuntimeError(2100 /* RuntimeErrorCode.INVALID_PIPE_ARGUMENT */, ngDevMode && `InvalidPipeArgument: '${value}' for pipe '${ɵstringify(type)}'`);\n}\n\nclass SubscribableStrategy {\n createSubscription(async, updateLatestValue) {\n // Subscription can be side-effectful, and we don't want any signal reads which happen in the\n // side effect of the subscription to be tracked by a component's template when that\n // subscription is triggered via the async pipe. So we wrap the subscription in `untracked` to\n // decouple from the current reactive context.\n //\n // `untracked` also prevents signal _writes_ which happen in the subscription side effect from\n // being treated as signal writes during the template evaluation (which throws errors).\n return untracked(() => async.subscribe({\n next: updateLatestValue,\n error: (e) => {\n throw e;\n }\n }));\n }\n dispose(subscription) {\n // See the comment in `createSubscription` above on the use of `untracked`.\n untracked(() => 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}\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._latestValue = null;\n this._subscription = null;\n this._obj = null;\n this._strategy = null;\n // Assign `ref` into `this._ref` manually instead of declaring `_ref` in the constructor\n // parameter list, as the type of `this._ref` includes `null` unlike the type of `ref`.\n this._ref = ref;\n }\n ngOnDestroy() {\n if (this._subscription) {\n this._dispose();\n }\n // Clear the `ChangeDetectorRef` and its association with the view data, to mitigate\n // potential memory leaks in Observables that could otherwise cause the view data to\n // be retained.\n // https://github.com/angular/angular/issues/17624\n this._ref = null;\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 // Note: `dispose` is only called if a subscription has been initialized before, indicating\n // that `this._strategy` is also available.\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 // Note: `this._ref` is only cleared in `ngOnDestroy` so is known to be available when a\n // value is being updated.\n this._ref.markForCheck();\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: AsyncPipe, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: AsyncPipe, isStandalone: true, name: \"async\", pure: false }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: AsyncPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'async',\n pure: false,\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; } });\n\n/**\n * Transforms text to all lower case.\n *\n * @see {@link UpperCasePipe}\n * @see {@link 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 static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: LowerCasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: LowerCasePipe, isStandalone: true, name: \"lowercase\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: LowerCasePipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'lowercase',\n standalone: true,\n }]\n }] });\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 {@link LowerCasePipe}\n * @see {@link 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.slice(1).toLowerCase()));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: TitleCasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: TitleCasePipe, isStandalone: true, name: \"titlecase\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: TitleCasePipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'titlecase',\n standalone: true,\n }]\n }] });\n/**\n * Transforms text to all upper case.\n * @see {@link LowerCasePipe}\n * @see {@link 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 static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UpperCasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: UpperCasePipe, isStandalone: true, name: \"uppercase\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: UpperCasePipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'uppercase',\n standalone: true,\n }]\n }] });\n\n/**\n * The default date format of Angular date pipe, which corresponds to the following format:\n * `'MMM d,y'` (e.g. `Jun 15, 2015`)\n */\nconst DEFAULT_DATE_FORMAT = 'mediumDate';\n\n/**\n * Optionally-provided default timezone to use for all instances of `DatePipe` (such as `'+0430'`).\n * If the value isn't provided, the `DatePipe` will use the end-user's local system timezone.\n *\n * @deprecated use DATE_PIPE_DEFAULT_OPTIONS token to configure DatePipe\n */\nconst DATE_PIPE_DEFAULT_TIMEZONE = new InjectionToken('DATE_PIPE_DEFAULT_TIMEZONE');\n/**\n * DI token that allows to provide default configuration for the `DatePipe` instances in an\n * application. The value is an object which can include the following fields:\n * - `dateFormat`: configures the default date format. If not provided, the `DatePipe`\n * will use the 'mediumDate' as a value.\n * - `timezone`: configures the default timezone. If not provided, the `DatePipe` will\n * use the end-user's local system timezone.\n *\n * @see {@link DatePipeConfig}\n *\n * @usageNotes\n *\n * Various date pipe default values can be overwritten by providing this token with\n * the value that has this interface.\n *\n * For example:\n *\n * Override the default date format by providing a value using the token:\n * ```typescript\n * providers: [\n * {provide: DATE_PIPE_DEFAULT_OPTIONS, useValue: {dateFormat: 'shortDate'}}\n * ]\n * ```\n *\n * Override the default timezone by providing a value using the token:\n * ```typescript\n * providers: [\n * {provide: DATE_PIPE_DEFAULT_OPTIONS, useValue: {timezone: '-1200'}}\n * ]\n * ```\n */\nconst DATE_PIPE_DEFAULT_OPTIONS = new InjectionToken('DATE_PIPE_DEFAULT_OPTIONS');\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 * The time zone of the formatted value can be specified either by passing it in as the second\n * parameter of the pipe, or by setting the default through the `DATE_PIPE_DEFAULT_OPTIONS`\n * injection token. The value that is passed in as the second parameter takes precedence over\n * the one defined using the injection token.\n *\n * @see {@link 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 * {{ dateObj | date:\"MMM dd, yyyy 'at' hh:mm a\" }} // output is 'Jun 15, 2015 at 09:43 PM'\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, defaultTimezone, defaultOptions) {\n this.locale = locale;\n this.defaultTimezone = defaultTimezone;\n this.defaultOptions = defaultOptions;\n }\n transform(value, format, timezone, locale) {\n if (value == null || value === '' || value !== value)\n return null;\n try {\n const _format = format ?? this.defaultOptions?.dateFormat ?? DEFAULT_DATE_FORMAT;\n const _timezone = timezone ?? this.defaultOptions?.timezone ?? this.defaultTimezone ?? undefined;\n return formatDate(value, _format, locale || this.locale, _timezone);\n }\n catch (error) {\n throw invalidPipeArgumentError(DatePipe, error.message);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: DatePipe, deps: [{ token: LOCALE_ID }, { token: DATE_PIPE_DEFAULT_TIMEZONE, optional: true }, { token: DATE_PIPE_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: DatePipe, isStandalone: true, name: \"date\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: DatePipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'date',\n pure: true,\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [DATE_PIPE_DEFAULT_TIMEZONE]\n }, {\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [DATE_PIPE_DEFAULT_OPTIONS]\n }, {\n type: Optional\n }] }]; } });\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 * https://unicode-org.github.io/icu/userguide/format_parse/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 static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: I18nPluralPipe, deps: [{ token: NgLocalization }], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: I18nPluralPipe, isStandalone: true, name: \"i18nPlural\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: I18nPluralPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'i18nPlural',\n pure: true,\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: NgLocalization }]; } });\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 static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: I18nSelectPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: I18nSelectPipe, isStandalone: true, name: \"i18nSelect\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: I18nSelectPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'i18nSelect',\n pure: true,\n standalone: true,\n }]\n }] });\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 static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: JsonPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: JsonPipe, isStandalone: true, name: \"json\", pure: false }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: JsonPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'json',\n pure: false,\n standalone: true,\n }]\n }] });\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 static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: KeyValuePipe, deps: [{ token: i0.KeyValueDiffers }], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: KeyValuePipe, isStandalone: true, name: \"keyvalue\", pure: false }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: KeyValuePipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'keyvalue',\n pure: false,\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: i0.KeyValueDiffers }]; } });\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 * @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 {@link 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 static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: DecimalPipe, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: DecimalPipe, isStandalone: true, name: \"number\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: DecimalPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'number',\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; } });\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 {@link 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 static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: PercentPipe, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: PercentPipe, isStandalone: true, name: \"percent\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: PercentPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'percent',\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; } });\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 *\n * @see {@link getCurrencySymbol}\n * @see {@link 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 static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: CurrencyPipe, deps: [{ token: LOCALE_ID }, { token: DEFAULT_CURRENCY_CODE }], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: CurrencyPipe, isStandalone: true, name: \"currency\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: CurrencyPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'currency',\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [DEFAULT_CURRENCY_CODE]\n }] }]; } });\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 * @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 static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: SlicePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: SlicePipe, isStandalone: true, name: \"slice\", pure: false }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: SlicePipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'slice',\n pure: false,\n standalone: true,\n }]\n }] });\n\n/**\n * @module\n * @description\n * This module provides a set of common Pipes.\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// 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 * @publicApi\n */\nclass CommonModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: CommonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.2.12\", ngImport: i0, type: CommonModule, imports: [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 static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: CommonModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: CommonModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [COMMON_DIRECTIVES, COMMON_PIPES],\n exports: [COMMON_DIRECTIVES, COMMON_PIPES],\n }]\n }] });\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 * @deprecated This function serves no purpose since the removal of the Webworker platform. It will\n * always return `false`.\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 * @deprecated This function serves no purpose since the removal of the Webworker platform. It will\n * always return `false`.\n */\nfunction isPlatformWorkerUi(platformId) {\n return platformId === PLATFORM_WORKER_UI_ID;\n}\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of the common package.\n */\n/**\n * @publicApi\n */\nconst VERSION = new Version('16.2.12');\n\n/**\n * Defines a scroll position manager. Implemented by `BrowserViewportScroller`.\n *\n * @publicApi\n */\nclass ViewportScroller {\n // De-sugared tree-shakable injection\n // See #23917\n /** @nocollapse */\n static { this.ɵprov = ɵɵdefineInjectable({\n token: ViewportScroller,\n providedIn: 'root',\n factory: () => new BrowserViewportScroller(ɵɵinject(DOCUMENT), window)\n }); }\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 //\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 elSelected.focus();\n }\n }\n /**\n * Disables automatic scroll restoration provided by the browser.\n */\n setHistoryScrollRestoration(scrollRestoration) {\n if (this.supportsScrolling()) {\n this.window.history.scrollRestoration = scrollRestoration;\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 supportsScrolling() {\n try {\n return !!this.window && !!this.window.scrollTo && 'pageXOffset' in this.window;\n }\n catch {\n return false;\n }\n }\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 typeof document.body.attachShadow === 'function') {\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 * A wrapper around the `XMLHttpRequest` constructor.\n *\n * @publicApi\n */\nclass XhrFactory {\n}\n\n// Converts a string that represents a URL into a URL class instance.\nfunction getUrl(src, win) {\n // Don't use a base URL is the URL is absolute.\n return isAbsoluteUrl(src) ? new URL(src) : new URL(src, win.location.href);\n}\n// Checks whether a URL is absolute (i.e. starts with `http://` or `https://`).\nfunction isAbsoluteUrl(src) {\n return /^https?:\\/\\//.test(src);\n}\n// Given a URL, extract the hostname part.\n// If a URL is a relative one - the URL is returned as is.\nfunction extractHostname(url) {\n return isAbsoluteUrl(url) ? (new URL(url)).hostname : url;\n}\nfunction isValidPath(path) {\n const isString = typeof path === 'string';\n if (!isString || path.trim() === '') {\n return false;\n }\n // Calling new URL() will throw if the path string is malformed\n try {\n const url = new URL(path);\n return true;\n }\n catch {\n return false;\n }\n}\nfunction normalizePath(path) {\n return path.endsWith('/') ? path.slice(0, -1) : path;\n}\nfunction normalizeSrc(src) {\n return src.startsWith('/') ? src.slice(1) : src;\n}\n\n/**\n * Noop image loader that does no transformation to the original src and just returns it as is.\n * This loader is used as a default one if more specific logic is not provided in an app config.\n *\n * @see {@link ImageLoader}\n * @see {@link NgOptimizedImage}\n */\nconst noopImageLoader = (config) => config.src;\n/**\n * Injection token that configures the image loader function.\n *\n * @see {@link ImageLoader}\n * @see {@link NgOptimizedImage}\n * @publicApi\n */\nconst IMAGE_LOADER = new InjectionToken('ImageLoader', {\n providedIn: 'root',\n factory: () => noopImageLoader,\n});\n/**\n * Internal helper function that makes it easier to introduce custom image loaders for the\n * `NgOptimizedImage` directive. It is enough to specify a URL builder function to obtain full DI\n * configuration for a given loader: a DI token corresponding to the actual loader function, plus DI\n * tokens managing preconnect check functionality.\n * @param buildUrlFn a function returning a full URL based on loader's configuration\n * @param exampleUrls example of full URLs for a given loader (used in error messages)\n * @returns a set of DI providers corresponding to the configured image loader\n */\nfunction createImageLoader(buildUrlFn, exampleUrls) {\n return function provideImageLoader(path) {\n if (!isValidPath(path)) {\n throwInvalidPathError(path, exampleUrls || []);\n }\n // The trailing / is stripped (if provided) to make URL construction (concatenation) easier in\n // the individual loader functions.\n path = normalizePath(path);\n const loaderFn = (config) => {\n if (isAbsoluteUrl(config.src)) {\n // Image loader functions expect an image file name (e.g. `my-image.png`)\n // or a relative path + a file name (e.g. `/a/b/c/my-image.png`) as an input,\n // so the final absolute URL can be constructed.\n // When an absolute URL is provided instead - the loader can not\n // build a final URL, thus the error is thrown to indicate that.\n throwUnexpectedAbsoluteUrlError(path, config.src);\n }\n return buildUrlFn(path, { ...config, src: normalizeSrc(config.src) });\n };\n const providers = [{ provide: IMAGE_LOADER, useValue: loaderFn }];\n return providers;\n };\n}\nfunction throwInvalidPathError(path, exampleUrls) {\n throw new ɵRuntimeError(2959 /* RuntimeErrorCode.INVALID_LOADER_ARGUMENTS */, ngDevMode &&\n `Image loader has detected an invalid path (\\`${path}\\`). ` +\n `To fix this, supply a path using one of the following formats: ${exampleUrls.join(' or ')}`);\n}\nfunction throwUnexpectedAbsoluteUrlError(path, url) {\n throw new ɵRuntimeError(2959 /* RuntimeErrorCode.INVALID_LOADER_ARGUMENTS */, ngDevMode &&\n `Image loader has detected a \\`\\` tag with an invalid \\`ngSrc\\` attribute: ${url}. ` +\n `This image loader expects \\`ngSrc\\` to be a relative URL - ` +\n `however the provided value is an absolute URL. ` +\n `To fix this, provide \\`ngSrc\\` as a path relative to the base URL ` +\n `configured for this loader (\\`${path}\\`).`);\n}\n\n/**\n * Function that generates an ImageLoader for [Cloudflare Image\n * Resizing](https://developers.cloudflare.com/images/image-resizing/) and turns it into an Angular\n * provider. Note: Cloudflare has multiple image products - this provider is specifically for\n * Cloudflare Image Resizing; it will not work with Cloudflare Images or Cloudflare Polish.\n *\n * @param path Your domain name, e.g. https://mysite.com\n * @returns Provider that provides an ImageLoader function\n *\n * @publicApi\n */\nconst provideCloudflareLoader = createImageLoader(createCloudflareUrl, ngDevMode ? ['https:///cdn-cgi/image//'] : undefined);\nfunction createCloudflareUrl(path, config) {\n let params = `format=auto`;\n if (config.width) {\n params += `,width=${config.width}`;\n }\n // Cloudflare image URLs format:\n // https://developers.cloudflare.com/images/image-resizing/url-format/\n return `${path}/cdn-cgi/image/${params}/${config.src}`;\n}\n\n/**\n * Name and URL tester for Cloudinary.\n */\nconst cloudinaryLoaderInfo = {\n name: 'Cloudinary',\n testUrl: isCloudinaryUrl\n};\nconst CLOUDINARY_LOADER_REGEX = /https?\\:\\/\\/[^\\/]+\\.cloudinary\\.com\\/.+/;\n/**\n * Tests whether a URL is from Cloudinary CDN.\n */\nfunction isCloudinaryUrl(url) {\n return CLOUDINARY_LOADER_REGEX.test(url);\n}\n/**\n * Function that generates an ImageLoader for Cloudinary and turns it into an Angular provider.\n *\n * @param path Base URL of your Cloudinary images\n * This URL should match one of the following formats:\n * https://res.cloudinary.com/mysite\n * https://mysite.cloudinary.com\n * https://subdomain.mysite.com\n * @returns Set of providers to configure the Cloudinary loader.\n *\n * @publicApi\n */\nconst provideCloudinaryLoader = createImageLoader(createCloudinaryUrl, ngDevMode ?\n [\n 'https://res.cloudinary.com/mysite', 'https://mysite.cloudinary.com',\n 'https://subdomain.mysite.com'\n ] :\n undefined);\nfunction createCloudinaryUrl(path, config) {\n // Cloudinary image URLformat:\n // https://cloudinary.com/documentation/image_transformations#transformation_url_structure\n // Example of a Cloudinary image URL:\n // https://res.cloudinary.com/mysite/image/upload/c_scale,f_auto,q_auto,w_600/marketing/tile-topics-m.png\n let params = `f_auto,q_auto`; // sets image format and quality to \"auto\"\n if (config.width) {\n params += `,w_${config.width}`;\n }\n return `${path}/image/upload/${params}/${config.src}`;\n}\n\n/**\n * Name and URL tester for ImageKit.\n */\nconst imageKitLoaderInfo = {\n name: 'ImageKit',\n testUrl: isImageKitUrl,\n};\nconst IMAGE_KIT_LOADER_REGEX = /https?\\:\\/\\/[^\\/]+\\.imagekit\\.io\\/.+/;\n/**\n * Tests whether a URL is from ImageKit CDN.\n */\nfunction isImageKitUrl(url) {\n return IMAGE_KIT_LOADER_REGEX.test(url);\n}\n/**\n * Function that generates an ImageLoader for ImageKit and turns it into an Angular provider.\n *\n * @param path Base URL of your ImageKit images\n * This URL should match one of the following formats:\n * https://ik.imagekit.io/myaccount\n * https://subdomain.mysite.com\n * @returns Set of providers to configure the ImageKit loader.\n *\n * @publicApi\n */\nconst provideImageKitLoader = createImageLoader(createImagekitUrl, ngDevMode ? ['https://ik.imagekit.io/mysite', 'https://subdomain.mysite.com'] : undefined);\nfunction createImagekitUrl(path, config) {\n // Example of an ImageKit image URL:\n // https://ik.imagekit.io/demo/tr:w-300,h-300/medium_cafe_B1iTdD0C.jpg\n const { src, width } = config;\n let urlSegments;\n if (width) {\n const params = `tr:w-${width}`;\n urlSegments = [path, params, src];\n }\n else {\n urlSegments = [path, src];\n }\n return urlSegments.join('/');\n}\n\n/**\n * Name and URL tester for Imgix.\n */\nconst imgixLoaderInfo = {\n name: 'Imgix',\n testUrl: isImgixUrl\n};\nconst IMGIX_LOADER_REGEX = /https?\\:\\/\\/[^\\/]+\\.imgix\\.net\\/.+/;\n/**\n * Tests whether a URL is from Imgix CDN.\n */\nfunction isImgixUrl(url) {\n return IMGIX_LOADER_REGEX.test(url);\n}\n/**\n * Function that generates an ImageLoader for Imgix and turns it into an Angular provider.\n *\n * @param path path to the desired Imgix origin,\n * e.g. https://somepath.imgix.net or https://images.mysite.com\n * @returns Set of providers to configure the Imgix loader.\n *\n * @publicApi\n */\nconst provideImgixLoader = createImageLoader(createImgixUrl, ngDevMode ? ['https://somepath.imgix.net/'] : undefined);\nfunction createImgixUrl(path, config) {\n const url = new URL(`${path}/${config.src}`);\n // This setting ensures the smallest allowable format is set.\n url.searchParams.set('auto', 'format');\n if (config.width) {\n url.searchParams.set('w', config.width.toString());\n }\n return url.href;\n}\n\n// Assembles directive details string, useful for error messages.\nfunction imgDirectiveDetails(ngSrc, includeNgSrc = true) {\n const ngSrcInfo = includeNgSrc ? `(activated on an element with the \\`ngSrc=\"${ngSrc}\"\\`) ` : '';\n return `The NgOptimizedImage directive ${ngSrcInfo}has detected that`;\n}\n\n/**\n * Asserts that the application is in development mode. Throws an error if the application is in\n * production mode. This assert can be used to make sure that there is no dev-mode code invoked in\n * the prod mode accidentally.\n */\nfunction assertDevMode(checkName) {\n if (!ngDevMode) {\n throw new ɵRuntimeError(2958 /* RuntimeErrorCode.UNEXPECTED_DEV_MODE_CHECK_IN_PROD_MODE */, `Unexpected invocation of the ${checkName} in the prod mode. ` +\n `Please make sure that the prod mode is enabled for production builds.`);\n }\n}\n\n/**\n * Observer that detects whether an image with `NgOptimizedImage`\n * is treated as a Largest Contentful Paint (LCP) element. If so,\n * asserts that the image has the `priority` attribute.\n *\n * Note: this is a dev-mode only class and it does not appear in prod bundles,\n * thus there is no `ngDevMode` use in the code.\n *\n * Based on https://web.dev/lcp/#measure-lcp-in-javascript.\n */\nclass LCPImageObserver {\n constructor() {\n // Map of full image URLs -> original `ngSrc` values.\n this.images = new Map();\n this.window = null;\n this.observer = null;\n assertDevMode('LCP checker');\n const win = inject(DOCUMENT).defaultView;\n if (typeof win !== 'undefined' && typeof PerformanceObserver !== 'undefined') {\n this.window = win;\n this.observer = this.initPerformanceObserver();\n }\n }\n /**\n * Inits PerformanceObserver and subscribes to LCP events.\n * Based on https://web.dev/lcp/#measure-lcp-in-javascript\n */\n initPerformanceObserver() {\n const observer = new PerformanceObserver((entryList) => {\n const entries = entryList.getEntries();\n if (entries.length === 0)\n return;\n // We use the latest entry produced by the `PerformanceObserver` as the best\n // signal on which element is actually an LCP one. As an example, the first image to load on\n // a page, by virtue of being the only thing on the page so far, is often a LCP candidate\n // and gets reported by PerformanceObserver, but isn't necessarily the LCP element.\n const lcpElement = entries[entries.length - 1];\n // Cast to `any` due to missing `element` on the `LargestContentfulPaint` type of entry.\n // See https://developer.mozilla.org/en-US/docs/Web/API/LargestContentfulPaint\n const imgSrc = lcpElement.element?.src ?? '';\n // Exclude `data:` and `blob:` URLs, since they are not supported by the directive.\n if (imgSrc.startsWith('data:') || imgSrc.startsWith('blob:'))\n return;\n const img = this.images.get(imgSrc);\n if (!img)\n return;\n if (!img.priority && !img.alreadyWarnedPriority) {\n img.alreadyWarnedPriority = true;\n logMissingPriorityWarning(imgSrc);\n }\n if (img.modified && !img.alreadyWarnedModified) {\n img.alreadyWarnedModified = true;\n logModifiedWarning(imgSrc);\n }\n });\n observer.observe({ type: 'largest-contentful-paint', buffered: true });\n return observer;\n }\n registerImage(rewrittenSrc, originalNgSrc, isPriority) {\n if (!this.observer)\n return;\n const newObservedImageState = {\n priority: isPriority,\n modified: false,\n alreadyWarnedModified: false,\n alreadyWarnedPriority: false\n };\n this.images.set(getUrl(rewrittenSrc, this.window).href, newObservedImageState);\n }\n unregisterImage(rewrittenSrc) {\n if (!this.observer)\n return;\n this.images.delete(getUrl(rewrittenSrc, this.window).href);\n }\n updateImage(originalSrc, newSrc) {\n const originalUrl = getUrl(originalSrc, this.window).href;\n const img = this.images.get(originalUrl);\n if (img) {\n img.modified = true;\n this.images.set(getUrl(newSrc, this.window).href, img);\n this.images.delete(originalUrl);\n }\n }\n ngOnDestroy() {\n if (!this.observer)\n return;\n this.observer.disconnect();\n this.images.clear();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: LCPImageObserver, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: LCPImageObserver, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: LCPImageObserver, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return []; } });\nfunction logMissingPriorityWarning(ngSrc) {\n const directiveDetails = imgDirectiveDetails(ngSrc);\n console.warn(ɵformatRuntimeError(2955 /* RuntimeErrorCode.LCP_IMG_MISSING_PRIORITY */, `${directiveDetails} this image is the Largest Contentful Paint (LCP) ` +\n `element but was not marked \"priority\". This image should be marked ` +\n `\"priority\" in order to prioritize its loading. ` +\n `To fix this, add the \"priority\" attribute.`));\n}\nfunction logModifiedWarning(ngSrc) {\n const directiveDetails = imgDirectiveDetails(ngSrc);\n console.warn(ɵformatRuntimeError(2964 /* RuntimeErrorCode.LCP_IMG_NGSRC_MODIFIED */, `${directiveDetails} this image is the Largest Contentful Paint (LCP) ` +\n `element and has had its \"ngSrc\" attribute modified. This can cause ` +\n `slower loading performance. It is recommended not to modify the \"ngSrc\" ` +\n `property on any image which could be the LCP element.`));\n}\n\n// Set of origins that are always excluded from the preconnect checks.\nconst INTERNAL_PRECONNECT_CHECK_BLOCKLIST = new Set(['localhost', '127.0.0.1', '0.0.0.0']);\n/**\n * Injection token to configure which origins should be excluded\n * from the preconnect checks. It can either be a single string or an array of strings\n * to represent a group of origins, for example:\n *\n * ```typescript\n * {provide: PRECONNECT_CHECK_BLOCKLIST, useValue: 'https://your-domain.com'}\n * ```\n *\n * or:\n *\n * ```typescript\n * {provide: PRECONNECT_CHECK_BLOCKLIST,\n * useValue: ['https://your-domain-1.com', 'https://your-domain-2.com']}\n * ```\n *\n * @publicApi\n */\nconst PRECONNECT_CHECK_BLOCKLIST = new InjectionToken('PRECONNECT_CHECK_BLOCKLIST');\n/**\n * Contains the logic to detect whether an image, marked with the \"priority\" attribute\n * has a corresponding `` tag in the `document.head`.\n *\n * Note: this is a dev-mode only class, which should not appear in prod bundles,\n * thus there is no `ngDevMode` use in the code.\n */\nclass PreconnectLinkChecker {\n constructor() {\n this.document = inject(DOCUMENT);\n /**\n * Set of tags found on this page.\n * The `null` value indicates that there was no DOM query operation performed.\n */\n this.preconnectLinks = null;\n /*\n * Keep track of all already seen origin URLs to avoid repeating the same check.\n */\n this.alreadySeen = new Set();\n this.window = null;\n this.blocklist = new Set(INTERNAL_PRECONNECT_CHECK_BLOCKLIST);\n assertDevMode('preconnect link checker');\n const win = this.document.defaultView;\n if (typeof win !== 'undefined') {\n this.window = win;\n }\n const blocklist = inject(PRECONNECT_CHECK_BLOCKLIST, { optional: true });\n if (blocklist) {\n this.populateBlocklist(blocklist);\n }\n }\n populateBlocklist(origins) {\n if (Array.isArray(origins)) {\n deepForEach(origins, origin => {\n this.blocklist.add(extractHostname(origin));\n });\n }\n else {\n this.blocklist.add(extractHostname(origins));\n }\n }\n /**\n * Checks that a preconnect resource hint exists in the head for the\n * given src.\n *\n * @param rewrittenSrc src formatted with loader\n * @param originalNgSrc ngSrc value\n */\n assertPreconnect(rewrittenSrc, originalNgSrc) {\n if (!this.window)\n return;\n const imgUrl = getUrl(rewrittenSrc, this.window);\n if (this.blocklist.has(imgUrl.hostname) || this.alreadySeen.has(imgUrl.origin))\n return;\n // Register this origin as seen, so we don't check it again later.\n this.alreadySeen.add(imgUrl.origin);\n if (!this.preconnectLinks) {\n // Note: we query for preconnect links only *once* and cache the results\n // for the entire lifespan of an application, since it's unlikely that the\n // list would change frequently. This allows to make sure there are no\n // performance implications of making extra DOM lookups for each image.\n this.preconnectLinks = this.queryPreconnectLinks();\n }\n if (!this.preconnectLinks.has(imgUrl.origin)) {\n console.warn(ɵformatRuntimeError(2956 /* RuntimeErrorCode.PRIORITY_IMG_MISSING_PRECONNECT_TAG */, `${imgDirectiveDetails(originalNgSrc)} there is no preconnect tag present for this ` +\n `image. Preconnecting to the origin(s) that serve priority images ensures that these ` +\n `images are delivered as soon as possible. To fix this, please add the following ` +\n `element into the of the document:\\n` +\n ` `));\n }\n }\n queryPreconnectLinks() {\n const preconnectUrls = new Set();\n const selector = 'link[rel=preconnect]';\n const links = Array.from(this.document.querySelectorAll(selector));\n for (let link of links) {\n const url = getUrl(link.href, this.window);\n preconnectUrls.add(url.origin);\n }\n return preconnectUrls;\n }\n ngOnDestroy() {\n this.preconnectLinks?.clear();\n this.alreadySeen.clear();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: PreconnectLinkChecker, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: PreconnectLinkChecker, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: PreconnectLinkChecker, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return []; } });\n/**\n * Invokes a callback for each element in the array. Also invokes a callback\n * recursively for each nested array.\n */\nfunction deepForEach(input, fn) {\n for (let value of input) {\n Array.isArray(value) ? deepForEach(value, fn) : fn(value);\n }\n}\n\n/**\n * In SSR scenarios, a preload `` element is generated for priority images.\n * Having a large number of preload tags may negatively affect the performance,\n * so we warn developers (by throwing an error) if the number of preloaded images\n * is above a certain threshold. This const specifies this threshold.\n */\nconst DEFAULT_PRELOADED_IMAGES_LIMIT = 5;\n/**\n * Helps to keep track of priority images that already have a corresponding\n * preload tag (to avoid generating multiple preload tags with the same URL).\n *\n * This Set tracks the original src passed into the `ngSrc` input not the src after it has been\n * run through the specified `IMAGE_LOADER`.\n */\nconst PRELOADED_IMAGES = new InjectionToken('NG_OPTIMIZED_PRELOADED_IMAGES', { providedIn: 'root', factory: () => new Set() });\n\n/**\n * @description Contains the logic needed to track and add preload link tags to the `` tag. It\n * will also track what images have already had preload link tags added so as to not duplicate link\n * tags.\n *\n * In dev mode this service will validate that the number of preloaded images does not exceed the\n * configured default preloaded images limit: {@link DEFAULT_PRELOADED_IMAGES_LIMIT}.\n */\nclass PreloadLinkCreator {\n constructor() {\n this.preloadedImages = inject(PRELOADED_IMAGES);\n this.document = inject(DOCUMENT);\n }\n /**\n * @description Add a preload `` to the `` of the `index.html` that is served from the\n * server while using Angular Universal and SSR to kick off image loads for high priority images.\n *\n * The `sizes` (passed in from the user) and `srcset` (parsed and formatted from `ngSrcset`)\n * properties used to set the corresponding attributes, `imagesizes` and `imagesrcset`\n * respectively, on the preload `` tag so that the correctly sized image is preloaded from\n * the CDN.\n *\n * {@link https://web.dev/preload-responsive-images/#imagesrcset-and-imagesizes}\n *\n * @param renderer The `Renderer2` passed in from the directive\n * @param src The original src of the image that is set on the `ngSrc` input.\n * @param srcset The parsed and formatted srcset created from the `ngSrcset` input\n * @param sizes The value of the `sizes` attribute passed in to the `` tag\n */\n createPreloadLinkTag(renderer, src, srcset, sizes) {\n if (ngDevMode) {\n if (this.preloadedImages.size >= DEFAULT_PRELOADED_IMAGES_LIMIT) {\n throw new ɵRuntimeError(2961 /* RuntimeErrorCode.TOO_MANY_PRELOADED_IMAGES */, ngDevMode &&\n `The \\`NgOptimizedImage\\` directive has detected that more than ` +\n `${DEFAULT_PRELOADED_IMAGES_LIMIT} images were marked as priority. ` +\n `This might negatively affect an overall performance of the page. ` +\n `To fix this, remove the \"priority\" attribute from images with less priority.`);\n }\n }\n if (this.preloadedImages.has(src)) {\n return;\n }\n this.preloadedImages.add(src);\n const preload = renderer.createElement('link');\n renderer.setAttribute(preload, 'as', 'image');\n renderer.setAttribute(preload, 'href', src);\n renderer.setAttribute(preload, 'rel', 'preload');\n renderer.setAttribute(preload, 'fetchpriority', 'high');\n if (sizes) {\n renderer.setAttribute(preload, 'imageSizes', sizes);\n }\n if (srcset) {\n renderer.setAttribute(preload, 'imageSrcset', srcset);\n }\n renderer.appendChild(this.document.head, preload);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: PreloadLinkCreator, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: PreloadLinkCreator, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: PreloadLinkCreator, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\n/**\n * When a Base64-encoded image is passed as an input to the `NgOptimizedImage` directive,\n * an error is thrown. The image content (as a string) might be very long, thus making\n * it hard to read an error message if the entire string is included. This const defines\n * the number of characters that should be included into the error message. The rest\n * of the content is truncated.\n */\nconst BASE64_IMG_MAX_LENGTH_IN_ERROR = 50;\n/**\n * RegExpr to determine whether a src in a srcset is using width descriptors.\n * Should match something like: \"100w, 200w\".\n */\nconst VALID_WIDTH_DESCRIPTOR_SRCSET = /^((\\s*\\d+w\\s*(,|$)){1,})$/;\n/**\n * RegExpr to determine whether a src in a srcset is using density descriptors.\n * Should match something like: \"1x, 2x, 50x\". Also supports decimals like \"1.5x, 1.50x\".\n */\nconst VALID_DENSITY_DESCRIPTOR_SRCSET = /^((\\s*\\d+(\\.\\d+)?x\\s*(,|$)){1,})$/;\n/**\n * Srcset values with a density descriptor higher than this value will actively\n * throw an error. Such densities are not permitted as they cause image sizes\n * to be unreasonably large and slow down LCP.\n */\nconst ABSOLUTE_SRCSET_DENSITY_CAP = 3;\n/**\n * Used only in error message text to communicate best practices, as we will\n * only throw based on the slightly more conservative ABSOLUTE_SRCSET_DENSITY_CAP.\n */\nconst RECOMMENDED_SRCSET_DENSITY_CAP = 2;\n/**\n * Used in generating automatic density-based srcsets\n */\nconst DENSITY_SRCSET_MULTIPLIERS = [1, 2];\n/**\n * Used to determine which breakpoints to use on full-width images\n */\nconst VIEWPORT_BREAKPOINT_CUTOFF = 640;\n/**\n * Used to determine whether two aspect ratios are similar in value.\n */\nconst ASPECT_RATIO_TOLERANCE = .1;\n/**\n * Used to determine whether the image has been requested at an overly\n * large size compared to the actual rendered image size (after taking\n * into account a typical device pixel ratio). In pixels.\n */\nconst OVERSIZED_IMAGE_TOLERANCE = 1000;\n/**\n * Used to limit automatic srcset generation of very large sources for\n * fixed-size images. In pixels.\n */\nconst FIXED_SRCSET_WIDTH_LIMIT = 1920;\nconst FIXED_SRCSET_HEIGHT_LIMIT = 1080;\n/** Info about built-in loaders we can test for. */\nconst BUILT_IN_LOADERS = [imgixLoaderInfo, imageKitLoaderInfo, cloudinaryLoaderInfo];\nconst defaultConfig = {\n breakpoints: [16, 32, 48, 64, 96, 128, 256, 384, 640, 750, 828, 1080, 1200, 1920, 2048, 3840],\n};\n/**\n * Injection token that configures the image optimized image functionality.\n *\n * @see {@link NgOptimizedImage}\n * @publicApi\n */\nconst IMAGE_CONFIG = new InjectionToken('ImageConfig', { providedIn: 'root', factory: () => defaultConfig });\n/**\n * Directive that improves image loading performance by enforcing best practices.\n *\n * `NgOptimizedImage` ensures that the loading of the Largest Contentful Paint (LCP) image is\n * prioritized by:\n * - Automatically setting the `fetchpriority` attribute on the `` tag\n * - Lazy loading non-priority images by default\n * - Asserting that there is a corresponding preconnect link tag in the document head\n *\n * In addition, the directive:\n * - Generates appropriate asset URLs if a corresponding `ImageLoader` function is provided\n * - Automatically generates a srcset\n * - Requires that `width` and `height` are set\n * - Warns if `width` or `height` have been set incorrectly\n * - Warns if the image will be visually distorted when rendered\n *\n * @usageNotes\n * The `NgOptimizedImage` directive is marked as [standalone](guide/standalone-components) and can\n * be imported directly.\n *\n * Follow the steps below to enable and use the directive:\n * 1. Import it into the necessary NgModule or a standalone Component.\n * 2. Optionally provide an `ImageLoader` if you use an image hosting service.\n * 3. Update the necessary `` tags in templates and replace `src` attributes with `ngSrc`.\n * Using a `ngSrc` allows the directive to control when the `src` gets set, which triggers an image\n * download.\n *\n * Step 1: import the `NgOptimizedImage` directive.\n *\n * ```typescript\n * import { NgOptimizedImage } from '@angular/common';\n *\n * // Include it into the necessary NgModule\n * @NgModule({\n * imports: [NgOptimizedImage],\n * })\n * class AppModule {}\n *\n * // ... or a standalone Component\n * @Component({\n * standalone: true\n * imports: [NgOptimizedImage],\n * })\n * class MyStandaloneComponent {}\n * ```\n *\n * Step 2: configure a loader.\n *\n * To use the **default loader**: no additional code changes are necessary. The URL returned by the\n * generic loader will always match the value of \"src\". In other words, this loader applies no\n * transformations to the resource URL and the value of the `ngSrc` attribute will be used as is.\n *\n * To use an existing loader for a **third-party image service**: add the provider factory for your\n * chosen service to the `providers` array. In the example below, the Imgix loader is used:\n *\n * ```typescript\n * import {provideImgixLoader} from '@angular/common';\n *\n * // Call the function and add the result to the `providers` array:\n * providers: [\n * provideImgixLoader(\"https://my.base.url/\"),\n * ],\n * ```\n *\n * The `NgOptimizedImage` directive provides the following functions:\n * - `provideCloudflareLoader`\n * - `provideCloudinaryLoader`\n * - `provideImageKitLoader`\n * - `provideImgixLoader`\n *\n * If you use a different image provider, you can create a custom loader function as described\n * below.\n *\n * To use a **custom loader**: provide your loader function as a value for the `IMAGE_LOADER` DI\n * token.\n *\n * ```typescript\n * import {IMAGE_LOADER, ImageLoaderConfig} from '@angular/common';\n *\n * // Configure the loader using the `IMAGE_LOADER` token.\n * providers: [\n * {\n * provide: IMAGE_LOADER,\n * useValue: (config: ImageLoaderConfig) => {\n * return `https://example.com/${config.src}-${config.width}.jpg}`;\n * }\n * },\n * ],\n * ```\n *\n * Step 3: update `` tags in templates to use `ngSrc` instead of `src`.\n *\n * ```\n * \n * ```\n *\n * @publicApi\n */\nclass NgOptimizedImage {\n constructor() {\n this.imageLoader = inject(IMAGE_LOADER);\n this.config = processConfig(inject(IMAGE_CONFIG));\n this.renderer = inject(Renderer2);\n this.imgElement = inject(ElementRef).nativeElement;\n this.injector = inject(Injector);\n this.isServer = isPlatformServer(inject(PLATFORM_ID));\n this.preloadLinkCreator = inject(PreloadLinkCreator);\n // a LCP image observer - should be injected only in the dev mode\n this.lcpObserver = ngDevMode ? this.injector.get(LCPImageObserver) : null;\n /**\n * Calculate the rewritten `src` once and store it.\n * This is needed to avoid repetitive calculations and make sure the directive cleanup in the\n * `ngOnDestroy` does not rely on the `IMAGE_LOADER` logic (which in turn can rely on some other\n * instance that might be already destroyed).\n */\n this._renderedSrc = null;\n /**\n * Indicates whether this image should have a high priority.\n */\n this.priority = false;\n /**\n * Disables automatic srcset generation for this image.\n */\n this.disableOptimizedSrcset = false;\n /**\n * Sets the image to \"fill mode\", which eliminates the height/width requirement and adds\n * styles such that the image fills its containing element.\n */\n this.fill = false;\n }\n /** @nodoc */\n ngOnInit() {\n if (ngDevMode) {\n const ngZone = this.injector.get(NgZone);\n assertNonEmptyInput(this, 'ngSrc', this.ngSrc);\n assertValidNgSrcset(this, this.ngSrcset);\n assertNoConflictingSrc(this);\n if (this.ngSrcset) {\n assertNoConflictingSrcset(this);\n }\n assertNotBase64Image(this);\n assertNotBlobUrl(this);\n if (this.fill) {\n assertEmptyWidthAndHeight(this);\n // This leaves the Angular zone to avoid triggering unnecessary change detection cycles when\n // `load` tasks are invoked on images.\n ngZone.runOutsideAngular(() => assertNonZeroRenderedHeight(this, this.imgElement, this.renderer));\n }\n else {\n assertNonEmptyWidthAndHeight(this);\n if (this.height !== undefined) {\n assertGreaterThanZero(this, this.height, 'height');\n }\n if (this.width !== undefined) {\n assertGreaterThanZero(this, this.width, 'width');\n }\n // Only check for distorted images when not in fill mode, where\n // images may be intentionally stretched, cropped or letterboxed.\n ngZone.runOutsideAngular(() => assertNoImageDistortion(this, this.imgElement, this.renderer));\n }\n assertValidLoadingInput(this);\n if (!this.ngSrcset) {\n assertNoComplexSizes(this);\n }\n assertNotMissingBuiltInLoader(this.ngSrc, this.imageLoader);\n assertNoNgSrcsetWithoutLoader(this, this.imageLoader);\n assertNoLoaderParamsWithoutLoader(this, this.imageLoader);\n if (this.lcpObserver !== null) {\n const ngZone = this.injector.get(NgZone);\n ngZone.runOutsideAngular(() => {\n this.lcpObserver.registerImage(this.getRewrittenSrc(), this.ngSrc, this.priority);\n });\n }\n if (this.priority) {\n const checker = this.injector.get(PreconnectLinkChecker);\n checker.assertPreconnect(this.getRewrittenSrc(), this.ngSrc);\n }\n }\n this.setHostAttributes();\n }\n setHostAttributes() {\n // Must set width/height explicitly in case they are bound (in which case they will\n // only be reflected and not found by the browser)\n if (this.fill) {\n if (!this.sizes) {\n this.sizes = '100vw';\n }\n }\n else {\n this.setHostAttribute('width', this.width.toString());\n this.setHostAttribute('height', this.height.toString());\n }\n this.setHostAttribute('loading', this.getLoadingBehavior());\n this.setHostAttribute('fetchpriority', this.getFetchPriority());\n // The `data-ng-img` attribute flags an image as using the directive, to allow\n // for analysis of the directive's performance.\n this.setHostAttribute('ng-img', 'true');\n // The `src` and `srcset` attributes should be set last since other attributes\n // could affect the image's loading behavior.\n const rewrittenSrcset = this.updateSrcAndSrcset();\n if (this.sizes) {\n this.setHostAttribute('sizes', this.sizes);\n }\n if (this.isServer && this.priority) {\n this.preloadLinkCreator.createPreloadLinkTag(this.renderer, this.getRewrittenSrc(), rewrittenSrcset, this.sizes);\n }\n }\n /** @nodoc */\n ngOnChanges(changes) {\n if (ngDevMode) {\n assertNoPostInitInputChange(this, changes, [\n 'ngSrcset',\n 'width',\n 'height',\n 'priority',\n 'fill',\n 'loading',\n 'sizes',\n 'loaderParams',\n 'disableOptimizedSrcset',\n ]);\n }\n if (changes['ngSrc'] && !changes['ngSrc'].isFirstChange()) {\n const oldSrc = this._renderedSrc;\n this.updateSrcAndSrcset(true);\n const newSrc = this._renderedSrc;\n if (this.lcpObserver !== null && oldSrc && newSrc && oldSrc !== newSrc) {\n const ngZone = this.injector.get(NgZone);\n ngZone.runOutsideAngular(() => {\n this.lcpObserver?.updateImage(oldSrc, newSrc);\n });\n }\n }\n }\n callImageLoader(configWithoutCustomParams) {\n let augmentedConfig = configWithoutCustomParams;\n if (this.loaderParams) {\n augmentedConfig.loaderParams = this.loaderParams;\n }\n return this.imageLoader(augmentedConfig);\n }\n getLoadingBehavior() {\n if (!this.priority && this.loading !== undefined) {\n return this.loading;\n }\n return this.priority ? 'eager' : 'lazy';\n }\n getFetchPriority() {\n return this.priority ? 'high' : 'auto';\n }\n getRewrittenSrc() {\n // ImageLoaderConfig supports setting a width property. However, we're not setting width here\n // because if the developer uses rendered width instead of intrinsic width in the HTML width\n // attribute, the image requested may be too small for 2x+ screens.\n if (!this._renderedSrc) {\n const imgConfig = { src: this.ngSrc };\n // Cache calculated image src to reuse it later in the code.\n this._renderedSrc = this.callImageLoader(imgConfig);\n }\n return this._renderedSrc;\n }\n getRewrittenSrcset() {\n const widthSrcSet = VALID_WIDTH_DESCRIPTOR_SRCSET.test(this.ngSrcset);\n const finalSrcs = this.ngSrcset.split(',').filter(src => src !== '').map(srcStr => {\n srcStr = srcStr.trim();\n const width = widthSrcSet ? parseFloat(srcStr) : parseFloat(srcStr) * this.width;\n return `${this.callImageLoader({ src: this.ngSrc, width })} ${srcStr}`;\n });\n return finalSrcs.join(', ');\n }\n getAutomaticSrcset() {\n if (this.sizes) {\n return this.getResponsiveSrcset();\n }\n else {\n return this.getFixedSrcset();\n }\n }\n getResponsiveSrcset() {\n const { breakpoints } = this.config;\n let filteredBreakpoints = breakpoints;\n if (this.sizes?.trim() === '100vw') {\n // Since this is a full-screen-width image, our srcset only needs to include\n // breakpoints with full viewport widths.\n filteredBreakpoints = breakpoints.filter(bp => bp >= VIEWPORT_BREAKPOINT_CUTOFF);\n }\n const finalSrcs = filteredBreakpoints.map(bp => `${this.callImageLoader({ src: this.ngSrc, width: bp })} ${bp}w`);\n return finalSrcs.join(', ');\n }\n updateSrcAndSrcset(forceSrcRecalc = false) {\n if (forceSrcRecalc) {\n // Reset cached value, so that the followup `getRewrittenSrc()` call\n // will recalculate it and update the cache.\n this._renderedSrc = null;\n }\n const rewrittenSrc = this.getRewrittenSrc();\n this.setHostAttribute('src', rewrittenSrc);\n let rewrittenSrcset = undefined;\n if (this.ngSrcset) {\n rewrittenSrcset = this.getRewrittenSrcset();\n }\n else if (this.shouldGenerateAutomaticSrcset()) {\n rewrittenSrcset = this.getAutomaticSrcset();\n }\n if (rewrittenSrcset) {\n this.setHostAttribute('srcset', rewrittenSrcset);\n }\n return rewrittenSrcset;\n }\n getFixedSrcset() {\n const finalSrcs = DENSITY_SRCSET_MULTIPLIERS.map(multiplier => `${this.callImageLoader({\n src: this.ngSrc,\n width: this.width * multiplier\n })} ${multiplier}x`);\n return finalSrcs.join(', ');\n }\n shouldGenerateAutomaticSrcset() {\n let oversizedImage = false;\n if (!this.sizes) {\n oversizedImage =\n this.width > FIXED_SRCSET_WIDTH_LIMIT || this.height > FIXED_SRCSET_HEIGHT_LIMIT;\n }\n return !this.disableOptimizedSrcset && !this.srcset && this.imageLoader !== noopImageLoader &&\n !oversizedImage;\n }\n /** @nodoc */\n ngOnDestroy() {\n if (ngDevMode) {\n if (!this.priority && this._renderedSrc !== null && this.lcpObserver !== null) {\n this.lcpObserver.unregisterImage(this._renderedSrc);\n }\n }\n }\n setHostAttribute(name, value) {\n this.renderer.setAttribute(this.imgElement, name, value);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgOptimizedImage, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"16.1.0\", version: \"16.2.12\", type: NgOptimizedImage, isStandalone: true, selector: \"img[ngSrc]\", inputs: { ngSrc: [\"ngSrc\", \"ngSrc\", unwrapSafeUrl], ngSrcset: \"ngSrcset\", sizes: \"sizes\", width: [\"width\", \"width\", numberAttribute], height: [\"height\", \"height\", numberAttribute], loading: \"loading\", priority: [\"priority\", \"priority\", booleanAttribute], loaderParams: \"loaderParams\", disableOptimizedSrcset: [\"disableOptimizedSrcset\", \"disableOptimizedSrcset\", booleanAttribute], fill: [\"fill\", \"fill\", booleanAttribute], src: \"src\", srcset: \"srcset\" }, host: { properties: { \"style.position\": \"fill ? \\\"absolute\\\" : null\", \"style.width\": \"fill ? \\\"100%\\\" : null\", \"style.height\": \"fill ? \\\"100%\\\" : null\", \"style.inset\": \"fill ? \\\"0px\\\" : null\" } }, usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: NgOptimizedImage, decorators: [{\n type: Directive,\n args: [{\n standalone: true,\n selector: 'img[ngSrc]',\n host: {\n '[style.position]': 'fill ? \"absolute\" : null',\n '[style.width]': 'fill ? \"100%\" : null',\n '[style.height]': 'fill ? \"100%\" : null',\n '[style.inset]': 'fill ? \"0px\" : null'\n }\n }]\n }], propDecorators: { ngSrc: [{\n type: Input,\n args: [{ required: true, transform: unwrapSafeUrl }]\n }], ngSrcset: [{\n type: Input\n }], sizes: [{\n type: Input\n }], width: [{\n type: Input,\n args: [{ transform: numberAttribute }]\n }], height: [{\n type: Input,\n args: [{ transform: numberAttribute }]\n }], loading: [{\n type: Input\n }], priority: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], loaderParams: [{\n type: Input\n }], disableOptimizedSrcset: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], fill: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], src: [{\n type: Input\n }], srcset: [{\n type: Input\n }] } });\n/***** Helpers *****/\n/**\n * Sorts provided config breakpoints and uses defaults.\n */\nfunction processConfig(config) {\n let sortedBreakpoints = {};\n if (config.breakpoints) {\n sortedBreakpoints.breakpoints = config.breakpoints.sort((a, b) => a - b);\n }\n return Object.assign({}, defaultConfig, config, sortedBreakpoints);\n}\n/***** Assert functions *****/\n/**\n * Verifies that there is no `src` set on a host element.\n */\nfunction assertNoConflictingSrc(dir) {\n if (dir.src) {\n throw new ɵRuntimeError(2950 /* RuntimeErrorCode.UNEXPECTED_SRC_ATTR */, `${imgDirectiveDetails(dir.ngSrc)} both \\`src\\` and \\`ngSrc\\` have been set. ` +\n `Supplying both of these attributes breaks lazy loading. ` +\n `The NgOptimizedImage directive sets \\`src\\` itself based on the value of \\`ngSrc\\`. ` +\n `To fix this, please remove the \\`src\\` attribute.`);\n }\n}\n/**\n * Verifies that there is no `srcset` set on a host element.\n */\nfunction assertNoConflictingSrcset(dir) {\n if (dir.srcset) {\n throw new ɵRuntimeError(2951 /* RuntimeErrorCode.UNEXPECTED_SRCSET_ATTR */, `${imgDirectiveDetails(dir.ngSrc)} both \\`srcset\\` and \\`ngSrcset\\` have been set. ` +\n `Supplying both of these attributes breaks lazy loading. ` +\n `The NgOptimizedImage directive sets \\`srcset\\` itself based on the value of ` +\n `\\`ngSrcset\\`. To fix this, please remove the \\`srcset\\` attribute.`);\n }\n}\n/**\n * Verifies that the `ngSrc` is not a Base64-encoded image.\n */\nfunction assertNotBase64Image(dir) {\n let ngSrc = dir.ngSrc.trim();\n if (ngSrc.startsWith('data:')) {\n if (ngSrc.length > BASE64_IMG_MAX_LENGTH_IN_ERROR) {\n ngSrc = ngSrc.substring(0, BASE64_IMG_MAX_LENGTH_IN_ERROR) + '...';\n }\n throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc, false)} \\`ngSrc\\` is a Base64-encoded string ` +\n `(${ngSrc}). NgOptimizedImage does not support Base64-encoded strings. ` +\n `To fix this, disable the NgOptimizedImage directive for this element ` +\n `by removing \\`ngSrc\\` and using a standard \\`src\\` attribute instead.`);\n }\n}\n/**\n * Verifies that the 'sizes' only includes responsive values.\n */\nfunction assertNoComplexSizes(dir) {\n let sizes = dir.sizes;\n if (sizes?.match(/((\\)|,)\\s|^)\\d+px/)) {\n throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc, false)} \\`sizes\\` was set to a string including ` +\n `pixel values. For automatic \\`srcset\\` generation, \\`sizes\\` must only include responsive ` +\n `values, such as \\`sizes=\"50vw\"\\` or \\`sizes=\"(min-width: 768px) 50vw, 100vw\"\\`. ` +\n `To fix this, modify the \\`sizes\\` attribute, or provide your own \\`ngSrcset\\` value directly.`);\n }\n}\n/**\n * Verifies that the `ngSrc` is not a Blob URL.\n */\nfunction assertNotBlobUrl(dir) {\n const ngSrc = dir.ngSrc.trim();\n if (ngSrc.startsWith('blob:')) {\n throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} \\`ngSrc\\` was set to a blob URL (${ngSrc}). ` +\n `Blob URLs are not supported by the NgOptimizedImage directive. ` +\n `To fix this, disable the NgOptimizedImage directive for this element ` +\n `by removing \\`ngSrc\\` and using a regular \\`src\\` attribute instead.`);\n }\n}\n/**\n * Verifies that the input is set to a non-empty string.\n */\nfunction assertNonEmptyInput(dir, name, value) {\n const isString = typeof value === 'string';\n const isEmptyString = isString && value.trim() === '';\n if (!isString || isEmptyString) {\n throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} \\`${name}\\` has an invalid value ` +\n `(\\`${value}\\`). To fix this, change the value to a non-empty string.`);\n }\n}\n/**\n * Verifies that the `ngSrcset` is in a valid format, e.g. \"100w, 200w\" or \"1x, 2x\".\n */\nfunction assertValidNgSrcset(dir, value) {\n if (value == null)\n return;\n assertNonEmptyInput(dir, 'ngSrcset', value);\n const stringVal = value;\n const isValidWidthDescriptor = VALID_WIDTH_DESCRIPTOR_SRCSET.test(stringVal);\n const isValidDensityDescriptor = VALID_DENSITY_DESCRIPTOR_SRCSET.test(stringVal);\n if (isValidDensityDescriptor) {\n assertUnderDensityCap(dir, stringVal);\n }\n const isValidSrcset = isValidWidthDescriptor || isValidDensityDescriptor;\n if (!isValidSrcset) {\n throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} \\`ngSrcset\\` has an invalid value (\\`${value}\\`). ` +\n `To fix this, supply \\`ngSrcset\\` using a comma-separated list of one or more width ` +\n `descriptors (e.g. \"100w, 200w\") or density descriptors (e.g. \"1x, 2x\").`);\n }\n}\nfunction assertUnderDensityCap(dir, value) {\n const underDensityCap = value.split(',').every(num => num === '' || parseFloat(num) <= ABSOLUTE_SRCSET_DENSITY_CAP);\n if (!underDensityCap) {\n throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the \\`ngSrcset\\` contains an unsupported image density:` +\n `\\`${value}\\`. NgOptimizedImage generally recommends a max image density of ` +\n `${RECOMMENDED_SRCSET_DENSITY_CAP}x but supports image densities up to ` +\n `${ABSOLUTE_SRCSET_DENSITY_CAP}x. The human eye cannot distinguish between image densities ` +\n `greater than ${RECOMMENDED_SRCSET_DENSITY_CAP}x - which makes them unnecessary for ` +\n `most use cases. Images that will be pinch-zoomed are typically the primary use case for ` +\n `${ABSOLUTE_SRCSET_DENSITY_CAP}x images. Please remove the high density descriptor and try again.`);\n }\n}\n/**\n * Creates a `RuntimeError` instance to represent a situation when an input is set after\n * the directive has initialized.\n */\nfunction postInitInputChangeError(dir, inputName) {\n let reason;\n if (inputName === 'width' || inputName === 'height') {\n reason = `Changing \\`${inputName}\\` may result in different attribute value ` +\n `applied to the underlying image element and cause layout shifts on a page.`;\n }\n else {\n reason = `Changing the \\`${inputName}\\` would have no effect on the underlying ` +\n `image element, because the resource loading has already occurred.`;\n }\n return new ɵRuntimeError(2953 /* RuntimeErrorCode.UNEXPECTED_INPUT_CHANGE */, `${imgDirectiveDetails(dir.ngSrc)} \\`${inputName}\\` was updated after initialization. ` +\n `The NgOptimizedImage directive will not react to this input change. ${reason} ` +\n `To fix this, either switch \\`${inputName}\\` to a static value ` +\n `or wrap the image element in an *ngIf that is gated on the necessary value.`);\n}\n/**\n * Verify that none of the listed inputs has changed.\n */\nfunction assertNoPostInitInputChange(dir, changes, inputs) {\n inputs.forEach(input => {\n const isUpdated = changes.hasOwnProperty(input);\n if (isUpdated && !changes[input].isFirstChange()) {\n if (input === 'ngSrc') {\n // When the `ngSrc` input changes, we detect that only in the\n // `ngOnChanges` hook, thus the `ngSrc` is already set. We use\n // `ngSrc` in the error message, so we use a previous value, but\n // not the updated one in it.\n dir = { ngSrc: changes[input].previousValue };\n }\n throw postInitInputChangeError(dir, input);\n }\n });\n}\n/**\n * Verifies that a specified input is a number greater than 0.\n */\nfunction assertGreaterThanZero(dir, inputValue, inputName) {\n const validNumber = typeof inputValue === 'number' && inputValue > 0;\n const validString = typeof inputValue === 'string' && /^\\d+$/.test(inputValue.trim()) && parseInt(inputValue) > 0;\n if (!validNumber && !validString) {\n throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} \\`${inputName}\\` has an invalid value. ` +\n `To fix this, provide \\`${inputName}\\` as a number greater than 0.`);\n }\n}\n/**\n * Verifies that the rendered image is not visually distorted. Effectively this is checking:\n * - Whether the \"width\" and \"height\" attributes reflect the actual dimensions of the image.\n * - Whether image styling is \"correct\" (see below for a longer explanation).\n */\nfunction assertNoImageDistortion(dir, img, renderer) {\n const removeListenerFn = renderer.listen(img, 'load', () => {\n removeListenerFn();\n const computedStyle = window.getComputedStyle(img);\n let renderedWidth = parseFloat(computedStyle.getPropertyValue('width'));\n let renderedHeight = parseFloat(computedStyle.getPropertyValue('height'));\n const boxSizing = computedStyle.getPropertyValue('box-sizing');\n if (boxSizing === 'border-box') {\n const paddingTop = computedStyle.getPropertyValue('padding-top');\n const paddingRight = computedStyle.getPropertyValue('padding-right');\n const paddingBottom = computedStyle.getPropertyValue('padding-bottom');\n const paddingLeft = computedStyle.getPropertyValue('padding-left');\n renderedWidth -= parseFloat(paddingRight) + parseFloat(paddingLeft);\n renderedHeight -= parseFloat(paddingTop) + parseFloat(paddingBottom);\n }\n const renderedAspectRatio = renderedWidth / renderedHeight;\n const nonZeroRenderedDimensions = renderedWidth !== 0 && renderedHeight !== 0;\n const intrinsicWidth = img.naturalWidth;\n const intrinsicHeight = img.naturalHeight;\n const intrinsicAspectRatio = intrinsicWidth / intrinsicHeight;\n const suppliedWidth = dir.width;\n const suppliedHeight = dir.height;\n const suppliedAspectRatio = suppliedWidth / suppliedHeight;\n // Tolerance is used to account for the impact of subpixel rendering.\n // Due to subpixel rendering, the rendered, intrinsic, and supplied\n // aspect ratios of a correctly configured image may not exactly match.\n // For example, a `width=4030 height=3020` image might have a rendered\n // size of \"1062w, 796.48h\". (An aspect ratio of 1.334... vs. 1.333...)\n const inaccurateDimensions = Math.abs(suppliedAspectRatio - intrinsicAspectRatio) > ASPECT_RATIO_TOLERANCE;\n const stylingDistortion = nonZeroRenderedDimensions &&\n Math.abs(intrinsicAspectRatio - renderedAspectRatio) > ASPECT_RATIO_TOLERANCE;\n if (inaccurateDimensions) {\n console.warn(ɵformatRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the aspect ratio of the image does not match ` +\n `the aspect ratio indicated by the width and height attributes. ` +\n `\\nIntrinsic image size: ${intrinsicWidth}w x ${intrinsicHeight}h ` +\n `(aspect-ratio: ${round(intrinsicAspectRatio)}). \\nSupplied width and height attributes: ` +\n `${suppliedWidth}w x ${suppliedHeight}h (aspect-ratio: ${round(suppliedAspectRatio)}). ` +\n `\\nTo fix this, update the width and height attributes.`));\n }\n else if (stylingDistortion) {\n console.warn(ɵformatRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the aspect ratio of the rendered image ` +\n `does not match the image's intrinsic aspect ratio. ` +\n `\\nIntrinsic image size: ${intrinsicWidth}w x ${intrinsicHeight}h ` +\n `(aspect-ratio: ${round(intrinsicAspectRatio)}). \\nRendered image size: ` +\n `${renderedWidth}w x ${renderedHeight}h (aspect-ratio: ` +\n `${round(renderedAspectRatio)}). \\nThis issue can occur if \"width\" and \"height\" ` +\n `attributes are added to an image without updating the corresponding ` +\n `image styling. To fix this, adjust image styling. In most cases, ` +\n `adding \"height: auto\" or \"width: auto\" to the image styling will fix ` +\n `this issue.`));\n }\n else if (!dir.ngSrcset && nonZeroRenderedDimensions) {\n // If `ngSrcset` hasn't been set, sanity check the intrinsic size.\n const recommendedWidth = RECOMMENDED_SRCSET_DENSITY_CAP * renderedWidth;\n const recommendedHeight = RECOMMENDED_SRCSET_DENSITY_CAP * renderedHeight;\n const oversizedWidth = (intrinsicWidth - recommendedWidth) >= OVERSIZED_IMAGE_TOLERANCE;\n const oversizedHeight = (intrinsicHeight - recommendedHeight) >= OVERSIZED_IMAGE_TOLERANCE;\n if (oversizedWidth || oversizedHeight) {\n console.warn(ɵformatRuntimeError(2960 /* RuntimeErrorCode.OVERSIZED_IMAGE */, `${imgDirectiveDetails(dir.ngSrc)} the intrinsic image is significantly ` +\n `larger than necessary. ` +\n `\\nRendered image size: ${renderedWidth}w x ${renderedHeight}h. ` +\n `\\nIntrinsic image size: ${intrinsicWidth}w x ${intrinsicHeight}h. ` +\n `\\nRecommended intrinsic image size: ${recommendedWidth}w x ${recommendedHeight}h. ` +\n `\\nNote: Recommended intrinsic image size is calculated assuming a maximum DPR of ` +\n `${RECOMMENDED_SRCSET_DENSITY_CAP}. To improve loading time, resize the image ` +\n `or consider using the \"ngSrcset\" and \"sizes\" attributes.`));\n }\n }\n });\n}\n/**\n * Verifies that a specified input is set.\n */\nfunction assertNonEmptyWidthAndHeight(dir) {\n let missingAttributes = [];\n if (dir.width === undefined)\n missingAttributes.push('width');\n if (dir.height === undefined)\n missingAttributes.push('height');\n if (missingAttributes.length > 0) {\n throw new ɵRuntimeError(2954 /* RuntimeErrorCode.REQUIRED_INPUT_MISSING */, `${imgDirectiveDetails(dir.ngSrc)} these required attributes ` +\n `are missing: ${missingAttributes.map(attr => `\"${attr}\"`).join(', ')}. ` +\n `Including \"width\" and \"height\" attributes will prevent image-related layout shifts. ` +\n `To fix this, include \"width\" and \"height\" attributes on the image tag or turn on ` +\n `\"fill\" mode with the \\`fill\\` attribute.`);\n }\n}\n/**\n * Verifies that width and height are not set. Used in fill mode, where those attributes don't make\n * sense.\n */\nfunction assertEmptyWidthAndHeight(dir) {\n if (dir.width || dir.height) {\n throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the attributes \\`height\\` and/or \\`width\\` are present ` +\n `along with the \\`fill\\` attribute. Because \\`fill\\` mode causes an image to fill its containing ` +\n `element, the size attributes have no effect and should be removed.`);\n }\n}\n/**\n * Verifies that the rendered image has a nonzero height. If the image is in fill mode, provides\n * guidance that this can be caused by the containing element's CSS position property.\n */\nfunction assertNonZeroRenderedHeight(dir, img, renderer) {\n const removeListenerFn = renderer.listen(img, 'load', () => {\n removeListenerFn();\n const renderedHeight = img.clientHeight;\n if (dir.fill && renderedHeight === 0) {\n console.warn(ɵformatRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the height of the fill-mode image is zero. ` +\n `This is likely because the containing element does not have the CSS 'position' ` +\n `property set to one of the following: \"relative\", \"fixed\", or \"absolute\". ` +\n `To fix this problem, make sure the container element has the CSS 'position' ` +\n `property defined and the height of the element is not zero.`));\n }\n });\n}\n/**\n * Verifies that the `loading` attribute is set to a valid input &\n * is not used on priority images.\n */\nfunction assertValidLoadingInput(dir) {\n if (dir.loading && dir.priority) {\n throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the \\`loading\\` attribute ` +\n `was used on an image that was marked \"priority\". ` +\n `Setting \\`loading\\` on priority images is not allowed ` +\n `because these images will always be eagerly loaded. ` +\n `To fix this, remove the “loading” attribute from the priority image.`);\n }\n const validInputs = ['auto', 'eager', 'lazy'];\n if (typeof dir.loading === 'string' && !validInputs.includes(dir.loading)) {\n throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the \\`loading\\` attribute ` +\n `has an invalid value (\\`${dir.loading}\\`). ` +\n `To fix this, provide a valid value (\"lazy\", \"eager\", or \"auto\").`);\n }\n}\n/**\n * Warns if NOT using a loader (falling back to the generic loader) and\n * the image appears to be hosted on one of the image CDNs for which\n * we do have a built-in image loader. Suggests switching to the\n * built-in loader.\n *\n * @param ngSrc Value of the ngSrc attribute\n * @param imageLoader ImageLoader provided\n */\nfunction assertNotMissingBuiltInLoader(ngSrc, imageLoader) {\n if (imageLoader === noopImageLoader) {\n let builtInLoaderName = '';\n for (const loader of BUILT_IN_LOADERS) {\n if (loader.testUrl(ngSrc)) {\n builtInLoaderName = loader.name;\n break;\n }\n }\n if (builtInLoaderName) {\n console.warn(ɵformatRuntimeError(2962 /* RuntimeErrorCode.MISSING_BUILTIN_LOADER */, `NgOptimizedImage: It looks like your images may be hosted on the ` +\n `${builtInLoaderName} CDN, but your app is not using Angular's ` +\n `built-in loader for that CDN. We recommend switching to use ` +\n `the built-in by calling \\`provide${builtInLoaderName}Loader()\\` ` +\n `in your \\`providers\\` and passing it your instance's base URL. ` +\n `If you don't want to use the built-in loader, define a custom ` +\n `loader function using IMAGE_LOADER to silence this warning.`));\n }\n }\n}\n/**\n * Warns if ngSrcset is present and no loader is configured (i.e. the default one is being used).\n */\nfunction assertNoNgSrcsetWithoutLoader(dir, imageLoader) {\n if (dir.ngSrcset && imageLoader === noopImageLoader) {\n console.warn(ɵformatRuntimeError(2963 /* RuntimeErrorCode.MISSING_NECESSARY_LOADER */, `${imgDirectiveDetails(dir.ngSrc)} the \\`ngSrcset\\` attribute is present but ` +\n `no image loader is configured (i.e. the default one is being used), ` +\n `which would result in the same image being used for all configured sizes. ` +\n `To fix this, provide a loader or remove the \\`ngSrcset\\` attribute from the image.`));\n }\n}\n/**\n * Warns if loaderParams is present and no loader is configured (i.e. the default one is being\n * used).\n */\nfunction assertNoLoaderParamsWithoutLoader(dir, imageLoader) {\n if (dir.loaderParams && imageLoader === noopImageLoader) {\n console.warn(ɵformatRuntimeError(2963 /* RuntimeErrorCode.MISSING_NECESSARY_LOADER */, `${imgDirectiveDetails(dir.ngSrc)} the \\`loaderParams\\` attribute is present but ` +\n `no image loader is configured (i.e. the default one is being used), ` +\n `which means that the loaderParams data will not be consumed and will not affect the URL. ` +\n `To fix this, provide a custom loader or remove the \\`loaderParams\\` attribute from the image.`));\n }\n}\nfunction round(input) {\n return Number.isInteger(input) ? input : input.toFixed(2);\n}\n// Transform function to handle SafeValue input for ngSrc. This doesn't do any sanitization,\n// as that is not needed for img.src and img.srcset. This transform is purely for compatibility.\nfunction unwrapSafeUrl(value) {\n if (typeof value === 'string') {\n return value;\n }\n return ɵunwrapSafeValue(value);\n}\n\n// These exports represent the set of symbols exposed as a public API.\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of the common package.\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\n// This file only reexports content of the `src` folder. Keep it that way.\n\n// This file is not used to build this module. It is only used during editing\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { APP_BASE_HREF, AsyncPipe, BrowserPlatformLocation, CommonModule, CurrencyPipe, DATE_PIPE_DEFAULT_OPTIONS, DATE_PIPE_DEFAULT_TIMEZONE, DOCUMENT, DatePipe, DecimalPipe, FormStyle, FormatWidth, HashLocationStrategy, I18nPluralPipe, I18nSelectPipe, IMAGE_CONFIG, IMAGE_LOADER, JsonPipe, KeyValuePipe, LOCATION_INITIALIZED, Location, LocationStrategy, LowerCasePipe, NgClass, NgComponentOutlet, NgForOf as NgFor, NgForOf, NgForOfContext, NgIf, NgIfContext, NgLocaleLocalization, NgLocalization, NgOptimizedImage, NgPlural, NgPluralCase, NgStyle, NgSwitch, NgSwitchCase, NgSwitchDefault, NgTemplateOutlet, NumberFormatStyle, NumberSymbol, PRECONNECT_CHECK_BLOCKLIST, 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, provideCloudflareLoader, provideCloudinaryLoader, provideImageKitLoader, provideImgixLoader, registerLocaleData, 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, getDOM as ɵgetDOM, parseCookieValue as ɵparseCookieValue, setRootDomAdapter as ɵsetRootDomAdapter };\n","/**\n * @license Angular v16.2.12\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport * as i0 from '@angular/core';\nimport { Injectable, inject, NgZone, InjectionToken, ɵInitialRenderPendingTasks, Inject, ɵRuntimeError, PLATFORM_ID, makeEnvironmentProviders, NgModule, TransferState, makeStateKey, ɵENABLED_SSR_FEATURES, APP_BOOTSTRAP_LISTENER, ApplicationRef } from '@angular/core';\nimport { of, Observable, from } from 'rxjs';\nimport { concatMap, filter, map, finalize, switchMap, tap, first } from 'rxjs/operators';\nimport * as i1 from '@angular/common';\nimport { DOCUMENT, ɵparseCookieValue } from '@angular/common';\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 */\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 * 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 if (typeof Headers !== 'undefined' && headers instanceof Headers) {\n this.headers = new Map();\n headers.forEach((values, name) => {\n this.setHeaderEntries(name, values);\n });\n }\n else {\n this.lazyInit = () => {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n assertValidHeaders(headers);\n }\n this.headers = new Map();\n Object.entries(headers).forEach(([name, values]) => {\n this.setHeaderEntries(name, values);\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 override 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 setHeaderEntries(name, values) {\n const headerValues = (Array.isArray(values) ? values : [values]).map((value) => value.toString());\n const key = name.toLowerCase();\n this.headers.set(key, headerValues);\n this.maybeSetNormalizedName(name, key);\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 * Verifies that the headers object has the right shape: the values\n * must be either strings, numbers or arrays. Throws an error if an invalid\n * header value is present.\n */\nfunction assertValidHeaders(headers) {\n for (const [key, value] of Object.entries(headers)) {\n if (!(typeof value === 'string' || typeof value === 'number') && !Array.isArray(value)) {\n throw new Error(`Unexpected value of the \\`${key}\\` header provided. ` +\n `Expecting either a string, a number or an array, but got: \\`${value}\\`.`);\n }\n }\n}\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 '3D': '=',\n '3F': '?',\n '2F': '/',\n};\nfunction standardEncoding(v) {\n return encodeURIComponent(v).replace(STANDARD_ENCODING_REGEX, (s, t) => STANDARD_ENCODING_REPLACEMENTS[t] ?? 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 // convert the values to strings\n const values = Array.isArray(value) ? value.map(valueToString) : [valueToString(value)];\n this.map.set(key, values);\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 * 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 * Checks for existence of a given token.\n *\n * @param token The reference to an instance of `HttpContextToken`.\n *\n * @returns True if the token exists, false otherwise.\n */\n has(token) {\n return this.map.has(token);\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 * 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 * Note: The `FetchBackend` doesn't support progress report on uploads.\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 // 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 = update.context ?? 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 * 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 * Note: The `FetchBackend` doesn't support progress report on uploads.\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 /* HttpStatusCode.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 * 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/tour-of-heroes/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/understanding-communicating-with-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 static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HttpClient, deps: [{ token: HttpHandler }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HttpClient }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HttpClient, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: HttpHandler }]; } });\n\nconst XSSI_PREFIX$1 = /^\\)\\]\\}',?\\n/;\nconst REQUEST_URL_HEADER = `X-Request-URL`;\n/**\n * Determine an appropriate URL for the response, by checking either\n * response url or the X-Request-URL header.\n */\nfunction getResponseUrl$1(response) {\n if (response.url) {\n return response.url;\n }\n // stored as lowercase in the map\n const xRequestUrl = REQUEST_URL_HEADER.toLocaleLowerCase();\n return response.headers.get(xRequestUrl);\n}\n/**\n * Uses `fetch` to send requests to a backend server.\n *\n * This `FetchBackend` requires the support of the\n * [Fetch API](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) which is available on all\n * supported browsers and on Node.js v18 or later.\n *\n * @see {@link HttpHandler}\n *\n * @publicApi\n * @developerPreview\n */\nclass FetchBackend {\n constructor() {\n // We need to bind the native fetch to its context or it will throw an \"illegal invocation\"\n this.fetchImpl = inject(FetchFactory, { optional: true })?.fetch ?? fetch.bind(globalThis);\n this.ngZone = inject(NgZone);\n }\n handle(request) {\n return new Observable(observer => {\n const aborter = new AbortController();\n this.doRequest(request, aborter.signal, observer)\n .then(noop, error => observer.error(new HttpErrorResponse({ error })));\n return () => aborter.abort();\n });\n }\n async doRequest(request, signal, observer) {\n const init = this.createRequestInit(request);\n let response;\n try {\n const fetchPromise = this.fetchImpl(request.urlWithParams, { signal, ...init });\n // Make sure Zone.js doesn't trigger false-positive unhandled promise\n // error in case the Promise is rejected synchronously. See function\n // description for additional information.\n silenceSuperfluousUnhandledPromiseRejection(fetchPromise);\n // Send the `Sent` event before awaiting the response.\n observer.next({ type: HttpEventType.Sent });\n response = await fetchPromise;\n }\n catch (error) {\n observer.error(new HttpErrorResponse({\n error,\n status: error.status ?? 0,\n statusText: error.statusText,\n url: request.urlWithParams,\n headers: error.headers,\n }));\n return;\n }\n const headers = new HttpHeaders(response.headers);\n const statusText = response.statusText;\n const url = getResponseUrl$1(response) ?? request.urlWithParams;\n let status = response.status;\n let body = null;\n if (request.reportProgress) {\n observer.next(new HttpHeaderResponse({ headers, status, statusText, url }));\n }\n if (response.body) {\n // Read Progress\n const contentLength = response.headers.get('content-length');\n const chunks = [];\n const reader = response.body.getReader();\n let receivedLength = 0;\n let decoder;\n let partialText;\n // We have to check whether the Zone is defined in the global scope because this may be called\n // when the zone is nooped.\n const reqZone = typeof Zone !== 'undefined' && Zone.current;\n // Perform response processing outside of Angular zone to\n // ensure no excessive change detection runs are executed\n // Here calling the async ReadableStreamDefaultReader.read() is responsible for triggering CD\n await this.ngZone.runOutsideAngular(async () => {\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n chunks.push(value);\n receivedLength += value.length;\n if (request.reportProgress) {\n partialText = request.responseType === 'text' ?\n (partialText ?? '') + (decoder ??= new TextDecoder).decode(value, { stream: true }) :\n undefined;\n const reportProgress = () => observer.next({\n type: HttpEventType.DownloadProgress,\n total: contentLength ? +contentLength : undefined,\n loaded: receivedLength,\n partialText,\n });\n reqZone ? reqZone.run(reportProgress) : reportProgress();\n }\n }\n });\n // Combine all chunks.\n const chunksAll = this.concatChunks(chunks, receivedLength);\n try {\n body = this.parseBody(request, chunksAll);\n }\n catch (error) {\n // Body loading or parsing failed\n observer.error(new HttpErrorResponse({\n error,\n headers: new HttpHeaders(response.headers),\n status: response.status,\n statusText: response.statusText,\n url: getResponseUrl$1(response) ?? request.urlWithParams,\n }));\n return;\n }\n }\n // Same behavior as the XhrBackend\n if (status === 0) {\n status = body ? 200 /* HttpStatusCode.Ok */ : 0;\n }\n // ok determines whether the response will be transmitted on the event or\n // error channel. Unsuccessful status codes (not 2xx) will always be errors,\n // but a successful status code can still result in an error if the user\n // asked for JSON data and the body cannot be parsed as such.\n const ok = status >= 200 && status < 300;\n if (ok) {\n observer.next(new HttpResponse({\n body,\n headers,\n status,\n statusText,\n url,\n }));\n // The full body has been received and delivered, no further events\n // are possible. This request is complete.\n observer.complete();\n }\n else {\n observer.error(new HttpErrorResponse({\n error: body,\n headers,\n status,\n statusText,\n url,\n }));\n }\n }\n parseBody(request, binContent) {\n switch (request.responseType) {\n case 'json':\n // stripping the XSSI when present\n const text = new TextDecoder().decode(binContent).replace(XSSI_PREFIX$1, '');\n return text === '' ? null : JSON.parse(text);\n case 'text':\n return new TextDecoder().decode(binContent);\n case 'blob':\n return new Blob([binContent]);\n case 'arraybuffer':\n return binContent.buffer;\n }\n }\n createRequestInit(req) {\n // We could share some of this logic with the XhrBackend\n const headers = {};\n const credentials = req.withCredentials ? 'include' : undefined;\n // Setting all the requested headers.\n req.headers.forEach((name, values) => (headers[name] = values.join(',')));\n // Add an Accept header if one isn't present already.\n headers['Accept'] ??= 'application/json, text/plain, */*';\n // Auto-detect the Content-Type header if one isn't present already.\n if (!headers['Content-Type']) {\n const detectedType = req.detectContentTypeHeader();\n // Sometimes Content-Type detection fails.\n if (detectedType !== null) {\n headers['Content-Type'] = detectedType;\n }\n }\n return {\n body: req.serializeBody(),\n method: req.method,\n headers,\n credentials,\n };\n }\n concatChunks(chunks, totalLength) {\n const chunksAll = new Uint8Array(totalLength);\n let position = 0;\n for (const chunk of chunks) {\n chunksAll.set(chunk, position);\n position += chunk.length;\n }\n return chunksAll;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: FetchBackend, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: FetchBackend }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: FetchBackend, decorators: [{\n type: Injectable\n }] });\n/**\n * Abstract class to provide a mocked implementation of `fetch()`\n */\nclass FetchFactory {\n}\nfunction noop() { }\n/**\n * Zone.js treats a rejected promise that has not yet been awaited\n * as an unhandled error. This function adds a noop `.then` to make\n * sure that Zone.js doesn't throw an error if the Promise is rejected\n * synchronously.\n */\nfunction silenceSuperfluousUnhandledPromiseRejection(promise) {\n promise.then(noop, noop);\n}\n\nfunction interceptorChainEndFn(req, finalHandlerFn) {\n return finalHandlerFn(req);\n}\n/**\n * Constructs a `ChainedInterceptorFn` which adapts a legacy `HttpInterceptor` to the\n * `ChainedInterceptorFn` interface.\n */\nfunction adaptLegacyInterceptorToChain(chainTailFn, interceptor) {\n return (initialRequest, finalHandlerFn) => interceptor.intercept(initialRequest, {\n handle: (downstreamRequest) => chainTailFn(downstreamRequest, finalHandlerFn),\n });\n}\n/**\n * Constructs a `ChainedInterceptorFn` which wraps and invokes a functional interceptor in the given\n * injector.\n */\nfunction chainedInterceptorFn(chainTailFn, interceptorFn, injector) {\n // clang-format off\n return (initialRequest, finalHandlerFn) => injector.runInContext(() => interceptorFn(initialRequest, downstreamRequest => chainTailFn(downstreamRequest, finalHandlerFn)));\n // clang-format on\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(ngDevMode ? 'HTTP_INTERCEPTORS' : '');\n/**\n * A multi-provided token of `HttpInterceptorFn`s.\n */\nconst HTTP_INTERCEPTOR_FNS = new InjectionToken(ngDevMode ? 'HTTP_INTERCEPTOR_FNS' : '');\n/**\n * A multi-provided token of `HttpInterceptorFn`s that are only set in root.\n */\nconst HTTP_ROOT_INTERCEPTOR_FNS = new InjectionToken(ngDevMode ? 'HTTP_ROOT_INTERCEPTOR_FNS' : '');\n/**\n * Creates an `HttpInterceptorFn` which lazily initializes an interceptor chain from the legacy\n * class-based interceptors and runs the request through it.\n */\nfunction legacyInterceptorFnFactory() {\n let chain = null;\n return (req, handler) => {\n if (chain === null) {\n const interceptors = inject(HTTP_INTERCEPTORS, { optional: true }) ?? [];\n // Note: interceptors are wrapped right-to-left so that final execution order is\n // left-to-right. That is, if `interceptors` is the array `[a, b, c]`, we want to\n // produce a chain that is conceptually `c(b(a(end)))`, which we build from the inside\n // out.\n chain = interceptors.reduceRight(adaptLegacyInterceptorToChain, interceptorChainEndFn);\n }\n const pendingTasks = inject(ɵInitialRenderPendingTasks);\n const taskId = pendingTasks.add();\n return chain(req, handler).pipe(finalize(() => pendingTasks.remove(taskId)));\n };\n}\nclass HttpInterceptorHandler extends HttpHandler {\n constructor(backend, injector) {\n super();\n this.backend = backend;\n this.injector = injector;\n this.chain = null;\n this.pendingTasks = inject(ɵInitialRenderPendingTasks);\n }\n handle(initialRequest) {\n if (this.chain === null) {\n const dedupedInterceptorFns = Array.from(new Set([\n ...this.injector.get(HTTP_INTERCEPTOR_FNS),\n ...this.injector.get(HTTP_ROOT_INTERCEPTOR_FNS, []),\n ]));\n // Note: interceptors are wrapped right-to-left so that final execution order is\n // left-to-right. That is, if `dedupedInterceptorFns` is the array `[a, b, c]`, we want to\n // produce a chain that is conceptually `c(b(a(end)))`, which we build from the inside\n // out.\n this.chain = dedupedInterceptorFns.reduceRight((nextSequencedFn, interceptorFn) => chainedInterceptorFn(nextSequencedFn, interceptorFn, this.injector), interceptorChainEndFn);\n }\n const taskId = this.pendingTasks.add();\n return this.chain(initialRequest, downstreamRequest => this.backend.handle(downstreamRequest))\n .pipe(finalize(() => this.pendingTasks.remove(taskId)));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HttpInterceptorHandler, deps: [{ token: HttpBackend }, { token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HttpInterceptorHandler }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.2.12\", ngImport: i0, type: HttpInterceptorHandler, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: HttpBackend }, { type: i0.EnvironmentInjector }]; } });\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/**\n * When a pending