{"version":3,"file":"main.f6f591204b585545.js","mappings":"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","names":["API_BASE_URL","InjectionToken","AccountService","constructor","http","baseUrl","this","undefined","me","url_","replace","options_","observe","responseType","headers","HttpHeaders","Accept","request","pipe","_observableMergeMap","response_","processMe","_observableCatch","HttpResponseBase","_observableThrow","e","response","status","responseBlob","HttpResponse","body","error","Blob","_headers","key","keys","get","blobToText","_responseText","result200","JSON","parse","jsonParseReviver","_observableOf","throwException","consentGiven","processConsentGiven","appInsightsConfig","processAppInsightsConfig","getFeatures","processGetFeatures","i0","HttpClient","factory","AccumulatedGroupService","index","processIndex","create","createGroup","stringify","processCreate","result400","ApplicationService","customizations","processCustomizations","ConnectionService","createSourceConnectionRequest","result201","delete","deleteSourceConnectionRequest","processDelete","result404","migrate","migrateSourceConnectionRequest","processMigrate","result202","id","Error","encodeURIComponent","processGet","startSync","sourceSynchronisation","processStartSync","loginForExport","processLoginForExport","importGroups","expertMode","formFile","content_","FormData","append","data","fileName","processImportGroups","GroupService","period","prefix","study","studyGroup","subjectId","synced","ignored","disabled","hasTeachers","sourceId","syncGroups","syncGroupsRequest","processSyncGroups","ignoreGroups","ignoreGroupsRequest","processIgnoreGroups","updateGroups","updateGroupsRequest","processUpdateGroups","bulkArchive","archiveTeamsRequest","processBulkArchive","archive","processArchive","deleteGroupsRequest","GroupSyncProfileService","list","processList","createGroupSyncProfileRequest","patch","updateGroupSyncProfileRequest","processPatch","SchoolService","select","addOrUpdate","addOrUpdateSchool","processAddOrUpdate","TenantService","createTenantRequest","update","updateTenantRequest","processUpdate","UserService","kind","unavailable","source","mainClass","position","positionId","mainSubject","mainSubjectCode","syncUsers","syncUsersRequest","processSyncUsers","matchUser","matchUserRequest","processMatchUser","checkUserGroups","processCheckUserGroups","batch","processBatch","result422","UserSyncProfileService","createUserSyncProfileRequest","updateUserSyncProfileRequest","SourceConnectionType","UserKind","BatchUserAction","ApiException","message","result","super","static","obj","isApiException","blob","Observable","observer","reader","FileReader","onload","event","next","target","complete","readAsText","PropertiesPluginIdentifier","BreezeChannelIdentifier","AnalyticsPluginIdentifier","strShimFunction","strShimObject","strShimUndefined","strShimPrototype","strShimHasOwnProperty","ObjClass","Object","ObjProto","ObjAssign","assign","ObjCreate","ObjDefineProperty","defineProperty","ObjHasOwnProperty","_cachedGlobal","getGlobal","useCached","globalThis","self","window","global","throwTypeError","TypeError","objCreateFn","type","tmpFunc","_DYN_INITIALIZE","_DYN_NAME","_DYN_GET_NOTIFY_MGR","_DYN_IDENTIFIER","_DYN_PUSH","_DYN_IS_INITIALIZED","_DYN_CONFIG","_DYN_INSTRUMENTATION_KEY","_DYN_LOGGER","_DYN_LENGTH","_DYN_TIME","_DYN_PROCESS_NEXT","_DYN_GET_PROCESS_TEL_CONT0","_DYN_ADD_NOTIFICATION_LIS1","_DYN_REMOVE_NOTIFICATION_2","_DYN_STOP_POLLING_INTERNA3","_DYN_ON_COMPLETE","_DYN_GET_PLUGIN","_DYN_FLUSH","_DYN__EXTENSIONS","_DYN_SPLICE","_DYN_TEARDOWN","_DYN_MESSAGE_ID","_DYN_MESSAGE","_DYN_IS_ASYNC","_DYN__DO_TEARDOWN","_DYN_UPDATE","_DYN_GET_NEXT","_DYN_DIAG_LOG","_DYN_SET_NEXT_PLUGIN","_DYN_CREATE_NEW","_DYN_COOKIE_CFG","_DYN_INDEX_OF","_DYN_SUBSTRING","_DYN_USER_AGENT","_DYN_SPLIT","_DYN_SET_ENABLED","_DYN_SUBSTR","_DYN_NODE_TYPE","_DYN_APPLY","_DYN_REPLACE","_DYN_ENABLE_DEBUG_EXCEPTI4","_DYN_LOG_INTERNAL_MESSAGE","_DYN_TO_LOWER_CASE","_DYN_CALL","_DYN_TYPE","_DYN_HANDLER","_DYN_LISTENERS","_DYN_IS_CHILD_EVT","_DYN_GET_CTX","_DYN_SET_CTX","_DYN_COMPLETE","_DYN_TRACE_ID","_DYN_TRACE_FLAGS","_DYN_VERSION","STR_CHANNELS","STR_CORE","STR_CREATE_PERF_MGR","STR_DISABLED","STR_EXTENSION_CONFIG","STR_PROCESS_TELEMETRY","STR_PRIORITY","STR_EVENTS_SENT","STR_EVENTS_DISCARDED","STR_EVENTS_SEND_REQUEST","STR_PERF_EVENT","STR_ERROR_TO_CONSOLE","STR_WARN_TO_CONSOLE","STR_GET_PERF_MGR","strToISOString","cStrEndsWith","strIndexOf","strReduce","cStrTrim","strToString","strConstructor","_objDefineProperty","_objFreeze","_objKeys","StringProto","String","_strTrim","_strEndsWith","_dataToISOString","Date","_isArray","Array","isArray","_objToString","_fnToString","_objFunctionString","rCamelCase","rNormalizeInvalid","rLeadingNumeric","_objGetPrototypeOf","getPrototypeOf","_getObjProto","newProto","str__Proto","isUndefined","value","isNullOrUndefined","isNotNullOrUndefined","hasOwnProperty","prop","isObject","isFunction","normalizeJsName","name","isString","_all","letter","toUpperCase","match","objForEachKey","callbackfn","strContains","search","isDate","_isArrayPoly","isError","isNumber","isBoolean","isPlainObject","proto","toISOString","date","_toISOStringPoly","getUTCFullYear","pad","num","r","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","toFixed","slice","arrForEach","arr","thisArg","len","idx","arrIndexOf","searchElement","fromIndex","from","lp","Math","max","abs","arrMap","results","strMap","_this","arrReduce","initialValue","arguments","strTrim","str","_objKeysHasDontEnumBug","toString","propertyIsEnumerable","_objKeysDontEnums","objKeys","objType","dontEnumsLength","objDefineAccessors","getProp","setProp","descriptor","enumerable","configurable","set","deepFreeze","objFreeze","_doNothing","dateNow","dt","now","getTime","getExceptionName","object","setValue","field","valChk","srcChk","theValue","getSetValue","defValue","getCfgValue","defaultValue","isTruthy","throwError","_createProxyFunction","funcName","srcFunc","src","originalArguments","proxyFunctionAs","theFunc","overwriteTarget","proxyFunctions","functionsToProxy","theFuncName","optimizeObject","theObject","objExtend","obj1","obj2","obj3","obj4","obj5","obj6","theArgs","extended","argLen","deep","arg","isArgArray","isArgObj","propOk","newValue","isNewArray","clone","_a","UNDEFINED","Constructor","Prototype","strFunction","DynInstFuncTable","DynProxyTag","DynClassName","DynInstChkTag","DynAllowInstChkTag","DynProtoDefaultOptions","UnknownValue","DynProtoBaseProto","DynProtoGlobalSettings","DynProtoCurrent","strUseBaseInst","strSetInstFuncs","Obj","_objGetOwnProps","getOwnPropertyNames","_gbl","_getGlobal","_gblInst","o","n","_hasOwnProperty","call","_isObjectOrArrayPrototype","_isObjectArrayOrFunctionPrototype","Function","curProto","_forEachProp","func","props","name_1","push","length","_isDynamicCandidate","skipOwn","_throwTypeError","_hasVisited","values","_getInstFunc","currentDynProtoProxy","instFunc","instFuncTable","canAddInst","objProto","visited","protoFunc","_getProtoFunc","_getObjName","unknownValue","dynamicProto","theClass","delegateFunc","options","classProto","_checkPrototype","thisTarget","thisProto","className","perfOptions","useBaseInst","instFuncs","_getInstanceFuncs","baseFuncs","_getBaseFuncs","_instFuncProxy","funcHost","apply","baseProto","setInstanceFunc","_populatePrototype","baseInstFuncs","instFuncs_1","_createDynamicPrototype","dynProtoProxy","strJSON","strMsie","strTrident","strXMLHttpRequest","_isTrident","_navUserAgentCheck","_useXDomainRequest","_beaconsSupported","_hasProperty","property","supported","getGlobalInst","gbl","hasWindow","Boolean","getWindow","hasDocument","document","getDocument","hasNavigator","navigator","getNavigator","hasHistory","history","getLocation","checkForMock","location","getPerformance","hasJSON","getJSON","isIE","nav","userAgent","getIEVersion","userAgentStr","navigator_1","ua","doc","parseInt","strDocumentMode","tridentVer","dumpObj","objectTypeDump","propertyValueDump","stack","isBeaconsSupported","sendBeacon","isFetchSupported","withKeepAlive","isSupported","useXDomainRequest","XDomainRequest","isXhrSupported","_debugListener","listenerFuncs","_aiNamespace","_listenerProxyFunc","config","args","dbgExt","getDebugExt","listener","ns","disableDbgExt","_getExtensionNamespace","ApplicationInsights","ChromeDbgExt","_sanitizeDiagnosticText","text","_logToConsole","theConsole","getConsole","console","logFunc","_InternalLogMessage","msgId","msg","isUserAct","properties","_self","strProps","diagnosticText","dataType","safeGetLogger","core","DiagnosticLogger","identifier","queue","_loggingLevelConsole","_loggingLevelTelemetry","_maxInternalMessageLimit","_enableDebugExceptions","_messageCount","_messageLogged","_logInternalMessage","severity","_areInternalMessagesThrottled","logMessage","messageKey","_debugExtMsg","throttleLimitMessage","throttleMessage","_setDefaultsFromConfig","loggingLevelConsole","loggingLevelTelemetry","maxMessageLimit","consoleLoggingLevel","telemetryLoggingLevel","maxInternalMessageLimit","throwInternal","resetInternalMessageCount","__ieDyn","_getLogger","logger","_throwInternal","_warnToConsole","strToGMTString","strToUTCString","strCookie","strExpires","strEnabled","strIsCookieUseDisabled","strDisableCookiesUsage","strConfigCookieMgr","_supportsCookies","_allowUaSameSite","_parsedCookieValue","_doc","_cookieCache","_globalCookieConfig","_gblCookieMgr","inst","createCookieMgr","_isMgrEnabled","cookieMgr","isEnabled","_isIgnoredCookie","cookieMgrCfg","ignoreCookies","safeGetCookieMgr","getCookieMgr","cookieCfg","rootConfig","cookieMgrConfig","_createCookieMgrConfig","cookieDomain","cookiePath","cookieEnabled","_path","path","_domain","domain","_enabled","enabled","areCookiesSupported","gblManager","maxAgeSec","_isBlockedCookie","blockedCookies","_extractParts","_isIE","expireMs","expiry","setTime","_formatDate","location_1","protocol","uaDisallowsSameSiteNone","setCookie","_setCookieValue","_formatCookieValue","getCookie","_getCookieValue","del","purge","delCookie","exception","thePart","theDate","cookieValue","theCookie","strEndsWith","_strEndsWithPoly","searchLen","valLen","pos","UInt32Mask","MaxUInt32","_mwcSeeded","_mwcW","_mwcZ","_mwcSeed","seedValue","_autoSeedMwc","random","random32","signed","c","getCrypto","getMsCrypto","getRandomValues","Uint32Array","mwcRandom32","floor","newId","maxLength","number","chars","charAt","instanceName","_dataUid","_canAcceptData","createUniqueNamespace","includeVersion","createElmNodeData","accept","addDefault","theCache","_getCache","_createAccessor","kill","strAttachEvent","strAddEventHelper","strDetachEvent","strRemoveEventListener","strEvents","strVisibilityChangeEvt","strPageHide","strBeforeUnload","strPageHideNamespace","rRemoveEmptyNs","rRemoveTrailingEmptyNs","_guid","elmNodeData","eventNamespace","_normalizeNamespace","_getEvtNamespace","eventName","evtNamespace","theNamespace_1","parsedEvent","exec","sort","join","_getRegisteredEvents","evtName","aiEvts","registeredEvents","_doDetach","handlerRef","useCapture","_doUnregister","events","unRegFn","theEvent","capture","mergeEvtNamespace","theNamespace","namespaces","concat","eventOn","_doAttach","registeredEvent","guid","eventOff","evtName_1","found_1","_unregisterEvents","eventCache","evtType","regEvent","addEventHandler","callback","w","_addEventListeners","excludeEvents","added","removeEventListeners","removeEventHandler","addPageHideEventListener","newNamespaces","pageUnloadAdded","_handlePageVisibility","evt","visibilityState","_canUseCookies","_cookieMgrs","generateW3CId","tmp","hexValues","oct","a","clockSequenceHi","CoreUtils","isTypeof","theType","objCreate","disableCookies","newGuid","uuid","perfNow","perf","randomValue","maxValue","mwcRandomSeed","_legacyCookieMgr","legacyCanUseCookies","mgr","INVALID_TRACE_ID","INVALID_SPAN_ID","_isValid","invalidValue","_formatValue","createTraceParent","traceId","spanId","flags","version","isValidTraceId","isValidSpanId","traceFlags","formatTraceParent","_formatFlags","isNaN","DisabledPropertyName","SampleRate","ProcessLegacy","HttpMethod","DEFAULT_BREEZE_ENDPOINT","DEFAULT_BREEZE_PATH","strNotSpecified","strIkey","createDomEvent","Event","createEvent","initEvent","_DYN_INGESTIONENDPOINT","_DYN_TO_STRING","_DYN_REMOVE_ITEM","_DYN_STRINGIFY","_DYN_PATHNAME","_DYN_CORRELATION_HEADER_E0","_DYN_EXCEPTIONS","_DYN_PARSED_STACK","_DYN_PROPERTIES","_DYN_MEASUREMENTS","_DYN_SIZE_IN_BYTES","_DYN_TYPE_NAME","_DYN_SEVERITY_LEVEL","_DYN_PROBLEM_GROUP","_DYN_IS_MANUAL","_DYN__CREATE_FROM_INTERFA1","_DYN_HAS_FULL_STACK","_DYN_LEVEL","_DYN_METHOD","_DYN_ASSEMBLY","_DYN_FILE_NAME","_DYN_LINE","_DYN_DURATION","_DYN_RECEIVED_RESPONSE","stringToBoolOrDefault","msToTimeSpan","totalms","ms","round","sec","min","hour","days","isCrossOriginError","url","lineNumber","columnNumber","createEnumStyle","enumClass","RequestHeaders","createValueMap","mapClass","requestContextHeader","requestContextTargetKey","requestContextAppIdFormat","requestIdHeader","traceParentHeader","traceStateHeader","sdkContextHeader","sdkContextHeaderAppIdRequest","requestContextHeaderLowerCase","StorageType","LocalStorage","SessionStorage","_canUseLocalStorage","AI","AI_AND_W3C","W3C","_canUseSessionStorage","_getLocalStorageObject","utlCanUseLocalStorage","_getVerifiedStorageObject","storageType","uid","storage","setItem","fail","getItem","_getSessionStorageObject","utlCanUseSessionStorage","utlDisableStorage","reset","utlGetLocalStorage","utlSetLocalStorage","utlRemoveStorage","utlGetSessionStorage","utlSetSessionStorage","utlRemoveSessionStorage","dataSanitizeKeyAndAddUniqueness","map","origLength","dataSanitizeKey","i","uniqueField","dsPadNumber","nameTrunc","dataSanitizeString","valueTrunc","dataSanitizeUrl","dataSanitizeInput","dataSanitizeMessage","messageTrunc","dataSanitizeException","exceptionTrunc","dataSanitizeProperties","tempProps_1","dataSanitizeMeasurements","measurements","tempMeasurements_1","measure","dataSanitizeId","input","_msgId","inputTrunc","s","substr","MAX_NAME_LENGTH","MAX_ID_LENGTH","MAX_PROPERTY_LENGTH","MAX_STRING_LENGTH","MAX_URL_LENGTH","MAX_MESSAGE_LENGTH","MAX_EXCEPTION_LENGTH","_DYN_SANITIZE_KEY_AND_ADD2","sanitizeKey","sanitizeString","sanitizeUrl","sanitizeMessage","_DYN_SANITIZE_EXCEPTION","_DYN_SANITIZE_PROPERTIES","_DYN_SANITIZE_MEASUREMENT3","sanitizeId","sanitizeInput","padNumber","trim","_document","_htmlAnchorIdx","_htmlAnchorElement","urlParseUrl","anchorIdx","anchorCache","tempAnchor","createElement","host","urlParseHost","href","inclPort","fullHost","urlParseFullHost","port","_internalEndpoints","isInternalApplicationInsightsEndpoint","endpointUrl","Util","NotSpecified","disableStorage","canUseLocalStorage","getStorage","setStorage","removeStorage","canUseSessionStorage","getSessionStorageKeys","utlGetSessionStorageKeys","getSessionStorage","setSessionStorage","removeSessionStorage","coreDisableCookies","canUseCookies","disallowsSameSiteNone","deleteCookie","toISOStringForIE8","dump","coreGetExceptionName","attachEvent","eventNameWithoutOn","IsBeaconApiSupported","getExtension","getExtensionByName","extensions","extension","CorrelationIdHelper","correlationIdPrefix","canIncludeCorrelationHeader","requestUrl","currentHost","disableCorrelationHeaders","correlationHeaderExcludePatterns","test","requestHost","enableCorsCorrelation","matchExists_1","includedDomains","correlationHeaderDomains","regex","RegExp","toLowerCase","excludedDomains","correlationHeaderExcludedDomains","getCorrelationContext","responseHeader","correlationId","getCorrelationContextValue","keyValues","keyValue","dateTimeUtilsNow","timing","navigationStart","dateTimeUtilsDuration","start","end","createDistributedTraceContextFromTrace","telemetryTrace","parentCtx","trace","getName","setName","getTraceId","traceID","setTraceId","getSpanId","parentID","setSpanId","getTraceFlags","setTraceFlags","newTraceFlags","strParentContextKey","strChildrenContextKey","PerfEvent","payloadDetails","isAsync","theDetails_1","accessorDefined","strExecutionContextKey","childTime","childEvts","childEvt","exTime","payload","ParentContextKey","ChildrenContextKey","PerfManager","manager","ctx","fire","perfEvent","doPerfActiveKey","doPerf","mgrSource","getSource","details","perfMgr","perfEvt","currentActive","children","ex","pluginStateData","_getPluginState","plugin","initializePlugins","processContext","pluginState","initPlugins","lastPlugin","proxy","thePlugin","getCfg","sortPlugins","plugins","extA","extB","bHasProcess","strHasRunFlags","strGetTelCtx","_chainId","_createInternalContext","telemetryChain","startAt","_nextProxy","_onComplete","_getNextProxyStart","createTelemetryProxyChain","context","_next","_moveNext","nextProxy","completeDetails","diagLog","getExtCfg","_getExtCfg","getConfig","_getConfig","extConfig","hasNext","getNext","setNext","nextPlugin","iterate","_iterateChain","cb","onComplete","_addOnComplete","that","_i","mergeDefault","theConfig","newConfig_1","cfgValue","createProcessTelemetryContext","internalContext","_processNext","env","_createNew","createProcessTelemetryUnloadContext","unloadState","unload","createProcessTelemetryUpdateContext","updateState","firstProxy","add","lastProxy_1","newProxy","createTelemetryPluginProxy","chainId","hasProcessTelemetry","hasSetNext","proxyChain","getPlugin","processTelemetry","_processTelemetry","itemCtx","_processChain","_getTelCtx","_callProcessTelemetry","item","sync","_unloadPlugin","unloadCtx","_callTeardown","hasRun","pluginCore","_updatePlugin","updateCtx","_callUpdate","_id","_setNext","processPluginFn","hasRunContext","nextId","hasNextRun","createUnloadHandlerContainer","handlers","_addHandler","handler","run","_runHandlers","strGetPlugin","BaseTelemetryPlugin","_isinitialized","_rootCtx","_nextPlugin","_unloadHandlerContainer","_hooks","currentCtx","_setDefaults","pluginChain","_initDefaults","unloadDone","theUnloadCtx","theUnloadState","reason","_unloadCallback","oldHooks","fn","rm","updateDone","theUpdateCtx","_doUpdate","_updateCallback","_addHook","hooks","setInitialized","isInitialized","ApplicationinsightsAngularpluginErrorService","errorServices","instance","analyticsPlugin","addErrorHandler","errorService","handleError","removeErrorHandler","indexOf","splice","trackException","ɵfac","ɵprov","AngularPlugin","priority","_angularCfg","_eventSubscription","_doTeardown","asyncCallback","unsubscribe","propertiesPlugin","initialize","router","isPageInitialLoad","trackPageView","uri","subscribe","NavigationEnd","duration","processNext","pageView","pathname","ɵcmp","selectors","decls","__assignFn","t","p","extendStaticsFn","d","b","__proto__","__extendsFn","__","__spreadArrayFn","to","il","j","createTelemetryItem","baseType","envelopeName","customProperties","systemProperties","iKey","telemetryItem","time","ext","tags","baseData","aiDataContract","ver","envelopeType","Trace","severityLevel","DataPoint","count","stdDev","Metric","metrics","dataPoint","_DYN_COUNT","PageView","durationMs","PageViewPerformance","unused","cs4BaseData","perfTotal","networkConnect","sentRequest","receivedResponse","domProcessing","strError","strStack","strStackDetails","strErrorSrc","strMessage","strDescription","_stringify","convertToString","_formatMessage","errorType","evtMessage","filename","lineno","colno","_isStackDetails","_convertStackObj","errorStack","items","_getStackFromErrorObj","errorObj","opera","_getOperaStack","errorMessage","lines","entry","_getErrorType","typeName","_formatErrorCode","Exception","exceptions","_isExceptionInternal","_ExceptionDetails","CreateAutoException","errorSrc","stackDetails","CreateFromInterface","__assign","prototype","toInterface","_b","problemGroup","isManual","exceptionDetailsInterface","CreateSimpleException","assembly","line","formatError","outerId","hasFullStack","parsedStack","_isExceptionDetailsInternal","_parseStack","frames","level_1","totalSizeInBytes_1","frame","theFrame","_StackFrame","parsedFrame","left","right","size","acceptedLeft","acceptedRight","_formatStackTrace","sourceFrame","level","method","matches","sizeInBytes","baseSize","RemoteDependencyData","absoluteUrl","commandName","success","resultCode","requestAPI","correlationContext","dependencyKind","dependencySource","dependencyTypeName","dependencyFields","AjaxHelperParseDependencyPath","parsedUrl","pathName","aiInstrumentHooks","cbNames","_arrLoop","_doCallbacks","callDetails","cbArgs","hookCtx","hook","cbks","err","orgEx","hookErrorCb","_getOwner","checkPrototype","owner","_createInstrumentHook","callbacks","aiHook","newFunc","_createFunctionHook","funcThis","orgArgs","h","funcArgs","_replaceArg","_createArgs","f","rslt","theHook","InstrumentFunc","InstrumentEvent","_DYN_DISABLE_EXCEPTION_TR0","_DYN_AUTO_TRACK_PAGE_VISI1","_DYN_OVERRIDE_PAGE_VIEW_D2","_DYN_ENABLE_UNHANDLED_PRO3","_DYN_SAMPLING_PERCENTAGE","_DYN_IS_STORAGE_USE_DISAB4","_DYN_IS_BROWSER_LINK_TRAC5","_DYN_ENABLE_AUTO_ROUTE_TR6","_DYN_NAME_PREFIX","_DYN_DISABLE_FLUSH_ON_BEF7","_DYN_CORE","_DYN_DATA_TYPE","_DYN_ENVELOPE_TYPE","_DYN_TRACK","_DYN_TRACK_PAGE_VIEW","_DYN_TRACK_PREVIOUS_PAGE_9","_DYN_SEND_PAGE_VIEW_INTER10","_DYN_SEND_PAGE_VIEW_PERFO11","_DYN_POPULATE_PAGE_VIEW_P12","_DYN_HREF","_DYN_SEND_EXCEPTION_INTER13","_DYN_EXCEPTION","_DYN_ERROR","_DYN__ONERROR","_DYN_ERROR_SRC","_DYN_LINE_NUMBER","_DYN_COLUMN_NUMBER","_DYN__CREATE_AUTO_EXCEPTI14","_DYN_ADD_TELEMETRY_INITIA15","_DYN_IS_PERFORMANCE_TIMIN16","_DYN_GET_PERFORMANCE_TIMI17","_DYN_NAVIGATION_START","_DYN_SHOULD_COLLECT_DURAT18","_DYN_IS_PERFORMANCE_TIMIN19","_DYN_RESPONSE_START","_DYN_LOAD_EVENT_END","_DYN_RESPONSE_END","_DYN_CONNECT_END","_DYN_PAGE_VISIT_START_TIM20","PageViewManager","appInsights","overridePageViewDuration","pageViewPerformanceManager","_logger","intervalHandle","itemQueue","pageViewPerformanceSent","_flushChannels","flush","title","customDuration","pageViewSent","_addQueue","setInterval","allItems","doFlush","clearInterval","processed","pageViewPerformance","isValid","teardown","botAgentNames","_isPerformanceTimingSupported","_isPerformanceTimingDataReady","domainLookupStart","_DYN_REQUEST_START","domLoading","_getPerformanceTiming","_shouldCollectDuration","durations","_navigator","isGoogleBot","PageViewPerformanceManager","navigationTiming","_getPerformanceNavigationTiming","_isPerformanceNavigationTimingSupported","getEntriesByType","_DYN_GET_ENTRIES_BY_TYPE","total","network","dom","startTime","requestStart","responseEnd","PageVisitTimeManager","pageVisitTimeTrackingHandler","prevPageVisitDataKeyName","currentPageName","currentPageUrl","prevPageVisitTimeData","restartPageVisitTimer","pageName","pageUrl","prevPageVisitData","stopPageVisitTimer","pageVisitEndTime","pageVisitDataJsonStr","pageVisitTime","startPageVisitTimer","currPageVisitData","PageVisitData","currPageVisitDataStr","Timing","_events","stop","action","_dispatchEvent","evnt","dispatchEvent","_configMilliseconds","_getDefaultConfig","sessionRenewalMs","sessionExpirationMs","enableDebug","disableFlushOnUnload","AnalyticsPlugin","_super","_eventTracking","_pageTracking","_pageViewManager","_pageViewPerformanceManager","_pageVisitTimeManager","_preInitTelemetryInitializers","_isBrowserLinkTrackingEnabled","_browserLinkInitializerAdded","_enableAutoRouteTracking","_historyListenerAdded","_disableExceptionTracking","_autoExceptionInstrumented","_enableUnhandledPromiseRejectionTracking","_autoUnhandledPromiseInstrumented","_prevUri","_currUri","_evtNamespace","autoRoutePVDelay","_base","trackEvent","EventTelemetry","startTrackEvent","stopTrackEvent","trackTrace","trackMetric","metric","inPv","refUri","referrer","trackPageViewPerformance","inPvp","startTrackPage","stopTrackPage","measurement","loc","theError","_window","strEvent","URL","_sendCORSException","errorString","telemetryInitializer","initializer","_populateDefaults","defaults","_updateStorageUsage","utlEnableStorage","trackPageVisitTime","average","sampleCount","PageName","PageUrl","_updateBrowserLinkTracking","_addDefaultTelemetryInitializers","browserLinkPaths_1","envelope","remoteData","_updateExceptionTracking","locn","autoExceptionInstrumented","rsp","_addUnhandledPromiseRejectionTracking","_location","_getReason","autoUnhandledPromiseInstrumented","_updateLocationChange","win","_history","getHistory","pushState","replaceState","strUndefined","_addHistoryListener","namePrefix","_popstateHandler","_locationChangeHandler","distributedTraceCtx","_getDistributedTraceCtx","getTraceCtx","traceLocationName","hash","setTimeout","bind","__extends","Version","getDefaultConfig","_aiNameFunc","baseName","aiName","_aiApplication","_aiDevice","_aiLocation","_aiOperation","_aiSession","_aiUser","_aiCloud","_aiInternal","ContextTagKeys","createClassFromInterface","class_1","_this_1","applicationVersion","applicationBuild","applicationTypeId","applicationId","applicationLayer","deviceId","deviceIp","deviceLanguage","deviceLocale","deviceModel","deviceFriendlyName","deviceNetwork","deviceNetworkName","deviceOEMName","deviceOS","deviceOSVersion","deviceRoleInstance","deviceRoleName","deviceScreenResolution","deviceType","deviceMachineName","deviceVMName","deviceBrowser","deviceBrowserVersion","locationIp","locationCountry","locationProvince","locationCity","operationId","operationName","operationParentId","operationRootId","operationSyntheticSource","operationCorrelationVector","sessionId","sessionIsFirst","sessionIsNew","userAccountAcquisitionDate","userAccountId","userId","userStoreRegion","userAuthUserId","userAnonymousUserAcquisitionDate","userAuthenticatedUserAcquisitionDate","cloudName","cloudRole","cloudRoleVer","cloudRoleInstance","cloudEnvironment","cloudLocation","cloudDeploymentUnit","internalNodeName","internalSdkVersion","internalAgentVersion","internalSnippet","internalSdkSrc","Extensions","CtxTagKeys","Envelope","sampleRate","Data","STR_DURATION","_DYN_TAGS","_DYN_DEVICE_TYPE","_DYN_DATA","_DYN_ON_LINE","_DYN_ENQUEUE","_DYN_EMIT_LINE_DELIMITED_0","_DYN_CLEAR","_DYN_BATCH_PAYLOADS","_DYN_MARK_AS_SENT","_DYN_CLEAR_SENT","_DYN__BUFFER__KEY","_DYN__SENT__BUFFER__KEY","_DYN__MAX__BUFFER__SIZE","_DYN_MAX_BATCH_SIZE_IN_BY1","_DYN_TRIGGER_SEND","_DYN_ONUNLOAD_DISABLE_BEA2","_DYN_IS_BEACON_API_DISABL3","_DYN__SENDER","_DYN__SENDER_CONFIG","_DYN__BUFFER","_DYN_ENABLE_SESSION_STORA4","_DYN_ENDPOINT_URL","_DYN_CUSTOM_HEADERS","_DYN_DISABLE_XHR","_DYN_ONUNLOAD_DISABLE_FET5","_DYN_DISABLE_TELEMETRY","_DYN_BASE_TYPE","_DYN_SAMPLE_RATE","_DYN_CONVERT_UNDEFINED","_DYN__ON_ERROR","_DYN__ON_PARTIAL_SUCCESS","_DYN__ON_SUCCESS","_DYN_ITEMS_ACCEPTED","_DYN_IS_RETRY_DISABLED","_DYN_SET_REQUEST_HEADER","_DYN_MAX_BATCH_INTERVAL","_DYN_EVENTS_SEND_REQUEST","_DYN_DISABLE_INSTRUMENTAT7","_DYN_GET_SAMPLING_SCORE","strBaseType","strBaseData","strProperties","_setValueIf","_extractPropsAndMeasurements","_convertPropsUndefinedToCustomDefinedValue","customUndefinedValue","_createEnvelope","iKeyNoDashes","_extractPartAExtensions","envTags","itmExt","itmTags","extUser","user","authId","localId","extApp","app","sesId","extDevice","device","deviceClass","ip","model","web","browserLang","browserVer","browser","envData","envBaseData","envProps","screenRes","userConsent","extOs","os","extTrace","tgs","tg","theTags","EnvelopeCreator","EnvelopeCreatorInit","EventEnvelopeCreator","customMeasurements","baseTypeSource","eventData","_disableEvents","BaseSendBuffer","_buffer","_bufferFullMessageSent","_get","_set","buffer","eventsLimitInMem","getItems","ArraySendBuffer","SessionStorageSendBuffer","bufferItems","_getBuffer","notDeliveredItems","_removePayloadsFromBuffer","payloads","remaining","prefixedKey","bufferJson","buffer_1","_setBuffer","sentElements","BUFFER_KEY","SENT_BUFFER_KEY","MAX_BUFFER_SIZE","Serializer","_serializeObject","circularReferenceCheck","output","_serializeStringMap","_serializeArray","contract","isRequired","isHidden","isPresent","isObj","sources","expectedType","parseFloat","serialize","HashCodeScoreGenerator","getHashCodeScore","getHashCode","INT_MAX_VALUE","charCodeAt","SamplingScoreGenerator","hashCodeGenerator","_DYN_GET_HASH_CODE_SCORE","Sample","samplingRate","samplingScoreGenerator","isSampledIn","samplingPercentage","_getResponseText","xhr","responseText","_getDefaultAppInsightsChannelConfig","EnvelopeTypeCreator","TraceEnvelopeCreator","PageViewEnvelopeCreator","currentContextId","bd","pageType","isLoggedIn","pageViewData","PageViewPerformanceEnvelopeCreator","ExceptionEnvelopeCreator","exData","MetricEnvelopeCreator","baseMetricData","DependencyEnvelopeCreator","remoteDepData","responseCode","Sender","_senderConfig","_consecutiveErrors","_retryAt","_paused","_timeoutHandle","_serializer","_stamp_specific_redirects","_fallbackSender","_syncUnloadSender","_offlineListener","_syncFetchPayload","_checkResponsStatus","responseUrl","countOfItemsInPayload","res","_appId","_parseResponse","appId","_checkAndUpdateEndPointUrl","_isRetriable","_resendPayload","isOnline","_doUnloadSend","_beaconSender","_doBeaconSend","plainTextBatch","queued","_onSuccess","droppedPayload","thePayload","_xhrSender","XMLHttpRequest","endPointUrl","open","headerName","onreadystatechange","_xhrReadyStateChange","onerror","_formatErrorMessageXhr","send","_fetchKeepAliveSender","payloadSize","_doFetchSender","_fetchSender","requestHeaders","Headers","batchLength","ignoreResponse","responseHandled","init","keepalive","Request","fetch","then","ok","statusText","catch","itemsReceived","itemsAccepted","errors","linearFactor","payload_1","_setRetryTime","delayInSeconds","backOffSlot","pow","backOffDelay","retryAfterTimeSpan","_setupTimer","retryInterval","timerValue","_clearScheduledTimer","clearTimeout","statusCode","_xdrSender","xdr","_xdrOnLoad","_formatErrorMessageXdr","hostingProtocol","lastIndexOf","_sample","pause","resume","callBack","sendReason","onunloadFlush","addHeader","createOfflineListener","parentEvtNamespace","_isListening","_onlineStatus","_enableEvents","ononline","_setOnline","_setOffline","_isOnline","isListening","_unload","_validateInstrumentationKey","customHeaders","customHeader","header","senderConfig","sendPostFunc","diagLogger","_isSampledIn","convertUndefined","defaultEnvelopeIkey","aiEnvelope_1","constructEnvelope","doNotSendItem_1","_DYN__XHR_READY_STATE_CHA6","readyState","responseURL","async","forcedSender","_notifySendRequest","sendRequest","_getNotifyMgr","_notificationManager","ieVer","failed","retry","errors_1","reverse","extracted","_DYN_ITEMS_RECEIVED","orig","_addChannelQueue","channelQueue","queueItem","chain","Verbose","Information","Warning","Critical","TelemetryInitializerPlugin","_initializers","addTelemetryInitializer","theInitializer","remove","doNotSendItem","telemetryInitializersCount","strValidationError","strNotificationManager","strSdkUnloadingError","defaultInitConfig","_createPerfManager","notificationMgr","_isPluginPresent","exists","BaseCore","_config","_isInitialized","_eventQueue","_perfManager","_cfgPerfManager","_cookieManager","_pluginChain","_configExtensions","_coreExtensions","_channelControl","_channelConfig","_channelQueue","_isUnloading","_telemetryInitializerPlugin","_internalLogsEventName","_unloadHandlers","_traceCtx","_internalLogPoller","_createTelCtx","_getPluginChain","_initPluginChain","theExtensions","_validateExtensions","channelPriority","allExtensions","coreExtensions","extPriorities","extPriority","all","createChannelQueues","channels","extensionQueue_1","_setQueue","createChannelControllerPlugin","_processChannelQueue","theChannels","processFn","waiting","_runChainOnComplete","chainCtx","theUpdateState","getChannel","_getChannel","pluginIdentifier","cbTimeout","doneIterating","cbTimer","doCallback","handled_1","_updateHook","_getPlugin","theExt","removeCb","pluginsToRemove","_removePlugins","removed","thePlugins","removeComplete","newConfigExtensions","newChannelConfig","newQueue","channel","_flushInternalLogs","track","_logOrThrowError","notificationManager","_initDebugListener","getDebugListener","_initPerfManager","enablePerfMgr","_initExtConfig","NotificationManager","cfgExtensions","__spreadArray","releaseQueue","getTransmissionControls","controls","_createDummyNotificationManager","setCookieMgr","createPerfMgr","setPerfMgr","eventCnt","eventQueue","pollInternalLogs","interval","diagnosticLogInterval","unloadComplete","flushComplete","processUnloadCtx","_doUnload","addPlugin","replaceExisting","addCb","existingPlugin","_addPlugin","removedPlugins_1","createNew","createDistributedTraceContext","_DYN_SPAN_ID","setTraceCtx","traceCtx","_runListeners","listeners","perfEvtsSendAll","AppInsightsCore","_notifyInvalidEvent","_validateTelemetryItem","STR_PROPERTIES","_DYN_REQUEST_URL","_DYN_INST","_DYN_CONTEXT","_DYN_TRACE_ID0","_DYN_SPAN_ID1","_DYN_INCLUDE_CORRELATION_2","_DYN_CAN_INCLUDE_CORRELAT3","_DYN_GET_ABSOLUTE_URL","_DYN_HEADERS","_DYN_REQUEST_HEADERS","_DYN_APP_ID","_DYN_TRACK_DEPENDENCY_DAT4","_DYN_DISTRIBUTED_TRACING_5","_DYN_START_TIME","_DYN_ENABLE_REQUEST_HEADE6","_DYN_ENABLE_AJAX_ERROR_ST7","_DYN_ENABLE_AJAX_PERF_TRA8","_DYN_MAX_AJAX_CALLS_PER_V9","_DYN_ENABLE_RESPONSE_HEAD10","_DYN_EXCLUDE_REQUEST_FROM11","_DYN_ADD_REQUEST_CONTEXT","_DYN_DISABLE_AJAX_TRACKIN12","_DYN_DISABLE_FETCH_TRACKI13","_DYN_STATUS","_DYN_STATUS_TEXT","_DYN_HEADER_MAP","_DYN_OPEN_DONE","_DYN_SEND_DONE","_DYN_REQUEST_SENT_TIME","_DYN_ABORT_DONE","_DYN_GET_TRACE_ID","_DYN_GET_TRACE_FLAGS","_DYN_ERROR_STATUS_TEXT","_DYN_STATE_CHANGE_ATTACHE14","_DYN_RESPONSE_TEXT","_DYN_RESPONSE_FINISHED_TI15","_DYN__CREATE_TRACK_ITEM","_DYN_RESPONSE","_DYN_GET_ALL_RESPONSE_HEA16","_DYN_GET_PART_APROPS","_DYN_GET_CORRELATION_CONT17","_DYN_PERF_MARK","_DYN_AJAX_PERF_LOOKUP_DEL18","_DYN_PERF_TIMING","_DYN_AJAX_DIAGNOSTICS_MES19","_DYN_CORRELATION_CONTEXT","_DYN_AJAX_TOTAL_DURATION","_DYN_EVENT_TRACE_CTX","_calcPerfDuration","resourceEntry","_setPerfDuration","_setPerfValue","strPerf","XHRMonitoringState","setRequestHeaderDone","ajaxRecord","completed","requestHeadersSize","responseReceivingDuration","callbackDuration","aborted","requestSize","responseStartedTime","callbackFinishedTime","endTime","xhrMonitoringState","clientFailure","getAbsoluteUrl","urlGetAbsoluteUrl","getPathName","urlGetCompleteUrl","ajaxType","enableRequestHeaderTracking","getResponse","ajaxTotalDuration","requestSentTime","responseFinishedTime","dependency","_populatePerfData","ajaxData","propsSet","strName","strStart","strConnect","strRedirect","strRequest","strResponse","strStartTime","strConnectEnd","strRequestStart","strResponseEnd","strRedirectStart","strRedirectEnd","strTransferSize","strEncodedBodySize","strDecodedBodySize","strServerTiming","strDomainLookup","serverTiming","server_1","val","perfAttempts","headerMap","responseHeaders","errorStatusText","strResponseText","partA","traceExt","AJAX_MONITOR_PREFIX","strDiagLog","strAjaxData","strFetch","ERROR_HEADER","ERROR_PREFIX","ERROR_POSTFIX","ERROR_NOT_SENT","CORRELATION_HEADER_ERROR","CUSTOM_REQUEST_CONTEXT_ERROR","FAILED_TO_CALCULATE_DURATION_ERROR","_markCount","_getFailedAjaxDiagnosticsMessage","_throwInternalCritical","ajaxMonitorInstance","_throwInternalWarning","_createErrorCallbackFunc","internalMessage","ajaxDiagnosticsMessage","_indexOf","container","theHandler","_processDependencyContainer","BLOB_CORE","DfltAjaxCorrelationHeaderExDomains","_internalExcludeEndpoints","distributedTracingMode","maxAjaxPerfLookupAttempts","ignoreHeaders","addIntEndpoints","_getEmptyConfig","emptyConfig","AjaxMonitor","_fetchInitialized","_xhrInitialized","_currentWindowHost","_enableRequestHeaderTracking","_enableAjaxErrorStatusText","_trackAjaxAttempts","_context","_isUsingW3CHeaders","_isUsingAIHeaders","_markPrefix","_enableAjaxPerfTracking","_maxAjaxCallsPerView","_enableResponseHeaderTracking","_disabledUrls","_disableAjaxTracking","_disableFetchTracking","_excludeRequestFromAutoTrackingPatterns","_addRequestContext","_dependencyHandlerId","_dependencyListeners","_dependencyInitializers","getEmptyConfig","_canIncludeHeaders","rlt","_hookProto","InstrumentProto","_isDisabledRequest","isDisabled","theUrl","theRegex","idx2","substring","_isMonitoredXhrInstance","excludeAjaxDataValidation","ajaxValidation","initialized","_createMarkId","performance_1","mark","markId","entries","getEntriesByName","_findPerfResourceEntry","initiatorType","trackCallback","reportError","perfMark","performance","maxAttempts","retryDelay","attempt","locateResourceTiming","perfTiming","getEntries","entryType","clearMarks","_getFailedFetchDiagnosticsMessage","_reportFetchMetrics","_reportFetchError","failedProps","errorProps","fetchDiagnosticsMessage","sysProperties","_reportDependencyInternal","initializers","instrumentationKey","_instrumentXhr","_supportsAjaxMonitoring","strPrototype","abort","theOpen","req","_openHandler","spanID","_attachToOnReadyStateChange","_onAjaxComplete","_reportXhrError","ajaxResponse","_getAjaxCorrelationContext","responseHeadersString","getResponseHeader","split","responseHeaderMap_2","parts","shift","exceptionText","hkErr","_instrumentFetch","_supportsFetch","_global","isPolyfill","polyfill","fetchData","_createFetchRecord","forEach","newInit","fetchData_1","_getFetchCorrelationContext","responseHeaderMap_1","_populateContext","propExt","trackDependencyData","currentWindowHost","_processDependencyListeners","traceParent","addDependencyListener","dependencyListener","addDependencyInitializer","dependencyInitializer","Application","Device","_DYN_SESSION_MANAGER","_DYN_IS_USER_COOKIE_SET","_DYN_IS_NEW_USER","_DYN_GET_TRACE_CTX","_DYN_TELEMETRY_TRACE","_DYN_APPLY_SESSION_CONTEX0","_DYN_APPLY_APPLICATION_CO1","_DYN_APPLY_DEVICE_CONTEXT","_DYN_APPLY_OPERATION_CONT2","_DYN_APPLY_USER_CONTEXT","_DYN_APPLY_OPERATING_SYST3","_DYN_APPLY_LOCATION_CONTE4","_DYN_APPLY_INTERNAL_CONTE5","_DYN_ACCOUNT_ID","_DYN_SDK_EXTENSION","_DYN_GET_SESSION_ID","_DYN_SESSION_COOKIE_POSTF6","_DYN_USER_COOKIE_POSTFIX","_DYN_ID_LENGTH","_DYN_GET_NEW_ID","_DYN_AUTOMATIC_SESSION","_DYN_AUTHENTICATED_ID","_DYN_SESSION_EXPIRATION_M7","_DYN_SESSION_RENEWAL_MS","_DYN_ACQUISITION_DATE","_DYN_RENEWAL_DATE","_DYN_COOKIE_DOMAIN","_DYN_JOIN","_DYN_COOKIE_SEPARATOR","_DYN_AUTH_USER_COOKIE_NAM8","Internal","sdkVersion","Location","Session","_SessionManager","_storageNamePrefix","_cookieUpdatedTimestamp","acquisitionSpan","renewalSpan","sessionCookiePostfix","_initializeAutomaticSessionWithData","session","sessionData","sessionReset","tokens","acqMs","renewalMs","_setCookie","nowMs","acq","renewalPeriodMs","acqTimeLeftMs","cookie","isExpired","_initializeAutomaticSession","storageValue","timeSinceAcqMs","timeSinceRenewalMs","_renew","getNewId","automaticSession","cookieUpdateInterval","backup","_setStorage","renewal","TelemetryTrace","parentId","_validateUserInput","User","isNewUser","isUserCookieSet","userCookiePostfix","userCookieName","params","_generateNewId","_generateNewCookie","acqStr","accountAcquisitionDate","_setUserCookie","authCookie","authCookieString","decodeURI","setAuthenticatedUserContext","authenticatedUserId","accountId","storeInCookie","encodeURI","clearAuthenticatedUserContext","cookieSeparator","authUserCookieName","strExt","strTags","_removeEmpty","TelemetryContext","defaultConfig","previousTraceCtx","application","internal","autoSession","build","agentVersion","snippetVer","sdkSrc","applyWebContext","cleanUp","PropertiesPlugin","_extensionConfig","_distributedTraceCtx","_previousTraceCtx","breezeChannel","_extConfig","theContext","userCtx","_processTelemetryInternal","nullValue","isBrowserLinkTrackingEnabled","_internalSdkSrc","STR_SNIPPET","STR_FLUSH","STR_POLL_INTERNAL_LOGS","STR_GET_PLUGIN","STR_EVT_NAMESPACE","_DYN_DIAGNOSTIC_LOG_INTER4","_DYN_QUEUE","_DYN_CONNECTION_STRING","_DYN_APP_INSIGHTS","_DYN_DISABLE_IKEY_DEPRECA18","_DYN_GET_TRANSMISSION_CON19","_DYN_ONUNLOAD_FLUSH","_DYN_ADD_HOUSEKEEPING_BEF20","_ignoreUpdateSnippetProperties","Initialization","snippet","dependencies","_sender","_snippetVersion","_houseKeepingNamespace","_core","sv","cs","parseConnectionString","connectionString","fields","kv","kvParts","endpointsuffix","ingest","ingestionendpoint","instrumentationkey","DependenciesPlugin","isErrMessageDisabled","_getSKUDefaults","_DYN_LOAD_APP_INSIGHTS","legacyMode","_updateSnippetProperties","emptyQueue","_DYN_UPDATE_SNIPPET_DEFIN0","proxyAssign","chkSet","_loop_1","length_1","appInsightsInstance","performHousekeeping","loadedPlugin","_sessionManager","excludePageUnloadEvents","disablePageUnloadEvents","_DYN_DISABLE_FLUSH_ON_BEF11","addPageUnloadEventListener","addEventListeners","isReactNative","product","_DYN_DISABLE_FLUSH_ON_UNL12","getSender","removePageUnloadEventListener","removePageHideEventListener","_TRACK","_getCurrentDependencies","cdns","scrpt","currentScript","AppInsightsService","applicationService","toPromise","angularPlugin","environment","extensionConfig","loadAppInsights","setUserId","CachedAccountService","accountService","userProfile","cacheUserProfile","_this2","CustomizationService","BehaviorSubject","Default","cachedCustomizations","customizations$","asObservable","productLink","logo","GRAPH_BASE_URL","GraphService","getCollection","getUserById","getGroupById","defaultGetOptions","mergeMap","catchError","log","of","appVersion","require","production","invalidTimingValue","exp","ɵRuntimeError","ngDevMode","isBrowser","isNode","process","optimizeGroupPlayer","players","NoopAnimationPlayer","ɵAnimationGroupPlayer","normalizeKeyframes$1","driver","normalizer","element","keyframes","preStyles","Map","postStyles","normalizedKeyframes","previousOffset","previousKeyframe","kf","offset","isSameOffset","normalizedKeyframe","normalizedProp","normalizedValue","normalizePropertyName","ɵPRE_STYLE","AUTO_STYLE","normalizeStyleValue","animationFailed","listenOnPlayer","player","onStart","copyAnimationEvent","onDone","onDestroy","phaseName","makeAnimationEvent","triggerName","fromState","toState","totalTime","_data","getOrSetDefaultValue","parseTimelineCommand","command","separatorPos","_contains","elm1","elm2","_query","selector","multi","_documentElement","getParentElement","parent","parentNode","Element","documentElement","contains","querySelectorAll","elem","querySelector","_CACHED_BODY","_IS_WEBKIT","containsElement","invokeQuery","NoopAnimationDriver","validateStyleProperty","getBodyNode","style","containsVendorPrefix","matchesElement","_element","_selector","query","computeStyle","animate","delay","easing","previousPlayers","scrubberAccessRequested","AnimationDriver","NOOP","ENTER_CLASSNAME","LEAVE_CLASSNAME","NG_TRIGGER_CLASSNAME","NG_TRIGGER_SELECTOR","NG_ANIMATING_CLASSNAME","NG_ANIMATING_SELECTOR","resolveTimingValue","_convertTimeValueToMS","unit","resolveTiming","timings","allowNegativeValues","parseTimeExpression","delayMatch","easingVal","containsErrors","startIndex","negativeStepValue","negativeDelayValue","copyObj","destination","convertToMap","styleMap","copyStyles","styles","backfill","getStyleAttributeString","writeStyleAttribute","styleAttrValue","getPropertyValue","startsWith","camelCaseToDashCase","setAttribute","setStyles","formerStyles","camelProp","dashCaseToCamelCase","has","eraseStyles","_","normalizeAnimationEntry","steps","sequence","PARAM_REGEX","extractStyleParams","lastIndex","interpolateParams","original","varName","localVal","invalidParamValue","iteratorToArray","iterator","done","DASH_CASE_REGEXP","m","visitDslNode","visitor","node","visitTrigger","visitState","visitTransition","visitSequence","visitGroup","visitAnimate","visitKeyframes","visitStyle","visitReference","visitAnimateChild","visitAnimateRef","visitQuery","visitStagger","invalidNodeType","nodeType","getComputedStyle","parseTransitionExpr","transitionValue","expressions","parseInnerTransitionStr","eventStr","parseAnimationAlias","alias","invalidTransitionAlias","invalidExpression","expr","separator","makeLambdaFromStates","TRUE_BOOLEAN_VALUES","Set","FALSE_BOOLEAN_VALUES","lhs","rhs","LHS_MATCH_BOOLEAN","RHS_MATCH_BOOLEAN","lhsMatch","rhsMatch","SELF_TOKEN_REGEX","buildAnimationAst","metadata","warnings","AnimationAstBuilderVisitor","_driver","AnimationAstBuilderContext","_resetContextStyleTimingState","currentQuerySelector","collectedStyles","currentTime","queryCount","depCount","states","transitions","invalidTrigger","definitions","def","stateDef","transition","invalidDefinition","styleAst","astParams","containsDynamicStyles","missingSubs","sub","invalidState","metadataName","animation","matchers","normalizeAnimationOptions","furthestTime","step","innerAst","timingAst","constructTimingAst","makeTimingAst","strValue","some","v","ast","dynamic","currentAnimateTimings","styleMetadata","isEmpty","newStyleData","_styleAst","isEmptyStep","_makeStyleAst","_validateStyleAst","metadataStyles","styleTuple","collectedEasing","styleData","tuple","collectedEntry","updateCollectedStyle","invalidParallelAnimation","firstStart","firstEnd","secondStart","secondEnd","validateStyleParams","invalidStyleParams","invalidKeyframes","totalKeyframesWithOffsets","offsets","offsetsOutOfOrder","keyframesOutOfRange","offsetVal","consumeOffset","invalidOffset","keyframeOffsetsOutOfOrder","generatedOffset","keyframesMissingOffsets","limit","animateDuration","durationUpToThisFrame","parentSelector","currentQuery","includeSelf","normalizeSelector","hasAmpersand","find","token","optional","originalSelector","invalidStagger","currentTransition","unsupportedCSSPropertiesFound","normalizeParams","createTimelineInstruction","preStyleProps","postStyleProps","subTimeline","ElementInstructionMap","_map","instructions","existingInstructions","clear","ENTER_TOKEN_REGEX","LEAVE_TOKEN_REGEX","buildAnimationTimelines","rootElement","enterClassName","leaveClassName","startingStyles","finalStyles","subInstructions","AnimationTimelineBuilderVisitor","buildKeyframes","AnimationTimelineContext","currentTimeline","delayNextStep","timelines","filter","timeline","containsAnimation","lastRootTimeline","allowOnlyTimelineStyles","elementInstructions","innerContext","createSubContext","_visitSubInstructions","transformIntoNewTimeline","previousNode","_applyAnimationRefDelays","animationsRefsOptions","animationRefOptions","animationDelay","animationDelayValue","instruction","instructionTimings","appendInstructionToTimeline","updateOptions","subContextCount","snapshotCurrentStyles","DEFAULT_NOOP_PREVIOUS_NODE","applyStylesToKeyframe","innerTimelines","mergeTimelineCollectedStyles","_visitTiming","incrementTime","hasCurrentStyleProperties","forwardFrame","applyEmptyStep","innerTimeline","forwardTime","elms","currentQueryTotal","sameElementTimeline","currentQueryIndex","parentContext","tl","maxTime","currentStaggerTime","startingTime","_enterClassName","_leaveClassName","initialTimeline","TimelineBuilder","skipIfExists","newOptions","optionsToUpdate","newParams","paramsToUpdate","_copyOptions","oldParams","newTime","fork","updatedTimings","builder","SubTimelineBuilder","stretchStartingKeyframe","elements","invalidQuery","_elementTimelineStylesLookup","_previousKeyframe","_currentKeyframe","_keyframes","_styleSummary","_localTimelineStyles","_pendingStyles","_backFill","_currentEmptyStepKeyframe","_globalTimelineStyles","_loadKeyframe","hasPreStyleStep","_updateStyle","flattenStyles","allStyles","allProperties","getFinalKeyframe","details1","details0","finalKeyframes","keyframe","finalKeyframe","preProps","postProps","kf0","kf1","_stretchStartingKeyframe","newKeyframes","startingGap","newFirstKeyframe","oldFirstKeyframe","roundOffset","oldOffset","decimalPoints","mult","AnimationStyleNormalizer","DIMENSIONAL_PROP_SET","WebAnimationsStyleNormalizer","propertyName","userProvidedProperty","normalizedProperty","strVal","valAndSuffixMatch","invalidCssUnitValue","createTransitionInstruction","isRemovalTransition","fromStyles","toStyles","queriedElements","EMPTY_OBJECT","AnimationTransitionFactory","_triggerName","_stateStyles","currentState","nextState","oneOrMoreTransitionsMatch","matchFns","buildStyles","stateName","styler","currentOptions","nextOptions","skipAstBuild","transitionAnimationParams","currentStateStyles","nextAnimationParams","nextStateStyles","preStyleMap","postStyleMap","isRemoval","animationOptions","applyParamDefaults","elm","queriedElementsList","userParams","AnimationStateStyles","defaultParams","combinedParams","AnimationTrigger","_normalizer","transitionFactories","balanceProperties","fallbackTransition","createFallbackTransition","containsQueries","matchTransition","matchStyles","stateMap","key1","key2","EMPTY_INSTRUCTION_MAP","TimelineAnimationEngine","bodyNode","_animations","_playersById","register","registerFailed","_buildPlayer","autoStylesMap","missingOrDestroyedAnimation","createAnimationFailed","destroy","_getPlayer","missingPlayer","listen","baseEvent","play","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","normalizeTriggerValue","absorbOptions","VOID_VALUE","DEFAULT_STATE_VALUE","AnimationTransitionNamespace","hostElement","_engine","_triggers","_queue","_elementListeners","_hostClassName","addClass","phase","missingTrigger","missingEvent","isTriggerEventValid","unsupportedTriggerEvent","triggersWithStates","statesByElement","afterFlush","_getTrigger","trigger","unregisteredTrigger","defaultToFallback","TransitionAnimationPlayer","objEquals","k1","k2","playersOnElement","playersByElement","isFallbackTransition","totalQueuedPlayers","removeClass","deregister","clearElementCache","elementPlayers","_signalRemovalForInnerTriggers","fetchNamespacesByElement","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","elementContainsData","containsData","TransitionAnimationEngine","newHostElements","disabledNodes","_namespaceLookup","_namespaceList","_flushFns","_whenQuietFns","namespacesByHostElement","collectedEnterElements","collectedLeaveElements","onRemovalComplete","queuedPlayers","createNamespace","_balanceNamespaceList","collectEnterElement","namespaceList","found","ancestor","ancestorNs","unshift","registerTrigger","_fetchNamespace","stateValue","isElementNode","insertBefore","markElementAsDisabled","isHostElement","hostNS","_buildInstruction","subTimelines","skipBuildAst","containerElement","destroyActiveAnimationsForElement","finishActiveQueriedAnimationOnElement","whenRenderingDone","Promise","resolve","classList","cleanupFns","_flushAnimations","quietFns","triggerTransitionsFailed","skippedPlayers","skippedPlayersMap","queuedInstructions","allPreStyleElements","allPostStyleElements","disabledElementsSet","nodesThatAreDisabled","allTriggerElements","enterNodeMap","buildRootMap","enterNodeMapIds","nodes","root","allLeaveNodes","mergedLeaveNodes","leaveNodesWithoutAnimations","leaveNodeMapIds","leaveNodeMap","allPlayers","erroneousTransitions","previousValue","nodeIsOrphaned","stringMap","setVal","transitionFailed","allPreviousPlayersMap","animationElementMap","_beforeAnimationBuild","_getPreviousPlayers","prevPlayer","replaceNodes","replacePostStylesAsPre","postStylesMap","cloakAndComputeStyles","preStylesMap","post","pre","rootPlayers","subPlayers","NO_PARENT_ANIMATION_ELEMENT_DETECTED","overrideTotalTime","parentWithAnimation","parentsToAdd","detectedParent","innerPlayer","_buildAnimation","setRealPlayer","parentPlayers","parentPlayer","playersForElement","syncPlayerEvents","queriedPlayerResults","queriedInnerElements","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","triggerCallback","_queueEvent","hasStarted","getPosition","cloakElement","oldValue","display","valuesMap","elementPropsMap","defaultStyle","cloakVals","failedElements","roots","rootMap","nodeSet","localRootMap","getRoot","postEntry","preEntry","AnimationEngine","_triggerCache","_transitionEngine","_timelineEngine","componentId","cacheKey","triggerBuildFailed","buildTrigger","onInsert","onRemove","disableAnimations","disable","eventPhase","SpecialCasedStyles","_startStyles","_endStyles","_state","initialStyles","initialStylesByElement","_initialStyles","WeakMap","filterNonAnimatableStyles","isNonAnimatableStyle","WebAnimationsPlayer","_specialStyles","_onDoneFns","_onStartFns","_onDestroyFns","_initialized","_finished","_started","_destroyed","_originalOnDoneFns","_originalOnStartFns","currentSnapshot","_duration","_delay","_onFinish","_preparePlayerBeforeStart","domPlayer","_triggerWebAnimation","_finalKeyframe","addEventListener","_resetDomPlayerState","_convertKeyframesToObject","kfs","fromEntries","cancel","methods","WebAnimationsDriver","validateAnimatableStyleProperty","playerOptions","fill","previousStyles","previousWebAnimationPlayers","allowPreviousPlayerStylesMerge","normalizeKeyframes","balancePreviousStylesIntoKeyframes","startingKeyframe","missingStyleProps","specialStyles","packageNonAnimatableStyles","startStyles","endStyles","BrowserAnimationBuilder","AnimationBuilder","rootRenderer","_nextAnimationId","_renderer","createRenderer","encapsulation","ViewEncapsulation","issueAnimationCommand","BrowserAnimationFactory","DOCUMENT","AnimationFactory","RendererAnimationPlayer","_command","_listen","renderer","setProperty","ANIMATION_PREFIX","DISABLE_ANIMATIONS_FLAG","AnimationRendererFactory","delegate","_zone","_currentId","_microtaskId","_animationCallbacksBuffer","_rendererCache","_cdRecurDepth","promise","removeChild","BaseAnimationRenderer","animationTriggers","AnimationRenderer","begin","_scheduleCountTask","scheduleListenerCallback","runOutsideAngular","i1","_onDestroy","destroyNode","namespace","createComment","createText","appendChild","newChild","refChild","isMove","oldChild","selectRootElement","selectorOrNode","preserveContent","nextSibling","el","removeAttribute","setStyle","removeStyle","resolveElementFromTarget","parseTriggerCallbackName","dotIndex","SHARED_ANIMATION_PROVIDERS","provide","useClass","ɵAnimationStyleNormalizer","useFactory","instantiateDefaultStyleNormalizer","ɵWebAnimationsStyleNormalizer","ɵAnimationEngine","InjectableAnimationEngine","appRef","ngOnDestroy","RendererFactory2","instantiateRendererFactory","zone","deps","ɵDomRendererFactory2","NgZone","BROWSER_ANIMATIONS_PROVIDERS","ɵWebAnimationsDriver","ANIMATION_MODULE_TYPE","useValue","BROWSER_NOOP_ANIMATIONS_PROVIDERS","ɵNoopAnimationDriver","BrowserAnimationsModule","ngModule","providers","ɵmod","ɵinj","imports","BrowserModule","PerformanceEvents","AcquireTokenByCode","AcquireTokenByRefreshToken","AcquireTokenSilent","AcquireTokenSilentAsync","AcquireTokenPopup","CryptoOptsGetPublicKeyThumbprint","CryptoOptsSignJwt","SilentCacheClientAcquireToken","SilentIframeClientAcquireToken","SilentRefreshClientAcquireToken","SsoSilent","StandardInteractionClientGetDiscoveredAuthority","FetchAccountIdWithNativeBroker","NativeInteractionClientAcquireToken","BaseClientCreateTokenRequestHeaders","BrokerHandhshake","AcquireTokenByRefreshTokenInBroker","AcquireTokenByBroker","RefreshTokenClientExecuteTokenRequest","RefreshTokenClientAcquireToken","RefreshTokenClientAcquireTokenWithCachedRefreshToken","AcquireTokenByCodeAsync","GetEndpointMetadataFromNetwork","GetCloudDiscoveryMetadataFromNetworkMeasurement","HandleRedirectPromiseMeasurement","UpdateCloudDiscoveryMetadataMeasurement","UsernamePasswordClientAcquireToken","PerformanceEventStatus","NotStarted","InProgress","Completed","ServerError","errorCode","subError","setPrototypeOf","AuthError","InteractionRequiredServerErrorMessage","InteractionRequiredAuthSubErrorMessage","InteractionRequiredAuthErrorMessage","InteractionRequiredAuthError","isInteractionRequiredError","isInteractionRequiredErrorCode","isInteractionRequiredSubError","isInteractionRequiredErrorDesc","irErrorCode","createNoTokensFoundError","createNativeAccountUnavailableError","JoseHeaderErrorMessage","JoseHeaderError","createMissingKidError","createMissingAlgError","JoseHeader","typ","alg","kid","getShrHeaderString","shrHeaderOptions","shrHeader","JsonTypes","MathUtils","decimalToHex","hex","GuidGenerator","cryptoObj","generateGuid","Uint8Array","guidHolder","guidResponse","Constants","isGuid","BrowserStringUtils","stringToUtf8Arr","sDOMStr","nChr","nArrLen","nStrLen","nMapIdx","aBytes","nIdx","nChrIdx","stringToArrayBuffer","dataString","ArrayBuffer","dataView","utf8ArrToString","sView","nPart","nLen","fromCharCode","getSortedObjectString","Base64Encode","urlEncode","encode","urlEncodeArr","inputArr","base64EncArr","inputUtf8Arr","eqLen","sB64Enc","nMod3","nUint24","uint6ToB64","nUint6","Base64Decode","decode","encodedString","base64DecToArr","base64String","nBlockSize","nInLen","nOutLen","ceil","nMod4","nOutIdx","nInIdx","b64ToUint6","charNum","PkceGenerator","base64Encode","generateCodes","__awaiter","codeVerifier","codeChallenge","__generator","label","generateCodeVerifier","generateCodeChallengeFromVerifier","sent","verifier","challenge","BrowserAuthError","pkceCodeVerifier","pkceHashedCodeVerifier","e_1","trys","sha256Digest","ModernBrowserCrypto","dataBuffer","crypto","generateKey","algorithm","extractable","keyUsages","subtle","exportKey","KEY_FORMAT_JWK","importKey","keyData","sign","digest","MsrBrowserCrypto","initPrng","entropy","msrCrypto","__spread","MsBrowserCrypto","msCrypto","reject","msGenerateKey","msExportKey","resultString","keyString","keyBuffer","msImportKey","msSign","digestOperation","S256_HASH_ALG","PUBLIC_EXPONENT","BrowserCrypto","cryptoOptions","hasBrowserCrypto","verbose","subtleCrypto","hasIECrypto","hasMsrCrypto","useMsrCrypto","info","BrowserConfigurationAuthError","keygenAlgorithmOptions","modulusLength","publicExponent","generateKeyPair","usages","exportJwk","importJwk","DatabaseStorage","dbName","DB_NAME","DB_VERSION","tableName","DB_TABLE_NAME","dbOpen","openDB","indexedDB","createObjectStore","db","closeConnection","close","validateDbIsOpen","dbGet","transaction","objectStore","dbPut","put","removeItem","dbDelete","getKeys","dbGetKeys","getAllKeys","containsKey","dbContainsKey","deleteDatabase","deleteDbRequest","MemoryStorage","cache","cacheKeys","AsyncMemoryStorage","storeName","inMemoryCache","indexedDBCache","handleDatabaseAccessError","BrowserAuthErrorMessage","e_2","e_3","e_4","e_5","clearInMemory","clearPersistent","dbDeleted","e_6","CryptoKeyStoreNames","asymmetricKeys","symmetricKeys","CryptoKeyStore","CryptoOps","performanceClient","cryptoConfig","browserCrypto","b64Encode","b64Decode","guidGenerator","pkceGenerator","createNewGuid","base64Decode","generatePkceCodes","getPublicKeyThumbprint","publicKeyThumbMeasurement","keyPair","publicKeyJwk","publicJwkString","publicJwkHash","privateKeyJwk","unextractablePrivateKey","startMeasurement","EXTRACTABLE","POP_KEY_USAGES","publicKey","kty","hashString","privateKey","requestMethod","resourceRequestMethod","requestUri","resourceRequestUri","endMeasurement","removeTokenBindingKey","keyFound","clearKeystore","signJwt","signJwtMeasurement","cachedKeyPair","publicKeyJwkString","encodedKeyIdThumbprint","encodedShrHeader","encodedPayload","tokenString","tokenBuffer","signatureBuffer","encodedSignature","signedJwt","cnf","jwk","plainText","hashBuffer","hashBytes","LogLevel","Info","Logger","loggerOptions","packageName","packageVersion","setLoggerOptions","createDefaultLoggerOptions","localCallback","loggerCallback","piiLoggingEnabled","logLevel","containsPii","logHeader","timestamp","toUTCString","StringUtils","executeCallback","errorPii","warning","warningPii","infoPii","verbosePii","tracePii","isPiiLoggingEnabled","PerformanceClient","clientId","authority","libraryName","libraryVersion","applicationTelemetry","eventsByCorrelationId","staticFieldsByCorrelationId","measurementsById","countersByCorrelationId","startPerformanceMeasurement","measureName","startPerformanceMeasuremeant","eventCorrelationId","generateId","validMeasurement","performanceMeasuremeant","performanceMeasurement","inProgressEvent","eventId","startTimeMs","cacheEventByCorrelationId","staticFields","appName","addStaticFields","cacheMeasurement","completedEvent","flushMeasurement","flushMeasurements","discardMeasurement","discardMeasurements","increment","counters","existingStaticFields","existing","counter","existingEvents","eventsForCorrelationId","discardCache","completedEvents_1","sortedCompletedEvents","eventA","eventB","topLevelEvents","topLevelEvent","eventToEmit","reduce","previous","current","subMeasurementName","finalEvent","emitEvents","addPerformanceCallback","callbackId","removePerformanceCallback","StubPerformanceMeasurement","StubPerformanceClient","DEFAULT_CRYPTO_IMPLEMENTATION","notImplErr","buildClientInfo","rawClientInfo","ClientAuthError","decodedClientInfo","buildClientInfoFromHomeAccountId","homeAccountId","clientInfoParts","Separators","utid","AuthorityType","Adfs","Dsts","AccountEntity","generateAccountId","generateAccountKey","generateAccountCacheKey","tenantId","realm","username","localAccountId","generateType","authorityType","CacheAccountType","CacheType","getAccountInfo","idTokenClaims","nativeAccountId","accountInterface","createAccount","clientInfo","idToken","cloudGraphHostName","msGraphHost","_c","_d","_e","_f","account","getPreferredCache","claims","tid","oid","preferredUsername","preferred_username","email","emails","createGenericAccount","upn","generateHomeAccountId","serverClientInfo","authType","isAccountEntity","entity","accountInfoIsEqual","accountA","accountB","compareClaims","claimsMatch","accountAClaims","accountBClaims","iat","nonce","CredentialEntity","generateAccountIdForCacheKey","generateCredentialId","generateCredentialIdForCacheKey","credentialType","familyId","generateTarget","generateTargetForCacheKey","generateCredentialKey","generateCredentialCacheKey","tokenType","requestedClaimsHash","CredentialType","getCredentialType","credKey","credVal","generateClaimsHashForCacheKey","generateSchemeForCacheKey","scopes","AuthenticationScheme","ScopeSet","inputScopes","scopeArr","__spreadArrays","filteredInput","validateInputScopes","scope","fromString","inputScopeString","ClientConfigurationError","containsScope","lowerCaseScopesSet","printScopesLowerCase","containsScopeSet","scopeSet","asArray","every","containsOnlyOIDCScopes","defaultScopeCount","OIDC_SCOPES","defaultScope","appendScope","newScope","appendScopes","newScopes","removeScope","removeOIDCScopes","unionScopeSets","otherScopes","unionScopes","intersectingScopeSets","sizeOtherScopes","getScopeCount","sizeThisScopes","array","printScopes","AuthToken","rawToken","extractTokenClaims","encodedToken","decodedToken","base64Decoded","JWSPayload","checkMaxAge","authTime","maxAge","CacheManager","cryptoImpl","getAllAccounts","currentAccounts","getAccountsFilteredBy","accountValues","accountKey","accountInfo","toObject","readIdTokenFromCache","secret","saveCacheRecord","cacheRecord","setAccount","setIdTokenCredential","accessToken","saveAccessToken","refreshToken","setRefreshTokenCredential","appMetadata","setAppMetadata","credential","currentTokenCache","currentScopes","currentAccessTokens","removedAccessTokens_1","getCredentialsFilteredBy","accessTokens","tokenEntity","removeCredential","setAccessTokenCredential","accountFilter","getAccountsFilteredByInternal","allCacheKeys","matchingAccounts","getAccount","matchHomeAccountId","matchEnvironment","matchRealm","matchNativeAccountId","getCredentialsFilteredByInternal","userAssertionHash","keyId","matchingCredentials","idTokens","refreshTokens","credType","getSpecificCredential","matchUserAssertionHash","matchCredentialType","matchClientId","matchFamilyId","matchTarget","matchTokenType","matchKeyId","updatedCacheKey","updateCredentialCacheKey","getAppMetadataFilteredBy","getAppMetadataFilteredByInternal","matchingAppMetadata","isAppMetadata","getAppMetadata","getAuthorityMetadataByAlias","getAuthorityMetadataKeys","matchedEntity","isAuthorityMetadata","getAuthorityMetadata","aliases","removeAllAccounts","removedAccounts","removeAccount","removeAccountContext","CacheSchemaType","removedCredentials","cacheEntity","removeAppMetadata","readCacheRecord","cachedAccount","readAccountFromCache","cachedIdToken","cachedAccessToken","readAccessTokenFromCache","cachedRefreshToken","readRefreshTokenFromCache","cachedAppMetadata","readAppMetadataFromCache","readAccountFromCacheWithNativeAccountId","accountCache","accounts","credentialCache","numIdTokens","authScheme","authenticationScheme","accessTokenFilter","sshKid","numAccessTokens","familyRT","THE_FAMILY_ID","appMetadataEntries","numAppMetadata","isAppMetadataFOCI","cloudMetadata","entityScopeSet","requestTargetScopeSet","APP_METADATA","AUTHORITY_METADATA_CONSTANTS","generateAuthorityMetadataCacheKey","getIdTokenCredential","getAccessTokenCredential","getRefreshTokenCredential","json","DefaultStorageClass","setServerTelemetry","getServerTelemetry","setAuthorityMetadata","setThrottlingCache","getThrottlingCache","IdTokenEntity","createIdTokenEntity","idTokenEntity","isIdTokenEntity","TimeUtils","nowSeconds","isTokenExpired","expiresOn","expirationSec","Number","wasClockTurnedBack","cachedAt","AccessTokenEntity","createAccessTokenEntity","extExpiresOn","cryptoUtils","refreshOn","requestedClaims","atEntity","extendedExpiresOn","tokenClaims","isAccessTokenEntity","RefreshTokenEntity","createRefreshTokenEntity","rtEntity","isRefreshTokenEntity","AppMetadataEntity","generateAppMetadataKey","generateAppMetadataCacheKey","createAppMetadataEntity","isAppMetadataEntity","ServerTelemetryEntity","failedRequests","cacheHits","isServerTelemetryEntity","validateKey","SERVER_TELEM_CONSTANTS","validateEntity","AuthorityMetadataEntity","expiresAt","updateCloudDiscoveryMetadata","fromNetwork","preferred_cache","preferred_network","aliasesFromNetwork","updateEndpointMetadata","authorization_endpoint","token_endpoint","end_session_endpoint","issuer","endpointsFromNetwork","jwks_uri","updateCanonicalAuthority","canonical_authority","resetExpiresAt","isAuthorityMetadataEntity","ThrottlingEntity","isThrottlingEntity","ThrottlingConstants","ProtocolUtils","setRequestState","userState","meta","libraryState","generateLibraryState","stateObj","stateString","parseRequestState","splitState","libraryStateString","libraryStateObj","userRequestState","CcsCredentialType","HOME_ACCOUNT_ID","UPN","BrowserStorage","cacheLocation","validateWindowStorage","windowStorage","BrowserCacheLocation","BrowserProtocolUtils","extractBrowserRequestState","parseServerResponseFromHash","locationHash","hashUrlString","UrlString","getHash","BrowserCacheManager","cacheConfig","COOKIE_LIFE_MULTIPLIER","internalStorage","browserStorage","setupBrowserStorage","temporaryCacheStorage","setupTemporaryCacheStorage","migrateCacheEntries","clientInfoKey","PersistentCacheKeys","errorKey","errorDescKey","migrateCacheEntry","newKey","setTemporaryCache","validateAndParseJson","jsonValue","parsedJson","parsedAccount","idTokenKey","parsedIdToken","accessTokenKey","parsedAccessToken","refreshTokenKey","parsedRefreshToken","appMetadataKey","parsedMetadata","serverTelemetryKey","serverTelemetry","setWrapperMetadata","wrapperSKU","wrapperVersion","InMemoryCacheKeys","getWrapperMetadata","getActiveAccount","activeAccountKeyFilters","generateCacheKey","activeAccountValueFilters","activeAccountKeyLocal","activeAccountValueLocal","activeAccount","getAccountInfoByFilter","setActiveAccount","activeAccountValueObj","activeAccountKey","allAccounts","accountObj","getAccountInfoByHints","loginHint","sid","throttlingCacheKey","parsedThrottlingCache","throttlingCache","getTemporaryCache","storeAuthStateInCookie","itemCookie","getItemCookie","setItemCookie","clearItemCookie","cookieName","expires","cookieStr","getCookieExpirationTime","secureCookies","cookieList","decodeURIComponent","clearMsalCookies","cookiePrefix","cookieKey","cookieLifeDays","today","getCache","setCache","generateAuthorityKey","stateId","TemporaryCacheKeys","generateNonceKey","generateStateKey","getCachedAuthority","cachedState","stateCacheKey","authorityCacheKey","updateCacheEntries","authorityInstance","nonceCacheKey","ccsCredential","resetRequestCache","setInteractionInProgress","cleanRequestByState","stateKey","cleanRequestByInteractionType","interactionType","parsedState","cacheCodeRequest","authCodeRequest","encodedValue","getCachedRequest","encodedTokenRequest","parsedRequest","cachedAuthority","getCachedNativeRequest","cachedRequest","isInteractionInProgress","getInteractionInProgress","inProgress","getLegacyLoginHint","adalIdTokenString","msalIdTokenString","cachedIdTokenString","IdToken","currentCacheKey","cacheItem","getRedirectRequestContext","setRedirectRequestContext","ProtocolMode","AAD","OIDC","AzureCloudInstance","None","AzurePublic","AzurePpe","AzureChina","AzureGermany","AzureUsGovernment","DEFAULT_SYSTEM_OPTIONS","tokenRenewalOffsetSeconds","preventCorsPreflight","proxyUrl","DEFAULT_LOGGER_IMPLEMENTATION","DEFAULT_NETWORK_IMPLEMENTATION","sendGetRequestAsync","sendPostRequestAsync","DEFAULT_LIBRARY_INFO","sku","cpu","DEFAULT_CLIENT_CREDENTIALS","clientSecret","clientAssertion","DEFAULT_AZURE_CLOUD_OPTIONS","azureCloudInstance","tenant","DEFAULT_TELEMETRY_OPTIONS","buildAuthOptions","authOptions","clientCapabilities","azureCloudOptions","skipAuthorityMetadataCache","StubbedNetworkModule","NavigationClient","navigateInternal","defaultNavigateWindow","navigateExternal","noHistory","timeout","EventHandler","eventCallbacks","listeningToStorageEvents","handleAccountCacheChange","addEventCallback","removeEventCallback","enableAccountStorageEvents","disableAccountStorageEvents","removeEventListener","emitEvent","eventType","message_1","cacheValue","parsedValue","EventType","ThrottlingUtils","generateThrottlingStorageKey","thumbprint","preProcess","cacheManager","throttleTime","errorCodes","postProcess","checkResponseStatus","checkResponseForRetryAfter","thumbprintValue","calculateThrottleTime","HeaderNames","error_codes","error_description","suberror","currentSeconds","removeThrottle","homeAccountIdentifier","shrClaims","NetworkManager","networkClient","sendPostRequest","tokenEndpoint","BaseClient","configuration","buildClientConfiguration","userAuthOptions","userSystemOptions","systemOptions","userLoggerOption","storageImplementation","storageInterface","networkImplementation","networkInterface","cryptoImplementation","cryptoInterface","clientCredentials","libraryInfo","telemetry","serverTelemetryManager","persistencePlugin","serializableCache","networkManager","createTokenRequestHeaders","ccsCred","executePostToTokenEndpoint","queryString","clearTelemetryCache","updateAuthority","updatedAuthority","discoveryComplete","RequestValidator","validateRedirectUri","redirectUri","validatePrompt","prompt","promptValues","PromptValue","validateClaims","validateCodeChallengeParams","codeChallengeMethod","validateCodeChallengeMethod","CodeChallengeMethodValues","sanitizeEQParams","eQParams","queryParams","RequestParameterBuilder","parameters","addResponseTypeCode","AADServerParamKeys","addResponseTypeForTokenAndIdToken","addResponseMode","responseMode","ResponseMode","addNativeBroker","addScopes","addOidcScopes","requestScopes","OIDC_DEFAULT_SCOPES","addClientId","addRedirectUri","addPostLogoutRedirectUri","addIdTokenHint","idTokenHint","addDomainHint","domainHint","SSOTypes","addLoginHint","addCcsUpn","addCcsOid","addSid","addClaims","mergedClaims","addClientCapabilitiesToClaims","addCorrelationId","addLibraryInfo","addApplicationTelemetry","appTelemetry","addPrompt","addState","addNonce","addCodeChallengeParams","addAuthorizationCode","code","addDeviceCode","addRefreshToken","addCodeVerifier","addClientSecret","addClientAssertion","addClientAssertionType","clientAssertionType","addOboAssertion","oboAssertion","addRequestTokenUse","tokenUse","addGrantType","grantType","addClientInfo","CLIENT_INFO","addExtraQueryParameters","eQparams","ClaimsRequestKeys","addUsername","PasswordGrantConstants","addPassword","password","addPopToken","cnfString","addSshJwk","sshJwkString","addServerTelemetry","generateCurrentRequestHeaderValue","generateLastRequestHeaderValue","addThrottling","addLogoutHint","logoutHint","createQueryString","queryParameterArray","CacheRecord","accountEntity","accessTokenEntity","refreshTokenEntity","appMetadataEntity","KeyLocation","SW","UHW","PopTokenGenerator","generateCnf","reqCnf","reqCnfString","generateKid","reqCnfHash","kidThumbprint","xms_ksl","signPopToken","signPayload","shrNonce","resourceUrlString","resourceUrlComponents","getUrlComponents","at","ts","u","HostNameAndPort","AbsolutePath","q","QueryString","client_claims","TokenCacheContext","tokenCache","hasChanged","ResponseHandler","cacheStorage","validateServerAuthorizationCodeResponse","serverResponseHash","client_info","validateTokenResponse","serverResponse","correlation_id","trace_id","handleServerTokenResponse","serverTokenResponse","reqTimestamp","authCodePayload","handlingRefreshTokenResponse","forceCacheRefreshTokenResponse","serverRequestId","idTokenObj","requestStateObj","cacheContext","id_token","auth_time","key_id","generateCacheRecord","beforeCacheAccess","generateAuthenticationResult","afterCacheAccess","spa_code","generateAccountEntity","access_token","responseScopes","expiresIn","expires_in","extExpiresIn","ext_expires_in","refreshIn","refresh_in","tokenExpirationSeconds","extendedTokenExpirationSeconds","refreshOnSeconds","token_type","refresh_token","foci","cloud_graph_host_name","msGraphhost","msgraph_host","protocolMode","fromTokenCache","requestState","requestId","popTokenGenerator","canonicalAuthority","uniqueId","fromCache","fromNativeBroker","AuthorizationCodeClient","includeRedirectUri","getAuthCodeUrl","createAuthCodeUrlQueryString","authorizationEndpoint","acquireToken","atsMeasurement","httpVerAuthority","responseHandler","executeTokenRequest","subErrorCode","handleFragmentResponse","hashFragment","serverParams","getLogoutUri","logoutRequest","createLogoutUrlQueryString","endSessionEndpoint","requestBody","queryParameters","endpoint","createTokenRequestBody","createTokenQueryParameters","parameterBuilder","tokenQueryParameters","reqCnfData","assertion","assertionType","GrantType","sshJwk","tokenBodyParameters","enableSpaAuthorizationCode","accountSid","accountLoginHintClaim","extraScopesToConsent","extractAccountSid","extractLoginHint","extraQueryParameters","nativeBroker","postLogoutRedirectUri","login_hint","isOpenIdConfigResponse","EndpointMetadata","token_endpoint_auth_methods_supported","response_modes_supported","subject_types_supported","id_token_signing_alg_values_supported","response_types_supported","scopes_supported","request_uri_parameter_supported","userinfo_endpoint","device_authorization_endpoint","http_logout_supported","frontchannel_logout_supported","claims_supported","kerberos_endpoint","tenant_region_scope","cloud_instance_name","rbac_url","InstanceDiscoveryMetadata","tenant_discovery_endpoint","RegionDiscovery","detectRegion","environmentRegion","regionDiscoveryMetadata","autodetectedRegionName","localIMDSVersionResponse","currentIMDSVersion","currentIMDSVersionResponse","IMDS_OPTIONS","getRegionFromIMDS","ResponseCodes","region_source","RegionDiscoverySources","getCurrentVersion","Metadata","Authority","authorityOptions","_canonicalAuthority","validateAsUri","regionDiscovery","region_used","region_outcome","pathSegments","canonicalAuthorityUrlComponents","PathSegments","urlString","_canonicalAuthorityUrlComponents","replacePath","replaceTenant","cachedAuthorityParts","currentAuthorityParts","currentPart","cachedPart","resolveEndpointsAsync","metadataEntity","cloudDiscoverySource","endpointSource","hostnameAndPort","AuthorityMetadataSource","harcodedMetadata","getEndpointMetadataFromConfig","isAuthoritySameType","getEndpointMetadataFromHardcodedValues","getEndpointMetadataFromNetwork","azureRegionConfiguration","azureRegion","updateMetadataWithRegionalInformation","defaultOpenIdConfigurationEndpoint","authorityMetadata","RegionDiscoveryOutcomes","replaceWithRegionalInformation","metadataEntityExpired","knownAuthorities","getCloudDiscoveryMetadataFromConfig","getCloudDiscoveryMetadataFromNetwork","getCloudDiscoveryMetadataFromHarcodedValues","cloudDiscoveryMetadata","parsedResponse","getCloudDiscoveryMetadataFromNetworkResponse","isInKnownAuthorities","createCloudDiscoveryMetadataFromHost","instanceDiscoveryEndpoint","typedResponseBody","error_1","typedError","isCloudInstanceDiscoveryResponse","isCloudInstanceDiscoveryErrorResponse","generateAuthority","authorityString","authorityAzureCloudInstance","isAlias","isPublicCloudAuthority","buildRegionalAuthorityString","region","authorityUrlInstance","authorityUrlParts","hostNameAndPort","AuthorityFactory","createDiscoveredInstance","authorityUri","acquireTokenAuthority","createInstance","authorityUrl","ServerTelemetryManager","telemetryRequest","cacheOutcome","CacheOutcome","apiId","wrapperVer","telemetryCacheKey","platformFields","requestWithRegionDiscoveryFields","getRegionDiscoveryFields","lastRequests","getLastRequests","maxErrors","maxErrorsToSend","errorCount","cacheFailedRequest","incrementCacheHits","numErrorsFlushed","serverTelemEntity","serverTelemetryEntity","dataSize","regionDiscoveryFields","regionUsed","regionSource","regionOutcome","updateRegionDiscoveryMetadata","setCacheOutcome","BaseInteractionClient","storageImpl","eventHandler","navigationClient","nativeMessageHandler","system","BrowserConstants","clearCacheOnLogout","initializeBaseRequest","validatedRequest","auth","getRedirectUri","requestRedirectUri","BrowserUtils","initializeServerTelemetryManager","forceRefresh","telemetryPayload","getDiscoveredAuthority","requestAuthority","StandardInteractionClient","initializeAuthorizationCodeRequest","generatedPkceParams","initializeLogoutRequest","validLogoutRequest","getLogoutHintFromIdTokenClaims","createAuthCodeClient","requestAzureCloudOptions","clientConfig","getClientConfiguration","discoveredAuthority","validateAndExtractStateFromHash","requestCorrelationId","platformStateObj","getAuthorityMeasurement","builtAuthority","initializeAuthorizationRequest","legacyLoginHint","NativeStatusCode","USER_INTERACTION_REQUIRED","USER_CANCEL","NO_NETWORK","TRANSIENT_ERROR","PERSISTENT_ERROR","DISABLED","ACCOUNT_UNAVAILABLE","NativeAuthErrorMessage","NativeAuthError","description","isFatal","createError","createUserSwitchError","createTokensNotFoundInCacheError","RefreshTokenClient","httpVerToken","refreshTokenSize","forceCache","acquireTokenByRefreshToken","clientMismatchErrorWithFamilyRT","acquireTokenWithCachedRefreshToken","Errors","refreshTokenRequest","acquireTokenMeasurement","SilentFlowClient","acquireCachedToken","ClientAuthErrorMessage","refreshTokenClient","generateResultFromCacheRecord","SilentCacheClient","silentRequest","silentAuthClient","cachedToken","ApiId","createSilentFlowClient","logout","initializeSilentRequest","NativeInteractionClient","provider","nativeStorageImpl","nativeStorageManager","silentCacheClient","nativeATMeasurement","nativeRequest","validatedResponse","initializeNativeRequest","acquireTokensFromCache","isNativeBroker","messageBody","sendMessage","NativeExtensionMethod","validateNativeResponse","handleNativeResponse","createSilentCacheRequest","acquireTokenRedirect","navigationOptions","redirectNavigationTimeout","navigateToLoginRequestUrl","handleRedirectPromise","__rest","mats","authorityPreferredCache","accountProperties","responseAccessToken","responseTokenType","shrParameters","getMATSFromResponse","extensionId","getExtensionId","extensionVersion","getExtensionVersion","matsBrokerVersion","broker_version","matsAccountJoinOnStart","account_join_on_start","matsAccountJoinOnEnd","account_join_on_end","matsDeviceJoin","device_join","matsPromptBehavior","prompt_behavior","matsApiErrorCode","api_error_code","matsUiVisible","ui_visible","matsSilentCode","silent_code","matsSilentBiSubCode","silent_bi_sub_code","matsSilentMessage","silent_message","matsSilentStatus","silent_status","matsHttpStatus","http_status","matsHttpEventCount","http_event_count","UID","TenantId","shr","isResponseFromCache","MATS","is_cached","remainingProperties","getPrompt","windowTitleSubstring","extraParameters","NativeConstants","extendedExpiryToken","NativeMessageHandler","handshakeTimeoutMs","resolvers","handshakeResolvers","responseId","messageChannel","MessageChannel","windowListener","onWindowMessage","port1","postMessage","createProvider","preferredProvider","backupProvider","sendHandshakeRequest","onmessage","onChannelMessage","origin","port2","timeoutId","handshakeResolver","resolver","isNativeAvailable","nativeExtensionProvider","allowNativeBroker","InteractionHandler","authCodeModule","authModule","handleCodeResponseFromHash","networkModule","authCodeResponse","handleCodeResponseFromServer","validateNonce","nonceKey","cachedNonce","cachedCcsCred","tokenResponse","cloud_instance_host_name","updateTokenEndpointAuthority","checkCcsCredentials","cloudInstanceHostname","cloudInstanceAuthority","cloudInstanceAuthorityUri","PopupClient","unloadWindow","nativeStorage","popupName","generatePopupName","popupWindowAttributes","asyncPopups","acquireTokenPopupAsync","popup","openSizedPopup","generateLogoutPopupName","mainWindowRedirectUri","logoutPopupAsync","validRequest","authClient","fetchNativeAccountIdMeasurement","navigateUrl","interactionHandler","popupWindow","state_1","nativeInteractionClient","InteractionType","initiateAuthRequest","monitorPopupForHash","finally","setCorrelationId","logoutUri","openPopup","waitForLogoutPopup","maxTicks","windowHashTimeout","pollIntervalMilliseconds","ticks","intervalId","closed","cleanPopup","urlNavigate","popupParams","focus","currentWindow","winLeft","screenLeft","screenX","winTop","screenTop","screenY","winWidth","innerWidth","clientWidth","winHeight","innerHeight","clientHeight","width","popupSize","height","top","popupPosition","preventDefault","RedirectHandler","redirectStartPage","redirectTimeout","onRedirectNavigate","RedirectClient","handleBackButton","persisted","getRedirectStartPage","responseHash","loginRequestUrl","loginRequestUrlNormalized","currentUrlNormalized","handleHashResult","processHashOnRedirect","homepage","getRedirectResponseHash","handleHash","allowRedirectInIframe","cachedHash","currentAuthority","requestStartPage","SilentHandler","navigateFrameWait","loadFrame","loadFrameSync","monitorIframeForHash","iframe","timeoutMark","removeHiddenIframe","contentWindow","contentHash","frameHandle","createHiddenIframe","authFrame","visibility","border","getElementsByTagName","SilentIframeClient","silentTokenHelper","silentHandler","msalFrame","iframeHashTimeout","SilentRefreshClient","createRefreshTokenClient","TokenCache","isBrowserEnvironment","loadExternalTokens","cacheRecordAccount","loadAccount","loadIdToken","loadAccessToken","loadRefreshToken","requestHomeAccountId","HybridSpaAuthorizationCodeClient","SilentAuthCodeClient","cloudInstanceHostName","BrowserPerformanceMeasurement","startMark","endMark","supportsBrowserPerformance","clearMeasures","entriesForMeasurement","BrowserPerformanceClient","getPageVisibility","startPageVisibility","endPageVisibility","PublicClientApplication","activeSilentTokenRequests","loginRedirect","getRequestCorrelationId","DEFAULT_REQUEST","loginPopup","acquireTokenPopup","acquireTokenSilent","silentRequestKey","cachedResponse","cacheLookupPolicy","preflightBrowserEnvironmentCheck","acquireTokenSilentAsync","accessTokenSize","idTokenSize","atsAsyncMeasurement","silentRequest_1","requestWithCLP_1","acquireTokenNative","createSilentIframeClient","createSilentCacheClient","CacheLookupPolicy","acquireTokenFromCache","cacheError","refreshTokenError","acquireTokenBySilentIframe","tokenRenewalError","ClientApplication","buildConfiguration","userInputAuth","userInputCache","userInputSystem","userInputTelemetry","DEFAULT_AUTH_OPTIONS","DEFAULT_CACHE_OPTIONS","DEFAULT_LOGGER_OPTIONS","DEFAULT_BROWSER_SYSTEM_OPTIONS","loadFrameTimeout","nativeBrokerHandshakeTimeout","providedSystemOptions","redirectResponse","hybridAuthCodeResponses","DEFAULT_BROWSER_CACHE_MANAGER","nativeInternalStorage","loggedInAccounts","redirectResponseKey","nativeClient","redirectClient","createRedirectClient","canUseNative","getNativeAccountId","atPopupMeasurement","createPopupClient","isLoggingIn","ssoSilent","ssoSilentMeasurement","silentIframeClient","acquireTokenByCode","atbcMeasurement","hybridAuthCode_1","acquireTokenByCodeAsync","createSilentAuthCodeClient","silentTokenResult","commonRequest","silentRefreshClient","createSilentRefreshClient","logoutRedirect","logoutPopup","getAccountByUsername","userName","getAccountByHomeId","getAccountByLocalId","preflightInteractiveRequest","getTokenCache","getLogger","setLogger","initializeWrapperLibrary","setNavigationClient","getConfiguration","AppComponent","msalBroadcastService","customizationService","activatedRoute","titleService","Subject","loading","takeUntil","_destroying$","childRoute","firstChild","snapshot","setTitle","ngOnInit","first","NavMenuComponent","msalService","collapse","isExpanded","toggle","PhotoService","image","attribution","computer","paperpile","getPhoto","photos","SidebarComponent","photoService","faCode","faKey","faTachometerAlt","faTerminal","faUser","faUsers","faIdCard","faUsersCog","faSchool","background","sidebar","imageKey","DashboardComponent","loadUser","msalSubject$","debug","warn","FullscreenComponent","routes","component","IndexComponent","isIframe","opener","inProgress$","InteractionStatus","handleAccountStuff","navigate","pathMatch","loadChildren","DashboardModule","GroupsModule","UsersModule","__webpack_require__","SyncProfilesModule","AdminModule","FullscreenModule","AuthenticationModule","AppRoutingModule","CommonModule","RouterModule","useHash","relativeLinkResolution","ToastHttpInterceptor","toastr","intercept","processRequest","handle","tap","HttpErrorResponse","randomError","randomErrors","MSALInstanceFactory","MSALInterceptorConfigFactory","protectedResourceMap","authRequest","originalAuthRequest","MSALGuardConfigFactory","loginFailedRoute","AppModule","bootstrap","MsalRedirectComponent","HTTP_INTERCEPTORS","MsalInterceptor","MSAL_INSTANCE","MSAL_GUARD_CONFIG","MSAL_INTERCEPTOR_CONFIG","MsalGuard","MsalBroadcastService","MsalService","FaConfig","FaIconLibrary","FormsModule","ReactiveFormsModule","HttpClientModule","ToastrModule","FontAwesomeModule","NgbAccordionModule","NgbDropdownModule","NgbModalModule","NgbCollapseModule","MsalModule","ServiceWorkerModule","registrationStrategy","getBaseUrl","enableProdMode","__NgCli_bootstrap_1","bootstrapModule","EventMessageUtils","getInteractionStatusFromEvent","currentStatus","QueueScheduler","AsyncScheduler","QueueAction","AsyncAction","scheduler","work","schedule","execute","_execute","requestAsyncId","ObserveOnSubscriber","Subscriber","notification","scheduleMessage","dispatch","ObserveOnMessage","Notification","_error","_complete","ReplaySubject","bufferSize","POSITIVE_INFINITY","windowTime","_infiniteTimeWindow","_bufferSize","_windowTime","nextInfiniteTimeWindow","nextTimeWindow","isStopped","ReplayEvent","_getNow","_trimBufferThenGetEvents","_subscribe","subscriber","subscription","ObjectUnsubscribedError","hasError","Subscription","observers","SubjectSubscription","thrownError","eventsCount","spliceCount","MSAL_BROADCAST_CONFIG","pop","redirectHash","WrapperSKU","handleRedirectObservable","ɵngcc0","ɵngcc1","msalInstance","authService","msalBroadcastConfig","eventsToReplay","_msalSubject","_inProgress","msalGuardConfig","parseUrl","getDestinationUrl","baseElements","normalize","pathUrl","prepareExternalUrl","loginInteractively","activateHelper","currentPath","concatMap","urlContainsCode","includesCode","fragmentContainsCode","fragment","hashRouting","VERSION","canActivate","route","canActivateChild","canLoad","ɵngcc2","msalInterceptorConfig","getScopesForEndpoint","acquireTokenInteractively","switchMap","requestClone","EMPTY","httpMethod","normalizedEndpoint","protectedResourcesArray","matchingProtectedResources","matchResourcesToEndpoint","absoluteResources","matchScopesToEndpoint","relativeResources","protectedResourcesEndpoints","matchingResources","normalizedKey","absoluteKey","keyComponents","absoluteEndpoint","endpointComponents","relativeNormalizedKey","link","endpointArray","allMatchedScopes","matchedEndpoint","scopesForEndpoint","methodAndScopesArray","normalizedRequestMethod","vars","template","rf","guardConfig","interceptorConfig","MsalCustomNavigationClient","extendStatics","getOwnPropertySymbols","_arguments","P","generator","fulfilled","rejected","throw","adopt","y","g","ops","verb","return","Symbol","op","__read","ar","pkceNotGenerated","desc","cryptoDoesNotExist","httpMethodNotImplementedError","emptyNavigateUriError","hashEmptyError","hashDoesNotContainStateError","hashDoesNotContainKnownPropertiesError","unableToParseStateError","stateInteractionTypeMismatchError","interactionInProgress","popupWindowError","emptyWindowError","userCancelledError","monitorPopupTimeoutError","monitorIframeTimeoutError","redirectInIframeError","blockTokenRequestsInHiddenIframeError","blockAcquireTokenInPopupsError","iframeClosedPrematurelyError","silentLogoutUnsupportedError","noAccountError","silentPromptValueError","noTokenRequestCacheError","unableToParseTokenRequestCacheError","noCachedAuthorityError","authRequestNotSet","invalidCacheType","notInBrowserEnvironment","databaseNotOpen","noNetworkConnectivity","postRequestFailed","getRequestFailed","failedToParseNetworkResponse","unableToLoadTokenError","signingKeyNotFoundInStorage","authCodeRequired","authCodeOrNativeAccountRequired","databaseUnavailable","unableToAcquireTokenFromNativePlatform","nativeHandshakeTimeout","nativeExtensionNotInstalled","nativeConnectionNotEstablished","nativeBrokerCalledBeforeInitialize","nativePromptNotSupported","createPkceNotGeneratedError","errDetail","createCryptoNotAvailableError","createHttpMethodNotImplementedError","createEmptyNavigationUriError","createEmptyHashError","hashValue","createHashDoesNotContainStateError","createHashDoesNotContainKnownPropertiesError","createUnableToParseStateError","createStateInteractionTypeMismatchError","createInteractionInProgressError","createPopupWindowError","createEmptyWindowCreatedError","createUserCancelledError","createMonitorPopupTimeoutError","createMonitorIframeTimeoutError","createRedirectInIframeError","windowParentCheck","createBlockReloadInHiddenIframeError","createBlockAcquireTokenInPopupsError","createIframeClosedPrematurelyError","createSilentLogoutUnsupportedError","createNoAccountError","createSilentPromptValueError","givenPrompt","createUnableToParseTokenRequestCacheError","createNoTokenRequestCacheError","createAuthRequestNotSetError","createNoCachedAuthorityError","createInvalidCacheTypeError","createNonBrowserEnvironmentError","createDatabaseNotOpenError","createNoNetworkConnectivityError","createPostRequestFailedError","errorDesc","createGetRequestFailedError","createFailedToParseNetworkResponseError","createUnableToLoadTokenError","errorDetail","createSigningKeyNotFoundInStorageError","createAuthCodeRequiredError","createAuthCodeOrNativeAccountIdRequiredError","createDatabaseUnavailableError","createUnableToAcquireTokenFromNativePlatformError","createNativeHandshakeTimeoutError","createNativeExtensionNotInstalledError","createNativeConnectionNotEstablishedError","createNativeBrokerCalledBeforeInitialize","createNativePromptParameterNotSupportedError","BrowserConfigurationAuthErrorMessage","createRedirectUriEmptyError","createPostLogoutRedirectUriEmptyError","createStorageNotSupportedError","givenStorageLocation","createRedirectCallbacksNotSetError","createStubPcaInstanceCalledError","createInMemoryRedirectUnavailableError","createEntropyNotProvided","INITIALIZE_START","INITIALIZE_END","ACCOUNT_ADDED","ACCOUNT_REMOVED","LOGIN_START","LOGIN_SUCCESS","LOGIN_FAILURE","ACQUIRE_TOKEN_START","ACQUIRE_TOKEN_SUCCESS","ACQUIRE_TOKEN_FAILURE","ACQUIRE_TOKEN_NETWORK_START","SSO_SILENT_START","SSO_SILENT_SUCCESS","SSO_SILENT_FAILURE","ACQUIRE_TOKEN_BY_CODE_START","ACQUIRE_TOKEN_BY_CODE_SUCCESS","ACQUIRE_TOKEN_BY_CODE_FAILURE","HANDLE_REDIRECT_START","HANDLE_REDIRECT_END","POPUP_OPENED","LOGOUT_START","LOGOUT_SUCCESS","LOGOUT_FAILURE","LOGOUT_END","INTERACTION_IN_PROGRESS_VALUE","INVALID_GRANT_ERROR","POPUP_WIDTH","POPUP_HEIGHT","POPUP_NAME_PREFIX","DEFAULT_POLL_INTERVAL_MS","MSAL_SKU","CHANNEL_ID","PREFERRED_EXTENSION_ID","MATS_TELEMETRY","HandshakeRequest","HandshakeResponse","GetToken","Response","HTTP_REQUEST_TYPE","GET","POST","AUTHORITY","ACQUIRE_TOKEN_ACCOUNT","SESSION_STATE","REQUEST_STATE","NONCE_IDTOKEN","ORIGIN_URI","RENEW_STATUS","URL_HASH","REQUEST_PARAMS","SCOPES","INTERACTION_STATUS_KEY","CCS_CREDENTIAL","CORRELATION_ID","NATIVE_REQUEST","REDIRECT_CONTEXT","WRAPPER_SKU","WRAPPER_VER","acquireTokenSilent_authCode","acquireTokenSilent_silentFlow","Redirect","Popup","Silent","Startup","Login","Logout","AcquireToken","HandleRedirect","React","Angular","AccessToken","AccessTokenAndRefreshToken","RefreshToken","RefreshTokenAndNetwork","Skip","FetchClient","getFetchHeaders","onLine","getHeaderDict","reqBody","optionsHeaders","headerDict","XhrClient","sendRequestAsync","setXhrHeaders","jsonResponse","networkResponse","headers_1","setRequestHeader","headerArr","getAllResponseHeaders","headerVal","clearHash","replaceHash","urlParts","isInIframe","isInPopup","getCurrentUri","getHomepage","urlComponents","Protocol","getBrowserNetworkClient","blockReloadInHiddenIframes","blockRedirectInIframe","isIframedApp","blockAcquireTokenInPopups","blockNonBrowserEnvironment","blockNativeBrokerCalledBeforeInitialized","detectIEOrEdge","msie","msie11","msedge","k","jl","AuthErrorMessage","createUnexpectedError","errDesc","createPostRequestFailed","clientInfoDecodingError","clientInfoEmptyError","tokenParsingError","nullOrEmptyToken","endpointResolutionError","networkError","unableToGetOpenidConfigError","hashNotDeserialized","blankGuidGenerated","invalidStateError","stateMismatchError","stateNotFoundError","nonceMismatchError","nonceNotFoundError","authTimeNotFoundError","maxAgeTranspiredError","noTokensFoundError","multipleMatchingTokens","multipleMatchingAccounts","multipleMatchingAppMetadata","tokenRequestCannotBeMade","appendEmptyScopeError","removeEmptyScopeError","appendScopeSetError","emptyInputScopeSetError","DeviceCodePollingCancelled","DeviceCodeExpired","DeviceCodeUnknownError","NoAccountInSilentRequest","invalidCacheRecord","invalidCacheEnvironment","noAccountFound","CachePluginError","noCryptoObj","unexpectedAccountType","unexpectedCredentialType","invalidAssertion","invalidClientCredential","tokenRefreshRequired","userTimeoutReached","tokenClaimsRequired","noAuthorizationCodeFromServer","noAzureRegionDetected","accessTokenEntityNullError","bindingKeyNotRemovedError","logoutNotSupported","keyIdMissing","createClientInfoDecodingError","caughtError","createClientInfoEmptyError","createTokenParsingError","caughtExtractionError","createTokenNullOrEmptyError","invalidRawTokenString","createEndpointDiscoveryIncompleteError","createNetworkError","createUnableToGetOpenidConfigError","createHashNotDeserializedError","hashParamObj","createInvalidStateError","createStateMismatchError","createStateNotFoundError","missingState","createNonceMismatchError","createAuthTimeNotFoundError","createMaxAgeTranspiredError","createNonceNotFoundError","missingNonce","createMultipleMatchingTokensInCacheError","createMultipleMatchingAccountsInCacheError","createMultipleMatchingAppMetadataInCacheError","createTokenRequestCannotBeMadeError","createAppendEmptyScopeToSetError","givenScope","createRemoveEmptyScopeFromSetError","createAppendScopeSetError","appendError","createEmptyInputScopeSetError","createDeviceCodeCancelledError","createDeviceCodeExpiredError","createDeviceCodeUnknownError","createNoAccountInSilentRequestError","createNullOrUndefinedCacheRecord","createInvalidCacheEnvironmentError","createNoAccountFoundError","createCachePluginError","createNoCryptoObjectError","createUnexpectedAccountTypeError","createUnexpectedCredentialTypeError","createInvalidAssertionError","createInvalidCredentialError","createRefreshRequiredError","createUserTimeoutReachedError","createTokenClaimsRequiredError","createNoAuthCodeInServerResponseError","createBindingKeyNotRemovedError","createLogoutNotSupportedError","createKeyIdMissingError","ClientConfigurationErrorMessage","createClaimsRequestParsingError","claimsRequestParseError","createInsecureAuthorityUriError","createUrlParseError","urlParseError","createUrlEmptyError","createEmptyScopesArrayError","createClientIdSingleScopeError","createInvalidPromptError","promptValue","createInvalidClaimsRequestError","createEmptyLogoutRequestError","createEmptyTokenRequestError","createInvalidCodeChallengeMethodError","createInvalidCodeChallengeParamsError","createInvalidCloudDiscoveryMetadataError","createInvalidAuthorityMetadataError","createUntrustedAuthorityError","createInvalidAzureCloudInstanceError","createMissingSshJwkError","createMissingSshKidError","createMissingNonceAuthenticationHeadersError","createInvalidAuthenticationHeaderError","invalidHeaderName","_urlString","canonicalizeUri","lowerCaseUrl","components","appendQueryString","removeHashFromUrl","replaceTenantPath","urlObject","pathArray","AADAuthorityConstants","constructAuthorityUriFromObject","parseHash","regEx","endsWith","getDomainFromUrl","relativeUrl","baseComponents","hashIndex1","hashIndex2","parseQueryString","queryIndex1","queryIndex2","getDeserializedHash","parsedHash","deserializedHash","getDeserializedQueryString","parsedQueryString","deserializedQueryString","hashContainsKnownProperties","LIBRARY_NAME","SKU","CACHE_PREFIX","DEFAULT_AUTHORITY","DEFAULT_AUTHORITY_HOST","DEFAULT_COMMON_TENANT","ADFS","DSTS","AAD_INSTANCE_DISCOVERY_ENDPT","RESOURCE_DELIM","NO_ACCOUNT","CLAIMS","CONSUMER_UTID","OPENID_SCOPE","PROFILE_SCOPE","OFFLINE_ACCESS_SCOPE","EMAIL_SCOPE","CODE_RESPONSE_TYPE","CODE_GRANT_TYPE","RT_GRANT_TYPE","FRAGMENT_RESPONSE_MODE","S256_CODE_CHALLENGE_METHOD","URL_FORM_CONTENT_TYPE","AUTHORIZATION_PENDING","NOT_DEFINED","EMPTY_STRING","NOT_APPLICABLE","FORWARD_SLASH","IMDS_ENDPOINT","IMDS_VERSION","IMDS_TIMEOUT","AZURE_REGION_AUTO_DISCOVER_FLAG","REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX","REGIONAL_AUTH_NON_MSI_QUERY_STRING","KNOWN_PUBLIC_CLOUDS","TOKEN_RESPONSE_TYPE","ID_TOKEN_RESPONSE_TYPE","SHR_NONCE_VALIDITY","INVALID_INSTANCE","CONTENT_TYPE","RETRY_AFTER","CCS_HEADER","WWWAuthenticate","AuthenticationInfo","X_MS_REQUEST_ID","X_MS_HTTP_VERSION","ID_TOKEN","ADAL_ID_TOKEN","ERROR","ERROR_DESC","ACTIVE_ACCOUNT","ACTIVE_ACCOUNT_FILTERS","COMMON","ORGANIZATIONS","CONSUMERS","CLIENT_ID","REDIRECT_URI","RESPONSE_TYPE","RESPONSE_MODE","GRANT_TYPE","SCOPE","ERROR_DESCRIPTION","ACCESS_TOKEN","REFRESH_TOKEN","EXPIRES_IN","STATE","NONCE","PROMPT","CODE","CODE_CHALLENGE","CODE_CHALLENGE_METHOD","CODE_VERIFIER","CLIENT_REQUEST_ID","X_CLIENT_SKU","X_CLIENT_VER","X_CLIENT_OS","X_CLIENT_CPU","X_CLIENT_CURR_TELEM","X_CLIENT_LAST_TELEM","X_MS_LIB_CAPABILITY","X_APP_NAME","X_APP_VER","POST_LOGOUT_URI","ID_TOKEN_HINT","DEVICE_CODE","CLIENT_SECRET","CLIENT_ASSERTION","CLIENT_ASSERTION_TYPE","TOKEN_TYPE","REQ_CNF","OBO_ASSERTION","REQUESTED_TOKEN_USE","ON_BEHALF_OF","FOCI","RETURN_SPA_CODE","NATIVE_BROKER","LOGOUT_HINT","XMS_CC","LOGIN","SELECT_ACCOUNT","CONSENT","NONE","CREATE","NO_SESSION","ACCOUNT","SID","LOGIN_HINT","DOMAIN_HINT","ACCOUNT_ID","HOMEACCOUNT_ID","PLAIN","S256","QUERY","FRAGMENT","FORM_POST","IMPLICIT_GRANT","AUTHORIZATION_CODE_GRANT","CLIENT_CREDENTIALS_GRANT","RESOURCE_OWNER_PASSWORD_GRANT","REFRESH_TOKEN_GRANT","DEVICE_CODE_GRANT","JWT_BEARER","MSSTS_ACCOUNT_TYPE","ADFS_ACCOUNT_TYPE","MSAV1_ACCOUNT_TYPE","GENERIC_ACCOUNT_TYPE","CACHE_KEY_SEPARATOR","CLIENT_INFO_SEPARATOR","ACCESS_TOKEN_WITH_AUTH_SCHEME","CREDENTIAL","TEMPORARY","TELEMETRY","THROTTLING","MSA","MSSTS","GENERIC","CACHE_KEY","REFRESH_TIME_SECONDS","CONFIG","CACHE","NETWORK","HARDCODED_VALUES","SCHEMA_VERSION","MAX_CUR_HEADER_BYTES","MAX_LAST_HEADER_BYTES","MAX_CACHED_ERRORS","CATEGORY_SEPARATOR","VALUE_SEPARATOR","OVERFLOW_TRUE","OVERFLOW_FALSE","UNKNOWN_ERROR","BEARER","POP","SSH","DEFAULT_THROTTLE_TIME_SECONDS","DEFAULT_MAX_THROTTLE_TIME_SECONDS","THROTTLING_PREFIX","X_MS_LIB_CAPABILITY_VALUE","CLIENT_MISMATCH_ERROR","httpSuccess","httpBadRequest","FAILED_AUTO_DETECTION","INTERNAL_CACHE","ENVIRONMENT_VARIABLE","IMDS","CONFIGURED_MATCHES_DETECTED","CONFIGURED_NO_AUTO_DETECTION","CONFIGURED_NOT_DETECTED","AUTO_DETECTION_REQUESTED_SUCCESSFUL","AUTO_DETECTION_REQUESTED_FAILED","NO_CACHE_HIT","FORCE_REFRESH","NO_CACHED_ACCESS_TOKEN","CACHED_ACCESS_TOKEN_EXPIRED","REFRESH_CACHED_ACCESS_TOKEN","Jwt","Jwk","decodeAuthToken","authToken","JWSSig","isEmptyObj","strObj","queryStringToObject","pair","trimArrayEntries","removeEmptyStringsFromArray","jsonParseHelper","matchPattern","pattern","faArchive","iconName","icon","faBan","faChalkboard","faFolderMinus","faIdBadge","faMinus","faPlus","faSync","faUserMinus","faUserPlus","_c0","Toast_button_0_Template","_r6","ctx_r5","Toast_div_1_ng_container_2_Template","ctx_r7","duplicatesCount","Toast_div_1_Template","ctx_r1","titleClass","Toast_div_2_Template","ctx_r2","messageClass","Toast_div_3_Template","ctx_r3","Toast_div_4_Template","ctx_r4","ToastNoAnimation_button_0_Template","ToastNoAnimation_div_1_ng_container_2_Template","ToastNoAnimation_div_1_Template","ToastNoAnimation_div_2_Template","ToastNoAnimation_div_3_Template","ToastNoAnimation_div_4_Template","ToastPackage","toastId","toastType","toastRef","_onTap","_onAction","afterClosed","triggerTap","tapToDismiss","onTap","triggerAction","onAction","DefaultNoComponentGlobalConfig","maxOpened","autoDismiss","newestOnTop","preventDuplicates","countDuplicates","resetTimeoutOnDuplicate","includeTitleDuplicates","iconClasses","closeButton","disableTimeOut","timeOut","extendedTimeOut","enableHtml","progressBar","toastClass","positionClass","easeTime","onActivateTick","progressAnimation","TOAST_CONFIG","ComponentPortal","injector","attach","_attachedHost","detach","isAttached","setAttachedHost","DomPortalHost","BasePortalHost","portal","_attachedPortal","attachComponentPortal","_disposeFn","setDisposeFn","_hostDomElement","_componentFactoryResolver","_appRef","componentFactory","resolveComponentFactory","componentRef","attachView","hostView","detachView","_getComponentRootNode","rootNodes","OverlayContainer","_containerElement","getContainerElement","_createContainer","ɵɵdefineInjectable","ɵɵinject","providedIn","OverlayRef","_portalHost","Overlay","_overlayContainer","_paneElements","overlayContainer","_createOverlayRef","getPaneElement","_createPaneElement","pane","_createPortalHost","ComponentFactoryResolver","ApplicationRef","ToastRef","_overlayRef","_afterClosed","_activate","_manualClose","_resetTimeout","_countDuplicate","manualClose","manualClosed","timeoutReset","countDuplicate","isInactive","activate","afterActivate","onDuplicate","resetTimeout","ToastInjector","_toastPackage","_parentInjector","notFoundValue","ToastrService","overlay","_injector","sanitizer","ngZone","currentlyActive","toasts","toastrConfig","default","show","override","_preBuildNotification","applyConfig","toast","_findToast","activeToast","findDuplicate","resetOnDuplicate","hasDuplicateTitle","_buildNotification","toastComponent","duplicate","previousToastMessage","keepInactive","overlayRef","sanitizedMessage","sanitize","SecurityContext","toastPackage","toastInjector","componentInstance","ins","onShown","onHidden","INJECTOR","DomSanitizer","Toast","toastrService","toastClasses","originalTimeout","activateToast","sub1","sub2","sub3","displayStyle","outsideTimeout","hideTime","outsideInterval","updateProgress","tapToast","stickAround","delayedHideToast","runInsideAngular","hostVars","hostBindings","attrs","consts","opacity","DefaultGlobalConfig","ToastNoAnimation","tick","_value","getValue","hasValue","do","nextOrObserver","toObservable","empty","undefinedValueNotification","completeNotification","_isScalar","lift","operator","observable","observerOrNext","sink","toSubscriber","rxSubscriberSymbol","emptyObserver","syncErrorThrowable","_trySubscribe","syncErrorThrown","syncErrorValue","canReportError","promiseCtor","getPromiseCtor","Symbol_observable","operations","pipeFromArray","x","hostReportError","OuterSubscriber","notifyNext","outerValue","innerValue","outerIndex","innerIndex","innerSub","notifyError","notifyComplete","SubjectSubscriber","subject","AnonymousSubject","copy","subscriberIndex","destinationOrNext","SafeSubscriber","_unsubscribeAndRecycle","_parentOrParents","_parentSubscriber","__tryOrSetError","__tryOrUnsub","useDeprecatedSynchronousErrorHandling","wrappedComplete","_unsubscribe","UnsubscriptionError","UnsubscriptionErrorImpl","_subscriptions","_ctorUnsubscribe","flattenUnsubscriptionErrors","subscriptions","subscriptionIndex","errs","_enable_super_gross_mode_that_will_cause_bad_things","SimpleInnerSubscriber","SimpleOuterSubscriber","innerSubscribe","innerSubscriber","subscribeTo","ConnectableObservable","subjectFactory","_refCount","_isComplete","getSubject","_subject","connect","connection","_connection","ConnectableSubscriber","refCount","higherOrderRefCount","connectableObservableDescriptor","connectableProto","writable","connectable","combineLatest","observables","resultSelector","isScheduler","fromArray","CombineLatestOperator","CombineLatestSubscriber","active","toRespond","subscribeToResult","_outerValue","_tryResultSelector","concatAll","mergeAll","defer","observableFactory","emptyScheduled","scheduled","isInteropObservable","scheduleObservable","isPromise","schedulePromise","isArrayLike","scheduleArray","isIterable","Symbol_iterator","scheduleIterable","subscribeToArray","fromEvent","setupSubscription","sourceObj","isEventTarget","isJQueryStyleEventEmitter","on","off","isNodeStyleEventEmitter","addListener","removeListener","merge","concurrent","last","NEVER","noop","CatchOperator","caught","CatchSubscriber","err2","innerSubscription","project","defaultIfEmpty","DefaultIfEmptyOperator","DefaultIfEmptySubscriber","delayFor","DelayOperator","DelaySubscriber","errored","_schedule","scheduleNotification","DelayMessage","distinctUntilChanged","compare","keySelector","DistinctUntilChangedOperator","DistinctUntilChangedSubscriber","hasKey","predicate","FilterOperator","FilterSubscriber","hasDefaultValue","identity","take","throwIfEmpty","EmptyError","MapOperator","MapSubscriber","ii","MergeMapOperator","MergeMapSubscriber","hasCompleted","_tryNext","_innerSub","ish","multicast","subjectOrSubjectFactory","MulticastOperator","RefCountOperator","refCounter","RefCountSubscriber","sharedConnection","shareSubjectFactory","share","startWith","SwitchMapOperator","SwitchMapSubscriber","TakeOperator","ArgumentOutOfRangeError","TakeSubscriber","notifier","TakeUntilOperator","takeUntilSubscriber","TakeUntilSubscriber","notifierSubscription","seenValue","DoOperator","TapSubscriber","_tapNext","_tapError","_tapComplete","errorFactory","defaultErrorFactory","ThrowIfEmptyOperator","ThrowIfEmptySubscriber","Action","pending","recycleAsyncId","errorValue","actions","Scheduler","SchedulerAction","getSymbolIterator","rxSubscriber","ArgumentOutOfRangeErrorImpl","EmptyErrorImpl","ObjectUnsubscribedErrorImpl","fns","prev","obs","subscribeToObservable","subscribeToPromise","iterable","subscribeToIterable","InnerSubscriber","outerSubscriber","stateChangeExpr","scheduleMicroTask","_position","_onStart","triggerMicrotask","AnimationGroupPlayer","_players","doneCount","destroyCount","startCount","timeAtPosition","longestPlayer","longestSoFar","_DOM","getDOM","setRootDomAdapter","adapter","DomAdapter","PlatformLocation","historyGo","relativePosition","useBrowserPlatformLocation","BrowserPlatformLocation","LOCATION_INITIALIZED","_init","getBaseHrefFromDOM","getBaseHref","onPopState","getGlobalEventTarget","onHashChange","hostname","newPath","supportsState","forward","back","go","getState","createBrowserPlatformLocation","joinWithSlash","slashes","stripTrailingSlash","pathEndIdx","normalizeQueryParams","LocationStrategy","inject","PathLocationStrategy","APP_BASE_HREF","_platformLocation","_removeListenerFns","_baseHref","includeHash","externalUrl","HashLocationStrategy","locationStrategy","EventEmitter","_urlChangeListeners","_urlChangeSubscription","_locationStrategy","browserBaseHref","_stripIndexHtml","ev","emit","isCurrentPathEqualTo","_stripBaseHref","baseHref","_notifyUrlChangeListeners","onUrlChange","fnIndex","onNext","onThrow","onReturn","createLocation","FormStyle","Format","Standalone","TranslationWidth","Narrow","Abbreviated","Wide","Short","FormatWidth","Medium","Long","Full","NumberSymbol","Decimal","Group","List","PercentSign","PlusSign","MinusSign","Exponential","SuperscriptingExponent","PerMille","Infinity","NaN","TimeSeparator","CurrencyDecimal","CurrencyGroup","getLocaleDateFormat","locale","getLastDefinedValue","ɵfindLocaleData","ɵLocaleDataIndex","getLocaleTimeFormat","getLocaleDateTimeFormat","dateTimeFormatData","getLocaleNumberSymbol","symbol","checkFullData","extractTime","hours","minutes","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","format","timezone","toDate","createDate","parsedNb","isoStringToDate","tzHour","tzMin","dateSetter","setUTCFullYear","setFullYear","timeSetter","setUTCHours","setHours","getNamedFormat","part","dateTimezoneOffset","getTimezoneOffset","timezoneToOffset","convertTimezoneToLocal","reverseValue","addDateMinutes","setMinutes","getMinutes","dateFormatter","getDateFormatter","DATE_FORMATS","formatter","dateStrGetter","dateGetter","weekNumberingYearGetter","weekGetter","timeZoneGetter","year","month","newDate","localeId","getLocaleId","formatValue","shortTime","shortDate","formatDateTime","mediumTime","mediumDate","longTime","longDate","fullTime","fullDate","opt_values","digits","minusSign","negWrap","neg","strNum","getDatePart","getFullYear","getMonth","getDate","getHours","getSeconds","getMilliseconds","getDay","formatFractionalSeconds","milliseconds","localeMinus","form","getDateTranslation","getLocaleMonthNames","formStyle","months","getLocaleDayNames","currentHours","currentMinutes","rules","getLocaleExtraDayPeriodRules","rule","dayPeriods","getLocaleExtraDayPeriods","findIndex","afterFrom","beforeTo","getLocaleDayPeriods","amPm","getLocaleEraNames","erasData","getThursdayThisWeek","datetime","monthBased","nbDaysBefore1stDayOfMonth","thisThurs","firstThurs","getFirstThursdayOfYear","firstDayOfYear","THURSDAY","diff","fallback","requestedTimezoneOffset","valueOf","parseCookieValue","eqIndex","NgForOfContext","$implicit","ngForOf","even","odd","NgForOf","_viewContainer","_template","_differs","_ngForOf","_ngForOfDirty","_differ","ngForTrackBy","_trackByFn","ngForTemplate","ngDoCheck","changes","_applyChanges","viewContainer","forEachOperation","adjustedPreviousIndex","currentIndex","previousIndex","createEmbeddedView","view","move","applyViewChange","ilen","forEachIdentityChange","record","dir","ɵdir","NgIf","templateRef","NgIfContext","_thenTemplateRef","_elseTemplateRef","_thenViewRef","_elseViewRef","ngIf","condition","_updateView","ngIfThen","assertTemplate","ngIfElse","ɵstringify","NgStyle","_ngEl","_ngStyle","ngStyle","_setStyle","nameAndUnit","RendererStyleFlags2","nativeElement","forEachRemovedItem","forEachAddedItem","currentValue","forEachChangedItem","NgTemplateOutlet","_viewContainerRef","_viewRef","ngTemplateOutletContext","ngTemplateOutlet","ngTemplateOutletInjector","ngOnChanges","viewContainerRef","invalidPipeArgumentError","SubscribableStrategy","createSubscription","updateLatestValue","dispose","PromiseStrategy","_promiseStrategy","_subscribableStrategy","AsyncPipe","ref","_latestValue","_subscription","_obj","_strategy","_ref","_dispose","transform","_selectStrategy","_updateLatestValue","ɵisPromise","ɵisSubscribable","markForCheck","ɵpipe","pure","DATE_PIPE_DEFAULT_TIMEZONE","DatePipe","defaultTimezone","LOCALE_ID","JsonPipe","PLATFORM_BROWSER_ID","isPlatformBrowser","platformId","ViewportScroller","BrowserViewportScroller","setOffset","getScrollPosition","supportsScrolling","pageXOffset","pageYOffset","scrollToPosition","scrollTo","scrollToAnchor","elSelected","findAnchorFromDocument","documentResult","getElementById","getElementsByName","createTreeWalker","createShadowRoot","attachShadow","treeWalker","NodeFilter","SHOW_ELEMENT","currentNode","shadowRoot","nextNode","scrollToElement","setHistoryScrollRestoration","scrollRestoration","supportScrollRestoration","rect","getBoundingClientRect","scrollRestorationDescriptor","getScrollRestorationProperty","getOwnPropertyDescriptor","XhrFactory","HttpHandler","HttpBackend","normalizedNames","lazyUpdate","lazyInit","maybeSetNormalizedName","getAll","lcName","copyFrom","applyUpdate","other","base","toDelete","HttpUrlEncodingCodec","encodeKey","standardEncoding","encodeValue","decodeKey","decodeValue","STANDARD_ENCODING_REGEX","STANDARD_ENCODING_REPLACEMENTS","valueToString","HttpParams","updates","cloneFrom","encoder","fromObject","paramParser","rawParams","codec","param","eqIdx","appendAll","eKey","HttpContext","isArrayBuffer","isBlob","isFormData","HttpRequest","third","fourth","reportProgress","withCredentials","mightHaveBody","urlWithParams","qIdx","serializeBody","isUrlSearchParams","URLSearchParams","detectContentTypeHeader","setHeaders","setParams","HttpEventType","Sent","UploadProgress","ResponseHeader","DownloadProgress","defaultStatus","defaultStatusText","HttpHeaderResponse","addBody","events$","res$","head","jsonp","callbackParam","HttpInterceptorHandler","interceptor","NoopInterceptor","XSSI_PREFIX","HttpXhrBackend","xhrFactory","detectedType","headerResponse","partialFromXhr","getResponseUrl","onLoad","originalBody","onError","sentHeaders","onDownProgress","progressEvent","loaded","lengthComputable","partialText","onUpProgress","progress","upload","DONE","XSRF_COOKIE_NAME","XSRF_HEADER_NAME","HttpXsrfTokenExtractor","HttpXsrfCookieExtractor","platform","lastCookieString","lastToken","parseCount","getToken","cookieString","ɵparseCookieValue","PLATFORM_ID","HttpXsrfInterceptor","tokenService","lcUrl","HttpInterceptingHandler","backend","interceptors","reduceRight","HttpClientXsrfModule","useExisting","withOptions","XhrFactory$1","getClosureSafeProperty","objWithPropertyToExtract","fillProperties","overriddenName","newLineIndex","concatStringsWithSpace","before","after","__forward_ref__","forwardRef","forwardRefFn","resolveForwardRef","isForwardRef","RuntimeError","formatRuntimeError","renderStringify","throwProviderNotFoundError","injectorName","actual","expected","comparison","opts","ɵɵdefineInjector","getInjectableDef","getOwnDefinition","NG_PROV_DEF","NG_INJECTABLE_DEF","isInjectable","getInjectorDef","NG_INJ_DEF","NG_INJECTOR_DEF","ngInjectableDef","ngInjectorDef","InjectFlags","Host","Self","SkipSelf","Optional","_injectImplementation","setInjectImplementation","impl","injectRootLimpMode","injectableDef","noSideEffects","ChangeDetectionStrategy","OnPush","ViewEncapsulation$1","Emulated","ShadowDom","WorkerGlobalScope","EMPTY_OBJ","EMPTY_ARRAY","NG_COMP_DEF","NG_DIR_DEF","NG_PIPE_DEF","NG_MOD_DEF","NG_FACTORY_DEF","NG_ELEMENT_ID","__NG_ELEMENT_ID__","componentDefCount","ɵɵdefineComponent","componentDefinition","standalone","declaredInputs","providersResolver","ngContentSelectors","hostAttrs","contentQueries","inputs","outputs","exportAs","onPush","changeDetection","directiveDefs","pipeDefs","getStandaloneInjector","viewQuery","features","setInput","schemas","tView","feature","invertObject","extractDirectiveDef","nonNull","getPipeDef$1","getComponentDef","getDirectiveDef","ɵɵdefineNgModule","declarations","exports","transitiveCompileScopes","ɵɵsetNgModuleScope","ngModuleDef","getNgModuleDef","secondary","newLookup","minifiedKey","publicName","declaredName","ɵɵdefineDirective","ɵɵdefinePipe","pipeDef","isStandalone","throwNotFound","isLView","isLContainer","isContentQueryHost","tNode","isComponentHost","isDirectiveHost","isComponentDef","isRootView","getFactoryDef","SimpleChange","firstChange","isFirstChange","ɵɵNgOnChangesFeature","NgOnChangesFeatureImpl","definition","ngOnChangesSetInput","rememberChangeHistoryAndInvokeOnChangesHook","simpleChangesStore","getSimpleChangesStore","privateName","setSimpleChangesStore","store","SIMPLE_CHANGES_STORE","previousChange","ngInherit","unwrapRNode","getNativeByIndex","lView","getNativeByTNode","getTNode","load","getComponentLViewByIndex","nodeIndex","slotValue","viewAttachedToChangeDetector","getConstant","resetPreOrderHookFlags","updateTransplantedViewCount","lContainer","amount","viewOrContainer","instructionState","lFrame","createLFrame","bindingsEnabled","getBindingsEnabled","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","getCurrentDirectiveDef","tData","getCurrentQueryIndex","setCurrentQueryIndex","getDeclarationTNode","declTNode","enterDI","parentTNode","parentLView","allocLFrame","enterView","newView","newLFrame","currentLFrame","childLFrame","child","selectedIndex","elementDepthCount","currentNamespace","leaveViewLight","oldLFrame","leaveDI","leaveView","getSelectedIndex","setSelectedIndex","getSelectedTNode","registerPostOrderHooks","directiveStart","directiveEnd","lifecycleHooks","ngAfterContentInit","ngAfterContentChecked","ngAfterViewInit","ngAfterViewChecked","contentHooks","contentCheckHooks","viewHooks","viewCheckHooks","destroyHooks","executeCheckHooks","callHooks","executeInitAndCheckHooks","initPhase","incrementInitPhaseFlags","currentView","currentNodeIndex","nodeIndexLimit","lastNodeIndexFound","callHook","isInitHook","directive","NodeInjectorFactory","isViewProvider","injectImplementation","resolving","canSeeViewProviders","injectImpl","setUpAttributes","native","namespaceURI","attrName","attrVal","isAnimationProp","isNameOnlyAttributeMarker","marker","mergeHostAttrs","dst","srcMarker","mergeHostAttribute","markerInsertPosition","dstValue","hasParentInjector","parentLocation","getParentInjectorIndex","getParentInjectorView","startView","viewOffset","getParentInjectorViewOffset","parentView","includeViewProviders","setIncludeViewProviders","nextNgElementId","NOT_FOUND","getOrCreateNodeInjectorForNode","existingInjectorIndex","getInjectorIndex","firstCreatePass","injectorIndex","insertBloom","blueprint","parentLoc","getParentInjectorLocation","parentIndex","parentData","footer","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","endIndex","providerTokenOrDef","dirDef","isFactory","throwCyclicDependencyError","depPath","stringifyForError","previousIncludeViewProviders","registerPreOrderHooks","directiveIndex","directiveDef","wrappedOnChanges","preOrderHooks","preOrderCheckHooks","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","ngMetadataName","annotationCls","_desc","flatten","deepForEach","addToArray","removeFromArray","newArray","keyValueArraySet","keyValueArray","keyValueArrayIndexOf","arrayInsert2","value1","value2","keyValueArrayGet","_arrayIndexOfSorted","middle","THROW_IF_NOT_FOUND","DI_DECORATOR_FLAG","NG_TEMP_TOKEN_PATH","NEW_LINE","SOURCE","_currentInjector","setCurrentInjector","former","injectInjectorOnly","getInjectImplementation","skipSelf","injectArgs","types","flag","getInjectFlag","attachInjectFlag","decorator","Important","DashCase","COMMENT_DISALLOWED","COMMENT_DELIMITER","TRACKED_LVIEWS","uniqueIdCounter","MONKEY_PATCH_KEY_NAME","attachPatchData","registerLView","_icuContainerIterate","icuContainerIterate","tIcuContainerNode","getLViewParent","getFirstLContainer","getNearestLContainer","getNextLContainer","applyToElementOrContainer","lNodeToHandle","beforeNode","isComponent","rNode","nativeAppendChild","nativeInsertBefore","nativeRemoveNode","applyContainer","parentRElement","anchor","applyView","createTextNode","updateTextNode","createCommentNode","escapeCommentText","createElementNode","detachMovedView","declarationContainer","movedViews","declarationViewIndex","insertionLContainer","removeIndex","indexInContainer","viewToDetach","declarationLContainer","removedLView","removeViewFromContainer","lQueries","destroyLView","destroyViewTree","rootView","lViewOrLContainer","cleanUpView","firstView","executeOnDestroys","toCall","callContext","processCleanups","tCleanup","cleanup","lCleanup","lastLCleanupIndex","idxOrTargetGetter","useCaptureOrSubIdx","instanceCleanupFn","unregisterLView","getParentRElement","getClosestRElement","nativeAppendOrInsertBefore","nativeParentNode","getInsertInFrontOfRNode","_getInsertInFrontOfRNodeWithI18n","getInsertInFrontOfRNodeWithNoI18n","_processI18nInsertBefore","policy$1","policy","setI18nHandling","getInsertInFrontOfRNodeWithI18n","processI18nInsertBefore","childRNode","childTNode","parentRNode","anchorNode","getFirstNativeNode","tNodeType","getBeforeNodeForView","elIcuContainerChild","rNodeOrLContainer","projectionNodes","getProjectionNodes","projection","viewIndexInContainer","nextViewIndex","firstTNodeOfView","nativeParent","nativeRemoveChild","applyNodes","isProjection","rawSlotValue","nextRNode","applyProjectionRecursive","projectionNext","tProjectionNode","componentLView","nodeToProjectOrRNodes","writeDirectStyle","writeDirectClass","trustedHTMLFromString","html","getPolicy$1","trustedTypes","createPolicy","createHTML","createScript","createScriptURL","setDocument","trustedHTMLFromStringBypass","getPolicy","SafeValueImpl","changingThisBreaksApplicationSecurity","SafeHtmlImpl","getTypeName","SafeStyleImpl","SafeScriptImpl","SafeUrlImpl","SafeResourceUrlImpl","unwrapSafeValue","allowSanitizationBypassAndThrow","actualType","getSanitizationBypassType","bypassSanitizationTrustHtml","trustedHtml","bypassSanitizationTrustStyle","trustedStyle","bypassSanitizationTrustScript","trustedScript","bypassSanitizationTrustUrl","trustedUrl","bypassSanitizationTrustResourceUrl","trustedResourceUrl","getInertBodyHelper","defaultDoc","inertDocumentHelper","InertDocumentHelper","isDOMParserAvailable","DOMParser","parseFromString","DOMParserHelper","getInertBodyElement","inertDocument","implementation","createHTMLDocument","inertHtml","inertBodyElement","templateEl","innerHTML","inertBody","documentMode","stripCustomNsAttrs","elAttrs","attributes","childNode","Node","ELEMENT_NODE","SAFE_URL_PATTERN","_sanitizeUrl","tagSet","sets","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","startElement","TEXT_NODE","nodeValue","endElement","checkClobberedElement","tagName","nodeName","elAttr","lower","encodeEntities","compareDocumentPosition","DOCUMENT_POSITION_CONTAINED_BY","outerHTML","SURROGATE_PAIR_REGEXP","NON_ALPHANUMERIC_REGEXP","inertBodyHelper","_sanitizeHtml","unsafeHtmlInput","unsafeHtml","mXSSAttempts","parsedHtml","getTemplateContent","isTemplateElement","content","HTML","STYLE","SCRIPT","RESOURCE_URL","ɵɵsanitizeHtml","getSanitizer","ɵɵsanitizeUrl","unsafeUrl","ENVIRONMENT_INITIALIZER","INJECTOR_DEF_TYPES","NullInjector","importProvidersFrom","ɵproviders","internalImportProvidersFrom","checkForStandaloneCmp","providersOut","dedup","injectorTypesWithProviders","internalSource","walkProviderTree","processInjectorTypesWithProviders","typesWithProviders","parents","defType","injDef","cmpDef","isDuplicate","dep","importTypesWithProviders","imported","defProviders","USE_VALUE$1","isValueProvider","isTypeProvider","INJECTOR_SCOPE","NOT_YET","CIRCULAR","NULL_INJECTOR$1","getNullInjector","EnvironmentInjector","R3Injector","records","_ngOnDestroyHooks","_onDestroyHooks","forEachSingleProvider","processProvider","makeRecord","injectorDefTypes","assertNotDestroyed","service","runInContext","previousInjector","couldBeInjectableType","injectableDefInScope","injectableDefOrInjectorDefFactory","hydrate","catchInjectorError","injectorErrorName","tokenPath","NG_TOKEN_PATH","resolveInjectorInitializers","providerToRecord","providerToFactory","multiRecord","hasOnDestroy","getUndecoratedInjectableFactory","paramLength","inheritedInjectableDef","getInheritedInjectableDef","ngModuleType","unwrappedProvider","isFactoryProvider","isExistingProvider","classRef","hasDeps","isImportedNgModuleProviders","ComponentFactory$1","_NullComponentFactoryResolver","noComponentFactoryError","ERROR_COMPONENT","ComponentFactoryResolver$1","NULL","injectElementRef","createElementRef","ElementRef","unwrapElementRef","Renderer2","injectRenderer2","nodeAtIndex","Sanitizer","full","major","minor","NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR","getOriginalError","ERROR_ORIGINAL_ERROR","ErrorHandler","_console","originalError","_findOriginalError","ɵɵresolveDocument","ownerDocument","maybeUnwrapFn","classIndexOf","classToSearch","startingIndex","foundIndex","NG_TEMPLATE_SELECTOR","isCssClassMatching","cssClassToMatch","isProjectionMode","isInlineTemplate","hasTagAndTypeMatch","currentSelector","isNodeMatchingSelector","mode","nodeAttrs","nameOnlyMarkerIdx","getNameOnlyMarkerIndex","skipToNextSelector","isPositive","selectorAttrValue","attrIndexInNode","findAttrIndexInNode","nodeAttrValue","compareAgainstClassName","bindingsMode","maybeAttrName","matchTemplateAttribute","attr","isNodeMatchingSelectorList","isSelectorInSelectorList","selectorListLoop","currentSelectorInList","maybeWrapInNotSelector","isNegativeMode","chunk","stringifyCSSSelector","currentChunk","valueOrMarker","attrValue","NO_CHANGE","ɵɵadvance","delta","selectIndexInternal","checkNoChangesMode","createInjector","additionalProviders","createInjectorWithoutInjectorInstances","Injector","ɵɵdirectiveInject","ɵɵinvalidFactory","toTStylingRange","getTStylingRangePrev","tStylingRange","setTStylingRangePrevDuplicate","getTStylingRangeNext","setTStylingRangeNext","setTStylingRangeNextDuplicate","refreshContentQueries","queryStartIdx","directiveDefIdx","createLView","tHostNode","rendererFactory","getUniqueLViewId","getOrCreateTNode","createTNodeAtIndex","createTNode","tParent","insertBeforeIndex","directiveStylingLast","propertyBindings","mergedAttrs","localNames","initialInputs","tViews","stylesWithoutHost","residualStyles","classesWithoutHost","residualClasses","classBindings","styleBindings","allocExpando","numSlotsToAlloc","allocIdx","renderView","executeViewQueryFn","templateFn","executeTemplate","staticContentQueries","staticViewQueries","renderChildComponents","hostLView","renderComponent","incompleteFirstPass","refreshView","setBindingIndex","hooksInitPhaseCompleted","markTransplantedViewsForRefresh","movedLView","refreshEmbeddedViews","embeddedLView","embeddedTView","processHostBindingOpCodes","hostBindingOpCodes","opCode","directiveIdx","bindingRootIndx","hostBindingFn","refreshChildComponents","refreshComponent","firstUpdatePass","prevSelectedIndex","isUpdatePhase","executeContentQueries","createDirectivesInstances","instantiateAllDirectives","addComponentLogic","setInputsFromAttrs","invokeDirectivesHostBindings","elementIndex","getCurrentDirectiveIndex","dirIndex","invokeHostBindingsInCreationMode","saveResolvedLocalsInData","viewData","localRefExtractor","localIndex","getOrCreateComponentTView","createTView","directives","pipes","constsOrFactory","initialViewLength","createViewBlueprint","queries","expandoStartIndex","directiveRegistry","pipeRegistry","storeCleanupWithContext","cleanupFn","getOrCreateLViewCleanup","getOrCreateTViewCleanup","generatePropertyAliases","inputAliasMap","propStore","internalName","initializeInputAndOutputAliases","tViewData","tNodeAttrs","inputsFromAttrs","inputsStore","outputsStore","directiveInputs","generateInitialInputs","elementPropertyInternal","nativeOnly","dataValue","inputData","setInputsForProperty","markDirtyIfOnPush","mapPropName","viewIndex","childComponentLView","resolveDirectives","localRefs","hasDirectives","findDirectiveDefMatches","registry","markAsComponentHost","exportsMap","initTNodeFlags","preOrderHooksFound","preOrderCheckHooksFound","configureViewWithDirective","saveNameToExportMap","lifeCycleHooks","cacheMatchingLocalNames","registerHostBindingOpCodes","directiveVarsIdx","elementIndx","lastSelectedElementIdx","hostTNode","numberOfDirectives","directiveFactory","nodeInjectorFactory","componentView","addToViewTree","setElementAttribute","initialInputData","inputsToStore","createLContainer","hostNative","componentHostIdx","refreshContainsDirtyView","componentTView","syncViewWithBlueprint","markViewDirty","detectChangesInternal","notifyErrorHandler","viewQueryFn","errorHandler","textBindingInternal","computeStaticStyling","writeToHost","collectNativeNodes","lNode","lViewInAContainer","lViewFirstChildTNode","nodesInSlot","ViewRef$1","_cdRefInjectingView","_attachedToViewContainer","viewRefs","reattach","detectChanges","checkNoChanges","attachToViewContainerRef","detachFromAppRef","renderDetachView","attachToAppRef","RootViewRef","_view","componentDef","ComponentFactory","toRefArray","nonMinified","templateName","ChainedInjector","parentInjector","componentType","stringifyCSSSelectorList","selectorList","isBoundToModule","projectableNodes","rootSelectorOrNode","environmentInjector","realEnvironmentInjector","rootViewInjector","hostRenderer","elementName","hostRNode","locateHostElement","elementOrSelector","getNamespace","rootFlags","rootTView","rootLView","tElementNode","createRootComponentView","viewRenderer","extractAttrsAndClassesFromSelector","nodesforSlot","createRootComponent","hostFeatures","instantiateRootComponent","rootTNode","LifecycleHooksFeature","ComponentRef","ComponentRef$1","_rootLView","changeDetectorRef","ɵɵInheritDefinitionFeature","superType","getSuperType","shouldInheritFields","inheritanceChain","superDef","writeableDef","maybeUnwrapEmpty","superHostBindings","inheritHostBindings","superViewQuery","superContentQueries","inheritViewQuery","inheritContentQueries","defData","mergeHostAttrsAcrossInheritance","prevViewQuery","prevContentQueries","prevHostBindings","_symbolIterator","isListLikeIterable","isJsObject","updateBinding","bindingUpdated","is","bindingUpdated2","exp1","exp2","different","bindingUpdated3","exp3","ɵɵattribute","elementAttributeInternal","interpolation1","v0","suffix","ɵɵtemplate","attrsIndex","localRefsIndex","adjustedIndex","templateFirstCreatePass","tViewConsts","comment","ɵɵreference","getContextLView","ɵɵproperty","setDirectiveInputsWhichShadowsStyling","isClassBased","ɵɵelementStart","getNamespace$1","elementStartFirstCreatePass","elementStart","getElementDepthCount","increaseElementDepthCount","ɵɵelementEnd","decreaseElementDepthCount","elementEnd","hasClassInput","hasStyleInput","ɵɵelement","ɵɵelementContainerStart","elementContainerStartFirstCreatePass","ɵɵelementContainerEnd","ɵɵgetCurrentView","isSubscribable","isObservable","ɵɵlistener","listenerFn","eventTargetResolver","listenerInternal","isTNodeDirectiveHost","processOutputs","lCleanupIndex","existingListener","findExistingListener","tNodeIdx","cleanupEventName","listenerIdxInLCleanup","__ngLastListenerFn__","__ngNextListenerFn__","wrapListener","propsLength","executeListenerWithErrorHandling","profiler","wrapWithPreventDefault","wrapListenerIn_markDirtyAndPreventDefault","nextListenerFn","returnValue","ɵɵnextContext","nextContextImpl","walkUpViews","nestingLevel","matchingProjectionSlotIndex","projectionSlots","wildcardNgContentIndex","ngProjectAsAttrVal","getProjectAsAttrValue","ngProjectAsAttrIdx","ɵɵprojectionDef","componentNode","projectionHeads","tails","componentChild","slotIndex","ɵɵprojection","selectorIndex","applyProjection","ɵɵpropertyInterpolate","ɵɵpropertyInterpolate1","interpolatedValue","ɵɵpropertyInterpolate2","v1","interpolation2","markDuplicates","tStylingKey","isPrevDir","isClassBinding","tStylingAtIndex","isMap","cursor","foundDuplicate","tStyleRangeAtCursor","isStylingMatch","tStylingKeyCursor","parserState","textEnd","keyEnd","valueEnd","getLastParsedKey","parseClassNameNext","consumeClassToken","consumeWhitespace","ɵɵstyleProp","checkStylingProperty","ɵɵclassProp","ɵɵclassMap","checkStylingMap","stringParser","stylingFirstUpdatePass","hasStylingInputShadow","isInHostBindings","staticPrefix","updateStylingMap","oldKeyValueArray","newKeyValueArray","oldIndex","newIndex","oldKey","setKey","updateStyling","toStylingKeyValueArray","styleKeyValueArray","unwrappedValue","classStringParser","parseClassName","resetParserState","normalizeSuffix","isHostBindings","wrapInStaticStylingKey","stylingKey","hostDirectiveDef","residual","collectStylingFromTAttrs","collectStylingFromDirectives","templateStylingKey","getTemplateHeadTStylingKey","bindings","setTemplateHeadTStylingKey","collectResidual","insertTStylingBinding","tStylingKeyWithStatic","isHostBinding","tBindings","tmplHead","tmplTail","isKeyDuplicateOfStatic","staticKeyValueArray","setTStylingRangePrev","markDuplicateOfResidualStyling","currentDirective","desiredMarker","currentMarker","tRange","isStylingValuePresent","getTStylingRangeNextDuplicate","findStylingValue","getTStylingRangePrevDuplicate","applyStyling","isPrevDirection","rawKey","containsStatics","isStylingMap","valueAtLViewIndex","ɵɵtext","textNative","ɵɵtextInterpolate","ɵɵtextInterpolate1","interpolated","ɵɵtextInterpolate3","v2","interpolation3","ɵɵhostProperty","ɵɵsyntheticHostProperty","loadComponentRenderer","currentDef","unwrapLView","localeEn","plural","LOCALE_DATA","findLocaleData","normalizedLocale","normalizeLocale","getLocaleData","parentLocale","getLocalePluralCase","LocaleDataIndex","PluralCase","ng","common","locales","LocaleId","DayPeriodsFormat","DayPeriodsStandalone","DaysFormat","DaysStandalone","MonthsFormat","MonthsStandalone","FirstDayOfWeek","WeekendRange","DateFormat","TimeFormat","DateTimeFormat","NumberSymbols","NumberFormats","CurrencyCode","CurrencySymbol","CurrencyName","Currencies","Directionality","ExtraData","pluralMapping","DEFAULT_LOCALE_ID","ELEMENT_MARKER","ICU_MARKER","I18nCreateOpCode","SHIFT","APPEND_EAGERLY","COMMENT","LOCALE_ID$1","setLocaleId","assertDefined","tNodeInsertBeforeIndex","i18nParent","anchorRNode","addTNodeAndUpdateInsertBeforeIndex","previousTNodes","newTNode","existingTNode","isI18nText","isNewTNodeCreatedBefore","getInsertBeforeIndex","setInsertBeforeIndex","getTIcu","createTNodePlaceholder","getCurrentICUCaseIndex","tIcu","currentCase","currentCaseLViewIndex","getParentFromIcuCreateOpCode","mergedCode","getRefFromIcuCreateOpCode","changeMask","changeMaskCounter","applyMutableOpCodes","mutableOpCodes","rootRNode","rootIdx","textNodeIndex","parentIdx","insertInFrontOf","refIdx","caseIndex","commentValue","commentNodeIndex","elementNodeIndex","applyUpdateOpCodes","updateOpCodes","bindingsStartIndex","checkBit","skipCodes","sanitizeFn","tNodeOrTagName","rText","applyIcuSwitchCase","applyIcuUpdateCase","activeCaseIndex","mask","getCaseIndex","icuExpression","bindingValue","cases","resolvedCase","getPluralCase","applyIcuSwitchCaseRemove","removeCodes","nodeOrIcuIndex","loadIcuContainerVisitor","_stack","_removes","_index","enterIcu","icuContainerIteratorNext","removeOpCode","icuContainerIteratorStart","BINDING_REGEXP","NESTED_ICU","ICU_BLOCK_REGEXP","SUBTEMPLATE_REGEXP","PH_REGEXP","NGSP_UNICODE_REGEXP","createTNodeAndAddOpCode","existingTNodes","createOpCodes","isICU","i18nNodeIdx","ensureIcuContainerVisitorLoaded","loader","setTNodeInsertBeforeIndex","assertEqual","i18nStartFirstCreatePassProcessTextNode","hasBinding","generateBindingUpdateOpCodes","destinationNode","bindingStart","maskIndex","sizeIndex","textParts","textValue","toMaskBit","removeInnerTemplateTranslation","tagMatched","inTemplate","icuStart","bindingMask","addUpdateIcuSwitch","mainBinding","setTIcu","valueArr","nestedIcus","icuIndex","parseIcuCase","addUpdateIcuUpdate","parseICUBlock","icuType","i18nParseTextIntoPartsAndICU","binding","blocks","prevPos","braceStack","braces","block","caseName","unsafeCaseHtml","inertRootNode","walkIcuTree","sharedUpdateOpCodes","depth","addCreateNodeAndAppend","lowerAttrName","addCreateAttribute","addRemoveNode","textContent","COMMENT_NODE","isNestedIcu","addRemoveNestedIcu","appendToParentIdx","createAtIdx","icuCreateOpCode","ɵɵi18nStart","messageIndex","subTemplateIndex","i18nStartFirstCreatePass","parentTNodeIndex","existingTNodeStack","getTranslationForTemplate","isRootTemplateMessage","msgParts","replaceNgsp","isClosing","tI18n","applyCreateOpCodes","isComment","appendNow","ɵɵi18n","ɵɵi18nEnd","ɵɵi18nExp","setMaskBit","hasChange","ɵɵi18nApply","applyI18n","resolveProvider","lInjectablesBlueprint","providerFactory","beginIndex","existingFactoryIndex","registerDestroyHooksIfSupported","existingProvidersFactoryIndex","existingViewProvidersFactoryIndex","doesProvidersFactoryExist","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","_parent","_bootstrapComponents","destroyCbs","componentFactoryResolver","_r3Injector","NgModuleFactory","moduleType","EnvironmentNgModuleRefAdapter","createEnvironmentInjector","debugName","StandaloneService","cachedInjectors","getOrCreateStandaloneInjector","standaloneInjector","ɵɵStandaloneFeature","ɵɵpureFunction0","slotOffset","pureFn","getBinding","ɵɵpureFunction1","pureFunction1Internal","ɵɵpureFunction2","pureFunction2Internal","ɵɵpureFunction3","pureFunction3Internal","bindingRoot","getPureFunctionReturnValue","returnValueIndex","lastReturnValue","ɵɵpipe","pipeName","getPipeDef","pipeFactory","pipeInstance","ɵɵpipeBind1","isPure","ɵɵpipeBind2","_wrapInTimeout","EventEmitter_","__isAsync","nextFn","errorFn","completeFn","symbolIterator","_results","QueryList","_emitDistinctChangesOnly","dirty","_changesDetected","_changes","toArray","resultsTree","identityAccessor","newResultFlat","arrayEquals","valueA","valueB","notifyOnChanges","setDirty","TemplateRef","injectTemplateRef","ViewEngineTemplateRef","R3TemplateRef","_declarationLView","_declarationTContainer","elementRef","declarationViewLQueries","createTemplateRef","ViewContainerRef","injectViewContainerRef","createContainerRef","VE_ViewContainerRef","R3ViewContainerRef","_lContainer","_hostTNode","_hostLView","getViewRefs","indexOrOptions","viewRef","insert","createComponent","componentFactoryOrType","isComponentFactory","isType","ngModuleRef","contextInjector","viewAttachedToContainer","prevIdx","prevLContainer","prevVCRef","adjustedIdx","_adjustIndex","insertView","containerLength","trackMovedView","addViewToContainer","parentNativeNode","getOrCreateViewRefs","viewRefsArr","detachedView","commentNode","nativeNextSibling","LQuery_","queryList","LQueries_","tQueries","noOfInheritedQueries","viewLQueries","tQuery","getByIndex","indexInDeclarationView","dirtyQueriesWithMatches","getTQuery","TQueryMetadata_","read","TQueries_","queriesForTemplateRef","childQueryIndex","tqueryClone","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","ɵɵtemplateRefExtractor","APP_INITIALIZER","ApplicationInitStatus","appInits","donePromise","rej","runInitializers","asyncInitPromises","initResult","observableAsPromise","APP_ID","_appIdRandomProviderFactory","_randomChar","PLATFORM_INITIALIZER","APP_BOOTSTRAP_LISTENER","Console","getGlobalLocale","$localize","DEFAULT_CURRENCY_CODE","ModuleWithComponentFactories","ngModuleFactory","componentFactories","Compiler","compileModuleSync","compileModuleAsync","compileModuleAndAllComponentsSync","declaration","compileModuleAndAllComponentsAsync","clearCache","clearCacheFor","getModuleId","Zone","enableLongStackTrace","shouldCoalesceEventChangeDetection","shouldCoalesceRunChangeDetection","hasPendingMacrotasks","hasPendingMicrotasks","isStable","onUnstable","onMicrotaskEmpty","onStable","assertZonePatched","_nesting","_outer","_inner","AsyncStackTaggingZoneSpec","TaskTrackingZoneSpec","longStackTraceZoneSpec","lastRequestAnimationFrameId","nativeRequestAnimationFrame","getNativeRequestAnimationFrame","requestAnimationFrame","nativeCancelAnimationFrame","cancelAnimationFrame","unpatchedRequestAnimationFrame","__symbol__","unpatchedCancelAnimationFrame","forkInnerZoneWithAngularBehavior","delayChangeDetectionForEventsDelegate","delayChangeDetectionForEvents","isCheckStableRunning","fakeTopEventTask","scheduleEventTask","updateMicroTaskStatus","checkStable","invoke","isAngularZone","onInvokeTask","task","applyThis","applyArgs","onEnter","invokeTask","onLeave","onInvoke","onHasTask","hasTaskState","hasTask","change","_hasPendingMicrotasks","microTask","macroTask","onHandleError","isInAngularZone","runTask","EMPTY_PAYLOAD","cancelTask","runGuarded","NoopNgZone","TESTABILITY","TESTABILITY_GETTER","_testabilityGetter","Testability","_ngZone","testabilityGetter","_pendingCount","_isZoneStable","_didWork","_callbacks","taskTrackingZone","setTestabilityGetter","getter","addToWindow","_watchAngularEvents","assertNotInAngularZone","_runCallbacksIfReady","increasePendingRequestCount","decreasePendingRequestCount","doneCb","getPendingTasks","updateCb","macroTasks","creationLocation","addCallback","whenStable","getPendingRequestCount","registerApplication","unregisterApplication","findProviders","using","exactMatch","TestabilityRegistry","_applications","testability","unregisterAllApplications","getTestability","getAllTestabilities","getAllRootElements","findTestabilityInTree","findInAncestors","_platformInjector","ALLOW_MULTIPLE_PLATFORMS","PLATFORM_DESTROY_LISTENERS","NgProbeToken","createPlatformFactory","parentPlatformFactory","extraProviders","getPlatform","platformProviders","createPlatform","PlatformRef","runPlatformInitializers","inits","createPlatformInjector","assertPlatform","requiredToken","_modules","_destroyListeners","bootstrapModuleFactory","moduleFactory","getNgZone","ngZoneToUse","getNgZoneOptions","ngZoneEventCoalescing","ngZoneRunCoalescing","ngZoneInjector","moduleRef","exceptionHandler","_callAndReportToErrorHandler","initStatus","_moduleDoBootstrap","compilerOptions","optionsReducer","compileNgModuleFactory","ngDoBootstrap","module","destroyListeners","objs","_exceptionHandler","_bootstrapListeners","_views","_runningTick","_stable","componentTypes","_onMicrotaskEmptySubscription","isCurrentlyStable","stableSub","unstableSub","assertInAngularZone","merge$1","componentOrFactory","cf","compRef","_loadComponent","NG_DEV_MODE","viewCount","warnIfDestroyed","_devMode","ChangeDetectorRef","injectChangeDetectorRef","createViewRef","isPipe","DefaultIterableDifferFactory","supports","trackByFn","DefaultIterableDiffer","trackByIdentity","_linkedRecords","_unlinkedRecords","_previousItHead","_itHead","_itTail","_additionsHead","_additionsTail","_movesHead","_movesTail","_removalsHead","_removalsTail","_identityChangesHead","_identityChangesTail","forEachItem","nextIt","nextRemove","addRemoveOffset","moveOffsets","getPreviousIndex","adjPreviousIndex","_nextRemoved","localMovePreviousIndex","localCurrentIndex","forEachPreviousItem","_nextPrevious","_nextAdded","forEachMovedItem","_nextMoved","_nextIdentityChange","collection","check","_reset","itemTrackBy","mayBeDirty","trackById","_verifyReinsertion","_addIdentityChange","_mismatch","iterateListLike","_truncate","isDirty","previousRecord","_prev","_remove","_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","copied","defaultKeyValueDiffersFactory","KeyValueDiffers","platformCore","ApplicationModule","coerceToBoolean","elementInjector","forkJoinInternal","emitted","BaseControlValueAccessor","_elementRef","onChange","onTouched","registerOnTouched","registerOnChange","setDisabledState","BuiltInControlValueAccessor","NG_VALUE_ACCESSOR","CHECKBOX_VALUE_ACCESSOR","CheckboxControlValueAccessor","writeValue","DEFAULT_VALUE_ACCESSOR","DefaultValueAccessor","COMPOSITION_BUFFER_MODE","_compositionMode","_composing","_isAndroid","ɵgetDOM","getUserAgent","_handleInput","_compositionStart","_compositionEnd","isEmptyInputValue","hasValidLength","NG_VALIDATORS","NG_ASYNC_VALIDATORS","EMAIL_REGEXP","Validators","minValidator","maxValidator","control","requiredValidator","required","requiredTrueValidator","emailValidator","minLength","minLengthValidator","minlength","requiredLength","actualLength","maxLengthValidator","maxlength","patternValidator","nullValidator","regexStr","requiredPattern","actualValue","validators","compose","composeAsync","mergeErrors","arrayOfErrors","executeValidators","validator","normalizeValidators","isValidatorFn","validate","presentValidators","composeValidators","forkJoin","composeAsyncValidators","mergeValidators","controlValidators","dirValidator","getControlValidators","_rawValidators","getControlAsyncValidators","_rawAsyncValidators","makeValidatorsArray","hasValidator","includes","addValidators","currentValidators","validatorsToAdd","removeValidators","AbstractControlDirective","_onDestroyCallbacks","valid","invalid","pristine","touched","untouched","statusChanges","valueChanges","_setValidators","_composedValidatorFn","_setAsyncValidators","_composedAsyncValidatorFn","asyncValidator","_registerOnDestroy","_invokeOnDestroyCallbacks","getError","ControlContainer","formDirective","NgControl","valueAccessor","AbstractControlStatus","cd","_cd","isTouched","isUntouched","isPristine","isInvalid","isPending","isSubmitted","submitted","NgControlStatus","NgControlStatusGroup","VALID","INVALID","PENDING","pickValidators","validatorOrOpts","isOptionsObj","coerceToValidator","pickAsyncValidators","asyncValidators","coerceToAsyncValidator","assertControlPresent","isGroup","assertAllValuesPresent","_forEachChild","AbstractControl","_pendingDirty","_hasOwnPendingAsyncValidator","_pendingTouched","_onCollectionChange","_onDisabledChange","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","FormGroup","_setUpControls","registerControl","addControl","removeControl","setControl","controlName","patchValue","_reduceChildren","acc","_syncPendingControls","subtreeUpdated","updated","_reduceValue","initValue","FormRecord","controlPath","setUpControl","setUpValidators","setUpViewChangePipeline","_pendingValue","_pendingChange","updateControl","setUpModelChangePipeline","emitModelEvent","viewToModelUpdate","_unregisterOnChange","setUpBlurPipeline","setUpDisabledChangeHandler","onDisabledChange","registerOnDisabledChange","_unregisterOnDisabledChange","cleanUpControl","validateControlPresenceOnChange","cleanUpValidators","registerOnValidatorChange","onValidatorChange","isControlUpdated","updatedValidators","updatedAsyncValidators","emitModelToViewChange","isPropertyUpdated","viewModel","selectValueAccessor","valueAccessors","defaultAccessor","builtinAccessor","customAccessor","isBuiltInAccessor","removeListItem","isFormControlState","formState","FormControl","_onChange","_applyFormState","nonNullable","initialValueIsDefault","emitViewToModelChange","AbstractFormGroupDirective","_checkParentType","addFormGroup","removeFormGroup","getFormGroup","formControlBinding$1","NgModel","resolvedPromise","_changeDetectorRef","_registered","_checkForErrors","_checkName","oldName","_getPath","_setUpControl","_updateDisabled","_isStandalone","_setUpStandalone","disabledValue","ɵcoerceToBoolean","ɵNgNoValidate","NUMBER_VALUE_ACCESSOR","NumberValueAccessor","RADIO_VALUE_ACCESSOR","RadioControlValueAccessor","RadioControlRegistryModule","RadioControlRegistry","_accessors","accessor","_isSameGroup","fireUncheck","controlPair","_control","_registry","_fn","formControlName","NG_MODEL_WITH_FORM_CONTROL_WARNING","formDirectiveProvider","FormGroupDirective","_updateDomValue","ngSubmit","_checkFormPresent","_updateValidators","_updateRegistrations","_oldForm","getControl","removeListItem$1","_setUpFormContainer","_cleanUpFormContainer","addFormArray","removeFormArray","getFormArray","updateModel","onSubmit","$event","syncPendingControls","onReset","resetForm","oldCtrl","newCtrl","isFormControl","setUpFormContainer","cleanUpFormContainer","formGroupNameProvider","FormGroupName","_hasInvalidParent","formArrayNameProvider","FormArrayName","controlNameBinding","FormControlName","_ngModelWarningConfig","_added","_ngModelWarningSent","_ngModelWarningSentOnce","SELECT_VALUE_ACCESSOR","SelectControlValueAccessor","_buildValueString$1","_optionMap","_idCounter","_compareWith","compareWith","valueString","_getOptionId","_getOptionValue","_registerOption","_extractId$1","NgSelectOption","_select","ngValue","_setElementValue","SELECT_MULTIPLE_VALUE_ACCESSOR","SelectMultipleControlValueAccessor","_buildValueString","optionSelectedStateSetter","ids","opt","_setSelected","selected","selectedOptions","_extractId","ɵNgSelectMultipleOption","toFloat","AbstractValidatorDirective","_validator","inputName","normalizeInput","createValidator","MAX_VALIDATOR","MaxValidator","MIN_VALIDATOR","MinValidator","ɵInternalFormsSharedModule","warnOnNgModelWithFormControl","FormArray","_registerControl","removeAt","isAbstractControlOptions","FormBuilder","useNonNullable","nnfb","group","reducedControls","_reduceControls","createdControls","_createControl","UntypedFormBuilder","controlsConfig","GenericBrowserDomAdapter","ɵDomAdapter","supportsDOMEvents","BrowserDomAdapter","ɵsetRootDomAdapter","onAndCancel","getDefaultDocument","createHtmlDocument","isShadowRoot","DocumentFragment","getBaseElementHref","baseElement","getAttribute","relativePath","urlParsingNode","resetBaseElement","TRANSITION_ID","SERVER_TRANSITION_PROVIDERS","appInitializerFactory","transitionId","BrowserXhr","EVENT_MANAGER_PLUGINS","EventManager","_eventNameToPlugin","_plugins","_findPluginFor","addGlobalEventListener","getZone","EventManagerPlugin","SharedStylesHost","_stylesSet","addStyles","additions","onStylesAdded","getAllStyles","DomSharedStylesHost","_hostNodes","_addStylesToHost","styleNodes","styleEl","addHost","hostNode","removeHost","styleNode","NAMESPACE_URIS","svg","xhtml","xlink","xml","xmlns","math","COMPONENT_REGEX","compId","decoratePreventDefault","DomRendererFactory2","eventManager","sharedStylesHost","rendererByCompId","defaultRenderer","DefaultDomRenderer2","EmulatedEncapsulationDomRenderer2","applyToHost","ShadowDomRenderer","createElementNS","isTemplateNode","namespaceUri","setAttributeNS","removeAttributeNS","removeProperty","contentAttr","shimContentAttribute","componentShortId","hostAttr","shimHostAttribute","hostEl","nodeOrShadowRoot","DomEventsPlugin","MODIFIER_KEYS","_keyMap","Del","Esc","Left","Right","Up","Down","Menu","Scroll","Win","MODIFIER_KEY_GETTERS","alt","altKey","ctrlKey","metaKey","shiftKey","KeyEventsPlugin","parseEventName","outsideHandler","eventCallback","fullKey","domEventName","_normalizeKey","codeIX","modifierName","fullKeyCode","keycode","modifierGetter","matchEventFullKeyCode","keyName","platformBrowser","ɵPLATFORM_BROWSER_ID","initDomAdapter","makeCurrent","ɵsetDocument","BROWSER_MODULE_PROVIDERS_MARKER","TESTABILITY_PROVIDERS","ɵTESTABILITY_GETTER","BrowserGetTestability","ɵglobal","testabilities","didWork","decrement","didWork_","parentElement","ɵTESTABILITY","BROWSER_MODULE_PROVIDERS","ɵINJECTOR_SCOPE","providersAlreadyPresent","Title","getTitle","newTitle","createTitle","DomSanitizerImpl","ɵallowSanitizationBypassAndThrow","ɵunwrapSafeValue","ɵ_sanitizeHtml","ɵ_sanitizeUrl","bypassSecurityTrustHtml","ɵbypassSanitizationTrustHtml","bypassSecurityTrustStyle","ɵbypassSanitizationTrustStyle","bypassSecurityTrustScript","ɵbypassSanitizationTrustScript","bypassSecurityTrustUrl","ɵbypassSanitizationTrustUrl","bypassSecurityTrustResourceUrl","ɵbypassSanitizationTrustResourceUrl","domSanitizerImplFactory","scan","accumulator","seed","hasSeed","ScanOperator","ScanSubscriber","_seed","takeLast","TakeLastOperator","TakeLastSubscriber","ring","TakeWhileOperator","inclusive","TakeWhileSubscriber","nextOrComplete","predicateResult","MapToOperator","MapToSubscriber","finalize","FinallyOperator","FinallySubscriber","PRIMARY_OUTLET","RouteTitleKey","ParamsAsMap","convertToParamMap","defaultUrlMatcher","segments","segmentGroup","hasChildren","posParams","segment","consumed","shallowEqual","equalArraysOrString","aSorted","bSorted","wrapIntoObservable","ɵisObservable","pathCompareMap","exact","equalSegmentGroups","containee","matrixParams","equalPath","matrixParamsMatch","numberOfChildren","subset","containsSegmentGroup","paramCompareMap","equalParams","containsParams","containsTree","paths","containsSegmentGroupHelper","containeePaths","containerPaths","containeeSegment","UrlTree","queryParamMap","_queryParamMap","DEFAULT_SERIALIZER","UrlSegmentGroup","serializePaths","UrlSegment","parameterMap","_parameterMap","serializePath","as","bs","UrlSerializer","DefaultUrlSerializer","UrlParser","parseRootSegment","parseQueryParams","parseFragment","tree","serializeSegment","serializeQueryParams","strParams","encodeUriQuery","encodeUriFragment","primary","mapChildrenIntoArray","childOutlet","encodeUriString","encodeUriSegment","decodeQuery","serializeMatrixParams","SEGMENT_RE","matchSegments","QUERY_PARAM_RE","QUERY_PARAM_VALUE_RE","consumeOptional","peekStartsWith","parseChildren","parseQueryParam","parseSegment","parseParens","parseMatrixParams","parseParam","valueMatch","matchQueryParams","matchUrlQueryParamValue","decodedKey","decodedVal","currentVal","allowPrimary","outletName","createRoot","rootCandidate","Ct","squashSegmentGroup","newChildren","childCandidate","mergeTrivialChildren","isUrlTree","createUrlTree","urlTree","commands","computeNavigation","Navigation","numberOfDoubleDots","isAbsolute","cmd","cmdIdx","outlets","segmentPath","urlPart","partIndex","toRoot","createTreeUsingPathIndex","lastPathIndex","startingPosition","findStartingPosition","Position","createPositionApplyingDoubleDots","ci","dd","isMatrixParams","_urlSegment","processChildren","updateSegmentGroupChildren","updateSegmentGroup","_lastPathIndex","isCommandWithOutlets","oldRoot","oldSegmentGroup","newSegmentGroup","qp","replaceSegment","newRoot","oldSegment","newSegment","cmdWithOutlet","prefixedWith","currentCommandIndex","currentPathIndex","noMatch","pathIndex","commandIndex","curr","slicedCommands","createNewSegmentGroup","getOutlets","outlet","createNewSegmentChildren","RouterEvent","NavigationStart","navigationTrigger","restoredState","urlAfterRedirects","NavigationCancel","NavigationError","RoutesRecognized","GuardsCheckStart","GuardsCheckEnd","shouldActivate","ResolveStart","ResolveEnd","RouteConfigLoadStart","RouteConfigLoadEnd","ChildActivationStart","routeConfig","ChildActivationEnd","ActivationStart","ActivationEnd","routerEvent","Tree","_root","pathFromRoot","findNode","siblings","findPath","cc","TreeNode","nodeChildrenAsMap","RouterState","setRouterState","createEmptyState","rootComponent","createEmptyStateSnapshot","activated","ActivatedRouteSnapshot","RouterStateSnapshot","emptyUrl","emptyParams","emptyData","emptyQueryParams","ActivatedRoute","futureSnapshot","_futureSnapshot","_routerState","paramMap","_paramMap","inheritedParamsDataResolve","paramsInheritanceStrategy","inheritingStartingFrom","flattenInherited","_resolvedData","urlSegment","correctedLastPathIndex","_correctedLastPathIndex","_resolve","serializeNode","advanceActivatedRoute","nextSnapshot","shallowEqualArrays","equalParamsAndUrlSegments","equalUrlParams","equalSegments","createNode","routeReuseStrategy","prevState","shouldReuseRoute","createOrReuseChildren","shouldAttach","detachedRouteHandle","retrieve","createActivatedRoute","NAVIGATION_CANCELING_ERROR","redirectingNavigationError","urlSerializer","redirect","redirectTo","navigationBehaviorOptions","navigationCancelingError","redirectUrl","cancellationCode","isRedirectingNavigationCancelingError$1","isNavigationCancelingError$1","OutletContext","ChildrenOutletContexts","attachRef","contexts","onChildOutletCreated","childName","getOrCreateContext","onChildOutletDestroyed","getContext","onOutletDeactivated","onOutletReAttached","NG_DEV_MODE$7","RouterOutlet","parentContexts","changeDetector","_activatedRoute","activateEvents","deactivateEvents","attachEvents","detachEvents","activateWith","isActivated","activatedRouteData","cmp","deactivate","resolverOrInjector","childContexts","OutletInjector","isComponentFactoryResolver","ɵEmptyOutletComponent","getOrCreateRouteInjectorIfNeeded","currentInjector","standardizeConfig","loadComponent","getOutlet","sortByMatchingOutlets","sortedConfig","getClosestRouteInjector","_loadedInjector","ActivateRoutes","futureState","currState","forwardEvent","futureRoot","currRoot","deactivateChildRoutes","activateChildRoutes","futureNode","currNode","futureChild","childOutletName","deactivateRoutes","deactivateRouteAndItsChildren","future","shouldDetach","detachAndStoreRouteSubtree","deactivateRouteAndOutlet","activateRoutes","stored","cmpFactoryResolver","CanActivate","CanDeactivate","getAllRouteGuards","getChildRouteGuards","getTokenOrFunctionIdentity","tokenOrFunction","ɵisInjectable","futurePath","checks","canDeactivateChecks","canActivateChecks","prevChildren","getRouteGuards","shouldRun","shouldRunGuardsAndResolvers","runGuardsAndResolvers","isEmptyError","INITIAL_VALUE","prioritizedGuardValue","redirectIfUrlTree","noMatch$1","matched","consumedSegments","remainingSegments","positionalParamSegments","matchWithChecks","runCanMatchGuards","canMatch","canMatchObservables","injectionToken","guard","isCanMatch","matcher","slicedSegments","containsEmptyPathMatchesWithNamedOutlets","emptyPathMatch","createChildrenForEmptyPaths","primarySegment","_sourceSegment","_segmentIndexShift","containsEmptyPathMatches","addEmptyPathsToChildrenIfNeeded","isImmediateMatch","rawSegment","noLeftoversInUrl","NG_DEV_MODE$6","NoMatch$1","AbsoluteRedirect","absoluteRedirect","newTree","ApplyRedirects","configLoader","allowRedirects","splitGroup","rootSegmentGroup","expandSegmentGroup","noMatchError","expandChildren","expandSegment","childOutlets","sortedRoutes","expandedChild","last$1","expandSegmentAgainstRoute","matchSegmentAgainstRoute","expandSegmentAgainstRouteUsingRedirect","expandWildCardWithParamsAgainstRouteUsingRedirect","expandRegularSegmentAgainstRouteUsingRedirect","applyRedirectCommands","lineralizeSegments","newSegments","rawSegmentGroup","_loadedRoutes","cfg","getChildConfig","routerConfig","childInjector","childConfig","splitSegmentGroup","matchedOnOutlet","runCanLoadGuards","canLoadObservables","isCanLoad","shouldLoadResult","canLoadFails","applyRedirectCreateUrlTree","createSegmentGroup","createQueryParams","redirectToParams","actualParams","sourceName","updatedSegments","createSegments","redirectToSegments","actualSegments","findPosParam","findOrReturn","redirectToUrlSegment","NoMatch","Recognizer","rootComponentType","recognize","processSegmentGroup","freeze","rootNode","routeState","inheritParamsAndData","routeNode","processSegment","outletChildren","takeWhile","mergedChildren","mergeEmptyPathMatches","sortActivatedRouteSnapshots","localeCompare","processSegmentAgainstRoute","matchResult","pathIndexShift","getPathIndexShift","getData","_loadedComponent","getSourceSegmentGroup","getResolve","hasEmptyPathConfig","mergedNodes","duplicateEmptyPathNode","resultNode","mergedNode","hasStaticTitle","switchTap","nextResult","TitleStrategy","buildTitle","pageTitle","getResolvedTitleForRoute","DefaultTitleStrategy","updateTitle","RouteReuseStrategy","DefaultRouteReuseStrategy","BaseRouteReuseStrategy","detachedTree","ROUTER_CONFIGURATION","ROUTES","RouterConfigLoader","compiler","componentLoaders","childrenLoaders","onLoadStartListener","loadRunner","onLoadEndListener","loadModuleFactoryOrRoutes","factoryOrRoutes","rawRoutes","requireStandaloneComponents","NG_DEV_MODE$3","UrlHandlingStrategy","DefaultUrlHandlingStrategy","shouldProcessUrl","extract","newUrlPart","wholeUrl","defaultErrorHandler","defaultMalformedUriErrorHandler","exactMatchOptions","subsetMatchOptions","setupRouter","defaultTitleStrategy","titleStrategy","urlHandlingStrategy","Router","assignExtraOptionsToRouter","malformedUriErrorHandler","onSameUrlNavigation","urlUpdateStrategy","canceledNavigationResolution","rootContexts","lastSuccessfulNavigation","currentNavigation","disposed","navigationId","currentPageId","isNgZoneEnabled","navigated","lastSuccessfulId","afterPreactivation","triggerEvent","ɵConsole","resetConfig","currentUrlTree","createEmptyUrlTree","rawUrlTree","browserUrlTree","routerState","targetPageId","currentRawUrl","extractedUrl","rawUrl","extras","targetSnapshot","currentRouterState","targetRouterState","guards","guardsResult","navigations","setupNavigations","processNavigations","browserPageId","ɵrouterPageId","eventsSubject","overallTransitionState","initialUrl","previousNavigation","urlTransition","isBrowserTriggeredNavigation","serializeUrl","applyRedirects","applyRedirects$1","finalUrl","serializer","recognize$1","newObservableError","skipLocationChange","setBrowserUrl","routesRecognized","navStart","replaceUrl","guardsStart","checkGuards","runCanDeactivateChecks","futureRSS","currRSS","runCanDeactivate","currARS","canDeactivate","canDeactivateObservables","closestInjector","isCanDeactivate","runCanActivateChecks","fireChildActivationStart","fireActivationStart","runCanActivateChild","futureARS","canActivateChildGuardsMapped","getCanActivateChild","guardsMapped","isCanActivateChild","runCanActivate","canActivateObservables","isCanActivate","guardsEnd","restoreHistory","cancelNavigationTransition","resolveStart","dataResolved","resolveData","canActivateChecksResolved","runResolve","resolveNode","getDataKeys","getResolver","mapTo","resolvedData","resolveEnd","loadComponents","loaders","loadedComponent","createRouterState","navCancel","mergedTree","scheduleNavigation","navError","ee","resetRootComponentType","setTransition","initialNavigation","setUpLocationChangeListener","navigateByUrl","locationSubscription","stateCopy","getCurrentNavigation","navigationExtras","relativeTo","queryParamsHandling","preserveFragment","removeEmptyProps","validateCommands","isActive","matchOptions","priorPromise","generateNgRouterState","restoringFromCaughtError","targetPagePosition","resetState","resetUrlToCurrentUrlTree","routerPageId","RouterLink","tabIndexAttribute","_preserveFragment","_skipLocationChange","_replaceUrl","onChanges","setTabIndexIfNotOnNativeEl","newTabIndex","routerLink","onClick","RouterLinkWithHref","updateTargetUrlAndHref","button","i3","RouterLinkActive","cdr","linkWithHref","routerLinkActiveOptions","isActiveChange","routerEventsSubscription","links","linksWithHrefs","subscribeToEachLinkOnChanges","linkInputChangesSubscription","allLinkChanges","isLinkActive","routerLinkActive","hasActiveLinks","ariaCurrentWhenActive","isActiveMatchOptions","isActiveCheckFn","_t","PreloadingStrategy","RouterPreloader","preloadingStrategy","setUpPreloading","preload","processRoutes","injectorForCurrentRoute","injectorForChildren","preloadConfig","loadedChildren$","recursiveLoadChildren$","loadComponent$","ROUTER_SCROLLER","RouterScroller","viewportScroller","lastId","lastSource","restoredId","scrollPositionRestoration","anchorScrolling","createScrollEvents","scrollEventsSubscription","consumeScrollEvents","scheduleScrollEvent","routerFeature","ɵkind","provideRoutes","getBootstrapListener","bootstrappedComponentRef","bootstrapDone","BOOTSTRAP_DONE","INITIAL_NAVIGATION","ROUTER_PRELOADER","withPreloading","ROUTER_FORROOT_GUARD","ROUTER_PROVIDERS","rootRoute","routerNgProbeToken","provideForRootGuard","scrollOffset","provideInitialNavigation","ROUTER_INITIALIZER","locationInitialized","initNavigation","afterNextNavigation","ERR_SW_NOT_SUPPORTED","NgswCommChannel","serviceWorker","controllerChanges","controller","currentController","controllerWithChanges","worker","registration","getRegistration","publish","errorObservable","sw","postMessageWithOperation","operationNonce","waitForOperationCompleted","generateNonce","eventsOfType","filterFn","nextEventOfType","SwPush","subscriptionChanges","messages","notificationClicks","pushManager","workerDrivenSubscriptions","pm","getSubscription","requestSubscription","pushOptions","userVisibleOnly","decodeBase64","serverPublicKey","applicationServerKey","atob","SwUpdate","versionUpdates","available","unrecoverable","currentVersion","latestVersion","checkForUpdate","activateUpdate","SwRegistrationOptions","ngswAppInitializer","script","readyToRegister$","strategy","delayWithTimeout","stable","ngswCommChannelFactory","_typeof","_defineProperties","_defineProperty","_objectSpread","ownKeys","sym","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_arr","_n","_s","_nonIterableRest","_WINDOW","_DOCUMENT","MutationObserver","_ref$userAgent","WINDOW","IS_DOM","NAMESPACE_IDENTIFIER","DEFAULT_REPLACEMENT_CLASS","oneToTen","oneToTwenty","DUOTONE_CLASSES","GROUP","SWAP_OPACITY","PRIMARY","SECONDARY","initial","FontAwesomeConfig","_ref2","coerce","getAttrConfig","familyPrefix","replacementClass","autoReplaceSvg","autoAddCss","autoA11y","searchPseudoElements","observeMutations","mutateApproach","keepOriginalSource","measurePerformance","showMissingIcons","shims","functions","doScroll","asyncTimer","SETTLED","FULFILLED","REJECTED","asyncSetTimer","setImmediate","asyncQueue","asyncFlush","asyncCall","invokeCallback","settled","handleThenable","resolved","fulfill","publishFulfillment","publishRejection","_then","_handled","notifyRejectionHandled","invokeResolver","rejectPromise","resolvePromise","onFulfillment","onRejection","promises","race","meaninglessTransform","rotate","flipX","flipY","nextUniqueId","htmlEscape","joinStyles","styleName","transformIsMeaningful","transformForSvg","iconWidth","outer","containerWidth","innerTranslate","innerScale","innerRotate","inner","ALL_SPACE","fillBlack","abstract","force","deGroup","tag","makeInlineSvgAbstract","_params$icons","icons","main","maskId","titleId","extra","_params$watchable","watchable","isUploadedIcon","widthClass","attrClass","class","role","viewBox","uploadedIconWidthStyle","makeIconMasking","explicitMaskId","mainPath","maskPath","trans","maskRect","maskInnerGroupChildrenMixin","maskInnerGroup","maskOuterGroup","clipId","maskTag","maskUnits","maskContentUnits","defs","makeIconStandard","styleString","asSymbol","asIcon","thisContext","bindInternal4","defineIcons","_params$skipHooks","skipHooks","normalized","addPack","lookup","reducer","ligatures","ligature","hasRegular","shim","iconFromMapping","mapping","toHtml","abstractNodes","_abstractNodes$attrib","_abstractNodes$childr","joinAttributes","attributeName","MissingIcon","FILL","ANIMATION_BASE","attributeType","repeatCount","dur","OPACITY_ANIMATE","asFoundIcon","vectorData","ensureCss","_cssInserted","insertCss","css","headChildren","childNodes","beforeChild","dfp","drc","fp","rc","dPatt","customPropPatt","rPatt","apiObject","abstractCreator","findIconDefinition","iconLookup","_iconLookup$prefix","library","cx","cy","Library","_classCallCheck","_createClass","protoProps","staticProps","_len","_key","_pullDefinitions","_normalized$key","transformString","rest","parseTransformString","resolveIcons","maybeIconDefinition","iconDefinition","_params$transform","_params$symbol","_params$mask","_params$maskId","_params$title","_params$titleId","_params$classes","_params$attributes","_params$styles","focusable","faClassList","spin","pulse","fixedWidth","inverse","flip","pull","stackItemSize","defaultPrefix","fallbackIcon","addIcons","addIconPacks","packs","pack","getIconDefinition","FaStackItemSizeDirective","FaStackComponent","FaIconComponent","iconLibrary","stackItem","faWarnIfIconSpecMissing","iconToBeRendered","buildParams","renderIcon","render","iconSpec","isIconLookup","faNormalizeIconSpec","faWarnIfIconDefinitionMissing","classOpts","parsedTransform","a11yRole","renderedIcon","renderedIconHTML","i2","isNumeric","RaceOperator","RaceSubscriber","hasFirst","zip","ZipOperator","ZipSubscriber","iterators","StaticArrayIterator","StaticIterator","ZipBufferIterator","stillUnsubscribed","notifyInactive","checkIterators","shouldComplete","_tryresultSelector","isComplete","withLatestFrom","WithLatestFromOperator","WithLatestFromSubscriber","_tryProject","SkipOperator","SkipSubscriber","bottom","getOppositePlacement","placement","getBasePlacement","getOppositeVariationPlacement","auto","basePlacements","viewport","popper","variationPlacements","placements","modifierPhases","defaultView","isElement","isHTMLElement","HTMLElement","ShadowRoot","getDocumentElement","getUAString","uaData","userAgentData","brands","brand","isLayoutViewport","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","offsetWidth","offsetHeight","visualViewport","addVisualOffsets","offsetLeft","offsetTop","getWindowScroll","scrollLeft","scrollTop","getWindowScrollBarX","getNodeName","getParentNode","assignedSlot","isScrollParent","_getComputedStyle","overflow","overflowY","overflowX","getScrollParent","listScrollParents","_element$ownerDocumen","scrollParent","isBody","updatedList","isTableElement","getTrueOffsetParent","offsetParent","getOffsetParent","getContainingBlock","isFirefox","perspective","contain","willChange","getRootNode","isSameNode","rectToClientRect","getClientRectFromMixedType","clippingParent","getViewportRect","layoutViewport","getInnerBoundingClientRect","clientTop","clientLeft","getDocumentRect","winScroll","scrollWidth","scrollHeight","direction","getVariation","getMainAxisFromPlacement","computeOffsets","reference","basePlacement","variation","commonX","commonY","mainAxis","mergePaddingObject","paddingObject","expandToHashMap","hashMap","detectOverflow","_options$placement","_options$strategy","_options$boundary","boundary","_options$rootBoundary","rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","padding","popperRect","rects","clippingClientRect","getClippingRect","mainClippingParents","getClippingParents","clippingParents","clipperElement","clippingRect","accRect","contextElement","referenceClientRect","popperOffsets","popperClientRect","elementClientRect","overflowOffsets","offsetData","modifiersData","multiply","axis","_skip","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","flipVariations","allowedAutoPlacements","preferredPlacement","getExpandedFallbackPlacements","oppositePlacement","computeAutoPlacement","_options$allowedAutoP","allPlacements","allowedPlacements","overflows","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","_loop","fittingPlacement","requiresIfExists","within","mathMax","mathMin","getLayoutRect","preventOverflow","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","getAltAxis","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","minLen","maxLen","arrowElement","arrow","arrowRect","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","arrowOffsetParent","offsetModifierValue","tetherMax","preventedOffset","_offsetModifierState$2","_offset","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","withinMaxClamp","modifiers_arrow","_state$modifiersData$","toPaddingObject","minProp","maxProp","endDiff","startDiff","clientSize","center","centerOffset","effect","_options$element","requires","getCompositeRect","elementOrVirtualElement","isFixed","isOffsetParentAnElement","offsetParentIsScaled","isElementScaled","scroll","getNodeScroll","getHTMLElementScroll","order","modifiers","modifier","depModifier","debounce","DEFAULT_OPTIONS","areValidElements","popperGenerator","generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","orderedModifiers","effectCleanupFns","isDestroyed","setOptions","setOptionsAction","cleanupModifierEffects","scrollParents","orderModifiers","mergeByName","merged","runModifierEffects","_ref3","_ref3$options","forceUpdate","_state$elements","_state$orderedModifie","_state$orderedModifie2","onFirstUpdate","passive","unsetSides","mapToStyles","_Object$assign2","gpuAcceleration","adaptive","roundOffsets","_offsets$x","_offsets$y","hasX","hasY","sideX","sideY","heightProp","widthProp","_Object$assign","commonStyles","_ref4","roundOffsetsByDPR","dpr","devicePixelRatio","createPopper","_options$scroll","_options$resize","resize","computeStyles","_ref5","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","applyStyles","margin","attribute","_options$offset","distanceAndSkiddingToXY","invertDistance","skidding","distance","_data$state$placement","isDefined","reflow","transitionTimerDelayMs","noopFn","runningTransitions","ngbRunTransition","startFn","running","runningTransition","transition$","endFn","transitionProperty","runInZone","finishTransition$","stop$","endWith","transitionDurationMs","getTransitionDurationMs","transitionDelay","transitionDuration","transitionEnd$","timer","dueTime","periodOrScheduler","due","ngbCollapsingTransition","maxSize","dimension","setInitialClasses","measureCollapsingElementDimensionPx","hasShownClass","dimensionSize","NgbConfig","NgbCollapseConfig","_ngbConfig","horizontal","_animation","NgbCollapse","_afterInit","_isCollapsed","ngbCollapseChange","shown","hidden","collapsed","isCollapsed","_runTransitionWithEvents","_runTransition","Key","Tab","Enter","Escape","Space","PageUp","PageDown","End","Home","ArrowLeft","ArrowUp","ArrowRight","ArrowDown","isContainedIn","matchesSelectorIfAny","closest","isMobile","maxTouchPoints","FOCUSABLE_ELEMENTS_SELECTOR","getFocusableBoundaryElements","tabIndex","placementSeparator","spacesRegExp","bootstrapPopperMatches","popperStartPrimaryPlacement","popperEndPrimaryPlacement","popperStartSecondaryPlacement","popperEndSecondaryPlacement","getPopperOptions","baseClass","rtl","placementVals","hasAuto","popperPlacements","_placement","getPopperClassPlacement","isRTL","leftClass","rightClass","bsClassRegExp","popperElement","popperPlacement","getBootstrapBaseClassPlacement","newPrimary","classnames","newSecondary","classname","NgbRTL","NgbDropdownConfig","autoClose","popperOptions","NgbNavbar","NgbDropdownItem","_disabled","NgbDropdownMenu","dropdown","isOpen","NgbDropdown","NgbDropdownAnchor","NgbDropdownToggle","_changeDetector","ngbNavbar","_destroyCloseHandlers$","_bodyContainer","_open","openChange","_positioning","ngbPositioning","popperInstance","positioningOption","updatePopperOptions","createPopperLite","targetElement","_applyPlacementClasses","_setCloseHandlers","_applyContainer","_anchor","_menu","appendToBody","dropdownClass","_applyCustomDropdownClass","addPopperOffset","offset$1","_zoneSubscription","_positionMenu","ngbAutoClose","closed$","insideElements","ignoreElements","insideSelector","wrapAsyncForMobile","escapes$","which","mouseDowns$","closeableClicks$","shouldClose","_resetContainer","onKeyDown","itemElements","_getMenuElements","itemElement","isEventFromToggle","_isEventFromToggle","activeElement","_isDropup","focusableElements","relatedTarget","menu","menuItems","_getFirstPlacement","dropdownMenuElement","bodyContainer","newClass","oldClass","dropdownElement","ContentRef","NgbModalBackdrop","_el","hide","NgbActiveModal","dismiss","NgbModalRef","_windowCmptRef","_contentRef","_backdropCmptRef","_beforeDismiss","_closed","_dismissed","_hidden","dismissEvent","_reject","dismissed","_removeModalElements","_dismiss","windowTransition$","backdropTransition$","ModalDismissReasons","BACKDROP_CLICK","ESC","NgbModalWindow","_elRef","_closed$","_elWithFocus","backdrop","keyboard","fullscreenClass","fullscreen","_show","_disableEventHandling","transitions$","_dialogEl","_restoreFocus","_enableEventHandling","_setFocus","defaultPrevented","_bumpBackdrop","preventClose","autoFocusable","firstFocusable","elWithFocus","elementToFocus","_c31","ScrollBar","scrollbarWidth","bodyStyle","paddingRight","actualPadding","NgbModalStack","_applicationRef","_scrollBar","_rendererFactory","_activeWindowCmptHasChanged","_ariaHiddenValues","_scrollBarRestoreFn","_backdropAttributes","_modalRefs","_windowAttributes","_windowCmpts","_activeInstances","activeWindowCmpt","stopFocusTrap$","refocusOnClick","lastFocusedElement$","tabEvent","focusedElement","lastFocusedElement","ngbFocusTrap","_revertAriaHidden","_setAriaHidden","_restoreScrollBar","scrollBarRestoreFn","_hideScrollBar","contentInjector","containerEl","activeModal","contentRef","_getContentRef","backdropCmptRef","_attachBackdrop","windowCmptRef","_attachWindowComponent","ngbModalRef","beforeDismiss","_registerModalRef","_registerWindowCmpt","_applyWindowOptions","_applyBackdropOptions","activeInstances","dismissAll","hasOpenModals","windowInstance","optionName","backdropInstance","_createFromTemplateRef","_createFromString","_createFromComponent","componentNativeEl","scrollable","sibling","unregisterModalRef","ngbWindowCmpt","NgbModalConfig","NgbModal","_modalStack","combinedOptions","NgbNavConfig","destroyOnHide","orientation","roles","isValidNavId","navCounter","NgbNavContent","NgbNavItem","_nav","contentTpl","contentTpls","domId","activeId","panelDomId","isPanelInDom","NgbNav","activeIdChange","destroy$","navItemChange$","navChange","click","_updateActiveId","enabledLinks","navItem","elRef","_notifyItemChanged","emitNavChange","nextItemId","_getItemById","itemId","NgbNavLink","hasNavItemClass","ngbNavFadeOutTransition","ngbNavFadeInTransition","NgbNavPane","NgbNavOutlet","_activePane","isPanelTransitioning","_updateActivePane","skip","nextItem","activeItem","_getPaneForItem","_getActivePane","_panes","NgbNavModule","ARIA_LIVE_DELAY_FACTORY","NgbModule","asyncGeneratorStep"],"sourceRoot":"webpack:///","sources":["./src/app/services/api.services.ts","./node_modules/@microsoft/applicationinsights-common/dist-esm/applicationinsights-common.js","./node_modules/@microsoft/applicationinsights-shims/dist-esm/Constants.js","./node_modules/@microsoft/applicationinsights-shims/dist-esm/Helpers.js","./node_modules/@microsoft/applicationinsights-core-js/dist-esm/__DynamicConstants.js","./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/InternalConstants.js","./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/HelperFuncs.js","./node_modules/@microsoft/dynamicproto-js/lib/dist/esm/dynamicproto-js.js","./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/EnvUtils.js","./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/DbgExtensionUtils.js","./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/DiagnosticLogger.js","./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/CookieMgr.js","./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/RandomHelper.js","./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/DataCacheHelper.js","./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/EventHelpers.js","./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/CoreUtils.js","./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/W3cTraceParent.js","./node_modules/@microsoft/applicationinsights-common/dist-esm/Constants.js","./node_modules/@microsoft/applicationinsights-common/dist-esm/DomHelperFuncs.js","./node_modules/@microsoft/applicationinsights-common/dist-esm/__DynamicConstants.js","./node_modules/@microsoft/applicationinsights-common/dist-esm/HelperFuncs.js","./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK.Enums/EnumHelperFuncs.js","./node_modules/@microsoft/applicationinsights-common/dist-esm/RequestResponseHeaders.js","./node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/Common/DataSanitizer.js","./node_modules/@microsoft/applicationinsights-common/dist-esm/Enums.js","./node_modules/@microsoft/applicationinsights-common/dist-esm/StorageHelperFuncs.js","./node_modules/@microsoft/applicationinsights-common/dist-esm/UrlHelperFuncs.js","./node_modules/@microsoft/applicationinsights-common/dist-esm/Util.js","./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/PerfManager.js","./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/TelemetryHelpers.js","./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/ProcessTelemetryContext.js","./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/UnloadHandlerContainer.js","./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/BaseTelemetryPlugin.js","./node_modules/@microsoft/applicationinsights-angularplugin-js/fesm2020/microsoft-applicationinsights-angularplugin-js.mjs","./node_modules/@microsoft/applicationinsights-shims/dist-esm/TsLibShims.js","./node_modules/@microsoft/applicationinsights-common/dist-esm/TelemetryItemCreator.js","./node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/Event.js","./node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/Trace.js","./node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/Common/DataPoint.js","./node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/Metric.js","./node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/PageView.js","./node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/PageViewPerformance.js","./node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/Exception.js","./node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/RemoteDependencyData.js","./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/InstrumentHooks.js","./node_modules/@microsoft/applicationinsights-analytics-js/dist-esm/__DynamicConstants.js","./node_modules/@microsoft/applicationinsights-analytics-js/dist-esm/JavaScriptSDK/Telemetry/PageViewManager.js","./node_modules/@microsoft/applicationinsights-analytics-js/dist-esm/JavaScriptSDK/Telemetry/PageViewPerformanceManager.js","./node_modules/@microsoft/applicationinsights-analytics-js/dist-esm/JavaScriptSDK/Telemetry/PageVisitTimeManager.js","./node_modules/@microsoft/applicationinsights-analytics-js/dist-esm/JavaScriptSDK/Timing.js","./node_modules/@microsoft/applicationinsights-analytics-js/dist-esm/JavaScriptSDK/AnalyticsPlugin.js","./node_modules/@microsoft/applicationinsights-common/dist-esm/Interfaces/Contracts/ContextTagKeys.js","./node_modules/@microsoft/applicationinsights-common/dist-esm/Interfaces/PartAExtensions.js","./node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/Common/Envelope.js","./node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/Common/Data.js","./node_modules/@microsoft/applicationinsights-channel-js/dist-esm/InternalConstants.js","./node_modules/@microsoft/applicationinsights-channel-js/dist-esm/__DynamicConstants.js","./node_modules/@microsoft/applicationinsights-channel-js/dist-esm/EnvelopeCreator.js","./node_modules/@microsoft/applicationinsights-channel-js/dist-esm/Offline.js","./node_modules/@microsoft/applicationinsights-channel-js/dist-esm/SendBuffer.js","./node_modules/@microsoft/applicationinsights-channel-js/dist-esm/Sender.js","./node_modules/@microsoft/applicationinsights-channel-js/dist-esm/Serializer.js","./node_modules/@microsoft/applicationinsights-channel-js/dist-esm/TelemetryProcessors/SamplingScoreGenerators/HashCodeScoreGenerator.js","./node_modules/@microsoft/applicationinsights-channel-js/dist-esm/TelemetryProcessors/SamplingScoreGenerators/SamplingScoreGenerator.js","./node_modules/@microsoft/applicationinsights-channel-js/dist-esm/TelemetryProcessors/Sample.js","./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/ChannelController.js","./node_modules/@microsoft/applicationinsights-common/dist-esm/Interfaces/Contracts/SeverityLevel.js","./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/TelemetryInitializerPlugin.js","./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/BaseCore.js","./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/NotificationManager.js","./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/AppInsightsCore.js","./node_modules/@microsoft/applicationinsights-dependencies-js/dist-esm/InternalConstants.js","./node_modules/@microsoft/applicationinsights-dependencies-js/dist-esm/__DynamicConstants.js","./node_modules/@microsoft/applicationinsights-dependencies-js/dist-esm/ajaxRecord.js","./node_modules/@microsoft/applicationinsights-dependencies-js/dist-esm/ajax.js","./node_modules/@microsoft/applicationinsights-properties-js/dist-esm/Context/Application.js","./node_modules/@microsoft/applicationinsights-properties-js/dist-esm/Context/Device.js","./node_modules/@microsoft/applicationinsights-properties-js/dist-esm/__DynamicConstants.js","./node_modules/@microsoft/applicationinsights-properties-js/dist-esm/Context/Internal.js","./node_modules/@microsoft/applicationinsights-properties-js/dist-esm/Context/Location.js","./node_modules/@microsoft/applicationinsights-properties-js/dist-esm/Context/Session.js","./node_modules/@microsoft/applicationinsights-properties-js/dist-esm/Context/TelemetryTrace.js","./node_modules/@microsoft/applicationinsights-properties-js/dist-esm/Context/User.js","./node_modules/@microsoft/applicationinsights-properties-js/dist-esm/TelemetryContext.js","./node_modules/@microsoft/applicationinsights-properties-js/dist-esm/PropertiesPlugin.js","./node_modules/@microsoft/applicationinsights-web/dist-esm/InternalConstants.js","./node_modules/@microsoft/applicationinsights-web/dist-esm/Initialization.js","./node_modules/@microsoft/applicationinsights-web/dist-esm/__DynamicConstants.js","./node_modules/@microsoft/applicationinsights-common/dist-esm/ConnectionStringParser.js","./src/app/services/app-insights.service.ts","./src/app/services/cached-account.service.ts","./src/app/services/customization.service.ts","./src/app/services/graph.service.ts","./src/environments/environment.prod.ts","./node_modules/@angular/animations/fesm2020/browser.mjs","./node_modules/@angular/platform-browser/fesm2020/animations.mjs","./node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceEvent.js","./node_modules/@azure/msal-common/dist/error/ServerError.js","./node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthError.js","./node_modules/@azure/msal-common/dist/error/JoseHeaderError.js","./node_modules/@azure/msal-common/dist/crypto/JoseHeader.js","./node_modules/@azure/msal-browser/dist/utils/MathUtils.js","./node_modules/@azure/msal-browser/dist/crypto/GuidGenerator.js","./node_modules/@azure/msal-browser/dist/utils/BrowserStringUtils.js","./node_modules/@azure/msal-browser/dist/encode/Base64Encode.js","./node_modules/@azure/msal-browser/dist/encode/Base64Decode.js","./node_modules/@azure/msal-browser/dist/crypto/PkceGenerator.js","./node_modules/@azure/msal-browser/dist/crypto/ModernBrowserCrypto.js","./node_modules/@azure/msal-browser/dist/crypto/MsrBrowserCrypto.js","./node_modules/@azure/msal-browser/dist/crypto/MsBrowserCrypto.js","./node_modules/@azure/msal-browser/dist/crypto/BrowserCrypto.js","./node_modules/@azure/msal-browser/dist/cache/DatabaseStorage.js","./node_modules/@azure/msal-browser/dist/cache/MemoryStorage.js","./node_modules/@azure/msal-browser/dist/cache/AsyncMemoryStorage.js","./node_modules/@azure/msal-browser/dist/cache/CryptoKeyStore.js","./node_modules/@azure/msal-browser/dist/crypto/CryptoOps.js","./node_modules/@azure/msal-common/dist/logger/Logger.js","./node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceClient.js","./node_modules/@azure/msal-common/dist/telemetry/performance/StubPerformanceClient.js","./node_modules/@azure/msal-common/dist/crypto/ICrypto.js","./node_modules/@azure/msal-common/dist/account/ClientInfo.js","./node_modules/@azure/msal-common/dist/authority/AuthorityType.js","./node_modules/@azure/msal-common/dist/cache/entities/AccountEntity.js","./node_modules/@azure/msal-common/dist/cache/entities/CredentialEntity.js","./node_modules/@azure/msal-common/dist/request/ScopeSet.js","./node_modules/@azure/msal-common/dist/account/AuthToken.js","./node_modules/@azure/msal-common/dist/cache/CacheManager.js","./node_modules/@azure/msal-common/dist/cache/entities/IdTokenEntity.js","./node_modules/@azure/msal-common/dist/utils/TimeUtils.js","./node_modules/@azure/msal-common/dist/cache/entities/AccessTokenEntity.js","./node_modules/@azure/msal-common/dist/cache/entities/RefreshTokenEntity.js","./node_modules/@azure/msal-common/dist/cache/entities/AppMetadataEntity.js","./node_modules/@azure/msal-common/dist/cache/entities/ServerTelemetryEntity.js","./node_modules/@azure/msal-common/dist/cache/entities/AuthorityMetadataEntity.js","./node_modules/@azure/msal-common/dist/cache/entities/ThrottlingEntity.js","./node_modules/@azure/msal-common/dist/utils/ProtocolUtils.js","./node_modules/@azure/msal-common/dist/account/CcsCredential.js","./node_modules/@azure/msal-browser/dist/cache/BrowserStorage.js","./node_modules/@azure/msal-browser/dist/utils/BrowserProtocolUtils.js","./node_modules/@azure/msal-browser/dist/cache/BrowserCacheManager.js","./node_modules/@azure/msal-common/dist/authority/ProtocolMode.js","./node_modules/@azure/msal-common/dist/authority/AuthorityOptions.js","./node_modules/@azure/msal-common/dist/config/ClientConfiguration.js","./node_modules/@azure/msal-common/dist/packageMetadata.js","./node_modules/@azure/msal-common/dist/network/INetworkModule.js","./node_modules/@azure/msal-browser/dist/navigation/NavigationClient.js","./node_modules/@azure/msal-browser/dist/packageMetadata.js","./node_modules/@azure/msal-browser/dist/event/EventHandler.js","./node_modules/@azure/msal-common/dist/network/ThrottlingUtils.js","./node_modules/@azure/msal-common/dist/network/NetworkManager.js","./node_modules/@azure/msal-common/dist/client/BaseClient.js","./node_modules/@azure/msal-common/dist/request/RequestValidator.js","./node_modules/@azure/msal-common/dist/request/RequestParameterBuilder.js","./node_modules/@azure/msal-common/dist/cache/entities/CacheRecord.js","./node_modules/@azure/msal-common/dist/crypto/PopTokenGenerator.js","./node_modules/@azure/msal-common/dist/cache/persistence/TokenCacheContext.js","./node_modules/@azure/msal-common/dist/response/ResponseHandler.js","./node_modules/@azure/msal-common/dist/client/AuthorizationCodeClient.js","./node_modules/@azure/msal-common/dist/authority/OpenIdConfigResponse.js","./node_modules/@azure/msal-common/dist/authority/AuthorityMetadata.js","./node_modules/@azure/msal-common/dist/authority/RegionDiscovery.js","./node_modules/@azure/msal-common/dist/authority/Authority.js","./node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryResponse.js","./node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryErrorResponse.js","./node_modules/@azure/msal-common/dist/authority/AuthorityFactory.js","./node_modules/@azure/msal-common/dist/telemetry/server/ServerTelemetryManager.js","./node_modules/@azure/msal-browser/dist/interaction_client/BaseInteractionClient.js","./node_modules/@azure/msal-browser/dist/interaction_client/StandardInteractionClient.js","./node_modules/@azure/msal-browser/dist/error/NativeAuthError.js","./node_modules/@azure/msal-common/dist/client/RefreshTokenClient.js","./node_modules/@azure/msal-common/dist/client/SilentFlowClient.js","./node_modules/@azure/msal-browser/dist/interaction_client/SilentCacheClient.js","./node_modules/@azure/msal-browser/dist/interaction_client/NativeInteractionClient.js","./node_modules/@azure/msal-browser/dist/broker/nativeBroker/NativeMessageHandler.js","./node_modules/@azure/msal-browser/dist/interaction_handler/InteractionHandler.js","./node_modules/@azure/msal-browser/dist/interaction_client/PopupClient.js","./node_modules/@azure/msal-browser/dist/interaction_handler/RedirectHandler.js","./node_modules/@azure/msal-browser/dist/interaction_client/RedirectClient.js","./node_modules/@azure/msal-browser/dist/interaction_handler/SilentHandler.js","./node_modules/@azure/msal-browser/dist/config/Configuration.js","./node_modules/@azure/msal-browser/dist/interaction_client/SilentIframeClient.js","./node_modules/@azure/msal-browser/dist/interaction_client/SilentRefreshClient.js","./node_modules/@azure/msal-browser/dist/cache/TokenCache.js","./node_modules/@azure/msal-browser/dist/interaction_client/HybridSpaAuthorizationCodeClient.js","./node_modules/@azure/msal-browser/dist/interaction_client/SilentAuthCodeClient.js","./node_modules/@azure/msal-browser/dist/telemetry/BrowserPerformanceMeasurement.js","./node_modules/@azure/msal-browser/dist/telemetry/BrowserPerformanceClient.js","./node_modules/@azure/msal-browser/dist/app/PublicClientApplication.js","./node_modules/@azure/msal-browser/dist/app/ClientApplication.js","./src/app/app.component.ts","./src/app/app.component.html","./src/app/nav-menu/nav-menu.component.html","./src/app/nav-menu/nav-menu.component.ts","./src/app/services/photo.service.ts","./src/app/sidebar/sidebar.component.html","./src/app/sidebar/sidebar.component.ts","./src/app/layouts/dashboard/dashboard.component.ts","./src/app/layouts/dashboard/dashboard.component.html","./src/app/layouts/fullscreen/fullscreen.component.ts","./src/app/layouts/fullscreen/fullscreen.component.html","./src/app/app.routing.ts","./src/app/pages/index/index.component.ts","./src/app/pages/index/index.component.html","./src/app/services/toast.http.interceptor.ts","./src/app/app.module.ts","./src/main.ts","./node_modules/@azure/msal-browser/dist/event/EventMessage.js","./node_modules/rxjs/_esm2015/internal/scheduler/queue.js","./node_modules/rxjs/_esm2015/internal/scheduler/QueueScheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/QueueAction.js","./node_modules/rxjs/_esm2015/internal/operators/observeOn.js","./node_modules/rxjs/_esm2015/internal/ReplaySubject.js","./node_modules/@azure/msal-angular/__ivy_ngcc__/fesm2015/azure-msal-angular.js","./node_modules/@azure/msal-browser/dist/_virtual/_tslib.js","./node_modules/@azure/msal-browser/dist/error/BrowserAuthError.js","./node_modules/@azure/msal-browser/dist/error/BrowserConfigurationAuthError.js","./node_modules/@azure/msal-browser/dist/event/EventType.js","./node_modules/@azure/msal-browser/dist/utils/BrowserConstants.js","./node_modules/@azure/msal-browser/dist/network/FetchClient.js","./node_modules/@azure/msal-browser/dist/network/XhrClient.js","./node_modules/@azure/msal-browser/dist/utils/BrowserUtils.js","./node_modules/@azure/msal-common/dist/_virtual/_tslib.js","./node_modules/@azure/msal-common/dist/error/AuthError.js","./node_modules/@azure/msal-common/dist/error/ClientAuthError.js","./node_modules/@azure/msal-common/dist/error/ClientConfigurationError.js","./node_modules/@azure/msal-common/dist/url/UrlString.js","./node_modules/@azure/msal-common/dist/utils/Constants.js","./node_modules/@azure/msal-common/dist/utils/StringUtils.js","./node_modules/@fortawesome/free-solid-svg-icons/index.es.js","./node_modules/ngx-toastr/__ivy_ngcc__/fesm2015/ngx-toastr.js","./node_modules/rxjs/_esm2015/internal/BehaviorSubject.js","./node_modules/rxjs/_esm2015/internal/Notification.js","./node_modules/rxjs/_esm2015/internal/Observable.js","./node_modules/rxjs/_esm2015/internal/util/toSubscriber.js","./node_modules/rxjs/_esm2015/internal/util/canReportError.js","./node_modules/rxjs/_esm2015/internal/Observer.js","./node_modules/rxjs/_esm2015/internal/OuterSubscriber.js","./node_modules/rxjs/_esm2015/internal/Subject.js","./node_modules/rxjs/_esm2015/internal/SubjectSubscription.js","./node_modules/rxjs/_esm2015/internal/Subscriber.js","./node_modules/rxjs/_esm2015/internal/util/UnsubscriptionError.js","./node_modules/rxjs/_esm2015/internal/Subscription.js","./node_modules/rxjs/_esm2015/internal/config.js","./node_modules/rxjs/_esm2015/internal/innerSubscribe.js","./node_modules/rxjs/_esm2015/internal/observable/ConnectableObservable.js","./node_modules/rxjs/_esm2015/internal/observable/combineLatest.js","./node_modules/rxjs/_esm2015/internal/observable/concat.js","./node_modules/rxjs/_esm2015/internal/operators/concatAll.js","./node_modules/rxjs/_esm2015/internal/observable/defer.js","./node_modules/rxjs/_esm2015/internal/observable/empty.js","./node_modules/rxjs/_esm2015/internal/observable/from.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduled.js","./node_modules/rxjs/_esm2015/internal/util/isInteropObservable.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduleObservable.js","./node_modules/rxjs/_esm2015/internal/scheduled/schedulePromise.js","./node_modules/rxjs/_esm2015/internal/util/isIterable.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduleIterable.js","./node_modules/rxjs/_esm2015/internal/observable/fromArray.js","./node_modules/rxjs/_esm2015/internal/observable/fromEvent.js","./node_modules/rxjs/_esm2015/internal/observable/merge.js","./node_modules/rxjs/_esm2015/internal/observable/never.js","./node_modules/rxjs/_esm2015/internal/observable/of.js","./node_modules/rxjs/_esm2015/internal/observable/throwError.js","./node_modules/rxjs/_esm2015/internal/operators/catchError.js","./node_modules/rxjs/_esm2015/internal/operators/concatMap.js","./node_modules/rxjs/_esm2015/internal/operators/defaultIfEmpty.js","./node_modules/rxjs/_esm2015/internal/operators/delay.js","./node_modules/rxjs/_esm2015/internal/util/isDate.js","./node_modules/rxjs/_esm2015/internal/operators/distinctUntilChanged.js","./node_modules/rxjs/_esm2015/internal/operators/filter.js","./node_modules/rxjs/_esm2015/internal/operators/first.js","./node_modules/rxjs/_esm2015/internal/operators/map.js","./node_modules/rxjs/_esm2015/internal/operators/mergeAll.js","./node_modules/rxjs/_esm2015/internal/operators/mergeMap.js","./node_modules/rxjs/_esm2015/internal/operators/multicast.js","./node_modules/rxjs/_esm2015/internal/operators/refCount.js","./node_modules/rxjs/_esm2015/internal/operators/share.js","./node_modules/rxjs/_esm2015/internal/operators/startWith.js","./node_modules/rxjs/_esm2015/internal/operators/switchMap.js","./node_modules/rxjs/_esm2015/internal/operators/take.js","./node_modules/rxjs/_esm2015/internal/operators/takeUntil.js","./node_modules/rxjs/_esm2015/internal/operators/tap.js","./node_modules/rxjs/_esm2015/internal/operators/throwIfEmpty.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduleArray.js","./node_modules/rxjs/_esm2015/internal/scheduler/Action.js","./node_modules/rxjs/_esm2015/internal/scheduler/AsyncAction.js","./node_modules/rxjs/_esm2015/internal/Scheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/AsyncScheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/async.js","./node_modules/rxjs/_esm2015/internal/symbol/iterator.js","./node_modules/rxjs/_esm2015/internal/symbol/observable.js","./node_modules/rxjs/_esm2015/internal/symbol/rxSubscriber.js","./node_modules/rxjs/_esm2015/internal/util/ArgumentOutOfRangeError.js","./node_modules/rxjs/_esm2015/internal/util/EmptyError.js","./node_modules/rxjs/_esm2015/internal/util/ObjectUnsubscribedError.js","./node_modules/rxjs/_esm2015/internal/util/hostReportError.js","./node_modules/rxjs/_esm2015/internal/util/identity.js","./node_modules/rxjs/_esm2015/internal/util/isArray.js","./node_modules/rxjs/_esm2015/internal/util/isArrayLike.js","./node_modules/rxjs/_esm2015/internal/util/isFunction.js","./node_modules/rxjs/_esm2015/internal/util/isObject.js","./node_modules/rxjs/_esm2015/internal/util/isPromise.js","./node_modules/rxjs/_esm2015/internal/util/isScheduler.js","./node_modules/rxjs/_esm2015/internal/util/noop.js","./node_modules/rxjs/_esm2015/internal/util/pipe.js","./node_modules/rxjs/_esm2015/internal/util/subscribeTo.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToObservable.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToPromise.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToIterable.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToArray.js","./node_modules/rxjs/_esm2015/internal/InnerSubscriber.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToResult.js","./node_modules/@angular/animations/fesm2020/animations.mjs","./node_modules/@angular/common/fesm2020/common.mjs","./node_modules/@angular/common/fesm2020/http.mjs","./node_modules/@angular/core/fesm2020/core.mjs","./node_modules/rxjs/_esm2015/internal/observable/forkJoin.js","./node_modules/@angular/forms/fesm2020/forms.mjs","./node_modules/@angular/platform-browser/fesm2020/platform-browser.mjs","./node_modules/rxjs/_esm2015/internal/operators/scan.js","./node_modules/rxjs/_esm2015/internal/operators/takeLast.js","./node_modules/rxjs/_esm2015/internal/operators/last.js","./node_modules/rxjs/_esm2015/internal/operators/takeWhile.js","./node_modules/rxjs/_esm2015/internal/operators/mapTo.js","./node_modules/rxjs/_esm2015/internal/operators/finalize.js","./node_modules/@angular/router/fesm2020/router.mjs","./node_modules/@angular/service-worker/fesm2020/service-worker.mjs","./node_modules/rxjs/_esm2015/internal/operators/publish.js","./node_modules/@fortawesome/fontawesome-svg-core/index.es.js","./node_modules/@fortawesome/angular-fontawesome/fesm2020/angular-fontawesome.mjs","./node_modules/rxjs/_esm2015/internal/util/isNumeric.js","./node_modules/rxjs/_esm2015/internal/observable/timer.js","./node_modules/rxjs/_esm2015/internal/observable/race.js","./node_modules/rxjs/_esm2015/internal/observable/zip.js","./node_modules/rxjs/_esm2015/internal/operators/withLatestFrom.js","./node_modules/rxjs/_esm2015/internal/operators/skip.js","./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","./node_modules/@popperjs/core/lib/utils/getBasePlacement.js","./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","./node_modules/@popperjs/core/lib/enums.js","./node_modules/@popperjs/core/lib/dom-utils/getWindow.js","./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","./node_modules/@popperjs/core/lib/utils/math.js","./node_modules/@popperjs/core/lib/utils/userAgent.js","./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.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/getComputedStyle.js","./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","./node_modules/@popperjs/core/lib/dom-utils/getParentNode.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/dom-utils/isTableElement.js","./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","./node_modules/@popperjs/core/lib/dom-utils/contains.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/getVariation.js","./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","./node_modules/@popperjs/core/lib/utils/computeOffsets.js","./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","./node_modules/@popperjs/core/lib/utils/expandToHashMap.js","./node_modules/@popperjs/core/lib/utils/detectOverflow.js","./node_modules/@popperjs/core/lib/modifiers/flip.js","./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","./node_modules/@popperjs/core/lib/utils/within.js","./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","./node_modules/@popperjs/core/lib/utils/getAltAxis.js","./node_modules/@popperjs/core/lib/modifiers/arrow.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/modifiers/eventListeners.js","./node_modules/@popperjs/core/lib/modifiers/computeStyles.js","./node_modules/@popperjs/core/lib/popper-lite.js","./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","./node_modules/@popperjs/core/lib/modifiers/applyStyles.js","./node_modules/@popperjs/core/lib/modifiers/offset.js","./node_modules/@ng-bootstrap/ng-bootstrap/fesm2020/ng-bootstrap.mjs","./node_modules/rxjs/_esm2015/internal/operators/endWith.js","./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js"],"sourcesContent":["//----------------------\n// \n// Generated using the NSwag toolchain v13.19.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0)) (http://NSwag.org)\n// \n//----------------------\n\n/* tslint:disable */\n/* eslint-disable */\n// ReSharper disable InconsistentNaming\n\nimport { mergeMap as _observableMergeMap, catchError as _observableCatch } from 'rxjs/operators';\nimport { Observable, throwError as _observableThrow, of as _observableOf } from 'rxjs';\nimport { Injectable, Inject, Optional, InjectionToken } from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpResponse, HttpResponseBase } from '@angular/common/http';\n\nexport const API_BASE_URL = new InjectionToken('API_BASE_URL');\n\n@Injectable()\nexport class AccountService {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(API_BASE_URL) baseUrl?: string) {\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n me(): Observable {\n let url_ = this.baseUrl + \"/api/Account/Me\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processMe(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processMe(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processMe(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UserViewModel;\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n consentGiven(): Observable {\n let url_ = this.baseUrl + \"/api/Account/ConsentGiven\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processConsentGiven(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processConsentGiven(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processConsentGiven(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 202) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n appInsightsConfig(): Observable {\n let url_ = this.baseUrl + \"/api/Account/insights-config\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processAppInsightsConfig(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processAppInsightsConfig(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processAppInsightsConfig(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DynamicAppInsightsConfig;\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n getFeatures(): Observable {\n let url_ = this.baseUrl + \"/api/Account/features\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processGetFeatures(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processGetFeatures(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetFeatures(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as FeatureList;\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\n@Injectable()\nexport class AccumulatedGroupService {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(API_BASE_URL) baseUrl?: string) {\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n index(): Observable {\n let url_ = this.baseUrl + \"/api/AccumulatedGroup\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processIndex(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processIndex(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processIndex(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as Group[];\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n create(createGroup: CreateGroupRequest): Observable {\n let url_ = this.baseUrl + \"/api/AccumulatedGroup\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(createGroup);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processCreate(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processCreate(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processCreate(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 202) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result400: any = null;\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\n@Injectable()\nexport class ApplicationService {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(API_BASE_URL) baseUrl?: string) {\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n customizations(): Observable {\n let url_ = this.baseUrl + \"/api/Application/customizations\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processCustomizations(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processCustomizations(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processCustomizations(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as Customizations;\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n appInsightsConfig(): Observable {\n let url_ = this.baseUrl + \"/api/Application/insights-config\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processAppInsightsConfig(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processAppInsightsConfig(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processAppInsightsConfig(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DynamicAppInsightsConfig;\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n getFeatures(): Observable {\n let url_ = this.baseUrl + \"/api/Application/features\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processGetFeatures(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processGetFeatures(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetFeatures(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as FeatureList;\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\n@Injectable()\nexport class ConnectionService {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(API_BASE_URL) baseUrl?: string) {\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n create(createSourceConnectionRequest: CreateSourceConnectionRequest): Observable {\n let url_ = this.baseUrl + \"/api/Connection\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(createSourceConnectionRequest);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processCreate(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processCreate(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processCreate(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 201) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result201: any = null;\n result201 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CreatedAtViewModel;\n return _observableOf(result201);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result400: any = null;\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n delete(deleteSourceConnectionRequest: DeleteSourceConnectionRequest): Observable {\n let url_ = this.baseUrl + \"/api/Connection\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(deleteSourceConnectionRequest);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n })\n };\n\n return this.http.request(\"delete\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processDelete(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processDelete(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processDelete(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 202) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result400: any = null;\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result404);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n index(): Observable {\n let url_ = this.baseUrl + \"/api/Connection\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processIndex(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processIndex(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processIndex(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SourceConnection[];\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n migrate(migrateSourceConnectionRequest: MigrateSourceConnectionRequest): Observable {\n let url_ = this.baseUrl + \"/api/Connection/migrate\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(migrateSourceConnectionRequest);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processMigrate(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processMigrate(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processMigrate(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 202) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result202: any = null;\n result202 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CreatedAtViewModel;\n return _observableOf(result202);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result400: any = null;\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n get(id: string | null): Observable {\n let url_ = this.baseUrl + \"/api/Connection/{id}\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processGet(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processGet(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGet(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SourceConnection;\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n startSync(sourceSynchronisation: StartSourceSynchronisation): Observable {\n let url_ = this.baseUrl + \"/api/Connection/StartSync\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(sourceSynchronisation);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processStartSync(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processStartSync(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processStartSync(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 202) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result400: any = null;\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n loginForExport(id: string): Observable {\n let url_ = this.baseUrl + \"/api/Connection/login-for-export/{id}\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processLoginForExport(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processLoginForExport(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processLoginForExport(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n importGroups(id: string, expertMode?: boolean | null | undefined, formFile?: FileParameter | null | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Connection/{id}/import-groups?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (expertMode !== undefined && expertMode !== null)\n url_ += \"expertMode=\" + encodeURIComponent(\"\" + expertMode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = new FormData();\n if (formFile !== null && formFile !== undefined)\n content_.append(\"formFile\", formFile.data, formFile.fileName ? formFile.fileName : \"formFile\");\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processImportGroups(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processImportGroups(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processImportGroups(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 202) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result202: any = null;\n result202 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as number;\n return _observableOf(result202);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result400: any = null;\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\n@Injectable()\nexport class GroupService {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(API_BASE_URL) baseUrl?: string) {\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n index(period?: string | null | undefined, prefix?: string | null | undefined, study?: string | null | undefined, studyGroup?: string | null | undefined, subjectId?: string | null | undefined, synced?: boolean | null | undefined, ignored?: boolean | null | undefined, disabled?: boolean | null | undefined, hasTeachers?: boolean | null | undefined, sourceId?: string | null | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Group?\";\n if (period !== undefined && period !== null)\n url_ += \"Period=\" + encodeURIComponent(\"\" + period) + \"&\";\n if (prefix !== undefined && prefix !== null)\n url_ += \"Prefix=\" + encodeURIComponent(\"\" + prefix) + \"&\";\n if (study !== undefined && study !== null)\n url_ += \"Study=\" + encodeURIComponent(\"\" + study) + \"&\";\n if (studyGroup !== undefined && studyGroup !== null)\n url_ += \"StudyGroup=\" + encodeURIComponent(\"\" + studyGroup) + \"&\";\n if (subjectId !== undefined && subjectId !== null)\n url_ += \"SubjectId=\" + encodeURIComponent(\"\" + subjectId) + \"&\";\n if (synced !== undefined && synced !== null)\n url_ += \"Synced=\" + encodeURIComponent(\"\" + synced) + \"&\";\n if (ignored !== undefined && ignored !== null)\n url_ += \"Ignored=\" + encodeURIComponent(\"\" + ignored) + \"&\";\n if (disabled !== undefined && disabled !== null)\n url_ += \"Disabled=\" + encodeURIComponent(\"\" + disabled) + \"&\";\n if (hasTeachers !== undefined && hasTeachers !== null)\n url_ += \"HasTeachers=\" + encodeURIComponent(\"\" + hasTeachers) + \"&\";\n if (sourceId !== undefined && sourceId !== null)\n url_ += \"SourceId=\" + encodeURIComponent(\"\" + sourceId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processIndex(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processIndex(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processIndex(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SourceGroup[];\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n get(id: string): Observable {\n let url_ = this.baseUrl + \"/api/Group/{id}\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processGet(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processGet(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGet(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SourceGroup;\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n syncGroups(syncGroupsRequest: SyncGroupsRequest): Observable {\n let url_ = this.baseUrl + \"/api/Group/SyncGroups\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(syncGroupsRequest);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processSyncGroups(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processSyncGroups(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processSyncGroups(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 202) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result400: any = null;\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n ignoreGroups(ignoreGroupsRequest: IgnoreGroupsRequest): Observable {\n let url_ = this.baseUrl + \"/api/Group/IgnoreGroups\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(ignoreGroupsRequest);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processIgnoreGroups(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processIgnoreGroups(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processIgnoreGroups(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 202) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result400: any = null;\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result404);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n updateGroups(updateGroupsRequest: UpdateGroupsRequest): Observable {\n let url_ = this.baseUrl + \"/api/Group/UpdateGroups\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(updateGroupsRequest);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processUpdateGroups(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processUpdateGroups(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processUpdateGroups(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 202) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result400: any = null;\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result404);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n bulkArchive(archiveTeamsRequest: BulkArchiveTeamsRequest): Observable {\n let url_ = this.baseUrl + \"/api/Group/BulkArchive\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(archiveTeamsRequest);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processBulkArchive(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processBulkArchive(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processBulkArchive(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 202) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result400: any = null;\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n archive(archiveTeamsRequest: ArchiveTeamsRequest): Observable {\n let url_ = this.baseUrl + \"/api/Group/Archive\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(archiveTeamsRequest);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processArchive(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processArchive(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processArchive(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 202) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result400: any = null;\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n delete(deleteGroupsRequest: DeleteGroupsRequest): Observable {\n let url_ = this.baseUrl + \"/api/Group/Delete\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(deleteGroupsRequest);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processDelete(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processDelete(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processDelete(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 202) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result400: any = null;\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\n@Injectable()\nexport class GroupSyncProfileService {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(API_BASE_URL) baseUrl?: string) {\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n list(): Observable {\n let url_ = this.baseUrl + \"/api/GroupSyncProfile\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processList(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processList(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processList(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as GroupSyncProfile[];\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n create(createGroupSyncProfileRequest: CreateGroupSyncProfileRequest): Observable {\n let url_ = this.baseUrl + \"/api/GroupSyncProfile\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(createGroupSyncProfileRequest);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processCreate(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processCreate(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processCreate(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 201) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result201: any = null;\n result201 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CreatedAtViewModel;\n return _observableOf(result201);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result400: any = null;\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n patch(updateGroupSyncProfileRequest: UpdateGroupSyncProfileRequest): Observable {\n let url_ = this.baseUrl + \"/api/GroupSyncProfile\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(updateGroupSyncProfileRequest);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n })\n };\n\n return this.http.request(\"patch\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processPatch(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processPatch(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processPatch(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 202) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result400: any = null;\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n get(id: string | null): Observable {\n let url_ = this.baseUrl + \"/api/GroupSyncProfile/{id}\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processGet(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processGet(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGet(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as GroupSyncProfile;\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\n@Injectable()\nexport class SchoolService {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(API_BASE_URL) baseUrl?: string) {\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n index(select?: string | null | undefined): Observable {\n let url_ = this.baseUrl + \"/api/School/list?\";\n if (select !== undefined && select !== null)\n url_ += \"select=\" + encodeURIComponent(\"\" + select) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processIndex(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processIndex(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processIndex(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as EducationSchool[];\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n addOrUpdate(addOrUpdateSchool: AddOrUpdateSchoolRequest): Observable {\n let url_ = this.baseUrl + \"/api/School/addOrUpdate\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(addOrUpdateSchool);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processAddOrUpdate(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processAddOrUpdate(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processAddOrUpdate(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 202) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result400: any = null;\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\n@Injectable()\nexport class TenantService {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(API_BASE_URL) baseUrl?: string) {\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n list(): Observable {\n let url_ = this.baseUrl + \"/api/admin/Tenant\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processList(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processList(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processList(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as Tenant[];\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n get(id: string): Observable {\n let url_ = this.baseUrl + \"/api/admin/Tenant/{id}\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processGet(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processGet(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGet(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as Tenant;\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n create(createTenantRequest: CreateTenantRequest): Observable {\n let url_ = this.baseUrl + \"/api/admin/Tenant/create\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(createTenantRequest);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n })\n };\n\n return this.http.request(\"put\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processCreate(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processCreate(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processCreate(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 201) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result201: any = null;\n result201 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CreatedAtViewModel;\n return _observableOf(result201);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result400: any = null;\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n update(updateTenantRequest: UpdateTenantRequest): Observable {\n let url_ = this.baseUrl + \"/api/admin/Tenant/update\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(updateTenantRequest);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n })\n };\n\n return this.http.request(\"patch\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processUpdate(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processUpdate(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processUpdate(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result400: any = null;\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\n@Injectable()\nexport class TokenService {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(API_BASE_URL) baseUrl?: string) {\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n getToken(tenantId: string, tokenRequest: TokenRequest): Observable {\n let url_ = this.baseUrl + \"/api/tenant/{tenantId}/token\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(tokenRequest);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processGetToken(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processGetToken(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetToken(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as TokenResponse;\n return _observableOf(result200);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result400: any = null;\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as FileResponse;\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result401: any = null;\n result401 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as TokenResponse;\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result401);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\n@Injectable()\nexport class UserService {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(API_BASE_URL) baseUrl?: string) {\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n get(id: string): Observable {\n let url_ = this.baseUrl + \"/api/User/{id}\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processGet(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processGet(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGet(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SourceUser;\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result404);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n list(kind?: UserKind | null | undefined, synced?: boolean | null | undefined, disabled?: boolean | null | undefined, unavailable?: boolean | null | undefined, prefix?: string | null | undefined, source?: string | null | undefined, period?: string | null | undefined, mainClass?: string | null | undefined, study?: string | null | undefined, position?: string | null | undefined, positionId?: number | null | undefined, mainSubject?: string | null | undefined, mainSubjectCode?: string | null | undefined): Observable {\n let url_ = this.baseUrl + \"/api/User?\";\n if (kind !== undefined && kind !== null)\n url_ += \"Kind=\" + encodeURIComponent(\"\" + kind) + \"&\";\n if (synced !== undefined && synced !== null)\n url_ += \"Synced=\" + encodeURIComponent(\"\" + synced) + \"&\";\n if (disabled !== undefined && disabled !== null)\n url_ += \"Disabled=\" + encodeURIComponent(\"\" + disabled) + \"&\";\n if (unavailable !== undefined && unavailable !== null)\n url_ += \"Unavailable=\" + encodeURIComponent(\"\" + unavailable) + \"&\";\n if (prefix !== undefined && prefix !== null)\n url_ += \"Prefix=\" + encodeURIComponent(\"\" + prefix) + \"&\";\n if (source !== undefined && source !== null)\n url_ += \"Source=\" + encodeURIComponent(\"\" + source) + \"&\";\n if (period !== undefined && period !== null)\n url_ += \"Period=\" + encodeURIComponent(\"\" + period) + \"&\";\n if (mainClass !== undefined && mainClass !== null)\n url_ += \"MainClass=\" + encodeURIComponent(\"\" + mainClass) + \"&\";\n if (study !== undefined && study !== null)\n url_ += \"Study=\" + encodeURIComponent(\"\" + study) + \"&\";\n if (position !== undefined && position !== null)\n url_ += \"Position=\" + encodeURIComponent(\"\" + position) + \"&\";\n if (positionId !== undefined && positionId !== null)\n url_ += \"PositionId=\" + encodeURIComponent(\"\" + positionId) + \"&\";\n if (mainSubject !== undefined && mainSubject !== null)\n url_ += \"MainSubject=\" + encodeURIComponent(\"\" + mainSubject) + \"&\";\n if (mainSubjectCode !== undefined && mainSubjectCode !== null)\n url_ += \"MainSubjectCode=\" + encodeURIComponent(\"\" + mainSubjectCode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processList(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processList(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processList(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SourceUser[];\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n syncUsers(syncUsersRequest: SyncUsersRequest): Observable {\n let url_ = this.baseUrl + \"/api/User\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(syncUsersRequest);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processSyncUsers(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processSyncUsers(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processSyncUsers(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 202) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result202: any = null;\n result202 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CreateOrUpdateUsersResponse;\n return _observableOf(result202);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result400: any = null;\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result404);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n matchUser(matchUserRequest: MatchUserRequest): Observable {\n let url_ = this.baseUrl + \"/api/User/match\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(matchUserRequest);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processMatchUser(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processMatchUser(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processMatchUser(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 202) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result400: any = null;\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n checkUserGroups(syncUsersRequest: SyncUsersRequest): Observable {\n let url_ = this.baseUrl + \"/api/User/check-groups\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(syncUsersRequest);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processCheckUserGroups(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processCheckUserGroups(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processCheckUserGroups(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 202) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result400: any = null;\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n batch(batch: BatchUsersRequest): Observable {\n let url_ = this.baseUrl + \"/api/User/Batch\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(batch);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processBatch(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processBatch(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processBatch(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 202) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result400: any = null;\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\n }));\n } else if (status === 422) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result422);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\n@Injectable()\nexport class UserSyncProfileService {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(API_BASE_URL) baseUrl?: string) {\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n list(): Observable {\n let url_ = this.baseUrl + \"/api/UserSyncProfile\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processList(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processList(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processList(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UserSyncProfile[];\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n create(createUserSyncProfileRequest: CreateUserSyncProfileRequest): Observable {\n let url_ = this.baseUrl + \"/api/UserSyncProfile\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(createUserSyncProfileRequest);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processCreate(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processCreate(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processCreate(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 201) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result201: any = null;\n result201 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CreatedAtViewModel;\n return _observableOf(result201);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result400: any = null;\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n patch(updateUserSyncProfileRequest: UpdateUserSyncProfileRequest): Observable {\n let url_ = this.baseUrl + \"/api/UserSyncProfile\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(updateUserSyncProfileRequest);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n })\n };\n\n return this.http.request(\"patch\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processPatch(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processPatch(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processPatch(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 202) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result400: any = null;\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n get(id: string | null): Observable {\n let url_ = this.baseUrl + \"/api/UserSyncProfile/{id}\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processGet(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processGet(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGet(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UserSyncProfile;\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\nexport interface UserViewModel {\n userId?: string | undefined;\n username?: string | undefined;\n tenantId?: string | undefined;\n tenant?: TenantViewModel | undefined;\n isAdmin?: boolean;\n isSupport?: boolean;\n isTeacher?: boolean;\n isTenantManager?: boolean;\n}\n\nexport interface TenantViewModel {\n id?: string | undefined;\n isActivated?: boolean;\n name?: string | undefined;\n adminConsent?: boolean;\n adminConsentLink?: string | undefined;\n allowUserMatching?: boolean;\n allowUserUpdate?: boolean;\n userProfileExtensions?: boolean;\n userProfileFedLogin?: boolean;\n}\n\nexport interface DynamicAppInsightsConfig {\n instrumentationKey?: string | undefined;\n}\n\nexport interface FeatureList {\n ageGroups?: boolean;\n groupCombining?: boolean;\n groupHiding?: boolean;\n userAuthenticationMethods?: boolean;\n userLifecycle?: boolean;\n}\n\nexport interface BaseEntity {\n id?: string | undefined;\n partition?: string | undefined;\n createdAt?: Date | undefined;\n updatedAt?: Date | undefined;\n}\n\nexport interface Group extends BaseEntity {\n filter?: string | undefined;\n groups?: ChildGroup[] | undefined;\n groupMembers?: ResolvedGroupMember[] | undefined;\n azureGroupId?: string | undefined;\n displayName?: string | undefined;\n emailadres?: string | undefined;\n description?: string | undefined;\n teamTemplate?: string | undefined;\n syncStudents?: boolean;\n syncTeachers?: boolean;\n teachersAsMember?: boolean;\n alternativeOwner?: string | undefined;\n}\n\nexport interface ChildGroup {\n externalId?: string | undefined;\n}\n\nexport interface ResolvedGroupMember {\n externalId?: string | undefined;\n azureId?: string | undefined;\n role?: string | undefined;\n}\n\nexport interface ProblemDetails {\n type?: string | undefined;\n title?: string | undefined;\n status?: number | undefined;\n detail?: string | undefined;\n instance?: string | undefined;\n\n [key: string]: any;\n}\n\nexport interface CreateGroupRequest {\n filter?: string | undefined;\n groups?: string[] | undefined;\n azureGroupId?: string | undefined;\n displayName?: string | undefined;\n emailadres?: string | undefined;\n description?: string | undefined;\n teamTemplate?: string | undefined;\n syncStudents?: boolean;\n syncTeachers?: boolean;\n teachersAsMember?: boolean;\n alternativeOwner?: string | undefined;\n}\n\nexport interface Customizations {\n name?: string | undefined;\n logo?: string | undefined;\n productLink?: string | undefined;\n}\n\nexport interface CreatedAtViewModel {\n id?: string | undefined;\n}\n\nexport interface CreateSourceConnectionRequest {\n sourceId?: string;\n connectionType?: SourceConnectionType;\n domain?: string | undefined;\n prefix?: string | undefined;\n brin?: string | undefined;\n credentials?: Credentials | undefined;\n connectionData?: { [key: string]: string; } | undefined;\n groupProfileId?: string;\n studentProfileId?: string;\n teacherProfileId?: string;\n}\n\nexport enum SourceConnectionType {\n Unknown = \"Unknown\",\n Magister = \"Magister\",\n Azure = \"Azure\",\n Eduarte = \"Eduarte\",\n}\n\nexport interface Credentials {\n username?: string | undefined;\n password?: string | undefined;\n token?: string | undefined;\n}\n\nexport interface MigrateSourceConnectionRequest {\n sourceId?: string;\n period?: string | undefined;\n syncUntil?: Date;\n archiveExistingGroups?: boolean;\n}\n\nexport interface DeleteSourceConnectionRequest {\n sourceId?: string;\n}\n\nexport interface SourceConnection extends BaseEntity {\n connectionType?: SourceConnectionType;\n domain?: string | undefined;\n prefix?: string | undefined;\n connectionData?: { [key: string]: string; } | undefined;\n lastUpdate?: Date | undefined;\n groupProfileId?: string | undefined;\n studentProfileId?: string | undefined;\n teacherProfileId?: string | undefined;\n isValid?: boolean;\n numberOfStudents?: number | undefined;\n numberOfTeachers?: number | undefined;\n numberOfGroups?: number | undefined;\n lastImport?: Date | undefined;\n}\n\nexport interface StartSourceSynchronisation {\n sourceConnectionId?: string | undefined;\n tryMatchAzureUsers?: boolean | undefined;\n checkAllGroupsAfterSync?: boolean | undefined;\n}\n\nexport interface SourceGroup extends BaseEntity {\n source?: string | undefined;\n prefix?: string | undefined;\n externalId?: string | undefined;\n emailadres?: string | undefined;\n kind?: GroupKind | undefined;\n displayName?: string | undefined;\n period?: string | undefined;\n subject?: string | undefined;\n subjectId?: string | undefined;\n study?: string | undefined;\n yearOfStudy?: number | undefined;\n studyGroup?: string | undefined;\n teachers?: string[] | undefined;\n students?: string[] | undefined;\n azureObjectId?: string | undefined;\n synced?: boolean | undefined;\n ignore?: boolean | undefined;\n addTeachers?: boolean | undefined;\n removeTeachers?: boolean | undefined;\n addUsers?: boolean | undefined;\n removeUsers?: boolean | undefined;\n noLookup?: boolean | undefined;\n groupProfileId?: string | undefined;\n syncDisabled?: boolean | undefined;\n disabledReason?: string | undefined;\n archived?: boolean | undefined;\n lastUpdate?: Date | undefined;\n}\n\nexport enum GroupKind {\n Unknown = \"Unknown\",\n Klas = \"Klas\",\n Vak = \"Vak\",\n Cluster = \"Cluster\",\n}\n\nexport interface SyncGroupsRequest {\n groups?: string[] | undefined;\n alternativeOwnerId?: string | undefined;\n schoolId?: string | undefined;\n addTeachers?: boolean | undefined;\n removeTeachers?: boolean | undefined;\n addUsers?: boolean | undefined;\n removeUsers?: boolean | undefined;\n groupProfileId?: string | undefined;\n}\n\nexport interface IgnoreGroupsRequest {\n groups?: string[] | undefined;\n}\n\nexport interface UpdateGroupsRequest {\n sourceId?: string | undefined;\n groups?: string[] | undefined;\n syncDisabled?: boolean | undefined;\n disabledReason?: string | undefined;\n ignored?: boolean | undefined;\n synced?: boolean | undefined;\n addTeachers?: boolean | undefined;\n removeTeachers?: boolean | undefined;\n addUsers?: boolean | undefined;\n removeUsers?: boolean | undefined;\n}\n\nexport interface BulkArchiveTeamsRequest {\n teamIds?: string | undefined;\n readOnlyForMembers?: boolean;\n hideInOutlook?: boolean;\n hideInAddressList?: boolean;\n}\n\nexport interface ArchiveTeamsRequest {\n groups?: string[] | undefined;\n readOnlyForMembers?: boolean;\n hideInOutlook?: boolean;\n hideInAddressList?: boolean;\n newOwner?: string | undefined;\n replaceOwners?: boolean;\n replaceMembers?: boolean;\n keepCurrentOwnersAsMember?: boolean;\n}\n\nexport interface DeleteGroupsRequest {\n groups?: string[] | undefined;\n}\n\nexport interface SyncProfile extends BaseEntity {\n profileName?: string | undefined;\n defaultDomain?: string | undefined;\n displayNameFormat?: string | undefined;\n mailNicknameFormat?: string | undefined;\n}\n\nexport interface GroupSyncProfile extends SyncProfile {\n classCodeFormat?: string | undefined;\n descriptionFormat?: string | undefined;\n courseNumberFormat?: string | undefined;\n courseDescriptionFormat?: string | undefined;\n courseNameFormat?: string | undefined;\n courseSubjectFormat?: string | undefined;\n termNameFormat?: string | undefined;\n defaultAlternativeOwner?: string | undefined;\n hideFromAddresslist?: boolean | undefined;\n groupVisibility?: string | undefined;\n teamTemplate?: string | undefined;\n contentQuery?: string | undefined;\n}\n\nexport interface CreateGroupSyncProfileRequest {\n id?: string;\n profileName?: string | undefined;\n defaultDomain?: string | undefined;\n displayNameFormat?: string | undefined;\n mailNicknameFormat?: string | undefined;\n classCodeFormat?: string | undefined;\n descriptionFormat?: string | undefined;\n courseNumberFormat?: string | undefined;\n courseDescriptionFormat?: string | undefined;\n courseNameFormat?: string | undefined;\n courseSubjectFormat?: string | undefined;\n termNameFormat?: string | undefined;\n defaultAlternativeOwner?: string | undefined;\n hideFromAddresslist?: boolean | undefined;\n groupVisibility?: string | undefined;\n teamTemplate?: string | undefined;\n contentQuery?: string | undefined;\n}\n\nexport interface UpdateGroupSyncProfileRequest {\n id?: string;\n profileName?: string | undefined;\n defaultDomain?: string | undefined;\n displayNameFormat?: string | undefined;\n mailNicknameFormat?: string | undefined;\n classCodeFormat?: string | undefined;\n descriptionFormat?: string | undefined;\n courseNumberFormat?: string | undefined;\n courseDescriptionFormat?: string | undefined;\n courseNameFormat?: string | undefined;\n courseSubjectFormat?: string | undefined;\n termNameFormat?: string | undefined;\n defaultAlternativeOwner?: string | undefined;\n hideFromAddresslist?: boolean | undefined;\n groupVisibility?: string | undefined;\n teamTemplate?: string | undefined;\n contentQuery?: string | undefined;\n}\n\nexport interface EducationId {\n externalId?: string | undefined;\n}\n\nexport interface EducationSchool extends EducationId {\n id?: string | undefined;\n description?: string | undefined;\n displayName?: string | undefined;\n externalSource?: string | undefined;\n phone?: string | undefined;\n principalEmail?: string | undefined;\n principalName?: string | undefined;\n address?: PhysicalAddress | undefined;\n createdBy?: IdentitySet | undefined;\n}\n\nexport interface PhysicalAddress {\n city?: string | undefined;\n countryOrRegion?: string | undefined;\n postalCode?: string | undefined;\n state?: string | undefined;\n street?: string | undefined;\n}\n\nexport interface IdentitySet {\n application?: Identity | undefined;\n device?: Identity | undefined;\n user?: Identity | undefined;\n}\n\nexport interface Identity {\n displayName?: string | undefined;\n id?: string | undefined;\n}\n\nexport interface AddOrUpdateSchoolRequest {\n description?: string | undefined;\n displayName?: string | undefined;\n externalId?: string | undefined;\n externalSource?: string | undefined;\n id?: string | undefined;\n phone?: string | undefined;\n principalEmail?: string | undefined;\n principalName?: string | undefined;\n}\n\nexport interface Tenant extends BaseEntity {\n name?: string | undefined;\n activated?: boolean;\n createdByTenant?: string | undefined;\n createdByUser?: string | undefined;\n students?: number | undefined;\n teachers?: number | undefined;\n updateUsers?: boolean | undefined;\n updateGroupMembers?: boolean | undefined;\n adminConsentGranted?: boolean | undefined;\n matchingEnabled?: boolean | undefined;\n checkGroupsAfterScheduledSync?: boolean | undefined;\n updateUsersAfterScheduledSync?: boolean | undefined;\n userProfileExtensions?: boolean | undefined;\n userProfileFedLogin?: boolean | undefined;\n}\n\nexport interface CreateTenantRequest {\n id?: string;\n name?: string | undefined;\n students?: number;\n teachers?: number;\n activated?: boolean;\n updateUsers?: boolean | undefined;\n updateGroupMembers?: boolean | undefined;\n matchingEnabled?: boolean | undefined;\n checkGroupsAfterScheduledSync?: boolean | undefined;\n updateUsersAfterScheduledSync?: boolean | undefined;\n userProfileExtensions?: boolean | undefined;\n userProfileFedLogin?: boolean | undefined;\n}\n\nexport interface UpdateTenantRequest {\n id?: string;\n name?: string | undefined;\n students?: number;\n teachers?: number;\n activated?: boolean;\n updateUsers?: boolean | undefined;\n updateGroupMembers?: boolean | undefined;\n matchingEnabled?: boolean | undefined;\n checkGroupsAfterScheduledSync?: boolean | undefined;\n updateUsersAfterScheduledSync?: boolean | undefined;\n userProfileExtensions?: boolean | undefined;\n userProfileFedLogin?: boolean | undefined;\n}\n\nexport interface TokenResponse {\n access_token?: string | undefined;\n token_type?: string | undefined;\n expires_in?: number;\n refresh_token?: string | undefined;\n scope?: string | undefined;\n}\n\nexport interface TokenRequest {\n clientId?: string | undefined;\n clientSecret?: string | undefined;\n grantType?: string | undefined;\n}\n\nexport interface SourceUser extends BaseEntity {\n source?: string | undefined;\n prefix?: string | undefined;\n externalId?: string | undefined;\n emailadres?: string | undefined;\n displayName?: string | undefined;\n initials?: string | undefined;\n givenname?: string | undefined;\n surnamePrefix?: string | undefined;\n surname?: string | undefined;\n privateEmail?: string | undefined;\n privatePhone?: string | undefined;\n startDate?: Date | undefined;\n endDate?: Date | undefined;\n school?: string | undefined;\n brin?: string | undefined;\n isStudent?: boolean | undefined;\n isTeacher?: boolean | undefined;\n isFaculty?: boolean | undefined;\n externalAccountId?: string | undefined;\n age?: number | undefined;\n period?: string | undefined;\n mainClass?: string | undefined;\n study?: string | undefined;\n year?: number | undefined;\n location?: string | undefined;\n locationId?: string | undefined;\n scheduleCode?: string | undefined;\n position?: string | undefined;\n positionId?: number | undefined;\n mainSubject?: string | undefined;\n mainSubjectCode?: string | undefined;\n lastUpdate?: Date | undefined;\n azureObjectId?: string | undefined;\n synced?: boolean | undefined;\n hasLicense?: boolean | undefined;\n unavailable?: boolean | undefined;\n syncDisbaled?: boolean | undefined;\n badge?: string | undefined;\n status?: string;\n}\n\nexport enum UserKind {\n Unknown = \"Unknown\",\n Faculty = \"Faculty\",\n Teacher = \"Teacher\",\n Employee = \"Employee\",\n Student = \"Student\",\n}\n\nexport interface MatchUserRequest {\n userId?: string | undefined;\n azureId?: string | undefined;\n override?: boolean;\n resetSync?: boolean | undefined;\n}\n\nexport interface CreateOrUpdateUsersResponse {\n newUsers?: number;\n updatedUsers?: number;\n}\n\nexport interface SyncUsersRequest {\n userIds?: string[] | undefined;\n}\n\nexport interface BatchUsersRequest {\n userIds?: string[] | undefined;\n action?: BatchUserAction;\n}\n\nexport enum BatchUserAction {\n CheckGroups = \"CheckGroups\",\n Disable = \"Disable\",\n Delete = \"Delete\",\n}\n\nexport interface UserSyncProfile extends SyncProfile {\n userPrincipalNameFormat?: string | undefined;\n companyFormat?: string | undefined;\n departmentFormat?: string | undefined;\n jobtitleFormat?: string | undefined;\n officeFormat?: string | undefined;\n givenNameFormat?: string | undefined;\n surnameFormat?: string | undefined;\n usageLocation?: string | undefined;\n country?: string | undefined;\n matchKeySource?: string | undefined;\n matchKeyGraph?: string | undefined;\n licenseId?: string | undefined;\n extensionSet?: boolean | undefined;\n extension1?: string | undefined;\n extension2?: string | undefined;\n extension3?: string | undefined;\n extension4?: string | undefined;\n extension5?: string | undefined;\n extension6?: string | undefined;\n extension7?: string | undefined;\n extension8?: string | undefined;\n extension9?: string | undefined;\n extension10?: string | undefined;\n extension11?: string | undefined;\n extension12?: string | undefined;\n extension13?: string | undefined;\n extension14?: string | undefined;\n extension15?: string | undefined;\n brin?: string | undefined;\n tussenvoegsel?: string | undefined;\n initials?: string | undefined;\n affiliation?: string | undefined;\n eduPersonProfileId?: string | undefined;\n digiDeliveryId?: string | undefined;\n enableAgeGroup?: boolean | undefined;\n blockUsersWhenUnavailable?: boolean | undefined;\n setLifecycleProperties?: boolean | undefined;\n setPrivateEmailAuth?: boolean | undefined;\n setPrivatePhoneAuth?: boolean | undefined;\n overrideAuthentication?: boolean | undefined;\n extra1Field?: string | undefined;\n extra1Value?: string | undefined;\n extra2Field?: string | undefined;\n extra2Value?: string | undefined;\n extra3Field?: string | undefined;\n extra3Value?: string | undefined;\n extra4Field?: string | undefined;\n extra4Value?: string | undefined;\n}\n\nexport interface CreateUserSyncProfileRequest {\n id?: string;\n profileName?: string | undefined;\n defaultDomain?: string | undefined;\n companyFormat?: string | undefined;\n country?: string | undefined;\n departmentFormat?: string | undefined;\n displayNameFormat?: string | undefined;\n givenNameFormat?: string | undefined;\n jobtitleFormat?: string | undefined;\n mailNicknameFormat?: string | undefined;\n officeFormat?: string | undefined;\n surnameFormat?: string | undefined;\n usageLocation?: string | undefined;\n userPrincipalNameFormat?: string | undefined;\n matchKeySource?: string | undefined;\n matchKeyGraph?: string | undefined;\n enableAgeGroup?: boolean;\n extension1?: string | undefined;\n extension2?: string | undefined;\n extension3?: string | undefined;\n extension4?: string | undefined;\n extension5?: string | undefined;\n extension6?: string | undefined;\n extension7?: string | undefined;\n extension8?: string | undefined;\n extension9?: string | undefined;\n extension10?: string | undefined;\n extension11?: string | undefined;\n extension12?: string | undefined;\n extension13?: string | undefined;\n extension14?: string | undefined;\n extension15?: string | undefined;\n brin?: string | undefined;\n tussenvoegsel?: string | undefined;\n initials?: string | undefined;\n affiliation?: string | undefined;\n eduPersonProfileId?: string | undefined;\n digiDeliveryId?: string | undefined;\n blockUsersWhenUnavailable?: boolean | undefined;\n setLifecycleProperties?: boolean;\n setPrivateEmailAuth?: boolean;\n setPrivatePhoneAuth?: boolean;\n overrideAuthentication?: boolean;\n extra1Field?: string | undefined;\n extra1Value?: string | undefined;\n extra2Field?: string | undefined;\n extra2Value?: string | undefined;\n extra3Field?: string | undefined;\n extra3Value?: string | undefined;\n extra4Field?: string | undefined;\n extra4Value?: string | undefined;\n}\n\nexport interface UpdateUserSyncProfileRequest {\n id?: string;\n profileName?: string | undefined;\n defaultDomain?: string | undefined;\n companyFormat?: string | undefined;\n country?: string | undefined;\n departmentFormat?: string | undefined;\n displayNameFormat?: string | undefined;\n givenNameFormat?: string | undefined;\n jobtitleFormat?: string | undefined;\n mailNicknameFormat?: string | undefined;\n officeFormat?: string | undefined;\n surnameFormat?: string | undefined;\n usageLocation?: string | undefined;\n userPrincipalNameFormat?: string | undefined;\n matchKeySource?: string | undefined;\n matchKeyGraph?: string | undefined;\n enableAgeGroup?: boolean | undefined;\n extension1?: string | undefined;\n extension2?: string | undefined;\n extension3?: string | undefined;\n extension4?: string | undefined;\n extension5?: string | undefined;\n extension6?: string | undefined;\n extension7?: string | undefined;\n extension8?: string | undefined;\n extension9?: string | undefined;\n extension10?: string | undefined;\n extension11?: string | undefined;\n extension12?: string | undefined;\n extension13?: string | undefined;\n extension14?: string | undefined;\n extension15?: string | undefined;\n brin?: string | undefined;\n tussenvoegsel?: string | undefined;\n initials?: string | undefined;\n affiliation?: string | undefined;\n eduPersonProfileId?: string | undefined;\n digiDeliveryId?: string | undefined;\n blockUsersWhenUnavailable?: boolean | undefined;\n updateAllValues?: boolean;\n setLifecycleProperties?: boolean | undefined;\n setPrivateEmailAuth?: boolean | undefined;\n setPrivatePhoneAuth?: boolean | undefined;\n overrideAuthentication?: boolean | undefined;\n extra1Field?: string | undefined;\n extra1Value?: string | undefined;\n extra2Field?: string | undefined;\n extra2Value?: string | undefined;\n extra3Field?: string | undefined;\n extra3Value?: string | undefined;\n extra4Field?: string | undefined;\n extra4Value?: string | undefined;\n}\n\nexport interface FileParameter {\n data: any;\n fileName: string;\n}\n\nexport interface FileResponse {\n data: Blob;\n status: number;\n fileName?: string;\n headers?: { [name: string]: any };\n}\n\nexport class ApiException extends Error {\n override message: string;\n status: number;\n response: string;\n headers: { [key: string]: any; };\n result: any;\n\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n super();\n\n this.message = message;\n this.status = status;\n this.response = response;\n this.headers = headers;\n this.result = result;\n }\n\n protected isApiException = true;\n\n static isApiException(obj: any): obj is ApiException {\n return obj.isApiException === true;\n }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): Observable {\n if (result !== null && result !== undefined)\n return _observableThrow(result);\n else\n return _observableThrow(new ApiException(message, status, response, headers, null));\n}\n\nfunction blobToText(blob: any): Observable {\n return new Observable((observer: any) => {\n if (!blob) {\n observer.next(\"\");\n observer.complete();\n } else {\n let reader = new FileReader();\n reader.onload = event => {\n observer.next((event.target as any).result);\n observer.complete();\n };\n reader.readAsText(blob);\n }\n });\n}","/*\n * Application Insights JavaScript SDK - Common, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n// Licensed under the\r\nexport { Util, CorrelationIdHelper, DateTimeUtils, dateTimeUtilsNow, dateTimeUtilsDuration, UrlHelper, isInternalApplicationInsightsEndpoint, createDistributedTraceContextFromTrace } from \"./Util\";\r\nexport { ThrottleMgr } from \"./ThrottleMgr\";\r\nexport { parseConnectionString, ConnectionStringParser } from \"./ConnectionStringParser\";\r\nexport { RequestHeaders } from \"./RequestResponseHeaders\";\r\nexport { DisabledPropertyName, ProcessLegacy, SampleRate, HttpMethod, DEFAULT_BREEZE_ENDPOINT, DEFAULT_BREEZE_PATH, strNotSpecified } from \"./Constants\";\r\nexport { Envelope } from \"./Telemetry/Common/Envelope\";\r\nexport { Event } from \"./Telemetry/Event\";\r\nexport { Exception } from \"./Telemetry/Exception\";\r\nexport { Metric } from \"./Telemetry/Metric\";\r\nexport { PageView } from \"./Telemetry/PageView\";\r\nexport { RemoteDependencyData } from \"./Telemetry/RemoteDependencyData\";\r\nexport { Trace } from \"./Telemetry/Trace\";\r\nexport { PageViewPerformance } from \"./Telemetry/PageViewPerformance\";\r\nexport { Data } from \"./Telemetry/Common/Data\";\r\nexport { SeverityLevel } from \"./Interfaces/Contracts/SeverityLevel\";\r\nexport { ConfigurationManager } from \"./Interfaces/IConfig\";\r\nexport { ContextTagKeys } from \"./Interfaces/Contracts/ContextTagKeys\";\r\nexport { DataSanitizer, dataSanitizeKeyAndAddUniqueness, dataSanitizeKey, dataSanitizeString, dataSanitizeUrl, dataSanitizeMessage, dataSanitizeException, dataSanitizeProperties, dataSanitizeMeasurements, dataSanitizeId, dataSanitizeInput, dsPadNumber } from \"./Telemetry/Common/DataSanitizer\";\r\nexport { TelemetryItemCreator, createTelemetryItem } from \"./TelemetryItemCreator\";\r\nexport { CtxTagKeys, Extensions } from \"./Interfaces/PartAExtensions\";\r\nexport { DistributedTracingModes } from \"./Enums\";\r\nexport { stringToBoolOrDefault, msToTimeSpan, getExtensionByName, isCrossOriginError } from \"./HelperFuncs\";\r\nexport { isBeaconsSupported as isBeaconApiSupported, createTraceParent, parseTraceParent, isValidTraceId, isValidSpanId, isValidTraceParent, isSampledFlag, formatTraceParent, findW3cTraceParent } from \"@microsoft/applicationinsights-core-js\";\r\nexport { createDomEvent } from \"./DomHelperFuncs\";\r\nexport { utlDisableStorage, utlEnableStorage, utlCanUseLocalStorage, utlGetLocalStorage, utlSetLocalStorage, utlRemoveStorage, utlCanUseSessionStorage, utlGetSessionStorageKeys, utlGetSessionStorage, utlSetSessionStorage, utlRemoveSessionStorage } from \"./StorageHelperFuncs\";\r\nexport { urlParseUrl, urlGetAbsoluteUrl, urlGetPathName, urlGetCompleteUrl, urlParseHost, urlParseFullHost } from \"./UrlHelperFuncs\";\r\nexport var PropertiesPluginIdentifier = \"AppInsightsPropertiesPlugin\";\r\nexport var BreezeChannelIdentifier = \"AppInsightsChannelPlugin\";\r\nexport var AnalyticsPluginIdentifier = \"ApplicationInsightsAnalytics\";\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nexport var strShimFunction = \"function\";\r\nexport var strShimObject = \"object\";\r\nexport var strShimUndefined = \"undefined\";\r\nexport var strShimPrototype = \"prototype\";\r\nexport var strShimHasOwnProperty = \"hasOwnProperty\";\r\nexport var strDefault = \"default\";\r\nexport var ObjClass = Object;\r\nexport var ObjProto = ObjClass[strShimPrototype];\r\nexport var ObjAssign = ObjClass[\"assign\"];\r\nexport var ObjCreate = ObjClass[\"create\"];\r\nexport var ObjDefineProperty = ObjClass[\"defineProperty\"];\r\nexport var ObjHasOwnProperty = ObjProto[strShimHasOwnProperty];\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { ObjCreate, strShimFunction, strShimObject, strShimPrototype, strShimUndefined } from \"./Constants\";\r\nvar _cachedGlobal = null;\r\n/**\r\n * Returns the current global scope object, for a normal web page this will be the current\r\n * window, for a Web Worker this will be current worker global scope via \"self\". The internal\r\n * implementation returns the first available instance object in the following order\r\n * - globalThis (New standard)\r\n * - self (Will return the current window instance for supported browsers)\r\n * - window (fallback for older browser implementations)\r\n * - global (NodeJS standard)\r\n * - (When all else fails)\r\n * While the return type is a Window for the normal case, not all environments will support all\r\n * of the properties or functions.\r\n */\r\nexport function getGlobal(useCached) {\r\n if (useCached === void 0) { useCached = true; }\r\n var result = useCached === false ? null : _cachedGlobal;\r\n if (!result) {\r\n if (typeof globalThis !== strShimUndefined) {\r\n result = globalThis;\r\n }\r\n if (!result && typeof self !== strShimUndefined) {\r\n result = self;\r\n }\r\n if (!result && typeof window !== strShimUndefined) {\r\n result = window;\r\n }\r\n if (!result && typeof global !== strShimUndefined) {\r\n result = global;\r\n }\r\n _cachedGlobal = result;\r\n }\r\n return result;\r\n}\r\nexport function throwTypeError(message) {\r\n throw new TypeError(message);\r\n}\r\n/**\r\n * Creates an object that has the specified prototype, and that optionally contains specified properties. This helper exists to avoid adding a polyfil\r\n * for older browsers that do not define Object.create eg. ES3 only, IE8 just in case any page checks for presence/absence of the prototype implementation.\r\n * Note: For consistency this will not use the Object.create implementation if it exists as this would cause a testing requirement to test with and without the implementations\r\n * @param obj Object to use as a prototype. May be null\r\n */\r\nexport function objCreateFn(obj) {\r\n var func = ObjCreate;\r\n // Use build in Object.create\r\n if (func) {\r\n // Use Object create method if it exists\r\n return func(obj);\r\n }\r\n if (obj == null) {\r\n return {};\r\n }\r\n var type = typeof obj;\r\n if (type !== strShimObject && type !== strShimFunction) {\r\n throwTypeError(\"Object prototype may only be an Object:\" + obj);\r\n }\r\n function tmpFunc() { }\r\n tmpFunc[strShimPrototype] = obj;\r\n return new tmpFunc();\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Core, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// @skip-file-minify\r\n// ##############################################################\r\n// AUTO GENERATED FILE: This file is Auto Generated during build.\r\n// ##############################################################\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\nexport var _DYN_INITIALIZE = \"initialize\"; // Count: 8\r\nexport var _DYN_NAME = \"name\"; // Count: 11\r\nexport var _DYN_GET_NOTIFY_MGR = \"getNotifyMgr\"; // Count: 3\r\nexport var _DYN_IDENTIFIER = \"identifier\"; // Count: 8\r\nexport var _DYN_PUSH = \"push\"; // Count: 30\r\nexport var _DYN_IS_INITIALIZED = \"isInitialized\"; // Count: 10\r\nexport var _DYN_CONFIG = \"config\"; // Count: 7\r\nexport var _DYN_INSTRUMENTATION_KEY = \"instrumentationKey\"; // Count: 3\r\nexport var _DYN_LOGGER = \"logger\"; // Count: 9\r\nexport var _DYN_LENGTH = \"length\"; // Count: 43\r\nexport var _DYN_TIME = \"time\"; // Count: 5\r\nexport var _DYN_PROCESS_NEXT = \"processNext\"; // Count: 21\r\nexport var _DYN_GET_PROCESS_TEL_CONT0 = \"getProcessTelContext\"; // Count: 2\r\nexport var _DYN_ADD_NOTIFICATION_LIS1 = \"addNotificationListener\"; // Count: 5\r\nexport var _DYN_REMOVE_NOTIFICATION_2 = \"removeNotificationListener\"; // Count: 5\r\nexport var _DYN_STOP_POLLING_INTERNA3 = \"stopPollingInternalLogs\"; // Count: 2\r\nexport var _DYN_ON_COMPLETE = \"onComplete\"; // Count: 4\r\nexport var _DYN_GET_PLUGIN = \"getPlugin\"; // Count: 5\r\nexport var _DYN_FLUSH = \"flush\"; // Count: 5\r\nexport var _DYN__EXTENSIONS = \"_extensions\"; // Count: 4\r\nexport var _DYN_SPLICE = \"splice\"; // Count: 6\r\nexport var _DYN_TEARDOWN = \"teardown\"; // Count: 10\r\nexport var _DYN_MESSAGE_ID = \"messageId\"; // Count: 4\r\nexport var _DYN_MESSAGE = \"message\"; // Count: 7\r\nexport var _DYN_IS_ASYNC = \"isAsync\"; // Count: 7\r\nexport var _DYN__DO_TEARDOWN = \"_doTeardown\"; // Count: 4\r\nexport var _DYN_UPDATE = \"update\"; // Count: 7\r\nexport var _DYN_GET_NEXT = \"getNext\"; // Count: 12\r\nexport var _DYN_DIAG_LOG = \"diagLog\"; // Count: 8\r\nexport var _DYN_SET_NEXT_PLUGIN = \"setNextPlugin\"; // Count: 5\r\nexport var _DYN_CREATE_NEW = \"createNew\"; // Count: 6\r\nexport var _DYN_COOKIE_CFG = \"cookieCfg\"; // Count: 3\r\nexport var _DYN_INDEX_OF = \"indexOf\"; // Count: 6\r\nexport var _DYN_SUBSTRING = \"substring\"; // Count: 10\r\nexport var _DYN_USER_AGENT = \"userAgent\"; // Count: 5\r\nexport var _DYN_SPLIT = \"split\"; // Count: 5\r\nexport var _DYN_SET_ENABLED = \"setEnabled\"; // Count: 5\r\nexport var _DYN_SUBSTR = \"substr\"; // Count: 6\r\nexport var _DYN_NODE_TYPE = \"nodeType\"; // Count: 3\r\nexport var _DYN_APPLY = \"apply\"; // Count: 6\r\nexport var _DYN_REPLACE = \"replace\"; // Count: 10\r\nexport var _DYN_ENABLE_DEBUG_EXCEPTI4 = \"enableDebugExceptions\"; // Count: 2\r\nexport var _DYN_LOG_INTERNAL_MESSAGE = \"logInternalMessage\"; // Count: 2\r\nexport var _DYN_TO_LOWER_CASE = \"toLowerCase\"; // Count: 5\r\nexport var _DYN_CALL = \"call\"; // Count: 18\r\nexport var _DYN_TYPE = \"type\"; // Count: 14\r\nexport var _DYN_HANDLER = \"handler\"; // Count: 5\r\nexport var _DYN_LISTENERS = \"listeners\"; // Count: 6\r\nexport var _DYN_IS_CHILD_EVT = \"isChildEvt\"; // Count: 3\r\nexport var _DYN_GET_CTX = \"getCtx\"; // Count: 6\r\nexport var _DYN_SET_CTX = \"setCtx\"; // Count: 10\r\nexport var _DYN_COMPLETE = \"complete\"; // Count: 3\r\nexport var _DYN_TRACE_ID = \"traceId\"; // Count: 5\r\nexport var _DYN_SPAN_ID = \"spanId\"; // Count: 5\r\nexport var _DYN_TRACE_FLAGS = \"traceFlags\"; // Count: 6\r\nexport var _DYN_VERSION = \"version\"; // Count: 4\r\n","/*\n * Application Insights JavaScript SDK - Core, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\nexport var STR_EMPTY = \"\";\r\nexport var STR_CHANNELS = \"channels\";\r\nexport var STR_CORE = \"core\";\r\nexport var STR_CREATE_PERF_MGR = \"createPerfMgr\";\r\nexport var STR_DISABLED = \"disabled\";\r\nexport var STR_EXTENSION_CONFIG = \"extensionConfig\";\r\nexport var STR_EXTENSIONS = \"extensions\";\r\nexport var STR_PROCESS_TELEMETRY = \"processTelemetry\";\r\nexport var STR_PRIORITY = \"priority\";\r\nexport var STR_EVENTS_SENT = \"eventsSent\";\r\nexport var STR_EVENTS_DISCARDED = \"eventsDiscarded\";\r\nexport var STR_EVENTS_SEND_REQUEST = \"eventsSendRequest\";\r\nexport var STR_PERF_EVENT = \"perfEvent\";\r\nexport var STR_ERROR_TO_CONSOLE = \"errorToConsole\";\r\nexport var STR_WARN_TO_CONSOLE = \"warnToConsole\";\r\nexport var STR_GET_PERF_MGR = \"getPerfMgr\";\r\n","/*\n * Application Insights JavaScript SDK - Core, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { ObjAssign, ObjClass, ObjDefineProperty, ObjHasOwnProperty, ObjProto, strShimFunction, strShimObject, strShimPrototype, strShimUndefined, throwTypeError } from \"@microsoft/applicationinsights-shims\";\r\nimport { _DYN_APPLY, _DYN_CALL, _DYN_INDEX_OF, _DYN_LENGTH, _DYN_NAME, _DYN_PUSH, _DYN_REPLACE } from \"../__DynamicConstants\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\n// RESTRICT and AVOID circular dependencies you should not import other contained modules or export the contents of this file directly\r\n// Added to help with minfication\r\nvar strToISOString = \"toISOString\";\r\nvar cStrEndsWith = \"endsWith\";\r\nvar cStrStartsWith = \"startsWith\";\r\nvar strIndexOf = \"indexOf\";\r\nvar strMap = \"map\";\r\nvar strReduce = \"reduce\";\r\nvar cStrTrim = \"trim\";\r\nvar strToString = \"toString\";\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar str__Proto = \"__proto__\";\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar strConstructor = \"constructor\";\r\nvar _objDefineProperty = ObjDefineProperty;\r\nvar _objFreeze = ObjClass.freeze;\r\nvar _objSeal = ObjClass.seal;\r\nvar _objKeys = ObjClass.keys;\r\nvar StringProto = String[strShimPrototype];\r\nvar _strTrim = StringProto[cStrTrim];\r\nvar _strEndsWith = StringProto[cStrEndsWith];\r\nvar _strStartsWith = StringProto[cStrStartsWith];\r\nvar DateProto = Date[strShimPrototype];\r\nvar _dataToISOString = DateProto[strToISOString];\r\nvar _isArray = Array.isArray;\r\nvar _objToString = ObjProto[strToString];\r\nvar _fnToString = ObjHasOwnProperty[strToString];\r\n// Cache what this browser reports as the object function constructor (as a string)\r\nvar _objFunctionString = _fnToString[_DYN_CALL /* @min:%2ecall */](ObjClass);\r\nvar rCamelCase = /-([a-z])/g;\r\nvar rNormalizeInvalid = /([^\\w\\d_$])/g;\r\nvar rLeadingNumeric = /^(\\d+[\\w\\d_$])/;\r\n/**\r\n * Pre-lookup to check if we are running on a modern browser (i.e. not IE8)\r\n * @ignore\r\n */\r\nvar _objGetPrototypeOf = Object[\"getPrototypeOf\"];\r\n/**\r\n * Helper used to get the prototype of the target object as getPrototypeOf is not available in an ES3 environment.\r\n * @ignore\r\n */\r\nexport function _getObjProto(target) {\r\n if (target) {\r\n // This method doesn't existing in older browsers (e.g. IE8)\r\n if (_objGetPrototypeOf) {\r\n return _objGetPrototypeOf(target);\r\n }\r\n // target[Constructor] May break if the constructor has been changed or removed\r\n var newProto = target[str__Proto] || target[strShimPrototype] || target[strConstructor];\r\n if (newProto) {\r\n return newProto;\r\n }\r\n }\r\n return null;\r\n}\r\nexport function objToString(obj) {\r\n return _objToString[_DYN_CALL /* @min:%2ecall */](obj);\r\n}\r\nexport function isTypeof(value, theType) {\r\n return typeof value === theType;\r\n}\r\nexport function isUndefined(value) {\r\n return value === undefined || typeof value === strShimUndefined;\r\n}\r\nexport function isNotUndefined(value) {\r\n return !isUndefined(value);\r\n}\r\nexport function isNullOrUndefined(value) {\r\n return (value === null || isUndefined(value));\r\n}\r\nexport function isNotNullOrUndefined(value) {\r\n return !isNullOrUndefined(value);\r\n}\r\nexport function hasOwnProperty(obj, prop) {\r\n return !!(obj && ObjHasOwnProperty[_DYN_CALL /* @min:%2ecall */](obj, prop));\r\n}\r\nexport function isObject(value) {\r\n // Changing to inline for performance\r\n return !!(value && typeof value === strShimObject);\r\n}\r\nexport function isFunction(value) {\r\n // Changing to inline for performance\r\n return !!(value && typeof value === strShimFunction);\r\n}\r\nexport function isPromiseLike(value) {\r\n return value && isFunction(value.then);\r\n}\r\n/**\r\n * Validates that the string name conforms to the JS IdentifierName specification and if not\r\n * normalizes the name so that it would. This method does not identify or change any keywords\r\n * meaning that if you pass in a known keyword the same value will be returned.\r\n * This is a simplified version\r\n * @param name The name to validate\r\n */\r\nexport function normalizeJsName(name) {\r\n var value = name;\r\n if (value && isString(value)) {\r\n // CamelCase everything after the \"-\" and remove the dash\r\n value = value[_DYN_REPLACE /* @min:%2ereplace */](rCamelCase, function (_all, letter) {\r\n return letter.toUpperCase();\r\n });\r\n value = value[_DYN_REPLACE /* @min:%2ereplace */](rNormalizeInvalid, \"_\");\r\n value = value[_DYN_REPLACE /* @min:%2ereplace */](rLeadingNumeric, function (_all, match) {\r\n return \"_\" + match;\r\n });\r\n }\r\n return value;\r\n}\r\n/**\r\n * This is a helper function for the equivalent of arForEach(objKeys(target), callbackFn), this is a\r\n * performance optimization to avoid the creation of a new array for large objects\r\n * @param target The target object to find and process the keys\r\n * @param callbackfn The function to call with the details\r\n */\r\nexport function objForEachKey(target, callbackfn) {\r\n if (target) {\r\n for (var prop in target) {\r\n if (ObjHasOwnProperty[_DYN_CALL /* @min:%2ecall */](target, prop)) {\r\n callbackfn[_DYN_CALL /* @min:%2ecall */](target, prop, target[prop]);\r\n }\r\n }\r\n }\r\n}\r\n/**\r\n * The strEndsWith() method determines whether a string ends with the characters of a specified string, returning true or false as appropriate.\r\n * @param value - The value to check whether it ends with the search value.\r\n * @param search - The characters to be searched for at the end of the value.\r\n * @returns true if the given search value is found at the end of the string, otherwise false.\r\n */\r\nexport function strEndsWith(value, search) {\r\n var result = false;\r\n if (value && search && !(result = value === search)) {\r\n // For Performance try and use the native instance, using string lookup of the function to easily pass the ES3 build checks and minification\r\n result = _strEndsWith ? value[cStrEndsWith](search) : _strEndsWithPoly(value, search);\r\n }\r\n return result;\r\n}\r\n/**\r\n * The _strEndsWith() method determines whether a string ends with the characters of a specified string, returning true or false as appropriate.\r\n * @param value - The value to check whether it ends with the search value.\r\n * @param search - The characters to be searched for at the end of the value.\r\n * @returns true if the given search value is found at the end of the string, otherwise false.\r\n */\r\nexport function _strEndsWithPoly(value, search) {\r\n var result = false;\r\n var searchLen = search ? search[_DYN_LENGTH /* @min:%2elength */] : 0;\r\n var valLen = value ? value[_DYN_LENGTH /* @min:%2elength */] : 0;\r\n if (searchLen && valLen && valLen >= searchLen && !(result = value === search)) {\r\n var pos = valLen - 1;\r\n for (var lp = searchLen - 1; lp >= 0; lp--) {\r\n if (value[pos] != search[lp]) {\r\n return false;\r\n }\r\n pos--;\r\n }\r\n result = true;\r\n }\r\n return result;\r\n}\r\n/**\r\n * The strStartsWith() method determines whether a string starts with the characters of the specified string, returning true or false as appropriate.\r\n * @param value - The value to check whether it ends with the search value.\r\n * @param checkValue - The characters to be searched for at the start of the value.\r\n * @returns true if the given search value is found at the start of the string, otherwise false.\r\n */\r\nexport function strStartsWith(value, checkValue) {\r\n var result = false;\r\n if (value && checkValue && !(result = value === checkValue)) {\r\n // For Performance try and use the native instance, using string lookup of the function to easily pass the ES3 build checks and minification\r\n result = _strStartsWith ? value[cStrStartsWith](checkValue) : _strStartsWithPoly(value, checkValue);\r\n }\r\n return result;\r\n}\r\n/**\r\n * The strStartsWith() method determines whether a string starts with the characters of the specified string, returning true or false as appropriate.\r\n * @param value - The value to check whether it ends with the search value.\r\n * @param checkValue - The characters to be searched for at the start of the value.\r\n * @returns true if the given search value is found at the start of the string, otherwise false.\r\n */\r\nexport function _strStartsWithPoly(value, checkValue) {\r\n // Using helper for performance and because string startsWith() is not available on IE\r\n var result = false;\r\n var chkLen = checkValue ? checkValue[_DYN_LENGTH /* @min:%2elength */] : 0;\r\n if (value && chkLen && value[_DYN_LENGTH /* @min:%2elength */] >= chkLen && !(result = value === checkValue)) {\r\n for (var lp = 0; lp < chkLen; lp++) {\r\n if (value[lp] !== checkValue[lp]) {\r\n return false;\r\n }\r\n }\r\n result = true;\r\n }\r\n return result;\r\n}\r\n/**\r\n * A simple wrapper (for minification support) to check if the value contains the search string.\r\n * @param value - The string value to check for the existence of the search value\r\n * @param search - The value search within the value\r\n */\r\nexport function strContains(value, search) {\r\n if (value && search) {\r\n return value[_DYN_INDEX_OF /* @min:%2eindexOf */](search) !== -1;\r\n }\r\n return false;\r\n}\r\n/**\r\n * Check if an object is of type Date\r\n */\r\nexport function isDate(obj) {\r\n return !!(obj && _objToString[_DYN_CALL /* @min:%2ecall */](obj) === \"[object Date]\");\r\n}\r\n/**\r\n * Check if an object is of type Array with optional generic T, the generic type is not validated\r\n * and exists to help with TypeScript validation only.\r\n */\r\nexport var isArray = _isArray || _isArrayPoly;\r\nfunction _isArrayPoly(obj) {\r\n return !!(obj && _objToString[_DYN_CALL /* @min:%2ecall */](obj) === \"[object Array]\");\r\n}\r\n/**\r\n * Check if an object is of type Error\r\n */\r\nexport function isError(obj) {\r\n return !!(obj && _objToString[_DYN_CALL /* @min:%2ecall */](obj) === \"[object Error]\");\r\n}\r\n/**\r\n * Checks if the type of value is a string.\r\n * @param {any} value - Value to be checked.\r\n * @return {boolean} True if the value is a string, false otherwise.\r\n */\r\nexport function isString(value) {\r\n // Changing to inline for performance\r\n return typeof value === \"string\";\r\n}\r\n/**\r\n * Checks if the type of value is a number.\r\n * @param {any} value - Value to be checked.\r\n * @return {boolean} True if the value is a number, false otherwise.\r\n */\r\nexport function isNumber(value) {\r\n // Changing to inline for performance\r\n return typeof value === \"number\";\r\n}\r\n/**\r\n * Checks if the type of value is a boolean.\r\n * @param {any} value - Value to be checked.\r\n * @return {boolean} True if the value is a boolean, false otherwise.\r\n */\r\nexport function isBoolean(value) {\r\n // Changing to inline for performance\r\n return typeof value === \"boolean\";\r\n}\r\n/**\r\n * Checks if the type of value is a Symbol.\r\n * This only returns a boolean as returning value is Symbol will cause issues for older TypeScript consumers\r\n * @param {any} value - Value to be checked.\r\n * @return {boolean} True if the value is a Symbol, false otherwise.\r\n */\r\nexport function isSymbol(value) {\r\n return typeof value === \"symbol\";\r\n}\r\n/**\r\n * Checks if the type of the value is a normal plain object (not a null or data)\r\n * @param value\r\n */\r\nexport function isPlainObject(value) {\r\n var result = false;\r\n if (value && typeof value === \"object\") {\r\n // Inlining _objGetPrototypeOf for performance to avoid an additional function call\r\n var proto = _objGetPrototypeOf ? _objGetPrototypeOf(value) : _getObjProto(value);\r\n if (!proto) {\r\n // No prototype found so this is a plain Object eg. 'Object.create(null)'\r\n result = true;\r\n }\r\n else {\r\n // Objects that have a prototype are plain only if they were created using the Object global (native) function\r\n if (proto[strConstructor] && ObjHasOwnProperty[_DYN_CALL /* @min:%2ecall */](proto, strConstructor)) {\r\n proto = proto[strConstructor];\r\n }\r\n result = typeof proto === strShimFunction && _fnToString[_DYN_CALL /* @min:%2ecall */](proto) === _objFunctionString;\r\n }\r\n }\r\n return result;\r\n}\r\n/**\r\n * Convert a date to I.S.O. format in IE8\r\n */\r\nexport function toISOString(date) {\r\n if (date) {\r\n // For Performance try and use the native instance, using string lookup of the function to easily pass the ES3 build checks and minification\r\n return _dataToISOString ? date[strToISOString]() : _toISOStringPoly(date);\r\n }\r\n}\r\n/**\r\n * Convert a date to I.S.O. format in IE8\r\n */\r\nexport function _toISOStringPoly(date) {\r\n if (date && date.getUTCFullYear) {\r\n var pad = function (num) {\r\n var r = String(num);\r\n if (r[_DYN_LENGTH /* @min:%2elength */] === 1) {\r\n r = \"0\" + r;\r\n }\r\n return r;\r\n };\r\n return date.getUTCFullYear()\r\n + \"-\" + pad(date.getUTCMonth() + 1)\r\n + \"-\" + pad(date.getUTCDate())\r\n + \"T\" + pad(date.getUTCHours())\r\n + \":\" + pad(date.getUTCMinutes())\r\n + \":\" + pad(date.getUTCSeconds())\r\n + \".\" + String((date.getUTCMilliseconds() / 1000).toFixed(3)).slice(2, 5)\r\n + \"Z\";\r\n }\r\n}\r\n/**\r\n * Performs the specified action for each element in an array. This helper exists to avoid adding a polyfil for older browsers\r\n * that do not define Array.prototype.xxxx (eg. ES3 only, IE8) just in case any page checks for presence/absence of the prototype\r\n * implementation. Note: For consistency this will not use the Array.prototype.xxxx implementation if it exists as this would\r\n * cause a testing requirement to test with and without the implementations\r\n * @param callbackfn A function that accepts up to three arguments. forEach calls the callbackfn function one time for each element in the array. It can return -1 to break out of the loop\r\n * @param thisArg [Optional] An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.\r\n */\r\nexport function arrForEach(arr, callbackfn, thisArg) {\r\n var len = arr[_DYN_LENGTH /* @min:%2elength */];\r\n try {\r\n for (var idx = 0; idx < len; idx++) {\r\n if (idx in arr) {\r\n if (callbackfn[_DYN_CALL /* @min:%2ecall */](thisArg || arr, arr[idx], idx, arr) === -1) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // This can happen with some native browser objects, but should not happen for the type we are checking for\r\n }\r\n}\r\n/**\r\n * Returns the index of the first occurrence of a value in an array. This helper exists to avoid adding a polyfil for older browsers\r\n * that do not define Array.prototype.xxxx (eg. ES3 only, IE8) just in case any page checks for presence/absence of the prototype\r\n * implementation. Note: For consistency this will not use the Array.prototype.xxxx implementation if it exists as this would\r\n * cause a testing requirement to test with and without the implementations\r\n * @param searchElement The value to locate in the array.\r\n * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the search starts at index 0.\r\n */\r\nexport function arrIndexOf(arr, searchElement, fromIndex) {\r\n if (arr) {\r\n // For Performance try and use the native instance, using string lookup of the function to easily pass the ES3 build checks and minification\r\n if (arr[strIndexOf]) {\r\n return arr[strIndexOf](searchElement, fromIndex);\r\n }\r\n var len = arr[_DYN_LENGTH /* @min:%2elength */];\r\n var from = fromIndex || 0;\r\n try {\r\n for (var lp = Math.max(from >= 0 ? from : len - Math.abs(from), 0); lp < len; lp++) {\r\n if (lp in arr && arr[lp] === searchElement) {\r\n return lp;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // This can happen with some native browser objects, but should not happen for the type we are checking for\r\n }\r\n }\r\n return -1;\r\n}\r\n/**\r\n * Calls a defined callback function on each element of an array, and returns an array that contains the results. This helper exists\r\n * to avoid adding a polyfil for older browsers that do not define Array.prototype.xxxx (eg. ES3 only, IE8) just in case any page\r\n * checks for presence/absence of the prototype implementation. Note: For consistency this will not use the Array.prototype.xxxx\r\n * implementation if it exists as this would cause a testing requirement to test with and without the implementations\r\n * @param callbackfn A function that accepts up to three arguments. The map method calls the callbackfn function one time for each element in the array.\r\n * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.\r\n */\r\nexport function arrMap(arr, callbackfn, thisArg) {\r\n var results;\r\n if (arr) {\r\n // For Performance try and use the native instance, using string lookup of the function to easily pass the ES3 build checks and minification\r\n if (arr[strMap]) {\r\n return arr[strMap](callbackfn, thisArg);\r\n }\r\n var len = arr[_DYN_LENGTH /* @min:%2elength */];\r\n var _this = thisArg || arr;\r\n results = new Array(len);\r\n try {\r\n for (var lp = 0; lp < len; lp++) {\r\n if (lp in arr) {\r\n results[lp] = callbackfn[_DYN_CALL /* @min:%2ecall */](_this, arr[lp], arr);\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // This can happen with some native browser objects, but should not happen for the type we are checking for\r\n }\r\n }\r\n return results;\r\n}\r\n/**\r\n * Calls the specified callback function for all the elements in an array. The return value of the callback function is the accumulated result, and is\r\n * provided as an argument in the next call to the callback function. This helper exists to avoid adding a polyfil for older browsers that do not define\r\n * Array.prototype.xxxx (eg. ES3 only, IE8) just in case any page checks for presence/absence of the prototype implementation. Note: For consistency\r\n * this will not use the Array.prototype.xxxx implementation if it exists as this would cause a testing requirement to test with and without the implementations\r\n * @param callbackfn A function that accepts up to four arguments. The reduce method calls the callbackfn function one time for each element in the array.\r\n * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value.\r\n */\r\nexport function arrReduce(arr, callbackfn, initialValue) {\r\n var value;\r\n if (arr) {\r\n // For Performance try and use the native instance, using string lookup of the function to easily pass the ES3 build checks and minification\r\n if (arr[strReduce]) {\r\n return arr[strReduce](callbackfn, initialValue);\r\n }\r\n var len = arr[_DYN_LENGTH /* @min:%2elength */];\r\n var lp = 0;\r\n // Specifically checking the number of passed arguments as the value could be anything\r\n if (arguments[_DYN_LENGTH /* @min:%2elength */] >= 3) {\r\n value = arguments[2];\r\n }\r\n else {\r\n while (lp < len && !(lp in arr)) {\r\n lp++;\r\n }\r\n value = arr[lp++];\r\n }\r\n while (lp < len) {\r\n if (lp in arr) {\r\n value = callbackfn(value, arr[lp], lp, arr);\r\n }\r\n lp++;\r\n }\r\n }\r\n return value;\r\n}\r\n/**\r\n * helper method to trim strings (IE8 does not implement String.prototype.trim)\r\n */\r\nexport function strTrim(str) {\r\n if (str) {\r\n // For Performance try and use the native instance, using string lookup of the function to easily pass the ES3 build checks and minification\r\n str = (_strTrim && str[cStrTrim]) ? str[cStrTrim]() : (str[_DYN_REPLACE /* @min:%2ereplace */] ? str[_DYN_REPLACE /* @min:%2ereplace */](/^\\s+|(?=\\s)\\s+$/g, STR_EMPTY) : str);\r\n }\r\n return str;\r\n}\r\nvar _objKeysHasDontEnumBug = !({ toString: null }).propertyIsEnumerable(\"toString\");\r\nvar _objKeysDontEnums = [\r\n \"toString\",\r\n \"toLocaleString\",\r\n \"valueOf\",\r\n \"hasOwnProperty\",\r\n \"isPrototypeOf\",\r\n \"propertyIsEnumerable\",\r\n \"constructor\"\r\n];\r\n/**\r\n * Returns the names of the enumerable string properties and methods of an object. This helper exists to avoid adding a polyfil for older browsers\r\n * that do not define Object.keys eg. ES3 only, IE8 just in case any page checks for presence/absence of the prototype implementation.\r\n * Note: For consistency this will not use the Object.keys implementation if it exists as this would cause a testing requirement to test with and without the implementations\r\n * @param obj Object that contains the properties and methods. This can be an object that you created or an existing Document Object Model (DOM) object.\r\n */\r\nexport function objKeys(obj) {\r\n var objType = typeof obj;\r\n if (objType !== strShimFunction && (objType !== strShimObject || obj === null)) {\r\n throwTypeError(\"objKeys called on non-object\");\r\n }\r\n // For Performance try and use the native instance, using string lookup of the function to easily pass the ES3 build checks and minification\r\n if (!_objKeysHasDontEnumBug && _objKeys) {\r\n return _objKeys(obj);\r\n }\r\n var result = [];\r\n for (var prop in obj) {\r\n if (obj && ObjHasOwnProperty[_DYN_CALL /* @min:%2ecall */](obj, prop)) {\r\n result[_DYN_PUSH /* @min:%2epush */](prop);\r\n }\r\n }\r\n if (_objKeysHasDontEnumBug) {\r\n var dontEnumsLength = _objKeysDontEnums[_DYN_LENGTH /* @min:%2elength */];\r\n for (var lp = 0; lp < dontEnumsLength; lp++) {\r\n if (obj && ObjHasOwnProperty[_DYN_CALL /* @min:%2ecall */](obj, _objKeysDontEnums[lp])) {\r\n result[_DYN_PUSH /* @min:%2epush */](_objKeysDontEnums[lp]);\r\n }\r\n }\r\n }\r\n return result;\r\n}\r\n/**\r\n * Try to define get/set object property accessors for the target object/prototype, this will provide compatibility with\r\n * existing API definition when run within an ES5+ container that supports accessors but still enable the code to be loaded\r\n * and executed in an ES3 container, providing basic IE8 compatibility.\r\n * @param target The object on which to define the property.\r\n * @param prop The name of the property to be defined or modified.\r\n * @param getProp The getter function to wire against the getter.\r\n * @param setProp The setter function to wire against the setter.\r\n * @returns True if it was able to create the accessors otherwise false\r\n */\r\nexport function objDefineAccessors(target, prop, getProp, setProp) {\r\n if (_objDefineProperty) {\r\n try {\r\n var descriptor = {\r\n enumerable: true,\r\n configurable: true\r\n };\r\n if (getProp) {\r\n descriptor.get = getProp;\r\n }\r\n if (setProp) {\r\n descriptor.set = setProp;\r\n }\r\n _objDefineProperty(target, prop, descriptor);\r\n return true;\r\n }\r\n catch (e) {\r\n // IE8 Defines a defineProperty on Object but it's only supported for DOM elements so it will throw\r\n // We will just ignore this here.\r\n }\r\n }\r\n return false;\r\n}\r\nfunction _doNothing(value) {\r\n return value;\r\n}\r\nexport function deepFreeze(obj) {\r\n if (_objFreeze) {\r\n objForEachKey(obj, function (name, value) {\r\n if (isArray(value) || isObject(value)) {\r\n _objFreeze(value);\r\n }\r\n });\r\n }\r\n return objFreeze(obj);\r\n}\r\nexport var objFreeze = _objFreeze || _doNothing;\r\nexport var objSeal = _objSeal || _doNothing;\r\n/**\r\n * Return the current time via the Date now() function (if available) and falls back to (new Date()).getTime() if now() is unavailable (IE8 or less)\r\n * https://caniuse.com/#search=Date.now\r\n */\r\nexport function dateNow() {\r\n var dt = Date;\r\n return dt.now ? dt.now() : new dt().getTime();\r\n}\r\n/**\r\n * Returns the name of object if it's an Error. Otherwise, returns empty string.\r\n */\r\nexport function getExceptionName(object) {\r\n if (isError(object)) {\r\n return object[_DYN_NAME /* @min:%2ename */];\r\n }\r\n return STR_EMPTY;\r\n}\r\n/**\r\n * Sets the provided value on the target instance using the field name when the provided chk function returns true, the chk\r\n * function will only be called if the new value is no equal to the original value.\r\n * @param target - The target object\r\n * @param field - The key of the target\r\n * @param value - The value to set\r\n * @param valChk - [Optional] Callback to check the value that if supplied will be called check if the new value can be set\r\n * @param srcChk - [Optional] Callback to check to original value that if supplied will be called if the new value should be set (if allowed)\r\n * @returns The existing or new value, depending what was set\r\n */\r\nexport function setValue(target, field, value, valChk, srcChk) {\r\n var theValue = value;\r\n if (target) {\r\n theValue = target[field];\r\n if (theValue !== value && (!srcChk || srcChk(theValue)) && (!valChk || valChk(value))) {\r\n theValue = value;\r\n target[field] = theValue;\r\n }\r\n }\r\n return theValue;\r\n}\r\n/**\r\n * Returns the current value from the target object if not null or undefined otherwise sets the new value and returns it\r\n * @param target - The target object to return or set the default value\r\n * @param field - The key for the field to set on the target\r\n * @param defValue - [Optional] The value to set if not already present, when not provided a empty object will be added\r\n */\r\nexport function getSetValue(target, field, defValue) {\r\n var theValue;\r\n if (target) {\r\n theValue = target[field];\r\n if (!theValue && isNullOrUndefined(theValue)) {\r\n // Supports having the default as null\r\n theValue = !isUndefined(defValue) ? defValue : {};\r\n target[field] = theValue;\r\n }\r\n }\r\n else {\r\n // Expanded for performance so we only check defValue if required\r\n theValue = !isUndefined(defValue) ? defValue : {};\r\n }\r\n return theValue;\r\n}\r\n/**\r\n * Get the mapped config value, if null or undefined any supplied defaultValue will be returned.\r\n * @param field - The name of the field as the named enum value (number) or the string name.\r\n * @param defaultValue - The default value to return if the config field is not present, null or undefined.\r\n */\r\nexport function getCfgValue(theValue, defaultValue) {\r\n return !isNullOrUndefined(theValue) ? theValue : defaultValue;\r\n}\r\nexport function isNotTruthy(value) {\r\n return !value;\r\n}\r\nexport function isTruthy(value) {\r\n return !!value;\r\n}\r\nexport function throwError(message) {\r\n throw new Error(message);\r\n}\r\nfunction _createProxyFunction(source, funcName) {\r\n var srcFunc = null;\r\n var src = null;\r\n if (isFunction(source)) {\r\n srcFunc = source;\r\n }\r\n else {\r\n src = source;\r\n }\r\n return function () {\r\n // Capture the original arguments passed to the method\r\n var originalArguments = arguments;\r\n if (srcFunc) {\r\n src = srcFunc();\r\n }\r\n if (src) {\r\n return src[funcName][_DYN_APPLY /* @min:%2eapply */](src, originalArguments);\r\n }\r\n };\r\n}\r\n/**\r\n * Effectively assigns all enumerable properties (not just own properties) and functions (including inherited prototype) from\r\n * the source object to the target, it attempts to use proxy getters / setters (if possible) and proxy functions to avoid potential\r\n * implementation issues by assigning prototype functions as instance ones\r\n *\r\n * This method is the primary method used to \"update\" the snippet proxy with the ultimate implementations.\r\n *\r\n * Special ES3 Notes:\r\n * Updates (setting) of direct property values on the target or indirectly on the source object WILL NOT WORK PROPERLY, updates to the\r\n * properties of \"referenced\" object will work (target.context.newValue = 10 => will be reflected in the source.context as it's the\r\n * same object). ES3 Failures: assigning target.myProp = 3 -> Won't change source.myProp = 3, likewise the reverse would also fail.\r\n * @param target - The target object to be assigned with the source properties and functions\r\n * @param source - The source object which will be assigned / called by setting / calling the targets proxies\r\n * @param chkSet - An optional callback to determine whether a specific property/function should be proxied\r\n */\r\nexport function proxyAssign(target, source, chkSet) {\r\n if (target && source && isObject(target) && isObject(source)) {\r\n var _loop_1 = function (field) {\r\n if (isString(field)) {\r\n var value = source[field];\r\n if (isFunction(value)) {\r\n if (!chkSet || chkSet(field, true, source, target)) {\r\n // Create a proxy function rather than just copying the (possible) prototype to the new object as an instance function\r\n target[field] = _createProxyFunction(source, field);\r\n }\r\n }\r\n else if (!chkSet || chkSet(field, false, source, target)) {\r\n if (hasOwnProperty(target, field)) {\r\n // Remove any previous instance property\r\n delete target[field];\r\n }\r\n if (!objDefineAccessors(target, field, function () {\r\n return source[field];\r\n }, function (theValue) {\r\n source[field] = theValue;\r\n })) {\r\n // Unable to create an accessor, so just assign the values as a fallback\r\n // -- this will (mostly) work for objects\r\n // -- but will fail for accessing primitives (if the source changes it) and all types of \"setters\" as the source won't be modified\r\n target[field] = value;\r\n }\r\n }\r\n }\r\n };\r\n // effectively apply/proxy full source to the target instance\r\n for (var field in source) {\r\n _loop_1(field);\r\n }\r\n }\r\n return target;\r\n}\r\n/**\r\n * Creates a proxy function on the target which internally will call the source version with all arguments passed to the target method.\r\n *\r\n * @param target - The target object to be assigned with the source properties and functions\r\n * @param name - The function name that will be added on the target\r\n * @param source - The source object which will be assigned / called by setting / calling the targets proxies\r\n * @param theFunc - The function name on the source that will be proxied on the target\r\n * @param overwriteTarget - If `false` this will not replace any pre-existing name otherwise (the default) it will overwrite any existing name\r\n */\r\nexport function proxyFunctionAs(target, name, source, theFunc, overwriteTarget) {\r\n if (target && name && source) {\r\n if (overwriteTarget !== false || isUndefined(target[name])) {\r\n target[name] = _createProxyFunction(source, theFunc);\r\n }\r\n }\r\n}\r\n/**\r\n * Creates proxy functions on the target which internally will call the source version with all arguments passed to the target method.\r\n *\r\n * @param target - The target object to be assigned with the source properties and functions\r\n * @param source - The source object which will be assigned / called by setting / calling the targets proxies\r\n * @param functionsToProxy - An array of function names that will be proxied on the target\r\n * @param overwriteTarget - If false this will not replace any pre-existing name otherwise (the default) it will overwrite any existing name\r\n */\r\nexport function proxyFunctions(target, source, functionsToProxy, overwriteTarget) {\r\n if (target && source && isObject(target) && isArray(functionsToProxy)) {\r\n arrForEach(functionsToProxy, function (theFuncName) {\r\n if (isString(theFuncName)) {\r\n proxyFunctionAs(target, theFuncName, source, theFuncName, overwriteTarget);\r\n }\r\n });\r\n }\r\n return target;\r\n}\r\n/**\r\n * Simpler helper to create a dynamic class that implements the interface and populates the values with the defaults.\r\n * Only instance properties (hasOwnProperty) values are copied from the defaults to the new instance\r\n * @param defaults Simple helper\r\n */\r\nexport function createClassFromInterface(defaults) {\r\n return /** @class */ (function () {\r\n function class_1() {\r\n var _this_1 = this;\r\n if (defaults) {\r\n objForEachKey(defaults, function (field, value) {\r\n _this_1[field] = value;\r\n });\r\n }\r\n }\r\n return class_1;\r\n }());\r\n}\r\n/**\r\n * A helper function to assist with JIT performance for objects that have properties added / removed dynamically\r\n * this is primarily for chromium based browsers and has limited effects on Firefox and none of IE. Only call this\r\n * function after you have finished \"updating\" the object, calling this within loops reduces or defeats the benefits.\r\n * This helps when iterating using for..in, objKeys() and objForEach()\r\n * @param theObject - The object to be optimized if possible\r\n */\r\nexport function optimizeObject(theObject) {\r\n // V8 Optimization to cause the JIT compiler to create a new optimized object for looking up the own properties\r\n // primarily for object with <= 19 properties for >= 20 the effect is reduced or non-existent\r\n if (theObject && ObjAssign) {\r\n theObject = ObjClass(ObjAssign({}, theObject));\r\n }\r\n return theObject;\r\n}\r\nexport function objExtend(obj1, obj2, obj3, obj4, obj5, obj6) {\r\n // Variables\r\n var theArgs = arguments;\r\n var extended = theArgs[0] || {};\r\n var argLen = theArgs[_DYN_LENGTH /* @min:%2elength */];\r\n var deep = false;\r\n var idx = 1;\r\n // Check for \"Deep\" flag\r\n if (argLen > 0 && isBoolean(extended)) {\r\n deep = extended;\r\n extended = theArgs[idx] || {};\r\n idx++;\r\n }\r\n // Handle case when target is a string or something (possible in deep copy)\r\n if (!isObject(extended)) {\r\n extended = {};\r\n }\r\n // Loop through each remaining object and conduct a merge\r\n for (; idx < argLen; idx++) {\r\n var arg = theArgs[idx];\r\n var isArgArray = isArray(arg);\r\n var isArgObj = isObject(arg);\r\n for (var prop in arg) {\r\n var propOk = (isArgArray && (prop in arg)) || (isArgObj && (ObjHasOwnProperty[_DYN_CALL /* @min:%2ecall */](arg, prop)));\r\n if (!propOk) {\r\n continue;\r\n }\r\n var newValue = arg[prop];\r\n var isNewArray = void 0;\r\n // If deep merge and property is an object, merge properties\r\n if (deep && newValue && ((isNewArray = isArray(newValue)) || isPlainObject(newValue))) {\r\n // Grab the current value of the extended object\r\n var clone = extended[prop];\r\n if (isNewArray) {\r\n if (!isArray(clone)) {\r\n // We can't \"merge\" an array with a non-array so overwrite the original\r\n clone = [];\r\n }\r\n }\r\n else if (!isPlainObject(clone)) {\r\n // We can't \"merge\" an object with a non-object\r\n clone = {};\r\n }\r\n // Never move the original objects always clone them\r\n newValue = objExtend(deep, clone, newValue);\r\n }\r\n // Assign the new (or previous) value (unless undefined)\r\n if (newValue !== undefined) {\r\n extended[prop] = newValue;\r\n }\r\n }\r\n }\r\n return extended;\r\n}\r\n","/*!\n * Microsoft Dynamic Proto Utility, 1.1.7\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nvar _a;\r\nvar UNDEFINED = \"undefined\";\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar Constructor = 'constructor';\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar Prototype = 'prototype';\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar strFunction = 'function';\r\n/**\r\n * Used to define the name of the instance function lookup table\r\n * @ignore\r\n */\r\nvar DynInstFuncTable = '_dynInstFuncs';\r\n/**\r\n * Name used to tag the dynamic prototype function\r\n * @ignore\r\n */\r\nvar DynProxyTag = '_isDynProxy';\r\n/**\r\n * Name added to a prototype to define the dynamic prototype \"class\" name used to lookup the function table\r\n * @ignore\r\n */\r\nvar DynClassName = '_dynClass';\r\n/**\r\n * Prefix added to the classname to avoid any name clashes with other instance level properties\r\n * @ignore\r\n */\r\nvar DynClassNamePrefix = '_dynCls$';\r\n/**\r\n * A tag which is used to check if we have already to attempted to set the instance function if one is not present\r\n * @ignore\r\n */\r\nvar DynInstChkTag = '_dynInstChk';\r\n/**\r\n * A tag which is used to check if we are allows to try and set an instance function is one is not present. Using the same\r\n * tag name as the function level but a different const name for readability only.\r\n */\r\nvar DynAllowInstChkTag = DynInstChkTag;\r\n/**\r\n * The global (imported) instances where the global performance options are stored\r\n */\r\nvar DynProtoDefaultOptions = '_dfOpts';\r\n/**\r\n * Value used as the name of a class when it cannot be determined\r\n * @ignore\r\n */\r\nvar UnknownValue = '_unknown_';\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar str__Proto = \"__proto__\";\r\n/**\r\n * The polyfill version of __proto__ so that it doesn't cause issues for anyone not expecting it to exist\r\n */\r\nvar DynProtoBaseProto = \"_dyn\" + str__Proto;\r\n/**\r\n * Runtime Global holder for dynamicProto settings\r\n */\r\nvar DynProtoGlobalSettings = \"__dynProto$Gbl\";\r\n/**\r\n * Track the current prototype for IE8 as you can't look back to get the prototype\r\n */\r\nvar DynProtoCurrent = \"_dynInstProto\";\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar strUseBaseInst = 'useBaseInst';\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar strSetInstFuncs = 'setInstFuncs';\r\nvar Obj = Object;\r\n/**\r\n * Pre-lookup to check if we are running on a modern browser (i.e. not IE8)\r\n * @ignore\r\n */\r\nvar _objGetPrototypeOf = Obj[\"getPrototypeOf\"];\r\n/**\r\n * Pre-lookup to check for the existence of this function\r\n */\r\nvar _objGetOwnProps = Obj[\"getOwnPropertyNames\"];\r\n/**\r\n * Gets the runtime global reference\r\n * @returns\r\n */\r\nfunction _getGlobal() {\r\n var result;\r\n if (typeof globalThis !== UNDEFINED) {\r\n result = globalThis;\r\n }\r\n if (!result && typeof self !== UNDEFINED) {\r\n result = self;\r\n }\r\n if (!result && typeof window !== UNDEFINED) {\r\n result = window;\r\n }\r\n if (!result && typeof global !== UNDEFINED) {\r\n result = global;\r\n }\r\n return result || {};\r\n}\r\n// Since 1.1.7 moving these to the runtime global to work around mixed version and module issues\r\n// See Issue https://github.com/microsoft/DynamicProto-JS/issues/57 for details\r\nvar _gbl = _getGlobal();\r\nvar _gblInst = _gbl[DynProtoGlobalSettings] || (_gbl[DynProtoGlobalSettings] = {\r\n o: (_a = {},\r\n _a[strSetInstFuncs] = true,\r\n _a[strUseBaseInst] = true,\r\n _a),\r\n n: 1000 // Start new global index @ 1000 so we \"fix\" some cases when mixed with 1.1.6 or earlier\r\n});\r\n/**\r\n * Helper to check if the object contains a property of the name\r\n * @ignore\r\n */\r\nfunction _hasOwnProperty(obj, prop) {\r\n return obj && Obj[Prototype].hasOwnProperty.call(obj, prop);\r\n}\r\n/**\r\n * Helper used to check whether the target is an Object prototype or Array prototype\r\n * @ignore\r\n */\r\nfunction _isObjectOrArrayPrototype(target) {\r\n return target && (target === Obj[Prototype] || target === Array[Prototype]);\r\n}\r\n/**\r\n * Helper used to check whether the target is an Object prototype, Array prototype or Function prototype\r\n * @ignore\r\n */\r\nfunction _isObjectArrayOrFunctionPrototype(target) {\r\n return _isObjectOrArrayPrototype(target) || target === Function[Prototype];\r\n}\r\n/**\r\n * Helper used to get the prototype of the target object as getPrototypeOf is not available in an ES3 environment.\r\n * @ignore\r\n */\r\nfunction _getObjProto(target) {\r\n var newProto;\r\n if (target) {\r\n // This method doesn't exist in older browsers (e.g. IE8)\r\n if (_objGetPrototypeOf) {\r\n return _objGetPrototypeOf(target);\r\n }\r\n var curProto = target[str__Proto] || target[Prototype] || (target[Constructor] ? target[Constructor][Prototype] : null);\r\n // Using the pre-calculated value as IE8 doesn't support looking up the prototype of a prototype and thus fails for more than 1 base class\r\n newProto = target[DynProtoBaseProto] || curProto;\r\n if (!_hasOwnProperty(target, DynProtoBaseProto)) {\r\n // As this prototype doesn't have this property then this is from an inherited class so newProto is the base to return so save it\r\n // so we can look it up value (which for a multiple hierarchy dynamicProto will be the base class)\r\n delete target[DynProtoCurrent]; // Delete any current value allocated to this instance so we pick up the value from prototype hierarchy\r\n newProto = target[DynProtoBaseProto] = target[DynProtoCurrent] || target[DynProtoBaseProto];\r\n target[DynProtoCurrent] = curProto;\r\n }\r\n }\r\n return newProto;\r\n}\r\n/**\r\n * Helper to get the properties of an object, including none enumerable ones as functions on a prototype in ES6\r\n * are not enumerable.\r\n * @param target\r\n */\r\nfunction _forEachProp(target, func) {\r\n var props = [];\r\n if (_objGetOwnProps) {\r\n props = _objGetOwnProps(target);\r\n }\r\n else {\r\n for (var name_1 in target) {\r\n if (typeof name_1 === \"string\" && _hasOwnProperty(target, name_1)) {\r\n props.push(name_1);\r\n }\r\n }\r\n }\r\n if (props && props.length > 0) {\r\n for (var lp = 0; lp < props.length; lp++) {\r\n func(props[lp]);\r\n }\r\n }\r\n}\r\n/**\r\n * Helper function to check whether the provided function name is a potential candidate for dynamic\r\n * callback and prototype generation.\r\n * @param target The target object, may be a prototype or class object\r\n * @param funcName The function name\r\n * @param skipOwn Skips the check for own property\r\n * @ignore\r\n */\r\nfunction _isDynamicCandidate(target, funcName, skipOwn) {\r\n return (funcName !== Constructor && typeof target[funcName] === strFunction && (skipOwn || _hasOwnProperty(target, funcName)));\r\n}\r\n/**\r\n * Helper to throw a TypeError exception\r\n * @param message the message\r\n * @ignore\r\n */\r\nfunction _throwTypeError(message) {\r\n throw new TypeError(\"DynamicProto: \" + message);\r\n}\r\n/**\r\n * Returns a collection of the instance functions that are defined directly on the thisTarget object, it does\r\n * not return any inherited functions\r\n * @param thisTarget The object to get the instance functions from\r\n * @ignore\r\n */\r\nfunction _getInstanceFuncs(thisTarget) {\r\n // Get the base proto\r\n var instFuncs = {};\r\n // Save any existing instance functions\r\n _forEachProp(thisTarget, function (name) {\r\n // Don't include any dynamic prototype instances - as we only want the real functions\r\n if (!instFuncs[name] && _isDynamicCandidate(thisTarget, name, false)) {\r\n // Create an instance callback for passing the base function to the caller\r\n instFuncs[name] = thisTarget[name];\r\n }\r\n });\r\n return instFuncs;\r\n}\r\n/**\r\n * Returns whether the value is included in the array\r\n * @param values The array of values\r\n * @param value The value\r\n */\r\nfunction _hasVisited(values, value) {\r\n for (var lp = values.length - 1; lp >= 0; lp--) {\r\n if (values[lp] === value) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\n/**\r\n * Returns an object that contains callback functions for all \"base/super\" functions, this is used to \"save\"\r\n * enabling calling super.xxx() functions without requiring that the base \"class\" has defined a prototype references\r\n * @param target The current instance\r\n * @ignore\r\n */\r\nfunction _getBaseFuncs(classProto, thisTarget, instFuncs, useBaseInst) {\r\n function _instFuncProxy(target, funcHost, funcName) {\r\n var theFunc = funcHost[funcName];\r\n if (theFunc[DynProxyTag] && useBaseInst) {\r\n // grab and reuse the hosted looking function (if available) otherwise the original passed function\r\n var instFuncTable = target[DynInstFuncTable] || {};\r\n if (instFuncTable[DynAllowInstChkTag] !== false) {\r\n theFunc = (instFuncTable[funcHost[DynClassName]] || {})[funcName] || theFunc;\r\n }\r\n }\r\n return function () {\r\n // eslint-disable-next-line prefer-rest-params\r\n return theFunc.apply(target, arguments);\r\n };\r\n }\r\n // Start creating a new baseFuncs by creating proxies for the instance functions (as they may get replaced)\r\n var baseFuncs = {};\r\n _forEachProp(instFuncs, function (name) {\r\n // Create an instance callback for passing the base function to the caller\r\n baseFuncs[name] = _instFuncProxy(thisTarget, instFuncs, name);\r\n });\r\n // Get the base prototype functions\r\n var baseProto = _getObjProto(classProto);\r\n var visited = [];\r\n // Don't include base object functions for Object, Array or Function\r\n while (baseProto && !_isObjectArrayOrFunctionPrototype(baseProto) && !_hasVisited(visited, baseProto)) {\r\n // look for prototype functions\r\n _forEachProp(baseProto, function (name) {\r\n // Don't include any dynamic prototype instances - as we only want the real functions\r\n // For IE 7/8 the prototype lookup doesn't provide the full chain so we need to bypass the \r\n // hasOwnProperty check we get all of the methods, main difference is that IE7/8 doesn't return\r\n // the Object prototype methods while bypassing the check\r\n if (!baseFuncs[name] && _isDynamicCandidate(baseProto, name, !_objGetPrototypeOf)) {\r\n // Create an instance callback for passing the base function to the caller\r\n baseFuncs[name] = _instFuncProxy(thisTarget, baseProto, name);\r\n }\r\n });\r\n // We need to find all possible functions that might be overloaded by walking the entire prototype chain\r\n // This avoids the caller from needing to check whether it's direct base class implements the function or not\r\n // by walking the entire chain it simplifies the usage and issues from upgrading any of the base classes.\r\n visited.push(baseProto);\r\n baseProto = _getObjProto(baseProto);\r\n }\r\n return baseFuncs;\r\n}\r\nfunction _getInstFunc(target, funcName, proto, currentDynProtoProxy) {\r\n var instFunc = null;\r\n // We need to check whether the class name is defined directly on this prototype otherwise\r\n // it will walk the proto chain and return any parent proto classname.\r\n if (target && _hasOwnProperty(proto, DynClassName)) {\r\n var instFuncTable = target[DynInstFuncTable] || {};\r\n instFunc = (instFuncTable[proto[DynClassName]] || {})[funcName];\r\n if (!instFunc) {\r\n // Avoid stack overflow from recursive calling the same function\r\n _throwTypeError(\"Missing [\" + funcName + \"] \" + strFunction);\r\n }\r\n // We have the instance function, lets check it we can speed up further calls\r\n // by adding the instance function back directly on the instance (avoiding the dynamic func lookup)\r\n if (!instFunc[DynInstChkTag] && instFuncTable[DynAllowInstChkTag] !== false) {\r\n // If the instance already has an instance function we can't replace it\r\n var canAddInst = !_hasOwnProperty(target, funcName);\r\n // Get current prototype\r\n var objProto = _getObjProto(target);\r\n var visited = [];\r\n // Lookup the function starting at the top (instance level prototype) and traverse down, if the first matching function\r\n // if nothing is found or if the first hit is a dynamic proto instance then we can safely add an instance shortcut\r\n while (canAddInst && objProto && !_isObjectArrayOrFunctionPrototype(objProto) && !_hasVisited(visited, objProto)) {\r\n var protoFunc = objProto[funcName];\r\n if (protoFunc) {\r\n canAddInst = (protoFunc === currentDynProtoProxy);\r\n break;\r\n }\r\n // We need to find all possible initial functions to ensure that we don't bypass a valid override function\r\n visited.push(objProto);\r\n objProto = _getObjProto(objProto);\r\n }\r\n try {\r\n if (canAddInst) {\r\n // This instance doesn't have an instance func and the class hierarchy does have a higher level prototype version\r\n // so it's safe to directly assign for any subsequent calls (for better performance)\r\n target[funcName] = instFunc;\r\n }\r\n // Block further attempts to set the instance function for any\r\n instFunc[DynInstChkTag] = 1;\r\n }\r\n catch (e) {\r\n // Don't crash if the object is readonly or the runtime doesn't allow changing this\r\n // And set a flag so we don't try again for any function\r\n instFuncTable[DynAllowInstChkTag] = false;\r\n }\r\n }\r\n }\r\n return instFunc;\r\n}\r\nfunction _getProtoFunc(funcName, proto, currentDynProtoProxy) {\r\n var protoFunc = proto[funcName];\r\n // Check that the prototype function is not a self reference -- try to avoid stack overflow!\r\n if (protoFunc === currentDynProtoProxy) {\r\n // It is so lookup the base prototype\r\n protoFunc = _getObjProto(proto)[funcName];\r\n }\r\n if (typeof protoFunc !== strFunction) {\r\n _throwTypeError(\"[\" + funcName + \"] is not a \" + strFunction);\r\n }\r\n return protoFunc;\r\n}\r\n/**\r\n * Add the required dynamic prototype methods to the the class prototype\r\n * @param proto - The class prototype\r\n * @param className - The instance classname\r\n * @param target - The target instance\r\n * @param baseInstFuncs - The base instance functions\r\n * @param setInstanceFunc - Flag to allow prototype function to reset the instance function if one does not exist\r\n * @ignore\r\n */\r\nfunction _populatePrototype(proto, className, target, baseInstFuncs, setInstanceFunc) {\r\n function _createDynamicPrototype(proto, funcName) {\r\n var dynProtoProxy = function () {\r\n // Use the instance or prototype function\r\n var instFunc = _getInstFunc(this, funcName, proto, dynProtoProxy) || _getProtoFunc(funcName, proto, dynProtoProxy);\r\n // eslint-disable-next-line prefer-rest-params\r\n return instFunc.apply(this, arguments);\r\n };\r\n // Tag this function as a proxy to support replacing dynamic proxy elements (primary use case is for unit testing\r\n // via which can dynamically replace the prototype function reference)\r\n dynProtoProxy[DynProxyTag] = 1;\r\n return dynProtoProxy;\r\n }\r\n if (!_isObjectOrArrayPrototype(proto)) {\r\n var instFuncTable = target[DynInstFuncTable] = target[DynInstFuncTable] || {};\r\n var instFuncs_1 = instFuncTable[className] = (instFuncTable[className] || {}); // fetch and assign if as it may not exist yet\r\n // Set whether we are allow to lookup instances, if someone has set to false then do not re-enable\r\n if (instFuncTable[DynAllowInstChkTag] !== false) {\r\n instFuncTable[DynAllowInstChkTag] = !!setInstanceFunc;\r\n }\r\n _forEachProp(target, function (name) {\r\n // Only add overridden functions\r\n if (_isDynamicCandidate(target, name, false) && target[name] !== baseInstFuncs[name]) {\r\n // Save the instance Function to the lookup table and remove it from the instance as it's not a dynamic proto function\r\n instFuncs_1[name] = target[name];\r\n delete target[name];\r\n // Add a dynamic proto if one doesn't exist or if a prototype function exists and it's not a dynamic one\r\n if (!_hasOwnProperty(proto, name) || (proto[name] && !proto[name][DynProxyTag])) {\r\n proto[name] = _createDynamicPrototype(proto, name);\r\n }\r\n }\r\n });\r\n }\r\n}\r\n/**\r\n * Checks whether the passed prototype object appears to be correct by walking the prototype hierarchy of the instance\r\n * @param classProto The class prototype instance\r\n * @param thisTarget The current instance that will be checked whether the passed prototype instance is in the hierarchy\r\n * @ignore\r\n */\r\nfunction _checkPrototype(classProto, thisTarget) {\r\n // This method doesn't existing in older browsers (e.g. IE8)\r\n if (_objGetPrototypeOf) {\r\n // As this is primarily a coding time check, don't bother checking if running in IE8 or lower\r\n var visited = [];\r\n var thisProto = _getObjProto(thisTarget);\r\n while (thisProto && !_isObjectArrayOrFunctionPrototype(thisProto) && !_hasVisited(visited, thisProto)) {\r\n if (thisProto === classProto) {\r\n return true;\r\n }\r\n // This avoids the caller from needing to check whether it's direct base class implements the function or not\r\n // by walking the entire chain it simplifies the usage and issues from upgrading any of the base classes.\r\n visited.push(thisProto);\r\n thisProto = _getObjProto(thisProto);\r\n }\r\n return false;\r\n }\r\n // If objGetPrototypeOf doesn't exist then just assume everything is ok.\r\n return true;\r\n}\r\n/**\r\n * Gets the current prototype name using the ES6 name if available otherwise falling back to a use unknown as the name.\r\n * It's not critical for this to return a name, it's used to decorate the generated unique name for easier debugging only.\r\n * @param target\r\n * @param unknownValue\r\n * @ignore\r\n */\r\nfunction _getObjName(target, unknownValue) {\r\n if (_hasOwnProperty(target, Prototype)) {\r\n // Look like a prototype\r\n return target.name || unknownValue || UnknownValue;\r\n }\r\n return (((target || {})[Constructor]) || {}).name || unknownValue || UnknownValue;\r\n}\r\n/**\r\n * Helper function when creating dynamic (inline) functions for classes, this helper performs the following tasks :-\r\n * - Saves references to all defined base class functions\r\n * - Calls the delegateFunc with the current target (this) and a base object reference that can be used to call all \"super\" functions.\r\n * - Will populate the class prototype for all overridden functions to support class extension that call the prototype instance.\r\n * Callers should use this helper when declaring all function within the constructor of a class, as mentioned above the delegateFunc is\r\n * passed both the target \"this\" and an object that can be used to call any base (super) functions, using this based object in place of\r\n * super.XXX() (which gets expanded to _super.prototype.XXX()) provides a better minification outcome and also ensures the correct \"this\"\r\n * context is maintained as TypeScript creates incorrect references using super.XXXX() for dynamically defined functions i.e. Functions\r\n * defined in the constructor or some other function (rather than declared as complete typescript functions).\r\n * ### Usage\r\n * ```typescript\r\n * import dynamicProto from \"@microsoft/dynamicproto-js\";\r\n * class ExampleClass extends BaseClass {\r\n * constructor() {\r\n * dynamicProto(ExampleClass, this, (_self, base) => {\r\n * // This will define a function that will be converted to a prototype function\r\n * _self.newFunc = () => {\r\n * // Access any \"this\" instance property\r\n * if (_self.someProperty) {\r\n * ...\r\n * }\r\n * }\r\n * // This will define a function that will be converted to a prototype function\r\n * _self.myFunction = () => {\r\n * // Access any \"this\" instance property\r\n * if (_self.someProperty) {\r\n * // Call the base version of the function that we are overriding\r\n * base.myFunction();\r\n * }\r\n * ...\r\n * }\r\n * _self.initialize = () => {\r\n * ...\r\n * }\r\n * // Warnings: While the following will work as _self is simply a reference to\r\n * // this, if anyone overrides myFunction() the overridden will be called first\r\n * // as the normal JavaScript method resolution will occur and the defined\r\n * // _self.initialize() function is actually gets removed from the instance and\r\n * // a proxy prototype version is created to reference the created method.\r\n * _self.initialize();\r\n * });\r\n * }\r\n * }\r\n * ```\r\n * @typeparam DPType This is the generic type of the class, used to keep intellisense valid\r\n * @typeparam DPCls The type that contains the prototype of the current class\r\n * @param theClass - This is the current class instance which contains the prototype for the current class\r\n * @param target - The current \"this\" (target) reference, when the class has been extended this.prototype will not be the 'theClass' value.\r\n * @param delegateFunc - The callback function (closure) that will create the dynamic function\r\n * @param options - Additional options to configure how the dynamic prototype operates\r\n */\r\nfunction dynamicProto(theClass, target, delegateFunc, options) {\r\n // Make sure that the passed theClass argument looks correct\r\n if (!_hasOwnProperty(theClass, Prototype)) {\r\n _throwTypeError(\"theClass is an invalid class definition.\");\r\n }\r\n // Quick check to make sure that the passed theClass argument looks correct (this is a common copy/paste error)\r\n var classProto = theClass[Prototype];\r\n if (!_checkPrototype(classProto, target)) {\r\n _throwTypeError(\"[\" + _getObjName(theClass) + \"] not in hierarchy of [\" + _getObjName(target) + \"]\");\r\n }\r\n var className = null;\r\n if (_hasOwnProperty(classProto, DynClassName)) {\r\n // Only grab the class name if it's defined on this prototype (i.e. don't walk the prototype chain)\r\n className = classProto[DynClassName];\r\n }\r\n else {\r\n // As not all browser support name on the prototype creating a unique dynamic one if we have not already\r\n // assigned one, so we can use a simple string as the lookup rather than an object for the dynamic instance\r\n // function table lookup.\r\n className = DynClassNamePrefix + _getObjName(theClass, \"_\") + \"$\" + _gblInst.n;\r\n _gblInst.n++;\r\n classProto[DynClassName] = className;\r\n }\r\n var perfOptions = dynamicProto[DynProtoDefaultOptions];\r\n var useBaseInst = !!perfOptions[strUseBaseInst];\r\n if (useBaseInst && options && options[strUseBaseInst] !== undefined) {\r\n useBaseInst = !!options[strUseBaseInst];\r\n }\r\n // Get the current instance functions\r\n var instFuncs = _getInstanceFuncs(target);\r\n // Get all of the functions for any base instance (before they are potentially overridden)\r\n var baseFuncs = _getBaseFuncs(classProto, target, instFuncs, useBaseInst);\r\n // Execute the delegate passing in both the current target \"this\" and \"base\" function references\r\n // Note casting the same type as we don't actually have the base class here and this will provide some intellisense support\r\n delegateFunc(target, baseFuncs);\r\n // Don't allow setting instance functions for older IE instances\r\n var setInstanceFunc = !!_objGetPrototypeOf && !!perfOptions[strSetInstFuncs];\r\n if (setInstanceFunc && options) {\r\n setInstanceFunc = !!options[strSetInstFuncs];\r\n }\r\n // Populate the Prototype for any overridden instance functions\r\n _populatePrototype(classProto, className, target, instFuncs, setInstanceFunc !== false);\r\n}\r\n/**\r\n * Exposes the default global options to allow global configuration, if the global values are disabled these will override\r\n * any passed values. This is primarily exposed to support unit-testing without the need for individual classes to expose\r\n * their internal usage of dynamic proto.\r\n */\r\ndynamicProto[DynProtoDefaultOptions] = _gblInst.o;\n\nexport { dynamicProto as default };\n","/*\n * Application Insights JavaScript SDK - Core, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n\"use strict\";\r\nimport { getGlobal, strShimObject, strShimPrototype, strShimUndefined } from \"@microsoft/applicationinsights-shims\";\r\nimport { _DYN_CALL, _DYN_INDEX_OF, _DYN_LENGTH, _DYN_NAME, _DYN_SPLIT, _DYN_TO_LOWER_CASE, _DYN_USER_AGENT } from \"../__DynamicConstants\";\r\nimport { isString, isUndefined, strContains } from \"./HelperFuncs\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\n/**\r\n * This file exists to hold environment utilities that are required to check and\r\n * validate the current operating environment. Unless otherwise required, please\r\n * only use defined methods (functions) in this class so that users of these\r\n * functions/properties only need to include those that are used within their own modules.\r\n */\r\nvar strWindow = \"window\";\r\nvar strDocument = \"document\";\r\nvar strDocumentMode = \"documentMode\";\r\nvar strNavigator = \"navigator\";\r\nvar strHistory = \"history\";\r\nvar strLocation = \"location\";\r\nvar strConsole = \"console\";\r\nvar strPerformance = \"performance\";\r\nvar strJSON = \"JSON\";\r\nvar strCrypto = \"crypto\";\r\nvar strMsCrypto = \"msCrypto\";\r\nvar strReactNative = \"ReactNative\";\r\nvar strMsie = \"msie\";\r\nvar strTrident = \"trident/\";\r\nvar strXMLHttpRequest = \"XMLHttpRequest\";\r\nvar _isTrident = null;\r\nvar _navUserAgentCheck = null;\r\nvar _enableMocks = false;\r\nvar _useXDomainRequest = null;\r\nvar _beaconsSupported = null;\r\nfunction _hasProperty(theClass, property) {\r\n var supported = false;\r\n if (theClass) {\r\n try {\r\n supported = property in theClass;\r\n if (!supported) {\r\n var proto = theClass[strShimPrototype];\r\n if (proto) {\r\n supported = property in proto;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // Do Nothing\r\n }\r\n if (!supported) {\r\n try {\r\n var tmp = new theClass();\r\n supported = !isUndefined(tmp[property]);\r\n }\r\n catch (e) {\r\n // Do Nothing\r\n }\r\n }\r\n }\r\n return supported;\r\n}\r\n/**\r\n * Enable the lookup of test mock objects if requested\r\n * @param enabled\r\n */\r\nexport function setEnableEnvMocks(enabled) {\r\n _enableMocks = enabled;\r\n}\r\n/**\r\n * Return the named global object if available, will return null if the object is not available.\r\n * @param name The globally named object\r\n */\r\nexport function getGlobalInst(name) {\r\n var gbl = getGlobal();\r\n if (gbl && gbl[name]) {\r\n return gbl[name];\r\n }\r\n // Test workaround, for environments where .window (when global == window) doesn't return the base window\r\n if (name === strWindow && hasWindow()) {\r\n // tslint:disable-next-line: no-angle-bracket-type-assertion\r\n return window;\r\n }\r\n return null;\r\n}\r\n/**\r\n * Checks if window object is available, this is required as we support the API running without a\r\n * window /document (eg. Node server, electron webworkers) and if we attempt to assign a window\r\n * object to a local variable or pass as an argument an \"Uncaught ReferenceError: window is not defined\"\r\n * exception will be thrown.\r\n * Defined as a function to support lazy / late binding environments.\r\n */\r\nexport function hasWindow() {\r\n return Boolean(typeof window === strShimObject && window);\r\n}\r\n/**\r\n * Returns the global window object if it is present otherwise null.\r\n * This helper is used to access the window object without causing an exception\r\n * \"Uncaught ReferenceError: window is not defined\"\r\n */\r\nexport function getWindow() {\r\n if (hasWindow()) {\r\n return window;\r\n }\r\n // Return the global instance or null\r\n return getGlobalInst(strWindow);\r\n}\r\n/**\r\n * Checks if document object is available, this is required as we support the API running without a\r\n * window /document (eg. Node server, electron webworkers) and if we attempt to assign a document\r\n * object to a local variable or pass as an argument an \"Uncaught ReferenceError: document is not defined\"\r\n * exception will be thrown.\r\n * Defined as a function to support lazy / late binding environments.\r\n */\r\nexport function hasDocument() {\r\n return Boolean(typeof document === strShimObject && document);\r\n}\r\n/**\r\n * Returns the global document object if it is present otherwise null.\r\n * This helper is used to access the document object without causing an exception\r\n * \"Uncaught ReferenceError: document is not defined\"\r\n */\r\nexport function getDocument() {\r\n if (hasDocument()) {\r\n return document;\r\n }\r\n return getGlobalInst(strDocument);\r\n}\r\n/**\r\n * Checks if navigator object is available, this is required as we support the API running without a\r\n * window /document (eg. Node server, electron webworkers) and if we attempt to assign a navigator\r\n * object to a local variable or pass as an argument an \"Uncaught ReferenceError: navigator is not defined\"\r\n * exception will be thrown.\r\n * Defined as a function to support lazy / late binding environments.\r\n */\r\nexport function hasNavigator() {\r\n return Boolean(typeof navigator === strShimObject && navigator);\r\n}\r\n/**\r\n * Returns the global navigator object if it is present otherwise null.\r\n * This helper is used to access the navigator object without causing an exception\r\n * \"Uncaught ReferenceError: navigator is not defined\"\r\n */\r\nexport function getNavigator() {\r\n if (hasNavigator()) {\r\n return navigator;\r\n }\r\n return getGlobalInst(strNavigator);\r\n}\r\n/**\r\n * Checks if history object is available, this is required as we support the API running without a\r\n * window /document (eg. Node server, electron webworkers) and if we attempt to assign a history\r\n * object to a local variable or pass as an argument an \"Uncaught ReferenceError: history is not defined\"\r\n * exception will be thrown.\r\n * Defined as a function to support lazy / late binding environments.\r\n */\r\nexport function hasHistory() {\r\n return Boolean(typeof history === strShimObject && history);\r\n}\r\n/**\r\n * Returns the global history object if it is present otherwise null.\r\n * This helper is used to access the history object without causing an exception\r\n * \"Uncaught ReferenceError: history is not defined\"\r\n */\r\nexport function getHistory() {\r\n if (hasHistory()) {\r\n return history;\r\n }\r\n return getGlobalInst(strHistory);\r\n}\r\n/**\r\n * Returns the global location object if it is present otherwise null.\r\n * This helper is used to access the location object without causing an exception\r\n * \"Uncaught ReferenceError: location is not defined\"\r\n */\r\nexport function getLocation(checkForMock) {\r\n if (checkForMock && _enableMocks) {\r\n var mockLocation = getGlobalInst(\"__mockLocation\");\r\n if (mockLocation) {\r\n return mockLocation;\r\n }\r\n }\r\n if (typeof location === strShimObject && location) {\r\n return location;\r\n }\r\n return getGlobalInst(strLocation);\r\n}\r\n/**\r\n * Returns the global console object\r\n */\r\nexport function getConsole() {\r\n if (typeof console !== strShimUndefined) {\r\n return console;\r\n }\r\n return getGlobalInst(strConsole);\r\n}\r\n/**\r\n * Returns the performance object if it is present otherwise null.\r\n * This helper is used to access the performance object from the current\r\n * global instance which could be window or globalThis for a web worker\r\n */\r\nexport function getPerformance() {\r\n return getGlobalInst(strPerformance);\r\n}\r\n/**\r\n * Checks if JSON object is available, this is required as we support the API running without a\r\n * window /document (eg. Node server, electron webworkers) and if we attempt to assign a history\r\n * object to a local variable or pass as an argument an \"Uncaught ReferenceError: JSON is not defined\"\r\n * exception will be thrown.\r\n * Defined as a function to support lazy / late binding environments.\r\n */\r\nexport function hasJSON() {\r\n return Boolean((typeof JSON === strShimObject && JSON) || getGlobalInst(strJSON) !== null);\r\n}\r\n/**\r\n * Returns the global JSON object if it is present otherwise null.\r\n * This helper is used to access the JSON object without causing an exception\r\n * \"Uncaught ReferenceError: JSON is not defined\"\r\n */\r\nexport function getJSON() {\r\n if (hasJSON()) {\r\n return JSON || getGlobalInst(strJSON);\r\n }\r\n return null;\r\n}\r\n/**\r\n * Returns the crypto object if it is present otherwise null.\r\n * This helper is used to access the crypto object from the current\r\n * global instance which could be window or globalThis for a web worker\r\n */\r\nexport function getCrypto() {\r\n return getGlobalInst(strCrypto);\r\n}\r\n/**\r\n * Returns the crypto object if it is present otherwise null.\r\n * This helper is used to access the crypto object from the current\r\n * global instance which could be window or globalThis for a web worker\r\n */\r\nexport function getMsCrypto() {\r\n return getGlobalInst(strMsCrypto);\r\n}\r\n/**\r\n * Returns whether the environment is reporting that we are running in a React Native Environment\r\n */\r\nexport function isReactNative() {\r\n // If running in React Native, navigator.product will be populated\r\n var nav = getNavigator();\r\n if (nav && nav.product) {\r\n return nav.product === strReactNative;\r\n }\r\n return false;\r\n}\r\n/**\r\n * Identifies whether the current environment appears to be IE\r\n */\r\nexport function isIE() {\r\n var nav = getNavigator();\r\n if (nav && (nav[_DYN_USER_AGENT /* @min:%2euserAgent */] !== _navUserAgentCheck || _isTrident === null)) {\r\n // Added to support test mocking of the user agent\r\n _navUserAgentCheck = nav[_DYN_USER_AGENT /* @min:%2euserAgent */];\r\n var userAgent = (_navUserAgentCheck || STR_EMPTY)[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n _isTrident = (strContains(userAgent, strMsie) || strContains(userAgent, strTrident));\r\n }\r\n return _isTrident;\r\n}\r\n/**\r\n * Gets IE version returning the document emulation mode if we are running on IE, or null otherwise\r\n */\r\nexport function getIEVersion(userAgentStr) {\r\n if (userAgentStr === void 0) { userAgentStr = null; }\r\n if (!userAgentStr) {\r\n var navigator_1 = getNavigator() || {};\r\n userAgentStr = navigator_1 ? (navigator_1[_DYN_USER_AGENT /* @min:%2euserAgent */] || STR_EMPTY)[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]() : STR_EMPTY;\r\n }\r\n var ua = (userAgentStr || STR_EMPTY)[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n // Also check for documentMode in case X-UA-Compatible meta tag was included in HTML.\r\n if (strContains(ua, strMsie)) {\r\n var doc = getDocument() || {};\r\n return Math.max(parseInt(ua[_DYN_SPLIT /* @min:%2esplit */](strMsie)[1]), (doc[strDocumentMode] || 0));\r\n }\r\n else if (strContains(ua, strTrident)) {\r\n var tridentVer = parseInt(ua[_DYN_SPLIT /* @min:%2esplit */](strTrident)[1]);\r\n if (tridentVer) {\r\n return tridentVer + 4;\r\n }\r\n }\r\n return null;\r\n}\r\n/**\r\n * Returns string representation of an object suitable for diagnostics logging.\r\n */\r\nexport function dumpObj(object) {\r\n var objectTypeDump = Object[strShimPrototype].toString[_DYN_CALL /* @min:%2ecall */](object);\r\n var propertyValueDump = STR_EMPTY;\r\n if (objectTypeDump === \"[object Error]\") {\r\n propertyValueDump = \"{ stack: '\" + object.stack + \"', message: '\" + object.message + \"', name: '\" + object[_DYN_NAME /* @min:%2ename */] + \"'\";\r\n }\r\n else if (hasJSON()) {\r\n propertyValueDump = getJSON().stringify(object);\r\n }\r\n return objectTypeDump + propertyValueDump;\r\n}\r\nexport function isSafari(userAgentStr) {\r\n if (!userAgentStr || !isString(userAgentStr)) {\r\n var navigator_2 = getNavigator() || {};\r\n userAgentStr = navigator_2 ? (navigator_2[_DYN_USER_AGENT /* @min:%2euserAgent */] || STR_EMPTY)[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]() : STR_EMPTY;\r\n }\r\n var ua = (userAgentStr || STR_EMPTY)[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n return (ua[_DYN_INDEX_OF /* @min:%2eindexOf */](\"safari\") >= 0);\r\n}\r\n/**\r\n * Checks if HTML5 Beacons are supported in the current environment.\r\n * @returns True if supported, false otherwise.\r\n */\r\nexport function isBeaconsSupported() {\r\n if (_beaconsSupported === null) {\r\n _beaconsSupported = hasNavigator() && Boolean(getNavigator().sendBeacon);\r\n }\r\n return _beaconsSupported;\r\n}\r\n/**\r\n * Checks if the Fetch API is supported in the current environment.\r\n * @param withKeepAlive - [Optional] If True, check if fetch is available and it supports the keepalive feature, otherwise only check if fetch is supported\r\n * @returns True if supported, otherwise false\r\n */\r\nexport function isFetchSupported(withKeepAlive) {\r\n var isSupported = false;\r\n try {\r\n isSupported = !!getGlobalInst(\"fetch\");\r\n var request = getGlobalInst(\"Request\");\r\n if (isSupported && withKeepAlive && request) {\r\n isSupported = _hasProperty(request, \"keepalive\");\r\n }\r\n }\r\n catch (e) {\r\n // Just Swallow any failure during availability checks\r\n }\r\n return isSupported;\r\n}\r\nexport function useXDomainRequest() {\r\n if (_useXDomainRequest === null) {\r\n _useXDomainRequest = (typeof XDomainRequest !== strShimUndefined);\r\n if (_useXDomainRequest && isXhrSupported()) {\r\n _useXDomainRequest = _useXDomainRequest && !_hasProperty(getGlobalInst(strXMLHttpRequest), \"withCredentials\");\r\n }\r\n }\r\n return _useXDomainRequest;\r\n}\r\n/**\r\n * Checks if XMLHttpRequest is supported\r\n * @returns True if supported, otherwise false\r\n */\r\nexport function isXhrSupported() {\r\n var isSupported = false;\r\n try {\r\n var xmlHttpRequest = getGlobalInst(strXMLHttpRequest);\r\n isSupported = !!xmlHttpRequest;\r\n }\r\n catch (e) {\r\n // Just Swallow any failure during availability checks\r\n }\r\n return isSupported;\r\n}\r\nfunction _getNamedValue(values, name) {\r\n if (values) {\r\n for (var i = 0; i < values[_DYN_LENGTH /* @min:%2elength */]; i++) {\r\n var value = values[i];\r\n if (value[_DYN_NAME /* @min:%2ename */]) {\r\n if (value[_DYN_NAME /* @min:%2ename */] === name) {\r\n return value;\r\n }\r\n }\r\n }\r\n }\r\n return {};\r\n}\r\n/**\r\n * Helper function to fetch the named meta-tag from the page.\r\n * @param name\r\n */\r\nexport function findMetaTag(name) {\r\n var doc = getDocument();\r\n if (doc && name) {\r\n // Look for a meta-tag\r\n return _getNamedValue(doc.querySelectorAll(\"meta\"), name).content;\r\n }\r\n return null;\r\n}\r\n/**\r\n * Helper function to fetch the named server timing value from the page response (first navigation event).\r\n * @param name\r\n */\r\nexport function findNamedServerTiming(name) {\r\n var value;\r\n var perf = getPerformance();\r\n if (perf) {\r\n // Try looking for a server-timing header\r\n var navPerf = perf.getEntriesByType(\"navigation\") || [];\r\n value = _getNamedValue((navPerf[_DYN_LENGTH /* @min:%2elength */] > 0 ? navPerf[0] : {}).serverTiming, name).description;\r\n }\r\n return value;\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Core, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { _DYN_APPLY, _DYN_LENGTH } from \"../__DynamicConstants\";\r\nimport { getGlobalInst } from \"./EnvUtils\";\r\nvar listenerFuncs = [\"eventsSent\", \"eventsDiscarded\", \"eventsSendRequest\", \"perfEvent\"];\r\nvar _aiNamespace = null;\r\nvar _debugListener;\r\nfunction _listenerProxyFunc(name, config) {\r\n return function () {\r\n var args = arguments;\r\n var dbgExt = getDebugExt(config);\r\n if (dbgExt) {\r\n var listener = dbgExt.listener;\r\n if (listener && listener[name]) {\r\n listener[name][_DYN_APPLY /* @min:%2eapply */](listener, args);\r\n }\r\n }\r\n };\r\n}\r\nfunction _getExtensionNamespace() {\r\n // Cache the lookup of the global namespace object\r\n var target = getGlobalInst(\"Microsoft\");\r\n if (target) {\r\n _aiNamespace = target[\"ApplicationInsights\"];\r\n }\r\n return _aiNamespace;\r\n}\r\nexport function getDebugExt(config) {\r\n var ns = _aiNamespace;\r\n if (!ns && config.disableDbgExt !== true) {\r\n ns = _aiNamespace || _getExtensionNamespace();\r\n }\r\n return ns ? ns[\"ChromeDbgExt\"] : null;\r\n}\r\nexport function getDebugListener(config) {\r\n if (!_debugListener) {\r\n _debugListener = {};\r\n for (var lp = 0; lp < listenerFuncs[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n _debugListener[listenerFuncs[lp]] = _listenerProxyFunc(listenerFuncs[lp], config);\r\n }\r\n }\r\n return _debugListener;\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Core, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n\"use strict\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { _DYN_DIAG_LOG, _DYN_ENABLE_DEBUG_EXCEPTI4, _DYN_LOGGER, _DYN_LOG_INTERNAL_MESSAGE, _DYN_MESSAGE, _DYN_MESSAGE_ID, _DYN_PUSH, _DYN_REPLACE } from \"../__DynamicConstants\";\r\nimport { getDebugExt } from \"./DbgExtensionUtils\";\r\nimport { dumpObj, getConsole, getJSON, hasJSON } from \"./EnvUtils\";\r\nimport { getCfgValue, isFunction, isUndefined } from \"./HelperFuncs\";\r\nimport { STR_EMPTY, STR_ERROR_TO_CONSOLE, STR_WARN_TO_CONSOLE } from \"./InternalConstants\";\r\n/**\r\n * For user non actionable traces use AI Internal prefix.\r\n */\r\nvar AiNonUserActionablePrefix = \"AI (Internal): \";\r\n/**\r\n * Prefix of the traces in portal.\r\n */\r\nvar AiUserActionablePrefix = \"AI: \";\r\n/**\r\n * Session storage key for the prefix for the key indicating message type already logged\r\n */\r\nvar AIInternalMessagePrefix = \"AITR_\";\r\nfunction _sanitizeDiagnosticText(text) {\r\n if (text) {\r\n return \"\\\"\" + text[_DYN_REPLACE /* @min:%2ereplace */](/\\\"/g, STR_EMPTY) + \"\\\"\";\r\n }\r\n return STR_EMPTY;\r\n}\r\nfunction _logToConsole(func, message) {\r\n var theConsole = getConsole();\r\n if (!!theConsole) {\r\n var logFunc = \"log\";\r\n if (theConsole[func]) {\r\n logFunc = func;\r\n }\r\n if (isFunction(theConsole[logFunc])) {\r\n theConsole[logFunc](message);\r\n }\r\n }\r\n}\r\nvar _InternalLogMessage = /** @class */ (function () {\r\n function _InternalLogMessage(msgId, msg, isUserAct, properties) {\r\n if (isUserAct === void 0) { isUserAct = false; }\r\n var _self = this;\r\n _self[_DYN_MESSAGE_ID /* @min:%2emessageId */] = msgId;\r\n _self[_DYN_MESSAGE /* @min:%2emessage */] =\r\n (isUserAct ? AiUserActionablePrefix : AiNonUserActionablePrefix) +\r\n msgId;\r\n var strProps = STR_EMPTY;\r\n if (hasJSON()) {\r\n strProps = getJSON().stringify(properties);\r\n }\r\n var diagnosticText = (msg ? \" message:\" + _sanitizeDiagnosticText(msg) : STR_EMPTY) +\r\n (properties ? \" props:\" + _sanitizeDiagnosticText(strProps) : STR_EMPTY);\r\n _self[_DYN_MESSAGE /* @min:%2emessage */] += diagnosticText;\r\n }\r\n _InternalLogMessage.dataType = \"MessageData\";\r\n return _InternalLogMessage;\r\n}());\r\nexport { _InternalLogMessage };\r\nexport function safeGetLogger(core, config) {\r\n return (core || {})[_DYN_LOGGER /* @min:%2elogger */] || new DiagnosticLogger(config);\r\n}\r\nvar DiagnosticLogger = /** @class */ (function () {\r\n function DiagnosticLogger(config) {\r\n this.identifier = \"DiagnosticLogger\";\r\n /**\r\n * The internal logging queue\r\n */\r\n this.queue = [];\r\n /**\r\n * Count of internal messages sent\r\n */\r\n var _messageCount = 0;\r\n /**\r\n * Holds information about what message types were already logged to console or sent to server.\r\n */\r\n var _messageLogged = {};\r\n var _loggingLevelConsole;\r\n var _loggingLevelTelemetry;\r\n var _maxInternalMessageLimit;\r\n var _enableDebugExceptions;\r\n dynamicProto(DiagnosticLogger, this, function (_self) {\r\n _setDefaultsFromConfig(config || {});\r\n _self.consoleLoggingLevel = function () { return _loggingLevelConsole; };\r\n _self.telemetryLoggingLevel = function () { return _loggingLevelTelemetry; };\r\n _self.maxInternalMessageLimit = function () { return _maxInternalMessageLimit; };\r\n _self[_DYN_ENABLE_DEBUG_EXCEPTI4 /* @min:%2eenableDebugExceptions */] = function () { return _enableDebugExceptions; };\r\n /**\r\n * This method will throw exceptions in debug mode or attempt to log the error as a console warning.\r\n * @param severity {LoggingSeverity} - The severity of the log message\r\n * @param message {_InternalLogMessage} - The log message.\r\n */\r\n _self.throwInternal = function (severity, msgId, msg, properties, isUserAct) {\r\n if (isUserAct === void 0) { isUserAct = false; }\r\n var message = new _InternalLogMessage(msgId, msg, isUserAct, properties);\r\n if (_enableDebugExceptions) {\r\n throw dumpObj(message);\r\n }\r\n else {\r\n // Get the logging function and fallback to warnToConsole of for some reason errorToConsole doesn't exist\r\n var logFunc = severity === 1 /* eLoggingSeverity.CRITICAL */ ? STR_ERROR_TO_CONSOLE : STR_WARN_TO_CONSOLE;\r\n if (!isUndefined(message[_DYN_MESSAGE /* @min:%2emessage */])) {\r\n if (isUserAct) {\r\n // check if this message type was already logged to console for this page view and if so, don't log it again\r\n var messageKey = +message[_DYN_MESSAGE_ID /* @min:%2emessageId */];\r\n if (!_messageLogged[messageKey] && _loggingLevelConsole >= severity) {\r\n _self[logFunc](message[_DYN_MESSAGE /* @min:%2emessage */]);\r\n _messageLogged[messageKey] = true;\r\n }\r\n }\r\n else {\r\n // Only log traces if the console Logging Level is >= the throwInternal severity level\r\n if (_loggingLevelConsole >= severity) {\r\n _self[logFunc](message[_DYN_MESSAGE /* @min:%2emessage */]);\r\n }\r\n }\r\n _logInternalMessage(severity, message);\r\n }\r\n else {\r\n _debugExtMsg(\"throw\" + (severity === 1 /* eLoggingSeverity.CRITICAL */ ? \"Critical\" : \"Warning\"), message);\r\n }\r\n }\r\n };\r\n /**\r\n * This will write a warning to the console if possible\r\n * @param message {string} - The warning message\r\n */\r\n _self[STR_WARN_TO_CONSOLE /* @min:%2ewarnToConsole */] = function (message) {\r\n _logToConsole(\"warn\", message);\r\n _debugExtMsg(\"warning\", message);\r\n };\r\n /**\r\n * This will write an error to the console if possible\r\n * @param message {string} - The error message\r\n */\r\n _self[STR_ERROR_TO_CONSOLE /* @min:%2eerrorToConsole */] = function (message) {\r\n _logToConsole(\"error\", message);\r\n _debugExtMsg(\"error\", message);\r\n };\r\n /**\r\n * Resets the internal message count\r\n */\r\n _self.resetInternalMessageCount = function () {\r\n _messageCount = 0;\r\n _messageLogged = {};\r\n };\r\n /**\r\n * Logs a message to the internal queue.\r\n * @param severity {LoggingSeverity} - The severity of the log message\r\n * @param message {_InternalLogMessage} - The message to log.\r\n */\r\n _self[_DYN_LOG_INTERNAL_MESSAGE /* @min:%2elogInternalMessage */] = _logInternalMessage;\r\n function _logInternalMessage(severity, message) {\r\n if (_areInternalMessagesThrottled()) {\r\n return;\r\n }\r\n // check if this message type was already logged for this session and if so, don't log it again\r\n var logMessage = true;\r\n var messageKey = AIInternalMessagePrefix + message[_DYN_MESSAGE_ID /* @min:%2emessageId */];\r\n // if the session storage is not available, limit to only one message type per page view\r\n if (_messageLogged[messageKey]) {\r\n logMessage = false;\r\n }\r\n else {\r\n _messageLogged[messageKey] = true;\r\n }\r\n if (logMessage) {\r\n // Push the event in the internal queue\r\n if (severity <= _loggingLevelTelemetry) {\r\n _self.queue[_DYN_PUSH /* @min:%2epush */](message);\r\n _messageCount++;\r\n _debugExtMsg((severity === 1 /* eLoggingSeverity.CRITICAL */ ? \"error\" : \"warn\"), message);\r\n }\r\n // When throttle limit reached, send a special event\r\n if (_messageCount === _maxInternalMessageLimit) {\r\n var throttleLimitMessage = \"Internal events throttle limit per PageView reached for this app.\";\r\n var throttleMessage = new _InternalLogMessage(23 /* _eInternalMessageId.MessageLimitPerPVExceeded */, throttleLimitMessage, false);\r\n _self.queue[_DYN_PUSH /* @min:%2epush */](throttleMessage);\r\n if (severity === 1 /* eLoggingSeverity.CRITICAL */) {\r\n _self[STR_ERROR_TO_CONSOLE /* @min:%2eerrorToConsole */](throttleLimitMessage);\r\n }\r\n else {\r\n _self[STR_WARN_TO_CONSOLE /* @min:%2ewarnToConsole */](throttleLimitMessage);\r\n }\r\n }\r\n }\r\n }\r\n function _setDefaultsFromConfig(config) {\r\n _loggingLevelConsole = getCfgValue(config.loggingLevelConsole, 0);\r\n _loggingLevelTelemetry = getCfgValue(config.loggingLevelTelemetry, 1);\r\n _maxInternalMessageLimit = getCfgValue(config.maxMessageLimit, 25);\r\n _enableDebugExceptions = getCfgValue(config[_DYN_ENABLE_DEBUG_EXCEPTI4 /* @min:%2eenableDebugExceptions */], false);\r\n }\r\n function _areInternalMessagesThrottled() {\r\n return _messageCount >= _maxInternalMessageLimit;\r\n }\r\n function _debugExtMsg(name, data) {\r\n var dbgExt = getDebugExt(config || {});\r\n if (dbgExt && dbgExt[_DYN_DIAG_LOG /* @min:%2ediagLog */]) {\r\n dbgExt[_DYN_DIAG_LOG /* @min:%2ediagLog */](name, data);\r\n }\r\n }\r\n });\r\n }\r\n// Removed Stub for DiagnosticLogger.prototype.enableDebugExceptions.\r\n// Removed Stub for DiagnosticLogger.prototype.consoleLoggingLevel.\r\n// Removed Stub for DiagnosticLogger.prototype.telemetryLoggingLevel.\r\n// Removed Stub for DiagnosticLogger.prototype.maxInternalMessageLimit.\r\n// Removed Stub for DiagnosticLogger.prototype.throwInternal.\r\n// Removed Stub for DiagnosticLogger.prototype.warnToConsole.\r\n// Removed Stub for DiagnosticLogger.prototype.errorToConsole.\r\n// Removed Stub for DiagnosticLogger.prototype.resetInternalMessageCount.\r\n// Removed Stub for DiagnosticLogger.prototype.logInternalMessage.\r\n // This is a workaround for an IE8 bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n // this will be removed when ES3 support is dropped.\n DiagnosticLogger.__ieDyn=1;\n\n return DiagnosticLogger;\r\n}());\r\nexport { DiagnosticLogger };\r\nfunction _getLogger(logger) {\r\n return (logger || new DiagnosticLogger());\r\n}\r\n/**\r\n * This is a helper method which will call throwInternal on the passed logger, will throw exceptions in\r\n * debug mode or attempt to log the error as a console warning. This helper is provided mostly to better\r\n * support minification as logger.throwInternal() will not compress the publish \"throwInternal\" used throughout\r\n * the code.\r\n * @param logger - The Diagnostic Logger instance to use.\r\n * @param severity {LoggingSeverity} - The severity of the log message\r\n * @param message {_InternalLogMessage} - The log message.\r\n */\r\nexport function _throwInternal(logger, severity, msgId, msg, properties, isUserAct) {\r\n if (isUserAct === void 0) { isUserAct = false; }\r\n _getLogger(logger).throwInternal(severity, msgId, msg, properties, isUserAct);\r\n}\r\n/**\r\n * This is a helper method which will call warnToConsole on the passed logger with the provided message.\r\n * @param logger - The Diagnostic Logger instance to use.\r\n * @param message {_InternalLogMessage} - The log message.\r\n */\r\nexport function _warnToConsole(logger, message) {\r\n _getLogger(logger)[STR_WARN_TO_CONSOLE /* @min:%2ewarnToConsole */](message);\r\n}\r\n/**\r\n * Logs a message to the internal queue.\r\n * @param logger - The Diagnostic Logger instance to use.\r\n * @param severity {LoggingSeverity} - The severity of the log message\r\n * @param message {_InternalLogMessage} - The message to log.\r\n */\r\nexport function _logInternalMessage(logger, severity, message) {\r\n _getLogger(logger)[_DYN_LOG_INTERNAL_MESSAGE /* @min:%2elogInternalMessage */](severity, message);\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Core, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport { _DYN_COOKIE_CFG, _DYN_INDEX_OF, _DYN_LENGTH, _DYN_LOGGER, _DYN_SET_ENABLED, _DYN_SPLIT, _DYN_SUBSTRING, _DYN_USER_AGENT } from \"../__DynamicConstants\";\r\nimport { _throwInternal } from \"./DiagnosticLogger\";\r\nimport { dumpObj, getDocument, getLocation, getNavigator, isIE } from \"./EnvUtils\";\r\nimport { arrForEach, dateNow, getExceptionName, isArray, isFunction, isNotNullOrUndefined, isNullOrUndefined, isString, isTruthy, isUndefined, objForEachKey, setValue, strContains, strEndsWith, strTrim } from \"./HelperFuncs\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\nvar strToGMTString = \"toGMTString\";\r\nvar strToUTCString = \"toUTCString\";\r\nvar strCookie = \"cookie\";\r\nvar strExpires = \"expires\";\r\nvar strEnabled = \"enabled\";\r\nvar strIsCookieUseDisabled = \"isCookieUseDisabled\";\r\nvar strDisableCookiesUsage = \"disableCookiesUsage\";\r\nvar strConfigCookieMgr = \"_ckMgr\";\r\nvar _supportsCookies = null;\r\nvar _allowUaSameSite = null;\r\nvar _parsedCookieValue = null;\r\nvar _doc = getDocument();\r\nvar _cookieCache = {};\r\nvar _globalCookieConfig = {};\r\n/**\r\n * @ignore\r\n * DO NOT USE or export from the module, this is exposed as public to support backward compatibility of previous static utility methods only.\r\n * If you want to manager cookies either use the ICookieMgr available from the core instance via getCookieMgr() or create\r\n * your own instance of the CookieMgr and use that.\r\n * Using this directly for enabling / disabling cookie handling will not only affect your usage but EVERY user of cookies.\r\n * Example, if you are using a shared component that is also using Application Insights you will affect their cookie handling.\r\n * @param logger - The DiagnosticLogger to use for reporting errors.\r\n */\r\nexport function _gblCookieMgr(config, logger) {\r\n // Stash the global instance against the BaseCookieMgr class\r\n var inst = createCookieMgr[strConfigCookieMgr] || _globalCookieConfig[strConfigCookieMgr];\r\n if (!inst) {\r\n // Note: not using the getSetValue() helper as that would require always creating a temporary cookieMgr\r\n // that ultimately is never used\r\n inst = createCookieMgr[strConfigCookieMgr] = createCookieMgr(config, logger);\r\n _globalCookieConfig[strConfigCookieMgr] = inst;\r\n }\r\n return inst;\r\n}\r\nfunction _isMgrEnabled(cookieMgr) {\r\n if (cookieMgr) {\r\n return cookieMgr.isEnabled();\r\n }\r\n return true;\r\n}\r\nfunction _createCookieMgrConfig(rootConfig) {\r\n var cookieMgrCfg = rootConfig[_DYN_COOKIE_CFG /* @min:%2ecookieCfg */] = rootConfig[_DYN_COOKIE_CFG /* @min:%2ecookieCfg */] || {};\r\n // Sets the values from the root config if not already present on the cookieMgrCfg\r\n setValue(cookieMgrCfg, \"domain\", rootConfig.cookieDomain, isNotNullOrUndefined, isNullOrUndefined);\r\n setValue(cookieMgrCfg, \"path\", rootConfig.cookiePath || \"/\", null, isNullOrUndefined);\r\n if (isNullOrUndefined(cookieMgrCfg[strEnabled])) {\r\n // Set the enabled from the provided setting or the legacy root values\r\n var cookieEnabled = void 0;\r\n if (!isUndefined(rootConfig[strIsCookieUseDisabled])) {\r\n cookieEnabled = !rootConfig[strIsCookieUseDisabled];\r\n }\r\n if (!isUndefined(rootConfig[strDisableCookiesUsage])) {\r\n cookieEnabled = !rootConfig[strDisableCookiesUsage];\r\n }\r\n cookieMgrCfg[strEnabled] = cookieEnabled;\r\n }\r\n return cookieMgrCfg;\r\n}\r\nfunction _isIgnoredCookie(cookieMgrCfg, name) {\r\n if (name && cookieMgrCfg && isArray(cookieMgrCfg.ignoreCookies)) {\r\n return cookieMgrCfg.ignoreCookies[_DYN_INDEX_OF /* @min:%2eindexOf */](name) !== -1;\r\n }\r\n return false;\r\n}\r\nfunction _isBlockedCookie(cookieMgrCfg, name) {\r\n if (name && cookieMgrCfg && isArray(cookieMgrCfg.blockedCookies)) {\r\n if (cookieMgrCfg.blockedCookies[_DYN_INDEX_OF /* @min:%2eindexOf */](name) !== -1) {\r\n return true;\r\n }\r\n }\r\n return _isIgnoredCookie(cookieMgrCfg, name);\r\n}\r\n/**\r\n * Helper to return the ICookieMgr from the core (if not null/undefined) or a default implementation\r\n * associated with the configuration or a legacy default.\r\n * @param core\r\n * @param config\r\n * @returns\r\n */\r\nexport function safeGetCookieMgr(core, config) {\r\n var cookieMgr;\r\n if (core) {\r\n // Always returns an instance\r\n cookieMgr = core.getCookieMgr();\r\n }\r\n else if (config) {\r\n var cookieCfg = config[_DYN_COOKIE_CFG /* @min:%2ecookieCfg */];\r\n if (cookieCfg[strConfigCookieMgr]) {\r\n cookieMgr = cookieCfg[strConfigCookieMgr];\r\n }\r\n else {\r\n cookieMgr = createCookieMgr(config);\r\n }\r\n }\r\n if (!cookieMgr) {\r\n // Get or initialize the default global (legacy) cookie manager if we couldn't find one\r\n cookieMgr = _gblCookieMgr(config, (core || {})[_DYN_LOGGER /* @min:%2elogger */]);\r\n }\r\n return cookieMgr;\r\n}\r\nexport function createCookieMgr(rootConfig, logger) {\r\n var _a;\r\n var cookieMgrConfig = _createCookieMgrConfig(rootConfig || _globalCookieConfig);\r\n var _path = cookieMgrConfig.path || \"/\";\r\n var _domain = cookieMgrConfig.domain;\r\n // Explicitly checking against false, so that setting to undefined will === true\r\n var _enabled = cookieMgrConfig[strEnabled] !== false;\r\n var cookieMgr = (_a = {\r\n isEnabled: function () {\r\n var enabled = _enabled && areCookiesSupported(logger);\r\n // Using an indirect lookup for any global cookie manager to support tree shaking for SDK's\r\n // that don't use the \"applicationinsights-core\" version of the default cookie function\r\n var gblManager = _globalCookieConfig[strConfigCookieMgr];\r\n if (enabled && gblManager && cookieMgr !== gblManager) {\r\n // Make sure the GlobalCookie Manager instance (if not this instance) is also enabled.\r\n // As the global (deprecated) functions may have been called (for backward compatibility)\r\n enabled = _isMgrEnabled(gblManager);\r\n }\r\n return enabled;\r\n }\r\n },\r\n _a[_DYN_SET_ENABLED /* @min:setEnabled */] = function (value) {\r\n // Explicitly checking against false, so that setting to undefined will === true\r\n _enabled = value !== false;\r\n },\r\n _a.set = function (name, value, maxAgeSec, domain, path) {\r\n var result = false;\r\n if (_isMgrEnabled(cookieMgr) && !_isBlockedCookie(cookieMgrConfig, name)) {\r\n var values = {};\r\n var theValue = strTrim(value || STR_EMPTY);\r\n var idx = theValue[_DYN_INDEX_OF /* @min:%2eindexOf */](\";\");\r\n if (idx !== -1) {\r\n theValue = strTrim(value[_DYN_SUBSTRING /* @min:%2esubstring */](0, idx));\r\n values = _extractParts(value[_DYN_SUBSTRING /* @min:%2esubstring */](idx + 1));\r\n }\r\n // Only update domain if not already present (isUndefined) and the value is truthy (not null, undefined or empty string)\r\n setValue(values, \"domain\", domain || _domain, isTruthy, isUndefined);\r\n if (!isNullOrUndefined(maxAgeSec)) {\r\n var _isIE = isIE();\r\n if (isUndefined(values[strExpires])) {\r\n var nowMs = dateNow();\r\n // Only add expires if not already present\r\n var expireMs = nowMs + (maxAgeSec * 1000);\r\n // Sanity check, if zero or -ve then ignore\r\n if (expireMs > 0) {\r\n var expiry = new Date();\r\n expiry.setTime(expireMs);\r\n setValue(values, strExpires, _formatDate(expiry, !_isIE ? strToUTCString : strToGMTString) || _formatDate(expiry, _isIE ? strToGMTString : strToUTCString) || STR_EMPTY, isTruthy);\r\n }\r\n }\r\n if (!_isIE) {\r\n // Only replace if not already present\r\n setValue(values, \"max-age\", STR_EMPTY + maxAgeSec, null, isUndefined);\r\n }\r\n }\r\n var location_1 = getLocation();\r\n if (location_1 && location_1.protocol === \"https:\") {\r\n setValue(values, \"secure\", null, null, isUndefined);\r\n // Only set same site if not also secure\r\n if (_allowUaSameSite === null) {\r\n _allowUaSameSite = !uaDisallowsSameSiteNone((getNavigator() || {})[_DYN_USER_AGENT /* @min:%2euserAgent */]);\r\n }\r\n if (_allowUaSameSite) {\r\n setValue(values, \"SameSite\", \"None\", null, isUndefined);\r\n }\r\n }\r\n setValue(values, \"path\", path || _path, null, isUndefined);\r\n var setCookieFn = cookieMgrConfig.setCookie || _setCookieValue;\r\n setCookieFn(name, _formatCookieValue(theValue, values));\r\n result = true;\r\n }\r\n return result;\r\n },\r\n _a.get = function (name) {\r\n var value = STR_EMPTY;\r\n if (_isMgrEnabled(cookieMgr) && !_isIgnoredCookie(cookieMgrConfig, name)) {\r\n value = (cookieMgrConfig.getCookie || _getCookieValue)(name);\r\n }\r\n return value;\r\n },\r\n _a.del = function (name, path) {\r\n var result = false;\r\n if (_isMgrEnabled(cookieMgr)) {\r\n // Only remove the cookie if the manager and cookie support has not been disabled\r\n result = cookieMgr.purge(name, path);\r\n }\r\n return result;\r\n },\r\n _a.purge = function (name, path) {\r\n var _a;\r\n var result = false;\r\n if (areCookiesSupported(logger)) {\r\n // Setting the expiration date in the past immediately removes the cookie\r\n var values = (_a = {},\r\n _a[\"path\"] = path ? path : \"/\",\r\n _a[strExpires] = \"Thu, 01 Jan 1970 00:00:01 GMT\",\r\n _a);\r\n if (!isIE()) {\r\n // Set max age to expire now\r\n values[\"max-age\"] = \"0\";\r\n }\r\n var delCookie = cookieMgrConfig.delCookie || _setCookieValue;\r\n delCookie(name, _formatCookieValue(STR_EMPTY, values));\r\n result = true;\r\n }\r\n return result;\r\n },\r\n _a);\r\n // Associated this cookie manager with the config\r\n cookieMgr[strConfigCookieMgr] = cookieMgr;\r\n return cookieMgr;\r\n}\r\n/*\r\n* Helper method to tell if document.cookie object is supported by the runtime\r\n*/\r\nexport function areCookiesSupported(logger) {\r\n if (_supportsCookies === null) {\r\n _supportsCookies = false;\r\n try {\r\n var doc = _doc || {};\r\n _supportsCookies = doc[strCookie] !== undefined;\r\n }\r\n catch (e) {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 68 /* _eInternalMessageId.CannotAccessCookie */, \"Cannot access document.cookie - \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return _supportsCookies;\r\n}\r\nfunction _extractParts(theValue) {\r\n var values = {};\r\n if (theValue && theValue[_DYN_LENGTH /* @min:%2elength */]) {\r\n var parts = strTrim(theValue)[_DYN_SPLIT /* @min:%2esplit */](\";\");\r\n arrForEach(parts, function (thePart) {\r\n thePart = strTrim(thePart || STR_EMPTY);\r\n if (thePart) {\r\n var idx = thePart[_DYN_INDEX_OF /* @min:%2eindexOf */](\"=\");\r\n if (idx === -1) {\r\n values[thePart] = null;\r\n }\r\n else {\r\n values[strTrim(thePart[_DYN_SUBSTRING /* @min:%2esubstring */](0, idx))] = strTrim(thePart[_DYN_SUBSTRING /* @min:%2esubstring */](idx + 1));\r\n }\r\n }\r\n });\r\n }\r\n return values;\r\n}\r\nfunction _formatDate(theDate, func) {\r\n if (isFunction(theDate[func])) {\r\n return theDate[func]();\r\n }\r\n return null;\r\n}\r\nfunction _formatCookieValue(value, values) {\r\n var cookieValue = value || STR_EMPTY;\r\n objForEachKey(values, function (name, theValue) {\r\n cookieValue += \"; \" + name + (!isNullOrUndefined(theValue) ? \"=\" + theValue : STR_EMPTY);\r\n });\r\n return cookieValue;\r\n}\r\nfunction _getCookieValue(name) {\r\n var cookieValue = STR_EMPTY;\r\n if (_doc) {\r\n var theCookie = _doc[strCookie] || STR_EMPTY;\r\n if (_parsedCookieValue !== theCookie) {\r\n _cookieCache = _extractParts(theCookie);\r\n _parsedCookieValue = theCookie;\r\n }\r\n cookieValue = strTrim(_cookieCache[name] || STR_EMPTY);\r\n }\r\n return cookieValue;\r\n}\r\nfunction _setCookieValue(name, cookieValue) {\r\n if (_doc) {\r\n _doc[strCookie] = name + \"=\" + cookieValue;\r\n }\r\n}\r\nexport function uaDisallowsSameSiteNone(userAgent) {\r\n if (!isString(userAgent)) {\r\n return false;\r\n }\r\n // Cover all iOS based browsers here. This includes:\r\n // - Safari on iOS 12 for iPhone, iPod Touch, iPad\r\n // - WkWebview on iOS 12 for iPhone, iPod Touch, iPad\r\n // - Chrome on iOS 12 for iPhone, iPod Touch, iPad\r\n // All of which are broken by SameSite=None, because they use the iOS networking stack\r\n if (strContains(userAgent, \"CPU iPhone OS 12\") || strContains(userAgent, \"iPad; CPU OS 12\")) {\r\n return true;\r\n }\r\n // Cover Mac OS X based browsers that use the Mac OS networking stack. This includes:\r\n // - Safari on Mac OS X\r\n // This does not include:\r\n // - Internal browser on Mac OS X\r\n // - Chrome on Mac OS X\r\n // - Chromium on Mac OS X\r\n // Because they do not use the Mac OS networking stack.\r\n if (strContains(userAgent, \"Macintosh; Intel Mac OS X 10_14\") && strContains(userAgent, \"Version/\") && strContains(userAgent, \"Safari\")) {\r\n return true;\r\n }\r\n // Cover Mac OS X internal browsers that use the Mac OS networking stack. This includes:\r\n // - Internal browser on Mac OS X\r\n // This does not include:\r\n // - Safari on Mac OS X\r\n // - Chrome on Mac OS X\r\n // - Chromium on Mac OS X\r\n // Because they do not use the Mac OS networking stack.\r\n if (strContains(userAgent, \"Macintosh; Intel Mac OS X 10_14\") && strEndsWith(userAgent, \"AppleWebKit/605.1.15 (KHTML, like Gecko)\")) {\r\n return true;\r\n }\r\n // Cover Chrome 50-69, because some versions are broken by SameSite=None, and none in this range require it.\r\n // Note: this covers some pre-Chromium Edge versions, but pre-Chromim Edge does not require SameSite=None, so this is fine.\r\n // Note: this regex applies to Windows, Mac OS X, and Linux, deliberately.\r\n if (strContains(userAgent, \"Chrome/5\") || strContains(userAgent, \"Chrome/6\")) {\r\n return true;\r\n }\r\n // Unreal Engine runs Chromium 59, but does not advertise as Chrome until 4.23. Treat versions of Unreal\r\n // that don't specify their Chrome version as lacking support for SameSite=None.\r\n if (strContains(userAgent, \"UnrealEngine\") && !strContains(userAgent, \"Chrome\")) {\r\n return true;\r\n }\r\n // UCBrowser < 12.13.2 ignores Set-Cookie headers with SameSite=None\r\n // NB: this rule isn't complete - you need regex to make a complete rule.\r\n // See: https://www.chromium.org/updates/same-site/incompatible-clients\r\n if (strContains(userAgent, \"UCBrowser/12\") || strContains(userAgent, \"UCBrowser/11\")) {\r\n return true;\r\n }\r\n return false;\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Core, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { _DYN_LENGTH } from \"../__DynamicConstants\";\r\nimport { getCrypto, getMsCrypto, isIE } from \"./EnvUtils\";\r\nimport { dateNow } from \"./HelperFuncs\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\nvar UInt32Mask = 0x100000000;\r\nvar MaxUInt32 = 0xffffffff;\r\n// MWC based Random generator (for IE)\r\nvar _mwcSeeded = false;\r\nvar _mwcW = 123456789;\r\nvar _mwcZ = 987654321;\r\n// Takes any integer\r\nfunction _mwcSeed(seedValue) {\r\n if (seedValue < 0) {\r\n // Make sure we end up with a positive number and not -ve one.\r\n seedValue >>>= 0;\r\n }\r\n _mwcW = (123456789 + seedValue) & MaxUInt32;\r\n _mwcZ = (987654321 - seedValue) & MaxUInt32;\r\n _mwcSeeded = true;\r\n}\r\nfunction _autoSeedMwc() {\r\n // Simple initialization using default Math.random() - So we inherit any entropy from the browser\r\n // and bitwise XOR with the current milliseconds\r\n try {\r\n var now = dateNow() & 0x7fffffff;\r\n _mwcSeed(((Math.random() * UInt32Mask) ^ now) + now);\r\n }\r\n catch (e) {\r\n // Don't crash if something goes wrong\r\n }\r\n}\r\n/**\r\n * Generate a random value between 0 and maxValue, max value should be limited to a 32-bit maximum.\r\n * So maxValue(16) will produce a number from 0..16 (range of 17)\r\n * @param maxValue\r\n */\r\nexport function randomValue(maxValue) {\r\n if (maxValue > 0) {\r\n return Math.floor((random32() / MaxUInt32) * (maxValue + 1)) >>> 0;\r\n }\r\n return 0;\r\n}\r\n/**\r\n * generate a random 32-bit number (0x000000..0xFFFFFFFF) or (-0x80000000..0x7FFFFFFF), defaults un-unsigned.\r\n * @param signed - True to return a signed 32-bit number (-0x80000000..0x7FFFFFFF) otherwise an unsigned one (0x000000..0xFFFFFFFF)\r\n */\r\nexport function random32(signed) {\r\n var value = 0;\r\n var c = getCrypto() || getMsCrypto();\r\n if (c && c.getRandomValues) {\r\n // Make sure the number is converted into the specified range (-0x80000000..0x7FFFFFFF)\r\n value = c.getRandomValues(new Uint32Array(1))[0] & MaxUInt32;\r\n }\r\n if (value === 0 && isIE()) {\r\n // For IE 6, 7, 8 (especially on XP) Math.random is not very random\r\n if (!_mwcSeeded) {\r\n // Set the seed for the Mwc algorithm\r\n _autoSeedMwc();\r\n }\r\n // Don't use Math.random for IE\r\n // Make sure the number is converted into the specified range (-0x80000000..0x7FFFFFFF)\r\n value = mwcRandom32() & MaxUInt32;\r\n }\r\n if (value === 0) {\r\n // Make sure the number is converted into the specified range (-0x80000000..0x7FFFFFFF)\r\n value = Math.floor((UInt32Mask * Math.random()) | 0);\r\n }\r\n if (!signed) {\r\n // Make sure we end up with a positive number and not -ve one.\r\n value >>>= 0;\r\n }\r\n return value;\r\n}\r\n/**\r\n * Seed the MWC random number generator with the specified seed or a random value\r\n * @param value - optional the number to used as the seed, if undefined, null or zero a random value will be chosen\r\n */\r\nexport function mwcRandomSeed(value) {\r\n if (!value) {\r\n _autoSeedMwc();\r\n }\r\n else {\r\n _mwcSeed(value);\r\n }\r\n}\r\n/**\r\n * Generate a random 32-bit number between (0x000000..0xFFFFFFFF) or (-0x80000000..0x7FFFFFFF), using MWC (Multiply with carry)\r\n * instead of Math.random() defaults to un-signed.\r\n * Used as a replacement random generator for IE to avoid issues with older IE instances.\r\n * @param signed - True to return a signed 32-bit number (-0x80000000..0x7FFFFFFF) otherwise an unsigned one (0x000000..0xFFFFFFFF)\r\n */\r\nexport function mwcRandom32(signed) {\r\n _mwcZ = (36969 * (_mwcZ & 0xFFFF) + (_mwcZ >> 16)) & MaxUInt32;\r\n _mwcW = (18000 * (_mwcW & 0xFFFF) + (_mwcW >> 16)) & MaxUInt32;\r\n var value = (((_mwcZ << 16) + (_mwcW & 0xFFFF)) >>> 0) & MaxUInt32 | 0;\r\n if (!signed) {\r\n // Make sure we end up with a positive number and not -ve one.\r\n value >>>= 0;\r\n }\r\n return value;\r\n}\r\n/**\r\n * Generate random base64 id string.\r\n * The default length is 22 which is 132-bits so almost the same as a GUID but as base64 (the previous default was 5)\r\n * @param maxLength - Optional value to specify the length of the id to be generated, defaults to 22\r\n */\r\nexport function newId(maxLength) {\r\n if (maxLength === void 0) { maxLength = 22; }\r\n var base64chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\r\n // Start with an initial random number, consuming the value in reverse byte order\r\n var number = random32() >>> 0; // Make sure it's a +ve number\r\n var chars = 0;\r\n var result = STR_EMPTY;\r\n while (result[_DYN_LENGTH /* @min:%2elength */] < maxLength) {\r\n chars++;\r\n result += base64chars.charAt(number & 0x3F);\r\n number >>>= 6; // Zero fill with right shift\r\n if (chars === 5) {\r\n // 5 base64 characters === 30 bits so we don't have enough bits for another base64 char\r\n // So add on another 30 bits and make sure it's +ve\r\n number = (((random32() << 2) & 0xFFFFFFFF) | (number & 0x03)) >>> 0;\r\n chars = 0; // We need to reset the number every 5 chars (30 bits)\r\n }\r\n }\r\n return result;\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Core, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { ObjDefineProperty } from \"@microsoft/applicationinsights-shims\";\r\nimport { _DYN_NODE_TYPE } from \"../__DynamicConstants\";\r\nimport { normalizeJsName } from \"./HelperFuncs\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\nimport { newId } from \"./RandomHelper\";\r\nvar _objDefineProperty = ObjDefineProperty;\r\nvar version = '2.8.9';\r\nvar instanceName = \".\" + newId(6);\r\nvar _dataUid = 0;\r\nfunction _createAccessor(target, prop, value) {\r\n if (_objDefineProperty) {\r\n try {\r\n _objDefineProperty(target, prop, {\r\n value: value,\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return true;\r\n }\r\n catch (e) {\r\n // IE8 Defines a defineProperty on Object but it's only supported for DOM elements so it will throw\r\n // We will just ignore this here.\r\n }\r\n }\r\n return false;\r\n}\r\n// Accepts only:\r\n// - Node\r\n// - Node.ELEMENT_NODE\r\n// - Node.DOCUMENT_NODE\r\n// - Object\r\n// - Any\r\nfunction _canAcceptData(target) {\r\n return target[_DYN_NODE_TYPE /* @min:%2enodeType */] === 1 || target[_DYN_NODE_TYPE /* @min:%2enodeType */] === 9 || !(+target[_DYN_NODE_TYPE /* @min:%2enodeType */]);\r\n}\r\nfunction _getCache(data, target) {\r\n var theCache = target[data.id];\r\n if (!theCache) {\r\n theCache = {};\r\n try {\r\n if (_canAcceptData(target)) {\r\n if (!_createAccessor(target, data.id, theCache)) {\r\n // Environment doesn't support accessor, so just use direct assignment\r\n target[data.id] = theCache;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // Not all environments allow extending all objects, so just ignore the cache in those cases\r\n }\r\n }\r\n return theCache;\r\n}\r\nexport function createUniqueNamespace(name, includeVersion) {\r\n if (includeVersion === void 0) { includeVersion = false; }\r\n return normalizeJsName(name + (_dataUid++) + (includeVersion ? \".\" + version : STR_EMPTY) + instanceName);\r\n}\r\nexport function createElmNodeData(name) {\r\n var data = {\r\n id: createUniqueNamespace(\"_aiData-\" + (name || STR_EMPTY) + \".\" + version),\r\n accept: function (target) {\r\n return _canAcceptData(target);\r\n },\r\n get: function (target, name, defValue, addDefault) {\r\n var theCache = target[data.id];\r\n if (!theCache) {\r\n if (addDefault) {\r\n // Side effect is adds the cache\r\n theCache = _getCache(data, target);\r\n theCache[normalizeJsName(name)] = defValue;\r\n }\r\n return defValue;\r\n }\r\n return theCache[normalizeJsName(name)];\r\n },\r\n kill: function (target, name) {\r\n if (target && target[name]) {\r\n try {\r\n delete target[name];\r\n }\r\n catch (e) {\r\n // Just cleaning up, so if this fails -- ignore\r\n }\r\n }\r\n }\r\n };\r\n return data;\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Core, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { _DYN_HANDLER, _DYN_LENGTH, _DYN_NAME, _DYN_PUSH, _DYN_REPLACE, _DYN_SPLICE, _DYN_SPLIT, _DYN_TYPE } from \"../__DynamicConstants\";\r\nimport { createElmNodeData, createUniqueNamespace } from \"./DataCacheHelper\";\r\nimport { getDocument, getWindow } from \"./EnvUtils\";\r\nimport { arrForEach, arrIndexOf, isArray, objForEachKey, objKeys } from \"./HelperFuncs\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\n// Added to help with minfication\r\nvar strOnPrefix = \"on\";\r\nvar strAttachEvent = \"attachEvent\";\r\nvar strAddEventHelper = \"addEventListener\";\r\nvar strDetachEvent = \"detachEvent\";\r\nvar strRemoveEventListener = \"removeEventListener\";\r\nvar strEvents = \"events\";\r\nvar strVisibilityChangeEvt = \"visibilitychange\";\r\nvar strPageHide = \"pagehide\";\r\nvar strPageShow = \"pageshow\";\r\nvar strUnload = \"unload\";\r\nvar strBeforeUnload = \"beforeunload\";\r\nvar strPageHideNamespace = createUniqueNamespace(\"aiEvtPageHide\");\r\nvar strPageShowNamespace = createUniqueNamespace(\"aiEvtPageShow\");\r\nvar rRemoveEmptyNs = /\\.[\\.]+/g;\r\nvar rRemoveTrailingEmptyNs = /[\\.]+$/;\r\nvar _guid = 1;\r\nvar elmNodeData = createElmNodeData(\"events\");\r\nvar eventNamespace = /^([^.]*)(?:\\.(.+)|)/;\r\nfunction _normalizeNamespace(name) {\r\n if (name && name[_DYN_REPLACE /* @min:%2ereplace */]) {\r\n return name[_DYN_REPLACE /* @min:%2ereplace */](/^[\\s\\.]+|(?=[\\s\\.])[\\.\\s]+$/g, STR_EMPTY);\r\n }\r\n return name;\r\n}\r\nfunction _getEvtNamespace(eventName, evtNamespace) {\r\n var _a;\r\n if (evtNamespace) {\r\n var theNamespace_1 = STR_EMPTY;\r\n if (isArray(evtNamespace)) {\r\n theNamespace_1 = STR_EMPTY;\r\n arrForEach(evtNamespace, function (name) {\r\n name = _normalizeNamespace(name);\r\n if (name) {\r\n if (name[0] !== \".\") {\r\n name = \".\" + name;\r\n }\r\n theNamespace_1 += name;\r\n }\r\n });\r\n }\r\n else {\r\n theNamespace_1 = _normalizeNamespace(evtNamespace);\r\n }\r\n if (theNamespace_1) {\r\n if (theNamespace_1[0] !== \".\") {\r\n theNamespace_1 = \".\" + theNamespace_1;\r\n }\r\n // We may only have the namespace and not an eventName\r\n eventName = (eventName || STR_EMPTY) + theNamespace_1;\r\n }\r\n }\r\n var parsedEvent = (eventNamespace.exec(eventName || STR_EMPTY) || []);\r\n return _a = {},\r\n _a[_DYN_TYPE /* @min:type */] = parsedEvent[1],\r\n _a.ns = ((parsedEvent[2] || STR_EMPTY).replace(rRemoveEmptyNs, \".\").replace(rRemoveTrailingEmptyNs, STR_EMPTY)[_DYN_SPLIT /* @min:%2esplit */](\".\").sort()).join(\".\"),\r\n _a;\r\n}\r\n/**\r\n * Get all of the registered events on the target object, this is primarily used for testing cleanup but may also be used by\r\n * applications to remove their own events\r\n * @param target - The EventTarget that has registered events\r\n * @param eventName - [Optional] The name of the event to return the registered handlers and full name (with namespaces)\r\n * @param evtNamespace - [Optional] Additional namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace,\r\n * if the eventName also includes a namespace the namespace(s) are merged into a single namespace\r\n */\r\nexport function __getRegisteredEvents(target, eventName, evtNamespace) {\r\n var theEvents = [];\r\n var eventCache = elmNodeData.get(target, strEvents, {}, false);\r\n var evtName = _getEvtNamespace(eventName, evtNamespace);\r\n objForEachKey(eventCache, function (evtType, registeredEvents) {\r\n arrForEach(registeredEvents, function (value) {\r\n var _a;\r\n if (!evtName[_DYN_TYPE /* @min:%2etype */] || evtName[_DYN_TYPE /* @min:%2etype */] === value.evtName[_DYN_TYPE /* @min:%2etype */]) {\r\n if (!evtName.ns || evtName.ns === evtName.ns) {\r\n theEvents[_DYN_PUSH /* @min:%2epush */]((_a = {},\r\n _a[_DYN_NAME /* @min:name */] = value.evtName[_DYN_TYPE /* @min:%2etype */] + (value.evtName.ns ? \".\" + value.evtName.ns : STR_EMPTY),\r\n _a.handler = value[_DYN_HANDLER /* @min:%2ehandler */],\r\n _a));\r\n }\r\n }\r\n });\r\n });\r\n return theEvents;\r\n}\r\n// Exported for internal unit testing only\r\nfunction _getRegisteredEvents(target, evtName, addDefault) {\r\n if (addDefault === void 0) { addDefault = true; }\r\n var aiEvts = elmNodeData.get(target, strEvents, {}, addDefault);\r\n var registeredEvents = aiEvts[evtName];\r\n if (!registeredEvents) {\r\n registeredEvents = aiEvts[evtName] = [];\r\n }\r\n return registeredEvents;\r\n}\r\nfunction _doDetach(obj, evtName, handlerRef, useCapture) {\r\n if (obj && evtName && evtName[_DYN_TYPE /* @min:%2etype */]) {\r\n if (obj[strRemoveEventListener]) {\r\n obj[strRemoveEventListener](evtName[_DYN_TYPE /* @min:%2etype */], handlerRef, useCapture);\r\n }\r\n else if (obj[strDetachEvent]) {\r\n obj[strDetachEvent](strOnPrefix + evtName[_DYN_TYPE /* @min:%2etype */], handlerRef);\r\n }\r\n }\r\n}\r\nfunction _doAttach(obj, evtName, handlerRef, useCapture) {\r\n var result = false;\r\n if (obj && evtName && evtName[_DYN_TYPE /* @min:%2etype */] && handlerRef) {\r\n if (obj[strAddEventHelper]) {\r\n // all browsers except IE before version 9\r\n obj[strAddEventHelper](evtName[_DYN_TYPE /* @min:%2etype */], handlerRef, useCapture);\r\n result = true;\r\n }\r\n else if (obj[strAttachEvent]) {\r\n // IE before version 9\r\n obj[strAttachEvent](strOnPrefix + evtName[_DYN_TYPE /* @min:%2etype */], handlerRef);\r\n result = true;\r\n }\r\n }\r\n return result;\r\n}\r\nfunction _doUnregister(target, events, evtName, unRegFn) {\r\n var idx = events[_DYN_LENGTH /* @min:%2elength */];\r\n while (idx--) {\r\n var theEvent = events[idx];\r\n if (theEvent) {\r\n if (!evtName.ns || evtName.ns === theEvent.evtName.ns) {\r\n if (!unRegFn || unRegFn(theEvent)) {\r\n _doDetach(target, theEvent.evtName, theEvent[_DYN_HANDLER /* @min:%2ehandler */], theEvent.capture);\r\n // Remove the registered event\r\n events[_DYN_SPLICE /* @min:%2esplice */](idx, 1);\r\n }\r\n }\r\n }\r\n }\r\n}\r\nfunction _unregisterEvents(target, evtName, unRegFn) {\r\n if (evtName[_DYN_TYPE /* @min:%2etype */]) {\r\n _doUnregister(target, _getRegisteredEvents(target, evtName[_DYN_TYPE /* @min:%2etype */]), evtName, unRegFn);\r\n }\r\n else {\r\n var eventCache = elmNodeData.get(target, strEvents, {});\r\n objForEachKey(eventCache, function (evtType, events) {\r\n _doUnregister(target, events, evtName, unRegFn);\r\n });\r\n // Cleanup\r\n if (objKeys(eventCache)[_DYN_LENGTH /* @min:%2elength */] === 0) {\r\n elmNodeData.kill(target, strEvents);\r\n }\r\n }\r\n}\r\nexport function mergeEvtNamespace(theNamespace, namespaces) {\r\n var newNamespaces;\r\n if (namespaces) {\r\n if (isArray(namespaces)) {\r\n newNamespaces = [theNamespace].concat(namespaces);\r\n }\r\n else {\r\n newNamespaces = [theNamespace, namespaces];\r\n }\r\n // resort the namespaces so they are always in order\r\n newNamespaces = (_getEvtNamespace(\"xx\", newNamespaces).ns)[_DYN_SPLIT /* @min:%2esplit */](\".\");\r\n }\r\n else {\r\n newNamespaces = theNamespace;\r\n }\r\n return newNamespaces;\r\n}\r\n/**\r\n * Binds the specified function to an event, so that the function gets called whenever the event fires on the object\r\n * @param obj Object to add the event too.\r\n * @param eventName String that specifies any of the standard DHTML Events without \"on\" prefix, if may also include an optional (dot \".\" prefixed)\r\n * namespaces \"click\" \"click.mynamespace\" in addition to specific namespaces.\r\n * @param handlerRef Pointer that specifies the function to call when event fires\r\n * @param evtNamespace - [Optional] Additional namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace,\r\n * if the eventName also includes a namespace the namespace(s) are merged into a single namespace\r\n * @param useCapture [Optional] Defaults to false\r\n * @returns True if the function was bound successfully to the event, otherwise false\r\n */\r\nexport function eventOn(target, eventName, handlerRef, evtNamespace, useCapture) {\r\n var _a;\r\n if (useCapture === void 0) { useCapture = false; }\r\n var result = false;\r\n if (target) {\r\n try {\r\n var evtName = _getEvtNamespace(eventName, evtNamespace);\r\n result = _doAttach(target, evtName, handlerRef, useCapture);\r\n if (result && elmNodeData.accept(target)) {\r\n var registeredEvent = (_a = {\r\n guid: _guid++,\r\n evtName: evtName\r\n },\r\n _a[_DYN_HANDLER /* @min:handler */] = handlerRef,\r\n _a.capture = useCapture,\r\n _a);\r\n _getRegisteredEvents(target, evtName.type)[_DYN_PUSH /* @min:%2epush */](registeredEvent);\r\n }\r\n }\r\n catch (e) {\r\n // Just Ignore any error so that we don't break any execution path\r\n }\r\n }\r\n return result;\r\n}\r\n/**\r\n * Removes an event handler for the specified event\r\n * @param Object to remove the event from\r\n * @param eventName {string} - The name of the event, with optional namespaces or just the namespaces,\r\n * such as \"click\", \"click.mynamespace\" or \".mynamespace\"\r\n * @param handlerRef {any} - The callback function that needs to be removed from the given event, when using a\r\n * namespace (with or without a qualifying event) this may be null to remove all previously attached event handlers\r\n * otherwise this will only remove events with this specific handler.\r\n * @param evtNamespace - [Optional] Additional namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace,\r\n * if the eventName also includes a namespace the namespace(s) are merged into a single namespace\r\n * @param useCapture [Optional] Defaults to false\r\n */\r\nexport function eventOff(target, eventName, handlerRef, evtNamespace, useCapture) {\r\n if (useCapture === void 0) { useCapture = false; }\r\n if (target) {\r\n try {\r\n var evtName_1 = _getEvtNamespace(eventName, evtNamespace);\r\n var found_1 = false;\r\n _unregisterEvents(target, evtName_1, function (regEvent) {\r\n if ((evtName_1.ns && !handlerRef) || regEvent[_DYN_HANDLER /* @min:%2ehandler */] === handlerRef) {\r\n found_1 = true;\r\n return true;\r\n }\r\n return false;\r\n });\r\n if (!found_1) {\r\n // fallback to try and remove as requested\r\n _doDetach(target, evtName_1, handlerRef, useCapture);\r\n }\r\n }\r\n catch (e) {\r\n // Just Ignore any error so that we don't break any execution path\r\n }\r\n }\r\n}\r\n/**\r\n * Binds the specified function to an event, so that the function gets called whenever the event fires on the object\r\n * @param obj Object to add the event too.\r\n * @param eventNameWithoutOn String that specifies any of the standard DHTML Events without \"on\" prefix and optional (dot \".\" prefixed) namespaces \"click\" \"click.mynamespace\".\r\n * @param handlerRef Pointer that specifies the function to call when event fires\r\n * @param useCapture [Optional] Defaults to false\r\n * @returns True if the function was bound successfully to the event, otherwise false\r\n */\r\nexport function attachEvent(obj, eventNameWithoutOn, handlerRef, useCapture) {\r\n if (useCapture === void 0) { useCapture = false; }\r\n return eventOn(obj, eventNameWithoutOn, handlerRef, null, useCapture);\r\n}\r\n/**\r\n * Removes an event handler for the specified event\r\n * @param Object to remove the event from\r\n * @param eventNameWithoutOn {string} - The name of the event, with optional namespaces or just the namespaces,\r\n * such as \"click\", \"click.mynamespace\" or \".mynamespace\"\r\n * @param handlerRef {any} - The callback function that needs to be removed from the given event, when using a\r\n * namespace (with or without a qualifying event) this may be null to remove all previously attached event handlers\r\n * otherwise this will only remove events with this specific handler.\r\n * @param useCapture [Optional] Defaults to false\r\n */\r\nexport function detachEvent(obj, eventNameWithoutOn, handlerRef, useCapture) {\r\n if (useCapture === void 0) { useCapture = false; }\r\n eventOff(obj, eventNameWithoutOn, handlerRef, null, useCapture);\r\n}\r\n/**\r\n * Trys to add an event handler for the specified event to the window, body and document\r\n * @param eventName {string} - The name of the event\r\n * @param callback {any} - The callback function that needs to be executed for the given event\r\n * @param evtNamespace - [Optional] Namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace.\r\n * @return {boolean} - true if the handler was successfully added\r\n */\r\nexport function addEventHandler(eventName, callback, evtNamespace) {\r\n var result = false;\r\n var w = getWindow();\r\n if (w) {\r\n result = eventOn(w, eventName, callback, evtNamespace);\r\n result = eventOn(w[\"body\"], eventName, callback, evtNamespace) || result;\r\n }\r\n var doc = getDocument();\r\n if (doc) {\r\n result = eventOn(doc, eventName, callback, evtNamespace) || result;\r\n }\r\n return result;\r\n}\r\n/**\r\n * Trys to remove event handler(s) for the specified event/namespace to the window, body and document\r\n * @param eventName {string} - The name of the event, with optional namespaces or just the namespaces,\r\n * such as \"click\", \"click.mynamespace\" or \".mynamespace\"\r\n * @param callback {any} - - The callback function that needs to be removed from the given event, when using a\r\n * namespace (with or without a qualifying event) this may be null to remove all previously attached event handlers\r\n * otherwise this will only remove events with this specific handler.\r\n * @param evtNamespace - [Optional] Namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace.\r\n */\r\nexport function removeEventHandler(eventName, callback, evtNamespace) {\r\n var w = getWindow();\r\n if (w) {\r\n eventOff(w, eventName, callback, evtNamespace);\r\n eventOff(w[\"body\"], eventName, callback, evtNamespace);\r\n }\r\n var doc = getDocument();\r\n if (doc) {\r\n eventOff(doc, eventName, callback, evtNamespace);\r\n }\r\n}\r\n/**\r\n * Bind the listener to the array of events\r\n * @param events An string array of event names to bind the listener to\r\n * @param listener The event callback to call when the event is triggered\r\n * @param excludeEvents - [Optional] An array of events that should not be hooked (if possible), unless no other events can be.\r\n * @param evtNamespace - [Optional] Namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace.\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nfunction _addEventListeners(events, listener, excludeEvents, evtNamespace) {\r\n var added = false;\r\n if (listener && events && events[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n arrForEach(events, function (name) {\r\n if (name) {\r\n if (!excludeEvents || arrIndexOf(excludeEvents, name) === -1) {\r\n added = addEventHandler(name, listener, evtNamespace) || added;\r\n }\r\n }\r\n });\r\n }\r\n return added;\r\n}\r\n/**\r\n * Bind the listener to the array of events\r\n * @param events An string array of event names to bind the listener to\r\n * @param listener The event callback to call when the event is triggered\r\n * @param excludeEvents - [Optional] An array of events that should not be hooked (if possible), unless no other events can be.\r\n * @param evtNamespace - [Optional] Namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace.\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nexport function addEventListeners(events, listener, excludeEvents, evtNamespace) {\r\n var added = false;\r\n if (listener && events && isArray(events)) {\r\n added = _addEventListeners(events, listener, excludeEvents, evtNamespace);\r\n if (!added && excludeEvents && excludeEvents[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n // Failed to add any listeners and we excluded some, so just attempt to add the excluded events\r\n added = _addEventListeners(events, listener, null, evtNamespace);\r\n }\r\n }\r\n return added;\r\n}\r\n/**\r\n * Remove the listener from the array of events\r\n * @param events An string array of event names to bind the listener to\r\n * @param listener The event callback to call when the event is triggered\r\n * @param evtNamespace - [Optional] Namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace.\r\n */\r\nexport function removeEventListeners(events, listener, evtNamespace) {\r\n if (events && isArray(events)) {\r\n arrForEach(events, function (name) {\r\n if (name) {\r\n removeEventHandler(name, listener, evtNamespace);\r\n }\r\n });\r\n }\r\n}\r\n/**\r\n * Listen to the 'beforeunload', 'unload' and 'pagehide' events which indicates a page unload is occurring,\r\n * this does NOT listen to the 'visibilitychange' event as while it does indicate that the page is being hidden\r\n * it does not *necessarily* mean that the page is being completely unloaded, it can mean that the user is\r\n * just navigating to a different Tab and may come back (without unloading the page). As such you may also\r\n * need to listen to the 'addPageHideEventListener' and 'addPageShowEventListener' events.\r\n * @param listener - The event callback to call when a page unload event is triggered\r\n * @param excludeEvents - [Optional] An array of events that should not be hooked, unless no other events can be.\r\n * @param evtNamespace - [Optional] Namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace.\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nexport function addPageUnloadEventListener(listener, excludeEvents, evtNamespace) {\r\n // Hook the unload event for the document, window and body to ensure that the client events are flushed to the server\r\n // As just hooking the window does not always fire (on chrome) for page navigation's.\r\n return addEventListeners([strBeforeUnload, strUnload, strPageHide], listener, excludeEvents, evtNamespace);\r\n}\r\n/**\r\n * Remove any matching 'beforeunload', 'unload' and 'pagehide' events that may have been added via addEventListener,\r\n * addEventListeners, addPageUnloadEventListener or addPageHideEventListener.\r\n * @param listener - The specific event callback to to be removed\r\n * @param evtNamespace - [Optional] Namespace(s) uniquely identified and removed based on this namespace.\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nexport function removePageUnloadEventListener(listener, evtNamespace) {\r\n removeEventListeners([strBeforeUnload, strUnload, strPageHide], listener, evtNamespace);\r\n}\r\n/**\r\n * Listen to the pagehide and visibility changing to 'hidden' events, because the 'visibilitychange' uses\r\n * an internal proxy to detect the visibility state you SHOULD use a unique namespace when if you plan to call\r\n * removePageShowEventListener as the remove ignores the listener argument for the 'visibilitychange' event.\r\n * @param listener - The event callback to call when a page hide event is triggered\r\n * @param excludeEvents - [Optional] An array of events that should not be hooked (if possible), unless no other events can be.\r\n * @param evtNamespace - [Optional] A Namespace to append to the event listeners so they can be uniquely identified and removed\r\n * based on this namespace. This call also adds an additional unique \"pageshow\" namespace to the events\r\n * so that only the matching \"removePageHideEventListener\" can remove these events.\r\n * Suggestion: pass as true if you are also calling addPageUnloadEventListener as that also hooks pagehide\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nexport function addPageHideEventListener(listener, excludeEvents, evtNamespace) {\r\n function _handlePageVisibility(evt) {\r\n var doc = getDocument();\r\n if (listener && doc && doc.visibilityState === \"hidden\") {\r\n listener(evt);\r\n }\r\n }\r\n // add the unique page show namespace to any provided namespace so we can only remove the ones added by \"pagehide\"\r\n var newNamespaces = mergeEvtNamespace(strPageHideNamespace, evtNamespace);\r\n var pageUnloadAdded = _addEventListeners([strPageHide], listener, excludeEvents, newNamespaces);\r\n if (!excludeEvents || arrIndexOf(excludeEvents, strVisibilityChangeEvt) === -1) {\r\n pageUnloadAdded = _addEventListeners([strVisibilityChangeEvt], _handlePageVisibility, excludeEvents, newNamespaces) || pageUnloadAdded;\r\n }\r\n if (!pageUnloadAdded && excludeEvents) {\r\n // Failed to add any listeners and we where requested to exclude some, so just call again without excluding anything\r\n pageUnloadAdded = addPageHideEventListener(listener, null, evtNamespace);\r\n }\r\n return pageUnloadAdded;\r\n}\r\n/**\r\n * Removes the pageHide event listeners added by addPageHideEventListener, because the 'visibilitychange' uses\r\n * an internal proxy to detect the visibility state you SHOULD use a unique namespace when calling addPageHideEventListener\r\n * as the remove ignores the listener argument for the 'visibilitychange' event.\r\n * @param listener - The specific listener to remove for the 'pageshow' event only (ignored for 'visibilitychange')\r\n * @param evtNamespace - The unique namespace used when calling addPageShowEventListener\r\n */\r\nexport function removePageHideEventListener(listener, evtNamespace) {\r\n // add the unique page show namespace to any provided namespace so we only remove the ones added by \"pagehide\"\r\n var newNamespaces = mergeEvtNamespace(strPageHideNamespace, evtNamespace);\r\n removeEventListeners([strPageHide], listener, newNamespaces);\r\n removeEventListeners([strVisibilityChangeEvt], null, newNamespaces);\r\n}\r\n/**\r\n * Listen to the pageshow and visibility changing to 'visible' events, because the 'visibilitychange' uses\r\n * an internal proxy to detect the visibility state you SHOULD use a unique namespace when if you plan to call\r\n * removePageShowEventListener as the remove ignores the listener argument for the 'visibilitychange' event.\r\n * @param listener - The event callback to call when a page is show event is triggered\r\n * @param excludeEvents - [Optional] An array of events that should not be hooked (if possible), unless no other events can be.\r\n * @param evtNamespace - [Optional/Recommended] A Namespace to append to the event listeners so they can be uniquely\r\n * identified and removed based on this namespace. This call also adds an additional unique \"pageshow\" namespace to the events\r\n * so that only the matching \"removePageShowEventListener\" can remove these events.\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nexport function addPageShowEventListener(listener, excludeEvents, evtNamespace) {\r\n function _handlePageVisibility(evt) {\r\n var doc = getDocument();\r\n if (listener && doc && doc.visibilityState === \"visible\") {\r\n listener(evt);\r\n }\r\n }\r\n // add the unique page show namespace to any provided namespace so we can only remove the ones added by \"pageshow\"\r\n var newNamespaces = mergeEvtNamespace(strPageShowNamespace, evtNamespace);\r\n var pageShowAdded = _addEventListeners([strPageShow], listener, excludeEvents, newNamespaces);\r\n pageShowAdded = _addEventListeners([strVisibilityChangeEvt], _handlePageVisibility, excludeEvents, newNamespaces) || pageShowAdded;\r\n if (!pageShowAdded && excludeEvents) {\r\n // Failed to add any listeners and we where requested to exclude some, so just call again without excluding anything\r\n pageShowAdded = addPageShowEventListener(listener, null, evtNamespace);\r\n }\r\n return pageShowAdded;\r\n}\r\n/**\r\n * Removes the pageShow event listeners added by addPageShowEventListener, because the 'visibilitychange' uses\r\n * an internal proxy to detect the visibility state you SHOULD use a unique namespace when calling addPageShowEventListener\r\n * as the remove ignores the listener argument for the 'visibilitychange' event.\r\n * @param listener - The specific listener to remove for the 'pageshow' event only (ignored for 'visibilitychange')\r\n * @param evtNamespace - The unique namespace used when calling addPageShowEventListener\r\n */\r\nexport function removePageShowEventListener(listener, evtNamespace) {\r\n // add the unique page show namespace to any provided namespace so we only remove the ones added by \"pageshow\"\r\n var newNamespaces = mergeEvtNamespace(strPageShowNamespace, evtNamespace);\r\n removeEventListeners([strPageShow], listener, newNamespaces);\r\n removeEventListeners([strVisibilityChangeEvt], null, newNamespaces);\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Core, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n\"use strict\";\r\nimport { objCreateFn, strShimUndefined } from \"@microsoft/applicationinsights-shims\";\r\nimport { _DYN_LENGTH, _DYN_PUSH, _DYN_SET_ENABLED, _DYN_SUBSTR, _DYN_SUBSTRING } from \"../__DynamicConstants\";\r\nimport { _gblCookieMgr } from \"./CookieMgr\";\r\nimport { getPerformance, isIE } from \"./EnvUtils\";\r\nimport { addEventHandler, attachEvent, detachEvent } from \"./EventHelpers\";\r\nimport { arrForEach, arrIndexOf, arrMap, arrReduce, dateNow, hasOwnProperty, isArray, isBoolean, isDate, isError, isFunction, isNullOrUndefined, isNumber, isObject, isString, isTypeof, isUndefined, objDefineAccessors, objKeys, strTrim, toISOString } from \"./HelperFuncs\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\nimport { mwcRandom32, mwcRandomSeed, newId, random32, randomValue } from \"./RandomHelper\";\r\nvar _cookieMgrs = null;\r\nvar _canUseCookies; // legacy supported config\r\n// Added to help with minfication\r\nexport var Undefined = strShimUndefined;\r\nexport function newGuid() {\r\n var uuid = generateW3CId();\r\n return uuid[_DYN_SUBSTRING /* @min:%2esubstring */](0, 8) + \"-\" + uuid[_DYN_SUBSTRING /* @min:%2esubstring */](8, 12) + \"-\" + uuid[_DYN_SUBSTRING /* @min:%2esubstring */](12, 16) + \"-\" + uuid[_DYN_SUBSTRING /* @min:%2esubstring */](16, 20) + \"-\" + uuid[_DYN_SUBSTRING /* @min:%2esubstring */](20);\r\n}\r\n/**\r\n * Return the current value of the Performance Api now() function (if available) and fallback to dateNow() if it is unavailable (IE9 or less)\r\n * https://caniuse.com/#search=performance.now\r\n */\r\nexport function perfNow() {\r\n var perf = getPerformance();\r\n if (perf && perf.now) {\r\n return perf.now();\r\n }\r\n return dateNow();\r\n}\r\n/**\r\n * The strEndsWith() method determines whether a string ends with the characters of a specified string, returning true or false as appropriate.\r\n * @param value - The value to check whether it ends with the search value.\r\n * @param search - The characters to be searched for at the end of the value.\r\n * @returns true if the given search value is found at the end of the string, otherwise false.\r\n */\r\nexport function strEndsWith(value, search) {\r\n if (value && search) {\r\n var len = value[_DYN_LENGTH /* @min:%2elength */];\r\n var start = len - search[_DYN_LENGTH /* @min:%2elength */];\r\n return value[_DYN_SUBSTRING /* @min:%2esubstring */](start >= 0 ? start : 0, len) === search;\r\n }\r\n return false;\r\n}\r\n/**\r\n * generate W3C trace id\r\n */\r\nexport function generateW3CId() {\r\n var hexValues = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\"];\r\n // rfc4122 version 4 UUID without dashes and with lowercase letters\r\n var oct = STR_EMPTY, tmp;\r\n for (var a = 0; a < 4; a++) {\r\n tmp = random32();\r\n oct +=\r\n hexValues[tmp & 0xF] +\r\n hexValues[tmp >> 4 & 0xF] +\r\n hexValues[tmp >> 8 & 0xF] +\r\n hexValues[tmp >> 12 & 0xF] +\r\n hexValues[tmp >> 16 & 0xF] +\r\n hexValues[tmp >> 20 & 0xF] +\r\n hexValues[tmp >> 24 & 0xF] +\r\n hexValues[tmp >> 28 & 0xF];\r\n }\r\n // \"Set the two most significant bits (bits 6 and 7) of the clock_seq_hi_and_reserved to zero and one, respectively\"\r\n var clockSequenceHi = hexValues[8 + (random32() & 0x03) | 0];\r\n return oct[_DYN_SUBSTR /* @min:%2esubstr */](0, 8) + oct[_DYN_SUBSTR /* @min:%2esubstr */](9, 4) + \"4\" + oct[_DYN_SUBSTR /* @min:%2esubstr */](13, 3) + clockSequenceHi + oct[_DYN_SUBSTR /* @min:%2esubstr */](16, 3) + oct[_DYN_SUBSTR /* @min:%2esubstr */](19, 12);\r\n}\r\n/**\r\n * Provides a collection of utility functions, included for backward compatibility with previous releases.\r\n * @deprecated Marking this instance as deprecated in favor of direct usage of the helper functions\r\n * as direct usage provides better tree-shaking and minification by avoiding the inclusion of the unused items\r\n * in your resulting code.\r\n */\r\nexport var CoreUtils = {\r\n _canUseCookies: undefined,\r\n isTypeof: isTypeof,\r\n isUndefined: isUndefined,\r\n isNullOrUndefined: isNullOrUndefined,\r\n hasOwnProperty: hasOwnProperty,\r\n isFunction: isFunction,\r\n isObject: isObject,\r\n isDate: isDate,\r\n isArray: isArray,\r\n isError: isError,\r\n isString: isString,\r\n isNumber: isNumber,\r\n isBoolean: isBoolean,\r\n toISOString: toISOString,\r\n arrForEach: arrForEach,\r\n arrIndexOf: arrIndexOf,\r\n arrMap: arrMap,\r\n arrReduce: arrReduce,\r\n strTrim: strTrim,\r\n objCreate: objCreateFn,\r\n objKeys: objKeys,\r\n objDefineAccessors: objDefineAccessors,\r\n addEventHandler: addEventHandler,\r\n dateNow: dateNow,\r\n isIE: isIE,\r\n disableCookies: disableCookies,\r\n newGuid: newGuid,\r\n perfNow: perfNow,\r\n newId: newId,\r\n randomValue: randomValue,\r\n random32: random32,\r\n mwcRandomSeed: mwcRandomSeed,\r\n mwcRandom32: mwcRandom32,\r\n generateW3CId: generateW3CId\r\n};\r\nvar GuidRegex = /[xy]/g;\r\nexport var EventHelper = {\r\n Attach: attachEvent,\r\n AttachEvent: attachEvent,\r\n Detach: detachEvent,\r\n DetachEvent: detachEvent\r\n};\r\n/**\r\n * Helper to support backward compatibility for users that use the legacy cookie handling functions and the use the internal\r\n * CoreUtils._canUseCookies global flag to enable/disable cookies usage.\r\n * Note: This has the following deliberate side-effects\r\n * - Creates the global (legacy) cookie manager if it does not already exist\r\n * - Attempts to add \"listeners\" to the CoreUtils._canUseCookies property to support the legacy usage\r\n * @param config\r\n * @param logger\r\n * @returns\r\n */\r\nexport function _legacyCookieMgr(config, logger) {\r\n var cookieMgr = _gblCookieMgr(config, logger);\r\n var legacyCanUseCookies = CoreUtils._canUseCookies;\r\n if (_cookieMgrs === null) {\r\n _cookieMgrs = [];\r\n _canUseCookies = legacyCanUseCookies;\r\n // Dynamically create get/set property accessors for backward compatibility for enabling / disabling cookies\r\n // this WILL NOT work for ES3 browsers (< IE8)\r\n objDefineAccessors(CoreUtils, \"_canUseCookies\", function () {\r\n return _canUseCookies;\r\n }, function (value) {\r\n _canUseCookies = value;\r\n arrForEach(_cookieMgrs, function (mgr) {\r\n mgr[_DYN_SET_ENABLED /* @min:%2esetEnabled */](value);\r\n });\r\n });\r\n }\r\n if (arrIndexOf(_cookieMgrs, cookieMgr) === -1) {\r\n _cookieMgrs[_DYN_PUSH /* @min:%2epush */](cookieMgr);\r\n }\r\n if (isBoolean(legacyCanUseCookies)) {\r\n cookieMgr[_DYN_SET_ENABLED /* @min:%2esetEnabled */](legacyCanUseCookies);\r\n }\r\n if (isBoolean(_canUseCookies)) {\r\n cookieMgr[_DYN_SET_ENABLED /* @min:%2esetEnabled */](_canUseCookies);\r\n }\r\n return cookieMgr;\r\n}\r\n/**\r\n * @deprecated - Use the core.getCookieMgr().disable()\r\n * Force the SDK not to store and read any data from cookies.\r\n */\r\nexport function disableCookies() {\r\n _legacyCookieMgr()[_DYN_SET_ENABLED /* @min:%2esetEnabled */](false);\r\n}\r\n/**\r\n * @deprecated - Use the core.getCookieMgr().isEnabled()\r\n * Helper method to tell if document.cookie object is available and whether it can be used.\r\n */\r\nexport function canUseCookies(logger) {\r\n return _legacyCookieMgr(null, logger).isEnabled();\r\n}\r\n/**\r\n * @deprecated - Use the core.getCookieMgr().get()\r\n * helper method to access userId and sessionId cookie\r\n */\r\nexport function getCookie(logger, name) {\r\n return _legacyCookieMgr(null, logger).get(name);\r\n}\r\n/**\r\n * @deprecated - Use the core.getCookieMgr().set()\r\n * helper method to set userId and sessionId cookie\r\n */\r\nexport function setCookie(logger, name, value, domain) {\r\n _legacyCookieMgr(null, logger).set(name, value, null, domain);\r\n}\r\n/**\r\n * @deprecated - Use the core.getCookieMgr().del()\r\n * Deletes a cookie by setting it's expiration time in the past.\r\n * @param name - The name of the cookie to delete.\r\n */\r\nexport function deleteCookie(logger, name) {\r\n return _legacyCookieMgr(null, logger).del(name);\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Core, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport { _DYN_LENGTH, _DYN_SPAN_ID, _DYN_SUBSTR, _DYN_TRACE_FLAGS, _DYN_TRACE_ID, _DYN_VERSION } from \"../__DynamicConstants\";\r\nimport { generateW3CId } from \"./CoreUtils\";\r\nimport { findMetaTag, findNamedServerTiming } from \"./EnvUtils\";\r\nimport { isArray, isString, strTrim } from \"./HelperFuncs\";\r\n// using {0,16} for leading and trailing whitespace just to constrain the possible runtime of a random string\r\nvar TRACE_PARENT_REGEX = /^([\\da-f]{2})-([\\da-f]{32})-([\\da-f]{16})-([\\da-f]{2})(-[^\\s]*)?$/;\r\nvar DEFAULT_VERSION = \"00\";\r\nvar INVALID_VERSION = \"ff\";\r\nvar INVALID_TRACE_ID = \"00000000000000000000000000000000\";\r\nvar INVALID_SPAN_ID = \"0000000000000000\";\r\nvar SAMPLED_FLAG = 0x01;\r\nfunction _isValid(value, len, invalidValue) {\r\n if (value && value[_DYN_LENGTH /* @min:%2elength */] === len && value !== invalidValue) {\r\n return !!value.match(/^[\\da-f]*$/);\r\n }\r\n return false;\r\n}\r\nfunction _formatValue(value, len, defValue) {\r\n if (_isValid(value, len)) {\r\n return value;\r\n }\r\n return defValue;\r\n}\r\nfunction _formatFlags(value) {\r\n if (isNaN(value) || value < 0 || value > 255) {\r\n value = 0x01;\r\n }\r\n var result = value.toString(16);\r\n while (result[_DYN_LENGTH /* @min:%2elength */] < 2) {\r\n result = \"0\" + result;\r\n }\r\n return result;\r\n}\r\n/**\r\n * Create a new ITraceParent instance using the provided values.\r\n * @param traceId - The traceId to use, when invalid a new random W3C id will be generated.\r\n * @param spanId - The parent/span id to use, a new random value will be generated if it is invalid.\r\n * @param flags - The traceFlags to use, defaults to zero (0) if not supplied or invalid\r\n * @param version - The version to used, defaults to version \"01\" if not supplied or invalid.\r\n * @returns\r\n */\r\nexport function createTraceParent(traceId, spanId, flags, version) {\r\n var _a;\r\n return _a = {},\r\n _a[_DYN_VERSION /* @min:version */] = _isValid(version, 2, INVALID_VERSION) ? version : DEFAULT_VERSION,\r\n _a[_DYN_TRACE_ID /* @min:traceId */] = isValidTraceId(traceId) ? traceId : generateW3CId(),\r\n _a.spanId = isValidSpanId(spanId) ? spanId : generateW3CId()[_DYN_SUBSTR /* @min:%2esubstr */](0, 16),\r\n _a.traceFlags = flags >= 0 && flags <= 0xFF ? flags : 1,\r\n _a;\r\n}\r\n/**\r\n * Attempt to parse the provided string as a W3C TraceParent header value (https://www.w3.org/TR/trace-context/#traceparent-header)\r\n *\r\n * @param value\r\n * @returns\r\n */\r\nexport function parseTraceParent(value) {\r\n var _a;\r\n if (!value) {\r\n // Don't pass a null/undefined or empty string\r\n return null;\r\n }\r\n if (isArray(value)) {\r\n // The value may have been encoded on the page into an array so handle this automatically\r\n value = value[0] || \"\";\r\n }\r\n if (!value || !isString(value) || value[_DYN_LENGTH /* @min:%2elength */] > 8192) {\r\n // limit potential processing based on total length\r\n return null;\r\n }\r\n // See https://www.w3.org/TR/trace-context/#versioning-of-traceparent\r\n var match = TRACE_PARENT_REGEX.exec(strTrim(value));\r\n if (!match || // No match\r\n match[1] === INVALID_VERSION || // version ff is forbidden\r\n match[2] === INVALID_TRACE_ID || // All zeros is considered to be invalid\r\n match[3] === INVALID_SPAN_ID) { // All zeros is considered to be invalid\r\n return null;\r\n }\r\n return _a = {},\r\n _a[_DYN_VERSION /* @min:version */] = match[1],\r\n _a[_DYN_TRACE_ID /* @min:traceId */] = match[2],\r\n _a[_DYN_SPAN_ID /* @min:spanId */] = match[3],\r\n _a[_DYN_TRACE_FLAGS /* @min:traceFlags */] = parseInt(match[4], 16),\r\n _a;\r\n}\r\n/**\r\n * Is the provided W3c Trace Id a valid string representation, it must be a 32-character string\r\n * of lowercase hexadecimal characters for example, 4bf92f3577b34da6a3ce929d0e0e4736.\r\n * If all characters as zero (00000000000000000000000000000000) it will be considered an invalid value.\r\n * @param value - The W3c trace Id to be validated\r\n * @returns true if valid otherwise false\r\n */\r\nexport function isValidTraceId(value) {\r\n return _isValid(value, 32, INVALID_TRACE_ID);\r\n}\r\n/**\r\n * Is the provided W3c span id (aka. parent id) a valid string representation, it must be a 16-character\r\n * string of lowercase hexadecimal characters, for example, 00f067aa0ba902b7.\r\n * If all characters are zero (0000000000000000) this is considered an invalid value.\r\n * @param value - The W3c span id to be validated\r\n * @returns true if valid otherwise false\r\n */\r\nexport function isValidSpanId(value) {\r\n return _isValid(value, 16, INVALID_SPAN_ID);\r\n}\r\n/**\r\n * Validates that the provided ITraceParent instance conforms to the currently supported specifications\r\n * @param value\r\n * @returns\r\n */\r\nexport function isValidTraceParent(value) {\r\n if (!value ||\r\n !_isValid(value[_DYN_VERSION /* @min:%2eversion */], 2, INVALID_VERSION) ||\r\n !_isValid(value[_DYN_TRACE_ID /* @min:%2etraceId */], 32, INVALID_TRACE_ID) ||\r\n !_isValid(value[_DYN_SPAN_ID /* @min:%2espanId */], 16, INVALID_SPAN_ID) ||\r\n !_isValid(_formatFlags(value[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */]), 2)) {\r\n // Each known field must contain a valid value\r\n return false;\r\n }\r\n return true;\r\n}\r\n/**\r\n * Is the parsed traceParent indicating that the trace is currently sampled.\r\n * @param value - The parsed traceParent value\r\n * @returns\r\n */\r\nexport function isSampledFlag(value) {\r\n if (isValidTraceParent(value)) {\r\n return (value[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] & SAMPLED_FLAG) === SAMPLED_FLAG;\r\n }\r\n return false;\r\n}\r\n/**\r\n * Format the ITraceParent value as a string using the supported and know version formats.\r\n * So even if the passed traceParent is a later version the string value returned from this\r\n * function will convert it to only the known version formats.\r\n * This currently only supports version \"00\" and invalid \"ff\"\r\n * @param value - The parsed traceParent value\r\n * @returns\r\n */\r\nexport function formatTraceParent(value) {\r\n if (value) {\r\n // Special Note: This only supports formatting as version 00, future versions should encode any known supported version\r\n // So parsing a future version will populate the correct version value but reformatting will reduce it to version 00.\r\n var flags = _formatFlags(value[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */]);\r\n if (!_isValid(flags, 2)) {\r\n flags = \"01\";\r\n }\r\n var version = value[_DYN_VERSION /* @min:%2eversion */] || DEFAULT_VERSION;\r\n if (version !== \"00\" && version !== \"ff\") {\r\n // Reduce version to \"00\"\r\n version = DEFAULT_VERSION;\r\n }\r\n // Format as version 00\r\n return \"\".concat(version, \"-\").concat(_formatValue(value.traceId, 32, INVALID_TRACE_ID), \"-\").concat(_formatValue(value.spanId, 16, INVALID_SPAN_ID), \"-\").concat(flags);\r\n }\r\n return \"\";\r\n}\r\n/**\r\n * Helper function to fetch the passed traceparent from the page, looking for it as a meta-tag or a Server-Timing header.\r\n * @returns\r\n */\r\nexport function findW3cTraceParent() {\r\n var name = \"traceparent\";\r\n var traceParent = parseTraceParent(findMetaTag(name));\r\n if (!traceParent) {\r\n traceParent = parseTraceParent(findNamedServerTiming(name));\r\n }\r\n return traceParent;\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Common, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n/**\r\n * This is an internal property used to cause internal (reporting) requests to be ignored from reporting\r\n * additional telemetry, to handle polyfil implementations ALL urls used with a disabled request will\r\n * also be ignored for future requests even when this property is not provided.\r\n * Tagging as Ignore as this is an internal value and is not expected to be used outside of the SDK\r\n * @ignore\r\n */\r\nexport var DisabledPropertyName = \"Microsoft_ApplicationInsights_BypassAjaxInstrumentation\";\r\nexport var SampleRate = \"sampleRate\";\r\nexport var ProcessLegacy = \"ProcessLegacy\";\r\nexport var HttpMethod = \"http.method\";\r\nexport var DEFAULT_BREEZE_ENDPOINT = \"https://dc.services.visualstudio.com\";\r\nexport var DEFAULT_BREEZE_PATH = \"/v2/track\";\r\nexport var strNotSpecified = \"not_specified\";\r\nexport var strIkey = \"iKey\";\r\n","/*\n * Application Insights JavaScript SDK - Common, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { isFunction, getDocument } from \"@microsoft/applicationinsights-core-js\";\r\nexport function createDomEvent(eventName) {\r\n var event = null;\r\n if (isFunction(Event)) { // Use Event constructor when available\r\n event = new Event(eventName);\r\n }\r\n else { // Event has no constructor in IE\r\n var doc = getDocument();\r\n if (doc && doc.createEvent) {\r\n event = doc.createEvent(\"Event\");\r\n event.initEvent(eventName, true, true);\r\n }\r\n }\r\n return event;\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Common, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// @skip-file-minify\r\n// ##############################################################\r\n// AUTO GENERATED FILE: This file is Auto Generated during build.\r\n// ##############################################################\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\nexport var _DYN_SPLIT = \"split\"; // Count: 6\r\nexport var _DYN_LENGTH = \"length\"; // Count: 41\r\nexport var _DYN_TO_LOWER_CASE = \"toLowerCase\"; // Count: 6\r\nexport var _DYN_INGESTIONENDPOINT = \"ingestionendpoint\"; // Count: 4\r\nexport var _DYN_TO_STRING = \"toString\"; // Count: 12\r\nexport var _DYN_REMOVE_ITEM = \"removeItem\"; // Count: 3\r\nexport var _DYN_NAME = \"name\"; // Count: 11\r\nexport var _DYN_MESSAGE = \"message\"; // Count: 10\r\nexport var _DYN_COUNT = \"count\"; // Count: 8\r\nexport var _DYN_PRE_TRIGGER_DATE = \"preTriggerDate\"; // Count: 4\r\nexport var _DYN_DISABLED = \"disabled\"; // Count: 3\r\nexport var _DYN_DATE = \"date\"; // Count: 5\r\nexport var _DYN_GET_UTCDATE = \"getUTCDate\"; // Count: 3\r\nexport var _DYN_MAX_TIMES_PER_MONTH = \"maxTimesPerMonth\"; // Count: 2\r\nexport var _DYN_STRINGIFY = \"stringify\"; // Count: 4\r\nexport var _DYN_PATHNAME = \"pathname\"; // Count: 4\r\nexport var _DYN_CORRELATION_HEADER_E0 = \"correlationHeaderExcludePatterns\"; // Count: 2\r\nexport var _DYN_INDEX_OF = \"indexOf\"; // Count: 4\r\nexport var _DYN_EXTENSION_CONFIG = \"extensionConfig\"; // Count: 4\r\nexport var _DYN_EXCEPTIONS = \"exceptions\"; // Count: 6\r\nexport var _DYN_PARSED_STACK = \"parsedStack\"; // Count: 11\r\nexport var _DYN_PROPERTIES = \"properties\"; // Count: 9\r\nexport var _DYN_MEASUREMENTS = \"measurements\"; // Count: 9\r\nexport var _DYN_SIZE_IN_BYTES = \"sizeInBytes\"; // Count: 11\r\nexport var _DYN_TYPE_NAME = \"typeName\"; // Count: 11\r\nexport var _DYN_SEVERITY_LEVEL = \"severityLevel\"; // Count: 5\r\nexport var _DYN_PROBLEM_GROUP = \"problemGroup\"; // Count: 3\r\nexport var _DYN_IS_MANUAL = \"isManual\"; // Count: 3\r\nexport var _DYN__CREATE_FROM_INTERFA1 = \"CreateFromInterface\"; // Count: 2\r\nexport var _DYN_HAS_FULL_STACK = \"hasFullStack\"; // Count: 6\r\nexport var _DYN_LEVEL = \"level\"; // Count: 5\r\nexport var _DYN_METHOD = \"method\"; // Count: 7\r\nexport var _DYN_ASSEMBLY = \"assembly\"; // Count: 5\r\nexport var _DYN_FILE_NAME = \"fileName\"; // Count: 6\r\nexport var _DYN_LINE = \"line\"; // Count: 6\r\nexport var _DYN_DURATION = \"duration\"; // Count: 4\r\nexport var _DYN_RECEIVED_RESPONSE = \"receivedResponse\"; // Count: 2\r\nexport var _DYN_SUBSTRING = \"substring\"; // Count: 6\r\nexport var _DYN_SANITIZE_KEY_AND_ADD2 = \"sanitizeKeyAndAddUniqueness\"; // Count: 2\r\nexport var _DYN_SANITIZE_EXCEPTION = \"sanitizeException\"; // Count: 2\r\nexport var _DYN_SANITIZE_PROPERTIES = \"sanitizeProperties\"; // Count: 2\r\nexport var _DYN_SANITIZE_MEASUREMENT3 = \"sanitizeMeasurements\"; // Count: 2\r\n","/*\n * Application Insights JavaScript SDK - Common, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { arrForEach, isString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_LENGTH, _DYN_TO_LOWER_CASE } from \"./__DynamicConstants\";\r\nvar strEmpty = \"\";\r\nexport function stringToBoolOrDefault(str, defaultValue) {\r\n if (defaultValue === void 0) { defaultValue = false; }\r\n if (str === undefined || str === null) {\r\n return defaultValue;\r\n }\r\n return str.toString()[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]() === \"true\";\r\n}\r\n/**\r\n * Convert ms to c# time span format\r\n */\r\nexport function msToTimeSpan(totalms) {\r\n if (isNaN(totalms) || totalms < 0) {\r\n totalms = 0;\r\n }\r\n totalms = Math.round(totalms);\r\n var ms = strEmpty + totalms % 1000;\r\n var sec = strEmpty + Math.floor(totalms / 1000) % 60;\r\n var min = strEmpty + Math.floor(totalms / (1000 * 60)) % 60;\r\n var hour = strEmpty + Math.floor(totalms / (1000 * 60 * 60)) % 24;\r\n var days = Math.floor(totalms / (1000 * 60 * 60 * 24));\r\n ms = ms[_DYN_LENGTH /* @min:%2elength */] === 1 ? \"00\" + ms : ms[_DYN_LENGTH /* @min:%2elength */] === 2 ? \"0\" + ms : ms;\r\n sec = sec[_DYN_LENGTH /* @min:%2elength */] < 2 ? \"0\" + sec : sec;\r\n min = min[_DYN_LENGTH /* @min:%2elength */] < 2 ? \"0\" + min : min;\r\n hour = hour[_DYN_LENGTH /* @min:%2elength */] < 2 ? \"0\" + hour : hour;\r\n return (days > 0 ? days + \".\" : strEmpty) + hour + \":\" + min + \":\" + sec + \".\" + ms;\r\n}\r\nexport function getExtensionByName(extensions, identifier) {\r\n var extension = null;\r\n arrForEach(extensions, function (value) {\r\n if (value.identifier === identifier) {\r\n extension = value;\r\n return -1;\r\n }\r\n });\r\n return extension;\r\n}\r\nexport function isCrossOriginError(message, url, lineNumber, columnNumber, error) {\r\n return !error && isString(message) && (message === \"Script error.\" || message === \"Script error\");\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Core, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { objForEachKey, deepFreeze } from \"../JavaScriptSDK/HelperFuncs\";\r\n/**\r\n * Create an enum style object which has both the key => value and value => key mappings\r\n * @param values - The values to populate on the new object\r\n * @returns\r\n */\r\nexport function createEnumStyle(values) {\r\n var enumClass = {};\r\n objForEachKey(values, function (field, value) {\r\n enumClass[field] = value;\r\n enumClass[value] = field;\r\n });\r\n return deepFreeze(enumClass);\r\n}\r\n/**\r\n * Create a 2 index map that maps an enum's key as both the key and value, X[\"key\"] => \"key\" and X[0] => \"keyof 0\".\r\n * @param values - The values to populate on the new object\r\n * @returns\r\n */\r\nexport function createEnumMap(values) {\r\n var mapClass = {};\r\n objForEachKey(values, function (field, value) {\r\n mapClass[field] = field;\r\n mapClass[value] = field;\r\n });\r\n return deepFreeze(mapClass);\r\n}\r\n/**\r\n * Create a 2 index map that maps an enum's key and value to the defined map value, X[\"key\"] => mapValue and X[0] => mapValue.\r\n * Generic values\r\n * - E = the const enum type (typeof eRequestHeaders);\r\n * - V = Identifies the valid values for the keys, this should include both the enum numeric and string key of the type. The\r\n * resulting \"Value\" of each entry identifies the valid values withing the assignments.\r\n * @param values - The values to populate on the new object\r\n * @returns\r\n */\r\nexport function createValueMap(values) {\r\n var mapClass = {};\r\n objForEachKey(values, function (field, value) {\r\n mapClass[field] = value[1];\r\n mapClass[value[0]] = value[1];\r\n });\r\n return deepFreeze(mapClass);\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Common, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { createValueMap } from \"@microsoft/applicationinsights-core-js\";\r\nexport var RequestHeaders = createValueMap({\r\n requestContextHeader: [0 /* eRequestHeaders.requestContextHeader */, \"Request-Context\"],\r\n requestContextTargetKey: [1 /* eRequestHeaders.requestContextTargetKey */, \"appId\"],\r\n requestContextAppIdFormat: [2 /* eRequestHeaders.requestContextAppIdFormat */, \"appId=cid-v1:\"],\r\n requestIdHeader: [3 /* eRequestHeaders.requestIdHeader */, \"Request-Id\"],\r\n traceParentHeader: [4 /* eRequestHeaders.traceParentHeader */, \"traceparent\"],\r\n traceStateHeader: [5 /* eRequestHeaders.traceStateHeader */, \"tracestate\"],\r\n sdkContextHeader: [6 /* eRequestHeaders.sdkContextHeader */, \"Sdk-Context\"],\r\n sdkContextHeaderAppIdRequest: [7 /* eRequestHeaders.sdkContextHeaderAppIdRequest */, \"appId\"],\r\n requestContextHeaderLowerCase: [8 /* eRequestHeaders.requestContextHeaderLowerCase */, \"request-context\"]\r\n});\r\n","/*\n * Application Insights JavaScript SDK - Common, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nvar _a;\r\nimport { _throwInternal, getJSON, hasJSON, isObject, objForEachKey, strTrim } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_LENGTH, _DYN_SANITIZE_EXCEPTION, _DYN_SANITIZE_KEY_AND_ADD2, _DYN_SANITIZE_MEASUREMENT3, _DYN_SANITIZE_PROPERTIES, _DYN_STRINGIFY, _DYN_SUBSTRING, _DYN_TO_STRING } from \"../../__DynamicConstants\";\r\nexport function dataSanitizeKeyAndAddUniqueness(logger, key, map) {\r\n var origLength = key[_DYN_LENGTH /* @min:%2elength */];\r\n var field = dataSanitizeKey(logger, key);\r\n // validation truncated the length. We need to add uniqueness\r\n if (field[_DYN_LENGTH /* @min:%2elength */] !== origLength) {\r\n var i = 0;\r\n var uniqueField = field;\r\n while (map[uniqueField] !== undefined) {\r\n i++;\r\n uniqueField = field[_DYN_SUBSTRING /* @min:%2esubstring */](0, 150 /* DataSanitizerValues.MAX_NAME_LENGTH */ - 3) + dsPadNumber(i);\r\n }\r\n field = uniqueField;\r\n }\r\n return field;\r\n}\r\nexport function dataSanitizeKey(logger, name) {\r\n var nameTrunc;\r\n if (name) {\r\n // Remove any leading or trailing whitespace\r\n name = strTrim(name[_DYN_TO_STRING /* @min:%2etoString */]());\r\n // truncate the string to 150 chars\r\n if (name[_DYN_LENGTH /* @min:%2elength */] > 150 /* DataSanitizerValues.MAX_NAME_LENGTH */) {\r\n nameTrunc = name[_DYN_SUBSTRING /* @min:%2esubstring */](0, 150 /* DataSanitizerValues.MAX_NAME_LENGTH */);\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 57 /* _eInternalMessageId.NameTooLong */, \"name is too long. It has been truncated to \" + 150 /* DataSanitizerValues.MAX_NAME_LENGTH */ + \" characters.\", { name: name }, true);\r\n }\r\n }\r\n return nameTrunc || name;\r\n}\r\nexport function dataSanitizeString(logger, value, maxLength) {\r\n if (maxLength === void 0) { maxLength = 1024 /* DataSanitizerValues.MAX_STRING_LENGTH */; }\r\n var valueTrunc;\r\n if (value) {\r\n maxLength = maxLength ? maxLength : 1024 /* DataSanitizerValues.MAX_STRING_LENGTH */; // in case default parameters dont work\r\n value = strTrim(value);\r\n if (value.toString()[_DYN_LENGTH /* @min:%2elength */] > maxLength) {\r\n valueTrunc = value[_DYN_TO_STRING /* @min:%2etoString */]()[_DYN_SUBSTRING /* @min:%2esubstring */](0, maxLength);\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 61 /* _eInternalMessageId.StringValueTooLong */, \"string value is too long. It has been truncated to \" + maxLength + \" characters.\", { value: value }, true);\r\n }\r\n }\r\n return valueTrunc || value;\r\n}\r\nexport function dataSanitizeUrl(logger, url) {\r\n return dataSanitizeInput(logger, url, 2048 /* DataSanitizerValues.MAX_URL_LENGTH */, 66 /* _eInternalMessageId.UrlTooLong */);\r\n}\r\nexport function dataSanitizeMessage(logger, message) {\r\n var messageTrunc;\r\n if (message) {\r\n if (message[_DYN_LENGTH /* @min:%2elength */] > 32768 /* DataSanitizerValues.MAX_MESSAGE_LENGTH */) {\r\n messageTrunc = message[_DYN_SUBSTRING /* @min:%2esubstring */](0, 32768 /* DataSanitizerValues.MAX_MESSAGE_LENGTH */);\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 56 /* _eInternalMessageId.MessageTruncated */, \"message is too long, it has been truncated to \" + 32768 /* DataSanitizerValues.MAX_MESSAGE_LENGTH */ + \" characters.\", { message: message }, true);\r\n }\r\n }\r\n return messageTrunc || message;\r\n}\r\nexport function dataSanitizeException(logger, exception) {\r\n var exceptionTrunc;\r\n if (exception) {\r\n // Make surte its a string\r\n var value = \"\" + exception;\r\n if (value[_DYN_LENGTH /* @min:%2elength */] > 32768 /* DataSanitizerValues.MAX_EXCEPTION_LENGTH */) {\r\n exceptionTrunc = value[_DYN_SUBSTRING /* @min:%2esubstring */](0, 32768 /* DataSanitizerValues.MAX_EXCEPTION_LENGTH */);\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 52 /* _eInternalMessageId.ExceptionTruncated */, \"exception is too long, it has been truncated to \" + 32768 /* DataSanitizerValues.MAX_EXCEPTION_LENGTH */ + \" characters.\", { exception: exception }, true);\r\n }\r\n }\r\n return exceptionTrunc || exception;\r\n}\r\nexport function dataSanitizeProperties(logger, properties) {\r\n if (properties) {\r\n var tempProps_1 = {};\r\n objForEachKey(properties, function (prop, value) {\r\n if (isObject(value) && hasJSON()) {\r\n // Stringify any part C properties\r\n try {\r\n value = getJSON()[_DYN_STRINGIFY /* @min:%2estringify */](value);\r\n }\r\n catch (e) {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 49 /* _eInternalMessageId.CannotSerializeObjectNonSerializable */, \"custom property is not valid\", { exception: e }, true);\r\n }\r\n }\r\n value = dataSanitizeString(logger, value, 8192 /* DataSanitizerValues.MAX_PROPERTY_LENGTH */);\r\n prop = dataSanitizeKeyAndAddUniqueness(logger, prop, tempProps_1);\r\n tempProps_1[prop] = value;\r\n });\r\n properties = tempProps_1;\r\n }\r\n return properties;\r\n}\r\nexport function dataSanitizeMeasurements(logger, measurements) {\r\n if (measurements) {\r\n var tempMeasurements_1 = {};\r\n objForEachKey(measurements, function (measure, value) {\r\n measure = dataSanitizeKeyAndAddUniqueness(logger, measure, tempMeasurements_1);\r\n tempMeasurements_1[measure] = value;\r\n });\r\n measurements = tempMeasurements_1;\r\n }\r\n return measurements;\r\n}\r\nexport function dataSanitizeId(logger, id) {\r\n return id ? dataSanitizeInput(logger, id, 128 /* DataSanitizerValues.MAX_ID_LENGTH */, 69 /* _eInternalMessageId.IdTooLong */)[_DYN_TO_STRING /* @min:%2etoString */]() : id;\r\n}\r\nexport function dataSanitizeInput(logger, input, maxLength, _msgId) {\r\n var inputTrunc;\r\n if (input) {\r\n input = strTrim(input);\r\n if (input[_DYN_LENGTH /* @min:%2elength */] > maxLength) {\r\n inputTrunc = input[_DYN_SUBSTRING /* @min:%2esubstring */](0, maxLength);\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, _msgId, \"input is too long, it has been truncated to \" + maxLength + \" characters.\", { data: input }, true);\r\n }\r\n }\r\n return inputTrunc || input;\r\n}\r\nexport function dsPadNumber(num) {\r\n var s = \"00\" + num;\r\n return s.substr(s[_DYN_LENGTH /* @min:%2elength */] - 3);\r\n}\r\n/**\r\n * Provides the DataSanitizer functions within the previous namespace.\r\n */\r\nexport var DataSanitizer = (_a = {\r\n MAX_NAME_LENGTH: 150 /* DataSanitizerValues.MAX_NAME_LENGTH */,\r\n MAX_ID_LENGTH: 128 /* DataSanitizerValues.MAX_ID_LENGTH */,\r\n MAX_PROPERTY_LENGTH: 8192 /* DataSanitizerValues.MAX_PROPERTY_LENGTH */,\r\n MAX_STRING_LENGTH: 1024 /* DataSanitizerValues.MAX_STRING_LENGTH */,\r\n MAX_URL_LENGTH: 2048 /* DataSanitizerValues.MAX_URL_LENGTH */,\r\n MAX_MESSAGE_LENGTH: 32768 /* DataSanitizerValues.MAX_MESSAGE_LENGTH */,\r\n MAX_EXCEPTION_LENGTH: 32768 /* DataSanitizerValues.MAX_EXCEPTION_LENGTH */\r\n },\r\n _a[_DYN_SANITIZE_KEY_AND_ADD2 /* @min:sanitizeKeyAndAddUniqueness */] = dataSanitizeKeyAndAddUniqueness,\r\n _a.sanitizeKey = dataSanitizeKey,\r\n _a.sanitizeString = dataSanitizeString,\r\n _a.sanitizeUrl = dataSanitizeUrl,\r\n _a.sanitizeMessage = dataSanitizeMessage,\r\n _a[_DYN_SANITIZE_EXCEPTION /* @min:sanitizeException */] = dataSanitizeException,\r\n _a[_DYN_SANITIZE_PROPERTIES /* @min:sanitizeProperties */] = dataSanitizeProperties,\r\n _a[_DYN_SANITIZE_MEASUREMENT3 /* @min:sanitizeMeasurements */] = dataSanitizeMeasurements,\r\n _a.sanitizeId = dataSanitizeId,\r\n _a.sanitizeInput = dataSanitizeInput,\r\n _a.padNumber = dsPadNumber,\r\n _a.trim = strTrim,\r\n _a);\r\n","/*\n * Application Insights JavaScript SDK - Common, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { createEnumStyle } from \"@microsoft/applicationinsights-core-js\";\r\nexport var StorageType = createEnumStyle({\r\n LocalStorage: 0 /* eStorageType.LocalStorage */,\r\n SessionStorage: 1 /* eStorageType.SessionStorage */\r\n});\r\nexport var DistributedTracingModes = createEnumStyle({\r\n AI: 0 /* eDistributedTracingModes.AI */,\r\n AI_AND_W3C: 1 /* eDistributedTracingModes.AI_AND_W3C */,\r\n W3C: 2 /* eDistributedTracingModes.W3C */\r\n});\r\n","/*\n * Application Insights JavaScript SDK - Common, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { _throwInternal, dumpObj, getExceptionName, getGlobal, getGlobalInst, isNullOrUndefined, objForEachKey } from \"@microsoft/applicationinsights-core-js\";\r\nimport { StorageType } from \"./Enums\";\r\nimport { _DYN_REMOVE_ITEM, _DYN_TO_STRING } from \"./__DynamicConstants\";\r\nvar _canUseLocalStorage = undefined;\r\nvar _canUseSessionStorage = undefined;\r\n/**\r\n * Gets the localStorage object if available\r\n * @return {Storage} - Returns the storage object if available else returns null\r\n */\r\nfunction _getLocalStorageObject() {\r\n if (utlCanUseLocalStorage()) {\r\n return _getVerifiedStorageObject(StorageType.LocalStorage);\r\n }\r\n return null;\r\n}\r\n/**\r\n * Tests storage object (localStorage or sessionStorage) to verify that it is usable\r\n * More details here: https://mathiasbynens.be/notes/localstorage-pattern\r\n * @param storageType Type of storage\r\n * @return {Storage} Returns storage object verified that it is usable\r\n */\r\nfunction _getVerifiedStorageObject(storageType) {\r\n try {\r\n if (isNullOrUndefined(getGlobal())) {\r\n return null;\r\n }\r\n var uid = (new Date)[_DYN_TO_STRING /* @min:%2etoString */]();\r\n var storage = getGlobalInst(storageType === StorageType.LocalStorage ? \"localStorage\" : \"sessionStorage\");\r\n storage.setItem(uid, uid);\r\n var fail = storage.getItem(uid) !== uid;\r\n storage[_DYN_REMOVE_ITEM /* @min:%2eremoveItem */](uid);\r\n if (!fail) {\r\n return storage;\r\n }\r\n }\r\n catch (exception) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n return null;\r\n}\r\n/**\r\n * Gets the sessionStorage object if available\r\n * @return {Storage} - Returns the storage object if available else returns null\r\n */\r\nfunction _getSessionStorageObject() {\r\n if (utlCanUseSessionStorage()) {\r\n return _getVerifiedStorageObject(StorageType.SessionStorage);\r\n }\r\n return null;\r\n}\r\n/**\r\n * Disables the global SDK usage of local or session storage if available\r\n */\r\nexport function utlDisableStorage() {\r\n _canUseLocalStorage = false;\r\n _canUseSessionStorage = false;\r\n}\r\n/**\r\n * Re-enables the global SDK usage of local or session storage if available\r\n */\r\nexport function utlEnableStorage() {\r\n _canUseLocalStorage = utlCanUseLocalStorage(true);\r\n _canUseSessionStorage = utlCanUseSessionStorage(true);\r\n}\r\n/**\r\n * Returns whether LocalStorage can be used, if the reset parameter is passed a true this will override\r\n * any previous disable calls.\r\n * @param reset - Should the usage be reset and determined only based on whether LocalStorage is available\r\n */\r\nexport function utlCanUseLocalStorage(reset) {\r\n if (reset || _canUseLocalStorage === undefined) {\r\n _canUseLocalStorage = !!_getVerifiedStorageObject(StorageType.LocalStorage);\r\n }\r\n return _canUseLocalStorage;\r\n}\r\nexport function utlGetLocalStorage(logger, name) {\r\n var storage = _getLocalStorageObject();\r\n if (storage !== null) {\r\n try {\r\n return storage.getItem(name);\r\n }\r\n catch (e) {\r\n _canUseLocalStorage = false;\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 1 /* _eInternalMessageId.BrowserCannotReadLocalStorage */, \"Browser failed read of local storage. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return null;\r\n}\r\nexport function utlSetLocalStorage(logger, name, data) {\r\n var storage = _getLocalStorageObject();\r\n if (storage !== null) {\r\n try {\r\n storage.setItem(name, data);\r\n return true;\r\n }\r\n catch (e) {\r\n _canUseLocalStorage = false;\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 3 /* _eInternalMessageId.BrowserCannotWriteLocalStorage */, \"Browser failed write to local storage. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return false;\r\n}\r\nexport function utlRemoveStorage(logger, name) {\r\n var storage = _getLocalStorageObject();\r\n if (storage !== null) {\r\n try {\r\n storage[_DYN_REMOVE_ITEM /* @min:%2eremoveItem */](name);\r\n return true;\r\n }\r\n catch (e) {\r\n _canUseLocalStorage = false;\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 5 /* _eInternalMessageId.BrowserFailedRemovalFromLocalStorage */, \"Browser failed removal of local storage item. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return false;\r\n}\r\nexport function utlCanUseSessionStorage(reset) {\r\n if (reset || _canUseSessionStorage === undefined) {\r\n _canUseSessionStorage = !!_getVerifiedStorageObject(StorageType.SessionStorage);\r\n }\r\n return _canUseSessionStorage;\r\n}\r\nexport function utlGetSessionStorageKeys() {\r\n var keys = [];\r\n if (utlCanUseSessionStorage()) {\r\n objForEachKey(getGlobalInst(\"sessionStorage\"), function (key) {\r\n keys.push(key);\r\n });\r\n }\r\n return keys;\r\n}\r\nexport function utlGetSessionStorage(logger, name) {\r\n var storage = _getSessionStorageObject();\r\n if (storage !== null) {\r\n try {\r\n return storage.getItem(name);\r\n }\r\n catch (e) {\r\n _canUseSessionStorage = false;\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 2 /* _eInternalMessageId.BrowserCannotReadSessionStorage */, \"Browser failed read of session storage. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return null;\r\n}\r\nexport function utlSetSessionStorage(logger, name, data) {\r\n var storage = _getSessionStorageObject();\r\n if (storage !== null) {\r\n try {\r\n storage.setItem(name, data);\r\n return true;\r\n }\r\n catch (e) {\r\n _canUseSessionStorage = false;\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 4 /* _eInternalMessageId.BrowserCannotWriteSessionStorage */, \"Browser failed write to session storage. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return false;\r\n}\r\nexport function utlRemoveSessionStorage(logger, name) {\r\n var storage = _getSessionStorageObject();\r\n if (storage !== null) {\r\n try {\r\n storage[_DYN_REMOVE_ITEM /* @min:%2eremoveItem */](name);\r\n return true;\r\n }\r\n catch (e) {\r\n _canUseSessionStorage = false;\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 6 /* _eInternalMessageId.BrowserFailedRemovalFromSessionStorage */, \"Browser failed removal of session storage item. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return false;\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Common, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { getDocument, isString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_LENGTH, _DYN_PATHNAME, _DYN_TO_LOWER_CASE } from \"./__DynamicConstants\";\r\nvar _document = getDocument() || {};\r\nvar _htmlAnchorIdx = 0;\r\n// Use an array of temporary values as it's possible for multiple calls to parseUrl() will be called with different URLs\r\n// Using a cache size of 5 for now as it current depth usage is at least 2, so adding a minor buffer to handle future updates\r\nvar _htmlAnchorElement = [null, null, null, null, null];\r\nexport function urlParseUrl(url) {\r\n var anchorIdx = _htmlAnchorIdx;\r\n var anchorCache = _htmlAnchorElement;\r\n var tempAnchor = anchorCache[anchorIdx];\r\n if (!_document.createElement) {\r\n // Always create the temp instance if createElement is not available\r\n tempAnchor = { host: urlParseHost(url, true) };\r\n }\r\n else if (!anchorCache[anchorIdx]) {\r\n // Create and cache the unattached anchor instance\r\n tempAnchor = anchorCache[anchorIdx] = _document.createElement(\"a\");\r\n }\r\n tempAnchor.href = url;\r\n // Move the cache index forward\r\n anchorIdx++;\r\n if (anchorIdx >= anchorCache[_DYN_LENGTH /* @min:%2elength */]) {\r\n anchorIdx = 0;\r\n }\r\n _htmlAnchorIdx = anchorIdx;\r\n return tempAnchor;\r\n}\r\nexport function urlGetAbsoluteUrl(url) {\r\n var result;\r\n var a = urlParseUrl(url);\r\n if (a) {\r\n result = a.href;\r\n }\r\n return result;\r\n}\r\nexport function urlGetPathName(url) {\r\n var result;\r\n var a = urlParseUrl(url);\r\n if (a) {\r\n result = a[_DYN_PATHNAME /* @min:%2epathname */];\r\n }\r\n return result;\r\n}\r\nexport function urlGetCompleteUrl(method, absoluteUrl) {\r\n if (method) {\r\n return method.toUpperCase() + \" \" + absoluteUrl;\r\n }\r\n return absoluteUrl;\r\n}\r\n// Fallback method to grab host from url if document.createElement method is not available\r\nexport function urlParseHost(url, inclPort) {\r\n var fullHost = urlParseFullHost(url, inclPort) || \"\";\r\n if (fullHost) {\r\n var match = fullHost.match(/(www\\d{0,5}\\.)?([^\\/:]{1,256})(:\\d{1,20})?/i);\r\n if (match != null && match[_DYN_LENGTH /* @min:%2elength */] > 3 && isString(match[2]) && match[2][_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n return match[2] + (match[3] || \"\");\r\n }\r\n }\r\n return fullHost;\r\n}\r\nexport function urlParseFullHost(url, inclPort) {\r\n var result = null;\r\n if (url) {\r\n var match = url.match(/(\\w{1,150}):\\/\\/([^\\/:]{1,256})(:\\d{1,20})?/i);\r\n if (match != null && match[_DYN_LENGTH /* @min:%2elength */] > 2 && isString(match[2]) && match[2][_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n result = match[2] || \"\";\r\n if (inclPort && match[_DYN_LENGTH /* @min:%2elength */] > 2) {\r\n var protocol = (match[1] || \"\")[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n var port = match[3] || \"\";\r\n // IE includes the standard port so pass it off if it's the same as the protocol\r\n if (protocol === \"http\" && port === \":80\") {\r\n port = \"\";\r\n }\r\n else if (protocol === \"https\" && port === \":443\") {\r\n port = \"\";\r\n }\r\n result += port;\r\n }\r\n }\r\n }\r\n return result;\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Common, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { arrForEach, arrIndexOf, attachEvent, canUseCookies as coreCanUseCookies, dateNow, deleteCookie as coreDeleteCookie, disableCookies as coreDisableCookies, dumpObj, generateW3CId, getCookie as coreGetCookie, getExceptionName as coreGetExceptionName, getIEVersion, getPerformance, isArray, isBeaconsSupported, isDate, isError, isNullOrUndefined, isValidSpanId, isValidTraceId, newId, random32, setCookie as coreSetCookie, strTrim, toISOString, uaDisallowsSameSiteNone } from \"@microsoft/applicationinsights-core-js\";\r\nimport { DEFAULT_BREEZE_ENDPOINT, DEFAULT_BREEZE_PATH, strNotSpecified } from \"./Constants\";\r\nimport { createDomEvent } from \"./DomHelperFuncs\";\r\nimport { getExtensionByName, isCrossOriginError, msToTimeSpan, stringToBoolOrDefault } from \"./HelperFuncs\";\r\nimport { RequestHeaders } from \"./RequestResponseHeaders\";\r\nimport { utlCanUseLocalStorage, utlCanUseSessionStorage, utlDisableStorage, utlGetLocalStorage, utlGetSessionStorage, utlGetSessionStorageKeys, utlRemoveSessionStorage, utlRemoveStorage, utlSetLocalStorage, utlSetSessionStorage } from \"./StorageHelperFuncs\";\r\nimport { dataSanitizeString } from \"./Telemetry/Common/DataSanitizer\";\r\nimport { urlGetAbsoluteUrl, urlGetCompleteUrl, urlGetPathName, urlParseFullHost, urlParseHost, urlParseUrl } from \"./UrlHelperFuncs\";\r\nimport { _DYN_CORRELATION_HEADER_E0, _DYN_INDEX_OF, _DYN_LENGTH, _DYN_NAME, _DYN_PATHNAME, _DYN_SPLIT, _DYN_TO_LOWER_CASE } from \"./__DynamicConstants\";\r\n// listing only non-geo specific locations\r\nvar _internalEndpoints = [\r\n DEFAULT_BREEZE_ENDPOINT + DEFAULT_BREEZE_PATH,\r\n \"https://breeze.aimon.applicationinsights.io\" + DEFAULT_BREEZE_PATH,\r\n \"https://dc-int.services.visualstudio.com\" + DEFAULT_BREEZE_PATH\r\n];\r\nexport function isInternalApplicationInsightsEndpoint(endpointUrl) {\r\n return arrIndexOf(_internalEndpoints, endpointUrl[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]()) !== -1;\r\n}\r\nexport var Util = {\r\n NotSpecified: strNotSpecified,\r\n createDomEvent: createDomEvent,\r\n disableStorage: utlDisableStorage,\r\n isInternalApplicationInsightsEndpoint: isInternalApplicationInsightsEndpoint,\r\n canUseLocalStorage: utlCanUseLocalStorage,\r\n getStorage: utlGetLocalStorage,\r\n setStorage: utlSetLocalStorage,\r\n removeStorage: utlRemoveStorage,\r\n canUseSessionStorage: utlCanUseSessionStorage,\r\n getSessionStorageKeys: utlGetSessionStorageKeys,\r\n getSessionStorage: utlGetSessionStorage,\r\n setSessionStorage: utlSetSessionStorage,\r\n removeSessionStorage: utlRemoveSessionStorage,\r\n disableCookies: coreDisableCookies,\r\n canUseCookies: coreCanUseCookies,\r\n disallowsSameSiteNone: uaDisallowsSameSiteNone,\r\n setCookie: coreSetCookie,\r\n stringToBoolOrDefault: stringToBoolOrDefault,\r\n getCookie: coreGetCookie,\r\n deleteCookie: coreDeleteCookie,\r\n trim: strTrim,\r\n newId: newId,\r\n random32: function () {\r\n return random32(true);\r\n },\r\n generateW3CId: generateW3CId,\r\n isArray: isArray,\r\n isError: isError,\r\n isDate: isDate,\r\n toISOStringForIE8: toISOString,\r\n getIEVersion: getIEVersion,\r\n msToTimeSpan: msToTimeSpan,\r\n isCrossOriginError: isCrossOriginError,\r\n dump: dumpObj,\r\n getExceptionName: coreGetExceptionName,\r\n addEventHandler: attachEvent,\r\n IsBeaconApiSupported: isBeaconsSupported,\r\n getExtension: getExtensionByName\r\n};\r\nexport var UrlHelper = {\r\n parseUrl: urlParseUrl,\r\n getAbsoluteUrl: urlGetAbsoluteUrl,\r\n getPathName: urlGetPathName,\r\n getCompleteUrl: urlGetCompleteUrl,\r\n parseHost: urlParseHost,\r\n parseFullHost: urlParseFullHost\r\n};\r\nexport var CorrelationIdHelper = {\r\n correlationIdPrefix: \"cid-v1:\",\r\n /**\r\n * Checks if a request url is not on a excluded domain list and if it is safe to add correlation headers.\r\n * Headers are always included if the current domain matches the request domain. If they do not match (CORS),\r\n * they are regex-ed across correlationHeaderDomains and correlationHeaderExcludedDomains to determine if headers are included.\r\n * Some environments don't give information on currentHost via window.location.host (e.g. Cordova). In these cases, the user must\r\n * manually supply domains to include correlation headers on. Else, no headers will be included at all.\r\n */\r\n canIncludeCorrelationHeader: function (config, requestUrl, currentHost) {\r\n if (!requestUrl || (config && config.disableCorrelationHeaders)) {\r\n return false;\r\n }\r\n if (config && config[_DYN_CORRELATION_HEADER_E0 /* @min:%2ecorrelationHeaderExcludePatterns */]) {\r\n for (var i = 0; i < config.correlationHeaderExcludePatterns[_DYN_LENGTH /* @min:%2elength */]; i++) {\r\n if (config[_DYN_CORRELATION_HEADER_E0 /* @min:%2ecorrelationHeaderExcludePatterns */][i].test(requestUrl)) {\r\n return false;\r\n }\r\n }\r\n }\r\n var requestHost = urlParseUrl(requestUrl).host[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n if (requestHost && (requestHost[_DYN_INDEX_OF /* @min:%2eindexOf */](\":443\") !== -1 || requestHost[_DYN_INDEX_OF /* @min:%2eindexOf */](\":80\") !== -1)) {\r\n // [Bug #1260] IE can include the port even for http and https URLs so if present\r\n // try and parse it to remove if it matches the default protocol port\r\n requestHost = (urlParseFullHost(requestUrl, true) || \"\")[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n }\r\n if ((!config || !config.enableCorsCorrelation) && (requestHost && requestHost !== currentHost)) {\r\n return false;\r\n }\r\n var includedDomains = config && config.correlationHeaderDomains;\r\n if (includedDomains) {\r\n var matchExists_1;\r\n arrForEach(includedDomains, function (domain) {\r\n var regex = new RegExp(domain.toLowerCase().replace(/\\\\/g, \"\\\\\\\\\").replace(/\\./g, \"\\\\.\").replace(/\\*/g, \".*\"));\r\n matchExists_1 = matchExists_1 || regex.test(requestHost);\r\n });\r\n if (!matchExists_1) {\r\n return false;\r\n }\r\n }\r\n var excludedDomains = config && config.correlationHeaderExcludedDomains;\r\n if (!excludedDomains || excludedDomains[_DYN_LENGTH /* @min:%2elength */] === 0) {\r\n return true;\r\n }\r\n for (var i = 0; i < excludedDomains[_DYN_LENGTH /* @min:%2elength */]; i++) {\r\n var regex = new RegExp(excludedDomains[i].toLowerCase().replace(/\\\\/g, \"\\\\\\\\\").replace(/\\./g, \"\\\\.\").replace(/\\*/g, \".*\"));\r\n if (regex.test(requestHost)) {\r\n return false;\r\n }\r\n }\r\n // if we don't know anything about the requestHost, require the user to use included/excludedDomains.\r\n // Previously we always returned false for a falsy requestHost\r\n return requestHost && requestHost[_DYN_LENGTH /* @min:%2elength */] > 0;\r\n },\r\n /**\r\n * Combines target appId and target role name from response header.\r\n */\r\n getCorrelationContext: function (responseHeader) {\r\n if (responseHeader) {\r\n var correlationId = CorrelationIdHelper.getCorrelationContextValue(responseHeader, RequestHeaders[1 /* eRequestHeaders.requestContextTargetKey */]);\r\n if (correlationId && correlationId !== CorrelationIdHelper.correlationIdPrefix) {\r\n return correlationId;\r\n }\r\n }\r\n },\r\n /**\r\n * Gets key from correlation response header\r\n */\r\n getCorrelationContextValue: function (responseHeader, key) {\r\n if (responseHeader) {\r\n var keyValues = responseHeader[_DYN_SPLIT /* @min:%2esplit */](\",\");\r\n for (var i = 0; i < keyValues[_DYN_LENGTH /* @min:%2elength */]; ++i) {\r\n var keyValue = keyValues[i][_DYN_SPLIT /* @min:%2esplit */](\"=\");\r\n if (keyValue[_DYN_LENGTH /* @min:%2elength */] === 2 && keyValue[0] === key) {\r\n return keyValue[1];\r\n }\r\n }\r\n }\r\n }\r\n};\r\nexport function AjaxHelperParseDependencyPath(logger, absoluteUrl, method, commandName) {\r\n var target, name = commandName, data = commandName;\r\n if (absoluteUrl && absoluteUrl[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n var parsedUrl = urlParseUrl(absoluteUrl);\r\n target = parsedUrl.host;\r\n if (!name) {\r\n if (parsedUrl[_DYN_PATHNAME /* @min:%2epathname */] != null) {\r\n var pathName = (parsedUrl.pathname[_DYN_LENGTH /* @min:%2elength */] === 0) ? \"/\" : parsedUrl[_DYN_PATHNAME /* @min:%2epathname */];\r\n if (pathName.charAt(0) !== \"/\") {\r\n pathName = \"/\" + pathName;\r\n }\r\n data = parsedUrl[_DYN_PATHNAME /* @min:%2epathname */];\r\n name = dataSanitizeString(logger, method ? method + \" \" + pathName : pathName);\r\n }\r\n else {\r\n name = dataSanitizeString(logger, absoluteUrl);\r\n }\r\n }\r\n }\r\n else {\r\n target = commandName;\r\n name = commandName;\r\n }\r\n return {\r\n target: target,\r\n name: name,\r\n data: data\r\n };\r\n}\r\nexport function dateTimeUtilsNow() {\r\n // returns the window or webworker performance object\r\n var perf = getPerformance();\r\n if (perf && perf.now && perf.timing) {\r\n var now = perf.now() + perf.timing.navigationStart;\r\n // Known issue with IE where this calculation can be negative, so if it is then ignore and fallback\r\n if (now > 0) {\r\n return now;\r\n }\r\n }\r\n return dateNow();\r\n}\r\nexport function dateTimeUtilsDuration(start, end) {\r\n var result = null;\r\n if (start !== 0 && end !== 0 && !isNullOrUndefined(start) && !isNullOrUndefined(end)) {\r\n result = end - start;\r\n }\r\n return result;\r\n}\r\n/**\r\n * A utility class that helps getting time related parameters\r\n */\r\nexport var DateTimeUtils = {\r\n Now: dateTimeUtilsNow,\r\n GetDuration: dateTimeUtilsDuration\r\n};\r\n/**\r\n * Creates a IDistributedTraceContext from an optional telemetryTrace\r\n * @param telemetryTrace - The telemetryTrace instance that is being wrapped\r\n * @param parentCtx - An optional parent distributed trace instance, almost always undefined as this scenario is only used in the case of multiple property handlers.\r\n * @returns A new IDistributedTraceContext instance that is backed by the telemetryTrace or temporary object\r\n */\r\nexport function createDistributedTraceContextFromTrace(telemetryTrace, parentCtx) {\r\n var trace = telemetryTrace || {};\r\n return {\r\n getName: function () {\r\n return trace[_DYN_NAME /* @min:%2ename */];\r\n },\r\n setName: function (newValue) {\r\n parentCtx && parentCtx.setName(newValue);\r\n trace[_DYN_NAME /* @min:%2ename */] = newValue;\r\n },\r\n getTraceId: function () {\r\n return trace.traceID;\r\n },\r\n setTraceId: function (newValue) {\r\n parentCtx && parentCtx.setTraceId(newValue);\r\n if (isValidTraceId(newValue)) {\r\n trace.traceID = newValue;\r\n }\r\n },\r\n getSpanId: function () {\r\n return trace.parentID;\r\n },\r\n setSpanId: function (newValue) {\r\n parentCtx && parentCtx.setSpanId(newValue);\r\n if (isValidSpanId(newValue)) {\r\n trace.parentID = newValue;\r\n }\r\n },\r\n getTraceFlags: function () {\r\n return trace.traceFlags;\r\n },\r\n setTraceFlags: function (newTraceFlags) {\r\n parentCtx && parentCtx.setTraceFlags(newTraceFlags);\r\n trace.traceFlags = newTraceFlags;\r\n }\r\n };\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Core, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { _DYN_COMPLETE, _DYN_GET_CTX, _DYN_IS_ASYNC, _DYN_IS_CHILD_EVT, _DYN_LENGTH, _DYN_NAME, _DYN_PUSH, _DYN_SET_CTX, _DYN_TIME } from \"../__DynamicConstants\";\r\nimport { dateNow, isArray, isFunction, objDefineAccessors } from \"./HelperFuncs\";\r\nimport { STR_GET_PERF_MGR, STR_PERF_EVENT } from \"./InternalConstants\";\r\nvar strExecutionContextKey = \"ctx\";\r\nvar strParentContextKey = \"ParentContextKey\";\r\nvar strChildrenContextKey = \"ChildrenContextKey\";\r\nvar _defaultPerfManager = null;\r\nvar PerfEvent = /** @class */ (function () {\r\n function PerfEvent(name, payloadDetails, isAsync) {\r\n var _self = this;\r\n var accessorDefined = false;\r\n _self.start = dateNow();\r\n _self[_DYN_NAME /* @min:%2ename */] = name;\r\n _self[_DYN_IS_ASYNC /* @min:%2eisAsync */] = isAsync;\r\n _self[_DYN_IS_CHILD_EVT /* @min:%2eisChildEvt */] = function () { return false; };\r\n if (isFunction(payloadDetails)) {\r\n // Create an accessor to minimize the potential performance impact of executing the payloadDetails callback\r\n var theDetails_1;\r\n accessorDefined = objDefineAccessors(_self, \"payload\", function () {\r\n // Delay the execution of the payloadDetails until needed\r\n if (!theDetails_1 && isFunction(payloadDetails)) {\r\n theDetails_1 = payloadDetails();\r\n // clear it out now so the referenced objects can be garbage collected\r\n payloadDetails = null;\r\n }\r\n return theDetails_1;\r\n });\r\n }\r\n _self[_DYN_GET_CTX /* @min:%2egetCtx */] = function (key) {\r\n if (key) {\r\n // The parent and child links are located directly on the object (for better viewing in the DebugPlugin)\r\n if (key === PerfEvent[strParentContextKey] || key === PerfEvent[strChildrenContextKey]) {\r\n return _self[key];\r\n }\r\n return (_self[strExecutionContextKey] || {})[key];\r\n }\r\n return null;\r\n };\r\n _self[_DYN_SET_CTX /* @min:%2esetCtx */] = function (key, value) {\r\n if (key) {\r\n // Put the parent and child links directly on the object (for better viewing in the DebugPlugin)\r\n if (key === PerfEvent[strParentContextKey]) {\r\n // Simple assumption, if we are setting a parent then we must be a child\r\n if (!_self[key]) {\r\n _self[_DYN_IS_CHILD_EVT /* @min:%2eisChildEvt */] = function () { return true; };\r\n }\r\n _self[key] = value;\r\n }\r\n else if (key === PerfEvent[strChildrenContextKey]) {\r\n _self[key] = value;\r\n }\r\n else {\r\n var ctx = _self[strExecutionContextKey] = _self[strExecutionContextKey] || {};\r\n ctx[key] = value;\r\n }\r\n }\r\n };\r\n _self[_DYN_COMPLETE /* @min:%2ecomplete */] = function () {\r\n var childTime = 0;\r\n var childEvts = _self[_DYN_GET_CTX /* @min:%2egetCtx */](PerfEvent[strChildrenContextKey]);\r\n if (isArray(childEvts)) {\r\n for (var lp = 0; lp < childEvts[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n var childEvt = childEvts[lp];\r\n if (childEvt) {\r\n childTime += childEvt[_DYN_TIME /* @min:%2etime */];\r\n }\r\n }\r\n }\r\n _self[_DYN_TIME /* @min:%2etime */] = dateNow() - _self.start;\r\n _self.exTime = _self[_DYN_TIME /* @min:%2etime */] - childTime;\r\n _self[_DYN_COMPLETE /* @min:%2ecomplete */] = function () { };\r\n if (!accessorDefined && isFunction(payloadDetails)) {\r\n // If we couldn't define the property set during complete -- to minimize the perf impact until after the time\r\n _self.payload = payloadDetails();\r\n }\r\n };\r\n }\r\n PerfEvent.ParentContextKey = \"parent\";\r\n PerfEvent.ChildrenContextKey = \"childEvts\";\r\n return PerfEvent;\r\n}());\r\nexport { PerfEvent };\r\nvar PerfManager = /** @class */ (function () {\r\n function PerfManager(manager) {\r\n /**\r\n * General bucket used for execution context set and retrieved via setCtx() and getCtx.\r\n * Defined as private so it can be visualized via the DebugPlugin\r\n */\r\n this.ctx = {};\r\n dynamicProto(PerfManager, this, function (_self) {\r\n _self.create = function (src, payloadDetails, isAsync) {\r\n // TODO (@MSNev): at some point we will want to add additional configuration to \"select\" which events to instrument\r\n // for now this is just a simple do everything.\r\n return new PerfEvent(src, payloadDetails, isAsync);\r\n };\r\n _self.fire = function (perfEvent) {\r\n if (perfEvent) {\r\n perfEvent[_DYN_COMPLETE /* @min:%2ecomplete */]();\r\n if (manager && isFunction(manager[STR_PERF_EVENT /* @min:%2eperfEvent */])) {\r\n manager[STR_PERF_EVENT /* @min:%2eperfEvent */](perfEvent);\r\n }\r\n }\r\n };\r\n _self[_DYN_SET_CTX /* @min:%2esetCtx */] = function (key, value) {\r\n if (key) {\r\n var ctx = _self[strExecutionContextKey] = _self[strExecutionContextKey] || {};\r\n ctx[key] = value;\r\n }\r\n };\r\n _self[_DYN_GET_CTX /* @min:%2egetCtx */] = function (key) {\r\n return (_self[strExecutionContextKey] || {})[key];\r\n };\r\n });\r\n }\r\n// Removed Stub for PerfManager.prototype.create.\r\n// Removed Stub for PerfManager.prototype.fire.\r\n// Removed Stub for PerfManager.prototype.setCtx.\r\n// Removed Stub for PerfManager.prototype.getCtx.\r\n // This is a workaround for an IE8 bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n // this will be removed when ES3 support is dropped.\n PerfManager.__ieDyn=1;\n\n return PerfManager;\r\n}());\r\nexport { PerfManager };\r\nvar doPerfActiveKey = \"CoreUtils.doPerf\";\r\n/**\r\n * Helper function to wrap a function with a perf event\r\n * @param mgrSource - The Performance Manager or a Performance provider source (may be null)\r\n * @param getSource - The callback to create the source name for the event (if perf monitoring is enabled)\r\n * @param func - The function to call and measure\r\n * @param details - A function to return the payload details\r\n * @param isAsync - Is the event / function being call asynchronously or synchronously\r\n */\r\nexport function doPerf(mgrSource, getSource, func, details, isAsync) {\r\n if (mgrSource) {\r\n var perfMgr = mgrSource;\r\n if (perfMgr[STR_GET_PERF_MGR]) {\r\n // Looks like a perf manager provider object\r\n perfMgr = perfMgr[STR_GET_PERF_MGR]();\r\n }\r\n if (perfMgr) {\r\n var perfEvt = void 0;\r\n var currentActive = perfMgr[_DYN_GET_CTX /* @min:%2egetCtx */](doPerfActiveKey);\r\n try {\r\n perfEvt = perfMgr.create(getSource(), details, isAsync);\r\n if (perfEvt) {\r\n if (currentActive && perfEvt[_DYN_SET_CTX /* @min:%2esetCtx */]) {\r\n perfEvt[_DYN_SET_CTX /* @min:%2esetCtx */](PerfEvent[strParentContextKey], currentActive);\r\n if (currentActive[_DYN_GET_CTX /* @min:%2egetCtx */] && currentActive[_DYN_SET_CTX /* @min:%2esetCtx */]) {\r\n var children = currentActive[_DYN_GET_CTX /* @min:%2egetCtx */](PerfEvent[strChildrenContextKey]);\r\n if (!children) {\r\n children = [];\r\n currentActive[_DYN_SET_CTX /* @min:%2esetCtx */](PerfEvent[strChildrenContextKey], children);\r\n }\r\n children[_DYN_PUSH /* @min:%2epush */](perfEvt);\r\n }\r\n }\r\n // Set this event as the active event now\r\n perfMgr[_DYN_SET_CTX /* @min:%2esetCtx */](doPerfActiveKey, perfEvt);\r\n return func(perfEvt);\r\n }\r\n }\r\n catch (ex) {\r\n if (perfEvt && perfEvt[_DYN_SET_CTX /* @min:%2esetCtx */]) {\r\n perfEvt[_DYN_SET_CTX /* @min:%2esetCtx */](\"exception\", ex);\r\n }\r\n }\r\n finally {\r\n // fire the perf event\r\n if (perfEvt) {\r\n perfMgr.fire(perfEvt);\r\n }\r\n // Reset the active event to the previous value\r\n perfMgr[_DYN_SET_CTX /* @min:%2esetCtx */](doPerfActiveKey, currentActive);\r\n }\r\n }\r\n }\r\n return func();\r\n}\r\n/**\r\n * Set the global performance manager to use when there is no core instance or it has not been initialized yet.\r\n * @param perfManager - The IPerfManager instance to use when no performance manager is supplied.\r\n */\r\nexport function setGblPerfMgr(perfManager) {\r\n _defaultPerfManager = perfManager;\r\n}\r\n/**\r\n * Get the current global performance manager that will be used with no performance manager is supplied.\r\n * @returns - The current default manager\r\n */\r\nexport function getGblPerfMgr() {\r\n return _defaultPerfManager;\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Core, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n\"use strict\";\r\nimport { _DYN_CALL, _DYN_GET_NEXT, _DYN_GET_PLUGIN, _DYN_INITIALIZE, _DYN_IS_INITIALIZED, _DYN_LENGTH, _DYN_NAME, _DYN_PUSH, _DYN_SET_NEXT_PLUGIN, _DYN_SPAN_ID, _DYN_TEARDOWN, _DYN_TRACE_FLAGS, _DYN_TRACE_ID, _DYN__DO_TEARDOWN } from \"../__DynamicConstants\";\r\nimport { createElmNodeData } from \"./DataCacheHelper\";\r\nimport { arrForEach, isFunction } from \"./HelperFuncs\";\r\nimport { STR_CORE, STR_PRIORITY, STR_PROCESS_TELEMETRY } from \"./InternalConstants\";\r\nimport { isValidSpanId, isValidTraceId } from \"./W3cTraceParent\";\r\nvar pluginStateData = createElmNodeData(\"plugin\");\r\nexport function _getPluginState(plugin) {\r\n return pluginStateData.get(plugin, \"state\", {}, true);\r\n}\r\n/**\r\n * Initialize the queue of plugins\r\n * @param plugins - The array of plugins to initialize and setting of the next plugin\r\n * @param config The current config for the instance\r\n * @param core THe current core instance\r\n * @param extensions The extensions\r\n */\r\nexport function initializePlugins(processContext, extensions) {\r\n // Set the next plugin and identified the uninitialized plugins\r\n var initPlugins = [];\r\n var lastPlugin = null;\r\n var proxy = processContext[_DYN_GET_NEXT /* @min:%2egetNext */]();\r\n var pluginState;\r\n while (proxy) {\r\n var thePlugin = proxy[_DYN_GET_PLUGIN /* @min:%2egetPlugin */]();\r\n if (thePlugin) {\r\n if (lastPlugin &&\r\n isFunction(lastPlugin[_DYN_SET_NEXT_PLUGIN /* @min:%2esetNextPlugin */]) &&\r\n isFunction(thePlugin[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */])) {\r\n // Set this plugin as the next for the previous one\r\n lastPlugin[_DYN_SET_NEXT_PLUGIN /* @min:%2esetNextPlugin */](thePlugin);\r\n }\r\n var isInitialized = false;\r\n if (isFunction(thePlugin[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */])) {\r\n isInitialized = thePlugin[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */]();\r\n }\r\n else {\r\n pluginState = _getPluginState(thePlugin);\r\n isInitialized = pluginState[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */];\r\n }\r\n if (!isInitialized) {\r\n initPlugins[_DYN_PUSH /* @min:%2epush */](thePlugin);\r\n }\r\n lastPlugin = thePlugin;\r\n proxy = proxy[_DYN_GET_NEXT /* @min:%2egetNext */]();\r\n }\r\n }\r\n // Now initialize the plugins\r\n arrForEach(initPlugins, function (thePlugin) {\r\n var core = processContext[STR_CORE]();\r\n thePlugin[_DYN_INITIALIZE /* @min:%2einitialize */](processContext.getCfg(), core, extensions, processContext[_DYN_GET_NEXT /* @min:%2egetNext */]());\r\n pluginState = _getPluginState(thePlugin);\r\n // Only add the core to the state if the plugin didn't set it (doesn't extent from BaseTelemetryPlugin)\r\n if (!thePlugin[STR_CORE] && !pluginState[STR_CORE]) {\r\n pluginState[STR_CORE] = core;\r\n }\r\n pluginState[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */] = true;\r\n delete pluginState[_DYN_TEARDOWN /* @min:%2eteardown */];\r\n });\r\n}\r\nexport function sortPlugins(plugins) {\r\n // Sort by priority\r\n return plugins.sort(function (extA, extB) {\r\n var result = 0;\r\n if (extB) {\r\n var bHasProcess = isFunction(extB[STR_PROCESS_TELEMETRY]);\r\n if (isFunction(extA[STR_PROCESS_TELEMETRY])) {\r\n result = bHasProcess ? extA[STR_PRIORITY] - extB[STR_PRIORITY] : 1;\r\n }\r\n else if (bHasProcess) {\r\n result = -1;\r\n }\r\n }\r\n else {\r\n result = extA ? 1 : -1;\r\n }\r\n return result;\r\n });\r\n // sort complete\r\n}\r\n/**\r\n * Teardown / Unload helper to perform teardown/unloading operations for the provided components synchronously or asynchronously, this will call any\r\n * _doTeardown() or _doUnload() functions on the provided components to allow them to finish removal.\r\n * @param components - The components you want to unload\r\n * @param unloadCtx - This is the context that should be used during unloading.\r\n * @param unloadState - The details / state of the unload process, it holds details like whether it should be unloaded synchronously or asynchronously and the reason for the unload.\r\n * @param asyncCallback - An optional callback that the plugin must call if it returns true to inform the caller that it has completed any async unload/teardown operations.\r\n * @returns boolean - true if the plugin has or will call asyncCallback, this allows the plugin to perform any asynchronous operations.\r\n */\r\nexport function unloadComponents(components, unloadCtx, unloadState, asyncCallback) {\r\n var idx = 0;\r\n function _doUnload() {\r\n while (idx < components[_DYN_LENGTH /* @min:%2elength */]) {\r\n var component = components[idx++];\r\n if (component) {\r\n var func = component._doUnload || component[_DYN__DO_TEARDOWN /* @min:%2e_doTeardown */];\r\n if (isFunction(func)) {\r\n if (func[_DYN_CALL /* @min:%2ecall */](component, unloadCtx, unloadState, _doUnload) === true) {\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return _doUnload();\r\n}\r\n/**\r\n * Creates a IDistributedTraceContext which optionally also \"sets\" the value on a parent\r\n * @param parentCtx - An optional parent distributed trace instance\r\n * @returns A new IDistributedTraceContext instance that uses an internal temporary object\r\n */\r\nexport function createDistributedTraceContext(parentCtx) {\r\n var trace = {};\r\n return {\r\n getName: function () {\r\n return trace[_DYN_NAME /* @min:%2ename */];\r\n },\r\n setName: function (newValue) {\r\n parentCtx && parentCtx.setName(newValue);\r\n trace[_DYN_NAME /* @min:%2ename */] = newValue;\r\n },\r\n getTraceId: function () {\r\n return trace[_DYN_TRACE_ID /* @min:%2etraceId */];\r\n },\r\n setTraceId: function (newValue) {\r\n parentCtx && parentCtx.setTraceId(newValue);\r\n if (isValidTraceId(newValue)) {\r\n trace[_DYN_TRACE_ID /* @min:%2etraceId */] = newValue;\r\n }\r\n },\r\n getSpanId: function () {\r\n return trace[_DYN_SPAN_ID /* @min:%2espanId */];\r\n },\r\n setSpanId: function (newValue) {\r\n parentCtx && parentCtx.setSpanId(newValue);\r\n if (isValidSpanId(newValue)) {\r\n trace[_DYN_SPAN_ID /* @min:%2espanId */] = newValue;\r\n }\r\n },\r\n getTraceFlags: function () {\r\n return trace[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */];\r\n },\r\n setTraceFlags: function (newTraceFlags) {\r\n parentCtx && parentCtx.setTraceFlags(newTraceFlags);\r\n trace[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] = newTraceFlags;\r\n }\r\n };\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Core, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n\"use strict\";\r\nimport { _DYN_CALL, _DYN_CONFIG, _DYN_CREATE_NEW, _DYN_DIAG_LOG, _DYN_GET_NEXT, _DYN_GET_PLUGIN, _DYN_IDENTIFIER, _DYN_IS_ASYNC, _DYN_IS_INITIALIZED, _DYN_LENGTH, _DYN_LOGGER, _DYN_PROCESS_NEXT, _DYN_PUSH, _DYN_SET_NEXT_PLUGIN, _DYN_TEARDOWN, _DYN_UPDATE } from \"../__DynamicConstants\";\r\nimport { _throwInternal, safeGetLogger } from \"./DiagnosticLogger\";\r\nimport { dumpObj } from \"./EnvUtils\";\r\nimport { arrForEach, isArray, isFunction, isNullOrUndefined, isObject, isUndefined, objExtend, objForEachKey, objFreeze, objKeys, proxyFunctions } from \"./HelperFuncs\";\r\nimport { STR_CORE, STR_DISABLED, STR_EMPTY, STR_EXTENSION_CONFIG, STR_PRIORITY, STR_PROCESS_TELEMETRY } from \"./InternalConstants\";\r\nimport { doPerf } from \"./PerfManager\";\r\nimport { _getPluginState } from \"./TelemetryHelpers\";\r\nvar strTelemetryPluginChain = \"TelemetryPluginChain\";\r\nvar strHasRunFlags = \"_hasRun\";\r\nvar strGetTelCtx = \"_getTelCtx\";\r\nvar _chainId = 0;\r\nfunction _getNextProxyStart(proxy, core, startAt) {\r\n while (proxy) {\r\n if (proxy[_DYN_GET_PLUGIN /* @min:%2egetPlugin */]() === startAt) {\r\n return proxy;\r\n }\r\n proxy = proxy[_DYN_GET_NEXT /* @min:%2egetNext */]();\r\n }\r\n // This wasn't found in the existing chain so create an isolated one with just this plugin\r\n return createTelemetryProxyChain([startAt], core[_DYN_CONFIG /* @min:%2econfig */] || {}, core);\r\n}\r\n/**\r\n * @ignore\r\n * @param telemetryChain\r\n * @param config\r\n * @param core\r\n * @param startAt - Identifies the next plugin to execute, if null there is no \"next\" plugin and if undefined it should assume the start of the chain\r\n * @returns\r\n */\r\nfunction _createInternalContext(telemetryChain, config, core, startAt) {\r\n // We have a special case where we want to start execution from this specific plugin\r\n // or we simply reuse the existing telemetry plugin chain (normal execution case)\r\n var _nextProxy = null; // By Default set as no next plugin\r\n var _onComplete = [];\r\n if (startAt !== null) {\r\n // There is no next element (null) vs not defined (undefined) so use the full chain\r\n _nextProxy = startAt ? _getNextProxyStart(telemetryChain, core, startAt) : telemetryChain;\r\n }\r\n var context = {\r\n _next: _moveNext,\r\n ctx: {\r\n core: function () {\r\n return core;\r\n },\r\n diagLog: function () {\r\n return safeGetLogger(core, config);\r\n },\r\n getCfg: function () {\r\n return config;\r\n },\r\n getExtCfg: _getExtCfg,\r\n getConfig: _getConfig,\r\n hasNext: function () {\r\n return !!_nextProxy;\r\n },\r\n getNext: function () {\r\n return _nextProxy;\r\n },\r\n setNext: function (nextPlugin) {\r\n _nextProxy = nextPlugin;\r\n },\r\n iterate: _iterateChain,\r\n onComplete: _addOnComplete\r\n }\r\n };\r\n function _addOnComplete(onComplete, that) {\r\n var args = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n args[_i - 2] = arguments[_i];\r\n }\r\n if (onComplete) {\r\n _onComplete[_DYN_PUSH /* @min:%2epush */]({\r\n func: onComplete,\r\n self: !isUndefined(that) ? that : context.ctx,\r\n args: args\r\n });\r\n }\r\n }\r\n function _moveNext() {\r\n var nextProxy = _nextProxy;\r\n // Automatically move to the next plugin\r\n _nextProxy = nextProxy ? nextProxy[_DYN_GET_NEXT /* @min:%2egetNext */]() : null;\r\n if (!nextProxy) {\r\n var onComplete = _onComplete;\r\n if (onComplete && onComplete[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n arrForEach(onComplete, function (completeDetails) {\r\n try {\r\n completeDetails.func[_DYN_CALL /* @min:%2ecall */](completeDetails.self, completeDetails.args);\r\n }\r\n catch (e) {\r\n _throwInternal(core[_DYN_LOGGER /* @min:%2elogger */], 2 /* eLoggingSeverity.WARNING */, 73 /* _eInternalMessageId.PluginException */, \"Unexpected Exception during onComplete - \" + dumpObj(e));\r\n }\r\n });\r\n _onComplete = [];\r\n }\r\n }\r\n return nextProxy;\r\n }\r\n function _getExtCfg(identifier, defaultValue, mergeDefault) {\r\n if (defaultValue === void 0) { defaultValue = {}; }\r\n if (mergeDefault === void 0) { mergeDefault = 0 /* GetExtCfgMergeType.None */; }\r\n var theConfig;\r\n if (config) {\r\n var extConfig = config[STR_EXTENSION_CONFIG /* @min:%2eextensionConfig */];\r\n if (extConfig && identifier) {\r\n theConfig = extConfig[identifier];\r\n }\r\n }\r\n if (!theConfig) {\r\n // Just use the defaults\r\n theConfig = defaultValue;\r\n }\r\n else if (isObject(defaultValue)) {\r\n if (mergeDefault !== 0 /* GetExtCfgMergeType.None */) {\r\n // Merge the defaults and configured values\r\n var newConfig_1 = objExtend(true, defaultValue, theConfig);\r\n if (config && mergeDefault === 2 /* GetExtCfgMergeType.MergeDefaultFromRootOrDefault */) {\r\n // Enumerate over the defaultValues and if not already populated attempt to\r\n // find a value from the root config\r\n objForEachKey(defaultValue, function (field) {\r\n // for each unspecified field, set the default value\r\n if (isNullOrUndefined(newConfig_1[field])) {\r\n var cfgValue = config[field];\r\n if (!isNullOrUndefined(cfgValue)) {\r\n newConfig_1[field] = cfgValue;\r\n }\r\n }\r\n });\r\n }\r\n theConfig = newConfig_1;\r\n }\r\n }\r\n return theConfig;\r\n }\r\n function _getConfig(identifier, field, defaultValue) {\r\n if (defaultValue === void 0) { defaultValue = false; }\r\n var theValue;\r\n var extConfig = _getExtCfg(identifier, null);\r\n if (extConfig && !isNullOrUndefined(extConfig[field])) {\r\n theValue = extConfig[field];\r\n }\r\n else if (config && !isNullOrUndefined(config[field])) {\r\n theValue = config[field];\r\n }\r\n return !isNullOrUndefined(theValue) ? theValue : defaultValue;\r\n }\r\n function _iterateChain(cb) {\r\n // Keep processing until we reach the end of the chain\r\n var nextPlugin;\r\n while (!!(nextPlugin = context._next())) {\r\n var plugin = nextPlugin[_DYN_GET_PLUGIN /* @min:%2egetPlugin */]();\r\n if (plugin) {\r\n // callback with the current on\r\n cb(plugin);\r\n }\r\n }\r\n }\r\n return context;\r\n}\r\n/**\r\n * Creates a new Telemetry Item context with the current config, core and plugin execution chain\r\n * @param plugins - The plugin instances that will be executed\r\n * @param config - The current config\r\n * @param core - The current core instance\r\n * @param startAt - Identifies the next plugin to execute, if null there is no \"next\" plugin and if undefined it should assume the start of the chain\r\n */\r\nexport function createProcessTelemetryContext(telemetryChain, config, core, startAt) {\r\n var internalContext = _createInternalContext(telemetryChain, config, core, startAt);\r\n var context = internalContext.ctx;\r\n function _processNext(env) {\r\n var nextPlugin = internalContext._next();\r\n // Run the next plugin which will call \"processNext()\"\r\n nextPlugin && nextPlugin[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */](env, context);\r\n return !nextPlugin;\r\n }\r\n function _createNew(plugins, startAt) {\r\n if (plugins === void 0) { plugins = null; }\r\n if (isArray(plugins)) {\r\n plugins = createTelemetryProxyChain(plugins, config, core, startAt);\r\n }\r\n return createProcessTelemetryContext(plugins || context[_DYN_GET_NEXT /* @min:%2egetNext */](), config, core, startAt);\r\n }\r\n context[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */] = _processNext;\r\n context[_DYN_CREATE_NEW /* @min:%2ecreateNew */] = _createNew;\r\n return context;\r\n}\r\n/**\r\n * Creates a new Telemetry Item context with the current config, core and plugin execution chain for handling the unloading of the chain\r\n * @param plugins - The plugin instances that will be executed\r\n * @param config - The current config\r\n * @param core - The current core instance\r\n * @param startAt - Identifies the next plugin to execute, if null there is no \"next\" plugin and if undefined it should assume the start of the chain\r\n */\r\nexport function createProcessTelemetryUnloadContext(telemetryChain, core, startAt) {\r\n var config = core[_DYN_CONFIG /* @min:%2econfig */] || {};\r\n var internalContext = _createInternalContext(telemetryChain, config, core, startAt);\r\n var context = internalContext.ctx;\r\n function _processNext(unloadState) {\r\n var nextPlugin = internalContext._next();\r\n nextPlugin && nextPlugin.unload(context, unloadState);\r\n return !nextPlugin;\r\n }\r\n function _createNew(plugins, startAt) {\r\n if (plugins === void 0) { plugins = null; }\r\n if (isArray(plugins)) {\r\n plugins = createTelemetryProxyChain(plugins, config, core, startAt);\r\n }\r\n return createProcessTelemetryUnloadContext(plugins || context[_DYN_GET_NEXT /* @min:%2egetNext */](), core, startAt);\r\n }\r\n context[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */] = _processNext;\r\n context[_DYN_CREATE_NEW /* @min:%2ecreateNew */] = _createNew;\r\n return context;\r\n}\r\n/**\r\n * Creates a new Telemetry Item context with the current config, core and plugin execution chain for updating the configuration\r\n * @param plugins - The plugin instances that will be executed\r\n * @param config - The current config\r\n * @param core - The current core instance\r\n * @param startAt - Identifies the next plugin to execute, if null there is no \"next\" plugin and if undefined it should assume the start of the chain\r\n */\r\nexport function createProcessTelemetryUpdateContext(telemetryChain, core, startAt) {\r\n var config = core[_DYN_CONFIG /* @min:%2econfig */] || {};\r\n var internalContext = _createInternalContext(telemetryChain, config, core, startAt);\r\n var context = internalContext.ctx;\r\n function _processNext(updateState) {\r\n return context.iterate(function (plugin) {\r\n if (isFunction(plugin[_DYN_UPDATE /* @min:%2eupdate */])) {\r\n plugin[_DYN_UPDATE /* @min:%2eupdate */](context, updateState);\r\n }\r\n });\r\n }\r\n function _createNew(plugins, startAt) {\r\n if (plugins === void 0) { plugins = null; }\r\n if (isArray(plugins)) {\r\n plugins = createTelemetryProxyChain(plugins, config, core, startAt);\r\n }\r\n return createProcessTelemetryUpdateContext(plugins || context[_DYN_GET_NEXT /* @min:%2egetNext */](), core, startAt);\r\n }\r\n context[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */] = _processNext;\r\n context[_DYN_CREATE_NEW /* @min:%2ecreateNew */] = _createNew;\r\n return context;\r\n}\r\n/**\r\n * Creates an execution chain from the array of plugins\r\n * @param plugins - The array of plugins that will be executed in this order\r\n * @param defItemCtx - The default execution context to use when no telemetry context is passed to processTelemetry(), this\r\n * should be for legacy plugins only. Currently, only used for passing the current core instance and to provide better error\r\n * reporting (hasRun) when errors occur.\r\n */\r\nexport function createTelemetryProxyChain(plugins, config, core, startAt) {\r\n var firstProxy = null;\r\n var add = startAt ? false : true;\r\n if (isArray(plugins) && plugins[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n // Create the proxies and wire up the next plugin chain\r\n var lastProxy_1 = null;\r\n arrForEach(plugins, function (thePlugin) {\r\n if (!add && startAt === thePlugin) {\r\n add = true;\r\n }\r\n if (add && thePlugin && isFunction(thePlugin[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */])) {\r\n // Only add plugins that are processors\r\n var newProxy = createTelemetryPluginProxy(thePlugin, config, core);\r\n if (!firstProxy) {\r\n firstProxy = newProxy;\r\n }\r\n if (lastProxy_1) {\r\n // Set this new proxy as the next for the previous one\r\n lastProxy_1._setNext(newProxy);\r\n }\r\n lastProxy_1 = newProxy;\r\n }\r\n });\r\n }\r\n if (startAt && !firstProxy) {\r\n // Special case where the \"startAt\" was not in the original list of plugins\r\n return createTelemetryProxyChain([startAt], config, core);\r\n }\r\n return firstProxy;\r\n}\r\n/**\r\n * Create the processing telemetry proxy instance, the proxy is used to abstract the current plugin to allow monitoring and\r\n * execution plugins while passing around the dynamic execution state (IProcessTelemetryContext), the proxy instance no longer\r\n * contains any execution state and can be reused between requests (this was not the case for 2.7.2 and earlier with the\r\n * TelemetryPluginChain class).\r\n * @param plugin - The plugin instance to proxy\r\n * @param config - The default execution context to use when no telemetry context is passed to processTelemetry(), this\r\n * should be for legacy plugins only. Currently, only used for passing the current core instance and to provide better error\r\n * reporting (hasRun) when errors occur.\r\n * @returns\r\n */\r\nexport function createTelemetryPluginProxy(plugin, config, core) {\r\n var nextProxy = null;\r\n var hasProcessTelemetry = isFunction(plugin[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */]);\r\n var hasSetNext = isFunction(plugin[_DYN_SET_NEXT_PLUGIN /* @min:%2esetNextPlugin */]);\r\n var chainId;\r\n if (plugin) {\r\n chainId = plugin[_DYN_IDENTIFIER /* @min:%2eidentifier */] + \"-\" + plugin[STR_PRIORITY /* @min:%2epriority */] + \"-\" + _chainId++;\r\n }\r\n else {\r\n chainId = \"Unknown-0-\" + _chainId++;\r\n }\r\n var proxyChain = {\r\n getPlugin: function () {\r\n return plugin;\r\n },\r\n getNext: function () {\r\n return nextProxy;\r\n },\r\n processTelemetry: _processTelemetry,\r\n unload: _unloadPlugin,\r\n update: _updatePlugin,\r\n _id: chainId,\r\n _setNext: function (nextPlugin) {\r\n nextProxy = nextPlugin;\r\n }\r\n };\r\n function _getTelCtx() {\r\n var itemCtx;\r\n // Looks like a plugin didn't pass the (optional) context, so create a new one\r\n if (plugin && isFunction(plugin[strGetTelCtx])) {\r\n // This plugin extends from the BaseTelemetryPlugin so lets use it\r\n itemCtx = plugin[strGetTelCtx]();\r\n }\r\n if (!itemCtx) {\r\n // Create a temporary one\r\n itemCtx = createProcessTelemetryContext(proxyChain, config, core);\r\n }\r\n return itemCtx;\r\n }\r\n function _processChain(itemCtx, processPluginFn, name, details, isAsync) {\r\n var hasRun = false;\r\n var identifier = plugin ? plugin[_DYN_IDENTIFIER /* @min:%2eidentifier */] : strTelemetryPluginChain;\r\n var hasRunContext = itemCtx[strHasRunFlags];\r\n if (!hasRunContext) {\r\n // Assign and populate\r\n hasRunContext = itemCtx[strHasRunFlags] = {};\r\n }\r\n // Ensure that we keep the context in sync\r\n itemCtx.setNext(nextProxy);\r\n if (plugin) {\r\n doPerf(itemCtx[STR_CORE /* @min:%2ecore */](), function () { return identifier + \":\" + name; }, function () {\r\n // Mark this component as having run\r\n hasRunContext[chainId] = true;\r\n try {\r\n // Set a flag on the next plugin so we know if it was attempted to be executed\r\n var nextId = nextProxy ? nextProxy._id : STR_EMPTY;\r\n if (nextId) {\r\n hasRunContext[nextId] = false;\r\n }\r\n hasRun = processPluginFn(itemCtx);\r\n }\r\n catch (error) {\r\n var hasNextRun = nextProxy ? hasRunContext[nextProxy._id] : true;\r\n if (hasNextRun) {\r\n // The next plugin after us has already run so set this one as complete\r\n hasRun = true;\r\n }\r\n if (!nextProxy || !hasNextRun) {\r\n // Either we have no next plugin or the current one did not attempt to call the next plugin\r\n // Which means the current one is the root of the failure so log/report this failure\r\n _throwInternal(itemCtx[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 73 /* _eInternalMessageId.PluginException */, \"Plugin [\" + identifier + \"] failed during \" + name + \" - \" + dumpObj(error) + \", run flags: \" + dumpObj(hasRunContext));\r\n }\r\n }\r\n }, details, isAsync);\r\n }\r\n return hasRun;\r\n }\r\n function _processTelemetry(env, itemCtx) {\r\n itemCtx = itemCtx || _getTelCtx();\r\n function _callProcessTelemetry(itemCtx) {\r\n if (!plugin || !hasProcessTelemetry) {\r\n return false;\r\n }\r\n var pluginState = _getPluginState(plugin);\r\n if (pluginState[_DYN_TEARDOWN /* @min:%2eteardown */] || pluginState[STR_DISABLED]) {\r\n return false;\r\n }\r\n // Ensure that we keep the context in sync (for processNext()), just in case a plugin\r\n // doesn't calls processTelemetry() instead of itemContext.processNext() or some\r\n // other form of error occurred\r\n if (hasSetNext) {\r\n // Backward compatibility setting the next plugin on the instance\r\n plugin[_DYN_SET_NEXT_PLUGIN /* @min:%2esetNextPlugin */](nextProxy);\r\n }\r\n plugin[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */](env, itemCtx);\r\n // Process Telemetry is expected to call itemCtx.processNext() or nextPlugin.processTelemetry()\r\n return true;\r\n }\r\n if (!_processChain(itemCtx, _callProcessTelemetry, \"processTelemetry\", function () { return ({ item: env }); }, !(env.sync))) {\r\n // The underlying plugin is either not defined, not enabled or does not have a processTelemetry implementation\r\n // so we still want the next plugin to be executed.\r\n itemCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](env);\r\n }\r\n }\r\n function _unloadPlugin(unloadCtx, unloadState) {\r\n function _callTeardown() {\r\n // Setting default of hasRun as false so the proxyProcessFn() is called as teardown() doesn't have to exist or call unloadNext().\r\n var hasRun = false;\r\n if (plugin) {\r\n var pluginState = _getPluginState(plugin);\r\n var pluginCore = plugin[STR_CORE] || pluginState[STR_CORE /* @min:%2ecore */];\r\n // Only teardown the plugin if it was initialized by the current core (i.e. It's not a shared plugin)\r\n if (plugin && (!pluginCore || pluginCore === unloadCtx.core()) && !pluginState[_DYN_TEARDOWN /* @min:%2eteardown */]) {\r\n // Handle plugins that don't extend from the BaseTelemetryPlugin\r\n pluginState[STR_CORE /* @min:%2ecore */] = null;\r\n pluginState[_DYN_TEARDOWN /* @min:%2eteardown */] = true;\r\n pluginState[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */] = false;\r\n if (plugin[_DYN_TEARDOWN /* @min:%2eteardown */] && plugin[_DYN_TEARDOWN /* @min:%2eteardown */](unloadCtx, unloadState) === true) {\r\n // plugin told us that it was going to (or has) call unloadCtx.processNext()\r\n hasRun = true;\r\n }\r\n }\r\n }\r\n return hasRun;\r\n }\r\n if (!_processChain(unloadCtx, _callTeardown, \"unload\", function () { }, unloadState[_DYN_IS_ASYNC /* @min:%2eisAsync */])) {\r\n // Only called if we hasRun was not true\r\n unloadCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](unloadState);\r\n }\r\n }\r\n function _updatePlugin(updateCtx, updateState) {\r\n function _callUpdate() {\r\n // Setting default of hasRun as false so the proxyProcessFn() is called as teardown() doesn't have to exist or call unloadNext().\r\n var hasRun = false;\r\n if (plugin) {\r\n var pluginState = _getPluginState(plugin);\r\n var pluginCore = plugin[STR_CORE] || pluginState[STR_CORE /* @min:%2ecore */];\r\n // Only update the plugin if it was initialized by the current core (i.e. It's not a shared plugin)\r\n if (plugin && (!pluginCore || pluginCore === updateCtx.core()) && !pluginState[_DYN_TEARDOWN /* @min:%2eteardown */]) {\r\n if (plugin[_DYN_UPDATE /* @min:%2eupdate */] && plugin[_DYN_UPDATE /* @min:%2eupdate */](updateCtx, updateState) === true) {\r\n // plugin told us that it was going to (or has) call unloadCtx.processNext()\r\n hasRun = true;\r\n }\r\n }\r\n }\r\n return hasRun;\r\n }\r\n if (!_processChain(updateCtx, _callUpdate, \"update\", function () { }, false)) {\r\n // Only called if we hasRun was not true\r\n updateCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](updateState);\r\n }\r\n }\r\n return objFreeze(proxyChain);\r\n}\r\n/**\r\n * This class will be removed!\r\n * @deprecated use createProcessTelemetryContext() instead\r\n */\r\nvar ProcessTelemetryContext = /** @class */ (function () {\r\n /**\r\n * Creates a new Telemetry Item context with the current config, core and plugin execution chain\r\n * @param plugins - The plugin instances that will be executed\r\n * @param config - The current config\r\n * @param core - The current core instance\r\n */\r\n function ProcessTelemetryContext(pluginChain, config, core, startAt) {\r\n var _self = this;\r\n var context = createProcessTelemetryContext(pluginChain, config, core, startAt);\r\n // Proxy all functions of the context to this object\r\n proxyFunctions(_self, context, objKeys(context));\r\n }\r\n return ProcessTelemetryContext;\r\n}());\r\nexport { ProcessTelemetryContext };\r\n","/*\n * Application Insights JavaScript SDK - Core, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { _DYN_DIAG_LOG, _DYN_PUSH } from \"../__DynamicConstants\";\r\nimport { _throwInternal } from \"./DiagnosticLogger\";\r\nimport { dumpObj } from \"./EnvUtils\";\r\nimport { arrForEach } from \"./HelperFuncs\";\r\nexport function createUnloadHandlerContainer() {\r\n var handlers = [];\r\n function _addHandler(handler) {\r\n if (handler) {\r\n handlers[_DYN_PUSH /* @min:%2epush */](handler);\r\n }\r\n }\r\n function _runHandlers(unloadCtx, unloadState) {\r\n arrForEach(handlers, function (handler) {\r\n try {\r\n handler(unloadCtx, unloadState);\r\n }\r\n catch (e) {\r\n _throwInternal(unloadCtx[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 73 /* _eInternalMessageId.PluginException */, \"Unexpected error calling unload handler - \" + dumpObj(e));\r\n }\r\n });\r\n handlers = [];\r\n }\r\n return {\r\n add: _addHandler,\r\n run: _runHandlers\r\n };\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Core, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n\"use strict\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { _DYN_CREATE_NEW, _DYN_DIAG_LOG, _DYN_GET_NEXT, _DYN_GET_PROCESS_TEL_CONT0, _DYN_INITIALIZE, _DYN_IS_ASYNC, _DYN_IS_INITIALIZED, _DYN_PROCESS_NEXT, _DYN_PUSH, _DYN_SET_NEXT_PLUGIN, _DYN_TEARDOWN, _DYN_UPDATE, _DYN__DO_TEARDOWN } from \"../__DynamicConstants\";\r\nimport { arrForEach, isArray, isFunction, isNullOrUndefined, proxyFunctionAs, setValue } from \"./HelperFuncs\";\r\nimport { STR_CORE, STR_EXTENSION_CONFIG, STR_PROCESS_TELEMETRY } from \"./InternalConstants\";\r\nimport { createProcessTelemetryContext, createProcessTelemetryUnloadContext, createProcessTelemetryUpdateContext } from \"./ProcessTelemetryContext\";\r\nimport { createUnloadHandlerContainer } from \"./UnloadHandlerContainer\";\r\nvar strGetPlugin = \"getPlugin\";\r\n/**\r\n * BaseTelemetryPlugin provides a basic implementation of the ITelemetryPlugin interface so that plugins\r\n * can avoid implementation the same set of boiler plate code as well as provide a base\r\n * implementation so that new default implementations can be added without breaking all plugins.\r\n */\r\nvar BaseTelemetryPlugin = /** @class */ (function () {\r\n function BaseTelemetryPlugin() {\r\n var _self = this; // Setting _self here as it's used outside of the dynamicProto as well\r\n // NOTE!: DON'T set default values here, instead set them in the _initDefaults() function as it is also called during teardown()\r\n var _isinitialized;\r\n var _rootCtx; // Used as the root context, holding the current config and initialized core\r\n var _nextPlugin; // Used for backward compatibility where plugins don't call the main pipeline\r\n var _unloadHandlerContainer;\r\n var _hooks;\r\n _initDefaults();\r\n dynamicProto(BaseTelemetryPlugin, _self, function (_self) {\r\n _self[_DYN_INITIALIZE /* @min:%2einitialize */] = function (config, core, extensions, pluginChain) {\r\n _setDefaults(config, core, pluginChain);\r\n _isinitialized = true;\r\n };\r\n _self[_DYN_TEARDOWN /* @min:%2eteardown */] = function (unloadCtx, unloadState) {\r\n var _a;\r\n // If this plugin has already been torn down (not operational) or is not initialized (core is not set)\r\n // or the core being used for unload was not the same core used for initialization.\r\n var core = _self[STR_CORE /* @min:%2ecore */];\r\n if (!core || (unloadCtx && core !== unloadCtx[STR_CORE /* @min:%2ecore */]())) {\r\n // Do Nothing as either the plugin is not initialized or was not initialized by the current core\r\n return;\r\n }\r\n var result;\r\n var unloadDone = false;\r\n var theUnloadCtx = unloadCtx || createProcessTelemetryUnloadContext(null, core, _nextPlugin && _nextPlugin[strGetPlugin] ? _nextPlugin[strGetPlugin]() : _nextPlugin);\r\n var theUnloadState = unloadState || (_a = {\r\n reason: 0 /* TelemetryUnloadReason.ManualTeardown */\r\n },\r\n _a[_DYN_IS_ASYNC /* @min:isAsync */] = false,\r\n _a);\r\n function _unloadCallback() {\r\n if (!unloadDone) {\r\n unloadDone = true;\r\n _unloadHandlerContainer.run(theUnloadCtx, unloadState);\r\n var oldHooks = _hooks;\r\n _hooks = [];\r\n // Remove all instrumentation hooks\r\n arrForEach(oldHooks, function (fn) {\r\n fn.rm();\r\n });\r\n if (result === true) {\r\n theUnloadCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](theUnloadState);\r\n }\r\n _initDefaults();\r\n }\r\n }\r\n if (!_self[_DYN__DO_TEARDOWN /* @min:%2e_doTeardown */] || _self[_DYN__DO_TEARDOWN /* @min:%2e_doTeardown */](theUnloadCtx, theUnloadState, _unloadCallback) !== true) {\r\n _unloadCallback();\r\n }\r\n else {\r\n // Tell the caller that we will be calling processNext()\r\n result = true;\r\n }\r\n return result;\r\n };\r\n _self[_DYN_UPDATE /* @min:%2eupdate */] = function (updateCtx, updateState) {\r\n // If this plugin has already been torn down (not operational) or is not initialized (core is not set)\r\n // or the core being used for unload was not the same core used for initialization.\r\n var core = _self[STR_CORE /* @min:%2ecore */];\r\n if (!core || (updateCtx && core !== updateCtx[STR_CORE /* @min:%2ecore */]())) {\r\n // Do Nothing\r\n return;\r\n }\r\n var result;\r\n var updateDone = false;\r\n var theUpdateCtx = updateCtx || createProcessTelemetryUpdateContext(null, core, _nextPlugin && _nextPlugin[strGetPlugin] ? _nextPlugin[strGetPlugin]() : _nextPlugin);\r\n var theUpdateState = updateState || {\r\n reason: 0 /* TelemetryUpdateReason.Unknown */\r\n };\r\n function _updateCallback() {\r\n if (!updateDone) {\r\n updateDone = true;\r\n _setDefaults(theUpdateCtx.getCfg(), theUpdateCtx.core(), theUpdateCtx[_DYN_GET_NEXT /* @min:%2egetNext */]());\r\n }\r\n }\r\n if (!_self._doUpdate || _self._doUpdate(theUpdateCtx, theUpdateState, _updateCallback) !== true) {\r\n _updateCallback();\r\n }\r\n else {\r\n result = true;\r\n }\r\n return result;\r\n };\r\n _self._addHook = function (hooks) {\r\n if (hooks) {\r\n if (isArray(hooks)) {\r\n _hooks = _hooks.concat(hooks);\r\n }\r\n else {\r\n _hooks[_DYN_PUSH /* @min:%2epush */](hooks);\r\n }\r\n }\r\n };\r\n proxyFunctionAs(_self, \"_addUnloadCb\", function () { return _unloadHandlerContainer; }, \"add\");\r\n });\r\n // These are added after the dynamicProto so that are not moved to the prototype\r\n _self[_DYN_DIAG_LOG /* @min:%2ediagLog */] = function (itemCtx) {\r\n return _getTelCtx(itemCtx)[_DYN_DIAG_LOG /* @min:%2ediagLog */]();\r\n };\r\n _self[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */] = function () {\r\n return _isinitialized;\r\n };\r\n _self.setInitialized = function (isInitialized) {\r\n _isinitialized = isInitialized;\r\n };\r\n // _self.getNextPlugin = () => DO NOT IMPLEMENT\r\n // Sub-classes of this base class *should* not be relying on this value and instead\r\n // should use processNext() function. If you require access to the plugin use the\r\n // IProcessTelemetryContext.getNext().getPlugin() while in the pipeline, Note getNext() may return null.\r\n _self[_DYN_SET_NEXT_PLUGIN /* @min:%2esetNextPlugin */] = function (next) {\r\n _nextPlugin = next;\r\n };\r\n _self[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */] = function (env, itemCtx) {\r\n if (itemCtx) {\r\n // Normal core execution sequence\r\n itemCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](env);\r\n }\r\n else if (_nextPlugin && isFunction(_nextPlugin[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */])) {\r\n // Looks like backward compatibility or out of band processing. And as it looks\r\n // like a ITelemetryPlugin or ITelemetryPluginChain, just call processTelemetry\r\n _nextPlugin[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */](env, null);\r\n }\r\n };\r\n _self._getTelCtx = _getTelCtx;\r\n function _getTelCtx(currentCtx) {\r\n if (currentCtx === void 0) { currentCtx = null; }\r\n var itemCtx = currentCtx;\r\n if (!itemCtx) {\r\n var rootCtx = _rootCtx || createProcessTelemetryContext(null, {}, _self[STR_CORE /* @min:%2ecore */]);\r\n // tslint:disable-next-line: prefer-conditional-expression\r\n if (_nextPlugin && _nextPlugin[strGetPlugin]) {\r\n // Looks like a chain object\r\n itemCtx = rootCtx[_DYN_CREATE_NEW /* @min:%2ecreateNew */](null, _nextPlugin[strGetPlugin]);\r\n }\r\n else {\r\n itemCtx = rootCtx[_DYN_CREATE_NEW /* @min:%2ecreateNew */](null, _nextPlugin);\r\n }\r\n }\r\n return itemCtx;\r\n }\r\n function _setDefaults(config, core, pluginChain) {\r\n if (config) {\r\n // Make sure the extensionConfig exists\r\n setValue(config, STR_EXTENSION_CONFIG, [], null, isNullOrUndefined);\r\n }\r\n if (!pluginChain && core) {\r\n // Get the first plugin from the core\r\n pluginChain = core[_DYN_GET_PROCESS_TEL_CONT0 /* @min:%2egetProcessTelContext */]()[_DYN_GET_NEXT /* @min:%2egetNext */]();\r\n }\r\n var nextPlugin = _nextPlugin;\r\n if (_nextPlugin && _nextPlugin[strGetPlugin]) {\r\n // If it looks like a proxy/chain then get the plugin\r\n nextPlugin = _nextPlugin[strGetPlugin]();\r\n }\r\n // Support legacy plugins where core was defined as a property\r\n _self[STR_CORE /* @min:%2ecore */] = core;\r\n _rootCtx = createProcessTelemetryContext(pluginChain, config, core, nextPlugin);\r\n }\r\n function _initDefaults() {\r\n _isinitialized = false;\r\n _self[STR_CORE /* @min:%2ecore */] = null;\r\n _rootCtx = null;\r\n _nextPlugin = null;\r\n _hooks = [];\r\n _unloadHandlerContainer = createUnloadHandlerContainer();\r\n }\r\n }\r\n// Removed Stub for BaseTelemetryPlugin.prototype.initialize.\r\n// Removed Stub for BaseTelemetryPlugin.prototype.teardown.\r\n// Removed Stub for BaseTelemetryPlugin.prototype.update.\r\n// Removed Stub for BaseTelemetryPlugin.prototype._addUnloadCb.\r\n// Removed Stub for BaseTelemetryPlugin.prototype._addHook.\r\n // This is a workaround for an IE8 bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n // this will be removed when ES3 support is dropped.\n BaseTelemetryPlugin.__ieDyn=1;\n\n return BaseTelemetryPlugin;\r\n}());\r\nexport { BaseTelemetryPlugin };\r\n","import * as i0 from '@angular/core';\nimport { Injectable, Component, NgModule } from '@angular/core';\nimport { PropertiesPluginIdentifier, AnalyticsPluginIdentifier, Util } from '@microsoft/applicationinsights-common';\nimport { isFunction, arrForEach, BaseTelemetryPlugin, getLocation, _throwInternal } from '@microsoft/applicationinsights-core-js';\nimport { NavigationEnd } from '@angular/router';\n\nclass ApplicationinsightsAngularpluginErrorService {\r\n constructor() {\r\n this.errorServices = [];\r\n if (ApplicationinsightsAngularpluginErrorService.instance === null) {\r\n ApplicationinsightsAngularpluginErrorService.instance = this;\r\n }\r\n }\r\n set plugin(analyticsPlugin) {\r\n this.analyticsPlugin = analyticsPlugin;\r\n }\r\n addErrorHandler(errorService) {\r\n if (errorService && isFunction(errorService.handleError)) {\r\n this.errorServices.push(errorService);\r\n }\r\n }\r\n removeErrorHandler(errorService) {\r\n if (errorService && isFunction(errorService.handleError)) {\r\n const idx = this.errorServices.indexOf(errorService);\r\n if (idx !== -1) {\r\n this.errorServices.splice(idx, 1);\r\n }\r\n }\r\n }\r\n handleError(error) {\r\n if (this.analyticsPlugin) {\r\n this.analyticsPlugin.trackException({ exception: error });\r\n }\r\n if (this.errorServices && this.errorServices.length > 0) {\r\n arrForEach(this.errorServices, errorService => {\r\n if (isFunction(errorService.handleError)) {\r\n errorService.handleError(error);\r\n }\r\n });\r\n }\r\n }\r\n}\r\nApplicationinsightsAngularpluginErrorService.instance = null;\r\nApplicationinsightsAngularpluginErrorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.0\", ngImport: i0, type: ApplicationinsightsAngularpluginErrorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\r\nApplicationinsightsAngularpluginErrorService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.1.0\", ngImport: i0, type: ApplicationinsightsAngularpluginErrorService, providedIn: 'root' });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.0\", ngImport: i0, type: ApplicationinsightsAngularpluginErrorService, decorators: [{\r\n type: Injectable,\r\n args: [{\r\n providedIn: 'root'\r\n }]\r\n }], ctorParameters: function () { return []; } });\n\n// eslint-disable-next-line @angular-eslint/component-class-suffix\r\nclass AngularPlugin extends BaseTelemetryPlugin {\r\n constructor() {\r\n super();\r\n this.priority = 186;\r\n this.identifier = 'AngularPlugin';\r\n this._angularCfg = null;\r\n this._eventSubscription = null;\r\n let self = this;\r\n self._doTeardown = (unloadCtx, unloadState, asyncCallback) => {\r\n if (this.analyticsPlugin && ApplicationinsightsAngularpluginErrorService.instance !== null) {\r\n ApplicationinsightsAngularpluginErrorService.instance.plugin = null;\r\n if (self._angularCfg) {\r\n if (self._angularCfg.errorServices && Array.isArray(self._angularCfg.errorServices)) {\r\n arrForEach(self._angularCfg.errorServices, (errorService) => {\r\n ApplicationinsightsAngularpluginErrorService.instance.removeErrorHandler(errorService);\r\n });\r\n }\r\n }\r\n }\r\n if (self._eventSubscription) {\r\n self._eventSubscription.unsubscribe();\r\n self._eventSubscription = null;\r\n }\r\n self.analyticsPlugin = null;\r\n self.propertiesPlugin = null;\r\n self._angularCfg = null;\r\n };\r\n }\r\n initialize(config, core, extensions, pluginChain) {\r\n super.initialize(config, core, extensions, pluginChain);\r\n const self = this;\r\n const ctx = self._getTelCtx();\r\n const extConfig = ctx.getExtCfg(self.identifier, { router: null, errorServices: null });\r\n self.propertiesPlugin = core.getPlugin(PropertiesPluginIdentifier)?.plugin;\r\n self.analyticsPlugin = core.getPlugin(AnalyticsPluginIdentifier)?.plugin;\r\n if (self.analyticsPlugin) {\r\n if (ApplicationinsightsAngularpluginErrorService.instance !== null) {\r\n ApplicationinsightsAngularpluginErrorService.instance.plugin = self.analyticsPlugin;\r\n if (extConfig.errorServices && Array.isArray(extConfig.errorServices)) {\r\n arrForEach(extConfig.errorServices, (errorService) => {\r\n ApplicationinsightsAngularpluginErrorService.instance.addErrorHandler(errorService);\r\n });\r\n }\r\n }\r\n }\r\n if (extConfig.router) {\r\n let isPageInitialLoad = true;\r\n const pageViewTelemetry = {\r\n uri: extConfig.router.url\r\n };\r\n self.trackPageView(pageViewTelemetry);\r\n self._eventSubscription = extConfig.router.events.subscribe(event => {\r\n if (self.isInitialized()) {\r\n if (event instanceof NavigationEnd) {\r\n // for page initial load, do not call trackPageView twice\r\n if (isPageInitialLoad) {\r\n isPageInitialLoad = false;\r\n return;\r\n }\r\n const pvt = {\r\n uri: extConfig.router.url,\r\n properties: { duration: 0 } // SPA route change loading durations are undefined, so send 0\r\n };\r\n self.trackPageView(pvt);\r\n }\r\n }\r\n });\r\n }\r\n }\r\n /**\r\n * Add Part A fields to the event\r\n *\r\n * @param event The event that needs to be processed\r\n */\r\n processTelemetry(event, itemCtx) {\r\n this.processNext(event, itemCtx);\r\n }\r\n trackPageView(pageView) {\r\n const self = this;\r\n if (self.analyticsPlugin) {\r\n const location = getLocation();\r\n if (self.propertiesPlugin && self.propertiesPlugin.context && self.propertiesPlugin.context.telemetryTrace) {\r\n self.propertiesPlugin.context.telemetryTrace.traceID = Util.generateW3CId();\r\n self.propertiesPlugin.context.telemetryTrace.name = location && location.pathname || '_unknown_';\r\n }\r\n self.analyticsPlugin.trackPageView(pageView);\r\n }\r\n else {\r\n _throwInternal(self.diagLog(), 1 /* eLoggingSeverity.CRITICAL */, 64 /* _eInternalMessageId.TelemetryInitializerFailed */, 'Analytics plugin is not available, Angular plugin telemetry will not be sent: ');\r\n }\r\n }\r\n}\r\nAngularPlugin.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.0\", ngImport: i0, type: AngularPlugin, deps: [], target: i0.ɵɵFactoryTarget.Component });\r\nAngularPlugin.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.1.0\", type: AngularPlugin, selector: \"lib-applicationinsights-angularplugin-js\", usesInheritance: true, ngImport: i0, template: ``, isInline: true });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.0\", ngImport: i0, type: AngularPlugin, decorators: [{\r\n type: Component,\r\n args: [{ selector: 'lib-applicationinsights-angularplugin-js', template: `` }]\r\n }], ctorParameters: function () { return []; } });\n\nclass ApplicationinsightsAngularpluginJsModule {\r\n}\r\nApplicationinsightsAngularpluginJsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.0\", ngImport: i0, type: ApplicationinsightsAngularpluginJsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\r\nApplicationinsightsAngularpluginJsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.1.0\", ngImport: i0, type: ApplicationinsightsAngularpluginJsModule, declarations: [AngularPlugin], exports: [AngularPlugin] });\r\nApplicationinsightsAngularpluginJsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.1.0\", ngImport: i0, type: ApplicationinsightsAngularpluginJsModule, providers: [\r\n ApplicationinsightsAngularpluginErrorService\r\n ] });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.0\", ngImport: i0, type: ApplicationinsightsAngularpluginJsModule, decorators: [{\r\n type: NgModule,\r\n args: [{\r\n declarations: [AngularPlugin],\r\n imports: [],\r\n exports: [AngularPlugin],\r\n providers: [\r\n ApplicationinsightsAngularpluginErrorService\r\n ]\r\n }]\r\n }] });\n\n/*\r\n * Public API Surface of applicationinsights-angularplugin-js\r\n */\n\n/**\r\n * Generated bundle index. Do not edit.\r\n */\n\nexport { AngularPlugin, ApplicationinsightsAngularpluginErrorService, ApplicationinsightsAngularpluginJsModule };\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { ObjAssign, ObjClass, ObjCreate, ObjDefineProperty, ObjHasOwnProperty, ObjProto, strDefault, strShimFunction, strShimHasOwnProperty, strShimPrototype } from \"./Constants\";\r\nimport { getGlobal, objCreateFn, throwTypeError } from \"./Helpers\";\r\n// Most of these functions have been directly shamelessly \"lifted\" from the https://github.com/@microsoft/tslib and\r\n// modified to be ES3 compatible and applying several minification and tree-shaking techniques so that Application Insights\r\n// can successfully use TypeScript \"importHelpers\" which imports tslib during compilation but it will use these at runtime\r\n// Which is also why all of the functions have not been included as Application Insights currently doesn't use or require\r\n// them.\r\nexport var SymbolObj = (getGlobal() || {})[\"Symbol\"];\r\nexport var ReflectObj = (getGlobal() || {})[\"Reflect\"];\r\nexport var __hasSymbol = !!SymbolObj;\r\nexport var __hasReflect = !!ReflectObj;\r\nvar strDecorate = \"decorate\";\r\nvar strMetadata = \"metadata\";\r\nvar strGetOwnPropertySymbols = \"getOwnPropertySymbols\";\r\nvar strIterator = \"iterator\";\r\nexport var __objAssignFnImpl = function (t) {\r\n // tslint:disable-next-line: ban-comma-operator\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) {\r\n if (ObjProto[strShimHasOwnProperty].call(s, p)) {\r\n t[p] = s[p];\r\n }\r\n }\r\n }\r\n return t;\r\n};\r\nexport var __assignFn = ObjAssign || __objAssignFnImpl;\r\n// tslint:disable-next-line: only-arrow-functions\r\nvar extendStaticsFn = function (d, b) {\r\n extendStaticsFn = ObjClass[\"setPrototypeOf\"] ||\r\n // tslint:disable-next-line: only-arrow-functions\r\n ({ __proto__: [] } instanceof Array && function (d, b) {\r\n d.__proto__ = b;\r\n }) ||\r\n // tslint:disable-next-line: only-arrow-functions\r\n function (d, b) {\r\n for (var p in b) {\r\n if (b[strShimHasOwnProperty](p)) {\r\n d[p] = b[p];\r\n }\r\n }\r\n };\r\n return extendStaticsFn(d, b);\r\n};\r\nexport function __extendsFn(d, b) {\r\n if (typeof b !== strShimFunction && b !== null) {\r\n throwTypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n }\r\n extendStaticsFn(d, b);\r\n function __() {\r\n this.constructor = d;\r\n }\r\n // tslint:disable-next-line: ban-comma-operator\r\n d[strShimPrototype] = b === null ? objCreateFn(b) : (__[strShimPrototype] = b[strShimPrototype], new __());\r\n}\r\nexport function __restFn(s, e) {\r\n var t = {};\r\n for (var k in s) {\r\n if (ObjHasOwnProperty.call(s, k) && e.indexOf(k) < 0) {\r\n t[k] = s[k];\r\n }\r\n }\r\n if (s != null && typeof ObjClass[strGetOwnPropertySymbols] === strShimFunction) {\r\n for (var i = 0, p = ObjClass[strGetOwnPropertySymbols](s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && ObjProto[\"propertyIsEnumerable\"].call(s, p[i])) {\r\n t[p[i]] = s[p[i]];\r\n }\r\n }\r\n }\r\n return t;\r\n}\r\nexport function __decorateFn(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = ObjClass[\"getOwnPropertyDescriptor\"](target, key) : desc, d;\r\n if (__hasReflect && typeof ReflectObj[strDecorate] === strShimFunction) {\r\n r = ReflectObj[strDecorate](decorators, target, key, desc);\r\n }\r\n else {\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n // eslint-disable-next-line no-cond-assign\r\n if (d = decorators[i]) {\r\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n }\r\n }\r\n }\r\n // tslint:disable-next-line:ban-comma-operator\r\n return c > 3 && r && ObjDefineProperty(target, key, r), r;\r\n}\r\nexport function __paramFn(paramIndex, decorator) {\r\n return function (target, key) {\r\n decorator(target, key, paramIndex);\r\n };\r\n}\r\nexport function __metadataFn(metadataKey, metadataValue) {\r\n if (__hasReflect && ReflectObj[strMetadata] === strShimFunction) {\r\n return ReflectObj[strMetadata](metadataKey, metadataValue);\r\n }\r\n}\r\nexport function __exportStarFn(m, o) {\r\n for (var p in m) {\r\n if (p !== strDefault && !ObjHasOwnProperty.call(o, p)) {\r\n __createBindingFn(o, m, p);\r\n }\r\n }\r\n}\r\nexport function __createBindingFn(o, m, k, k2) {\r\n if (k2 === undefined) {\r\n k2 = k;\r\n }\r\n if (!!ObjCreate) {\r\n ObjDefineProperty(o, k2, {\r\n enumerable: true,\r\n get: function () {\r\n return m[k];\r\n }\r\n });\r\n }\r\n else {\r\n o[k2] = m[k];\r\n }\r\n}\r\nexport function __valuesFn(o) {\r\n var s = typeof SymbolObj === strShimFunction && SymbolObj[strIterator], m = s && o[s], i = 0;\r\n if (m) {\r\n return m.call(o);\r\n }\r\n if (o && typeof o.length === \"number\") {\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) {\r\n o = void 0;\r\n }\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n }\r\n throwTypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\nexport function __readFn(o, n) {\r\n var m = typeof SymbolObj === strShimFunction && o[SymbolObj[strIterator]];\r\n if (!m) {\r\n return o;\r\n }\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\r\n ar.push(r.value);\r\n }\r\n }\r\n catch (error) {\r\n e = {\r\n error: error\r\n };\r\n }\r\n finally {\r\n try {\r\n // tslint:disable-next-line:no-conditional-assignment\r\n if (r && !r.done && (m = i[\"return\"])) {\r\n m.call(i);\r\n }\r\n }\r\n finally {\r\n if (e) {\r\n // eslint-disable-next-line no-unsafe-finally\r\n throw e.error;\r\n }\r\n }\r\n }\r\n return ar;\r\n}\r\n/** @deprecated */\r\nexport function __spreadArraysFn() {\r\n var theArgs = arguments;\r\n // Calculate new total size\r\n for (var s = 0, i = 0, il = theArgs.length; i < il; i++) {\r\n s += theArgs[i].length;\r\n }\r\n // Create new full array\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++) {\r\n for (var a = theArgs[i], j = 0, jl = a.length; j < jl; j++, k++) {\r\n r[k] = a[j];\r\n }\r\n }\r\n return r;\r\n}\r\nexport function __spreadArrayFn(to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) {\r\n to[j] = from[i];\r\n }\r\n return to;\r\n}\r\nexport function __makeTemplateObjectFn(cooked, raw) {\r\n if (ObjDefineProperty) {\r\n ObjDefineProperty(cooked, \"raw\", { value: raw });\r\n }\r\n else {\r\n cooked.raw = raw;\r\n }\r\n return cooked;\r\n}\r\nexport function __importStarFn(mod) {\r\n if (mod && mod.__esModule) {\r\n return mod;\r\n }\r\n var result = {};\r\n if (mod != null) {\r\n for (var k in mod) {\r\n if (k !== strDefault && Object.prototype.hasOwnProperty.call(mod, k)) {\r\n __createBindingFn(result, mod, k);\r\n }\r\n }\r\n }\r\n // Set default module\r\n if (!!ObjCreate) {\r\n ObjDefineProperty(result, strDefault, { enumerable: true, value: mod });\r\n }\r\n else {\r\n result[strDefault] = mod;\r\n }\r\n return result;\r\n}\r\nexport function __importDefaultFn(mod) {\r\n return (mod && mod.__esModule) ? mod : { strDefault: mod };\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Common, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { isNullOrUndefined, objForEachKey, throwError, toISOString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { strIkey, strNotSpecified } from \"./Constants\";\r\nimport { dataSanitizeString } from \"./Telemetry/Common/DataSanitizer\";\r\nimport { _DYN_NAME } from \"./__DynamicConstants\";\r\n/**\r\n * Create a telemetry item that the 1DS channel understands\r\n * @param item domain specific properties; part B\r\n * @param baseType telemetry item type. ie PageViewData\r\n * @param envelopeName name of the envelope. ie Microsoft.ApplicationInsights..PageView\r\n * @param customProperties user defined custom properties; part C\r\n * @param systemProperties system properties that are added to the context; part A\r\n * @returns ITelemetryItem that is sent to channel\r\n */\r\nexport function createTelemetryItem(item, baseType, envelopeName, logger, customProperties, systemProperties) {\r\n var _a;\r\n envelopeName = dataSanitizeString(logger, envelopeName) || strNotSpecified;\r\n if (isNullOrUndefined(item) ||\r\n isNullOrUndefined(baseType) ||\r\n isNullOrUndefined(envelopeName)) {\r\n throwError(\"Input doesn't contain all required fields\");\r\n }\r\n var iKey = \"\";\r\n if (item[strIkey]) {\r\n iKey = item[strIkey];\r\n delete item[strIkey];\r\n }\r\n var telemetryItem = (_a = {},\r\n _a[_DYN_NAME /* @min:name */] = envelopeName,\r\n _a.time = toISOString(new Date()),\r\n _a.iKey = iKey,\r\n _a.ext = systemProperties ? systemProperties : {},\r\n _a.tags = [],\r\n _a.data = {},\r\n _a.baseType = baseType,\r\n _a.baseData = item // Part B\r\n ,\r\n _a);\r\n // Part C\r\n if (!isNullOrUndefined(customProperties)) {\r\n objForEachKey(customProperties, function (prop, value) {\r\n telemetryItem.data[prop] = value;\r\n });\r\n }\r\n return telemetryItem;\r\n}\r\nvar TelemetryItemCreator = /** @class */ (function () {\r\n function TelemetryItemCreator() {\r\n }\r\n /**\r\n * Create a telemetry item that the 1DS channel understands\r\n * @param item domain specific properties; part B\r\n * @param baseType telemetry item type. ie PageViewData\r\n * @param envelopeName name of the envelope. ie Microsoft.ApplicationInsights..PageView\r\n * @param customProperties user defined custom properties; part C\r\n * @param systemProperties system properties that are added to the context; part A\r\n * @returns ITelemetryItem that is sent to channel\r\n */\r\n TelemetryItemCreator.create = createTelemetryItem;\r\n return TelemetryItemCreator;\r\n}());\r\nexport { TelemetryItemCreator };\r\n","/*\n * Application Insights JavaScript SDK - Common, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { strNotSpecified } from \"../Constants\";\r\nimport { _DYN_MEASUREMENTS, _DYN_NAME, _DYN_PROPERTIES } from \"../__DynamicConstants\";\r\nimport { dataSanitizeMeasurements, dataSanitizeProperties, dataSanitizeString } from \"./Common/DataSanitizer\";\r\nvar Event = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the EventTelemetry object\r\n */\r\n function Event(logger, name, properties, measurements) {\r\n this.aiDataContract = {\r\n ver: 1 /* FieldType.Required */,\r\n name: 1 /* FieldType.Required */,\r\n properties: 0 /* FieldType.Default */,\r\n measurements: 0 /* FieldType.Default */\r\n };\r\n var _self = this;\r\n _self.ver = 2;\r\n _self[_DYN_NAME /* @min:%2ename */] = dataSanitizeString(logger, name) || strNotSpecified;\r\n _self[_DYN_PROPERTIES /* @min:%2eproperties */] = dataSanitizeProperties(logger, properties);\r\n _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = dataSanitizeMeasurements(logger, measurements);\r\n }\r\n Event.envelopeType = \"Microsoft.ApplicationInsights.{0}.Event\";\r\n Event.dataType = \"EventData\";\r\n return Event;\r\n}());\r\nexport { Event };\r\n","/*\n * Application Insights JavaScript SDK - Common, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { strNotSpecified } from \"../Constants\";\r\nimport { _DYN_MEASUREMENTS, _DYN_MESSAGE, _DYN_PROPERTIES, _DYN_SEVERITY_LEVEL } from \"../__DynamicConstants\";\r\nimport { dataSanitizeMeasurements, dataSanitizeMessage, dataSanitizeProperties } from \"./Common/DataSanitizer\";\r\nvar Trace = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the TraceTelemetry object\r\n */\r\n function Trace(logger, message, severityLevel, properties, measurements) {\r\n this.aiDataContract = {\r\n ver: 1 /* FieldType.Required */,\r\n message: 1 /* FieldType.Required */,\r\n severityLevel: 0 /* FieldType.Default */,\r\n properties: 0 /* FieldType.Default */\r\n };\r\n var _self = this;\r\n _self.ver = 2;\r\n message = message || strNotSpecified;\r\n _self[_DYN_MESSAGE /* @min:%2emessage */] = dataSanitizeMessage(logger, message);\r\n _self[_DYN_PROPERTIES /* @min:%2eproperties */] = dataSanitizeProperties(logger, properties);\r\n _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = dataSanitizeMeasurements(logger, measurements);\r\n if (severityLevel) {\r\n _self[_DYN_SEVERITY_LEVEL /* @min:%2eseverityLevel */] = severityLevel;\r\n }\r\n }\r\n Trace.envelopeType = \"Microsoft.ApplicationInsights.{0}.Message\";\r\n Trace.dataType = \"MessageData\";\r\n return Trace;\r\n}());\r\nexport { Trace };\r\n","/*\n * Application Insights JavaScript SDK - Common, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nvar DataPoint = /** @class */ (function () {\r\n function DataPoint() {\r\n /**\r\n * The data contract for serializing this object.\r\n */\r\n this.aiDataContract = {\r\n name: 1 /* FieldType.Required */,\r\n kind: 0 /* FieldType.Default */,\r\n value: 1 /* FieldType.Required */,\r\n count: 0 /* FieldType.Default */,\r\n min: 0 /* FieldType.Default */,\r\n max: 0 /* FieldType.Default */,\r\n stdDev: 0 /* FieldType.Default */\r\n };\r\n /**\r\n * Metric type. Single measurement or the aggregated value.\r\n */\r\n this.kind = 0 /* DataPointType.Measurement */;\r\n }\r\n return DataPoint;\r\n}());\r\nexport { DataPoint };\r\n","/*\n * Application Insights JavaScript SDK - Common, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { strNotSpecified } from \"../Constants\";\r\nimport { _DYN_COUNT, _DYN_MEASUREMENTS, _DYN_NAME, _DYN_PROPERTIES } from \"../__DynamicConstants\";\r\nimport { DataPoint } from \"./Common/DataPoint\";\r\nimport { dataSanitizeMeasurements, dataSanitizeProperties, dataSanitizeString } from \"./Common/DataSanitizer\";\r\nvar Metric = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the MetricTelemetry object\r\n */\r\n function Metric(logger, name, value, count, min, max, stdDev, properties, measurements) {\r\n this.aiDataContract = {\r\n ver: 1 /* FieldType.Required */,\r\n metrics: 1 /* FieldType.Required */,\r\n properties: 0 /* FieldType.Default */\r\n };\r\n var _self = this;\r\n _self.ver = 2;\r\n var dataPoint = new DataPoint();\r\n dataPoint[_DYN_COUNT /* @min:%2ecount */] = count > 0 ? count : undefined;\r\n dataPoint.max = isNaN(max) || max === null ? undefined : max;\r\n dataPoint.min = isNaN(min) || min === null ? undefined : min;\r\n dataPoint[_DYN_NAME /* @min:%2ename */] = dataSanitizeString(logger, name) || strNotSpecified;\r\n dataPoint.value = value;\r\n dataPoint.stdDev = isNaN(stdDev) || stdDev === null ? undefined : stdDev;\r\n _self.metrics = [dataPoint];\r\n _self[_DYN_PROPERTIES /* @min:%2eproperties */] = dataSanitizeProperties(logger, properties);\r\n _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = dataSanitizeMeasurements(logger, measurements);\r\n }\r\n Metric.envelopeType = \"Microsoft.ApplicationInsights.{0}.Metric\";\r\n Metric.dataType = \"MetricData\";\r\n return Metric;\r\n}());\r\nexport { Metric };\r\n","/*\n * Application Insights JavaScript SDK - Common, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { strNotSpecified } from \"../Constants\";\r\nimport { msToTimeSpan } from \"../HelperFuncs\";\r\nimport { _DYN_DURATION, _DYN_MEASUREMENTS, _DYN_NAME, _DYN_PROPERTIES } from \"../__DynamicConstants\";\r\nimport { dataSanitizeId, dataSanitizeMeasurements, dataSanitizeProperties, dataSanitizeString, dataSanitizeUrl } from \"./Common/DataSanitizer\";\r\nvar PageView = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the PageEventTelemetry object\r\n */\r\n function PageView(logger, name, url, durationMs, properties, measurements, id) {\r\n this.aiDataContract = {\r\n ver: 1 /* FieldType.Required */,\r\n name: 0 /* FieldType.Default */,\r\n url: 0 /* FieldType.Default */,\r\n duration: 0 /* FieldType.Default */,\r\n properties: 0 /* FieldType.Default */,\r\n measurements: 0 /* FieldType.Default */,\r\n id: 0 /* FieldType.Default */\r\n };\r\n var _self = this;\r\n _self.ver = 2;\r\n _self.id = dataSanitizeId(logger, id);\r\n _self.url = dataSanitizeUrl(logger, url);\r\n _self[_DYN_NAME /* @min:%2ename */] = dataSanitizeString(logger, name) || strNotSpecified;\r\n if (!isNaN(durationMs)) {\r\n _self[_DYN_DURATION /* @min:%2eduration */] = msToTimeSpan(durationMs);\r\n }\r\n _self[_DYN_PROPERTIES /* @min:%2eproperties */] = dataSanitizeProperties(logger, properties);\r\n _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = dataSanitizeMeasurements(logger, measurements);\r\n }\r\n PageView.envelopeType = \"Microsoft.ApplicationInsights.{0}.Pageview\";\r\n PageView.dataType = \"PageviewData\";\r\n return PageView;\r\n}());\r\nexport { PageView };\r\n","/*\n * Application Insights JavaScript SDK - Common, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { strNotSpecified } from \"../Constants\";\r\nimport { _DYN_DURATION, _DYN_MEASUREMENTS, _DYN_NAME, _DYN_PROPERTIES, _DYN_RECEIVED_RESPONSE } from \"../__DynamicConstants\";\r\nimport { dataSanitizeMeasurements, dataSanitizeProperties, dataSanitizeString, dataSanitizeUrl } from \"./Common/DataSanitizer\";\r\nvar PageViewPerformance = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the PageEventTelemetry object\r\n */\r\n function PageViewPerformance(logger, name, url, unused, properties, measurements, cs4BaseData) {\r\n this.aiDataContract = {\r\n ver: 1 /* FieldType.Required */,\r\n name: 0 /* FieldType.Default */,\r\n url: 0 /* FieldType.Default */,\r\n duration: 0 /* FieldType.Default */,\r\n perfTotal: 0 /* FieldType.Default */,\r\n networkConnect: 0 /* FieldType.Default */,\r\n sentRequest: 0 /* FieldType.Default */,\r\n receivedResponse: 0 /* FieldType.Default */,\r\n domProcessing: 0 /* FieldType.Default */,\r\n properties: 0 /* FieldType.Default */,\r\n measurements: 0 /* FieldType.Default */\r\n };\r\n var _self = this;\r\n _self.ver = 2;\r\n _self.url = dataSanitizeUrl(logger, url);\r\n _self[_DYN_NAME /* @min:%2ename */] = dataSanitizeString(logger, name) || strNotSpecified;\r\n _self[_DYN_PROPERTIES /* @min:%2eproperties */] = dataSanitizeProperties(logger, properties);\r\n _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = dataSanitizeMeasurements(logger, measurements);\r\n if (cs4BaseData) {\r\n _self.domProcessing = cs4BaseData.domProcessing;\r\n _self[_DYN_DURATION /* @min:%2eduration */] = cs4BaseData[_DYN_DURATION /* @min:%2eduration */];\r\n _self.networkConnect = cs4BaseData.networkConnect;\r\n _self.perfTotal = cs4BaseData.perfTotal;\r\n _self[_DYN_RECEIVED_RESPONSE /* @min:%2ereceivedResponse */] = cs4BaseData[_DYN_RECEIVED_RESPONSE /* @min:%2ereceivedResponse */];\r\n _self.sentRequest = cs4BaseData.sentRequest;\r\n }\r\n }\r\n PageViewPerformance.envelopeType = \"Microsoft.ApplicationInsights.{0}.PageviewPerformance\";\r\n PageViewPerformance.dataType = \"PageviewPerformanceData\";\r\n return PageViewPerformance;\r\n}());\r\nexport { PageViewPerformance };\r\n","/*\n * Application Insights JavaScript SDK - Common, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { __assignFn as __assign } from \"@microsoft/applicationinsights-shims\";\r\nimport { arrForEach, arrMap, isArray, isError, isFunction, isNullOrUndefined, isObject, isString, strTrim } from \"@microsoft/applicationinsights-core-js\";\r\nimport { strNotSpecified } from \"../Constants\";\r\nimport { _DYN_ASSEMBLY, _DYN_EXCEPTIONS, _DYN_FILE_NAME, _DYN_HAS_FULL_STACK, _DYN_INDEX_OF, _DYN_IS_MANUAL, _DYN_LENGTH, _DYN_LEVEL, _DYN_LINE, _DYN_MEASUREMENTS, _DYN_MESSAGE, _DYN_METHOD, _DYN_NAME, _DYN_PARSED_STACK, _DYN_PROBLEM_GROUP, _DYN_PROPERTIES, _DYN_SEVERITY_LEVEL, _DYN_SIZE_IN_BYTES, _DYN_SPLIT, _DYN_STRINGIFY, _DYN_TO_STRING, _DYN_TYPE_NAME, _DYN__CREATE_FROM_INTERFA1 } from \"../__DynamicConstants\";\r\nimport { dataSanitizeException, dataSanitizeMeasurements, dataSanitizeMessage, dataSanitizeProperties, dataSanitizeString } from \"./Common/DataSanitizer\";\r\nvar NoMethod = \"\";\r\nvar strError = \"error\";\r\nvar strStack = \"stack\";\r\nvar strStackDetails = \"stackDetails\";\r\nvar strErrorSrc = \"errorSrc\";\r\nvar strMessage = \"message\";\r\nvar strDescription = \"description\";\r\nfunction _stringify(value, convertToString) {\r\n var result = value;\r\n if (result && !isString(result)) {\r\n if (JSON && JSON[_DYN_STRINGIFY /* @min:%2estringify */]) {\r\n result = JSON[_DYN_STRINGIFY /* @min:%2estringify */](value);\r\n if (convertToString && (!result || result === \"{}\")) {\r\n if (isFunction(value[_DYN_TO_STRING /* @min:%2etoString */])) {\r\n result = value[_DYN_TO_STRING /* @min:%2etoString */]();\r\n }\r\n else {\r\n result = \"\" + value;\r\n }\r\n }\r\n }\r\n else {\r\n result = \"\" + value + \" - (Missing JSON.stringify)\";\r\n }\r\n }\r\n return result || \"\";\r\n}\r\nfunction _formatMessage(theEvent, errorType) {\r\n var evtMessage = theEvent;\r\n if (theEvent) {\r\n if (evtMessage && !isString(evtMessage)) {\r\n evtMessage = theEvent[strMessage] || theEvent[strDescription] || evtMessage;\r\n }\r\n // Make sure the message is a string\r\n if (evtMessage && !isString(evtMessage)) {\r\n // tslint:disable-next-line: prefer-conditional-expression\r\n evtMessage = _stringify(evtMessage, true);\r\n }\r\n if (theEvent[\"filename\"]) {\r\n // Looks like an event object with filename\r\n evtMessage = evtMessage + \" @\" + (theEvent[\"filename\"] || \"\") + \":\" + (theEvent[\"lineno\"] || \"?\") + \":\" + (theEvent[\"colno\"] || \"?\");\r\n }\r\n }\r\n // Automatically add the error type to the message if it does already appear to be present\r\n if (errorType && errorType !== \"String\" && errorType !== \"Object\" && errorType !== \"Error\" && (evtMessage || \"\")[_DYN_INDEX_OF /* @min:%2eindexOf */](errorType) === -1) {\r\n evtMessage = errorType + \": \" + evtMessage;\r\n }\r\n return evtMessage || \"\";\r\n}\r\nfunction _isExceptionDetailsInternal(value) {\r\n try {\r\n if (isObject(value)) {\r\n return \"hasFullStack\" in value && \"typeName\" in value;\r\n }\r\n }\r\n catch (e) {\r\n // This can happen with some native browser objects, but should not happen for the type we are checking for\r\n }\r\n return false;\r\n}\r\nfunction _isExceptionInternal(value) {\r\n try {\r\n if (isObject(value)) {\r\n return (\"ver\" in value && \"exceptions\" in value && \"properties\" in value);\r\n }\r\n }\r\n catch (e) {\r\n // This can happen with some native browser objects, but should not happen for the type we are checking for\r\n }\r\n return false;\r\n}\r\nfunction _isStackDetails(details) {\r\n return details && details.src && isString(details.src) && details.obj && isArray(details.obj);\r\n}\r\nfunction _convertStackObj(errorStack) {\r\n var src = errorStack || \"\";\r\n if (!isString(src)) {\r\n if (isString(src[strStack])) {\r\n src = src[strStack];\r\n }\r\n else {\r\n src = \"\" + src;\r\n }\r\n }\r\n var items = src[_DYN_SPLIT /* @min:%2esplit */](\"\\n\");\r\n return {\r\n src: src,\r\n obj: items\r\n };\r\n}\r\nfunction _getOperaStack(errorMessage) {\r\n var stack = [];\r\n var lines = errorMessage[_DYN_SPLIT /* @min:%2esplit */](\"\\n\");\r\n for (var lp = 0; lp < lines[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n var entry = lines[lp];\r\n if (lines[lp + 1]) {\r\n entry += \"@\" + lines[lp + 1];\r\n lp++;\r\n }\r\n stack.push(entry);\r\n }\r\n return {\r\n src: errorMessage,\r\n obj: stack\r\n };\r\n}\r\nfunction _getStackFromErrorObj(errorObj) {\r\n var details = null;\r\n if (errorObj) {\r\n try {\r\n /* Using bracket notation is support older browsers (IE 7/8 -- dont remember the version) that throw when using dot\r\n notation for undefined objects and we don't want to loose the error from being reported */\r\n if (errorObj[strStack]) {\r\n // Chrome/Firefox\r\n details = _convertStackObj(errorObj[strStack]);\r\n }\r\n else if (errorObj[strError] && errorObj[strError][strStack]) {\r\n // Edge error event provides the stack and error object\r\n details = _convertStackObj(errorObj[strError][strStack]);\r\n }\r\n else if (errorObj[\"exception\"] && errorObj.exception[strStack]) {\r\n details = _convertStackObj(errorObj.exception[strStack]);\r\n }\r\n else if (_isStackDetails(errorObj)) {\r\n details = errorObj;\r\n }\r\n else if (_isStackDetails(errorObj[strStackDetails])) {\r\n details = errorObj[strStackDetails];\r\n }\r\n else if (window && window[\"opera\"] && errorObj[strMessage]) {\r\n // Opera\r\n details = _getOperaStack(errorObj[_DYN_MESSAGE /* @min:%2emessage */]);\r\n }\r\n else if (errorObj[\"reason\"] && errorObj.reason[strStack]) {\r\n // UnhandledPromiseRejection\r\n details = _convertStackObj(errorObj.reason[strStack]);\r\n }\r\n else if (isString(errorObj)) {\r\n details = _convertStackObj(errorObj);\r\n }\r\n else {\r\n var evtMessage = errorObj[strMessage] || errorObj[strDescription] || \"\";\r\n if (isString(errorObj[strErrorSrc])) {\r\n if (evtMessage) {\r\n evtMessage += \"\\n\";\r\n }\r\n evtMessage += \" from \" + errorObj[strErrorSrc];\r\n }\r\n if (evtMessage) {\r\n details = _convertStackObj(evtMessage);\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // something unexpected happened so to avoid failing to report any error lets swallow the exception\r\n // and fallback to the callee/caller method\r\n details = _convertStackObj(e);\r\n }\r\n }\r\n return details || {\r\n src: \"\",\r\n obj: null\r\n };\r\n}\r\nfunction _formatStackTrace(stackDetails) {\r\n var stack = \"\";\r\n if (stackDetails) {\r\n if (stackDetails.obj) {\r\n arrForEach(stackDetails.obj, function (entry) {\r\n stack += entry + \"\\n\";\r\n });\r\n }\r\n else {\r\n stack = stackDetails.src || \"\";\r\n }\r\n }\r\n return stack;\r\n}\r\nfunction _parseStack(stack) {\r\n var parsedStack;\r\n var frames = stack.obj;\r\n if (frames && frames[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n parsedStack = [];\r\n var level_1 = 0;\r\n var totalSizeInBytes_1 = 0;\r\n arrForEach(frames, function (frame) {\r\n var theFrame = frame[_DYN_TO_STRING /* @min:%2etoString */]();\r\n if (_StackFrame.regex.test(theFrame)) {\r\n var parsedFrame = new _StackFrame(theFrame, level_1++);\r\n totalSizeInBytes_1 += parsedFrame[_DYN_SIZE_IN_BYTES /* @min:%2esizeInBytes */];\r\n parsedStack.push(parsedFrame);\r\n }\r\n });\r\n // DP Constraint - exception parsed stack must be < 32KB\r\n // remove frames from the middle to meet the threshold\r\n var exceptionParsedStackThreshold = 32 * 1024;\r\n if (totalSizeInBytes_1 > exceptionParsedStackThreshold) {\r\n var left = 0;\r\n var right = parsedStack[_DYN_LENGTH /* @min:%2elength */] - 1;\r\n var size = 0;\r\n var acceptedLeft = left;\r\n var acceptedRight = right;\r\n while (left < right) {\r\n // check size\r\n var lSize = parsedStack[left][_DYN_SIZE_IN_BYTES /* @min:%2esizeInBytes */];\r\n var rSize = parsedStack[right][_DYN_SIZE_IN_BYTES /* @min:%2esizeInBytes */];\r\n size += lSize + rSize;\r\n if (size > exceptionParsedStackThreshold) {\r\n // remove extra frames from the middle\r\n var howMany = acceptedRight - acceptedLeft + 1;\r\n parsedStack.splice(acceptedLeft, howMany);\r\n break;\r\n }\r\n // update pointers\r\n acceptedLeft = left;\r\n acceptedRight = right;\r\n left++;\r\n right--;\r\n }\r\n }\r\n }\r\n return parsedStack;\r\n}\r\nfunction _getErrorType(errorType) {\r\n // Gets the Error Type by passing the constructor (used to get the true type of native error object).\r\n var typeName = \"\";\r\n if (errorType) {\r\n typeName = errorType.typeName || errorType[_DYN_NAME /* @min:%2ename */] || \"\";\r\n if (!typeName) {\r\n try {\r\n var funcNameRegex = /function (.{1,200})\\(/;\r\n var results = (funcNameRegex).exec((errorType).constructor[_DYN_TO_STRING /* @min:%2etoString */]());\r\n typeName = (results && results[_DYN_LENGTH /* @min:%2elength */] > 1) ? results[1] : \"\";\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty -- Ignoring any failures as nothing we can do\r\n }\r\n }\r\n }\r\n return typeName;\r\n}\r\n/**\r\n * Formats the provided errorObj for display and reporting, it may be a String, Object, integer or undefined depending on the browser.\r\n * @param errorObj The supplied errorObj\r\n */\r\nexport function _formatErrorCode(errorObj) {\r\n if (errorObj) {\r\n try {\r\n if (!isString(errorObj)) {\r\n var errorType = _getErrorType(errorObj);\r\n var result = _stringify(errorObj, false);\r\n if (!result || result === \"{}\") {\r\n if (errorObj[strError]) {\r\n // Looks like an MS Error Event\r\n errorObj = errorObj[strError];\r\n errorType = _getErrorType(errorObj);\r\n }\r\n result = _stringify(errorObj, true);\r\n }\r\n if (result[_DYN_INDEX_OF /* @min:%2eindexOf */](errorType) !== 0 && errorType !== \"String\") {\r\n return errorType + \":\" + result;\r\n }\r\n return result;\r\n }\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty -- Ignoring any failures as nothing we can do\r\n }\r\n }\r\n // Fallback to just letting the object format itself into a string\r\n return \"\" + (errorObj || \"\");\r\n}\r\nvar Exception = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the ExceptionTelemetry object\r\n */\r\n function Exception(logger, exception, properties, measurements, severityLevel, id) {\r\n this.aiDataContract = {\r\n ver: 1 /* FieldType.Required */,\r\n exceptions: 1 /* FieldType.Required */,\r\n severityLevel: 0 /* FieldType.Default */,\r\n properties: 0 /* FieldType.Default */,\r\n measurements: 0 /* FieldType.Default */\r\n };\r\n var _self = this;\r\n _self.ver = 2; // TODO: handle the CS\"4.0\" ==> breeze 2 conversion in a better way\r\n if (!_isExceptionInternal(exception)) {\r\n if (!properties) {\r\n properties = {};\r\n }\r\n _self[_DYN_EXCEPTIONS /* @min:%2eexceptions */] = [new _ExceptionDetails(logger, exception, properties)];\r\n _self[_DYN_PROPERTIES /* @min:%2eproperties */] = dataSanitizeProperties(logger, properties);\r\n _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = dataSanitizeMeasurements(logger, measurements);\r\n if (severityLevel) {\r\n _self[_DYN_SEVERITY_LEVEL /* @min:%2eseverityLevel */] = severityLevel;\r\n }\r\n if (id) {\r\n _self.id = id;\r\n }\r\n }\r\n else {\r\n _self[_DYN_EXCEPTIONS /* @min:%2eexceptions */] = exception[_DYN_EXCEPTIONS /* @min:%2eexceptions */] || [];\r\n _self[_DYN_PROPERTIES /* @min:%2eproperties */] = exception[_DYN_PROPERTIES /* @min:%2eproperties */];\r\n _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = exception[_DYN_MEASUREMENTS /* @min:%2emeasurements */];\r\n if (exception[_DYN_SEVERITY_LEVEL /* @min:%2eseverityLevel */]) {\r\n _self[_DYN_SEVERITY_LEVEL /* @min:%2eseverityLevel */] = exception[_DYN_SEVERITY_LEVEL /* @min:%2eseverityLevel */];\r\n }\r\n if (exception.id) {\r\n _self.id = exception.id;\r\n }\r\n if (exception[_DYN_PROBLEM_GROUP /* @min:%2eproblemGroup */]) {\r\n _self[_DYN_PROBLEM_GROUP /* @min:%2eproblemGroup */] = exception[_DYN_PROBLEM_GROUP /* @min:%2eproblemGroup */];\r\n }\r\n // bool/int types, use isNullOrUndefined\r\n if (!isNullOrUndefined(exception[_DYN_IS_MANUAL /* @min:%2eisManual */])) {\r\n _self[_DYN_IS_MANUAL /* @min:%2eisManual */] = exception[_DYN_IS_MANUAL /* @min:%2eisManual */];\r\n }\r\n }\r\n }\r\n Exception.CreateAutoException = function (message, url, lineNumber, columnNumber, error, evt, stack, errorSrc) {\r\n var _a;\r\n var errorType = _getErrorType(error || evt || message);\r\n return _a = {},\r\n _a[_DYN_MESSAGE /* @min:message */] = _formatMessage(message, errorType),\r\n _a.url = url,\r\n _a.lineNumber = lineNumber,\r\n _a.columnNumber = columnNumber,\r\n _a.error = _formatErrorCode(error || evt || message),\r\n _a.evt = _formatErrorCode(evt || message),\r\n _a[_DYN_TYPE_NAME /* @min:typeName */] = errorType,\r\n _a.stackDetails = _getStackFromErrorObj(stack || error || evt),\r\n _a.errorSrc = errorSrc,\r\n _a;\r\n };\r\n Exception.CreateFromInterface = function (logger, exception, properties, measurements) {\r\n var exceptions = exception[_DYN_EXCEPTIONS /* @min:%2eexceptions */]\r\n && arrMap(exception[_DYN_EXCEPTIONS /* @min:%2eexceptions */], function (ex) { return _ExceptionDetails[_DYN__CREATE_FROM_INTERFA1 /* @min:%2eCreateFromInterface */](logger, ex); });\r\n var exceptionData = new Exception(logger, __assign(__assign({}, exception), { exceptions: exceptions }), properties, measurements);\r\n return exceptionData;\r\n };\r\n Exception.prototype.toInterface = function () {\r\n var _a;\r\n var _b = this, exceptions = _b.exceptions, properties = _b.properties, measurements = _b.measurements, severityLevel = _b.severityLevel, problemGroup = _b.problemGroup, id = _b.id, isManual = _b.isManual;\r\n var exceptionDetailsInterface = exceptions instanceof Array\r\n && arrMap(exceptions, function (exception) { return exception.toInterface(); })\r\n || undefined;\r\n return _a = {\r\n ver: \"4.0\"\r\n },\r\n _a[_DYN_EXCEPTIONS /* @min:exceptions */] = exceptionDetailsInterface,\r\n _a.severityLevel = severityLevel,\r\n _a.properties = properties,\r\n _a.measurements = measurements,\r\n _a.problemGroup = problemGroup,\r\n _a.id = id,\r\n _a.isManual = isManual,\r\n _a;\r\n };\r\n /**\r\n * Creates a simple exception with 1 stack frame. Useful for manual constracting of exception.\r\n */\r\n Exception.CreateSimpleException = function (message, typeName, assembly, fileName, details, line) {\r\n var _a;\r\n return {\r\n exceptions: [\r\n (_a = {},\r\n _a[_DYN_HAS_FULL_STACK /* @min:hasFullStack */] = true,\r\n _a.message = message,\r\n _a.stack = details,\r\n _a.typeName = typeName,\r\n _a)\r\n ]\r\n };\r\n };\r\n Exception.envelopeType = \"Microsoft.ApplicationInsights.{0}.Exception\";\r\n Exception.dataType = \"ExceptionData\";\r\n Exception.formatError = _formatErrorCode;\r\n return Exception;\r\n}());\r\nexport { Exception };\r\nvar _ExceptionDetails = /** @class */ (function () {\r\n function _ExceptionDetails(logger, exception, properties) {\r\n this.aiDataContract = {\r\n id: 0 /* FieldType.Default */,\r\n outerId: 0 /* FieldType.Default */,\r\n typeName: 1 /* FieldType.Required */,\r\n message: 1 /* FieldType.Required */,\r\n hasFullStack: 0 /* FieldType.Default */,\r\n stack: 0 /* FieldType.Default */,\r\n parsedStack: 2 /* FieldType.Array */\r\n };\r\n var _self = this;\r\n if (!_isExceptionDetailsInternal(exception)) {\r\n var error = exception;\r\n var evt = error && error.evt;\r\n if (!isError(error)) {\r\n error = error[strError] || evt || error;\r\n }\r\n _self[_DYN_TYPE_NAME /* @min:%2etypeName */] = dataSanitizeString(logger, _getErrorType(error)) || strNotSpecified;\r\n _self[_DYN_MESSAGE /* @min:%2emessage */] = dataSanitizeMessage(logger, _formatMessage(exception || error, _self[_DYN_TYPE_NAME /* @min:%2etypeName */])) || strNotSpecified;\r\n var stack = exception[strStackDetails] || _getStackFromErrorObj(exception);\r\n _self[_DYN_PARSED_STACK /* @min:%2eparsedStack */] = _parseStack(stack);\r\n _self[strStack] = dataSanitizeException(logger, _formatStackTrace(stack));\r\n _self.hasFullStack = isArray(_self.parsedStack) && _self.parsedStack[_DYN_LENGTH /* @min:%2elength */] > 0;\r\n if (properties) {\r\n properties[_DYN_TYPE_NAME /* @min:%2etypeName */] = properties[_DYN_TYPE_NAME /* @min:%2etypeName */] || _self[_DYN_TYPE_NAME /* @min:%2etypeName */];\r\n }\r\n }\r\n else {\r\n _self[_DYN_TYPE_NAME /* @min:%2etypeName */] = exception[_DYN_TYPE_NAME /* @min:%2etypeName */];\r\n _self[_DYN_MESSAGE /* @min:%2emessage */] = exception[_DYN_MESSAGE /* @min:%2emessage */];\r\n _self[strStack] = exception[strStack];\r\n _self[_DYN_PARSED_STACK /* @min:%2eparsedStack */] = exception[_DYN_PARSED_STACK /* @min:%2eparsedStack */] || [];\r\n _self[_DYN_HAS_FULL_STACK /* @min:%2ehasFullStack */] = exception[_DYN_HAS_FULL_STACK /* @min:%2ehasFullStack */];\r\n }\r\n }\r\n _ExceptionDetails.prototype.toInterface = function () {\r\n var _a;\r\n var _self = this;\r\n var parsedStack = _self[_DYN_PARSED_STACK /* @min:%2eparsedStack */] instanceof Array\r\n && arrMap(_self[_DYN_PARSED_STACK /* @min:%2eparsedStack */], function (frame) { return frame.toInterface(); });\r\n var exceptionDetailsInterface = (_a = {\r\n id: _self.id,\r\n outerId: _self.outerId,\r\n typeName: _self[_DYN_TYPE_NAME /* @min:%2etypeName */],\r\n message: _self[_DYN_MESSAGE /* @min:%2emessage */],\r\n hasFullStack: _self[_DYN_HAS_FULL_STACK /* @min:%2ehasFullStack */],\r\n stack: _self[strStack]\r\n },\r\n _a[_DYN_PARSED_STACK /* @min:parsedStack */] = parsedStack || undefined,\r\n _a);\r\n return exceptionDetailsInterface;\r\n };\r\n _ExceptionDetails.CreateFromInterface = function (logger, exception) {\r\n var parsedStack = (exception[_DYN_PARSED_STACK /* @min:%2eparsedStack */] instanceof Array\r\n && arrMap(exception[_DYN_PARSED_STACK /* @min:%2eparsedStack */], function (frame) { return _StackFrame[_DYN__CREATE_FROM_INTERFA1 /* @min:%2eCreateFromInterface */](frame); }))\r\n || exception[_DYN_PARSED_STACK /* @min:%2eparsedStack */];\r\n var exceptionDetails = new _ExceptionDetails(logger, __assign(__assign({}, exception), { parsedStack: parsedStack }));\r\n return exceptionDetails;\r\n };\r\n return _ExceptionDetails;\r\n}());\r\nexport { _ExceptionDetails };\r\nvar _StackFrame = /** @class */ (function () {\r\n function _StackFrame(sourceFrame, level) {\r\n this.aiDataContract = {\r\n level: 1 /* FieldType.Required */,\r\n method: 1 /* FieldType.Required */,\r\n assembly: 0 /* FieldType.Default */,\r\n fileName: 0 /* FieldType.Default */,\r\n line: 0 /* FieldType.Default */\r\n };\r\n var _self = this;\r\n _self[_DYN_SIZE_IN_BYTES /* @min:%2esizeInBytes */] = 0;\r\n // Not converting this to isString() as typescript uses this logic to \"understand\" the different\r\n // types for the 2 different code paths\r\n if (typeof sourceFrame === \"string\") {\r\n var frame = sourceFrame;\r\n _self[_DYN_LEVEL /* @min:%2elevel */] = level;\r\n _self[_DYN_METHOD /* @min:%2emethod */] = NoMethod;\r\n _self[_DYN_ASSEMBLY /* @min:%2eassembly */] = strTrim(frame);\r\n _self[_DYN_FILE_NAME /* @min:%2efileName */] = \"\";\r\n _self[_DYN_LINE /* @min:%2eline */] = 0;\r\n var matches = frame.match(_StackFrame.regex);\r\n if (matches && matches[_DYN_LENGTH /* @min:%2elength */] >= 5) {\r\n _self[_DYN_METHOD /* @min:%2emethod */] = strTrim(matches[2]) || _self[_DYN_METHOD /* @min:%2emethod */];\r\n _self[_DYN_FILE_NAME /* @min:%2efileName */] = strTrim(matches[4]);\r\n _self[_DYN_LINE /* @min:%2eline */] = parseInt(matches[5]) || 0;\r\n }\r\n }\r\n else {\r\n _self[_DYN_LEVEL /* @min:%2elevel */] = sourceFrame[_DYN_LEVEL /* @min:%2elevel */];\r\n _self[_DYN_METHOD /* @min:%2emethod */] = sourceFrame[_DYN_METHOD /* @min:%2emethod */];\r\n _self[_DYN_ASSEMBLY /* @min:%2eassembly */] = sourceFrame[_DYN_ASSEMBLY /* @min:%2eassembly */];\r\n _self[_DYN_FILE_NAME /* @min:%2efileName */] = sourceFrame[_DYN_FILE_NAME /* @min:%2efileName */];\r\n _self[_DYN_LINE /* @min:%2eline */] = sourceFrame[_DYN_LINE /* @min:%2eline */];\r\n _self[_DYN_SIZE_IN_BYTES /* @min:%2esizeInBytes */] = 0;\r\n }\r\n _self.sizeInBytes += _self.method[_DYN_LENGTH /* @min:%2elength */];\r\n _self.sizeInBytes += _self.fileName[_DYN_LENGTH /* @min:%2elength */];\r\n _self.sizeInBytes += _self.assembly[_DYN_LENGTH /* @min:%2elength */];\r\n // todo: these might need to be removed depending on how the back-end settles on their size calculation\r\n _self[_DYN_SIZE_IN_BYTES /* @min:%2esizeInBytes */] += _StackFrame.baseSize;\r\n _self.sizeInBytes += _self.level.toString()[_DYN_LENGTH /* @min:%2elength */];\r\n _self.sizeInBytes += _self.line.toString()[_DYN_LENGTH /* @min:%2elength */];\r\n }\r\n _StackFrame.CreateFromInterface = function (frame) {\r\n return new _StackFrame(frame, null /* level is available in frame interface */);\r\n };\r\n _StackFrame.prototype.toInterface = function () {\r\n var _self = this;\r\n return {\r\n level: _self[_DYN_LEVEL /* @min:%2elevel */],\r\n method: _self[_DYN_METHOD /* @min:%2emethod */],\r\n assembly: _self[_DYN_ASSEMBLY /* @min:%2eassembly */],\r\n fileName: _self[_DYN_FILE_NAME /* @min:%2efileName */],\r\n line: _self[_DYN_LINE /* @min:%2eline */]\r\n };\r\n };\r\n // regex to match stack frames from ie/chrome/ff\r\n // methodName=$2, fileName=$4, lineNo=$5, column=$6\r\n _StackFrame.regex = /^([\\s]+at)?[\\s]{0,50}([^\\@\\()]+?)[\\s]{0,50}(\\@|\\()([^\\(\\n]+):([0-9]+):([0-9]+)(\\)?)$/;\r\n _StackFrame.baseSize = 58; // '{\"method\":\"\",\"level\":,\"assembly\":\"\",\"fileName\":\"\",\"line\":}'.length\r\n return _StackFrame;\r\n}());\r\nexport { _StackFrame };\r\n","/*\n * Application Insights JavaScript SDK - Common, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { msToTimeSpan } from \"../HelperFuncs\";\r\nimport { AjaxHelperParseDependencyPath } from \"../Util\";\r\nimport { _DYN_DURATION, _DYN_MEASUREMENTS, _DYN_NAME, _DYN_PROPERTIES } from \"../__DynamicConstants\";\r\nimport { dataSanitizeMeasurements, dataSanitizeProperties, dataSanitizeString, dataSanitizeUrl } from \"./Common/DataSanitizer\";\r\nvar RemoteDependencyData = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the RemoteDependencyData object\r\n */\r\n function RemoteDependencyData(logger, id, absoluteUrl, commandName, value, success, resultCode, method, requestAPI, correlationContext, properties, measurements) {\r\n if (requestAPI === void 0) { requestAPI = \"Ajax\"; }\r\n this.aiDataContract = {\r\n id: 1 /* FieldType.Required */,\r\n ver: 1 /* FieldType.Required */,\r\n name: 0 /* FieldType.Default */,\r\n resultCode: 0 /* FieldType.Default */,\r\n duration: 0 /* FieldType.Default */,\r\n success: 0 /* FieldType.Default */,\r\n data: 0 /* FieldType.Default */,\r\n target: 0 /* FieldType.Default */,\r\n type: 0 /* FieldType.Default */,\r\n properties: 0 /* FieldType.Default */,\r\n measurements: 0 /* FieldType.Default */,\r\n kind: 0 /* FieldType.Default */,\r\n value: 0 /* FieldType.Default */,\r\n count: 0 /* FieldType.Default */,\r\n min: 0 /* FieldType.Default */,\r\n max: 0 /* FieldType.Default */,\r\n stdDev: 0 /* FieldType.Default */,\r\n dependencyKind: 0 /* FieldType.Default */,\r\n dependencySource: 0 /* FieldType.Default */,\r\n commandName: 0 /* FieldType.Default */,\r\n dependencyTypeName: 0 /* FieldType.Default */\r\n };\r\n var _self = this;\r\n _self.ver = 2;\r\n _self.id = id;\r\n _self[_DYN_DURATION /* @min:%2eduration */] = msToTimeSpan(value);\r\n _self.success = success;\r\n _self.resultCode = resultCode + \"\";\r\n _self.type = dataSanitizeString(logger, requestAPI);\r\n var dependencyFields = AjaxHelperParseDependencyPath(logger, absoluteUrl, method, commandName);\r\n _self.data = dataSanitizeUrl(logger, commandName) || dependencyFields.data; // get a value from hosturl if commandName not available\r\n _self.target = dataSanitizeString(logger, dependencyFields.target);\r\n if (correlationContext) {\r\n _self.target = \"\".concat(_self.target, \" | \").concat(correlationContext);\r\n }\r\n _self[_DYN_NAME /* @min:%2ename */] = dataSanitizeString(logger, dependencyFields[_DYN_NAME /* @min:%2ename */]);\r\n _self[_DYN_PROPERTIES /* @min:%2eproperties */] = dataSanitizeProperties(logger, properties);\r\n _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = dataSanitizeMeasurements(logger, measurements);\r\n }\r\n RemoteDependencyData.envelopeType = \"Microsoft.ApplicationInsights.{0}.RemoteDependency\";\r\n RemoteDependencyData.dataType = \"RemoteDependencyData\";\r\n return RemoteDependencyData;\r\n}());\r\nexport { RemoteDependencyData };\r\n","/*\n * Application Insights JavaScript SDK - Core, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { strShimFunction, strShimPrototype } from \"@microsoft/applicationinsights-shims\";\r\nimport { _DYN_APPLY, _DYN_LENGTH, _DYN_NAME, _DYN_PUSH, _DYN_SPLICE } from \"../__DynamicConstants\";\r\nimport { getGlobalInst } from \"./EnvUtils\";\r\nimport { _getObjProto, hasOwnProperty } from \"./HelperFuncs\";\r\nvar aiInstrumentHooks = \"_aiHooks\";\r\nvar cbNames = [\r\n \"req\", \"rsp\", \"hkErr\", \"fnErr\"\r\n];\r\n/** @ignore */\r\nfunction _arrLoop(arr, fn) {\r\n if (arr) {\r\n for (var lp = 0; lp < arr[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n if (fn(arr[lp], lp)) {\r\n break;\r\n }\r\n }\r\n }\r\n}\r\n/** @ignore */\r\nfunction _doCallbacks(hooks, callDetails, cbArgs, hookCtx, type) {\r\n if (type >= 0 /* CallbackType.Request */ && type <= 2 /* CallbackType.HookError */) {\r\n _arrLoop(hooks, function (hook, idx) {\r\n var cbks = hook.cbks;\r\n var cb = cbks[cbNames[type]];\r\n if (cb) {\r\n // Set the specific hook context implementation using a lazy creation pattern\r\n callDetails.ctx = function () {\r\n var ctx = hookCtx[idx] = (hookCtx[idx] || {});\r\n return ctx;\r\n };\r\n try {\r\n cb[_DYN_APPLY /* @min:%2eapply */](callDetails.inst, cbArgs);\r\n }\r\n catch (err) {\r\n var orgEx = callDetails.err;\r\n try {\r\n // Report Hook error via the callback\r\n var hookErrorCb = cbks[cbNames[2 /* CallbackType.HookError */]];\r\n if (hookErrorCb) {\r\n callDetails.err = err;\r\n hookErrorCb[_DYN_APPLY /* @min:%2eapply */](callDetails.inst, cbArgs);\r\n }\r\n }\r\n catch (e) {\r\n // Not much we can do here -- swallowing the exception to avoid crashing the hosting app\r\n }\r\n finally {\r\n // restore the original exception (if any)\r\n callDetails.err = orgEx;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n}\r\n/** @ignore */\r\nfunction _createFunctionHook(aiHook) {\r\n // Define a temporary method that queues-up a the real method call\r\n return function () {\r\n var _a;\r\n var funcThis = this;\r\n // Capture the original arguments passed to the method\r\n var orgArgs = arguments;\r\n var hooks = aiHook.h;\r\n var funcArgs = (_a = {},\r\n _a[_DYN_NAME /* @min:name */] = aiHook.n,\r\n _a.inst = funcThis,\r\n _a.ctx = null,\r\n _a.set = _replaceArg,\r\n _a);\r\n var hookCtx = [];\r\n var cbArgs = _createArgs([funcArgs], orgArgs);\r\n funcArgs.evt = getGlobalInst(\"event\");\r\n function _createArgs(target, theArgs) {\r\n _arrLoop(theArgs, function (arg) {\r\n target[_DYN_PUSH /* @min:%2epush */](arg);\r\n });\r\n return target;\r\n }\r\n function _replaceArg(idx, value) {\r\n orgArgs = _createArgs([], orgArgs);\r\n orgArgs[idx] = value;\r\n cbArgs = _createArgs([funcArgs], orgArgs);\r\n }\r\n // Call the pre-request hooks\r\n _doCallbacks(hooks, funcArgs, cbArgs, hookCtx, 0 /* CallbackType.Request */);\r\n // Call the original function was called\r\n var theFunc = aiHook.f;\r\n if (theFunc) {\r\n try {\r\n funcArgs.rslt = theFunc[_DYN_APPLY /* @min:%2eapply */](funcThis, orgArgs);\r\n }\r\n catch (err) {\r\n // Report the request callback\r\n funcArgs.err = err;\r\n _doCallbacks(hooks, funcArgs, cbArgs, hookCtx, 3 /* CallbackType.FunctionError */);\r\n // rethrow the original exception so anyone listening for it can catch the exception\r\n throw err;\r\n }\r\n }\r\n // Call the post-request hooks\r\n _doCallbacks(hooks, funcArgs, cbArgs, hookCtx, 1 /* CallbackType.Response */);\r\n return funcArgs.rslt;\r\n };\r\n}\r\n/** @ignore */\r\nfunction _getOwner(target, name, checkPrototype) {\r\n var owner = null;\r\n if (target) {\r\n if (hasOwnProperty(target, name)) {\r\n owner = target;\r\n }\r\n else if (checkPrototype) {\r\n owner = _getOwner(_getObjProto(target), name, false);\r\n }\r\n }\r\n return owner;\r\n}\r\n/**\r\n * Intercept the named prototype functions for the target class / object\r\n * @param target - The target object\r\n * @param funcName - The function name\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n */\r\nexport function InstrumentProto(target, funcName, callbacks) {\r\n if (target) {\r\n return InstrumentFunc(target[strShimPrototype], funcName, callbacks, false);\r\n }\r\n return null;\r\n}\r\n/**\r\n * Intercept the named prototype functions for the target class / object\r\n * @param target - The target object\r\n * @param funcNames - The function names to intercept and call\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n */\r\nexport function InstrumentProtos(target, funcNames, callbacks) {\r\n if (target) {\r\n return InstrumentFuncs(target[strShimPrototype], funcNames, callbacks, false);\r\n }\r\n return null;\r\n}\r\nfunction _createInstrumentHook(owner, funcName, fn, callbacks) {\r\n var aiHook = fn && fn[aiInstrumentHooks];\r\n if (!aiHook) {\r\n // Only hook the function once\r\n aiHook = {\r\n i: 0,\r\n n: funcName,\r\n f: fn,\r\n h: []\r\n };\r\n // Override (hook) the original function\r\n var newFunc = _createFunctionHook(aiHook);\r\n newFunc[aiInstrumentHooks] = aiHook; // Tag and store the function hooks\r\n owner[funcName] = newFunc;\r\n }\r\n var theHook = {\r\n // tslint:disable:object-literal-shorthand\r\n id: aiHook.i,\r\n cbks: callbacks,\r\n rm: function () {\r\n // DO NOT Use () => { shorthand for the function as the this gets replaced\r\n // with the outer this and not the this for theHook instance.\r\n var id = this.id;\r\n _arrLoop(aiHook.h, function (hook, idx) {\r\n if (hook.id === id) {\r\n aiHook.h[_DYN_SPLICE /* @min:%2esplice */](idx, 1);\r\n return 1;\r\n }\r\n });\r\n }\r\n // tslint:enable:object-literal-shorthand\r\n };\r\n aiHook.i++;\r\n aiHook.h[_DYN_PUSH /* @min:%2epush */](theHook);\r\n return theHook;\r\n}\r\n/**\r\n * Intercept the named prototype functions for the target class / object\r\n * @param target - The target object\r\n * @param funcName - The function name\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n * @param checkPrototype - If the function doesn't exist on the target should it attempt to hook the prototype function\r\n */\r\nexport function InstrumentFunc(target, funcName, callbacks, checkPrototype) {\r\n if (checkPrototype === void 0) { checkPrototype = true; }\r\n if (target && funcName && callbacks) {\r\n var owner = _getOwner(target, funcName, checkPrototype);\r\n if (owner) {\r\n var fn = owner[funcName];\r\n if (typeof fn === strShimFunction) {\r\n return _createInstrumentHook(owner, funcName, fn, callbacks);\r\n }\r\n }\r\n }\r\n return null;\r\n}\r\n/**\r\n * Intercept the named functions for the target class / object\r\n * @param target - The target object\r\n * @param funcNames - The function names to intercept and call\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n * @param checkPrototype - If the function doesn't exist on the target should it attempt to hook the prototype function\r\n */\r\nexport function InstrumentFuncs(target, funcNames, callbacks, checkPrototype) {\r\n if (checkPrototype === void 0) { checkPrototype = true; }\r\n var hooks = null;\r\n _arrLoop(funcNames, function (funcName) {\r\n var hook = InstrumentFunc(target, funcName, callbacks, checkPrototype);\r\n if (hook) {\r\n if (!hooks) {\r\n hooks = [];\r\n }\r\n hooks[_DYN_PUSH /* @min:%2epush */](hook);\r\n }\r\n });\r\n return hooks;\r\n}\r\n/**\r\n * Add an instrumentation hook to the provided named \"event\" for the target class / object, this doesn't check whether the\r\n * named \"event\" is in fact a function and just assigns the instrumentation hook to the target[evtName]\r\n * @param target - The target object\r\n * @param evtName - The name of the event\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n * @param checkPrototype - If the function doesn't exist on the target should it attempt to hook the prototype function\r\n */\r\nexport function InstrumentEvent(target, evtName, callbacks, checkPrototype) {\r\n if (target && evtName && callbacks) {\r\n var owner = _getOwner(target, evtName, checkPrototype) || target;\r\n if (owner) {\r\n return _createInstrumentHook(owner, evtName, owner[evtName], callbacks);\r\n }\r\n }\r\n return null;\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Web Analytics, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// @skip-file-minify\r\n// ##############################################################\r\n// AUTO GENERATED FILE: This file is Auto Generated during build.\r\n// ##############################################################\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\nexport var _DYN_TO_STRING = \"toString\"; // Count: 4\r\nexport var _DYN_DISABLE_EXCEPTION_TR0 = \"disableExceptionTracking\"; // Count: 3\r\nexport var _DYN_AUTO_TRACK_PAGE_VISI1 = \"autoTrackPageVisitTime\"; // Count: 4\r\nexport var _DYN_OVERRIDE_PAGE_VIEW_D2 = \"overridePageViewDuration\"; // Count: 3\r\nexport var _DYN_ENABLE_UNHANDLED_PRO3 = \"enableUnhandledPromiseRejectionTracking\"; // Count: 3\r\nexport var _DYN_SAMPLING_PERCENTAGE = \"samplingPercentage\"; // Count: 4\r\nexport var _DYN_IS_STORAGE_USE_DISAB4 = \"isStorageUseDisabled\"; // Count: 4\r\nexport var _DYN_IS_BROWSER_LINK_TRAC5 = \"isBrowserLinkTrackingEnabled\"; // Count: 4\r\nexport var _DYN_ENABLE_AUTO_ROUTE_TR6 = \"enableAutoRouteTracking\"; // Count: 3\r\nexport var _DYN_NAME_PREFIX = \"namePrefix\"; // Count: 3\r\nexport var _DYN_DISABLE_FLUSH_ON_BEF7 = \"disableFlushOnBeforeUnload\"; // Count: 3\r\nexport var _DYN_DISABLE_FLUSH_ON_UNL8 = \"disableFlushOnUnload\"; // Count: 2\r\nexport var _DYN_CORE = \"core\"; // Count: 7\r\nexport var _DYN_DATA_TYPE = \"dataType\"; // Count: 8\r\nexport var _DYN_ENVELOPE_TYPE = \"envelopeType\"; // Count: 7\r\nexport var _DYN_DIAG_LOG = \"diagLog\"; // Count: 13\r\nexport var _DYN_TRACK = \"track\"; // Count: 7\r\nexport var _DYN_TRACK_PAGE_VIEW = \"trackPageView\"; // Count: 4\r\nexport var _DYN_TRACK_PREVIOUS_PAGE_9 = \"trackPreviousPageVisit\"; // Count: 3\r\nexport var _DYN_SEND_PAGE_VIEW_INTER10 = \"sendPageViewInternal\"; // Count: 7\r\nexport var _DYN_SEND_PAGE_VIEW_PERFO11 = \"sendPageViewPerformanceInternal\"; // Count: 3\r\nexport var _DYN_POPULATE_PAGE_VIEW_P12 = \"populatePageViewPerformanceEvent\"; // Count: 3\r\nexport var _DYN_HREF = \"href\"; // Count: 6\r\nexport var _DYN_SEND_EXCEPTION_INTER13 = \"sendExceptionInternal\"; // Count: 2\r\nexport var _DYN_EXCEPTION = \"exception\"; // Count: 3\r\nexport var _DYN_ERROR = \"error\"; // Count: 5\r\nexport var _DYN__ONERROR = \"_onerror\"; // Count: 3\r\nexport var _DYN_ERROR_SRC = \"errorSrc\"; // Count: 3\r\nexport var _DYN_LINE_NUMBER = \"lineNumber\"; // Count: 5\r\nexport var _DYN_COLUMN_NUMBER = \"columnNumber\"; // Count: 5\r\nexport var _DYN_MESSAGE = \"message\"; // Count: 4\r\nexport var _DYN__CREATE_AUTO_EXCEPTI14 = \"CreateAutoException\"; // Count: 3\r\nexport var _DYN_ADD_TELEMETRY_INITIA15 = \"addTelemetryInitializer\"; // Count: 4\r\nexport var _DYN_DURATION = \"duration\"; // Count: 10\r\nexport var _DYN_LENGTH = \"length\"; // Count: 5\r\nexport var _DYN_IS_PERFORMANCE_TIMIN16 = \"isPerformanceTimingSupported\"; // Count: 2\r\nexport var _DYN_GET_PERFORMANCE_TIMI17 = \"getPerformanceTiming\"; // Count: 2\r\nexport var _DYN_NAVIGATION_START = \"navigationStart\"; // Count: 4\r\nexport var _DYN_SHOULD_COLLECT_DURAT18 = \"shouldCollectDuration\"; // Count: 3\r\nexport var _DYN_IS_PERFORMANCE_TIMIN19 = \"isPerformanceTimingDataReady\"; // Count: 2\r\nexport var _DYN_GET_ENTRIES_BY_TYPE = \"getEntriesByType\"; // Count: 3\r\nexport var _DYN_RESPONSE_START = \"responseStart\"; // Count: 5\r\nexport var _DYN_REQUEST_START = \"requestStart\"; // Count: 3\r\nexport var _DYN_LOAD_EVENT_END = \"loadEventEnd\"; // Count: 4\r\nexport var _DYN_RESPONSE_END = \"responseEnd\"; // Count: 5\r\nexport var _DYN_CONNECT_END = \"connectEnd\"; // Count: 4\r\nexport var _DYN_PAGE_VISIT_START_TIM20 = \"pageVisitStartTime\"; // Count: 2\r\n","/*\n * Application Insights JavaScript SDK - Web Analytics, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { dateTimeUtilsDuration } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal, arrForEach, dumpObj, getDocument, getExceptionName, getLocation, isNullOrUndefined } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_DURATION, _DYN_GET_PERFORMANCE_TIMI17, _DYN_HREF, _DYN_IS_PERFORMANCE_TIMIN16, _DYN_IS_PERFORMANCE_TIMIN19, _DYN_LENGTH, _DYN_NAVIGATION_START, _DYN_POPULATE_PAGE_VIEW_P12, _DYN_SEND_PAGE_VIEW_INTER10, _DYN_SEND_PAGE_VIEW_PERFO11, _DYN_SHOULD_COLLECT_DURAT18, _DYN_TRACK_PAGE_VIEW } from \"../../__DynamicConstants\";\r\n/**\r\n * Class encapsulates sending page views and page view performance telemetry.\r\n */\r\nvar PageViewManager = /** @class */ (function () {\r\n function PageViewManager(appInsights, overridePageViewDuration, core, pageViewPerformanceManager) {\r\n dynamicProto(PageViewManager, this, function (_self) {\r\n var intervalHandle = null;\r\n var itemQueue = [];\r\n var pageViewPerformanceSent = false;\r\n var _logger;\r\n if (core) {\r\n _logger = core.logger;\r\n }\r\n function _flushChannels(isAsync) {\r\n if (core) {\r\n core.flush(isAsync);\r\n }\r\n }\r\n function _addQueue(cb) {\r\n itemQueue.push(cb);\r\n if (!intervalHandle) {\r\n intervalHandle = setInterval((function () {\r\n var allItems = itemQueue.slice(0);\r\n var doFlush = false;\r\n itemQueue = [];\r\n arrForEach(allItems, function (item) {\r\n if (!item()) {\r\n // Not processed so rescheduled\r\n itemQueue.push(item);\r\n }\r\n else {\r\n doFlush = true;\r\n }\r\n });\r\n if (itemQueue[_DYN_LENGTH /* @min:%2elength */] === 0) {\r\n clearInterval(intervalHandle);\r\n intervalHandle = null;\r\n }\r\n if (doFlush) {\r\n // We process at least one item so flush the queue\r\n _flushChannels(true);\r\n }\r\n }), 100);\r\n }\r\n }\r\n _self[_DYN_TRACK_PAGE_VIEW /* @min:%2etrackPageView */] = function (pageView, customProperties) {\r\n var name = pageView.name;\r\n if (isNullOrUndefined(name) || typeof name !== \"string\") {\r\n var doc = getDocument();\r\n name = pageView.name = doc && doc.title || \"\";\r\n }\r\n var uri = pageView.uri;\r\n if (isNullOrUndefined(uri) || typeof uri !== \"string\") {\r\n var location_1 = getLocation();\r\n uri = pageView.uri = location_1 && location_1[_DYN_HREF /* @min:%2ehref */] || \"\";\r\n }\r\n // case 1a. if performance timing is not supported by the browser, send the page view telemetry with the duration provided by the user. If the user\r\n // do not provide the duration, set duration to undefined\r\n // Also this is case 4\r\n if (!pageViewPerformanceManager[_DYN_IS_PERFORMANCE_TIMIN16 /* @min:%2eisPerformanceTimingSupported */]()) {\r\n appInsights[_DYN_SEND_PAGE_VIEW_INTER10 /* @min:%2esendPageViewInternal */](pageView, customProperties);\r\n _flushChannels(true);\r\n // no navigation timing (IE 8, iOS Safari 8.4, Opera Mini 8 - see http://caniuse.com/#feat=nav-timing)\r\n _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 25 /* _eInternalMessageId.NavigationTimingNotSupported */, \"trackPageView: navigation timing API used for calculation of page duration is not supported in this browser. This page view will be collected without duration and timing info.\");\r\n return;\r\n }\r\n var pageViewSent = false;\r\n var customDuration;\r\n // if the performance timing is supported by the browser, calculate the custom duration\r\n var start = pageViewPerformanceManager[_DYN_GET_PERFORMANCE_TIMI17 /* @min:%2egetPerformanceTiming */]()[_DYN_NAVIGATION_START /* @min:%2enavigationStart */];\r\n if (start > 0) {\r\n customDuration = dateTimeUtilsDuration(start, +new Date);\r\n if (!pageViewPerformanceManager[_DYN_SHOULD_COLLECT_DURAT18 /* @min:%2eshouldCollectDuration */](customDuration)) {\r\n customDuration = undefined;\r\n }\r\n }\r\n // if the user has provided duration, send a page view telemetry with the provided duration. Otherwise, if\r\n // overridePageViewDuration is set to true, send a page view telemetry with the custom duration calculated earlier\r\n var duration;\r\n if (!isNullOrUndefined(customProperties) &&\r\n !isNullOrUndefined(customProperties[_DYN_DURATION /* @min:%2eduration */])) {\r\n duration = customProperties[_DYN_DURATION /* @min:%2eduration */];\r\n }\r\n if (overridePageViewDuration || !isNaN(duration)) {\r\n if (isNaN(duration)) {\r\n // case 3\r\n if (!customProperties) {\r\n customProperties = {};\r\n }\r\n customProperties[_DYN_DURATION /* @min:%2eduration */] = customDuration;\r\n }\r\n // case 2\r\n appInsights[_DYN_SEND_PAGE_VIEW_INTER10 /* @min:%2esendPageViewInternal */](pageView, customProperties);\r\n _flushChannels(true);\r\n pageViewSent = true;\r\n }\r\n // now try to send the page view performance telemetry\r\n var maxDurationLimit = 60000;\r\n if (!customProperties) {\r\n customProperties = {};\r\n }\r\n // Queue the event for processing\r\n _addQueue(function () {\r\n var processed = false;\r\n try {\r\n if (pageViewPerformanceManager[_DYN_IS_PERFORMANCE_TIMIN19 /* @min:%2eisPerformanceTimingDataReady */]()) {\r\n processed = true;\r\n var pageViewPerformance = {\r\n name: name,\r\n uri: uri\r\n };\r\n pageViewPerformanceManager[_DYN_POPULATE_PAGE_VIEW_P12 /* @min:%2epopulatePageViewPerformanceEvent */](pageViewPerformance);\r\n if (!pageViewPerformance.isValid && !pageViewSent) {\r\n // If navigation timing gives invalid numbers, then go back to \"override page view duration\" mode.\r\n // That's the best value we can get that makes sense.\r\n customProperties[_DYN_DURATION /* @min:%2eduration */] = customDuration;\r\n appInsights[_DYN_SEND_PAGE_VIEW_INTER10 /* @min:%2esendPageViewInternal */](pageView, customProperties);\r\n }\r\n else {\r\n if (!pageViewSent) {\r\n customProperties[_DYN_DURATION /* @min:%2eduration */] = pageViewPerformance.durationMs;\r\n appInsights[_DYN_SEND_PAGE_VIEW_INTER10 /* @min:%2esendPageViewInternal */](pageView, customProperties);\r\n }\r\n if (!pageViewPerformanceSent) {\r\n appInsights[_DYN_SEND_PAGE_VIEW_PERFO11 /* @min:%2esendPageViewPerformanceInternal */](pageViewPerformance, customProperties);\r\n pageViewPerformanceSent = true;\r\n }\r\n }\r\n }\r\n else if (start > 0 && dateTimeUtilsDuration(start, +new Date) > maxDurationLimit) {\r\n // if performance timings are not ready but we exceeded the maximum duration limit, just log a page view telemetry\r\n // with the maximum duration limit. Otherwise, keep waiting until performance timings are ready\r\n processed = true;\r\n if (!pageViewSent) {\r\n customProperties[_DYN_DURATION /* @min:%2eduration */] = maxDurationLimit;\r\n appInsights[_DYN_SEND_PAGE_VIEW_INTER10 /* @min:%2esendPageViewInternal */](pageView, customProperties);\r\n }\r\n }\r\n }\r\n catch (e) {\r\n _throwInternal(_logger, 1 /* eLoggingSeverity.CRITICAL */, 38 /* _eInternalMessageId.TrackPVFailedCalc */, \"trackPageView failed on page load calculation: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n return processed;\r\n });\r\n };\r\n _self.teardown = function (unloadCtx, unloadState) {\r\n if (intervalHandle) {\r\n clearInterval(intervalHandle);\r\n intervalHandle = null;\r\n var allItems = itemQueue.slice(0);\r\n var doFlush_1 = false;\r\n itemQueue = [];\r\n arrForEach(allItems, function (item) {\r\n if (item()) {\r\n doFlush_1 = true;\r\n }\r\n });\r\n }\r\n };\r\n });\r\n }\r\n// Removed Stub for PageViewManager.prototype.trackPageView.\r\n// Removed Stub for PageViewManager.prototype.teardown.\r\n // This is a workaround for an IE8 bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n // this will be removed when ES3 support is dropped.\n PageViewManager.__ieDyn=1;\n\n return PageViewManager;\r\n}());\r\nexport { PageViewManager };\r\n","/*\n * Application Insights JavaScript SDK - Web Analytics, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { dateTimeUtilsDuration, msToTimeSpan } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal, getNavigator, getPerformance, safeGetLogger } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_CONNECT_END, _DYN_DURATION, _DYN_GET_ENTRIES_BY_TYPE, _DYN_GET_PERFORMANCE_TIMI17, _DYN_IS_PERFORMANCE_TIMIN16, _DYN_IS_PERFORMANCE_TIMIN19, _DYN_LENGTH, _DYN_LOAD_EVENT_END, _DYN_NAVIGATION_START, _DYN_POPULATE_PAGE_VIEW_P12, _DYN_REQUEST_START, _DYN_RESPONSE_END, _DYN_RESPONSE_START, _DYN_SHOULD_COLLECT_DURAT18 } from \"../../__DynamicConstants\";\r\nvar MAX_DURATION_ALLOWED = 3600000; // 1h\r\nvar botAgentNames = [\"googlebot\", \"adsbot-google\", \"apis-google\", \"mediapartners-google\"];\r\nfunction _isPerformanceTimingSupported() {\r\n var perf = getPerformance();\r\n return perf && !!perf.timing;\r\n}\r\nfunction _isPerformanceNavigationTimingSupported() {\r\n var perf = getPerformance();\r\n return perf && perf.getEntriesByType && perf.getEntriesByType(\"navigation\")[_DYN_LENGTH /* @min:%2elength */] > 0;\r\n}\r\nfunction _isPerformanceTimingDataReady() {\r\n var perf = getPerformance();\r\n var timing = perf ? perf.timing : 0;\r\n return timing\r\n && timing.domainLookupStart > 0\r\n && timing[_DYN_NAVIGATION_START /* @min:%2enavigationStart */] > 0\r\n && timing[_DYN_RESPONSE_START /* @min:%2eresponseStart */] > 0\r\n && timing[_DYN_REQUEST_START /* @min:%2erequestStart */] > 0\r\n && timing[_DYN_LOAD_EVENT_END /* @min:%2eloadEventEnd */] > 0\r\n && timing[_DYN_RESPONSE_END /* @min:%2eresponseEnd */] > 0\r\n && timing[_DYN_CONNECT_END /* @min:%2econnectEnd */] > 0\r\n && timing.domLoading > 0;\r\n}\r\nfunction _getPerformanceTiming() {\r\n if (_isPerformanceTimingSupported()) {\r\n return getPerformance().timing;\r\n }\r\n return null;\r\n}\r\nfunction _getPerformanceNavigationTiming() {\r\n if (_isPerformanceNavigationTimingSupported()) {\r\n return getPerformance()[_DYN_GET_ENTRIES_BY_TYPE /* @min:%2egetEntriesByType */](\"navigation\")[0];\r\n }\r\n return null;\r\n}\r\n/**\r\n* This method tells if given durations should be excluded from collection.\r\n*/\r\nfunction _shouldCollectDuration() {\r\n var durations = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n durations[_i] = arguments[_i];\r\n }\r\n var _navigator = getNavigator() || {};\r\n // a full list of Google crawlers user agent strings - https://support.google.com/webmasters/answer/1061943?hl=en\r\n var userAgent = _navigator.userAgent;\r\n var isGoogleBot = false;\r\n if (userAgent) {\r\n for (var i = 0; i < botAgentNames[_DYN_LENGTH /* @min:%2elength */]; i++) {\r\n isGoogleBot = isGoogleBot || userAgent.toLowerCase().indexOf(botAgentNames[i]) !== -1;\r\n }\r\n }\r\n if (isGoogleBot) {\r\n // Don't report durations for GoogleBot, it is returning invalid values in performance.timing API.\r\n return false;\r\n }\r\n else {\r\n // for other page views, don't report if it's outside of a reasonable range\r\n for (var i = 0; i < durations[_DYN_LENGTH /* @min:%2elength */]; i++) {\r\n if (durations[i] < 0 || durations[i] >= MAX_DURATION_ALLOWED) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n}\r\n/**\r\n * Class encapsulates sending page view performance telemetry.\r\n */\r\nvar PageViewPerformanceManager = /** @class */ (function () {\r\n function PageViewPerformanceManager(core) {\r\n var _this = this;\r\n var _logger = safeGetLogger(core);\r\n dynamicProto(PageViewPerformanceManager, this, function (_self) {\r\n _self[_DYN_POPULATE_PAGE_VIEW_P12 /* @min:%2epopulatePageViewPerformanceEvent */] = function (pageViewPerformance) {\r\n pageViewPerformance.isValid = false;\r\n /*\r\n * http://www.w3.org/TR/navigation-timing/#processing-model\r\n * |-navigationStart\r\n * | |-connectEnd\r\n * | ||-requestStart\r\n * | || |-responseStart\r\n * | || | |-responseEnd\r\n * | || | |\r\n * | || | | |-loadEventEnd\r\n * |---network---||---request---|---response---|---dom---|\r\n * |--------------------------total----------------------|\r\n *\r\n * total = The difference between the load event of the current document is completed and the first recorded timestamp of the performance entry : https://developer.mozilla.org/en-US/docs/Web/Performance/Navigation_and_resource_timings#duration\r\n * network = Redirect time + App Cache + DNS lookup time + TCP connection time\r\n * request = Request time : https://developer.mozilla.org/en-US/docs/Web/Performance/Navigation_and_resource_timings#request_time\r\n * response = Response time\r\n * dom = Document load time : https://html.spec.whatwg.org/multipage/dom.html#document-load-timing-info\r\n * = Document processing time : https://developers.google.com/web/fundamentals/performance/navigation-and-resource-timing/#document_processing\r\n * + Loading time : https://developers.google.com/web/fundamentals/performance/navigation-and-resource-timing/#loading\r\n */\r\n var navigationTiming = _getPerformanceNavigationTiming();\r\n var timing = _getPerformanceTiming();\r\n var total = 0;\r\n var network = 0;\r\n var request = 0;\r\n var response = 0;\r\n var dom = 0;\r\n if (navigationTiming || timing) {\r\n if (navigationTiming) {\r\n total = navigationTiming[_DYN_DURATION /* @min:%2eduration */];\r\n /**\r\n * support both cases:\r\n * - startTime is always zero: https://developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigationTiming\r\n * - for older browsers where the startTime is not zero\r\n */\r\n network = navigationTiming.startTime === 0 ? navigationTiming[_DYN_CONNECT_END /* @min:%2econnectEnd */] : dateTimeUtilsDuration(navigationTiming.startTime, navigationTiming[_DYN_CONNECT_END /* @min:%2econnectEnd */]);\r\n request = dateTimeUtilsDuration(navigationTiming.requestStart, navigationTiming[_DYN_RESPONSE_START /* @min:%2eresponseStart */]);\r\n response = dateTimeUtilsDuration(navigationTiming[_DYN_RESPONSE_START /* @min:%2eresponseStart */], navigationTiming[_DYN_RESPONSE_END /* @min:%2eresponseEnd */]);\r\n dom = dateTimeUtilsDuration(navigationTiming.responseEnd, navigationTiming[_DYN_LOAD_EVENT_END /* @min:%2eloadEventEnd */]);\r\n }\r\n else {\r\n total = dateTimeUtilsDuration(timing[_DYN_NAVIGATION_START /* @min:%2enavigationStart */], timing[_DYN_LOAD_EVENT_END /* @min:%2eloadEventEnd */]);\r\n network = dateTimeUtilsDuration(timing[_DYN_NAVIGATION_START /* @min:%2enavigationStart */], timing[_DYN_CONNECT_END /* @min:%2econnectEnd */]);\r\n request = dateTimeUtilsDuration(timing.requestStart, timing[_DYN_RESPONSE_START /* @min:%2eresponseStart */]);\r\n response = dateTimeUtilsDuration(timing[_DYN_RESPONSE_START /* @min:%2eresponseStart */], timing[_DYN_RESPONSE_END /* @min:%2eresponseEnd */]);\r\n dom = dateTimeUtilsDuration(timing.responseEnd, timing[_DYN_LOAD_EVENT_END /* @min:%2eloadEventEnd */]);\r\n }\r\n if (total === 0) {\r\n _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 10 /* _eInternalMessageId.ErrorPVCalc */, \"error calculating page view performance.\", { total: total, network: network, request: request, response: response, dom: dom });\r\n }\r\n else if (!_this[_DYN_SHOULD_COLLECT_DURAT18 /* @min:%2eshouldCollectDuration */](total, network, request, response, dom)) {\r\n _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 45 /* _eInternalMessageId.InvalidDurationValue */, \"Invalid page load duration value. Browser perf data won't be sent.\", { total: total, network: network, request: request, response: response, dom: dom });\r\n }\r\n else if (total < Math.floor(network) + Math.floor(request) + Math.floor(response) + Math.floor(dom)) {\r\n // some browsers may report individual components incorrectly so that the sum of the parts will be bigger than total PLT\r\n // in this case, don't report client performance from this page\r\n _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 8 /* _eInternalMessageId.ClientPerformanceMathError */, \"client performance math error.\", { total: total, network: network, request: request, response: response, dom: dom });\r\n }\r\n else {\r\n pageViewPerformance.durationMs = total;\r\n // // convert to timespans\r\n pageViewPerformance.perfTotal = pageViewPerformance[_DYN_DURATION /* @min:%2eduration */] = msToTimeSpan(total);\r\n pageViewPerformance.networkConnect = msToTimeSpan(network);\r\n pageViewPerformance.sentRequest = msToTimeSpan(request);\r\n pageViewPerformance.receivedResponse = msToTimeSpan(response);\r\n pageViewPerformance.domProcessing = msToTimeSpan(dom);\r\n pageViewPerformance.isValid = true;\r\n }\r\n }\r\n };\r\n _self[_DYN_GET_PERFORMANCE_TIMI17 /* @min:%2egetPerformanceTiming */] = _getPerformanceTiming;\r\n _self[_DYN_IS_PERFORMANCE_TIMIN16 /* @min:%2eisPerformanceTimingSupported */] = _isPerformanceTimingSupported;\r\n _self[_DYN_IS_PERFORMANCE_TIMIN19 /* @min:%2eisPerformanceTimingDataReady */] = _isPerformanceTimingDataReady;\r\n _self[_DYN_SHOULD_COLLECT_DURAT18 /* @min:%2eshouldCollectDuration */] = _shouldCollectDuration;\r\n });\r\n }\r\n// Removed Stub for PageViewPerformanceManager.prototype.populatePageViewPerformanceEvent.\r\n// Removed Stub for PageViewPerformanceManager.prototype.getPerformanceTiming.\r\n// Removed Stub for PageViewPerformanceManager.prototype.isPerformanceTimingSupported.\r\n// Removed Stub for PageViewPerformanceManager.prototype.isPerformanceTimingDataReady.\r\n// Removed Stub for PageViewPerformanceManager.prototype.shouldCollectDuration.\r\n // This is a workaround for an IE8 bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n // this will be removed when ES3 support is dropped.\n PageViewPerformanceManager.__ieDyn=1;\n\n return PageViewPerformanceManager;\r\n}());\r\nexport { PageViewPerformanceManager };\r\n","/*\n * Application Insights JavaScript SDK - Web Analytics, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { utlCanUseSessionStorage, utlGetSessionStorage, utlRemoveSessionStorage, utlSetSessionStorage } from \"@microsoft/applicationinsights-common\";\r\nimport { _warnToConsole, dateNow, dumpObj, getJSON, hasJSON, objDefineAccessors, throwError } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_PAGE_VISIT_START_TIM20, _DYN_TRACK_PREVIOUS_PAGE_9 } from \"../../__DynamicConstants\";\r\n/**\r\n * Used to track page visit durations\r\n */\r\nvar PageVisitTimeManager = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of PageVisitTimeManager\r\n * @param pageVisitTimeTrackingHandler Delegate that will be called to send telemetry data to AI (when trackPreviousPageVisit is called)\r\n * @returns {}\r\n */\r\n function PageVisitTimeManager(logger, pageVisitTimeTrackingHandler) {\r\n var prevPageVisitDataKeyName = \"prevPageVisitData\";\r\n dynamicProto(PageVisitTimeManager, this, function (_self) {\r\n _self[_DYN_TRACK_PREVIOUS_PAGE_9 /* @min:%2etrackPreviousPageVisit */] = function (currentPageName, currentPageUrl) {\r\n try {\r\n // Restart timer for new page view\r\n var prevPageVisitTimeData = restartPageVisitTimer(currentPageName, currentPageUrl);\r\n // If there was a page already being timed, track the visit time for it now.\r\n if (prevPageVisitTimeData) {\r\n pageVisitTimeTrackingHandler(prevPageVisitTimeData.pageName, prevPageVisitTimeData.pageUrl, prevPageVisitTimeData.pageVisitTime);\r\n }\r\n }\r\n catch (e) {\r\n _warnToConsole(logger, \"Auto track page visit time failed, metric will not be collected: \" + dumpObj(e));\r\n }\r\n };\r\n /**\r\n * Stops timing of current page (if exists) and starts timing for duration of visit to pageName\r\n * @param pageName Name of page to begin timing visit duration\r\n * @returns {PageVisitData} Page visit data (including duration) of pageName from last call to start or restart, if exists. Null if not.\r\n */\r\n function restartPageVisitTimer(pageName, pageUrl) {\r\n var prevPageVisitData = null;\r\n try {\r\n prevPageVisitData = stopPageVisitTimer();\r\n startPageVisitTimer(pageName, pageUrl);\r\n }\r\n catch (e) {\r\n _warnToConsole(logger, \"Call to restart failed: \" + dumpObj(e));\r\n prevPageVisitData = null;\r\n }\r\n return prevPageVisitData;\r\n }\r\n /**\r\n * Starts timing visit duration of pageName\r\n * @param pageName\r\n * @returns {}\r\n */\r\n function startPageVisitTimer(pageName, pageUrl) {\r\n try {\r\n if (utlCanUseSessionStorage()) {\r\n if (utlGetSessionStorage(logger, prevPageVisitDataKeyName) != null) {\r\n throwError(\"Cannot call startPageVisit consecutively without first calling stopPageVisit\");\r\n }\r\n var currPageVisitData = new PageVisitData(pageName, pageUrl);\r\n var currPageVisitDataStr = getJSON().stringify(currPageVisitData);\r\n utlSetSessionStorage(logger, prevPageVisitDataKeyName, currPageVisitDataStr);\r\n }\r\n }\r\n catch (e) {\r\n // TODO: Remove this catch in next phase, since if start is called twice in a row the exception needs to be propagated out\r\n _warnToConsole(logger, \"Call to start failed: \" + dumpObj(e));\r\n }\r\n }\r\n /**\r\n * Stops timing of current page, if exists.\r\n * @returns {PageVisitData} Page visit data (including duration) of pageName from call to start, if exists. Null if not.\r\n */\r\n function stopPageVisitTimer() {\r\n var prevPageVisitData = null;\r\n try {\r\n if (utlCanUseSessionStorage()) {\r\n // Define end time of page's visit\r\n var pageVisitEndTime = dateNow();\r\n // Try to retrieve page name and start time from session storage\r\n var pageVisitDataJsonStr = utlGetSessionStorage(logger, prevPageVisitDataKeyName);\r\n if (pageVisitDataJsonStr && hasJSON()) {\r\n // if previous page data exists, set end time of visit\r\n prevPageVisitData = getJSON().parse(pageVisitDataJsonStr);\r\n prevPageVisitData.pageVisitTime = pageVisitEndTime - prevPageVisitData[_DYN_PAGE_VISIT_START_TIM20 /* @min:%2epageVisitStartTime */];\r\n // Remove data from storage since we already used it\r\n utlRemoveSessionStorage(logger, prevPageVisitDataKeyName);\r\n }\r\n }\r\n }\r\n catch (e) {\r\n _warnToConsole(logger, \"Stop page visit timer failed: \" + dumpObj(e));\r\n prevPageVisitData = null;\r\n }\r\n return prevPageVisitData;\r\n }\r\n // For backward compatibility\r\n objDefineAccessors(_self, \"_logger\", function () { return logger; });\r\n objDefineAccessors(_self, \"pageVisitTimeTrackingHandler\", function () { return pageVisitTimeTrackingHandler; });\r\n });\r\n }\r\n// Removed Stub for PageVisitTimeManager.prototype.trackPreviousPageVisit.\r\n // This is a workaround for an IE8 bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n // this will be removed when ES3 support is dropped.\n PageVisitTimeManager.__ieDyn=1;\n\n return PageVisitTimeManager;\r\n}());\r\nexport { PageVisitTimeManager };\r\nvar PageVisitData = /** @class */ (function () {\r\n function PageVisitData(pageName, pageUrl) {\r\n this[_DYN_PAGE_VISIT_START_TIM20 /* @min:%2epageVisitStartTime */] = dateNow();\r\n this.pageName = pageName;\r\n this.pageUrl = pageUrl;\r\n }\r\n return PageVisitData;\r\n}());\r\nexport { PageVisitData };\r\n","/*\n * Application Insights JavaScript SDK - Web Analytics, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { dateTimeUtilsDuration } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal } from \"@microsoft/applicationinsights-core-js\";\r\n/**\r\n * Used to record timed events and page views.\r\n */\r\nvar Timing = /** @class */ (function () {\r\n function Timing(logger, name) {\r\n var _self = this;\r\n var _events = {};\r\n _self.start = function (name) {\r\n if (typeof _events[name] !== \"undefined\") {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 62 /* _eInternalMessageId.StartCalledMoreThanOnce */, \"start was called more than once for this event without calling stop.\", { name: name, key: name }, true);\r\n }\r\n _events[name] = +new Date;\r\n };\r\n _self.stop = function (name, url, properties, measurements) {\r\n var start = _events[name];\r\n if (isNaN(start)) {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 63 /* _eInternalMessageId.StopCalledWithoutStart */, \"stop was called without a corresponding start.\", { name: name, key: name }, true);\r\n }\r\n else {\r\n var end = +new Date;\r\n var duration = dateTimeUtilsDuration(start, end);\r\n _self.action(name, url, duration, properties, measurements);\r\n }\r\n delete _events[name];\r\n _events[name] = undefined;\r\n };\r\n }\r\n return Timing;\r\n}());\r\nexport { Timing };\r\n","/*\n * Application Insights JavaScript SDK - Web Analytics, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n/**\r\n* ApplicationInsights.ts\r\n* @copyright Microsoft 2018\r\n*/\r\nimport { __assignFn as __assign, __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { AnalyticsPluginIdentifier, Event as EventTelemetry, Exception, Metric, PageView, PageViewPerformance, PropertiesPluginIdentifier, RemoteDependencyData, Trace, createDistributedTraceContextFromTrace, createDomEvent, createTelemetryItem, dataSanitizeString, isCrossOriginError, strNotSpecified, stringToBoolOrDefault, utlDisableStorage, utlEnableStorage } from \"@microsoft/applicationinsights-common\";\r\nimport { BaseTelemetryPlugin, InstrumentEvent, arrForEach, createProcessTelemetryContext, createUniqueNamespace, dumpObj, eventOff, eventOn, generateW3CId, getDocument, getExceptionName, getHistory, getLocation, getWindow, hasHistory, hasWindow, isFunction, isNullOrUndefined, isString, isUndefined, mergeEvtNamespace, objDefineAccessors, objForEachKey, safeGetCookieMgr, strUndefined, throwError } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_ADD_TELEMETRY_INITIA15, _DYN_AUTO_TRACK_PAGE_VISI1, _DYN_COLUMN_NUMBER, _DYN_CORE, _DYN_DATA_TYPE, _DYN_DIAG_LOG, _DYN_DISABLE_EXCEPTION_TR0, _DYN_DISABLE_FLUSH_ON_BEF7, _DYN_ENABLE_AUTO_ROUTE_TR6, _DYN_ENABLE_UNHANDLED_PRO3, _DYN_ENVELOPE_TYPE, _DYN_ERROR, _DYN_ERROR_SRC, _DYN_EXCEPTION, _DYN_HREF, _DYN_IS_BROWSER_LINK_TRAC5, _DYN_IS_STORAGE_USE_DISAB4, _DYN_LENGTH, _DYN_LINE_NUMBER, _DYN_MESSAGE, _DYN_NAME_PREFIX, _DYN_OVERRIDE_PAGE_VIEW_D2, _DYN_POPULATE_PAGE_VIEW_P12, _DYN_SAMPLING_PERCENTAGE, _DYN_SEND_EXCEPTION_INTER13, _DYN_SEND_PAGE_VIEW_INTER10, _DYN_SEND_PAGE_VIEW_PERFO11, _DYN_TO_STRING, _DYN_TRACK, _DYN_TRACK_PAGE_VIEW, _DYN_TRACK_PREVIOUS_PAGE_9, _DYN__CREATE_AUTO_EXCEPTI14, _DYN__ONERROR } from \"../__DynamicConstants\";\r\nimport { PageViewManager } from \"./Telemetry/PageViewManager\";\r\nimport { PageViewPerformanceManager } from \"./Telemetry/PageViewPerformanceManager\";\r\nimport { PageVisitTimeManager } from \"./Telemetry/PageVisitTimeManager\";\r\nimport { Timing } from \"./Timing\";\r\nvar strEvent = \"event\";\r\nfunction _dispatchEvent(target, evnt) {\r\n if (target && target.dispatchEvent && evnt) {\r\n target.dispatchEvent(evnt);\r\n }\r\n}\r\nfunction _getReason(error) {\r\n if (error && error.reason) {\r\n var reason = error.reason;\r\n if (!isString(reason) && isFunction(reason[_DYN_TO_STRING /* @min:%2etoString */])) {\r\n return reason[_DYN_TO_STRING /* @min:%2etoString */]();\r\n }\r\n return dumpObj(reason);\r\n }\r\n // Pass the original object down which will eventually get evaluated for any message or description\r\n return error || \"\";\r\n}\r\nvar MinMilliSeconds = 60000;\r\nfunction _configMilliseconds(value, defValue) {\r\n value = value || defValue;\r\n if (value < MinMilliSeconds) {\r\n value = MinMilliSeconds;\r\n }\r\n return value;\r\n}\r\nfunction _getDefaultConfig(config) {\r\n if (!config) {\r\n config = {};\r\n }\r\n // set default values\r\n config.sessionRenewalMs = _configMilliseconds(config.sessionRenewalMs, 30 * 60 * 1000);\r\n config.sessionExpirationMs = _configMilliseconds(config.sessionExpirationMs, 24 * 60 * 60 * 1000);\r\n config[_DYN_DISABLE_EXCEPTION_TR0 /* @min:%2edisableExceptionTracking */] = stringToBoolOrDefault(config[_DYN_DISABLE_EXCEPTION_TR0 /* @min:%2edisableExceptionTracking */]);\r\n config[_DYN_AUTO_TRACK_PAGE_VISI1 /* @min:%2eautoTrackPageVisitTime */] = stringToBoolOrDefault(config[_DYN_AUTO_TRACK_PAGE_VISI1 /* @min:%2eautoTrackPageVisitTime */]);\r\n config[_DYN_OVERRIDE_PAGE_VIEW_D2 /* @min:%2eoverridePageViewDuration */] = stringToBoolOrDefault(config[_DYN_OVERRIDE_PAGE_VIEW_D2 /* @min:%2eoverridePageViewDuration */]);\r\n config[_DYN_ENABLE_UNHANDLED_PRO3 /* @min:%2eenableUnhandledPromiseRejectionTracking */] = stringToBoolOrDefault(config[_DYN_ENABLE_UNHANDLED_PRO3 /* @min:%2eenableUnhandledPromiseRejectionTracking */]);\r\n if (isNaN(config[_DYN_SAMPLING_PERCENTAGE /* @min:%2esamplingPercentage */]) || config[_DYN_SAMPLING_PERCENTAGE /* @min:%2esamplingPercentage */] <= 0 || config[_DYN_SAMPLING_PERCENTAGE /* @min:%2esamplingPercentage */] >= 100) {\r\n config[_DYN_SAMPLING_PERCENTAGE /* @min:%2esamplingPercentage */] = 100;\r\n }\r\n config[_DYN_IS_STORAGE_USE_DISAB4 /* @min:%2eisStorageUseDisabled */] = stringToBoolOrDefault(config[_DYN_IS_STORAGE_USE_DISAB4 /* @min:%2eisStorageUseDisabled */]);\r\n config[_DYN_IS_BROWSER_LINK_TRAC5 /* @min:%2eisBrowserLinkTrackingEnabled */] = stringToBoolOrDefault(config[_DYN_IS_BROWSER_LINK_TRAC5 /* @min:%2eisBrowserLinkTrackingEnabled */]);\r\n config[_DYN_ENABLE_AUTO_ROUTE_TR6 /* @min:%2eenableAutoRouteTracking */] = stringToBoolOrDefault(config[_DYN_ENABLE_AUTO_ROUTE_TR6 /* @min:%2eenableAutoRouteTracking */]);\r\n config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */] = config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */] || \"\";\r\n config.enableDebug = stringToBoolOrDefault(config.enableDebug);\r\n config[_DYN_DISABLE_FLUSH_ON_BEF7 /* @min:%2edisableFlushOnBeforeUnload */] = stringToBoolOrDefault(config[_DYN_DISABLE_FLUSH_ON_BEF7 /* @min:%2edisableFlushOnBeforeUnload */]);\r\n config.disableFlushOnUnload = stringToBoolOrDefault(config.disableFlushOnUnload, config[_DYN_DISABLE_FLUSH_ON_BEF7 /* @min:%2edisableFlushOnBeforeUnload */]);\r\n return config;\r\n}\r\nfunction _updateStorageUsage(extConfig) {\r\n // Not resetting the storage usage as someone may have manually called utlDisableStorage, so this will only\r\n // reset based if the configuration option is provided\r\n if (!isUndefined(extConfig[_DYN_IS_STORAGE_USE_DISAB4 /* @min:%2eisStorageUseDisabled */])) {\r\n if (extConfig[_DYN_IS_STORAGE_USE_DISAB4 /* @min:%2eisStorageUseDisabled */]) {\r\n utlDisableStorage();\r\n }\r\n else {\r\n utlEnableStorage();\r\n }\r\n }\r\n}\r\nvar AnalyticsPlugin = /** @class */ (function (_super) {\r\n __extends(AnalyticsPlugin, _super);\r\n function AnalyticsPlugin() {\r\n var _this = _super.call(this) || this;\r\n _this.identifier = AnalyticsPluginIdentifier; // do not change name or priority\r\n _this.priority = 180; // take from reserved priority range 100- 200\r\n _this.autoRoutePVDelay = 500; // ms; Time to wait after a route change before triggering a pageview to allow DOM changes to take place\r\n var _eventTracking;\r\n var _pageTracking;\r\n var _pageViewManager;\r\n var _pageViewPerformanceManager;\r\n var _pageVisitTimeManager;\r\n var _preInitTelemetryInitializers;\r\n var _isBrowserLinkTrackingEnabled;\r\n var _browserLinkInitializerAdded;\r\n var _enableAutoRouteTracking;\r\n var _historyListenerAdded;\r\n var _disableExceptionTracking;\r\n var _autoExceptionInstrumented;\r\n var _enableUnhandledPromiseRejectionTracking;\r\n var _autoUnhandledPromiseInstrumented;\r\n // Counts number of trackAjax invocations.\r\n // By default we only monitor X ajax call per view to avoid too much load.\r\n // Default value is set in config.\r\n // This counter keeps increasing even after the limit is reached.\r\n var _trackAjaxAttempts = 0;\r\n // array with max length of 2 that store current url and previous url for SPA page route change trackPageview use.\r\n var _prevUri; // Assigned in the constructor\r\n var _currUri;\r\n var _evtNamespace;\r\n dynamicProto(AnalyticsPlugin, _this, function (_self, _base) {\r\n var _addHook = _base._addHook;\r\n _initDefaults();\r\n _self.getCookieMgr = function () {\r\n return safeGetCookieMgr(_self[_DYN_CORE /* @min:%2ecore */]);\r\n };\r\n _self.processTelemetry = function (env, itemCtx) {\r\n _self.processNext(env, itemCtx);\r\n };\r\n _self.trackEvent = function (event, customProperties) {\r\n try {\r\n var telemetryItem = createTelemetryItem(event, EventTelemetry[_DYN_DATA_TYPE /* @min:%2edataType */], EventTelemetry[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], _self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), customProperties);\r\n _self[_DYN_CORE /* @min:%2ecore */][_DYN_TRACK /* @min:%2etrack */](telemetryItem);\r\n }\r\n catch (e) {\r\n _throwInternal(2 /* eLoggingSeverity.WARNING */, 39 /* _eInternalMessageId.TrackTraceFailed */, \"trackTrace failed, trace will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * Start timing an extended event. Call `stopTrackEvent` to log the event when it ends.\r\n * @param name A string that identifies this event uniquely within the document.\r\n */\r\n _self.startTrackEvent = function (name) {\r\n try {\r\n _eventTracking.start(name);\r\n }\r\n catch (e) {\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 29 /* _eInternalMessageId.StartTrackEventFailed */, \"startTrackEvent failed, event will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * Log an extended event that you started timing with `startTrackEvent`.\r\n * @param name The string you used to identify this event in `startTrackEvent`.\r\n * @param properties map[string, string] - additional data used to filter events and metrics in the portal. Defaults to empty.\r\n * @param measurements map[string, number] - metrics associated with this event, displayed in Metrics Explorer on the portal. Defaults to empty.\r\n */\r\n _self.stopTrackEvent = function (name, properties, measurements) {\r\n try {\r\n _eventTracking.stop(name, undefined, properties, measurements);\r\n }\r\n catch (e) {\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 30 /* _eInternalMessageId.StopTrackEventFailed */, \"stopTrackEvent failed, event will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * @description Log a diagnostic message\r\n * @param {ITraceTelemetry} trace\r\n * @param ICustomProperties.\r\n * @memberof ApplicationInsights\r\n */\r\n _self.trackTrace = function (trace, customProperties) {\r\n try {\r\n var telemetryItem = createTelemetryItem(trace, Trace[_DYN_DATA_TYPE /* @min:%2edataType */], Trace[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], _self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), customProperties);\r\n _self[_DYN_CORE /* @min:%2ecore */][_DYN_TRACK /* @min:%2etrack */](telemetryItem);\r\n }\r\n catch (e) {\r\n _throwInternal(2 /* eLoggingSeverity.WARNING */, 39 /* _eInternalMessageId.TrackTraceFailed */, \"trackTrace failed, trace will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * @description Log a numeric value that is not associated with a specific event. Typically\r\n * used to send regular reports of performance indicators. To send single measurement, just\r\n * use the name and average fields of {@link IMetricTelemetry}. If you take measurements\r\n * frequently, you can reduce the telemetry bandwidth by aggregating multiple measurements\r\n * and sending the resulting average at intervals\r\n * @param {IMetricTelemetry} metric input object argument. Only name and average are mandatory.\r\n * @param {{[key: string]: any}} customProperties additional data used to filter metrics in the\r\n * portal. Defaults to empty.\r\n * @memberof ApplicationInsights\r\n */\r\n _self.trackMetric = function (metric, customProperties) {\r\n try {\r\n var telemetryItem = createTelemetryItem(metric, Metric[_DYN_DATA_TYPE /* @min:%2edataType */], Metric[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], _self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), customProperties);\r\n _self[_DYN_CORE /* @min:%2ecore */][_DYN_TRACK /* @min:%2etrack */](telemetryItem);\r\n }\r\n catch (e) {\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 36 /* _eInternalMessageId.TrackMetricFailed */, \"trackMetric failed, metric will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * Logs that a page or other item was viewed.\r\n * @param IPageViewTelemetry The string you used as the name in startTrackPage. Defaults to the document title.\r\n * @param customProperties Additional data used to filter events and metrics. Defaults to empty.\r\n * If a user wants to provide duration for pageLoad, it'll have to be in pageView.properties.duration\r\n */\r\n _self[_DYN_TRACK_PAGE_VIEW /* @min:%2etrackPageView */] = function (pageView, customProperties) {\r\n try {\r\n var inPv = pageView || {};\r\n _pageViewManager[_DYN_TRACK_PAGE_VIEW /* @min:%2etrackPageView */](inPv, __assign(__assign(__assign({}, inPv.properties), inPv.measurements), customProperties));\r\n if (_self.config[_DYN_AUTO_TRACK_PAGE_VISI1 /* @min:%2eautoTrackPageVisitTime */]) {\r\n _pageVisitTimeManager[_DYN_TRACK_PREVIOUS_PAGE_9 /* @min:%2etrackPreviousPageVisit */](inPv.name, inPv.uri);\r\n }\r\n }\r\n catch (e) {\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 37 /* _eInternalMessageId.TrackPVFailed */, \"trackPageView failed, page view will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * Create a page view telemetry item and send it to the SDK pipeline through the core.track API\r\n * @param pageView Page view item to be sent\r\n * @param properties Custom properties (Part C) that a user can add to the telemetry item\r\n * @param systemProperties System level properties (Part A) that a user can add to the telemetry item\r\n */\r\n _self[_DYN_SEND_PAGE_VIEW_INTER10 /* @min:%2esendPageViewInternal */] = function (pageView, properties, systemProperties) {\r\n var doc = getDocument();\r\n if (doc) {\r\n pageView.refUri = pageView.refUri === undefined ? doc.referrer : pageView.refUri;\r\n }\r\n var telemetryItem = createTelemetryItem(pageView, PageView[_DYN_DATA_TYPE /* @min:%2edataType */], PageView[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], _self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), properties, systemProperties);\r\n _self[_DYN_CORE /* @min:%2ecore */][_DYN_TRACK /* @min:%2etrack */](telemetryItem);\r\n // reset ajaxes counter\r\n _trackAjaxAttempts = 0;\r\n };\r\n /**\r\n * @ignore INTERNAL ONLY\r\n * @param pageViewPerformance\r\n * @param properties\r\n */\r\n _self[_DYN_SEND_PAGE_VIEW_PERFO11 /* @min:%2esendPageViewPerformanceInternal */] = function (pageViewPerformance, properties, systemProperties) {\r\n var telemetryItem = createTelemetryItem(pageViewPerformance, PageViewPerformance[_DYN_DATA_TYPE /* @min:%2edataType */], PageViewPerformance[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], _self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), properties, systemProperties);\r\n _self[_DYN_CORE /* @min:%2ecore */][_DYN_TRACK /* @min:%2etrack */](telemetryItem);\r\n };\r\n /**\r\n * Send browser performance metrics.\r\n * @param pageViewPerformance\r\n * @param customProperties\r\n */\r\n _self.trackPageViewPerformance = function (pageViewPerformance, customProperties) {\r\n var inPvp = pageViewPerformance || {};\r\n try {\r\n _pageViewPerformanceManager[_DYN_POPULATE_PAGE_VIEW_P12 /* @min:%2epopulatePageViewPerformanceEvent */](inPvp);\r\n _self[_DYN_SEND_PAGE_VIEW_PERFO11 /* @min:%2esendPageViewPerformanceInternal */](inPvp, customProperties);\r\n }\r\n catch (e) {\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 37 /* _eInternalMessageId.TrackPVFailed */, \"trackPageViewPerformance failed, page view will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * Starts the timer for tracking a page load time. Use this instead of `trackPageView` if you want to control when the page view timer starts and stops,\r\n * but don't want to calculate the duration yourself. This method doesn't send any telemetry. Call `stopTrackPage` to log the end of the page view\r\n * and send the event.\r\n * @param name A string that idenfities this item, unique within this HTML document. Defaults to the document title.\r\n */\r\n _self.startTrackPage = function (name) {\r\n try {\r\n if (typeof name !== \"string\") {\r\n var doc = getDocument();\r\n name = doc && doc.title || \"\";\r\n }\r\n _pageTracking.start(name);\r\n }\r\n catch (e) {\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 31 /* _eInternalMessageId.StartTrackFailed */, \"startTrackPage failed, page view may not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * Stops the timer that was started by calling `startTrackPage` and sends the pageview load time telemetry with the specified properties and measurements.\r\n * The duration of the page view will be the time between calling `startTrackPage` and `stopTrackPage`.\r\n * @param name The string you used as the name in startTrackPage. Defaults to the document title.\r\n * @param url String - a relative or absolute URL that identifies the page or other item. Defaults to the window location.\r\n * @param properties map[string, string] - additional data used to filter pages and metrics in the portal. Defaults to empty.\r\n * @param measurements map[string, number] - metrics associated with this page, displayed in Metrics Explorer on the portal. Defaults to empty.\r\n */\r\n _self.stopTrackPage = function (name, url, properties, measurement) {\r\n try {\r\n if (typeof name !== \"string\") {\r\n var doc = getDocument();\r\n name = doc && doc.title || \"\";\r\n }\r\n if (typeof url !== \"string\") {\r\n var loc = getLocation();\r\n url = loc && loc[_DYN_HREF /* @min:%2ehref */] || \"\";\r\n }\r\n _pageTracking.stop(name, url, properties, measurement);\r\n if (_self.config[_DYN_AUTO_TRACK_PAGE_VISI1 /* @min:%2eautoTrackPageVisitTime */]) {\r\n _pageVisitTimeManager[_DYN_TRACK_PREVIOUS_PAGE_9 /* @min:%2etrackPreviousPageVisit */](name, url);\r\n }\r\n }\r\n catch (e) {\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 32 /* _eInternalMessageId.StopTrackFailed */, \"stopTrackPage failed, page view will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * @ignore INTERNAL ONLY\r\n * @param exception\r\n * @param properties\r\n * @param systemProperties\r\n */\r\n _self[_DYN_SEND_EXCEPTION_INTER13 /* @min:%2esendExceptionInternal */] = function (exception, customProperties, systemProperties) {\r\n var theError = exception[_DYN_EXCEPTION /* @min:%2eexception */] || exception[_DYN_ERROR /* @min:%2eerror */] || new Error(strNotSpecified);\r\n var exceptionPartB = new Exception(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), theError, exception.properties || customProperties, exception.measurements, exception.severityLevel, exception.id).toInterface();\r\n var telemetryItem = createTelemetryItem(exceptionPartB, Exception[_DYN_DATA_TYPE /* @min:%2edataType */], Exception[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], _self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), customProperties, systemProperties);\r\n _self[_DYN_CORE /* @min:%2ecore */][_DYN_TRACK /* @min:%2etrack */](telemetryItem);\r\n };\r\n /**\r\n * Log an exception you have caught.\r\n *\r\n * @param {IExceptionTelemetry} exception Object which contains exception to be sent\r\n * @param {{[key: string]: any}} customProperties Additional data used to filter pages and metrics in the portal. Defaults to empty.\r\n *\r\n * Any property of type double will be considered a measurement, and will be treated by Application Insights as a metric.\r\n * @memberof ApplicationInsights\r\n */\r\n _self.trackException = function (exception, customProperties) {\r\n if (exception && !exception[_DYN_EXCEPTION /* @min:%2eexception */] && exception[_DYN_ERROR /* @min:%2eerror */]) {\r\n exception[_DYN_EXCEPTION /* @min:%2eexception */] = exception[_DYN_ERROR /* @min:%2eerror */];\r\n }\r\n try {\r\n _self[_DYN_SEND_EXCEPTION_INTER13 /* @min:%2esendExceptionInternal */](exception, customProperties);\r\n }\r\n catch (e) {\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 35 /* _eInternalMessageId.TrackExceptionFailed */, \"trackException failed, exception will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * @description Custom error handler for Application Insights Analytics\r\n * @param {IAutoExceptionTelemetry} exception\r\n * @memberof ApplicationInsights\r\n */\r\n _self[_DYN__ONERROR /* @min:%2e_onerror */] = function (exception) {\r\n var error = exception && exception[_DYN_ERROR /* @min:%2eerror */];\r\n var evt = exception && exception.evt;\r\n try {\r\n if (!evt) {\r\n var _window = getWindow();\r\n if (_window) {\r\n evt = _window[strEvent];\r\n }\r\n }\r\n var url = (exception && exception.url) || (getDocument() || {}).URL;\r\n // If no error source is provided assume the default window.onerror handler\r\n var errorSrc = exception[_DYN_ERROR_SRC /* @min:%2eerrorSrc */] || \"window.onerror@\" + url + \":\" + (exception[_DYN_LINE_NUMBER /* @min:%2elineNumber */] || 0) + \":\" + (exception[_DYN_COLUMN_NUMBER /* @min:%2ecolumnNumber */] || 0);\r\n var properties = {\r\n errorSrc: errorSrc,\r\n url: url,\r\n lineNumber: exception[_DYN_LINE_NUMBER /* @min:%2elineNumber */] || 0,\r\n columnNumber: exception[_DYN_COLUMN_NUMBER /* @min:%2ecolumnNumber */] || 0,\r\n message: exception[_DYN_MESSAGE /* @min:%2emessage */]\r\n };\r\n if (isCrossOriginError(exception.message, exception.url, exception.lineNumber, exception.columnNumber, exception[_DYN_ERROR /* @min:%2eerror */])) {\r\n _sendCORSException(Exception[_DYN__CREATE_AUTO_EXCEPTI14 /* @min:%2eCreateAutoException */](\"Script error: The browser's same-origin policy prevents us from getting the details of this exception. Consider using the 'crossorigin' attribute.\", url, exception[_DYN_LINE_NUMBER /* @min:%2elineNumber */] || 0, exception[_DYN_COLUMN_NUMBER /* @min:%2ecolumnNumber */] || 0, error, evt, null, errorSrc), properties);\r\n }\r\n else {\r\n if (!exception[_DYN_ERROR_SRC /* @min:%2eerrorSrc */]) {\r\n exception[_DYN_ERROR_SRC /* @min:%2eerrorSrc */] = errorSrc;\r\n }\r\n _self.trackException({ exception: exception, severityLevel: 3 /* eSeverityLevel.Error */ }, properties);\r\n }\r\n }\r\n catch (e) {\r\n var errorString = error ? (error.name + \", \" + error[_DYN_MESSAGE /* @min:%2emessage */]) : \"null\";\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 11 /* _eInternalMessageId.ExceptionWhileLoggingError */, \"_onError threw exception while logging error, error will not be collected: \"\r\n + getExceptionName(e), { exception: dumpObj(e), errorString: errorString });\r\n }\r\n };\r\n _self[_DYN_ADD_TELEMETRY_INITIA15 /* @min:%2eaddTelemetryInitializer */] = function (telemetryInitializer) {\r\n if (_self[_DYN_CORE /* @min:%2ecore */]) {\r\n // Just add to the core\r\n return _self[_DYN_CORE /* @min:%2ecore */][_DYN_ADD_TELEMETRY_INITIA15 /* @min:%2eaddTelemetryInitializer */](telemetryInitializer);\r\n }\r\n // Handle \"pre-initialization\" telemetry initializers (for backward compatibility)\r\n if (!_preInitTelemetryInitializers) {\r\n _preInitTelemetryInitializers = [];\r\n }\r\n _preInitTelemetryInitializers.push(telemetryInitializer);\r\n };\r\n _self.initialize = function (config, core, extensions, pluginChain) {\r\n if (_self.isInitialized()) {\r\n return;\r\n }\r\n if (isNullOrUndefined(core)) {\r\n throwError(\"Error initializing\");\r\n }\r\n _base.initialize(config, core, extensions, pluginChain);\r\n try {\r\n _evtNamespace = mergeEvtNamespace(createUniqueNamespace(_self.identifier), core.evtNamespace && core.evtNamespace());\r\n if (_preInitTelemetryInitializers) {\r\n arrForEach(_preInitTelemetryInitializers, function (initializer) {\r\n core[_DYN_ADD_TELEMETRY_INITIA15 /* @min:%2eaddTelemetryInitializer */](initializer);\r\n });\r\n _preInitTelemetryInitializers = null;\r\n }\r\n var extConfig = _populateDefaults(config);\r\n _updateStorageUsage(extConfig);\r\n _pageViewPerformanceManager = new PageViewPerformanceManager(_self[_DYN_CORE /* @min:%2ecore */]);\r\n _pageViewManager = new PageViewManager(_this, extConfig[_DYN_OVERRIDE_PAGE_VIEW_D2 /* @min:%2eoverridePageViewDuration */], _self[_DYN_CORE /* @min:%2ecore */], _pageViewPerformanceManager);\r\n _pageVisitTimeManager = new PageVisitTimeManager(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), function (pageName, pageUrl, pageVisitTime) { return trackPageVisitTime(pageName, pageUrl, pageVisitTime); });\r\n _updateBrowserLinkTracking(extConfig, config);\r\n _eventTracking = new Timing(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), \"trackEvent\");\r\n _eventTracking.action =\r\n function (name, url, duration, properties, measurements) {\r\n if (!properties) {\r\n properties = {};\r\n }\r\n if (!measurements) {\r\n measurements = {};\r\n }\r\n properties.duration = duration[_DYN_TO_STRING /* @min:%2etoString */]();\r\n _self.trackEvent({ name: name, properties: properties, measurements: measurements });\r\n };\r\n // initialize page view timing\r\n _pageTracking = new Timing(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), \"trackPageView\");\r\n _pageTracking.action = function (name, url, duration, properties, measurements) {\r\n // duration must be a custom property in order for the collector to extract it\r\n if (isNullOrUndefined(properties)) {\r\n properties = {};\r\n }\r\n properties.duration = duration[_DYN_TO_STRING /* @min:%2etoString */]();\r\n var pageViewItem = {\r\n name: name,\r\n uri: url,\r\n properties: properties,\r\n measurements: measurements\r\n };\r\n _self[_DYN_SEND_PAGE_VIEW_INTER10 /* @min:%2esendPageViewInternal */](pageViewItem, properties);\r\n };\r\n if (hasWindow()) {\r\n _updateExceptionTracking(extConfig);\r\n _updateLocationChange(extConfig);\r\n }\r\n }\r\n catch (e) {\r\n // resetting the initialized state because of failure\r\n _self.setInitialized(false);\r\n throw e;\r\n }\r\n };\r\n _self._doTeardown = function (unloadCtx, unloadState) {\r\n _pageViewManager && _pageViewManager.teardown(unloadCtx, unloadState);\r\n // Just register to remove all events associated with this namespace\r\n eventOff(window, null, null, _evtNamespace);\r\n _initDefaults();\r\n };\r\n function _populateDefaults(config) {\r\n var ctx = createProcessTelemetryContext(null, config, _self[_DYN_CORE /* @min:%2ecore */]);\r\n var identifier = _self.identifier;\r\n // load default values if specified\r\n var defaults = _getDefaultConfig(config);\r\n var extConfig = _self.config = ctx.getExtCfg(identifier);\r\n if (defaults !== undefined) {\r\n objForEachKey(defaults, function (field, value) {\r\n // for each unspecified field, set the default value\r\n extConfig[field] = ctx.getConfig(identifier, field, value);\r\n if (extConfig[field] === undefined) {\r\n extConfig = value;\r\n }\r\n });\r\n }\r\n return extConfig;\r\n }\r\n function _updateBrowserLinkTracking(extConfig, config) {\r\n _isBrowserLinkTrackingEnabled = extConfig[_DYN_IS_BROWSER_LINK_TRAC5 /* @min:%2eisBrowserLinkTrackingEnabled */] || config[_DYN_IS_BROWSER_LINK_TRAC5 /* @min:%2eisBrowserLinkTrackingEnabled */];\r\n _addDefaultTelemetryInitializers();\r\n }\r\n /**\r\n * Log a page visit time\r\n * @param pageName Name of page\r\n * @param pageVisitDuration Duration of visit to the page in milleseconds\r\n */\r\n function trackPageVisitTime(pageName, pageUrl, pageVisitTime) {\r\n var properties = { PageName: pageName, PageUrl: pageUrl };\r\n _self.trackMetric({\r\n name: \"PageVisitTime\",\r\n average: pageVisitTime,\r\n max: pageVisitTime,\r\n min: pageVisitTime,\r\n sampleCount: 1\r\n }, properties);\r\n }\r\n function _addDefaultTelemetryInitializers() {\r\n if (!_browserLinkInitializerAdded && _isBrowserLinkTrackingEnabled) {\r\n var browserLinkPaths_1 = [\"/browserLinkSignalR/\", \"/__browserLink/\"];\r\n var dropBrowserLinkRequests = function (envelope) {\r\n if (_isBrowserLinkTrackingEnabled && envelope.baseType === RemoteDependencyData[_DYN_DATA_TYPE /* @min:%2edataType */]) {\r\n var remoteData = envelope.baseData;\r\n if (remoteData) {\r\n for (var i = 0; i < browserLinkPaths_1[_DYN_LENGTH /* @min:%2elength */]; i++) {\r\n if (remoteData.target && remoteData.target.indexOf(browserLinkPaths_1[i]) >= 0) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n };\r\n _self[_DYN_ADD_TELEMETRY_INITIA15 /* @min:%2eaddTelemetryInitializer */](dropBrowserLinkRequests);\r\n _browserLinkInitializerAdded = true;\r\n }\r\n }\r\n function _sendCORSException(exception, properties) {\r\n var telemetryItem = createTelemetryItem(exception, Exception[_DYN_DATA_TYPE /* @min:%2edataType */], Exception[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], _self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), properties);\r\n _self[_DYN_CORE /* @min:%2ecore */][_DYN_TRACK /* @min:%2etrack */](telemetryItem);\r\n }\r\n function _updateExceptionTracking(extConfig) {\r\n var _window = getWindow();\r\n var locn = getLocation(true);\r\n _disableExceptionTracking = extConfig[_DYN_DISABLE_EXCEPTION_TR0 /* @min:%2edisableExceptionTracking */];\r\n if (!_disableExceptionTracking && !_autoExceptionInstrumented && !extConfig.autoExceptionInstrumented) {\r\n // We want to enable exception auto collection and it has not been done so yet\r\n _addHook(InstrumentEvent(_window, \"onerror\", {\r\n ns: _evtNamespace,\r\n rsp: function (callDetails, message, url, lineNumber, columnNumber, error) {\r\n if (!_disableExceptionTracking && callDetails.rslt !== true) {\r\n _self[_DYN__ONERROR /* @min:%2e_onerror */](Exception[_DYN__CREATE_AUTO_EXCEPTI14 /* @min:%2eCreateAutoException */](message, url, lineNumber, columnNumber, error, callDetails.evt));\r\n }\r\n }\r\n }, false));\r\n _autoExceptionInstrumented = true;\r\n }\r\n _addUnhandledPromiseRejectionTracking(extConfig, _window, locn);\r\n }\r\n function _updateLocationChange(extConfig) {\r\n var win = getWindow();\r\n var locn = getLocation(true);\r\n _enableAutoRouteTracking = extConfig[_DYN_ENABLE_AUTO_ROUTE_TR6 /* @min:%2eenableAutoRouteTracking */] === true;\r\n /**\r\n * Create a custom \"locationchange\" event which is triggered each time the history object is changed\r\n */\r\n if (win && _enableAutoRouteTracking && hasHistory()) {\r\n var _history = getHistory();\r\n if (isFunction(_history.pushState) && isFunction(_history.replaceState) && typeof Event !== strUndefined) {\r\n _addHistoryListener(extConfig, win, _history, locn);\r\n }\r\n }\r\n }\r\n function _getDistributedTraceCtx() {\r\n var distributedTraceCtx = null;\r\n if (_self[_DYN_CORE /* @min:%2ecore */] && _self[_DYN_CORE /* @min:%2ecore */].getTraceCtx) {\r\n distributedTraceCtx = _self[_DYN_CORE /* @min:%2ecore */].getTraceCtx(false);\r\n }\r\n if (!distributedTraceCtx) {\r\n // Fallback when using an older Core and PropertiesPlugin\r\n var properties = _self[_DYN_CORE /* @min:%2ecore */].getPlugin(PropertiesPluginIdentifier);\r\n if (properties) {\r\n var context = properties.plugin.context;\r\n if (context) {\r\n distributedTraceCtx = createDistributedTraceContextFromTrace(context.telemetryTrace);\r\n }\r\n }\r\n }\r\n return distributedTraceCtx;\r\n }\r\n /**\r\n * Create a custom \"locationchange\" event which is triggered each time the history object is changed\r\n */\r\n function _addHistoryListener(extConfig, win, history, locn) {\r\n var namePrefix = extConfig[_DYN_NAME_PREFIX /* @min:%2enamePrefix */] || \"\";\r\n function _popstateHandler() {\r\n if (_enableAutoRouteTracking) {\r\n _dispatchEvent(win, createDomEvent(namePrefix + \"locationchange\"));\r\n }\r\n }\r\n function _locationChangeHandler() {\r\n // We always track the changes (if the handler is installed) to handle the feature being disabled between location changes\r\n if (_currUri) {\r\n _prevUri = _currUri;\r\n _currUri = locn && locn[_DYN_HREF /* @min:%2ehref */] || \"\";\r\n }\r\n else {\r\n _currUri = locn && locn[_DYN_HREF /* @min:%2ehref */] || \"\";\r\n }\r\n if (_enableAutoRouteTracking) {\r\n var distributedTraceCtx = _getDistributedTraceCtx();\r\n if (distributedTraceCtx) {\r\n distributedTraceCtx.setTraceId(generateW3CId());\r\n var traceLocationName = \"_unknown_\";\r\n if (locn && locn.pathname) {\r\n traceLocationName = locn.pathname + (locn.hash || \"\");\r\n }\r\n // This populates the ai.operation.name which has a maximum size of 1024 so we need to sanitize it\r\n distributedTraceCtx.setName(dataSanitizeString(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), traceLocationName));\r\n }\r\n setTimeout((function (uri) {\r\n // todo: override start time so that it is not affected by autoRoutePVDelay\r\n _self[_DYN_TRACK_PAGE_VIEW /* @min:%2etrackPageView */]({ refUri: uri, properties: { duration: 0 } }); // SPA route change loading durations are undefined, so send 0\r\n }).bind(this, _prevUri), _self.autoRoutePVDelay);\r\n }\r\n }\r\n if (!_historyListenerAdded) {\r\n _addHook(InstrumentEvent(history, \"pushState\", {\r\n ns: _evtNamespace,\r\n rsp: function () {\r\n if (_enableAutoRouteTracking) {\r\n _dispatchEvent(win, createDomEvent(namePrefix + \"pushState\"));\r\n _dispatchEvent(win, createDomEvent(namePrefix + \"locationchange\"));\r\n }\r\n }\r\n }, true));\r\n _addHook(InstrumentEvent(history, \"replaceState\", {\r\n ns: _evtNamespace,\r\n rsp: function () {\r\n if (_enableAutoRouteTracking) {\r\n _dispatchEvent(win, createDomEvent(namePrefix + \"replaceState\"));\r\n _dispatchEvent(win, createDomEvent(namePrefix + \"locationchange\"));\r\n }\r\n }\r\n }, true));\r\n eventOn(win, namePrefix + \"popstate\", _popstateHandler, _evtNamespace);\r\n eventOn(win, namePrefix + \"locationchange\", _locationChangeHandler, _evtNamespace);\r\n _historyListenerAdded = true;\r\n }\r\n }\r\n function _addUnhandledPromiseRejectionTracking(extConfig, _window, _location) {\r\n _enableUnhandledPromiseRejectionTracking = extConfig[_DYN_ENABLE_UNHANDLED_PRO3 /* @min:%2eenableUnhandledPromiseRejectionTracking */] === true;\r\n if (_enableUnhandledPromiseRejectionTracking && !_autoUnhandledPromiseInstrumented) {\r\n // We want to enable exception auto collection and it has not been done so yet\r\n _addHook(InstrumentEvent(_window, \"onunhandledrejection\", {\r\n ns: _evtNamespace,\r\n rsp: function (callDetails, error) {\r\n if (_enableUnhandledPromiseRejectionTracking && callDetails.rslt !== true) { // handled could be typeof function\r\n _self[_DYN__ONERROR /* @min:%2e_onerror */](Exception[_DYN__CREATE_AUTO_EXCEPTI14 /* @min:%2eCreateAutoException */](_getReason(error), _location ? _location[_DYN_HREF /* @min:%2ehref */] : \"\", 0, 0, error, callDetails.evt));\r\n }\r\n }\r\n }, false));\r\n _autoUnhandledPromiseInstrumented = true;\r\n extConfig.autoUnhandledPromiseInstrumented = _autoUnhandledPromiseInstrumented;\r\n }\r\n }\r\n /**\r\n * This method will throw exceptions in debug mode or attempt to log the error as a console warning.\r\n * @param severity {eLoggingSeverity} - The severity of the log message\r\n * @param message {_InternalLogMessage} - The log message.\r\n */\r\n function _throwInternal(severity, msgId, msg, properties, isUserAct) {\r\n _self[_DYN_DIAG_LOG /* @min:%2ediagLog */]().throwInternal(severity, msgId, msg, properties, isUserAct);\r\n }\r\n function _initDefaults() {\r\n _eventTracking = null;\r\n _pageTracking = null;\r\n _pageViewManager = null;\r\n _pageViewPerformanceManager = null;\r\n _pageVisitTimeManager = null;\r\n _preInitTelemetryInitializers = null;\r\n _isBrowserLinkTrackingEnabled = false;\r\n _browserLinkInitializerAdded = false;\r\n _enableAutoRouteTracking = false;\r\n _historyListenerAdded = false;\r\n _disableExceptionTracking = false;\r\n _autoExceptionInstrumented = false;\r\n _enableUnhandledPromiseRejectionTracking = false;\r\n _autoUnhandledPromiseInstrumented = false;\r\n // Counts number of trackAjax invocations.\r\n // By default we only monitor X ajax call per view to avoid too much load.\r\n // Default value is set in config.\r\n // This counter keeps increasing even after the limit is reached.\r\n _trackAjaxAttempts = 0;\r\n // array with max length of 2 that store current url and previous url for SPA page route change trackPageview use.\r\n var location = getLocation(true);\r\n _prevUri = location && location[_DYN_HREF /* @min:%2ehref */] || \"\";\r\n _currUri = null;\r\n _evtNamespace = null;\r\n }\r\n // For backward compatibility\r\n objDefineAccessors(_self, \"_pageViewManager\", function () { return _pageViewManager; });\r\n objDefineAccessors(_self, \"_pageViewPerformanceManager\", function () { return _pageViewPerformanceManager; });\r\n objDefineAccessors(_self, \"_pageVisitTimeManager\", function () { return _pageVisitTimeManager; });\r\n objDefineAccessors(_self, \"_evtNamespace\", function () { return \".\" + _evtNamespace; });\r\n });\r\n return _this;\r\n }\r\n// Removed Stub for AnalyticsPlugin.prototype.getCookieMgr.\r\n// Removed Stub for AnalyticsPlugin.prototype.processTelemetry.\r\n// Removed Stub for AnalyticsPlugin.prototype.trackEvent.\r\n// Removed Stub for AnalyticsPlugin.prototype.startTrackEvent.\r\n// Removed Stub for AnalyticsPlugin.prototype.stopTrackEvent.\r\n// Removed Stub for AnalyticsPlugin.prototype.trackTrace.\r\n// Removed Stub for AnalyticsPlugin.prototype.trackMetric.\r\n// Removed Stub for AnalyticsPlugin.prototype.trackPageView.\r\n// Removed Stub for AnalyticsPlugin.prototype.sendPageViewInternal.\r\n// Removed Stub for AnalyticsPlugin.prototype.sendPageViewPerformanceInternal.\r\n// Removed Stub for AnalyticsPlugin.prototype.trackPageViewPerformance.\r\n// Removed Stub for AnalyticsPlugin.prototype.startTrackPage.\r\n// Removed Stub for AnalyticsPlugin.prototype.stopTrackPage.\r\n// Removed Stub for AnalyticsPlugin.prototype.sendExceptionInternal.\r\n// Removed Stub for AnalyticsPlugin.prototype.trackException.\r\n// Removed Stub for AnalyticsPlugin.prototype._onerror.\r\n// Removed Stub for AnalyticsPlugin.prototype.addTelemetryInitializer.\r\n// Removed Stub for AnalyticsPlugin.prototype.initialize.\r\n AnalyticsPlugin.Version = '2.8.9'; // Not currently used anywhere\r\n AnalyticsPlugin.getDefaultConfig = _getDefaultConfig;\r\n return AnalyticsPlugin;\r\n}(BaseTelemetryPlugin));\r\nexport { AnalyticsPlugin };\r\n","/*\n * Application Insights JavaScript SDK - Common, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport { createClassFromInterface } from \"@microsoft/applicationinsights-core-js\";\r\nfunction _aiNameFunc(baseName) {\r\n var aiName = \"ai.\" + baseName + \".\";\r\n return function (name) {\r\n return aiName + name;\r\n };\r\n}\r\nvar _aiApplication = _aiNameFunc(\"application\");\r\nvar _aiDevice = _aiNameFunc(\"device\");\r\nvar _aiLocation = _aiNameFunc(\"location\");\r\nvar _aiOperation = _aiNameFunc(\"operation\");\r\nvar _aiSession = _aiNameFunc(\"session\");\r\nvar _aiUser = _aiNameFunc(\"user\");\r\nvar _aiCloud = _aiNameFunc(\"cloud\");\r\nvar _aiInternal = _aiNameFunc(\"internal\");\r\nvar ContextTagKeys = /** @class */ (function (_super) {\r\n __extends(ContextTagKeys, _super);\r\n function ContextTagKeys() {\r\n return _super.call(this) || this;\r\n }\r\n return ContextTagKeys;\r\n}(createClassFromInterface({\r\n applicationVersion: _aiApplication(\"ver\"),\r\n applicationBuild: _aiApplication(\"build\"),\r\n applicationTypeId: _aiApplication(\"typeId\"),\r\n applicationId: _aiApplication(\"applicationId\"),\r\n applicationLayer: _aiApplication(\"layer\"),\r\n deviceId: _aiDevice(\"id\"),\r\n deviceIp: _aiDevice(\"ip\"),\r\n deviceLanguage: _aiDevice(\"language\"),\r\n deviceLocale: _aiDevice(\"locale\"),\r\n deviceModel: _aiDevice(\"model\"),\r\n deviceFriendlyName: _aiDevice(\"friendlyName\"),\r\n deviceNetwork: _aiDevice(\"network\"),\r\n deviceNetworkName: _aiDevice(\"networkName\"),\r\n deviceOEMName: _aiDevice(\"oemName\"),\r\n deviceOS: _aiDevice(\"os\"),\r\n deviceOSVersion: _aiDevice(\"osVersion\"),\r\n deviceRoleInstance: _aiDevice(\"roleInstance\"),\r\n deviceRoleName: _aiDevice(\"roleName\"),\r\n deviceScreenResolution: _aiDevice(\"screenResolution\"),\r\n deviceType: _aiDevice(\"type\"),\r\n deviceMachineName: _aiDevice(\"machineName\"),\r\n deviceVMName: _aiDevice(\"vmName\"),\r\n deviceBrowser: _aiDevice(\"browser\"),\r\n deviceBrowserVersion: _aiDevice(\"browserVersion\"),\r\n locationIp: _aiLocation(\"ip\"),\r\n locationCountry: _aiLocation(\"country\"),\r\n locationProvince: _aiLocation(\"province\"),\r\n locationCity: _aiLocation(\"city\"),\r\n operationId: _aiOperation(\"id\"),\r\n operationName: _aiOperation(\"name\"),\r\n operationParentId: _aiOperation(\"parentId\"),\r\n operationRootId: _aiOperation(\"rootId\"),\r\n operationSyntheticSource: _aiOperation(\"syntheticSource\"),\r\n operationCorrelationVector: _aiOperation(\"correlationVector\"),\r\n sessionId: _aiSession(\"id\"),\r\n sessionIsFirst: _aiSession(\"isFirst\"),\r\n sessionIsNew: _aiSession(\"isNew\"),\r\n userAccountAcquisitionDate: _aiUser(\"accountAcquisitionDate\"),\r\n userAccountId: _aiUser(\"accountId\"),\r\n userAgent: _aiUser(\"userAgent\"),\r\n userId: _aiUser(\"id\"),\r\n userStoreRegion: _aiUser(\"storeRegion\"),\r\n userAuthUserId: _aiUser(\"authUserId\"),\r\n userAnonymousUserAcquisitionDate: _aiUser(\"anonUserAcquisitionDate\"),\r\n userAuthenticatedUserAcquisitionDate: _aiUser(\"authUserAcquisitionDate\"),\r\n cloudName: _aiCloud(\"name\"),\r\n cloudRole: _aiCloud(\"role\"),\r\n cloudRoleVer: _aiCloud(\"roleVer\"),\r\n cloudRoleInstance: _aiCloud(\"roleInstance\"),\r\n cloudEnvironment: _aiCloud(\"environment\"),\r\n cloudLocation: _aiCloud(\"location\"),\r\n cloudDeploymentUnit: _aiCloud(\"deploymentUnit\"),\r\n internalNodeName: _aiInternal(\"nodeName\"),\r\n internalSdkVersion: _aiInternal(\"sdkVersion\"),\r\n internalAgentVersion: _aiInternal(\"agentVersion\"),\r\n internalSnippet: _aiInternal(\"snippet\"),\r\n internalSdkSrc: _aiInternal(\"sdkSrc\")\r\n})));\r\nexport { ContextTagKeys };\r\n","/*\n * Application Insights JavaScript SDK - Common, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport { ContextTagKeys } from \"./Contracts/ContextTagKeys\";\r\nexport var Extensions = {\r\n UserExt: \"user\",\r\n DeviceExt: \"device\",\r\n TraceExt: \"trace\",\r\n WebExt: \"web\",\r\n AppExt: \"app\",\r\n OSExt: \"os\",\r\n SessionExt: \"ses\",\r\n SDKExt: \"sdk\"\r\n};\r\nexport var CtxTagKeys = new ContextTagKeys();\r\n","/*\n * Application Insights JavaScript SDK - Common, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { toISOString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { strNotSpecified } from \"../../Constants\";\r\nimport { _DYN_NAME } from \"../../__DynamicConstants\";\r\nimport { dataSanitizeString } from \"./DataSanitizer\";\r\nvar Envelope = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of telemetry data.\r\n */\r\n function Envelope(logger, data, name) {\r\n var _this = this;\r\n var _self = this;\r\n _self.ver = 1;\r\n _self.sampleRate = 100.0;\r\n _self.tags = {};\r\n _self[_DYN_NAME /* @min:%2ename */] = dataSanitizeString(logger, name) || strNotSpecified;\r\n _self.data = data;\r\n _self.time = toISOString(new Date());\r\n _self.aiDataContract = {\r\n time: 1 /* FieldType.Required */,\r\n iKey: 1 /* FieldType.Required */,\r\n name: 1 /* FieldType.Required */,\r\n sampleRate: function () {\r\n return (_this.sampleRate === 100) ? 4 /* FieldType.Hidden */ : 1 /* FieldType.Required */;\r\n },\r\n tags: 1 /* FieldType.Required */,\r\n data: 1 /* FieldType.Required */\r\n };\r\n }\r\n return Envelope;\r\n}());\r\nexport { Envelope };\r\n","/*\n * Application Insights JavaScript SDK - Common, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nvar Data = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of telemetry data.\r\n */\r\n function Data(baseType, data) {\r\n /**\r\n * The data contract for serializing this object.\r\n */\r\n this.aiDataContract = {\r\n baseType: 1 /* FieldType.Required */,\r\n baseData: 1 /* FieldType.Required */\r\n };\r\n this.baseType = baseType;\r\n this.baseData = data;\r\n }\r\n return Data;\r\n}());\r\nexport { Data };\r\n","/*\n * Application Insights JavaScript SDK - Channel, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Generally you should only put values that are used more than 2 times and then only if not already exposed as a constant (such as SdkCoreNames)\r\n// as when using \"short\" named values from here they will be will be minified smaller than the SdkCoreNames[eSdkCoreNames.xxxx] value.\r\nexport var STR_DURATION = \"duration\";\r\n","/*\n * Application Insights JavaScript SDK - Channel, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// @skip-file-minify\r\n// ##############################################################\r\n// AUTO GENERATED FILE: This file is Auto Generated during build.\r\n// ##############################################################\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\nexport var _DYN_TAGS = \"tags\"; // Count: 17\r\nexport var _DYN_DEVICE_TYPE = \"deviceType\"; // Count: 3\r\nexport var _DYN_DATA = \"data\"; // Count: 13\r\nexport var _DYN_NAME = \"name\"; // Count: 8\r\nexport var _DYN_TRACE_ID = \"traceID\"; // Count: 5\r\nexport var _DYN_LENGTH = \"length\"; // Count: 36\r\nexport var _DYN_STRINGIFY = \"stringify\"; // Count: 5\r\nexport var _DYN_MEASUREMENTS = \"measurements\"; // Count: 7\r\nexport var _DYN_DATA_TYPE = \"dataType\"; // Count: 10\r\nexport var _DYN_ENVELOPE_TYPE = \"envelopeType\"; // Count: 7\r\nexport var _DYN_TO_STRING = \"toString\"; // Count: 7\r\nexport var _DYN_ON_LINE = \"onLine\"; // Count: 4\r\nexport var _DYN_ENQUEUE = \"enqueue\"; // Count: 5\r\nexport var _DYN_COUNT = \"count\"; // Count: 6\r\nexport var _DYN_PUSH = \"push\"; // Count: 6\r\nexport var _DYN_EMIT_LINE_DELIMITED_0 = \"emitLineDelimitedJson\"; // Count: 3\r\nexport var _DYN_CLEAR = \"clear\"; // Count: 6\r\nexport var _DYN_BATCH_PAYLOADS = \"batchPayloads\"; // Count: 5\r\nexport var _DYN_MARK_AS_SENT = \"markAsSent\"; // Count: 6\r\nexport var _DYN_CLEAR_SENT = \"clearSent\"; // Count: 5\r\nexport var _DYN__BUFFER__KEY = \"BUFFER_KEY\"; // Count: 5\r\nexport var _DYN__SENT__BUFFER__KEY = \"SENT_BUFFER_KEY\"; // Count: 7\r\nexport var _DYN__MAX__BUFFER__SIZE = \"MAX_BUFFER_SIZE\"; // Count: 5\r\nexport var _DYN_NAME_PREFIX = \"namePrefix\"; // Count: 6\r\nexport var _DYN_MAX_BATCH_SIZE_IN_BY1 = \"maxBatchSizeInBytes\"; // Count: 3\r\nexport var _DYN_TRIGGER_SEND = \"triggerSend\"; // Count: 6\r\nexport var _DYN_DIAG_LOG = \"diagLog\"; // Count: 15\r\nexport var _DYN_ONUNLOAD_DISABLE_BEA2 = \"onunloadDisableBeacon\"; // Count: 2\r\nexport var _DYN_IS_BEACON_API_DISABL3 = \"isBeaconApiDisabled\"; // Count: 3\r\nexport var _DYN__SENDER = \"_sender\"; // Count: 5\r\nexport var _DYN__SENDER_CONFIG = \"_senderConfig\"; // Count: 4\r\nexport var _DYN__BUFFER = \"_buffer\"; // Count: 7\r\nexport var _DYN_ENABLE_SESSION_STORA4 = \"enableSessionStorageBuffer\"; // Count: 2\r\nexport var _DYN_SAMPLING_PERCENTAGE = \"samplingPercentage\"; // Count: 2\r\nexport var _DYN_INSTRUMENTATION_KEY = \"instrumentationKey\"; // Count: 4\r\nexport var _DYN_ENDPOINT_URL = \"endpointUrl\"; // Count: 8\r\nexport var _DYN_CUSTOM_HEADERS = \"customHeaders\"; // Count: 4\r\nexport var _DYN_DISABLE_XHR = \"disableXhr\"; // Count: 5\r\nexport var _DYN_ONUNLOAD_DISABLE_FET5 = \"onunloadDisableFetch\"; // Count: 2\r\nexport var _DYN_DISABLE_TELEMETRY = \"disableTelemetry\"; // Count: 2\r\nexport var _DYN_BASE_TYPE = \"baseType\"; // Count: 4\r\nexport var _DYN_SAMPLE_RATE = \"sampleRate\"; // Count: 4\r\nexport var _DYN_CONVERT_UNDEFINED = \"convertUndefined\"; // Count: 2\r\nexport var _DYN__XHR_READY_STATE_CHA6 = \"_xhrReadyStateChange\"; // Count: 2\r\nexport var _DYN__ON_ERROR = \"_onError\"; // Count: 11\r\nexport var _DYN__ON_PARTIAL_SUCCESS = \"_onPartialSuccess\"; // Count: 3\r\nexport var _DYN__ON_SUCCESS = \"_onSuccess\"; // Count: 6\r\nexport var _DYN_ITEMS_ACCEPTED = \"itemsAccepted\"; // Count: 5\r\nexport var _DYN_ITEMS_RECEIVED = \"itemsReceived\"; // Count: 6\r\nexport var _DYN_IS_RETRY_DISABLED = \"isRetryDisabled\"; // Count: 5\r\nexport var _DYN_SET_REQUEST_HEADER = \"setRequestHeader\"; // Count: 3\r\nexport var _DYN_MAX_BATCH_INTERVAL = \"maxBatchInterval\"; // Count: 2\r\nexport var _DYN_EVENTS_SEND_REQUEST = \"eventsSendRequest\"; // Count: 2\r\nexport var _DYN_DISABLE_INSTRUMENTAT7 = \"disableInstrumentationKeyValidation\"; // Count: 2\r\nexport var _DYN_GET_SAMPLING_SCORE = \"getSamplingScore\"; // Count: 2\r\nexport var _DYN_GET_HASH_CODE_SCORE = \"getHashCodeScore\"; // Count: 4\r\n","/*\n * Application Insights JavaScript SDK - Channel, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport { __assignFn as __assign } from \"@microsoft/applicationinsights-shims\";\r\nimport { CtxTagKeys, Data, Envelope, Event, Exception, HttpMethod, Metric, PageView, PageViewPerformance, RemoteDependencyData, SampleRate, Trace, dataSanitizeString } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal, _warnToConsole, getJSON, hasJSON, isNullOrUndefined, isNumber, isString, isTruthy, objForEachKey, optimizeObject, setValue, toISOString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { STR_DURATION } from \"./InternalConstants\";\r\nimport { _DYN_DATA, _DYN_DATA_TYPE, _DYN_DEVICE_TYPE, _DYN_ENVELOPE_TYPE, _DYN_LENGTH, _DYN_MEASUREMENTS, _DYN_NAME, _DYN_STRINGIFY, _DYN_TAGS, _DYN_TO_STRING, _DYN_TRACE_ID } from \"./__DynamicConstants\";\r\n// these two constants are used to filter out properties not needed when trying to extract custom properties and measurements from the incoming payload\r\nvar strBaseType = \"baseType\";\r\nvar strBaseData = \"baseData\";\r\nvar strProperties = \"properties\";\r\nvar strTrue = \"true\";\r\nfunction _setValueIf(target, field, value) {\r\n return setValue(target, field, value, isTruthy);\r\n}\r\n/*\r\n * Maps Part A data from CS 4.0\r\n */\r\nfunction _extractPartAExtensions(logger, item, env) {\r\n // todo: switch to keys from common in this method\r\n var envTags = env[_DYN_TAGS /* @min:%2etags */] = env[_DYN_TAGS /* @min:%2etags */] || {};\r\n var itmExt = item.ext = item.ext || {};\r\n var itmTags = item[_DYN_TAGS /* @min:%2etags */] = item[_DYN_TAGS /* @min:%2etags */] || [];\r\n var extUser = itmExt.user;\r\n if (extUser) {\r\n _setValueIf(envTags, CtxTagKeys.userAuthUserId, extUser.authId);\r\n _setValueIf(envTags, CtxTagKeys.userId, extUser.id || extUser.localId);\r\n }\r\n var extApp = itmExt.app;\r\n if (extApp) {\r\n _setValueIf(envTags, CtxTagKeys.sessionId, extApp.sesId);\r\n }\r\n var extDevice = itmExt.device;\r\n if (extDevice) {\r\n _setValueIf(envTags, CtxTagKeys.deviceId, extDevice.id || extDevice.localId);\r\n _setValueIf(envTags, CtxTagKeys[_DYN_DEVICE_TYPE /* @min:%2edeviceType */], extDevice.deviceClass);\r\n _setValueIf(envTags, CtxTagKeys.deviceIp, extDevice.ip);\r\n _setValueIf(envTags, CtxTagKeys.deviceModel, extDevice.model);\r\n _setValueIf(envTags, CtxTagKeys[_DYN_DEVICE_TYPE /* @min:%2edeviceType */], extDevice[_DYN_DEVICE_TYPE /* @min:%2edeviceType */]);\r\n }\r\n var web = item.ext.web;\r\n if (web) {\r\n _setValueIf(envTags, CtxTagKeys.deviceLanguage, web.browserLang);\r\n _setValueIf(envTags, CtxTagKeys.deviceBrowserVersion, web.browserVer);\r\n _setValueIf(envTags, CtxTagKeys.deviceBrowser, web.browser);\r\n var envData = env[_DYN_DATA /* @min:%2edata */] = env[_DYN_DATA /* @min:%2edata */] || {};\r\n var envBaseData = envData[strBaseData] = envData[strBaseData] || {};\r\n var envProps = envBaseData[strProperties] = envBaseData[strProperties] || {};\r\n _setValueIf(envProps, \"domain\", web.domain);\r\n _setValueIf(envProps, \"isManual\", web.isManual ? strTrue : null);\r\n _setValueIf(envProps, \"screenRes\", web.screenRes);\r\n _setValueIf(envProps, \"userConsent\", web.userConsent ? strTrue : null);\r\n }\r\n var extOs = itmExt.os;\r\n if (extOs) {\r\n _setValueIf(envTags, CtxTagKeys.deviceOS, extOs[_DYN_NAME /* @min:%2ename */]);\r\n }\r\n // No support for mapping Trace.traceState to 2.0 as it is currently empty\r\n var extTrace = itmExt.trace;\r\n if (extTrace) {\r\n _setValueIf(envTags, CtxTagKeys.operationParentId, extTrace.parentID);\r\n _setValueIf(envTags, CtxTagKeys.operationName, dataSanitizeString(logger, extTrace[_DYN_NAME /* @min:%2ename */]));\r\n _setValueIf(envTags, CtxTagKeys.operationId, extTrace[_DYN_TRACE_ID /* @min:%2etraceID */]);\r\n }\r\n // Sample 4.0 schema\r\n // {\r\n // \"time\" : \"2018-09-05T22:51:22.4936Z\",\r\n // \"name\" : \"MetricWithNamespace\",\r\n // \"iKey\" : \"ABC-5a4cbd20-e601-4ef5-a3c6-5d6577e4398e\",\r\n // \"ext\": { \"cloud\": {\r\n // \"role\": \"WATSON3\",\r\n // \"roleInstance\": \"CO4AEAP00000260\"\r\n // },\r\n // \"device\": {}, \"correlation\": {} },\r\n // \"tags\": [\r\n // { \"amazon.region\" : \"east2\" },\r\n // { \"os.expid\" : \"wp:02df239\" }\r\n // ]\r\n // }\r\n var tgs = {};\r\n // deals with tags.push({object})\r\n for (var i = itmTags[_DYN_LENGTH /* @min:%2elength */] - 1; i >= 0; i--) {\r\n var tg = itmTags[i];\r\n objForEachKey(tg, function (key, value) {\r\n tgs[key] = value;\r\n });\r\n itmTags.splice(i, 1);\r\n }\r\n // deals with tags[key]=value (and handles hasOwnProperty)\r\n objForEachKey(itmTags, function (tg, value) {\r\n tgs[tg] = value;\r\n });\r\n var theTags = __assign(__assign({}, envTags), tgs);\r\n if (!theTags[CtxTagKeys.internalSdkVersion]) {\r\n // Append a version in case it is not already set\r\n theTags[CtxTagKeys.internalSdkVersion] = \"javascript:\".concat(EnvelopeCreator.Version);\r\n }\r\n env[_DYN_TAGS /* @min:%2etags */] = optimizeObject(theTags);\r\n}\r\nfunction _extractPropsAndMeasurements(data, properties, measurements) {\r\n if (!isNullOrUndefined(data)) {\r\n objForEachKey(data, function (key, value) {\r\n if (isNumber(value)) {\r\n measurements[key] = value;\r\n }\r\n else if (isString(value)) {\r\n properties[key] = value;\r\n }\r\n else if (hasJSON()) {\r\n properties[key] = getJSON()[_DYN_STRINGIFY /* @min:%2estringify */](value);\r\n }\r\n });\r\n }\r\n}\r\nfunction _convertPropsUndefinedToCustomDefinedValue(properties, customUndefinedValue) {\r\n if (!isNullOrUndefined(properties)) {\r\n objForEachKey(properties, function (key, value) {\r\n properties[key] = value || customUndefinedValue;\r\n });\r\n }\r\n}\r\n// TODO: Do we want this to take logger as arg or use this._logger as nonstatic?\r\nfunction _createEnvelope(logger, envelopeType, telemetryItem, data) {\r\n var envelope = new Envelope(logger, data, envelopeType);\r\n _setValueIf(envelope, \"sampleRate\", telemetryItem[SampleRate]);\r\n if ((telemetryItem[strBaseData] || {}).startTime) {\r\n envelope.time = toISOString(telemetryItem[strBaseData].startTime);\r\n }\r\n envelope.iKey = telemetryItem.iKey;\r\n var iKeyNoDashes = telemetryItem.iKey.replace(/-/g, \"\");\r\n envelope[_DYN_NAME /* @min:%2ename */] = envelope[_DYN_NAME /* @min:%2ename */].replace(\"{0}\", iKeyNoDashes);\r\n // extract all extensions from ctx\r\n _extractPartAExtensions(logger, telemetryItem, envelope);\r\n // loop through the envelope tags (extension of Part A) and pick out the ones that should go in outgoing envelope tags\r\n telemetryItem[_DYN_TAGS /* @min:%2etags */] = telemetryItem[_DYN_TAGS /* @min:%2etags */] || [];\r\n return optimizeObject(envelope);\r\n}\r\nfunction EnvelopeCreatorInit(logger, telemetryItem) {\r\n if (isNullOrUndefined(telemetryItem[strBaseData])) {\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 46 /* _eInternalMessageId.TelemetryEnvelopeInvalid */, \"telemetryItem.baseData cannot be null.\");\r\n }\r\n}\r\nexport var EnvelopeCreator = {\r\n Version: '2.8.9'\r\n};\r\nexport function DependencyEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n var customMeasurements = telemetryItem[strBaseData][_DYN_MEASUREMENTS /* @min:%2emeasurements */] || {};\r\n var customProperties = telemetryItem[strBaseData][strProperties] || {};\r\n _extractPropsAndMeasurements(telemetryItem[_DYN_DATA /* @min:%2edata */], customProperties, customMeasurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(customProperties, customUndefinedValue);\r\n }\r\n var bd = telemetryItem[strBaseData];\r\n if (isNullOrUndefined(bd)) {\r\n _warnToConsole(logger, \"Invalid input for dependency data\");\r\n return null;\r\n }\r\n var method = bd[strProperties] && bd[strProperties][HttpMethod] ? bd[strProperties][HttpMethod] : \"GET\";\r\n var remoteDepData = new RemoteDependencyData(logger, bd.id, bd.target, bd[_DYN_NAME /* @min:%2ename */], bd[STR_DURATION /* @min:%2eduration */], bd.success, bd.responseCode, method, bd.type, bd.correlationContext, customProperties, customMeasurements);\r\n var data = new Data(RemoteDependencyData[_DYN_DATA_TYPE /* @min:%2edataType */], remoteDepData);\r\n return _createEnvelope(logger, RemoteDependencyData[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], telemetryItem, data);\r\n}\r\nexport function EventEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n var customProperties = {};\r\n var customMeasurements = {};\r\n if (telemetryItem[strBaseType] !== Event[_DYN_DATA_TYPE /* @min:%2edataType */]) {\r\n customProperties[\"baseTypeSource\"] = telemetryItem[strBaseType]; // save the passed in base type as a property\r\n }\r\n if (telemetryItem[strBaseType] === Event[_DYN_DATA_TYPE /* @min:%2edataType */]) { // take collection\r\n customProperties = telemetryItem[strBaseData][strProperties] || {};\r\n customMeasurements = telemetryItem[strBaseData][_DYN_MEASUREMENTS /* @min:%2emeasurements */] || {};\r\n }\r\n else { // if its not a known type, convert to custom event\r\n if (telemetryItem[strBaseData]) {\r\n _extractPropsAndMeasurements(telemetryItem[strBaseData], customProperties, customMeasurements);\r\n }\r\n }\r\n // Extract root level properties from part C telemetryItem.data\r\n _extractPropsAndMeasurements(telemetryItem[_DYN_DATA /* @min:%2edata */], customProperties, customMeasurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(customProperties, customUndefinedValue);\r\n }\r\n var eventName = telemetryItem[strBaseData][_DYN_NAME /* @min:%2ename */];\r\n var eventData = new Event(logger, eventName, customProperties, customMeasurements);\r\n var data = new Data(Event[_DYN_DATA_TYPE /* @min:%2edataType */], eventData);\r\n return _createEnvelope(logger, Event[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], telemetryItem, data);\r\n}\r\nexport function ExceptionEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n // Extract root level properties from part C telemetryItem.data\r\n var customMeasurements = telemetryItem[strBaseData][_DYN_MEASUREMENTS /* @min:%2emeasurements */] || {};\r\n var customProperties = telemetryItem[strBaseData][strProperties] || {};\r\n _extractPropsAndMeasurements(telemetryItem[_DYN_DATA /* @min:%2edata */], customProperties, customMeasurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(customProperties, customUndefinedValue);\r\n }\r\n var bd = telemetryItem[strBaseData];\r\n var exData = Exception.CreateFromInterface(logger, bd, customProperties, customMeasurements);\r\n var data = new Data(Exception[_DYN_DATA_TYPE /* @min:%2edataType */], exData);\r\n return _createEnvelope(logger, Exception[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], telemetryItem, data);\r\n}\r\nexport function MetricEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n var baseData = telemetryItem[strBaseData];\r\n var props = baseData[strProperties] || {};\r\n var measurements = baseData[_DYN_MEASUREMENTS /* @min:%2emeasurements */] || {};\r\n _extractPropsAndMeasurements(telemetryItem[_DYN_DATA /* @min:%2edata */], props, measurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(props, customUndefinedValue);\r\n }\r\n var baseMetricData = new Metric(logger, baseData[_DYN_NAME /* @min:%2ename */], baseData.average, baseData.sampleCount, baseData.min, baseData.max, baseData.stdDev, props, measurements);\r\n var data = new Data(Metric[_DYN_DATA_TYPE /* @min:%2edataType */], baseMetricData);\r\n return _createEnvelope(logger, Metric[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], telemetryItem, data);\r\n}\r\nexport function PageViewEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n // Since duration is not part of the domain properties in Common Schema, extract it from part C\r\n var duration;\r\n var baseData = telemetryItem[strBaseData];\r\n if (!isNullOrUndefined(baseData) &&\r\n !isNullOrUndefined(baseData[strProperties]) &&\r\n !isNullOrUndefined(baseData[strProperties][STR_DURATION])) { // from part B properties\r\n duration = baseData[strProperties][STR_DURATION];\r\n delete baseData[strProperties][STR_DURATION];\r\n }\r\n else if (!isNullOrUndefined(telemetryItem[_DYN_DATA /* @min:%2edata */]) &&\r\n !isNullOrUndefined(telemetryItem[_DYN_DATA /* @min:%2edata */][STR_DURATION])) { // from custom properties\r\n duration = telemetryItem[_DYN_DATA /* @min:%2edata */][STR_DURATION];\r\n delete telemetryItem[_DYN_DATA /* @min:%2edata */][STR_DURATION];\r\n }\r\n var bd = telemetryItem[strBaseData];\r\n // special case: pageview.id is grabbed from current operation id. Analytics plugin is decoupled from properties plugin, so this is done here instead. This can be made a default telemetry intializer instead if needed to be decoupled from channel\r\n var currentContextId;\r\n if (((telemetryItem.ext || {}).trace || {})[_DYN_TRACE_ID /* @min:%2etraceID */]) {\r\n currentContextId = telemetryItem.ext.trace[_DYN_TRACE_ID /* @min:%2etraceID */];\r\n }\r\n var id = bd.id || currentContextId;\r\n var name = bd[_DYN_NAME /* @min:%2ename */];\r\n var url = bd.uri;\r\n var properties = bd[strProperties] || {};\r\n var measurements = bd[_DYN_MEASUREMENTS /* @min:%2emeasurements */] || {};\r\n // refUri is a field that Breeze still does not recognize as part of Part B. For now, put it in Part C until it supports it as a domain property\r\n if (!isNullOrUndefined(bd.refUri)) {\r\n properties[\"refUri\"] = bd.refUri;\r\n }\r\n // pageType is a field that Breeze still does not recognize as part of Part B. For now, put it in Part C until it supports it as a domain property\r\n if (!isNullOrUndefined(bd.pageType)) {\r\n properties[\"pageType\"] = bd.pageType;\r\n }\r\n // isLoggedIn is a field that Breeze still does not recognize as part of Part B. For now, put it in Part C until it supports it as a domain property\r\n if (!isNullOrUndefined(bd.isLoggedIn)) {\r\n properties[\"isLoggedIn\"] = bd.isLoggedIn[_DYN_TO_STRING /* @min:%2etoString */]();\r\n }\r\n // pageTags is a field that Breeze still does not recognize as part of Part B. For now, put it in Part C until it supports it as a domain property\r\n if (!isNullOrUndefined(bd[strProperties])) {\r\n var pageTags = bd[strProperties];\r\n objForEachKey(pageTags, function (key, value) {\r\n properties[key] = value;\r\n });\r\n }\r\n _extractPropsAndMeasurements(telemetryItem[_DYN_DATA /* @min:%2edata */], properties, measurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(properties, customUndefinedValue);\r\n }\r\n var pageViewData = new PageView(logger, name, url, duration, properties, measurements, id);\r\n var data = new Data(PageView[_DYN_DATA_TYPE /* @min:%2edataType */], pageViewData);\r\n return _createEnvelope(logger, PageView[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], telemetryItem, data);\r\n}\r\nexport function PageViewPerformanceEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n var bd = telemetryItem[strBaseData];\r\n var name = bd[_DYN_NAME /* @min:%2ename */];\r\n var url = bd.uri || bd.url;\r\n var properties = bd[strProperties] || {};\r\n var measurements = bd[_DYN_MEASUREMENTS /* @min:%2emeasurements */] || {};\r\n _extractPropsAndMeasurements(telemetryItem[_DYN_DATA /* @min:%2edata */], properties, measurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(properties, customUndefinedValue);\r\n }\r\n var baseData = new PageViewPerformance(logger, name, url, undefined, properties, measurements, bd);\r\n var data = new Data(PageViewPerformance[_DYN_DATA_TYPE /* @min:%2edataType */], baseData);\r\n return _createEnvelope(logger, PageViewPerformance[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], telemetryItem, data);\r\n}\r\nexport function TraceEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n var message = telemetryItem[strBaseData].message;\r\n var severityLevel = telemetryItem[strBaseData].severityLevel;\r\n var props = telemetryItem[strBaseData][strProperties] || {};\r\n var measurements = telemetryItem[strBaseData][_DYN_MEASUREMENTS /* @min:%2emeasurements */] || {};\r\n _extractPropsAndMeasurements(telemetryItem[_DYN_DATA /* @min:%2edata */], props, measurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(props, customUndefinedValue);\r\n }\r\n var baseData = new Trace(logger, message, severityLevel, props, measurements);\r\n var data = new Data(Trace[_DYN_DATA_TYPE /* @min:%2edataType */], baseData);\r\n return _createEnvelope(logger, Trace[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], telemetryItem, data);\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Channel, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport { createUniqueNamespace, eventOff, eventOn, getDocument, getNavigator, getWindow, isNullOrUndefined, isUndefined, mergeEvtNamespace } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_ON_LINE } from \"./__DynamicConstants\";\r\nfunction _disableEvents(target, evtNamespace) {\r\n eventOff(target, null, null, evtNamespace);\r\n}\r\n/**\r\n * Create a new OfflineListener instance to monitor browser online / offline events\r\n * @param parentEvtNamespace - The parent event namespace to append to any specific events for this instance\r\n */\r\nexport function createOfflineListener(parentEvtNamespace) {\r\n var _document = getDocument();\r\n var _navigator = getNavigator(); // Gets the window.navigator or workerNavigator depending on the global\r\n var _isListening = false;\r\n var _onlineStatus = true;\r\n var _evtNamespace = mergeEvtNamespace(createUniqueNamespace(\"OfflineListener\"), parentEvtNamespace);\r\n try {\r\n if (_enableEvents(getWindow())) {\r\n _isListening = true;\r\n }\r\n if (_document) {\r\n // Also attach to the document.body or document\r\n var target = _document.body || _document;\r\n if (target.ononline) {\r\n if (_enableEvents(target)) {\r\n _isListening = true;\r\n }\r\n }\r\n }\r\n if (_isListening) {\r\n // We are listening to events so lets set the current status rather than assuming we are online #1538\r\n if (_navigator && !isNullOrUndefined(_navigator[_DYN_ON_LINE /* @min:%2eonLine */])) { // navigator.onLine is undefined in react-native\r\n _onlineStatus = _navigator[_DYN_ON_LINE /* @min:%2eonLine */];\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // this makes react-native less angry\r\n _isListening = false;\r\n }\r\n function _enableEvents(target) {\r\n var enabled = false;\r\n if (target) {\r\n enabled = eventOn(target, \"online\", _setOnline, _evtNamespace);\r\n if (enabled) {\r\n eventOn(target, \"offline\", _setOffline, _evtNamespace);\r\n }\r\n }\r\n return enabled;\r\n }\r\n function _setOnline() {\r\n _onlineStatus = true;\r\n }\r\n function _setOffline() {\r\n _onlineStatus = false;\r\n }\r\n function _isOnline() {\r\n var result = true;\r\n if (_isListening) {\r\n result = _onlineStatus;\r\n }\r\n else if (_navigator && !isNullOrUndefined(_navigator[_DYN_ON_LINE /* @min:%2eonLine */])) { // navigator.onLine is undefined in react-native\r\n result = _navigator[_DYN_ON_LINE /* @min:%2eonLine */];\r\n }\r\n return result;\r\n }\r\n function _unload() {\r\n var win = getWindow();\r\n if (win && _isListening) {\r\n _disableEvents(win, _evtNamespace);\r\n if (_document) {\r\n // Also attach to the document.body or document\r\n var target = _document.body || _document;\r\n if (!isUndefined(target.ononline)) {\r\n _disableEvents(target, _evtNamespace);\r\n }\r\n }\r\n _isListening = false;\r\n }\r\n }\r\n return {\r\n isOnline: _isOnline,\r\n isListening: function () { return _isListening; },\r\n unload: _unload\r\n };\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Channel, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport { __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { utlGetSessionStorage, utlSetSessionStorage } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal, arrForEach, arrIndexOf, dumpObj, getExceptionName, getJSON, isArray, isFunction, isString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_BATCH_PAYLOADS, _DYN_CLEAR, _DYN_CLEAR_SENT, _DYN_COUNT, _DYN_EMIT_LINE_DELIMITED_0, _DYN_ENQUEUE, _DYN_LENGTH, _DYN_MARK_AS_SENT, _DYN_NAME_PREFIX, _DYN_PUSH, _DYN_STRINGIFY, _DYN__BUFFER__KEY, _DYN__MAX__BUFFER__SIZE, _DYN__SENT__BUFFER__KEY } from \"./__DynamicConstants\";\r\nvar BaseSendBuffer = /** @class */ (function () {\r\n function BaseSendBuffer(logger, config) {\r\n var _buffer = [];\r\n var _bufferFullMessageSent = false;\r\n this._get = function () {\r\n return _buffer;\r\n };\r\n this._set = function (buffer) {\r\n _buffer = buffer;\r\n return _buffer;\r\n };\r\n dynamicProto(BaseSendBuffer, this, function (_self) {\r\n _self[_DYN_ENQUEUE /* @min:%2eenqueue */] = function (payload) {\r\n if (_self[_DYN_COUNT /* @min:%2ecount */]() >= config.eventsLimitInMem()) {\r\n // sent internal log only once per page view\r\n if (!_bufferFullMessageSent) {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 105 /* _eInternalMessageId.InMemoryStorageBufferFull */, \"Maximum in-memory buffer size reached: \" + _self[_DYN_COUNT /* @min:%2ecount */](), true);\r\n _bufferFullMessageSent = true;\r\n }\r\n return;\r\n }\r\n _buffer[_DYN_PUSH /* @min:%2epush */](payload);\r\n };\r\n _self[_DYN_COUNT /* @min:%2ecount */] = function () {\r\n return _buffer[_DYN_LENGTH /* @min:%2elength */];\r\n };\r\n _self.size = function () {\r\n var size = _buffer[_DYN_LENGTH /* @min:%2elength */];\r\n for (var lp = 0; lp < _buffer[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n size += _buffer[lp][_DYN_LENGTH /* @min:%2elength */];\r\n }\r\n if (!config[_DYN_EMIT_LINE_DELIMITED_0 /* @min:%2eemitLineDelimitedJson */]()) {\r\n size += 2;\r\n }\r\n return size;\r\n };\r\n _self[_DYN_CLEAR /* @min:%2eclear */] = function () {\r\n _buffer = [];\r\n _bufferFullMessageSent = false;\r\n };\r\n _self.getItems = function () {\r\n return _buffer.slice(0);\r\n };\r\n _self[_DYN_BATCH_PAYLOADS /* @min:%2ebatchPayloads */] = function (payload) {\r\n if (payload && payload[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n var batch = config[_DYN_EMIT_LINE_DELIMITED_0 /* @min:%2eemitLineDelimitedJson */]() ?\r\n payload.join(\"\\n\") :\r\n \"[\" + payload.join(\",\") + \"]\";\r\n return batch;\r\n }\r\n return null;\r\n };\r\n });\r\n }\r\n// Removed Stub for BaseSendBuffer.prototype.enqueue.\r\n// Removed Stub for BaseSendBuffer.prototype.count.\r\n// Removed Stub for BaseSendBuffer.prototype.size.\r\n// Removed Stub for BaseSendBuffer.prototype.clear.\r\n// Removed Stub for BaseSendBuffer.prototype.getItems.\r\n// Removed Stub for BaseSendBuffer.prototype.batchPayloads.\r\n // This is a workaround for an IE8 bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n // this will be removed when ES3 support is dropped.\n BaseSendBuffer.__ieDyn=1;\n\n return BaseSendBuffer;\r\n}());\r\n/*\r\n * An array based send buffer.\r\n */\r\nvar ArraySendBuffer = /** @class */ (function (_super) {\r\n __extends(ArraySendBuffer, _super);\r\n function ArraySendBuffer(logger, config) {\r\n var _this = _super.call(this, logger, config) || this;\r\n dynamicProto(ArraySendBuffer, _this, function (_self, _base) {\r\n _self[_DYN_MARK_AS_SENT /* @min:%2emarkAsSent */] = function (payload) {\r\n _base[_DYN_CLEAR /* @min:%2eclear */]();\r\n };\r\n _self[_DYN_CLEAR_SENT /* @min:%2eclearSent */] = function (payload) {\r\n // not supported\r\n };\r\n });\r\n return _this;\r\n }\r\n// Removed Stub for ArraySendBuffer.prototype.markAsSent.\r\n// Removed Stub for ArraySendBuffer.prototype.clearSent.\r\n // This is a workaround for an IE8 bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n // this will be removed when ES3 support is dropped.\n ArraySendBuffer.__ieDyn=1;\n\n return ArraySendBuffer;\r\n}(BaseSendBuffer));\r\nexport { ArraySendBuffer };\r\n/*\r\n * Session storage buffer holds a copy of all unsent items in the browser session storage.\r\n */\r\nvar SessionStorageSendBuffer = /** @class */ (function (_super) {\r\n __extends(SessionStorageSendBuffer, _super);\r\n function SessionStorageSendBuffer(logger, config) {\r\n var _this = _super.call(this, logger, config) || this;\r\n var _bufferFullMessageSent = false;\r\n dynamicProto(SessionStorageSendBuffer, _this, function (_self, _base) {\r\n var bufferItems = _getBuffer(SessionStorageSendBuffer[_DYN__BUFFER__KEY /* @min:%2eBUFFER_KEY */]);\r\n var notDeliveredItems = _getBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */]);\r\n var buffer = _self._set(bufferItems.concat(notDeliveredItems));\r\n // If the buffer has too many items, drop items from the end.\r\n if (buffer[_DYN_LENGTH /* @min:%2elength */] > SessionStorageSendBuffer[_DYN__MAX__BUFFER__SIZE /* @min:%2eMAX_BUFFER_SIZE */]) {\r\n buffer[_DYN_LENGTH /* @min:%2elength */] = SessionStorageSendBuffer[_DYN__MAX__BUFFER__SIZE /* @min:%2eMAX_BUFFER_SIZE */];\r\n }\r\n _setBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */], []);\r\n _setBuffer(SessionStorageSendBuffer[_DYN__BUFFER__KEY /* @min:%2eBUFFER_KEY */], buffer);\r\n _self[_DYN_ENQUEUE /* @min:%2eenqueue */] = function (payload) {\r\n if (_self[_DYN_COUNT /* @min:%2ecount */]() >= SessionStorageSendBuffer[_DYN__MAX__BUFFER__SIZE /* @min:%2eMAX_BUFFER_SIZE */]) {\r\n // sent internal log only once per page view\r\n if (!_bufferFullMessageSent) {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 67 /* _eInternalMessageId.SessionStorageBufferFull */, \"Maximum buffer size reached: \" + _self[_DYN_COUNT /* @min:%2ecount */](), true);\r\n _bufferFullMessageSent = true;\r\n }\r\n return;\r\n }\r\n _base[_DYN_ENQUEUE /* @min:%2eenqueue */](payload);\r\n _setBuffer(SessionStorageSendBuffer[_DYN__BUFFER__KEY /* @min:%2eBUFFER_KEY */], _self._get());\r\n };\r\n _self[_DYN_CLEAR /* @min:%2eclear */] = function () {\r\n _base[_DYN_CLEAR /* @min:%2eclear */]();\r\n _setBuffer(SessionStorageSendBuffer[_DYN__BUFFER__KEY /* @min:%2eBUFFER_KEY */], _self._get());\r\n _setBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */], []);\r\n _bufferFullMessageSent = false;\r\n };\r\n _self[_DYN_MARK_AS_SENT /* @min:%2emarkAsSent */] = function (payload) {\r\n _setBuffer(SessionStorageSendBuffer[_DYN__BUFFER__KEY /* @min:%2eBUFFER_KEY */], _self._set(_removePayloadsFromBuffer(payload, _self._get())));\r\n var sentElements = _getBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */]);\r\n if (sentElements instanceof Array && payload instanceof Array) {\r\n sentElements = sentElements.concat(payload);\r\n if (sentElements[_DYN_LENGTH /* @min:%2elength */] > SessionStorageSendBuffer[_DYN__MAX__BUFFER__SIZE /* @min:%2eMAX_BUFFER_SIZE */]) {\r\n // We send telemetry normally. If the SENT_BUFFER is too big we don't add new elements\r\n // until we receive a response from the backend and the buffer has free space again (see clearSent method)\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 67 /* _eInternalMessageId.SessionStorageBufferFull */, \"Sent buffer reached its maximum size: \" + sentElements[_DYN_LENGTH /* @min:%2elength */], true);\r\n sentElements[_DYN_LENGTH /* @min:%2elength */] = SessionStorageSendBuffer[_DYN__MAX__BUFFER__SIZE /* @min:%2eMAX_BUFFER_SIZE */];\r\n }\r\n _setBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */], sentElements);\r\n }\r\n };\r\n _self[_DYN_CLEAR_SENT /* @min:%2eclearSent */] = function (payload) {\r\n var sentElements = _getBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */]);\r\n sentElements = _removePayloadsFromBuffer(payload, sentElements);\r\n _setBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */], sentElements);\r\n };\r\n function _removePayloadsFromBuffer(payloads, buffer) {\r\n var remaining = [];\r\n arrForEach(buffer, function (value) {\r\n if (!isFunction(value) && arrIndexOf(payloads, value) === -1) {\r\n remaining[_DYN_PUSH /* @min:%2epush */](value);\r\n }\r\n });\r\n return remaining;\r\n }\r\n function _getBuffer(key) {\r\n var prefixedKey = key;\r\n try {\r\n prefixedKey = config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */] && config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */]() ? config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */]() + \"_\" + prefixedKey : prefixedKey;\r\n var bufferJson = utlGetSessionStorage(logger, prefixedKey);\r\n if (bufferJson) {\r\n var buffer_1 = getJSON().parse(bufferJson);\r\n if (isString(buffer_1)) {\r\n // When using some version prototype.js the stringify / parse cycle does not decode array's correctly\r\n buffer_1 = getJSON().parse(buffer_1);\r\n }\r\n if (buffer_1 && isArray(buffer_1)) {\r\n return buffer_1;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 42 /* _eInternalMessageId.FailedToRestoreStorageBuffer */, \" storage key: \" + prefixedKey + \", \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n return [];\r\n }\r\n function _setBuffer(key, buffer) {\r\n var prefixedKey = key;\r\n try {\r\n prefixedKey = config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */] && config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */]() ? config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */]() + \"_\" + prefixedKey : prefixedKey;\r\n var bufferJson = JSON[_DYN_STRINGIFY /* @min:%2estringify */](buffer);\r\n utlSetSessionStorage(logger, prefixedKey, bufferJson);\r\n }\r\n catch (e) {\r\n // if there was an error, clear the buffer\r\n // telemetry is stored in the _buffer array so we won't loose any items\r\n utlSetSessionStorage(logger, prefixedKey, JSON[_DYN_STRINGIFY /* @min:%2estringify */]([]));\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 41 /* _eInternalMessageId.FailedToSetStorageBuffer */, \" storage key: \" + prefixedKey + \", \" + getExceptionName(e) + \". Buffer cleared\", { exception: dumpObj(e) });\r\n }\r\n }\r\n });\r\n return _this;\r\n }\r\n// Removed Stub for SessionStorageSendBuffer.prototype.enqueue.\r\n// Removed Stub for SessionStorageSendBuffer.prototype.clear.\r\n// Removed Stub for SessionStorageSendBuffer.prototype.markAsSent.\r\n// Removed Stub for SessionStorageSendBuffer.prototype.clearSent.\r\n SessionStorageSendBuffer.BUFFER_KEY = \"AI_buffer\";\r\n SessionStorageSendBuffer.SENT_BUFFER_KEY = \"AI_sentBuffer\";\r\n // Maximum number of payloads stored in the buffer. If the buffer is full, new elements will be dropped.\r\n SessionStorageSendBuffer.MAX_BUFFER_SIZE = 2000;\r\n return SessionStorageSendBuffer;\r\n}(BaseSendBuffer));\r\nexport { SessionStorageSendBuffer };\r\n","/*\n * Application Insights JavaScript SDK - Channel, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nvar _a;\r\nimport { __assignFn as __assign, __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { BreezeChannelIdentifier, DEFAULT_BREEZE_ENDPOINT, DEFAULT_BREEZE_PATH, DisabledPropertyName, Event, Exception, Metric, PageView, PageViewPerformance, ProcessLegacy, RemoteDependencyData, RequestHeaders, SampleRate, Trace, isInternalApplicationInsightsEndpoint, utlCanUseSessionStorage } from \"@microsoft/applicationinsights-common\";\r\nimport { BaseTelemetryPlugin, _throwInternal, _warnToConsole, arrForEach, createUniqueNamespace, dateNow, dumpObj, getExceptionName, getIEVersion, getJSON, getNavigator, getWindow, isArray, isBeaconsSupported, isFetchSupported, isNullOrUndefined, isXhrSupported, mergeEvtNamespace, objForEachKey, objKeys, useXDomainRequest } from \"@microsoft/applicationinsights-core-js\";\r\nimport { DependencyEnvelopeCreator, EventEnvelopeCreator, ExceptionEnvelopeCreator, MetricEnvelopeCreator, PageViewEnvelopeCreator, PageViewPerformanceEnvelopeCreator, TraceEnvelopeCreator } from \"./EnvelopeCreator\";\r\nimport { createOfflineListener } from \"./Offline\";\r\nimport { ArraySendBuffer, SessionStorageSendBuffer } from \"./SendBuffer\";\r\nimport { Serializer } from \"./Serializer\";\r\nimport { Sample } from \"./TelemetryProcessors/Sample\";\r\nimport { _DYN_BASE_TYPE, _DYN_BATCH_PAYLOADS, _DYN_CLEAR, _DYN_CLEAR_SENT, _DYN_CONVERT_UNDEFINED, _DYN_COUNT, _DYN_CUSTOM_HEADERS, _DYN_DIAG_LOG, _DYN_DISABLE_INSTRUMENTAT7, _DYN_DISABLE_TELEMETRY, _DYN_DISABLE_XHR, _DYN_EMIT_LINE_DELIMITED_0, _DYN_ENABLE_SESSION_STORA4, _DYN_ENDPOINT_URL, _DYN_ENQUEUE, _DYN_EVENTS_SEND_REQUEST, _DYN_INSTRUMENTATION_KEY, _DYN_IS_BEACON_API_DISABL3, _DYN_IS_RETRY_DISABLED, _DYN_ITEMS_ACCEPTED, _DYN_ITEMS_RECEIVED, _DYN_LENGTH, _DYN_MARK_AS_SENT, _DYN_MAX_BATCH_INTERVAL, _DYN_MAX_BATCH_SIZE_IN_BY1, _DYN_NAME_PREFIX, _DYN_ONUNLOAD_DISABLE_BEA2, _DYN_ONUNLOAD_DISABLE_FET5, _DYN_PUSH, _DYN_SAMPLE_RATE, _DYN_SAMPLING_PERCENTAGE, _DYN_SET_REQUEST_HEADER, _DYN_TAGS, _DYN_TRIGGER_SEND, _DYN__BUFFER, _DYN__ON_ERROR, _DYN__ON_PARTIAL_SUCCESS, _DYN__ON_SUCCESS, _DYN__SENDER, _DYN__SENDER_CONFIG, _DYN__XHR_READY_STATE_CHA6 } from \"./__DynamicConstants\";\r\nvar FetchSyncRequestSizeLimitBytes = 65000; // approx 64kb (the current Edge, Firefox and Chrome max limit)\r\nfunction _getResponseText(xhr) {\r\n try {\r\n return xhr.responseText;\r\n }\r\n catch (e) {\r\n // Best effort, as XHR may throw while XDR wont so just ignore\r\n }\r\n return null;\r\n}\r\nfunction _getDefaultAppInsightsChannelConfig() {\r\n var _a;\r\n var defaultValue;\r\n var defaultCustomHeaders;\r\n // set default values\r\n return _a = {\r\n endpointUrl: function () { return DEFAULT_BREEZE_ENDPOINT + DEFAULT_BREEZE_PATH; }\r\n },\r\n _a[_DYN_EMIT_LINE_DELIMITED_0 /* @min:emitLineDelimitedJson */] = function () { return false; },\r\n _a[_DYN_MAX_BATCH_INTERVAL /* @min:maxBatchInterval */] = function () { return 15000; },\r\n _a[_DYN_MAX_BATCH_SIZE_IN_BY1 /* @min:maxBatchSizeInBytes */] = function () { return 102400; },\r\n _a[_DYN_DISABLE_TELEMETRY /* @min:disableTelemetry */] = function () { return false; },\r\n _a[_DYN_ENABLE_SESSION_STORA4 /* @min:enableSessionStorageBuffer */] = function () { return true; },\r\n _a[_DYN_IS_RETRY_DISABLED /* @min:isRetryDisabled */] = function () { return false; },\r\n _a[_DYN_IS_BEACON_API_DISABL3 /* @min:isBeaconApiDisabled */] = function () { return true; },\r\n _a[_DYN_DISABLE_XHR /* @min:disableXhr */] = function () { return false; },\r\n _a[_DYN_ONUNLOAD_DISABLE_FET5 /* @min:onunloadDisableFetch */] = function () { return false; },\r\n _a[_DYN_ONUNLOAD_DISABLE_BEA2 /* @min:onunloadDisableBeacon */] = function () { return false; },\r\n _a[_DYN_INSTRUMENTATION_KEY /* @min:instrumentationKey */] = function () { return defaultValue; },\r\n _a[_DYN_NAME_PREFIX /* @min:namePrefix */] = function () { return defaultValue; },\r\n _a[_DYN_SAMPLING_PERCENTAGE /* @min:samplingPercentage */] = function () { return 100; },\r\n _a[_DYN_CUSTOM_HEADERS /* @min:customHeaders */] = function () { return defaultCustomHeaders; },\r\n _a[_DYN_CONVERT_UNDEFINED /* @min:convertUndefined */] = function () { return defaultValue; },\r\n _a.eventsLimitInMem = function () { return 10000; },\r\n _a;\r\n}\r\nvar EnvelopeTypeCreator = (_a = {},\r\n _a[Event.dataType] = EventEnvelopeCreator,\r\n _a[Trace.dataType] = TraceEnvelopeCreator,\r\n _a[PageView.dataType] = PageViewEnvelopeCreator,\r\n _a[PageViewPerformance.dataType] = PageViewPerformanceEnvelopeCreator,\r\n _a[Exception.dataType] = ExceptionEnvelopeCreator,\r\n _a[Metric.dataType] = MetricEnvelopeCreator,\r\n _a[RemoteDependencyData.dataType] = DependencyEnvelopeCreator,\r\n _a);\r\nvar Sender = /** @class */ (function (_super) {\r\n __extends(Sender, _super);\r\n function Sender() {\r\n var _this = _super.call(this) || this;\r\n _this.priority = 1001;\r\n _this.identifier = BreezeChannelIdentifier;\r\n /**\r\n * The configuration for this sender instance\r\n */\r\n _this._senderConfig = _getDefaultAppInsightsChannelConfig();\r\n // Don't set the defaults here, set them in the _initDefaults() as this is also called during unload\r\n var _consecutiveErrors; // How many times in a row a retryable error condition has occurred.\r\n var _retryAt; // The time to retry at in milliseconds from 1970/01/01 (this makes the timer calculation easy).\r\n var _lastSend; // The time of the last send operation.\r\n var _paused; // Flag indicating that the sending should be paused\r\n var _timeoutHandle; // Handle to the timer for delayed sending of batches of data.\r\n var _serializer;\r\n var _stamp_specific_redirects;\r\n var _headers;\r\n var _syncFetchPayload = 0; // Keep track of the outstanding sync fetch payload total (as sync fetch has limits)\r\n var _fallbackSender; // The sender to use if the payload size is too large\r\n var _syncUnloadSender; // The identified sender to use for the synchronous unload stage\r\n var _offlineListener;\r\n var _evtNamespace;\r\n dynamicProto(Sender, _this, function (_self, _base) {\r\n _initDefaults();\r\n _self.pause = function () {\r\n _clearScheduledTimer();\r\n _paused = true;\r\n };\r\n _self.resume = function () {\r\n if (_paused) {\r\n _paused = false;\r\n _retryAt = null;\r\n // flush if we have exceeded the max-size already\r\n if (_self._buffer.size() > _self._senderConfig[_DYN_MAX_BATCH_SIZE_IN_BY1 /* @min:%2emaxBatchSizeInBytes */]()) {\r\n _self[_DYN_TRIGGER_SEND /* @min:%2etriggerSend */](true, null, 10 /* SendRequestReason.MaxBatchSize */);\r\n }\r\n _setupTimer();\r\n }\r\n };\r\n _self.flush = function (isAsync, callBack, sendReason) {\r\n if (isAsync === void 0) { isAsync = true; }\r\n if (!_paused) {\r\n // Clear the normal schedule timer as we are going to try and flush ASAP\r\n _clearScheduledTimer();\r\n try {\r\n _self[_DYN_TRIGGER_SEND /* @min:%2etriggerSend */](isAsync, null, sendReason || 1 /* SendRequestReason.ManualFlush */);\r\n }\r\n catch (e) {\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 22 /* _eInternalMessageId.FlushFailed */, \"flush failed, telemetry will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n };\r\n _self.onunloadFlush = function () {\r\n if (!_paused) {\r\n if ((_self._senderConfig[_DYN_ONUNLOAD_DISABLE_BEA2 /* @min:%2eonunloadDisableBeacon */]() === false || _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_IS_BEACON_API_DISABL3 /* @min:%2eisBeaconApiDisabled */]() === false) && isBeaconsSupported()) {\r\n try {\r\n _self[_DYN_TRIGGER_SEND /* @min:%2etriggerSend */](true, _doUnloadSend, 2 /* SendRequestReason.Unload */);\r\n }\r\n catch (e) {\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 20 /* _eInternalMessageId.FailedToSendQueuedTelemetry */, \"failed to flush with beacon sender on page unload, telemetry will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n else {\r\n _self.flush();\r\n }\r\n }\r\n };\r\n _self.addHeader = function (name, value) {\r\n _headers[name] = value;\r\n };\r\n _self.initialize = function (config, core, extensions, pluginChain) {\r\n if (_self.isInitialized()) {\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 28 /* _eInternalMessageId.SenderNotInitialized */, \"Sender is already initialized\");\r\n }\r\n _base.initialize(config, core, extensions, pluginChain);\r\n var ctx = _self._getTelCtx();\r\n var identifier = _self.identifier;\r\n _serializer = new Serializer(core.logger);\r\n _consecutiveErrors = 0;\r\n _retryAt = null;\r\n _lastSend = 0;\r\n _self[_DYN__SENDER /* @min:%2e_sender */] = null;\r\n _stamp_specific_redirects = 0;\r\n var diagLog = _self[_DYN_DIAG_LOG /* @min:%2ediagLog */]();\r\n _evtNamespace = mergeEvtNamespace(createUniqueNamespace(\"Sender\"), core.evtNamespace && core.evtNamespace());\r\n _offlineListener = createOfflineListener(_evtNamespace);\r\n // TODO v3.x: Change the ISenderConfig to not be function calls\r\n var defaultConfig = _getDefaultAppInsightsChannelConfig();\r\n objForEachKey(defaultConfig, function (field, value) {\r\n _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][field] = function () {\r\n var theValue = ctx.getConfig(identifier, field, value());\r\n if (!theValue && field === \"endpointUrl\") {\r\n // Use the default value (handles empty string in the configuration)\r\n theValue = value();\r\n }\r\n return theValue;\r\n };\r\n });\r\n _self._buffer = (_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_ENABLE_SESSION_STORA4 /* @min:%2eenableSessionStorageBuffer */]() && utlCanUseSessionStorage())\r\n ? new SessionStorageSendBuffer(diagLog, _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */]) : new ArraySendBuffer(diagLog, _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */]);\r\n _self._sample = new Sample(_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_SAMPLING_PERCENTAGE /* @min:%2esamplingPercentage */](), diagLog);\r\n if (!_validateInstrumentationKey(config)) {\r\n _throwInternal(diagLog, 1 /* eLoggingSeverity.CRITICAL */, 100 /* _eInternalMessageId.InvalidInstrumentationKey */, \"Invalid Instrumentation key \" + config[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */]);\r\n }\r\n if (!isInternalApplicationInsightsEndpoint(_self._senderConfig.endpointUrl()) && _self._senderConfig.customHeaders() && _self._senderConfig.customHeaders()[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n arrForEach(_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_CUSTOM_HEADERS /* @min:%2ecustomHeaders */](), function (customHeader) {\r\n _this.addHeader(customHeader.header, customHeader.value);\r\n });\r\n }\r\n var senderConfig = _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */];\r\n var sendPostFunc = null;\r\n if (!senderConfig[_DYN_DISABLE_XHR /* @min:%2edisableXhr */]() && useXDomainRequest()) {\r\n sendPostFunc = _xdrSender; // IE 8 and 9\r\n }\r\n else if (!senderConfig[_DYN_DISABLE_XHR /* @min:%2edisableXhr */]() && isXhrSupported()) {\r\n sendPostFunc = _xhrSender;\r\n }\r\n if (!sendPostFunc && isFetchSupported()) {\r\n sendPostFunc = _fetchSender;\r\n }\r\n // always fallback to XHR\r\n _fallbackSender = sendPostFunc || _xhrSender;\r\n if (!senderConfig[_DYN_IS_BEACON_API_DISABL3 /* @min:%2eisBeaconApiDisabled */]() && isBeaconsSupported()) {\r\n // Config is set to always used beacon sending\r\n sendPostFunc = _beaconSender;\r\n }\r\n _self[_DYN__SENDER /* @min:%2e_sender */] = sendPostFunc || _xhrSender;\r\n if (!senderConfig[_DYN_ONUNLOAD_DISABLE_FET5 /* @min:%2eonunloadDisableFetch */]() && isFetchSupported(true)) {\r\n // Try and use the fetch with keepalive\r\n _syncUnloadSender = _fetchKeepAliveSender;\r\n }\r\n else if (isBeaconsSupported()) {\r\n // Try and use sendBeacon\r\n _syncUnloadSender = _beaconSender;\r\n }\r\n else if (!senderConfig[_DYN_DISABLE_XHR /* @min:%2edisableXhr */]() && useXDomainRequest()) {\r\n _syncUnloadSender = _xdrSender; // IE 8 and 9\r\n }\r\n else if (!senderConfig[_DYN_DISABLE_XHR /* @min:%2edisableXhr */]() && isXhrSupported()) {\r\n _syncUnloadSender = _xhrSender;\r\n }\r\n else {\r\n _syncUnloadSender = _fallbackSender;\r\n }\r\n };\r\n _self.processTelemetry = function (telemetryItem, itemCtx) {\r\n itemCtx = _self._getTelCtx(itemCtx);\r\n var diagLogger = itemCtx[_DYN_DIAG_LOG /* @min:%2ediagLog */]();\r\n try {\r\n // if master off switch is set, don't send any data\r\n if (_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_DISABLE_TELEMETRY /* @min:%2edisableTelemetry */]()) {\r\n // Do not send/save data\r\n return;\r\n }\r\n // validate input\r\n if (!telemetryItem) {\r\n _throwInternal(diagLogger, 1 /* eLoggingSeverity.CRITICAL */, 7 /* _eInternalMessageId.CannotSendEmptyTelemetry */, \"Cannot send empty telemetry\");\r\n return;\r\n }\r\n // validate event\r\n if (telemetryItem.baseData && !telemetryItem[_DYN_BASE_TYPE /* @min:%2ebaseType */]) {\r\n _throwInternal(diagLogger, 1 /* eLoggingSeverity.CRITICAL */, 70 /* _eInternalMessageId.InvalidEvent */, \"Cannot send telemetry without baseData and baseType\");\r\n return;\r\n }\r\n if (!telemetryItem[_DYN_BASE_TYPE /* @min:%2ebaseType */]) {\r\n // Default\r\n telemetryItem[_DYN_BASE_TYPE /* @min:%2ebaseType */] = \"EventData\";\r\n }\r\n // ensure a sender was constructed\r\n if (!_self[_DYN__SENDER /* @min:%2e_sender */]) {\r\n _throwInternal(diagLogger, 1 /* eLoggingSeverity.CRITICAL */, 28 /* _eInternalMessageId.SenderNotInitialized */, \"Sender was not initialized\");\r\n return;\r\n }\r\n // check if this item should be sampled in, else add sampleRate tag\r\n if (!_isSampledIn(telemetryItem)) {\r\n // Item is sampled out, do not send it\r\n _throwInternal(diagLogger, 2 /* eLoggingSeverity.WARNING */, 33 /* _eInternalMessageId.TelemetrySampledAndNotSent */, \"Telemetry item was sampled out and not sent\", { SampleRate: _self._sample[_DYN_SAMPLE_RATE /* @min:%2esampleRate */] });\r\n return;\r\n }\r\n else {\r\n telemetryItem[SampleRate] = _self._sample[_DYN_SAMPLE_RATE /* @min:%2esampleRate */];\r\n }\r\n var convertUndefined = _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_CONVERT_UNDEFINED /* @min:%2econvertUndefined */]() || undefined;\r\n // construct an envelope that Application Insights endpoint can understand\r\n // if ikey of telemetry is provided and not empty, envelope will use this iKey instead of senderConfig iKey\r\n var defaultEnvelopeIkey = telemetryItem.iKey || _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */]();\r\n var aiEnvelope_1 = Sender.constructEnvelope(telemetryItem, defaultEnvelopeIkey, diagLogger, convertUndefined);\r\n if (!aiEnvelope_1) {\r\n _throwInternal(diagLogger, 1 /* eLoggingSeverity.CRITICAL */, 47 /* _eInternalMessageId.CreateEnvelopeError */, \"Unable to create an AppInsights envelope\");\r\n return;\r\n }\r\n var doNotSendItem_1 = false;\r\n // this is for running in legacy mode, where customer may already have a custom initializer present\r\n if (telemetryItem[_DYN_TAGS /* @min:%2etags */] && telemetryItem[_DYN_TAGS /* @min:%2etags */][ProcessLegacy]) {\r\n arrForEach(telemetryItem[_DYN_TAGS /* @min:%2etags */][ProcessLegacy], function (callBack) {\r\n try {\r\n if (callBack && callBack(aiEnvelope_1) === false) {\r\n doNotSendItem_1 = true;\r\n _warnToConsole(diagLogger, \"Telemetry processor check returns false\");\r\n }\r\n }\r\n catch (e) {\r\n // log error but dont stop executing rest of the telemetry initializers\r\n // doNotSendItem = true;\r\n _throwInternal(diagLogger, 1 /* eLoggingSeverity.CRITICAL */, 64 /* _eInternalMessageId.TelemetryInitializerFailed */, \"One of telemetry initializers failed, telemetry item will not be sent: \" + getExceptionName(e), { exception: dumpObj(e) }, true);\r\n }\r\n });\r\n delete telemetryItem[_DYN_TAGS /* @min:%2etags */][ProcessLegacy];\r\n }\r\n if (doNotSendItem_1) {\r\n return; // do not send, no need to execute next plugin\r\n }\r\n // check if the incoming payload is too large, truncate if necessary\r\n var payload = _serializer.serialize(aiEnvelope_1);\r\n // flush if we would exceed the max-size limit by adding this item\r\n var buffer = _self[_DYN__BUFFER /* @min:%2e_buffer */];\r\n var bufferSize = buffer.size();\r\n if ((bufferSize + payload[_DYN_LENGTH /* @min:%2elength */]) > _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_MAX_BATCH_SIZE_IN_BY1 /* @min:%2emaxBatchSizeInBytes */]()) {\r\n _self[_DYN_TRIGGER_SEND /* @min:%2etriggerSend */](true, null, 10 /* SendRequestReason.MaxBatchSize */);\r\n }\r\n // enqueue the payload\r\n buffer[_DYN_ENQUEUE /* @min:%2eenqueue */](payload);\r\n // ensure an invocation timeout is set\r\n _setupTimer();\r\n }\r\n catch (e) {\r\n _throwInternal(diagLogger, 2 /* eLoggingSeverity.WARNING */, 12 /* _eInternalMessageId.FailedAddingTelemetryToBuffer */, \"Failed adding telemetry to the sender's buffer, some telemetry will be lost: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n // hand off the telemetry item to the next plugin\r\n _self.processNext(telemetryItem, itemCtx);\r\n };\r\n /**\r\n * xhr state changes\r\n */\r\n _self[_DYN__XHR_READY_STATE_CHA6 /* @min:%2e_xhrReadyStateChange */] = function (xhr, payload, countOfItemsInPayload) {\r\n if (xhr.readyState === 4) {\r\n _checkResponsStatus(xhr.status, payload, xhr.responseURL, countOfItemsInPayload, _formatErrorMessageXhr(xhr), _getResponseText(xhr) || xhr.response);\r\n }\r\n };\r\n /**\r\n * Immediately send buffered data\r\n * @param async {boolean} - Indicates if the events should be sent asynchronously\r\n * @param forcedSender {SenderFunction} - Indicates the forcedSender, undefined if not passed\r\n */\r\n _self[_DYN_TRIGGER_SEND /* @min:%2etriggerSend */] = function (async, forcedSender, sendReason) {\r\n if (async === void 0) { async = true; }\r\n if (!_paused) {\r\n try {\r\n var buffer = _self[_DYN__BUFFER /* @min:%2e_buffer */];\r\n // Send data only if disableTelemetry is false\r\n if (!_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_DISABLE_TELEMETRY /* @min:%2edisableTelemetry */]()) {\r\n if (buffer[_DYN_COUNT /* @min:%2ecount */]() > 0) {\r\n var payload = buffer.getItems();\r\n _notifySendRequest(sendReason || 0 /* SendRequestReason.Undefined */, async);\r\n // invoke send\r\n if (forcedSender) {\r\n forcedSender.call(_this, payload, async);\r\n }\r\n else {\r\n _self[_DYN__SENDER /* @min:%2e_sender */](payload, async);\r\n }\r\n }\r\n // update lastSend time to enable throttling\r\n _lastSend = +new Date;\r\n }\r\n else {\r\n buffer[_DYN_CLEAR /* @min:%2eclear */]();\r\n }\r\n _clearScheduledTimer();\r\n }\r\n catch (e) {\r\n /* Ignore this error for IE under v10 */\r\n var ieVer = getIEVersion();\r\n if (!ieVer || ieVer > 9) {\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 40 /* _eInternalMessageId.TransmissionFailed */, \"Telemetry transmission failed, some telemetry will be lost: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n }\r\n };\r\n _self._doTeardown = function (unloadCtx, unloadState) {\r\n _self.onunloadFlush();\r\n _offlineListener.unload();\r\n _initDefaults();\r\n };\r\n /**\r\n * error handler\r\n */\r\n _self[_DYN__ON_ERROR /* @min:%2e_onError */] = function (payload, message, event) {\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 26 /* _eInternalMessageId.OnError */, \"Failed to send telemetry.\", { message: message });\r\n _self._buffer[_DYN_CLEAR_SENT /* @min:%2eclearSent */](payload);\r\n };\r\n /**\r\n * partial success handler\r\n */\r\n _self[_DYN__ON_PARTIAL_SUCCESS /* @min:%2e_onPartialSuccess */] = function (payload, results) {\r\n var failed = [];\r\n var retry = [];\r\n // Iterate through the reversed array of errors so that splicing doesn't have invalid indexes after the first item.\r\n var errors = results.errors.reverse();\r\n for (var _i = 0, errors_1 = errors; _i < errors_1.length; _i++) {\r\n var error = errors_1[_i];\r\n var extracted = payload.splice(error.index, 1)[0];\r\n if (_isRetriable(error.statusCode)) {\r\n retry[_DYN_PUSH /* @min:%2epush */](extracted);\r\n }\r\n else {\r\n // All other errors, including: 402 (Monthly quota exceeded) and 439 (Too many requests and refresh cache).\r\n failed[_DYN_PUSH /* @min:%2epush */](extracted);\r\n }\r\n }\r\n if (payload[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n _self[_DYN__ON_SUCCESS /* @min:%2e_onSuccess */](payload, results[_DYN_ITEMS_ACCEPTED /* @min:%2eitemsAccepted */]);\r\n }\r\n if (failed[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n _self[_DYN__ON_ERROR /* @min:%2e_onError */](failed, _formatErrorMessageXhr(null, [\"partial success\", results[_DYN_ITEMS_ACCEPTED /* @min:%2eitemsAccepted */], \"of\", results.itemsReceived].join(\" \")));\r\n }\r\n if (retry[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n _resendPayload(retry);\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \"Partial success. \" +\r\n \"Delivered: \" + payload[_DYN_LENGTH /* @min:%2elength */] + \", Failed: \" + failed[_DYN_LENGTH /* @min:%2elength */] +\r\n \". Will retry to send \" + retry[_DYN_LENGTH /* @min:%2elength */] + \" our of \" + results[_DYN_ITEMS_RECEIVED /* @min:%2eitemsReceived */] + \" items\");\r\n }\r\n };\r\n /**\r\n * success handler\r\n */\r\n _self[_DYN__ON_SUCCESS /* @min:%2e_onSuccess */] = function (payload, countOfItemsInPayload) {\r\n _self._buffer[_DYN_CLEAR_SENT /* @min:%2eclearSent */](payload);\r\n };\r\n /**\r\n * xdr state changes\r\n */\r\n _self._xdrOnLoad = function (xdr, payload) {\r\n var responseText = _getResponseText(xdr);\r\n if (xdr && (responseText + \"\" === \"200\" || responseText === \"\")) {\r\n _consecutiveErrors = 0;\r\n _self[_DYN__ON_SUCCESS /* @min:%2e_onSuccess */](payload, 0);\r\n }\r\n else {\r\n var results = _parseResponse(responseText);\r\n if (results && results.itemsReceived && results.itemsReceived > results[_DYN_ITEMS_ACCEPTED /* @min:%2eitemsAccepted */]\r\n && !_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_IS_RETRY_DISABLED /* @min:%2eisRetryDisabled */]()) {\r\n _self[_DYN__ON_PARTIAL_SUCCESS /* @min:%2e_onPartialSuccess */](payload, results);\r\n }\r\n else {\r\n _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, _formatErrorMessageXdr(xdr));\r\n }\r\n }\r\n };\r\n function _isSampledIn(envelope) {\r\n return _self._sample.isSampledIn(envelope);\r\n }\r\n function _checkResponsStatus(status, payload, responseUrl, countOfItemsInPayload, errorMessage, res) {\r\n var response = null;\r\n if (!_self._appId) {\r\n response = _parseResponse(res);\r\n if (response && response.appId) {\r\n _self._appId = response.appId;\r\n }\r\n }\r\n if ((status < 200 || status >= 300) && status !== 0) {\r\n // Update End Point url if permanent redirect or moved permanently\r\n // Updates the end point url before retry\r\n if (status === 301 || status === 307 || status === 308) {\r\n if (!_checkAndUpdateEndPointUrl(responseUrl)) {\r\n _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, errorMessage);\r\n return;\r\n }\r\n }\r\n if (!_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_IS_RETRY_DISABLED /* @min:%2eisRetryDisabled */]() && _isRetriable(status)) {\r\n _resendPayload(payload);\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \". \" +\r\n \"Response code \" + status + \". Will retry to send \" + payload[_DYN_LENGTH /* @min:%2elength */] + \" items.\");\r\n }\r\n else {\r\n _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, errorMessage);\r\n }\r\n }\r\n else if (_offlineListener && !_offlineListener.isOnline()) { // offline\r\n // Note: Don't check for status == 0, since adblock gives this code\r\n if (!_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_IS_RETRY_DISABLED /* @min:%2eisRetryDisabled */]()) {\r\n var offlineBackOffMultiplier = 10; // arbritrary number\r\n _resendPayload(payload, offlineBackOffMultiplier);\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \". Offline - Response Code: \".concat(status, \". Offline status: \").concat(!_offlineListener.isOnline(), \". Will retry to send \").concat(payload.length, \" items.\"));\r\n }\r\n }\r\n else {\r\n // check if the xhr's responseURL or fetch's response.url is same as endpoint url\r\n // TODO after 10 redirects force send telemetry with 'redirect=false' as query parameter.\r\n _checkAndUpdateEndPointUrl(responseUrl);\r\n if (status === 206) {\r\n if (!response) {\r\n response = _parseResponse(res);\r\n }\r\n if (response && !_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_IS_RETRY_DISABLED /* @min:%2eisRetryDisabled */]()) {\r\n _self[_DYN__ON_PARTIAL_SUCCESS /* @min:%2e_onPartialSuccess */](payload, response);\r\n }\r\n else {\r\n _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, errorMessage);\r\n }\r\n }\r\n else {\r\n _consecutiveErrors = 0;\r\n _self[_DYN__ON_SUCCESS /* @min:%2e_onSuccess */](payload, countOfItemsInPayload);\r\n }\r\n }\r\n }\r\n function _checkAndUpdateEndPointUrl(responseUrl) {\r\n // Maximum stamp specific redirects allowed(uncomment this when breeze is ready with not allowing redirects feature)\r\n if (_stamp_specific_redirects >= 10) {\r\n // _self._senderConfig.endpointUrl = () => Sender._getDefaultAppInsightsChannelConfig().endpointUrl()+\"/?redirect=false\";\r\n // _stamp_specific_redirects = 0;\r\n return false;\r\n }\r\n if (!isNullOrUndefined(responseUrl) && responseUrl !== \"\") {\r\n if (responseUrl !== _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */]()) {\r\n _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */] = function () { return responseUrl; };\r\n ++_stamp_specific_redirects;\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n function _doUnloadSend(payload, isAsync) {\r\n if (_syncUnloadSender) {\r\n // We are unloading so always call the sender with sync set to false\r\n _syncUnloadSender(payload, false);\r\n }\r\n else {\r\n // Fallback to the previous beacon Sender (which causes a CORB warning on chrome now)\r\n _beaconSender(payload, isAsync);\r\n }\r\n }\r\n function _doBeaconSend(payload) {\r\n var nav = getNavigator();\r\n var buffer = _self[_DYN__BUFFER /* @min:%2e_buffer */];\r\n var url = _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */]();\r\n var batch = _self._buffer[_DYN_BATCH_PAYLOADS /* @min:%2ebatchPayloads */](payload);\r\n // Chrome only allows CORS-safelisted values for the sendBeacon data argument\r\n // see: https://bugs.chromium.org/p/chromium/issues/detail?id=720283\r\n var plainTextBatch = new Blob([batch], { type: \"text/plain;charset=UTF-8\" });\r\n // The sendBeacon method returns true if the user agent is able to successfully queue the data for transfer. Otherwise it returns false.\r\n var queued = nav.sendBeacon(url, plainTextBatch);\r\n if (queued) {\r\n buffer[_DYN_MARK_AS_SENT /* @min:%2emarkAsSent */](payload);\r\n // no response from beaconSender, clear buffer\r\n _self._onSuccess(payload, payload[_DYN_LENGTH /* @min:%2elength */]);\r\n }\r\n return queued;\r\n }\r\n /**\r\n * Send Beacon API request\r\n * @param payload {string} - The data payload to be sent.\r\n * @param isAsync {boolean} - not used\r\n * Note: Beacon API does not support custom headers and we are not able to get\r\n * appId from the backend for the correct correlation.\r\n */\r\n function _beaconSender(payload, isAsync) {\r\n if (isArray(payload) && payload[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n // The sendBeacon method returns true if the user agent is able to successfully queue the data for transfer. Otherwise it returns false.\r\n if (!_doBeaconSend(payload)) {\r\n // Failed to send entire payload so try and split data and try to send as much events as possible\r\n var droppedPayload = [];\r\n for (var lp = 0; lp < payload[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n var thePayload = payload[lp];\r\n if (!_doBeaconSend([thePayload])) {\r\n // Can't send anymore, so split the batch and drop the rest\r\n droppedPayload[_DYN_PUSH /* @min:%2epush */](thePayload);\r\n }\r\n }\r\n if (droppedPayload[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n _fallbackSender && _fallbackSender(droppedPayload, true);\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \". \" + \"Failed to send telemetry with Beacon API, retried with normal sender.\");\r\n }\r\n }\r\n }\r\n }\r\n /**\r\n * Send XMLHttpRequest\r\n * @param payload {string} - The data payload to be sent.\r\n * @param isAsync {boolean} - Indicates if the request should be sent asynchronously\r\n */\r\n function _xhrSender(payload, isAsync) {\r\n var xhr = new XMLHttpRequest();\r\n var endPointUrl = _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */]();\r\n try {\r\n xhr[DisabledPropertyName] = true;\r\n }\r\n catch (e) {\r\n // If the environment has locked down the XMLHttpRequest (preventExtensions and/or freeze), this would\r\n // cause the request to fail and we no telemetry would be sent\r\n }\r\n xhr.open(\"POST\", endPointUrl, isAsync);\r\n xhr[_DYN_SET_REQUEST_HEADER /* @min:%2esetRequestHeader */](\"Content-type\", \"application/json\");\r\n // append Sdk-Context request header only in case of breeze endpoint\r\n if (isInternalApplicationInsightsEndpoint(endPointUrl)) {\r\n xhr[_DYN_SET_REQUEST_HEADER /* @min:%2esetRequestHeader */](RequestHeaders[6 /* eRequestHeaders.sdkContextHeader */], RequestHeaders[7 /* eRequestHeaders.sdkContextHeaderAppIdRequest */]);\r\n }\r\n arrForEach(objKeys(_headers), function (headerName) {\r\n xhr[_DYN_SET_REQUEST_HEADER /* @min:%2esetRequestHeader */](headerName, _headers[headerName]);\r\n });\r\n xhr.onreadystatechange = function () { return _self._xhrReadyStateChange(xhr, payload, payload[_DYN_LENGTH /* @min:%2elength */]); };\r\n xhr.onerror = function (event) { return _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, _formatErrorMessageXhr(xhr), event); };\r\n // compose an array of payloads\r\n var batch = _self._buffer[_DYN_BATCH_PAYLOADS /* @min:%2ebatchPayloads */](payload);\r\n xhr.send(batch);\r\n _self._buffer[_DYN_MARK_AS_SENT /* @min:%2emarkAsSent */](payload);\r\n }\r\n function _fetchKeepAliveSender(payload, isAsync) {\r\n if (isArray(payload)) {\r\n var payloadSize = payload[_DYN_LENGTH /* @min:%2elength */];\r\n for (var lp = 0; lp < payload[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n payloadSize += payload[lp][_DYN_LENGTH /* @min:%2elength */];\r\n }\r\n if ((_syncFetchPayload + payloadSize) <= FetchSyncRequestSizeLimitBytes) {\r\n _doFetchSender(payload, false);\r\n }\r\n else if (isBeaconsSupported()) {\r\n // Fallback to beacon sender as we at least get told which events can't be scheduled\r\n _beaconSender(payload, isAsync);\r\n }\r\n else {\r\n // Payload is going to be too big so just try and send via XHR\r\n _fallbackSender && _fallbackSender(payload, true);\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \". \" + \"Failed to send telemetry with Beacon API, retried with xhrSender.\");\r\n }\r\n }\r\n }\r\n /**\r\n * Send fetch API request\r\n * @param payload {string} - The data payload to be sent.\r\n * @param isAsync {boolean} - not used\r\n */\r\n function _fetchSender(payload, isAsync) {\r\n _doFetchSender(payload, true);\r\n }\r\n /**\r\n * Send fetch API request\r\n * @param payload {string} - The data payload to be sent.\r\n * @param isAsync {boolean} - For fetch this identifies whether we are \"unloading\" (false) or a normal request\r\n */\r\n function _doFetchSender(payload, isAsync) {\r\n var _a;\r\n var endPointUrl = _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */]();\r\n var batch = _self._buffer[_DYN_BATCH_PAYLOADS /* @min:%2ebatchPayloads */](payload);\r\n var plainTextBatch = new Blob([batch], { type: \"application/json\" });\r\n var requestHeaders = new Headers();\r\n var batchLength = batch[_DYN_LENGTH /* @min:%2elength */];\r\n var ignoreResponse = false;\r\n var responseHandled = false;\r\n // append Sdk-Context request header only in case of breeze endpoint\r\n if (isInternalApplicationInsightsEndpoint(endPointUrl)) {\r\n requestHeaders.append(RequestHeaders[6 /* eRequestHeaders.sdkContextHeader */], RequestHeaders[7 /* eRequestHeaders.sdkContextHeaderAppIdRequest */]);\r\n }\r\n arrForEach(objKeys(_headers), function (headerName) {\r\n requestHeaders.append(headerName, _headers[headerName]);\r\n });\r\n var init = (_a = {\r\n method: \"POST\",\r\n headers: requestHeaders,\r\n body: plainTextBatch\r\n },\r\n _a[DisabledPropertyName] = true // Mark so we don't attempt to track this request\r\n ,\r\n _a);\r\n if (!isAsync) {\r\n init.keepalive = true;\r\n // As a sync request (during unload), it is unlikely that we will get a chance to process the response so\r\n // just like beacon send assume that the events have been accepted and processed\r\n ignoreResponse = true;\r\n _syncFetchPayload += batchLength;\r\n }\r\n var request = new Request(endPointUrl, init);\r\n try {\r\n // Also try and tag the request (just in case the value in init is not copied over)\r\n request[DisabledPropertyName] = true;\r\n }\r\n catch (e) {\r\n // If the environment has locked down the XMLHttpRequest (preventExtensions and/or freeze), this would\r\n // cause the request to fail and we no telemetry would be sent\r\n }\r\n _self._buffer[_DYN_MARK_AS_SENT /* @min:%2emarkAsSent */](payload);\r\n try {\r\n fetch(request).then(function (response) {\r\n if (!isAsync) {\r\n _syncFetchPayload -= batchLength;\r\n batchLength = 0;\r\n }\r\n if (!responseHandled) {\r\n responseHandled = true;\r\n /**\r\n * The Promise returned from fetch() won’t reject on HTTP error status even if the response is an HTTP 404 or 500.\r\n * Instead, it will resolve normally (with ok status set to false), and it will only reject on network failure\r\n * or if anything prevented the request from completing.\r\n */\r\n if (!response.ok) {\r\n _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, response.statusText);\r\n }\r\n else {\r\n response.text().then(function (text) {\r\n _checkResponsStatus(response.status, payload, response.url, payload[_DYN_LENGTH /* @min:%2elength */], response.statusText, text);\r\n });\r\n }\r\n }\r\n })[\"catch\"](function (error) {\r\n if (!isAsync) {\r\n _syncFetchPayload -= batchLength;\r\n batchLength = 0;\r\n }\r\n if (!responseHandled) {\r\n responseHandled = true;\r\n _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, error.message);\r\n }\r\n });\r\n }\r\n catch (e) {\r\n if (!responseHandled) {\r\n _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, dumpObj(e));\r\n }\r\n }\r\n if (ignoreResponse && !responseHandled) {\r\n // Assume success during unload processing as we most likely won't get the response\r\n responseHandled = true;\r\n _self._onSuccess(payload, payload[_DYN_LENGTH /* @min:%2elength */]);\r\n }\r\n }\r\n /**\r\n * Parses the response from the backend.\r\n * @param response - XMLHttpRequest or XDomainRequest response\r\n */\r\n function _parseResponse(response) {\r\n try {\r\n if (response && response !== \"\") {\r\n var result = getJSON().parse(response);\r\n if (result && result.itemsReceived && result.itemsReceived >= result[_DYN_ITEMS_ACCEPTED /* @min:%2eitemsAccepted */] &&\r\n result.itemsReceived - result.itemsAccepted === result.errors[_DYN_LENGTH /* @min:%2elength */]) {\r\n return result;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 43 /* _eInternalMessageId.InvalidBackendResponse */, \"Cannot parse the response. \" + getExceptionName(e), {\r\n response: response\r\n });\r\n }\r\n return null;\r\n }\r\n /**\r\n * Resend payload. Adds payload back to the send buffer and setup a send timer (with exponential backoff).\r\n * @param payload\r\n */\r\n function _resendPayload(payload, linearFactor) {\r\n if (linearFactor === void 0) { linearFactor = 1; }\r\n if (!payload || payload[_DYN_LENGTH /* @min:%2elength */] === 0) {\r\n return;\r\n }\r\n var buffer = _self[_DYN__BUFFER /* @min:%2e_buffer */];\r\n buffer[_DYN_CLEAR_SENT /* @min:%2eclearSent */](payload);\r\n _consecutiveErrors++;\r\n for (var _i = 0, payload_1 = payload; _i < payload_1.length; _i++) {\r\n var item = payload_1[_i];\r\n buffer[_DYN_ENQUEUE /* @min:%2eenqueue */](item);\r\n }\r\n // setup timer\r\n _setRetryTime(linearFactor);\r\n _setupTimer();\r\n }\r\n /**\r\n * Calculates the time to wait before retrying in case of an error based on\r\n * http://en.wikipedia.org/wiki/Exponential_backoff\r\n */\r\n function _setRetryTime(linearFactor) {\r\n var SlotDelayInSeconds = 10;\r\n var delayInSeconds;\r\n if (_consecutiveErrors <= 1) {\r\n delayInSeconds = SlotDelayInSeconds;\r\n }\r\n else {\r\n var backOffSlot = (Math.pow(2, _consecutiveErrors) - 1) / 2;\r\n // tslint:disable-next-line:insecure-random\r\n var backOffDelay = Math.floor(Math.random() * backOffSlot * SlotDelayInSeconds) + 1;\r\n backOffDelay = linearFactor * backOffDelay;\r\n delayInSeconds = Math.max(Math.min(backOffDelay, 3600), SlotDelayInSeconds);\r\n }\r\n // TODO: Log the backoff time like the C# version does.\r\n var retryAfterTimeSpan = dateNow() + (delayInSeconds * 1000);\r\n // TODO: Log the retry at time like the C# version does.\r\n _retryAt = retryAfterTimeSpan;\r\n }\r\n /**\r\n * Sets up the timer which triggers actually sending the data.\r\n */\r\n function _setupTimer() {\r\n if (!_timeoutHandle && !_paused) {\r\n var retryInterval = _retryAt ? Math.max(0, _retryAt - dateNow()) : 0;\r\n var timerValue = Math.max(_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_MAX_BATCH_INTERVAL /* @min:%2emaxBatchInterval */](), retryInterval);\r\n _timeoutHandle = setTimeout(function () {\r\n _timeoutHandle = null;\r\n _self[_DYN_TRIGGER_SEND /* @min:%2etriggerSend */](true, null, 1 /* SendRequestReason.NormalSchedule */);\r\n }, timerValue);\r\n }\r\n }\r\n function _clearScheduledTimer() {\r\n clearTimeout(_timeoutHandle);\r\n _timeoutHandle = null;\r\n _retryAt = null;\r\n }\r\n /**\r\n * Checks if the SDK should resend the payload after receiving this status code from the backend.\r\n * @param statusCode\r\n */\r\n function _isRetriable(statusCode) {\r\n return statusCode === 401 // Unauthorized\r\n || statusCode === 403 // Forbidden\r\n || statusCode === 408 // Timeout\r\n || statusCode === 429 // Too many requests.\r\n || statusCode === 500 // Internal server error.\r\n || statusCode === 502 // Bad Gateway.\r\n || statusCode === 503 // Service unavailable.\r\n || statusCode === 504; // Gateway timeout.\r\n }\r\n function _formatErrorMessageXhr(xhr, message) {\r\n if (xhr) {\r\n return \"XMLHttpRequest,Status:\" + xhr.status + \",Response:\" + _getResponseText(xhr) || xhr.response || \"\";\r\n }\r\n return message;\r\n }\r\n /**\r\n * Send XDomainRequest\r\n * @param payload {string} - The data payload to be sent.\r\n * @param isAsync {boolean} - Indicates if the request should be sent asynchronously\r\n *\r\n * Note: XDomainRequest does not support sync requests. This 'isAsync' parameter is added\r\n * to maintain consistency with the xhrSender's contract\r\n * Note: XDomainRequest does not support custom headers and we are not able to get\r\n * appId from the backend for the correct correlation.\r\n */\r\n function _xdrSender(payload, isAsync) {\r\n var buffer = _self[_DYN__BUFFER /* @min:%2e_buffer */];\r\n var _window = getWindow();\r\n var xdr = new XDomainRequest();\r\n xdr.onload = function () { return _self._xdrOnLoad(xdr, payload); };\r\n xdr.onerror = function (event) { return _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, _formatErrorMessageXdr(xdr), event); };\r\n // XDomainRequest requires the same protocol as the hosting page.\r\n // If the protocol doesn't match, we can't send the telemetry :(.\r\n var hostingProtocol = _window && _window.location && _window.location.protocol || \"\";\r\n if (_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */]().lastIndexOf(hostingProtocol, 0) !== 0) {\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \". \" +\r\n \"Cannot send XDomain request. The endpoint URL protocol doesn't match the hosting page protocol.\");\r\n buffer[_DYN_CLEAR /* @min:%2eclear */]();\r\n return;\r\n }\r\n var endpointUrl = _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */]().replace(/^(https?:)/, \"\");\r\n xdr.open(\"POST\", endpointUrl);\r\n // compose an array of payloads\r\n var batch = buffer[_DYN_BATCH_PAYLOADS /* @min:%2ebatchPayloads */](payload);\r\n xdr.send(batch);\r\n buffer[_DYN_MARK_AS_SENT /* @min:%2emarkAsSent */](payload);\r\n }\r\n function _formatErrorMessageXdr(xdr, message) {\r\n if (xdr) {\r\n return \"XDomainRequest,Response:\" + _getResponseText(xdr) || \"\";\r\n }\r\n return message;\r\n }\r\n // Using function lookups for backward compatibility as the getNotifyMgr() did not exist until after v2.5.6\r\n function _getNotifyMgr() {\r\n var func = \"getNotifyMgr\";\r\n if (_self.core[func]) {\r\n return _self.core[func]();\r\n }\r\n // using _self.core['_notificationManager'] for backward compatibility\r\n return _self.core[\"_notificationManager\"];\r\n }\r\n function _notifySendRequest(sendRequest, isAsync) {\r\n var manager = _getNotifyMgr();\r\n if (manager && manager[_DYN_EVENTS_SEND_REQUEST /* @min:%2eeventsSendRequest */]) {\r\n try {\r\n manager[_DYN_EVENTS_SEND_REQUEST /* @min:%2eeventsSendRequest */](sendRequest, isAsync);\r\n }\r\n catch (e) {\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 74 /* _eInternalMessageId.NotificationException */, \"send request notification failed: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n }\r\n /**\r\n * Validate UUID Format\r\n * Specs taken from https://tools.ietf.org/html/rfc4122 and breeze repo\r\n */\r\n function _validateInstrumentationKey(config) {\r\n var disableIKeyValidationFlag = isNullOrUndefined(config[_DYN_DISABLE_INSTRUMENTAT7 /* @min:%2edisableInstrumentationKeyValidation */]) ? false : config[_DYN_DISABLE_INSTRUMENTAT7 /* @min:%2edisableInstrumentationKeyValidation */];\r\n if (disableIKeyValidationFlag) {\r\n return true;\r\n }\r\n var UUID_Regex = \"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$\";\r\n var regexp = new RegExp(UUID_Regex);\r\n return regexp.test(config[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */]);\r\n }\r\n function _initDefaults() {\r\n _self[_DYN__SENDER /* @min:%2e_sender */] = null;\r\n _self[_DYN__BUFFER /* @min:%2e_buffer */] = null;\r\n _self._appId = null;\r\n _self._sample = null;\r\n _headers = {};\r\n _offlineListener = null;\r\n _consecutiveErrors = 0;\r\n _retryAt = null;\r\n _lastSend = null;\r\n _paused = false;\r\n _timeoutHandle = null;\r\n _serializer = null;\r\n _stamp_specific_redirects = 0;\r\n _syncFetchPayload = 0;\r\n _fallbackSender = null;\r\n _syncUnloadSender = null;\r\n _evtNamespace = null;\r\n }\r\n });\r\n return _this;\r\n }\r\n Sender.constructEnvelope = function (orig, iKey, logger, convertUndefined) {\r\n var envelope;\r\n if (iKey !== orig.iKey && !isNullOrUndefined(iKey)) {\r\n envelope = __assign(__assign({}, orig), { iKey: iKey });\r\n }\r\n else {\r\n envelope = orig;\r\n }\r\n var creator = EnvelopeTypeCreator[envelope.baseType] || EventEnvelopeCreator;\r\n return creator(logger, envelope, convertUndefined);\r\n };\r\n// Removed Stub for Sender.prototype.pause.\r\n// Removed Stub for Sender.prototype.resume.\r\n// Removed Stub for Sender.prototype.flush.\r\n// Removed Stub for Sender.prototype.onunloadFlush.\r\n// Removed Stub for Sender.prototype.initialize.\r\n// Removed Stub for Sender.prototype.processTelemetry.\r\n// Removed Stub for Sender.prototype._xhrReadyStateChange.\r\n// Removed Stub for Sender.prototype.triggerSend.\r\n// Removed Stub for Sender.prototype._onError.\r\n// Removed Stub for Sender.prototype._onPartialSuccess.\r\n// Removed Stub for Sender.prototype._onSuccess.\r\n// Removed Stub for Sender.prototype._xdrOnLoad.\r\n// Removed Stub for Sender.prototype.addHeader.\r\n return Sender;\r\n}(BaseTelemetryPlugin));\r\nexport { Sender };\r\n","/*\n * Application Insights JavaScript SDK - Channel, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { _throwInternal, getJSON, isArray, isFunction, isObject, objForEachKey } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_LENGTH, _DYN_PUSH, _DYN_STRINGIFY, _DYN_TO_STRING } from \"./__DynamicConstants\";\r\nvar Serializer = /** @class */ (function () {\r\n function Serializer(logger) {\r\n dynamicProto(Serializer, this, function (_self) {\r\n /**\r\n * Serializes the current object to a JSON string.\r\n */\r\n _self.serialize = function (input) {\r\n var output = _serializeObject(input, \"root\");\r\n try {\r\n return getJSON()[_DYN_STRINGIFY /* @min:%2estringify */](output);\r\n }\r\n catch (e) {\r\n // if serialization fails return an empty string\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 48 /* _eInternalMessageId.CannotSerializeObject */, (e && isFunction(e[_DYN_TO_STRING /* @min:%2etoString */])) ? e[_DYN_TO_STRING /* @min:%2etoString */]() : \"Error serializing object\", null, true);\r\n }\r\n };\r\n function _serializeObject(source, name) {\r\n var circularReferenceCheck = \"__aiCircularRefCheck\";\r\n var output = {};\r\n if (!source) {\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 48 /* _eInternalMessageId.CannotSerializeObject */, \"cannot serialize object because it is null or undefined\", { name: name }, true);\r\n return output;\r\n }\r\n if (source[circularReferenceCheck]) {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 50 /* _eInternalMessageId.CircularReferenceDetected */, \"Circular reference detected while serializing object\", { name: name }, true);\r\n return output;\r\n }\r\n if (!source.aiDataContract) {\r\n // special case for measurements/properties/tags\r\n if (name === \"measurements\") {\r\n output = _serializeStringMap(source, \"number\", name);\r\n }\r\n else if (name === \"properties\") {\r\n output = _serializeStringMap(source, \"string\", name);\r\n }\r\n else if (name === \"tags\") {\r\n output = _serializeStringMap(source, \"string\", name);\r\n }\r\n else if (isArray(source)) {\r\n output = _serializeArray(source, name);\r\n }\r\n else {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 49 /* _eInternalMessageId.CannotSerializeObjectNonSerializable */, \"Attempting to serialize an object which does not implement ISerializable\", { name: name }, true);\r\n try {\r\n // verify that the object can be stringified\r\n getJSON()[_DYN_STRINGIFY /* @min:%2estringify */](source);\r\n output = source;\r\n }\r\n catch (e) {\r\n // if serialization fails return an empty string\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 48 /* _eInternalMessageId.CannotSerializeObject */, (e && isFunction(e[_DYN_TO_STRING /* @min:%2etoString */])) ? e[_DYN_TO_STRING /* @min:%2etoString */]() : \"Error serializing object\", null, true);\r\n }\r\n }\r\n return output;\r\n }\r\n source[circularReferenceCheck] = true;\r\n objForEachKey(source.aiDataContract, function (field, contract) {\r\n var isRequired = (isFunction(contract)) ? (contract() & 1 /* FieldType.Required */) : (contract & 1 /* FieldType.Required */);\r\n var isHidden = (isFunction(contract)) ? (contract() & 4 /* FieldType.Hidden */) : (contract & 4 /* FieldType.Hidden */);\r\n var isArray = contract & 2 /* FieldType.Array */;\r\n var isPresent = source[field] !== undefined;\r\n var isObj = isObject(source[field]) && source[field] !== null;\r\n if (isRequired && !isPresent && !isArray) {\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 24 /* _eInternalMessageId.MissingRequiredFieldSpecification */, \"Missing required field specification. The field is required but not present on source\", { field: field, name: name });\r\n // If not in debug mode, continue and hope the error is permissible\r\n }\r\n else if (!isHidden) { // Don't serialize hidden fields\r\n var value = void 0;\r\n if (isObj) {\r\n if (isArray) {\r\n // special case; recurse on each object in the source array\r\n value = _serializeArray(source[field], field);\r\n }\r\n else {\r\n // recurse on the source object in this field\r\n value = _serializeObject(source[field], field);\r\n }\r\n }\r\n else {\r\n // assign the source field to the output even if undefined or required\r\n value = source[field];\r\n }\r\n // only emit this field if the value is defined\r\n if (value !== undefined) {\r\n output[field] = value;\r\n }\r\n }\r\n });\r\n delete source[circularReferenceCheck];\r\n return output;\r\n }\r\n function _serializeArray(sources, name) {\r\n var output;\r\n if (!!sources) {\r\n if (!isArray(sources)) {\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 54 /* _eInternalMessageId.ItemNotInArray */, \"This field was specified as an array in the contract but the item is not an array.\\r\\n\", { name: name }, true);\r\n }\r\n else {\r\n output = [];\r\n for (var i = 0; i < sources[_DYN_LENGTH /* @min:%2elength */]; i++) {\r\n var source = sources[i];\r\n var item = _serializeObject(source, name + \"[\" + i + \"]\");\r\n output[_DYN_PUSH /* @min:%2epush */](item);\r\n }\r\n }\r\n }\r\n return output;\r\n }\r\n function _serializeStringMap(map, expectedType, name) {\r\n var output;\r\n if (map) {\r\n output = {};\r\n objForEachKey(map, function (field, value) {\r\n if (expectedType === \"string\") {\r\n if (value === undefined) {\r\n output[field] = \"undefined\";\r\n }\r\n else if (value === null) {\r\n output[field] = \"null\";\r\n }\r\n else if (!value[_DYN_TO_STRING /* @min:%2etoString */]) {\r\n output[field] = \"invalid field: toString() is not defined.\";\r\n }\r\n else {\r\n output[field] = value[_DYN_TO_STRING /* @min:%2etoString */]();\r\n }\r\n }\r\n else if (expectedType === \"number\") {\r\n if (value === undefined) {\r\n output[field] = \"undefined\";\r\n }\r\n else if (value === null) {\r\n output[field] = \"null\";\r\n }\r\n else {\r\n var num = parseFloat(value);\r\n if (isNaN(num)) {\r\n output[field] = \"NaN\";\r\n }\r\n else {\r\n output[field] = num;\r\n }\r\n }\r\n }\r\n else {\r\n output[field] = \"invalid field: \" + name + \" is of unknown type.\";\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, output[field], null, true);\r\n }\r\n });\r\n }\r\n return output;\r\n }\r\n });\r\n }\r\n// Removed Stub for Serializer.prototype.serialize.\r\n // This is a workaround for an IE8 bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n // this will be removed when ES3 support is dropped.\n Serializer.__ieDyn=1;\n\n return Serializer;\r\n}());\r\nexport { Serializer };\r\n","/*\n * Application Insights JavaScript SDK - Channel, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { _DYN_LENGTH } from \"../../__DynamicConstants\";\r\n// (Magic number) DJB algorithm can't work on shorter strings (results in poor distribution\r\nvar MIN_INPUT_LENGTH = 8;\r\nvar HashCodeScoreGenerator = /** @class */ (function () {\r\n function HashCodeScoreGenerator() {\r\n }\r\n HashCodeScoreGenerator.prototype.getHashCodeScore = function (key) {\r\n var score = this.getHashCode(key) / HashCodeScoreGenerator.INT_MAX_VALUE;\r\n return score * 100;\r\n };\r\n HashCodeScoreGenerator.prototype.getHashCode = function (input) {\r\n if (input === \"\") {\r\n return 0;\r\n }\r\n while (input[_DYN_LENGTH /* @min:%2elength */] < MIN_INPUT_LENGTH) {\r\n input = input.concat(input);\r\n }\r\n // 5381 is a magic number: http://stackoverflow.com/questions/10696223/reason-for-5381-number-in-djb-hash-function\r\n var hash = 5381;\r\n for (var i = 0; i < input[_DYN_LENGTH /* @min:%2elength */]; ++i) {\r\n hash = ((hash << 5) + hash) + input.charCodeAt(i);\r\n // 'hash' is of number type which means 53 bit integer (http://www.ecma-international.org/ecma-262/6.0/#sec-ecmascript-language-types-number-type)\r\n // 'hash & hash' will keep it 32 bit integer - just to make it clearer what the result is.\r\n hash = hash & hash;\r\n }\r\n return Math.abs(hash);\r\n };\r\n // We're using 32 bit math, hence max value is (2^31 - 1)\r\n HashCodeScoreGenerator.INT_MAX_VALUE = 2147483647;\r\n return HashCodeScoreGenerator;\r\n}());\r\nexport { HashCodeScoreGenerator };\r\n","/*\n * Application Insights JavaScript SDK - Channel, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { ContextTagKeys } from \"@microsoft/applicationinsights-common\";\r\nimport { _DYN_GET_HASH_CODE_SCORE, _DYN_GET_SAMPLING_SCORE, _DYN_TAGS, _DYN_TRACE_ID } from \"../../__DynamicConstants\";\r\nimport { HashCodeScoreGenerator } from \"./HashCodeScoreGenerator\";\r\nvar SamplingScoreGenerator = /** @class */ (function () {\r\n function SamplingScoreGenerator() {\r\n var _self = this;\r\n var hashCodeGenerator = new HashCodeScoreGenerator();\r\n var keys = new ContextTagKeys();\r\n _self[_DYN_GET_SAMPLING_SCORE /* @min:%2egetSamplingScore */] = function (item) {\r\n var score = 0;\r\n if (item[_DYN_TAGS /* @min:%2etags */] && item[_DYN_TAGS /* @min:%2etags */][keys.userId]) { // search in tags first, then ext\r\n score = hashCodeGenerator.getHashCodeScore(item[_DYN_TAGS /* @min:%2etags */][keys.userId]);\r\n }\r\n else if (item.ext && item.ext.user && item.ext.user.id) {\r\n score = hashCodeGenerator[_DYN_GET_HASH_CODE_SCORE /* @min:%2egetHashCodeScore */](item.ext.user.id);\r\n }\r\n else if (item[_DYN_TAGS /* @min:%2etags */] && item[_DYN_TAGS /* @min:%2etags */][keys.operationId]) { // search in tags first, then ext\r\n score = hashCodeGenerator.getHashCodeScore(item[_DYN_TAGS /* @min:%2etags */][keys.operationId]);\r\n }\r\n else if (item.ext && item.ext.telemetryTrace && item.ext.telemetryTrace[_DYN_TRACE_ID /* @min:%2etraceID */]) {\r\n score = hashCodeGenerator.getHashCodeScore(item.ext.telemetryTrace[_DYN_TRACE_ID /* @min:%2etraceID */]);\r\n }\r\n else {\r\n // tslint:disable-next-line:insecure-random\r\n score = (Math.random() * 100);\r\n }\r\n return score;\r\n };\r\n }\r\n return SamplingScoreGenerator;\r\n}());\r\nexport { SamplingScoreGenerator };\r\n","/*\n * Application Insights JavaScript SDK - Channel, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { Metric } from \"@microsoft/applicationinsights-common\";\r\nimport { safeGetLogger } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_DATA_TYPE, _DYN_GET_SAMPLING_SCORE, _DYN_SAMPLE_RATE } from \"../__DynamicConstants\";\r\nimport { SamplingScoreGenerator } from \"./SamplingScoreGenerators/SamplingScoreGenerator\";\r\nvar Sample = /** @class */ (function () {\r\n function Sample(sampleRate, logger) {\r\n // We're using 32 bit math, hence max value is (2^31 - 1)\r\n this.INT_MAX_VALUE = 2147483647;\r\n var _logger = logger || safeGetLogger(null);\r\n if (sampleRate > 100 || sampleRate < 0) {\r\n _logger.throwInternal(2 /* eLoggingSeverity.WARNING */, 58 /* _eInternalMessageId.SampleRateOutOfRange */, \"Sampling rate is out of range (0..100). Sampling will be disabled, you may be sending too much data which may affect your AI service level.\", { samplingRate: sampleRate }, true);\r\n sampleRate = 100;\r\n }\r\n this[_DYN_SAMPLE_RATE /* @min:%2esampleRate */] = sampleRate;\r\n this.samplingScoreGenerator = new SamplingScoreGenerator();\r\n }\r\n /**\r\n * Determines if an envelope is sampled in (i.e. will be sent) or not (i.e. will be dropped).\r\n */\r\n Sample.prototype.isSampledIn = function (envelope) {\r\n var samplingPercentage = this[_DYN_SAMPLE_RATE /* @min:%2esampleRate */]; // 0 - 100\r\n var isSampledIn = false;\r\n if (samplingPercentage === null || samplingPercentage === undefined || samplingPercentage >= 100) {\r\n return true;\r\n }\r\n else if (envelope.baseType === Metric[_DYN_DATA_TYPE /* @min:%2edataType */]) {\r\n // exclude MetricData telemetry from sampling\r\n return true;\r\n }\r\n isSampledIn = this.samplingScoreGenerator[_DYN_GET_SAMPLING_SCORE /* @min:%2egetSamplingScore */](envelope) < samplingPercentage;\r\n return isSampledIn;\r\n };\r\n return Sample;\r\n}());\r\nexport { Sample };\r\n","/*\n * Application Insights JavaScript SDK - Core, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n// \r\nimport { _DYN_CONFIG, _DYN_CREATE_NEW, _DYN_FLUSH, _DYN_IDENTIFIER, _DYN_LENGTH, _DYN_ON_COMPLETE, _DYN_PROCESS_NEXT, _DYN_PUSH } from \"../__DynamicConstants\";\r\nimport { arrForEach, isArray, objFreeze, throwError } from \"./HelperFuncs\";\r\nimport { STR_PRIORITY } from \"./InternalConstants\";\r\nimport { createProcessTelemetryContext, createTelemetryProxyChain } from \"./ProcessTelemetryContext\";\r\nimport { initializePlugins } from \"./TelemetryHelpers\";\r\nexport var ChannelControllerPriority = 500;\r\nvar ChannelValidationMessage = \"Channel has invalid priority - \";\r\nfunction _addChannelQueue(channelQueue, queue, core) {\r\n if (queue && isArray(queue) && queue[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n queue = queue.sort(function (a, b) {\r\n return a[STR_PRIORITY /* @min:%2epriority */] - b[STR_PRIORITY /* @min:%2epriority */];\r\n });\r\n arrForEach(queue, function (queueItem) {\r\n if (queueItem[STR_PRIORITY /* @min:%2epriority */] < ChannelControllerPriority) {\r\n throwError(ChannelValidationMessage + queueItem[_DYN_IDENTIFIER /* @min:%2eidentifier */]);\r\n }\r\n });\r\n channelQueue[_DYN_PUSH /* @min:%2epush */]({\r\n queue: objFreeze(queue),\r\n chain: createTelemetryProxyChain(queue, core[_DYN_CONFIG /* @min:%2econfig */], core)\r\n });\r\n }\r\n}\r\nexport function createChannelControllerPlugin(channelQueue, core) {\r\n function _getTelCtx() {\r\n return createProcessTelemetryContext(null, core[_DYN_CONFIG /* @min:%2econfig */], core, null);\r\n }\r\n function _processChannelQueue(theChannels, itemCtx, processFn, onComplete) {\r\n var waiting = theChannels ? (theChannels[_DYN_LENGTH /* @min:%2elength */] + 1) : 1;\r\n function _runChainOnComplete() {\r\n waiting--;\r\n if (waiting === 0) {\r\n onComplete && onComplete();\r\n onComplete = null;\r\n }\r\n }\r\n if (waiting > 0) {\r\n arrForEach(theChannels, function (channels) {\r\n // pass on to first item in queue\r\n if (channels && channels.queue[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n var channelChain = channels.chain;\r\n var chainCtx = itemCtx[_DYN_CREATE_NEW /* @min:%2ecreateNew */](channelChain);\r\n chainCtx[_DYN_ON_COMPLETE /* @min:%2eonComplete */](_runChainOnComplete);\r\n // Cause this chain to start processing\r\n processFn(chainCtx);\r\n }\r\n else {\r\n waiting--;\r\n }\r\n });\r\n }\r\n _runChainOnComplete();\r\n }\r\n function _doUpdate(updateCtx, updateState) {\r\n var theUpdateState = updateState || {\r\n reason: 0 /* TelemetryUpdateReason.Unknown */\r\n };\r\n _processChannelQueue(channelQueue, updateCtx, function (chainCtx) {\r\n chainCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](theUpdateState);\r\n }, function () {\r\n updateCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](theUpdateState);\r\n });\r\n return true;\r\n }\r\n function _doTeardown(unloadCtx, unloadState) {\r\n var theUnloadState = unloadState || {\r\n reason: 0 /* TelemetryUnloadReason.ManualTeardown */,\r\n isAsync: false\r\n };\r\n _processChannelQueue(channelQueue, unloadCtx, function (chainCtx) {\r\n chainCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](theUnloadState);\r\n }, function () {\r\n unloadCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](theUnloadState);\r\n isInitialized = false;\r\n });\r\n return true;\r\n }\r\n function _getChannel(pluginIdentifier) {\r\n var thePlugin = null;\r\n if (channelQueue && channelQueue[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n arrForEach(channelQueue, function (channels) {\r\n // pass on to first item in queue\r\n if (channels && channels.queue[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n arrForEach(channels.queue, function (ext) {\r\n if (ext[_DYN_IDENTIFIER /* @min:%2eidentifier */] === pluginIdentifier) {\r\n thePlugin = ext;\r\n // Cause arrForEach to stop iterating\r\n return -1;\r\n }\r\n });\r\n if (thePlugin) {\r\n // Cause arrForEach to stop iterating\r\n return -1;\r\n }\r\n }\r\n });\r\n }\r\n return thePlugin;\r\n }\r\n var isInitialized = false;\r\n var channelController = {\r\n identifier: \"ChannelControllerPlugin\",\r\n priority: ChannelControllerPriority,\r\n initialize: function (config, core, extensions, pluginChain) {\r\n isInitialized = true;\r\n arrForEach(channelQueue, function (channels) {\r\n if (channels && channels.queue[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n initializePlugins(createProcessTelemetryContext(channels.chain, config, core), extensions);\r\n }\r\n });\r\n },\r\n isInitialized: function () {\r\n return isInitialized;\r\n },\r\n processTelemetry: function (item, itemCtx) {\r\n _processChannelQueue(channelQueue, itemCtx || _getTelCtx(), function (chainCtx) {\r\n chainCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](item);\r\n }, function () {\r\n itemCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](item);\r\n });\r\n },\r\n update: _doUpdate,\r\n pause: function () {\r\n _processChannelQueue(channelQueue, _getTelCtx(), function (chainCtx) {\r\n chainCtx.iterate(function (plugin) {\r\n plugin.pause && plugin.pause();\r\n });\r\n }, null);\r\n },\r\n resume: function () {\r\n _processChannelQueue(channelQueue, _getTelCtx(), function (chainCtx) {\r\n chainCtx.iterate(function (plugin) {\r\n plugin.resume && plugin.resume();\r\n });\r\n }, null);\r\n },\r\n teardown: _doTeardown,\r\n getChannel: _getChannel,\r\n flush: function (isAsync, callBack, sendReason, cbTimeout) {\r\n // Setting waiting to one so that we don't call the callBack until we finish iterating\r\n var waiting = 1;\r\n var doneIterating = false;\r\n var cbTimer = null;\r\n cbTimeout = cbTimeout || 5000;\r\n function doCallback() {\r\n waiting--;\r\n if (doneIterating && waiting === 0) {\r\n if (cbTimer) {\r\n clearTimeout(cbTimer);\r\n cbTimer = null;\r\n }\r\n callBack && callBack(doneIterating);\r\n callBack = null;\r\n }\r\n }\r\n _processChannelQueue(channelQueue, _getTelCtx(), function (chainCtx) {\r\n chainCtx.iterate(function (plugin) {\r\n if (plugin[_DYN_FLUSH /* @min:%2eflush */]) {\r\n waiting++;\r\n var handled_1 = false;\r\n // Not all channels will call this callback for every scenario\r\n if (!plugin[_DYN_FLUSH /* @min:%2eflush */](isAsync, function () {\r\n handled_1 = true;\r\n doCallback();\r\n }, sendReason)) {\r\n if (!handled_1) {\r\n // If any channel doesn't return true and it didn't call the callback, then we should assume that the callback\r\n // will never be called, so use a timeout to allow the channel(s) some time to \"finish\" before triggering any\r\n // followup function (such as unloading)\r\n if (isAsync && cbTimer == null) {\r\n cbTimer = setTimeout(function () {\r\n cbTimer = null;\r\n doCallback();\r\n }, cbTimeout);\r\n }\r\n else {\r\n doCallback();\r\n }\r\n }\r\n }\r\n }\r\n });\r\n }, function () {\r\n doneIterating = true;\r\n doCallback();\r\n });\r\n return true;\r\n },\r\n _setQueue: function (queue) {\r\n channelQueue = queue;\r\n }\r\n };\r\n return channelController;\r\n}\r\nexport function createChannelQueues(channels, extensions, core) {\r\n var channelQueue = [];\r\n if (channels) {\r\n // Add and sort the configuration channel queues\r\n arrForEach(channels, function (queue) { return _addChannelQueue(channelQueue, queue, core); });\r\n }\r\n if (extensions) {\r\n // Create a new channel queue for any extensions with a priority > the ChannelControllerPriority\r\n var extensionQueue_1 = [];\r\n arrForEach(extensions, function (plugin) {\r\n if (plugin[STR_PRIORITY /* @min:%2epriority */] > ChannelControllerPriority) {\r\n extensionQueue_1[_DYN_PUSH /* @min:%2epush */](plugin);\r\n }\r\n });\r\n _addChannelQueue(channelQueue, extensionQueue_1, core);\r\n }\r\n return channelQueue;\r\n}\r\n","/*\n * Application Insights JavaScript SDK - Common, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { createEnumStyle } from \"@microsoft/applicationinsights-core-js\";\r\n/**\r\n * Defines the level of severity for the event.\r\n */\r\nexport var SeverityLevel = createEnumStyle({\r\n Verbose: 0 /* eSeverityLevel.Verbose */,\r\n Information: 1 /* eSeverityLevel.Information */,\r\n Warning: 2 /* eSeverityLevel.Warning */,\r\n Error: 3 /* eSeverityLevel.Error */,\r\n Critical: 4 /* eSeverityLevel.Critical */\r\n});\r\n","/*\n * Application Insights JavaScript SDK - Core, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n// \r\n// \r\nimport { __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { _DYN_APPLY, _DYN_DIAG_LOG, _DYN_LENGTH, _DYN_PROCESS_NEXT, _DYN_PUSH, _DYN_SPLICE, _DYN__DO_TEARDOWN } from \"../__DynamicConstants\";\r\nimport { BaseTelemetryPlugin } from \"./BaseTelemetryPlugin\";\r\nimport { _throwInternal } from \"./DiagnosticLogger\";\r\nimport { dumpObj } from \"./EnvUtils\";\r\nimport { arrForEach, getExceptionName } from \"./HelperFuncs\";\r\nimport { STR_PROCESS_TELEMETRY } from \"./InternalConstants\";\r\nvar TelemetryInitializerPlugin = /** @class */ (function (_super) {\r\n __extends(TelemetryInitializerPlugin, _super);\r\n function TelemetryInitializerPlugin() {\r\n var _this = _super.call(this) || this;\r\n _this.identifier = \"TelemetryInitializerPlugin\";\r\n _this.priority = 199;\r\n // NOTE!: DON'T set default values here, instead set them in the _initDefaults() function as it is also called during teardown()\r\n var _id;\r\n var _initializers;\r\n _initDefaults();\r\n dynamicProto(TelemetryInitializerPlugin, _this, function (_self, _base) {\r\n _self.addTelemetryInitializer = function (telemetryInitializer) {\r\n var theInitializer = {\r\n id: _id++,\r\n fn: telemetryInitializer\r\n };\r\n _initializers[_DYN_PUSH /* @min:%2epush */](theInitializer);\r\n var handler = {\r\n remove: function () {\r\n arrForEach(_initializers, function (initializer, idx) {\r\n if (initializer.id === theInitializer.id) {\r\n _initializers[_DYN_SPLICE /* @min:%2esplice */](idx, 1);\r\n return -1;\r\n }\r\n });\r\n }\r\n };\r\n return handler;\r\n };\r\n _self[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */] = function (item, itemCtx) {\r\n var doNotSendItem = false;\r\n var telemetryInitializersCount = _initializers[_DYN_LENGTH /* @min:%2elength */];\r\n for (var i = 0; i < telemetryInitializersCount; ++i) {\r\n var telemetryInitializer = _initializers[i];\r\n if (telemetryInitializer) {\r\n try {\r\n if (telemetryInitializer.fn[_DYN_APPLY /* @min:%2eapply */](null, [item]) === false) {\r\n doNotSendItem = true;\r\n break;\r\n }\r\n }\r\n catch (e) {\r\n // log error but dont stop executing rest of the telemetry initializers\r\n // doNotSendItem = true;\r\n _throwInternal(itemCtx[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 64 /* _eInternalMessageId.TelemetryInitializerFailed */, \"One of telemetry initializers failed, telemetry item will not be sent: \" + getExceptionName(e), { exception: dumpObj(e) }, true);\r\n }\r\n }\r\n }\r\n if (!doNotSendItem) {\r\n _self[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](item, itemCtx);\r\n }\r\n };\r\n _self[_DYN__DO_TEARDOWN /* @min:%2e_doTeardown */] = function () {\r\n _initDefaults();\r\n };\r\n });\r\n function _initDefaults() {\r\n _id = 0;\r\n _initializers = [];\r\n }\r\n return _this;\r\n }\r\n// Removed Stub for TelemetryInitializerPlugin.prototype.addTelemetryInitializer.\r\n// Removed Stub for TelemetryInitializerPlugin.prototype.processTelemetry.\r\n // This is a workaround for an IE8 bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n // this will be removed when ES3 support is dropped.\n TelemetryInitializerPlugin.__ieDyn=1;\n\n return TelemetryInitializerPlugin;\r\n}(BaseTelemetryPlugin));\r\nexport { TelemetryInitializerPlugin };\r\n","/*\n * Application Insights JavaScript SDK - Core, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n\"use strict\";\r\nimport { __spreadArrayFn as __spreadArray } from \"@microsoft/applicationinsights-shims\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { objCreateFn } from \"@microsoft/applicationinsights-shims\";\r\nimport { _DYN_ADD_NOTIFICATION_LIS1, _DYN_CONFIG, _DYN_FLUSH, _DYN_GET_NOTIFY_MGR, _DYN_GET_PLUGIN, _DYN_GET_PROCESS_TEL_CONT0, _DYN_IDENTIFIER, _DYN_INITIALIZE, _DYN_INSTRUMENTATION_KEY, _DYN_IS_ASYNC, _DYN_IS_INITIALIZED, _DYN_LENGTH, _DYN_LOGGER, _DYN_MESSAGE, _DYN_MESSAGE_ID, _DYN_NAME, _DYN_ON_COMPLETE, _DYN_PROCESS_NEXT, _DYN_PUSH, _DYN_REMOVE_NOTIFICATION_2, _DYN_SET_ENABLED, _DYN_SPLICE, _DYN_STOP_POLLING_INTERNA3, _DYN_TEARDOWN, _DYN_TIME, _DYN__EXTENSIONS } from \"../__DynamicConstants\";\r\nimport { ChannelControllerPriority, createChannelControllerPlugin, createChannelQueues } from \"./ChannelController\";\r\nimport { createCookieMgr } from \"./CookieMgr\";\r\nimport { createUniqueNamespace } from \"./DataCacheHelper\";\r\nimport { getDebugListener } from \"./DbgExtensionUtils\";\r\nimport { DiagnosticLogger, _InternalLogMessage, _throwInternal, _warnToConsole } from \"./DiagnosticLogger\";\r\nimport { arrForEach, arrIndexOf, getCfgValue, getSetValue, isFunction, isNullOrUndefined, objExtend, objFreeze, proxyFunctionAs, proxyFunctions, throwError, toISOString } from \"./HelperFuncs\";\r\nimport { STR_CHANNELS, STR_CORE, STR_CREATE_PERF_MGR, STR_DISABLED, STR_EVENTS_DISCARDED, STR_EVENTS_SEND_REQUEST, STR_EVENTS_SENT, STR_EXTENSIONS, STR_EXTENSION_CONFIG, STR_GET_PERF_MGR, STR_PRIORITY } from \"./InternalConstants\";\r\nimport { PerfManager, getGblPerfMgr } from \"./PerfManager\";\r\nimport { createProcessTelemetryContext, createProcessTelemetryUnloadContext, createProcessTelemetryUpdateContext, createTelemetryProxyChain } from \"./ProcessTelemetryContext\";\r\nimport { _getPluginState, createDistributedTraceContext, initializePlugins, sortPlugins } from \"./TelemetryHelpers\";\r\nimport { TelemetryInitializerPlugin } from \"./TelemetryInitializerPlugin\";\r\nimport { createUnloadHandlerContainer } from \"./UnloadHandlerContainer\";\r\nvar strValidationError = \"Plugins must provide initialize method\";\r\nvar strNotificationManager = \"_notificationManager\";\r\nvar strSdkUnloadingError = \"SDK is still unloading...\";\r\nvar strSdkNotInitialized = \"SDK is not initialized\";\r\n// const strPluginUnloadFailed = \"Failed to unload plugin\";\r\nvar defaultInitConfig = {\r\n // Have the Diagnostic Logger default to log critical errors to the console\r\n loggingLevelConsole: 1 /* eLoggingSeverity.CRITICAL */\r\n};\r\n/**\r\n * Helper to create the default performance manager\r\n * @param core\r\n * @param notificationMgr\r\n */\r\nfunction _createPerfManager(core, notificationMgr) {\r\n return new PerfManager(notificationMgr);\r\n}\r\nfunction _validateExtensions(logger, channelPriority, allExtensions) {\r\n var _a;\r\n // Concat all available extensions\r\n var coreExtensions = [];\r\n // Check if any two extensions have the same priority, then warn to console\r\n // And extract the local extensions from the\r\n var extPriorities = {};\r\n // Extension validation\r\n arrForEach(allExtensions, function (ext) {\r\n // Check for ext.initialize\r\n if (isNullOrUndefined(ext) || isNullOrUndefined(ext[_DYN_INITIALIZE /* @min:%2einitialize */])) {\r\n throwError(strValidationError);\r\n }\r\n var extPriority = ext[STR_PRIORITY /* @min:%2epriority */];\r\n var identifier = ext[_DYN_IDENTIFIER /* @min:%2eidentifier */];\r\n if (ext && extPriority) {\r\n if (!isNullOrUndefined(extPriorities[extPriority])) {\r\n _warnToConsole(logger, \"Two extensions have same priority #\" + extPriority + \" - \" + extPriorities[extPriority] + \", \" + identifier);\r\n }\r\n else {\r\n // set a value\r\n extPriorities[extPriority] = identifier;\r\n }\r\n }\r\n // Split extensions to core and channelController\r\n if (!extPriority || extPriority < channelPriority) {\r\n // Add to core extension that will be managed by BaseCore\r\n coreExtensions[_DYN_PUSH /* @min:%2epush */](ext);\r\n }\r\n });\r\n return _a = {\r\n all: allExtensions\r\n },\r\n _a[STR_CORE /* @min:core */] = coreExtensions,\r\n _a;\r\n}\r\nfunction _isPluginPresent(thePlugin, plugins) {\r\n var exists = false;\r\n arrForEach(plugins, function (plugin) {\r\n if (plugin === thePlugin) {\r\n exists = true;\r\n return -1;\r\n }\r\n });\r\n return exists;\r\n}\r\nfunction _createDummyNotificationManager() {\r\n var _a;\r\n return objCreateFn((_a = {},\r\n _a[_DYN_ADD_NOTIFICATION_LIS1 /* @min:addNotificationListener */] = function (listener) { },\r\n _a[_DYN_REMOVE_NOTIFICATION_2 /* @min:removeNotificationListener */] = function (listener) { },\r\n _a[STR_EVENTS_SENT /* @min:eventsSent */] = function (events) { },\r\n _a[STR_EVENTS_DISCARDED /* @min:eventsDiscarded */] = function (events, reason) { },\r\n _a[STR_EVENTS_SEND_REQUEST /* @min:eventsSendRequest */] = function (sendReason, isAsync) { },\r\n _a));\r\n}\r\nvar BaseCore = /** @class */ (function () {\r\n function BaseCore() {\r\n // NOTE!: DON'T set default values here, instead set them in the _initDefaults() function as it is also called during teardown()\r\n var _config;\r\n var _isInitialized;\r\n var _eventQueue;\r\n var _notificationManager;\r\n var _perfManager;\r\n var _cfgPerfManager;\r\n var _cookieManager;\r\n var _pluginChain;\r\n var _configExtensions;\r\n var _coreExtensions;\r\n var _channelControl;\r\n var _channelConfig;\r\n var _channelQueue;\r\n var _isUnloading;\r\n var _telemetryInitializerPlugin;\r\n var _internalLogsEventName;\r\n var _evtNamespace;\r\n var _unloadHandlers;\r\n var _debugListener;\r\n var _traceCtx;\r\n /**\r\n * Internal log poller\r\n */\r\n var _internalLogPoller = 0;\r\n dynamicProto(BaseCore, this, function (_self) {\r\n // Set the default values (also called during teardown)\r\n _initDefaults();\r\n _self[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */] = function () { return _isInitialized; };\r\n // Creating the self.initialize = ()\r\n _self[_DYN_INITIALIZE /* @min:%2einitialize */] = function (config, extensions, logger, notificationManager) {\r\n if (_isUnloading) {\r\n throwError(strSdkUnloadingError);\r\n }\r\n // Make sure core is only initialized once\r\n if (_self[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */]()) {\r\n throwError(\"Core should not be initialized more than once\");\r\n }\r\n _config = config || {};\r\n _self[_DYN_CONFIG /* @min:%2econfig */] = _config;\r\n if (isNullOrUndefined(config[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */])) {\r\n throwError(\"Please provide instrumentation key\");\r\n }\r\n _notificationManager = notificationManager;\r\n // For backward compatibility only\r\n _self[strNotificationManager] = notificationManager;\r\n _initDebugListener();\r\n _initPerfManager();\r\n // add notification to the extensions in the config so other plugins can access it\r\n _initExtConfig();\r\n if (logger) {\r\n _self[_DYN_LOGGER /* @min:%2elogger */] = logger;\r\n }\r\n var cfgExtensions = getSetValue(_config, STR_EXTENSIONS, []);\r\n // Extension validation\r\n _configExtensions = [];\r\n _configExtensions[_DYN_PUSH /* @min:%2epush */].apply(_configExtensions, __spreadArray(__spreadArray([], extensions, false), cfgExtensions, false));\r\n _channelConfig = getSetValue(_config, STR_CHANNELS, []);\r\n _initPluginChain(null);\r\n if (!_channelQueue || _channelQueue[_DYN_LENGTH /* @min:%2elength */] === 0) {\r\n throwError(\"No \" + STR_CHANNELS + \" available\");\r\n }\r\n _isInitialized = true;\r\n _self.releaseQueue();\r\n };\r\n _self.getTransmissionControls = function () {\r\n var controls = [];\r\n if (_channelQueue) {\r\n arrForEach(_channelQueue, function (channels) {\r\n controls[_DYN_PUSH /* @min:%2epush */](channels.queue);\r\n });\r\n }\r\n return objFreeze(controls);\r\n };\r\n _self.track = function (telemetryItem) {\r\n // setup default iKey if not passed in\r\n telemetryItem.iKey = telemetryItem.iKey || _config[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */];\r\n // add default timestamp if not passed in\r\n telemetryItem[_DYN_TIME /* @min:%2etime */] = telemetryItem[_DYN_TIME /* @min:%2etime */] || toISOString(new Date());\r\n // Common Schema 4.0\r\n telemetryItem.ver = telemetryItem.ver || \"4.0\";\r\n if (!_isUnloading && _self[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */]()) {\r\n // Process the telemetry plugin chain\r\n _createTelCtx()[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](telemetryItem);\r\n }\r\n else {\r\n // Queue events until all extensions are initialized\r\n _eventQueue[_DYN_PUSH /* @min:%2epush */](telemetryItem);\r\n }\r\n };\r\n _self[_DYN_GET_PROCESS_TEL_CONT0 /* @min:%2egetProcessTelContext */] = _createTelCtx;\r\n _self[_DYN_GET_NOTIFY_MGR /* @min:%2egetNotifyMgr */] = function () {\r\n if (!_notificationManager) {\r\n // Create Dummy notification manager\r\n _notificationManager = _createDummyNotificationManager();\r\n // For backward compatibility only\r\n _self[strNotificationManager] = _notificationManager;\r\n }\r\n return _notificationManager;\r\n };\r\n /**\r\n * Adds a notification listener. The SDK calls methods on the listener when an appropriate notification is raised.\r\n * The added plugins must raise notifications. If the plugins do not implement the notifications, then no methods will be\r\n * called.\r\n * @param {INotificationListener} listener - An INotificationListener object.\r\n */\r\n _self[_DYN_ADD_NOTIFICATION_LIS1 /* @min:%2eaddNotificationListener */] = function (listener) {\r\n if (_notificationManager) {\r\n _notificationManager[_DYN_ADD_NOTIFICATION_LIS1 /* @min:%2eaddNotificationListener */](listener);\r\n }\r\n };\r\n /**\r\n * Removes all instances of the listener.\r\n * @param {INotificationListener} listener - INotificationListener to remove.\r\n */\r\n _self[_DYN_REMOVE_NOTIFICATION_2 /* @min:%2eremoveNotificationListener */] = function (listener) {\r\n if (_notificationManager) {\r\n _notificationManager[_DYN_REMOVE_NOTIFICATION_2 /* @min:%2eremoveNotificationListener */](listener);\r\n }\r\n };\r\n _self.getCookieMgr = function () {\r\n if (!_cookieManager) {\r\n _cookieManager = createCookieMgr(_config, _self[_DYN_LOGGER /* @min:%2elogger */]);\r\n }\r\n return _cookieManager;\r\n };\r\n _self.setCookieMgr = function (cookieMgr) {\r\n _cookieManager = cookieMgr;\r\n };\r\n _self[STR_GET_PERF_MGR /* @min:%2egetPerfMgr */] = function () {\r\n if (!_perfManager && !_cfgPerfManager) {\r\n if (getCfgValue(_config.enablePerfMgr)) {\r\n var createPerfMgr = getCfgValue(_config[STR_CREATE_PERF_MGR /* @min:%2ecreatePerfMgr */]);\r\n if (isFunction(createPerfMgr)) {\r\n _cfgPerfManager = createPerfMgr(_self, _self[_DYN_GET_NOTIFY_MGR /* @min:%2egetNotifyMgr */]());\r\n }\r\n }\r\n }\r\n return _perfManager || _cfgPerfManager || getGblPerfMgr();\r\n };\r\n _self.setPerfMgr = function (perfMgr) {\r\n _perfManager = perfMgr;\r\n };\r\n _self.eventCnt = function () {\r\n return _eventQueue[_DYN_LENGTH /* @min:%2elength */];\r\n };\r\n _self.releaseQueue = function () {\r\n if (_isInitialized && _eventQueue[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n var eventQueue = _eventQueue;\r\n _eventQueue = [];\r\n arrForEach(eventQueue, function (event) {\r\n _createTelCtx()[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](event);\r\n });\r\n }\r\n };\r\n /**\r\n * Periodically check logger.queue for log messages to be flushed\r\n */\r\n _self.pollInternalLogs = function (eventName) {\r\n _internalLogsEventName = eventName || null;\r\n var interval = getCfgValue(_config.diagnosticLogInterval);\r\n if (!interval || !(interval > 0)) {\r\n interval = 10000;\r\n }\r\n if (_internalLogPoller) {\r\n clearInterval(_internalLogPoller);\r\n }\r\n _internalLogPoller = setInterval(function () {\r\n _flushInternalLogs();\r\n }, interval);\r\n return _internalLogPoller;\r\n };\r\n /**\r\n * Stop polling log messages from logger.queue\r\n */\r\n _self[_DYN_STOP_POLLING_INTERNA3 /* @min:%2estopPollingInternalLogs */] = function () {\r\n if (_internalLogPoller) {\r\n clearInterval(_internalLogPoller);\r\n _internalLogPoller = 0;\r\n _flushInternalLogs();\r\n }\r\n };\r\n // Add addTelemetryInitializer\r\n proxyFunctions(_self, function () { return _telemetryInitializerPlugin; }, [\"addTelemetryInitializer\"]);\r\n _self.unload = function (isAsync, unloadComplete, cbTimeout) {\r\n var _a;\r\n if (isAsync === void 0) { isAsync = true; }\r\n if (!_isInitialized) {\r\n // The SDK is not initialized\r\n throwError(strSdkNotInitialized);\r\n }\r\n // Check if the SDK still unloading so throw\r\n if (_isUnloading) {\r\n // The SDK is already unloading\r\n throwError(strSdkUnloadingError);\r\n }\r\n var unloadState = (_a = {\r\n reason: 50 /* TelemetryUnloadReason.SdkUnload */\r\n },\r\n _a[_DYN_IS_ASYNC /* @min:isAsync */] = isAsync,\r\n _a.flushComplete = false,\r\n _a);\r\n var processUnloadCtx = createProcessTelemetryUnloadContext(_getPluginChain(), _self);\r\n processUnloadCtx[_DYN_ON_COMPLETE /* @min:%2eonComplete */](function () {\r\n _initDefaults();\r\n unloadComplete && unloadComplete(unloadState);\r\n }, _self);\r\n function _doUnload(flushComplete) {\r\n unloadState.flushComplete = flushComplete;\r\n _isUnloading = true;\r\n // Run all of the unload handlers first (before unloading the plugins)\r\n _unloadHandlers.run(processUnloadCtx, unloadState);\r\n // Stop polling the internal logs\r\n _self[_DYN_STOP_POLLING_INTERNA3 /* @min:%2estopPollingInternalLogs */]();\r\n // Start unloading the components, from this point onwards the SDK should be considered to be in an unstable state\r\n processUnloadCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](unloadState);\r\n }\r\n if (!_flushChannels(isAsync, _doUnload, 6 /* SendRequestReason.SdkUnload */, cbTimeout)) {\r\n _doUnload(false);\r\n }\r\n };\r\n _self[_DYN_GET_PLUGIN /* @min:%2egetPlugin */] = _getPlugin;\r\n _self.addPlugin = function (plugin, replaceExisting, isAsync, addCb) {\r\n if (!plugin) {\r\n addCb && addCb(false);\r\n _logOrThrowError(strValidationError);\r\n return;\r\n }\r\n var existingPlugin = _getPlugin(plugin[_DYN_IDENTIFIER /* @min:%2eidentifier */]);\r\n if (existingPlugin && !replaceExisting) {\r\n addCb && addCb(false);\r\n _logOrThrowError(\"Plugin [\" + plugin[_DYN_IDENTIFIER /* @min:%2eidentifier */] + \"] is already loaded!\");\r\n return;\r\n }\r\n var updateState = {\r\n reason: 16 /* TelemetryUpdateReason.PluginAdded */\r\n };\r\n function _addPlugin(removed) {\r\n _configExtensions[_DYN_PUSH /* @min:%2epush */](plugin);\r\n updateState.added = [plugin];\r\n // Re-Initialize the plugin chain\r\n _initPluginChain(updateState);\r\n addCb && addCb(true);\r\n }\r\n if (existingPlugin) {\r\n var removedPlugins_1 = [existingPlugin.plugin];\r\n var unloadState = {\r\n reason: 2 /* TelemetryUnloadReason.PluginReplace */,\r\n isAsync: !!isAsync\r\n };\r\n _removePlugins(removedPlugins_1, unloadState, function (removed) {\r\n if (!removed) {\r\n // Previous plugin was successfully removed or was not installed\r\n addCb && addCb(false);\r\n }\r\n else {\r\n updateState.removed = removedPlugins_1;\r\n updateState.reason |= 32 /* TelemetryUpdateReason.PluginRemoved */;\r\n _addPlugin(true);\r\n }\r\n });\r\n }\r\n else {\r\n _addPlugin(false);\r\n }\r\n };\r\n _self.evtNamespace = function () {\r\n return _evtNamespace;\r\n };\r\n _self[_DYN_FLUSH /* @min:%2eflush */] = _flushChannels;\r\n _self.getTraceCtx = function (createNew) {\r\n if (!_traceCtx) {\r\n _traceCtx = createDistributedTraceContext();\r\n }\r\n return _traceCtx;\r\n };\r\n _self.setTraceCtx = function (traceCtx) {\r\n _traceCtx = traceCtx || null;\r\n };\r\n // Create the addUnloadCb\r\n proxyFunctionAs(_self, \"addUnloadCb\", function () { return _unloadHandlers; }, \"add\");\r\n function _initDefaults() {\r\n _isInitialized = false;\r\n // Use a default logger so initialization errors are not dropped on the floor with full logging\r\n _config = objExtend(true, {}, defaultInitConfig);\r\n _self[_DYN_CONFIG /* @min:%2econfig */] = _config;\r\n _self[_DYN_LOGGER /* @min:%2elogger */] = new DiagnosticLogger(_config);\r\n _self[_DYN__EXTENSIONS /* @min:%2e_extensions */] = [];\r\n _telemetryInitializerPlugin = new TelemetryInitializerPlugin();\r\n _eventQueue = [];\r\n _notificationManager = null;\r\n _perfManager = null;\r\n _cfgPerfManager = null;\r\n _cookieManager = null;\r\n _pluginChain = null;\r\n _coreExtensions = null;\r\n _configExtensions = [];\r\n _channelControl = null;\r\n _channelConfig = null;\r\n _channelQueue = null;\r\n _isUnloading = false;\r\n _internalLogsEventName = null;\r\n _evtNamespace = createUniqueNamespace(\"AIBaseCore\", true);\r\n _unloadHandlers = createUnloadHandlerContainer();\r\n _traceCtx = null;\r\n }\r\n function _createTelCtx() {\r\n return createProcessTelemetryContext(_getPluginChain(), _config, _self);\r\n }\r\n // Initialize or Re-initialize the plugins\r\n function _initPluginChain(updateState) {\r\n // Extension validation\r\n var theExtensions = _validateExtensions(_self[_DYN_LOGGER /* @min:%2elogger */], ChannelControllerPriority, _configExtensions);\r\n _coreExtensions = theExtensions[STR_CORE /* @min:%2ecore */];\r\n _pluginChain = null;\r\n // Sort the complete set of extensions by priority\r\n var allExtensions = theExtensions.all;\r\n // Initialize the Channel Queues and the channel plugins first\r\n _channelQueue = objFreeze(createChannelQueues(_channelConfig, allExtensions, _self));\r\n if (_channelControl) {\r\n // During add / remove of a plugin this may get called again, so don't re-add if already present\r\n // But we also want the controller as the last, so remove if already present\r\n // And reusing the existing instance, just in case an installed plugin has a reference and\r\n // is using it.\r\n var idx = arrIndexOf(allExtensions, _channelControl);\r\n if (idx !== -1) {\r\n allExtensions[_DYN_SPLICE /* @min:%2esplice */](idx, 1);\r\n }\r\n idx = arrIndexOf(_coreExtensions, _channelControl);\r\n if (idx !== -1) {\r\n _coreExtensions[_DYN_SPLICE /* @min:%2esplice */](idx, 1);\r\n }\r\n _channelControl._setQueue(_channelQueue);\r\n }\r\n else {\r\n _channelControl = createChannelControllerPlugin(_channelQueue, _self);\r\n }\r\n // Add on \"channelController\" as the last \"plugin\"\r\n allExtensions[_DYN_PUSH /* @min:%2epush */](_channelControl);\r\n _coreExtensions[_DYN_PUSH /* @min:%2epush */](_channelControl);\r\n // Required to allow plugins to call core.getPlugin() during their own initialization\r\n _self[_DYN__EXTENSIONS /* @min:%2e_extensions */] = sortPlugins(allExtensions);\r\n // Initialize the controls\r\n _channelControl[_DYN_INITIALIZE /* @min:%2einitialize */](_config, _self, allExtensions);\r\n initializePlugins(_createTelCtx(), allExtensions);\r\n // Now reset the extensions to just those being managed by Basecore\r\n _self[_DYN__EXTENSIONS /* @min:%2e_extensions */] = objFreeze(sortPlugins(_coreExtensions || [])).slice();\r\n if (updateState) {\r\n _doUpdate(updateState);\r\n }\r\n }\r\n function _getPlugin(pluginIdentifier) {\r\n var _a;\r\n var theExt = null;\r\n var thePlugin = null;\r\n arrForEach(_self[_DYN__EXTENSIONS /* @min:%2e_extensions */], function (ext) {\r\n if (ext[_DYN_IDENTIFIER /* @min:%2eidentifier */] === pluginIdentifier && ext !== _channelControl && ext !== _telemetryInitializerPlugin) {\r\n thePlugin = ext;\r\n return -1;\r\n }\r\n });\r\n if (!thePlugin && _channelControl) {\r\n // Check the channel Controller\r\n thePlugin = _channelControl.getChannel(pluginIdentifier);\r\n }\r\n if (thePlugin) {\r\n theExt = (_a = {\r\n plugin: thePlugin\r\n },\r\n _a[_DYN_SET_ENABLED /* @min:setEnabled */] = function (enabled) {\r\n _getPluginState(thePlugin)[STR_DISABLED] = !enabled;\r\n },\r\n _a.isEnabled = function () {\r\n var pluginState = _getPluginState(thePlugin);\r\n return !pluginState[_DYN_TEARDOWN /* @min:%2eteardown */] && !pluginState[STR_DISABLED];\r\n },\r\n _a.remove = function (isAsync, removeCb) {\r\n var _a;\r\n if (isAsync === void 0) { isAsync = true; }\r\n var pluginsToRemove = [thePlugin];\r\n var unloadState = (_a = {\r\n reason: 1 /* TelemetryUnloadReason.PluginUnload */\r\n },\r\n _a[_DYN_IS_ASYNC /* @min:isAsync */] = isAsync,\r\n _a);\r\n _removePlugins(pluginsToRemove, unloadState, function (removed) {\r\n if (removed) {\r\n // Re-Initialize the plugin chain\r\n _initPluginChain({\r\n reason: 32 /* TelemetryUpdateReason.PluginRemoved */,\r\n removed: pluginsToRemove\r\n });\r\n }\r\n removeCb && removeCb(removed);\r\n });\r\n },\r\n _a);\r\n }\r\n return theExt;\r\n }\r\n function _getPluginChain() {\r\n if (!_pluginChain) {\r\n // copy the collection of extensions\r\n var extensions = (_coreExtensions || []).slice();\r\n // During add / remove this may get called again, so don't readd if already present\r\n if (arrIndexOf(extensions, _telemetryInitializerPlugin) === -1) {\r\n extensions[_DYN_PUSH /* @min:%2epush */](_telemetryInitializerPlugin);\r\n }\r\n _pluginChain = createTelemetryProxyChain(sortPlugins(extensions), _config, _self);\r\n }\r\n return _pluginChain;\r\n }\r\n function _removePlugins(thePlugins, unloadState, removeComplete) {\r\n if (thePlugins && thePlugins[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n var unloadChain = createTelemetryProxyChain(thePlugins, _config, _self);\r\n var unloadCtx = createProcessTelemetryUnloadContext(unloadChain, _self);\r\n unloadCtx[_DYN_ON_COMPLETE /* @min:%2eonComplete */](function () {\r\n var removed = false;\r\n // Remove the listed config extensions\r\n var newConfigExtensions = [];\r\n arrForEach(_configExtensions, function (plugin, idx) {\r\n if (!_isPluginPresent(plugin, thePlugins)) {\r\n newConfigExtensions[_DYN_PUSH /* @min:%2epush */](plugin);\r\n }\r\n else {\r\n removed = true;\r\n }\r\n });\r\n _configExtensions = newConfigExtensions;\r\n // Re-Create the channel config\r\n var newChannelConfig = [];\r\n if (_channelConfig) {\r\n arrForEach(_channelConfig, function (queue, idx) {\r\n var newQueue = [];\r\n arrForEach(queue, function (channel) {\r\n if (!_isPluginPresent(channel, thePlugins)) {\r\n newQueue[_DYN_PUSH /* @min:%2epush */](channel);\r\n }\r\n else {\r\n removed = true;\r\n }\r\n });\r\n newChannelConfig[_DYN_PUSH /* @min:%2epush */](newQueue);\r\n });\r\n _channelConfig = newChannelConfig;\r\n }\r\n removeComplete && removeComplete(removed);\r\n });\r\n unloadCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](unloadState);\r\n }\r\n else {\r\n removeComplete(false);\r\n }\r\n }\r\n function _flushInternalLogs() {\r\n var queue = _self[_DYN_LOGGER /* @min:%2elogger */] ? _self[_DYN_LOGGER /* @min:%2elogger */].queue : [];\r\n if (queue) {\r\n arrForEach(queue, function (logMessage) {\r\n var _a;\r\n var item = (_a = {},\r\n _a[_DYN_NAME /* @min:name */] = _internalLogsEventName ? _internalLogsEventName : \"InternalMessageId: \" + logMessage[_DYN_MESSAGE_ID /* @min:%2emessageId */],\r\n _a.iKey = getCfgValue(_config[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */]),\r\n _a.time = toISOString(new Date()),\r\n _a.baseType = _InternalLogMessage.dataType,\r\n _a.baseData = { message: logMessage[_DYN_MESSAGE /* @min:%2emessage */] },\r\n _a);\r\n _self.track(item);\r\n });\r\n queue[_DYN_LENGTH /* @min:%2elength */] = 0;\r\n }\r\n }\r\n function _flushChannels(isAsync, callBack, sendReason, cbTimeout) {\r\n if (_channelControl) {\r\n return _channelControl[_DYN_FLUSH /* @min:%2eflush */](isAsync, callBack, sendReason || 6 /* SendRequestReason.SdkUnload */, cbTimeout);\r\n }\r\n callBack && callBack(false);\r\n return true;\r\n }\r\n function _initDebugListener() {\r\n var disableDbgExt = getCfgValue(_config.disableDbgExt);\r\n if (disableDbgExt === true && _debugListener) {\r\n // Remove any previously loaded debug listener\r\n _notificationManager[_DYN_REMOVE_NOTIFICATION_2 /* @min:%2eremoveNotificationListener */](_debugListener);\r\n _debugListener = null;\r\n }\r\n if (_notificationManager && !_debugListener && disableDbgExt !== true) {\r\n _debugListener = getDebugListener(_config);\r\n _notificationManager[_DYN_ADD_NOTIFICATION_LIS1 /* @min:%2eaddNotificationListener */](_debugListener);\r\n }\r\n }\r\n function _initPerfManager() {\r\n var enablePerfMgr = getCfgValue(_config.enablePerfMgr);\r\n if (!enablePerfMgr && _cfgPerfManager) {\r\n // Remove any existing config based performance manager\r\n _cfgPerfManager = null;\r\n }\r\n if (enablePerfMgr) {\r\n // Set the performance manager creation function if not defined\r\n getSetValue(_config, STR_CREATE_PERF_MGR, _createPerfManager);\r\n }\r\n }\r\n function _initExtConfig() {\r\n var extConfig = getSetValue(_config, STR_EXTENSION_CONFIG, {});\r\n extConfig.NotificationManager = _notificationManager;\r\n }\r\n function _doUpdate(updateState) {\r\n var updateCtx = createProcessTelemetryUpdateContext(_getPluginChain(), _self);\r\n if (!_self._updateHook || _self._updateHook(updateCtx, updateState) !== true) {\r\n updateCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](updateState);\r\n }\r\n }\r\n function _logOrThrowError(message) {\r\n var logger = _self[_DYN_LOGGER /* @min:%2elogger */];\r\n if (logger) {\r\n // there should always be a logger\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 73 /* _eInternalMessageId.PluginException */, message);\r\n }\r\n else {\r\n throwError(message);\r\n }\r\n }\r\n });\r\n }\r\n// Removed Stub for BaseCore.prototype.initialize.\r\n// Removed Stub for BaseCore.prototype.getTransmissionControls.\r\n// Removed Stub for BaseCore.prototype.track.\r\n// Removed Stub for BaseCore.prototype.getProcessTelContext.\r\n// Removed Stub for BaseCore.prototype.getNotifyMgr.\r\n// Removed Stub for BaseCore.prototype.addNotificationListener.\r\n// Removed Stub for BaseCore.prototype.removeNotificationListener.\r\n// Removed Stub for BaseCore.prototype.getCookieMgr.\r\n// Removed Stub for BaseCore.prototype.setCookieMgr.\r\n// Removed Stub for BaseCore.prototype.getPerfMgr.\r\n// Removed Stub for BaseCore.prototype.setPerfMgr.\r\n// Removed Stub for BaseCore.prototype.eventCnt.\r\n// Removed Stub for BaseCore.prototype.pollInternalLogs.\r\n// Removed Stub for BaseCore.prototype.stopPollingInternalLogs.\r\n// Removed Stub for BaseCore.prototype.addTelemetryInitializer.\r\n// Removed Stub for BaseCore.prototype.unload.\r\n// Removed Stub for BaseCore.prototype.getPlugin.\r\n// Removed Stub for BaseCore.prototype.addPlugin.\r\n// Removed Stub for BaseCore.prototype.evtNamespace.\r\n// Removed Stub for BaseCore.prototype.addUnloadCb.\r\n// Removed Stub for BaseCore.prototype.flush.\r\n// Removed Stub for BaseCore.prototype.getTraceCtx.\r\n// Removed Stub for BaseCore.prototype.setTraceCtx.\r\n// Removed Stub for BaseCore.prototype.releaseQueue.\r\n// Removed Stub for BaseCore.prototype._updateHook.\r\n // This is a workaround for an IE8 bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n // this will be removed when ES3 support is dropped.\n BaseCore.__ieDyn=1;\n\n return BaseCore;\r\n}());\r\nexport { BaseCore };\r\n","/*\n * Application Insights JavaScript SDK - Core, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { _DYN_ADD_NOTIFICATION_LIS1, _DYN_IS_ASYNC, _DYN_IS_CHILD_EVT, _DYN_LISTENERS, _DYN_PUSH, _DYN_REMOVE_NOTIFICATION_2, _DYN_SPLICE } from \"../__DynamicConstants\";\r\nimport { arrForEach, arrIndexOf } from \"./HelperFuncs\";\r\nimport { STR_EVENTS_DISCARDED, STR_EVENTS_SEND_REQUEST, STR_EVENTS_SENT, STR_PERF_EVENT } from \"./InternalConstants\";\r\nfunction _runListeners(listeners, name, isAsync, callback) {\r\n arrForEach(listeners, function (listener) {\r\n if (listener && listener[name]) {\r\n if (isAsync) {\r\n setTimeout(function () { return callback(listener); }, 0);\r\n }\r\n else {\r\n try {\r\n callback(listener);\r\n }\r\n catch (e) {\r\n // Catch errors to ensure we don't block sending the requests\r\n }\r\n }\r\n }\r\n });\r\n}\r\n/**\r\n * Class to manage sending notifications to all the listeners.\r\n */\r\nvar NotificationManager = /** @class */ (function () {\r\n function NotificationManager(config) {\r\n this.listeners = [];\r\n var perfEvtsSendAll = !!(config || {}).perfEvtsSendAll;\r\n dynamicProto(NotificationManager, this, function (_self) {\r\n _self[_DYN_ADD_NOTIFICATION_LIS1 /* @min:%2eaddNotificationListener */] = function (listener) {\r\n _self.listeners[_DYN_PUSH /* @min:%2epush */](listener);\r\n };\r\n /**\r\n * Removes all instances of the listener.\r\n * @param {INotificationListener} listener - AWTNotificationListener to remove.\r\n */\r\n _self[_DYN_REMOVE_NOTIFICATION_2 /* @min:%2eremoveNotificationListener */] = function (listener) {\r\n var index = arrIndexOf(_self[_DYN_LISTENERS /* @min:%2elisteners */], listener);\r\n while (index > -1) {\r\n _self.listeners[_DYN_SPLICE /* @min:%2esplice */](index, 1);\r\n index = arrIndexOf(_self[_DYN_LISTENERS /* @min:%2elisteners */], listener);\r\n }\r\n };\r\n /**\r\n * Notification for events sent.\r\n * @param {ITelemetryItem[]} events - The array of events that have been sent.\r\n */\r\n _self[STR_EVENTS_SENT /* @min:%2eeventsSent */] = function (events) {\r\n _runListeners(_self[_DYN_LISTENERS /* @min:%2elisteners */], STR_EVENTS_SENT, true, function (listener) {\r\n listener[STR_EVENTS_SENT /* @min:%2eeventsSent */](events);\r\n });\r\n };\r\n /**\r\n * Notification for events being discarded.\r\n * @param {ITelemetryItem[]} events - The array of events that have been discarded by the SDK.\r\n * @param {number} reason - The reason for which the SDK discarded the events. The EventsDiscardedReason\r\n * constant should be used to check the different values.\r\n */\r\n _self[STR_EVENTS_DISCARDED /* @min:%2eeventsDiscarded */] = function (events, reason) {\r\n _runListeners(_self[_DYN_LISTENERS /* @min:%2elisteners */], STR_EVENTS_DISCARDED, true, function (listener) {\r\n listener[STR_EVENTS_DISCARDED /* @min:%2eeventsDiscarded */](events, reason);\r\n });\r\n };\r\n /**\r\n * [Optional] A function called when the events have been requested to be sent to the sever.\r\n * @param {number} sendReason - The reason why the event batch is being sent.\r\n * @param {boolean} isAsync - A flag which identifies whether the requests are being sent in an async or sync manner.\r\n */\r\n _self[STR_EVENTS_SEND_REQUEST /* @min:%2eeventsSendRequest */] = function (sendReason, isAsync) {\r\n _runListeners(_self[_DYN_LISTENERS /* @min:%2elisteners */], STR_EVENTS_SEND_REQUEST, isAsync, function (listener) {\r\n listener[STR_EVENTS_SEND_REQUEST /* @min:%2eeventsSendRequest */](sendReason, isAsync);\r\n });\r\n };\r\n _self[STR_PERF_EVENT /* @min:%2eperfEvent */] = function (perfEvent) {\r\n if (perfEvent) {\r\n // Send all events or only parent events\r\n if (perfEvtsSendAll || !perfEvent[_DYN_IS_CHILD_EVT /* @min:%2eisChildEvt */]()) {\r\n _runListeners(_self[_DYN_LISTENERS /* @min:%2elisteners */], STR_PERF_EVENT, false, function (listener) {\r\n if (perfEvent[_DYN_IS_ASYNC /* @min:%2eisAsync */]) {\r\n setTimeout(function () { return listener[STR_PERF_EVENT /* @min:%2eperfEvent */](perfEvent); }, 0);\r\n }\r\n else {\r\n listener[STR_PERF_EVENT /* @min:%2eperfEvent */](perfEvent);\r\n }\r\n });\r\n }\r\n }\r\n };\r\n });\r\n }\r\n// Removed Stub for NotificationManager.prototype.addNotificationListener.\r\n// Removed Stub for NotificationManager.prototype.removeNotificationListener.\r\n// Removed Stub for NotificationManager.prototype.eventsSent.\r\n// Removed Stub for NotificationManager.prototype.eventsDiscarded.\r\n// Removed Stub for NotificationManager.prototype.eventsSendRequest.\r\n // This is a workaround for an IE8 bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n // this will be removed when ES3 support is dropped.\n NotificationManager.__ieDyn=1;\n\n return NotificationManager;\r\n}());\r\nexport { NotificationManager };\r\n","/*\n * Application Insights JavaScript SDK - Core, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport { __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\n\r\n\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { _DYN_GET_NOTIFY_MGR, _DYN_INITIALIZE, _DYN_NAME } from \"../__DynamicConstants\";\r\nimport { BaseCore } from \"./BaseCore\";\r\nimport { DiagnosticLogger } from \"./DiagnosticLogger\";\r\nimport { isNullOrUndefined, throwError } from \"./HelperFuncs\";\r\nimport { STR_EVENTS_DISCARDED, STR_GET_PERF_MGR } from \"./InternalConstants\";\r\nimport { NotificationManager } from \"./NotificationManager\";\r\nimport { doPerf } from \"./PerfManager\";\r\nvar AppInsightsCore = /** @class */ (function (_super) {\r\n __extends(AppInsightsCore, _super);\r\n function AppInsightsCore() {\r\n var _this = _super.call(this) || this;\r\n dynamicProto(AppInsightsCore, _this, function (_self, _base) {\r\n _self[_DYN_INITIALIZE /* @min:%2einitialize */] = function (config, extensions, logger, notificationManager) {\r\n _base[_DYN_INITIALIZE /* @min:%2einitialize */](config, extensions, logger || new DiagnosticLogger(config), notificationManager || new NotificationManager(config));\r\n };\r\n _self.track = function (telemetryItem) {\r\n doPerf(_self[STR_GET_PERF_MGR /* @min:%2egetPerfMgr */](), function () { return \"AppInsightsCore:track\"; }, function () {\r\n if (telemetryItem === null) {\r\n _notifyInvalidEvent(telemetryItem);\r\n // throw error\r\n throwError(\"Invalid telemetry item\");\r\n }\r\n // do basic validation before sending it through the pipeline\r\n _validateTelemetryItem(telemetryItem);\r\n _base.track(telemetryItem);\r\n }, function () { return ({ item: telemetryItem }); }, !(telemetryItem.sync));\r\n };\r\n function _validateTelemetryItem(telemetryItem) {\r\n if (isNullOrUndefined(telemetryItem[_DYN_NAME /* @min:%2ename */])) {\r\n _notifyInvalidEvent(telemetryItem);\r\n throwError(\"telemetry name required\");\r\n }\r\n }\r\n function _notifyInvalidEvent(telemetryItem) {\r\n var manager = _self[_DYN_GET_NOTIFY_MGR /* @min:%2egetNotifyMgr */]();\r\n if (manager) {\r\n manager[STR_EVENTS_DISCARDED /* @min:%2eeventsDiscarded */]([telemetryItem], 2 /* eEventsDiscardedReason.InvalidEvent */);\r\n }\r\n }\r\n });\r\n return _this;\r\n }\r\n// Removed Stub for AppInsightsCore.prototype.initialize.\r\n// Removed Stub for AppInsightsCore.prototype.track.\r\n // This is a workaround for an IE8 bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n // this will be removed when ES3 support is dropped.\n AppInsightsCore.__ieDyn=1;\n\n return AppInsightsCore;\r\n}(BaseCore));\r\nexport { AppInsightsCore };\r\n","/*\n * Application Insights JavaScript SDK - Dependencies Plugin, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Generally you should only put values that are used more than 2 times and then only if not already exposed as a constant (such as SdkCoreNames)\r\n// as when using \"short\" named values from here they will be will be minified smaller than the SdkCoreNames[eSdkCoreNames.xxxx] value.\r\nexport var STR_DURATION = \"duration\";\r\nexport var STR_PROPERTIES = \"properties\";\r\n","/*\n * Application Insights JavaScript SDK - Dependencies Plugin, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// @skip-file-minify\r\n// ##############################################################\r\n// AUTO GENERATED FILE: This file is Auto Generated during build.\r\n// ##############################################################\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\nexport var _DYN_REQUEST_URL = \"requestUrl\"; // Count: 12\r\nexport var _DYN_INST = \"inst\"; // Count: 5\r\nexport var _DYN_LENGTH = \"length\"; // Count: 10\r\nexport var _DYN_TRACE_ID = \"traceID\"; // Count: 9\r\nexport var _DYN_SPAN_ID = \"spanID\"; // Count: 8\r\nexport var _DYN_TRACE_FLAGS = \"traceFlags\"; // Count: 13\r\nexport var _DYN_CONTEXT = \"context\"; // Count: 7\r\nexport var _DYN_TRACE_ID0 = \"traceId\"; // Count: 5\r\nexport var _DYN_SPAN_ID1 = \"spanId\"; // Count: 5\r\nexport var _DYN_CORE = \"core\"; // Count: 8\r\nexport var _DYN_INCLUDE_CORRELATION_2 = \"includeCorrelationHeaders\"; // Count: 4\r\nexport var _DYN_CAN_INCLUDE_CORRELAT3 = \"canIncludeCorrelationHeader\"; // Count: 2\r\nexport var _DYN_GET_ABSOLUTE_URL = \"getAbsoluteUrl\"; // Count: 3\r\nexport var _DYN_HEADERS = \"headers\"; // Count: 6\r\nexport var _DYN_REQUEST_HEADERS = \"requestHeaders\"; // Count: 13\r\nexport var _DYN_APP_ID = \"appId\"; // Count: 5\r\nexport var _DYN_SET_REQUEST_HEADER = \"setRequestHeader\"; // Count: 3\r\nexport var _DYN_TRACK_DEPENDENCY_DAT4 = \"trackDependencyDataInternal\"; // Count: 2\r\nexport var _DYN_DISTRIBUTED_TRACING_5 = \"distributedTracingMode\"; // Count: 3\r\nexport var _DYN_START_TIME = \"startTime\"; // Count: 6\r\nexport var _DYN_TO_LOWER_CASE = \"toLowerCase\"; // Count: 6\r\nexport var _DYN_ENABLE_REQUEST_HEADE6 = \"enableRequestHeaderTracking\"; // Count: 2\r\nexport var _DYN_ENABLE_AJAX_ERROR_ST7 = \"enableAjaxErrorStatusText\"; // Count: 2\r\nexport var _DYN_ENABLE_AJAX_PERF_TRA8 = \"enableAjaxPerfTracking\"; // Count: 2\r\nexport var _DYN_MAX_AJAX_CALLS_PER_V9 = \"maxAjaxCallsPerView\"; // Count: 2\r\nexport var _DYN_ENABLE_RESPONSE_HEAD10 = \"enableResponseHeaderTracking\"; // Count: 2\r\nexport var _DYN_EXCLUDE_REQUEST_FROM11 = \"excludeRequestFromAutoTrackingPatterns\"; // Count: 2\r\nexport var _DYN_ADD_REQUEST_CONTEXT = \"addRequestContext\"; // Count: 2\r\nexport var _DYN_DISABLE_AJAX_TRACKIN12 = \"disableAjaxTracking\"; // Count: 2\r\nexport var _DYN_DISABLE_FETCH_TRACKI13 = \"disableFetchTracking\"; // Count: 2\r\nexport var _DYN_STATUS = \"status\"; // Count: 10\r\nexport var _DYN_STATUS_TEXT = \"statusText\"; // Count: 8\r\nexport var _DYN_HEADER_MAP = \"headerMap\"; // Count: 8\r\nexport var _DYN_OPEN_DONE = \"openDone\"; // Count: 3\r\nexport var _DYN_SEND_DONE = \"sendDone\"; // Count: 3\r\nexport var _DYN_REQUEST_SENT_TIME = \"requestSentTime\"; // Count: 9\r\nexport var _DYN_ABORT_DONE = \"abortDone\"; // Count: 3\r\nexport var _DYN_GET_TRACE_ID = \"getTraceId\"; // Count: 3\r\nexport var _DYN_GET_TRACE_FLAGS = \"getTraceFlags\"; // Count: 3\r\nexport var _DYN_METHOD = \"method\"; // Count: 10\r\nexport var _DYN_ERROR_STATUS_TEXT = \"errorStatusText\"; // Count: 3\r\nexport var _DYN_STATE_CHANGE_ATTACHE14 = \"stateChangeAttached\"; // Count: 2\r\nexport var _DYN_RESPONSE_TEXT = \"responseText\"; // Count: 5\r\nexport var _DYN_RESPONSE_FINISHED_TI15 = \"responseFinishedTime\"; // Count: 7\r\nexport var _DYN__CREATE_TRACK_ITEM = \"CreateTrackItem\"; // Count: 3\r\nexport var _DYN_RESPONSE = \"response\"; // Count: 4\r\nexport var _DYN_GET_ALL_RESPONSE_HEA16 = \"getAllResponseHeaders\"; // Count: 2\r\nexport var _DYN_GET_PART_APROPS = \"getPartAProps\"; // Count: 3\r\nexport var _DYN_GET_CORRELATION_CONT17 = \"getCorrelationContext\"; // Count: 2\r\nexport var _DYN_PERF_MARK = \"perfMark\"; // Count: 4\r\nexport var _DYN_AJAX_PERF_LOOKUP_DEL18 = \"ajaxPerfLookupDelay\"; // Count: 2\r\nexport var _DYN_NAME = \"name\"; // Count: 6\r\nexport var _DYN_PERF_TIMING = \"perfTiming\"; // Count: 3\r\nexport var _DYN_AJAX_DIAGNOSTICS_MES19 = \"ajaxDiagnosticsMessage\"; // Count: 3\r\nexport var _DYN_CORRELATION_CONTEXT = \"correlationContext\"; // Count: 3\r\nexport var _DYN_AJAX_TOTAL_DURATION = \"ajaxTotalDuration\"; // Count: 3\r\nexport var _DYN_EVENT_TRACE_CTX = \"eventTraceCtx\"; // Count: 3\r\n","/*\n * Application Insights JavaScript SDK - Dependencies Plugin, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { Extensions, dataSanitizeUrl, dateTimeUtilsDuration, msToTimeSpan, urlGetAbsoluteUrl, urlGetCompleteUrl } from \"@microsoft/applicationinsights-common\";\r\nimport { arrForEach, isNullOrUndefined, isNumber, isString, normalizeJsName, objForEachKey, objKeys } from \"@microsoft/applicationinsights-core-js\";\r\nimport { STR_DURATION, STR_PROPERTIES } from \"./InternalConstants\";\r\nimport { _DYN_ABORT_DONE, _DYN_AJAX_TOTAL_DURATION, _DYN_CORRELATION_CONTEXT, _DYN_EVENT_TRACE_CTX, _DYN_GET_ABSOLUTE_URL, _DYN_GET_PART_APROPS, _DYN_GET_TRACE_FLAGS, _DYN_GET_TRACE_ID, _DYN_HEADER_MAP, _DYN_LENGTH, _DYN_METHOD, _DYN_NAME, _DYN_OPEN_DONE, _DYN_PERF_MARK, _DYN_PERF_TIMING, _DYN_REQUEST_HEADERS, _DYN_REQUEST_SENT_TIME, _DYN_REQUEST_URL, _DYN_RESPONSE, _DYN_RESPONSE_FINISHED_TI15, _DYN_SEND_DONE, _DYN_SPAN_ID, _DYN_SPAN_ID1, _DYN_START_TIME, _DYN_STATE_CHANGE_ATTACHE14, _DYN_STATUS, _DYN_STATUS_TEXT, _DYN_TRACE_FLAGS, _DYN_TRACE_ID, _DYN_TRACE_ID0, _DYN__CREATE_TRACK_ITEM } from \"./__DynamicConstants\";\r\n/** @ignore */\r\nfunction _calcPerfDuration(resourceEntry, start, end) {\r\n var result = 0;\r\n var from = resourceEntry[start];\r\n var to = resourceEntry[end];\r\n if (from && to) {\r\n result = dateTimeUtilsDuration(from, to);\r\n }\r\n return result;\r\n}\r\n/** @ignore */\r\nfunction _setPerfDuration(props, name, resourceEntry, start, end) {\r\n var result = 0;\r\n var value = _calcPerfDuration(resourceEntry, start, end);\r\n if (value) {\r\n result = _setPerfValue(props, name, msToTimeSpan(value));\r\n }\r\n return result;\r\n}\r\n/** @ignore */\r\nfunction _setPerfValue(props, name, value) {\r\n var strPerf = \"ajaxPerf\";\r\n var result = 0;\r\n if (props && name && value) {\r\n var perfData = props[strPerf] = (props[strPerf] || {});\r\n perfData[name] = value;\r\n result = 1;\r\n }\r\n return result;\r\n}\r\n/** @ignore */\r\nfunction _populatePerfData(ajaxData, dependency) {\r\n /*\r\n * https://developer.mozilla.org/en-US/docs/Web/API/Resource_Timing_API/Using_the_Resource_Timing_API\r\n * | -startTime\r\n * | -redirectStart\r\n * | | -redirectEnd\r\n * | | | -fetchStart\r\n * | | | | -domainLookupStart\r\n * | | | | |- domainLookupEnd\r\n * | | | | | | -connectStart\r\n * | | | | | | | -secureConnectionStart\r\n * | | | | | | | | -connectEnd\r\n * | | | | | | | | | -requestStart\r\n * | | | | | | | | | | | -responseStart\r\n * | | | | | | | | | | | | | -responseEnd\r\n * +------------+-+---+----------------+-+--+--------+-+-----------+-+------------+-+\r\n * |--redirect--| |---|--domainLookup--| |--connect--| |--request--| |--response--| |\r\n * |-------------------networkConnect----------------|\r\n * | |---------sentRequest--------|\r\n * |------------------------------------perfTotal-----------------------------------|\r\n */\r\n var resourceEntry = ajaxData[_DYN_PERF_TIMING /* @min:%2eperfTiming */];\r\n var props = dependency[STR_PROPERTIES /* @min:%2eproperties */] || {};\r\n var propsSet = 0;\r\n var strName = \"name\";\r\n var strStart = \"Start\";\r\n var strEnd = \"End\";\r\n var strDomainLookup = \"domainLookup\";\r\n var strConnect = \"connect\";\r\n var strRedirect = \"redirect\";\r\n var strRequest = \"request\";\r\n var strResponse = \"response\";\r\n var strStartTime = \"startTime\";\r\n var strDomainLookupStart = strDomainLookup + strStart;\r\n var strDomainLookupEnd = strDomainLookup + strEnd;\r\n var strConnectStart = strConnect + strStart;\r\n var strConnectEnd = strConnect + strEnd;\r\n var strRequestStart = strRequest + strStart;\r\n var strRequestEnd = strRequest + strEnd;\r\n var strResponseStart = strResponse + strStart;\r\n var strResponseEnd = strResponse + strEnd;\r\n var strRedirectStart = strRedirect + strStart;\r\n var strRedirectEnd = strRedirect = strEnd;\r\n var strTransferSize = \"transferSize\";\r\n var strEncodedBodySize = \"encodedBodySize\";\r\n var strDecodedBodySize = \"decodedBodySize\";\r\n var strServerTiming = \"serverTiming\";\r\n if (resourceEntry) {\r\n // redirect\r\n propsSet |= _setPerfDuration(props, strRedirect, resourceEntry, strRedirectStart, strRedirectEnd);\r\n // domainLookup\r\n propsSet |= _setPerfDuration(props, strDomainLookup, resourceEntry, strDomainLookupStart, strDomainLookupEnd);\r\n // connect\r\n propsSet |= _setPerfDuration(props, strConnect, resourceEntry, strConnectStart, strConnectEnd);\r\n // request\r\n propsSet |= _setPerfDuration(props, strRequest, resourceEntry, strRequestStart, strRequestEnd);\r\n // response\r\n propsSet |= _setPerfDuration(props, strResponse, resourceEntry, strResponseStart, strResponseEnd);\r\n // Network connection time\r\n propsSet |= _setPerfDuration(props, \"networkConnect\", resourceEntry, strStartTime, strConnectEnd);\r\n // Sent Request\r\n propsSet |= _setPerfDuration(props, \"sentRequest\", resourceEntry, strRequestStart, strResponseEnd);\r\n // PerfTotal / Duration\r\n var duration = resourceEntry[STR_DURATION /* @min:%2eduration */];\r\n if (!duration) {\r\n duration = _calcPerfDuration(resourceEntry, strStartTime, strResponseEnd) || 0;\r\n }\r\n propsSet |= _setPerfValue(props, STR_DURATION, duration);\r\n propsSet |= _setPerfValue(props, \"perfTotal\", duration);\r\n var serverTiming = resourceEntry[strServerTiming];\r\n if (serverTiming) {\r\n var server_1 = {};\r\n arrForEach(serverTiming, function (value, idx) {\r\n var name = normalizeJsName(value[strName] || \"\" + idx);\r\n var newValue = server_1[name] || {};\r\n objForEachKey(value, function (key, val) {\r\n if (key !== strName && isString(val) || isNumber(val)) {\r\n if (newValue[key]) {\r\n val = newValue[key] + \";\" + val;\r\n }\r\n if (val || !isString(val)) {\r\n // Only set the value if it has a value and it's not an empty string\r\n newValue[key] = val;\r\n }\r\n }\r\n });\r\n server_1[name] = newValue;\r\n });\r\n propsSet |= _setPerfValue(props, strServerTiming, server_1);\r\n }\r\n propsSet |= _setPerfValue(props, strTransferSize, resourceEntry[strTransferSize]);\r\n propsSet |= _setPerfValue(props, strEncodedBodySize, resourceEntry[strEncodedBodySize]);\r\n propsSet |= _setPerfValue(props, strDecodedBodySize, resourceEntry[strDecodedBodySize]);\r\n }\r\n else {\r\n if (ajaxData[_DYN_PERF_MARK /* @min:%2eperfMark */]) {\r\n propsSet |= _setPerfValue(props, \"missing\", ajaxData.perfAttempts);\r\n }\r\n }\r\n if (propsSet) {\r\n dependency[STR_PROPERTIES /* @min:%2eproperties */] = props;\r\n }\r\n}\r\nvar XHRMonitoringState = /** @class */ (function () {\r\n function XHRMonitoringState() {\r\n var self = this;\r\n self[_DYN_OPEN_DONE /* @min:%2eopenDone */] = false;\r\n self.setRequestHeaderDone = false;\r\n self[_DYN_SEND_DONE /* @min:%2esendDone */] = false;\r\n self[_DYN_ABORT_DONE /* @min:%2eabortDone */] = false;\r\n // True, if onreadyStateChangeCallback function attached to xhr, otherwise false\r\n self[_DYN_STATE_CHANGE_ATTACHE14 /* @min:%2estateChangeAttached */] = false;\r\n }\r\n return XHRMonitoringState;\r\n}());\r\nexport { XHRMonitoringState };\r\nvar ajaxRecord = /** @class */ (function () {\r\n function ajaxRecord(traceId, spanId, logger, traceCtx) {\r\n var _a;\r\n var self = this;\r\n var _logger = logger;\r\n var strResponseText = \"responseText\";\r\n // Assigning the initial/default values within the constructor to avoid typescript from creating a bunch of\r\n // this.XXXX = null\r\n self[_DYN_PERF_MARK /* @min:%2eperfMark */] = null;\r\n self.completed = false;\r\n self.requestHeadersSize = null;\r\n self[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */] = null;\r\n self.responseReceivingDuration = null;\r\n self.callbackDuration = null;\r\n self[_DYN_AJAX_TOTAL_DURATION /* @min:%2eajaxTotalDuration */] = null;\r\n self.aborted = 0;\r\n self.pageUrl = null;\r\n self[_DYN_REQUEST_URL /* @min:%2erequestUrl */] = null;\r\n self.requestSize = 0;\r\n self[_DYN_METHOD /* @min:%2emethod */] = null;\r\n self[_DYN_STATUS /* @min:%2estatus */] = null;\r\n self[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */] = null;\r\n self.responseStartedTime = null;\r\n self[_DYN_RESPONSE_FINISHED_TI15 /* @min:%2eresponseFinishedTime */] = null;\r\n self.callbackFinishedTime = null;\r\n self.endTime = null;\r\n self.xhrMonitoringState = new XHRMonitoringState();\r\n self.clientFailure = 0;\r\n self[_DYN_TRACE_ID /* @min:%2etraceID */] = traceId;\r\n self[_DYN_SPAN_ID /* @min:%2espanID */] = spanId;\r\n self[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] = traceCtx === null || traceCtx === void 0 ? void 0 : traceCtx.getTraceFlags();\r\n if (traceCtx) {\r\n self[_DYN_EVENT_TRACE_CTX /* @min:%2eeventTraceCtx */] = (_a = {},\r\n _a[_DYN_TRACE_ID0 /* @min:traceId */] = traceCtx[_DYN_GET_TRACE_ID /* @min:%2egetTraceId */](),\r\n _a[_DYN_SPAN_ID1 /* @min:spanId */] = traceCtx.getSpanId(),\r\n _a[_DYN_TRACE_FLAGS /* @min:traceFlags */] = traceCtx[_DYN_GET_TRACE_FLAGS /* @min:%2egetTraceFlags */](),\r\n _a);\r\n }\r\n else {\r\n self[_DYN_EVENT_TRACE_CTX /* @min:%2eeventTraceCtx */] = null;\r\n }\r\n dynamicProto(ajaxRecord, self, function (self) {\r\n self.getAbsoluteUrl = function () {\r\n return self[_DYN_REQUEST_URL /* @min:%2erequestUrl */] ? urlGetAbsoluteUrl(self[_DYN_REQUEST_URL /* @min:%2erequestUrl */]) : null;\r\n };\r\n self.getPathName = function () {\r\n return self[_DYN_REQUEST_URL /* @min:%2erequestUrl */] ? dataSanitizeUrl(_logger, urlGetCompleteUrl(self[_DYN_METHOD /* @min:%2emethod */], self[_DYN_REQUEST_URL /* @min:%2erequestUrl */])) : null;\r\n };\r\n self[_DYN__CREATE_TRACK_ITEM /* @min:%2eCreateTrackItem */] = function (ajaxType, enableRequestHeaderTracking, getResponse) {\r\n var _a;\r\n // round to 3 decimal points\r\n self.ajaxTotalDuration = Math.round(dateTimeUtilsDuration(self.requestSentTime, self.responseFinishedTime) * 1000) / 1000;\r\n if (self[_DYN_AJAX_TOTAL_DURATION /* @min:%2eajaxTotalDuration */] < 0) {\r\n return null;\r\n }\r\n var dependency = (_a = {\r\n id: \"|\" + self[_DYN_TRACE_ID /* @min:%2etraceID */] + \".\" + self[_DYN_SPAN_ID /* @min:%2espanID */],\r\n target: self[_DYN_GET_ABSOLUTE_URL /* @min:%2egetAbsoluteUrl */]()\r\n },\r\n _a[_DYN_NAME /* @min:name */] = self.getPathName(),\r\n _a.type = ajaxType,\r\n _a[_DYN_START_TIME /* @min:startTime */] = null,\r\n _a.duration = self[_DYN_AJAX_TOTAL_DURATION /* @min:%2eajaxTotalDuration */],\r\n _a.success = (+(self[_DYN_STATUS /* @min:%2estatus */])) >= 200 && (+(self[_DYN_STATUS /* @min:%2estatus */])) < 400,\r\n _a.responseCode = (+(self[_DYN_STATUS /* @min:%2estatus */])),\r\n _a.method = self[_DYN_METHOD /* @min:%2emethod */],\r\n _a[STR_PROPERTIES] = { HttpMethod: self[_DYN_METHOD /* @min:%2emethod */] },\r\n _a);\r\n if (self[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */]) {\r\n // Set the correct dependency start time\r\n dependency[_DYN_START_TIME /* @min:%2estartTime */] = new Date();\r\n dependency[_DYN_START_TIME /* @min:%2estartTime */].setTime(self[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */]);\r\n }\r\n // Add Ajax perf details if available\r\n _populatePerfData(self, dependency);\r\n if (enableRequestHeaderTracking) {\r\n if (objKeys(self.requestHeaders)[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n var props = dependency[STR_PROPERTIES /* @min:%2eproperties */] = dependency[STR_PROPERTIES /* @min:%2eproperties */] || {};\r\n props[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */] = self[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */];\r\n }\r\n }\r\n if (getResponse) {\r\n var response = getResponse();\r\n if (response) {\r\n // enrich dependency target with correlation context from the server\r\n var correlationContext = response[_DYN_CORRELATION_CONTEXT /* @min:%2ecorrelationContext */];\r\n if (correlationContext) {\r\n dependency.correlationContext = /* dependency.target + \" | \" + */ correlationContext;\r\n }\r\n if (response[_DYN_HEADER_MAP /* @min:%2eheaderMap */]) {\r\n if (objKeys(response.headerMap)[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n var props = dependency[STR_PROPERTIES /* @min:%2eproperties */] = dependency[STR_PROPERTIES /* @min:%2eproperties */] || {};\r\n props.responseHeaders = response[_DYN_HEADER_MAP /* @min:%2eheaderMap */];\r\n }\r\n }\r\n if (self.errorStatusText && self[_DYN_STATUS /* @min:%2estatus */] >= 400) {\r\n var responseType = response.type;\r\n var props = dependency[STR_PROPERTIES /* @min:%2eproperties */] = dependency[STR_PROPERTIES /* @min:%2eproperties */] || {};\r\n if (responseType === \"\" || responseType === \"text\") {\r\n props.responseText = response.responseText ? response[_DYN_STATUS_TEXT /* @min:%2estatusText */] + \" - \" + response[strResponseText] : response[_DYN_STATUS_TEXT /* @min:%2estatusText */];\r\n }\r\n if (responseType === \"json\") {\r\n props.responseText = response.response ? response[_DYN_STATUS_TEXT /* @min:%2estatusText */] + \" - \" + JSON.stringify(response[_DYN_RESPONSE /* @min:%2eresponse */]) : response[_DYN_STATUS_TEXT /* @min:%2estatusText */];\r\n }\r\n }\r\n }\r\n }\r\n return dependency;\r\n };\r\n self[_DYN_GET_PART_APROPS /* @min:%2egetPartAProps */] = function () {\r\n var _a;\r\n var partA = null;\r\n var traceCtx = self[_DYN_EVENT_TRACE_CTX /* @min:%2eeventTraceCtx */];\r\n if (traceCtx && (traceCtx[_DYN_TRACE_ID0 /* @min:%2etraceId */] || traceCtx[_DYN_SPAN_ID1 /* @min:%2espanId */])) {\r\n partA = {};\r\n var traceExt = partA[Extensions.TraceExt] = (_a = {},\r\n _a[_DYN_TRACE_ID /* @min:traceID */] = traceCtx[_DYN_TRACE_ID0 /* @min:%2etraceId */],\r\n _a.parentID = traceCtx[_DYN_SPAN_ID1 /* @min:%2espanId */],\r\n _a);\r\n if (!isNullOrUndefined(traceCtx[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */])) {\r\n traceExt[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] = traceCtx[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */];\r\n }\r\n }\r\n return partA;\r\n };\r\n });\r\n }\r\n// Removed Stub for ajaxRecord.prototype.getAbsoluteUrl.\r\n// Removed Stub for ajaxRecord.prototype.getPathName.\r\n// Removed Stub for ajaxRecord.prototype.CreateTrackItem.\r\n// Removed Stub for ajaxRecord.prototype.getPartAProps.\r\n // This is a workaround for an IE8 bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n // this will be removed when ES3 support is dropped.\n ajaxRecord.__ieDyn=1;\n\n return ajaxRecord;\r\n}());\r\nexport { ajaxRecord };\r\n","/*\n * Application Insights JavaScript SDK - Dependencies Plugin, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { __assignFn as __assign, __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { CorrelationIdHelper, DisabledPropertyName, PropertiesPluginIdentifier, RemoteDependencyData, RequestHeaders, createDistributedTraceContextFromTrace, createTelemetryItem, createTraceParent, dateTimeUtilsNow, formatTraceParent, isInternalApplicationInsightsEndpoint } from \"@microsoft/applicationinsights-common\";\r\nimport { BaseTelemetryPlugin, InstrumentFunc, InstrumentProto, _throwInternal, arrForEach, createProcessTelemetryContext, createUniqueNamespace, deepFreeze, dumpObj, eventOn, generateW3CId, getExceptionName, getGlobal, getIEVersion, getLocation, getPerformance, isFunction, isNullOrUndefined, isString, isXhrSupported, mergeEvtNamespace, objForEachKey, strPrototype, strTrim } from \"@microsoft/applicationinsights-core-js\";\r\nimport { STR_PROPERTIES } from \"./InternalConstants\";\r\nimport { _DYN_ABORT_DONE, _DYN_ADD_REQUEST_CONTEXT, _DYN_AJAX_DIAGNOSTICS_MES19, _DYN_AJAX_PERF_LOOKUP_DEL18, _DYN_APP_ID, _DYN_CAN_INCLUDE_CORRELAT3, _DYN_CONTEXT, _DYN_CORE, _DYN_CORRELATION_CONTEXT, _DYN_DISABLE_AJAX_TRACKIN12, _DYN_DISABLE_FETCH_TRACKI13, _DYN_DISTRIBUTED_TRACING_5, _DYN_ENABLE_AJAX_ERROR_ST7, _DYN_ENABLE_AJAX_PERF_TRA8, _DYN_ENABLE_REQUEST_HEADE6, _DYN_ENABLE_RESPONSE_HEAD10, _DYN_ERROR_STATUS_TEXT, _DYN_EXCLUDE_REQUEST_FROM11, _DYN_GET_ABSOLUTE_URL, _DYN_GET_ALL_RESPONSE_HEA16, _DYN_GET_CORRELATION_CONT17, _DYN_GET_PART_APROPS, _DYN_GET_TRACE_FLAGS, _DYN_GET_TRACE_ID, _DYN_HEADERS, _DYN_HEADER_MAP, _DYN_INCLUDE_CORRELATION_2, _DYN_INST, _DYN_LENGTH, _DYN_MAX_AJAX_CALLS_PER_V9, _DYN_METHOD, _DYN_NAME, _DYN_OPEN_DONE, _DYN_PERF_MARK, _DYN_PERF_TIMING, _DYN_REQUEST_HEADERS, _DYN_REQUEST_SENT_TIME, _DYN_REQUEST_URL, _DYN_RESPONSE, _DYN_RESPONSE_FINISHED_TI15, _DYN_RESPONSE_TEXT, _DYN_SEND_DONE, _DYN_SET_REQUEST_HEADER, _DYN_SPAN_ID, _DYN_SPAN_ID1, _DYN_START_TIME, _DYN_STATE_CHANGE_ATTACHE14, _DYN_STATUS, _DYN_STATUS_TEXT, _DYN_TO_LOWER_CASE, _DYN_TRACE_FLAGS, _DYN_TRACE_ID, _DYN_TRACE_ID0, _DYN_TRACK_DEPENDENCY_DAT4, _DYN__CREATE_TRACK_ITEM } from \"./__DynamicConstants\";\r\nimport { ajaxRecord } from \"./ajaxRecord\";\r\nvar AJAX_MONITOR_PREFIX = \"ai.ajxmn.\";\r\nvar strDiagLog = \"diagLog\";\r\nvar strAjaxData = \"ajaxData\";\r\nvar strFetch = \"fetch\";\r\nvar ERROR_HEADER = \"Failed to monitor XMLHttpRequest\";\r\nvar ERROR_PREFIX = \", monitoring data for this ajax call \";\r\nvar ERROR_POSTFIX = ERROR_PREFIX + \"may be incorrect.\";\r\nvar ERROR_NOT_SENT = ERROR_PREFIX + \"won't be sent.\";\r\nvar CORRELATION_HEADER_ERROR = \"Failed to get Request-Context correlation header as it may be not included in the response or not accessible.\";\r\nvar CUSTOM_REQUEST_CONTEXT_ERROR = \"Failed to add custom defined request context as configured call back may missing a null check.\";\r\nvar FAILED_TO_CALCULATE_DURATION_ERROR = \"Failed to calculate the duration of the \";\r\n// Using a global value so that to handle same iKey with multiple app insights instances (mostly for testing)\r\nvar _markCount = 0;\r\n/** @Ignore */\r\nfunction _supportsFetch() {\r\n var _global = getGlobal();\r\n if (!_global ||\r\n isNullOrUndefined(_global.Request) ||\r\n isNullOrUndefined(_global.Request[strPrototype]) ||\r\n isNullOrUndefined(_global[strFetch])) {\r\n return null;\r\n }\r\n return _global[strFetch];\r\n}\r\n/**\r\n * Determines whether ajax monitoring can be enabled on this document\r\n * @returns True if Ajax monitoring is supported on this page, otherwise false\r\n * @ignore\r\n */\r\nfunction _supportsAjaxMonitoring(ajaxMonitorInstance) {\r\n var result = false;\r\n if (isXhrSupported()) {\r\n var proto = XMLHttpRequest[strPrototype];\r\n result = !isNullOrUndefined(proto) &&\r\n !isNullOrUndefined(proto.open) && // eslint-disable-line security/detect-non-literal-fs-filename -- false positive\r\n !isNullOrUndefined(proto.send) &&\r\n !isNullOrUndefined(proto.abort);\r\n }\r\n var ieVer = getIEVersion();\r\n if (ieVer && ieVer < 9) {\r\n result = false;\r\n }\r\n if (result) {\r\n // Disable if the XmlHttpRequest can't be extended or hooked\r\n try {\r\n var xhr = new XMLHttpRequest();\r\n xhr[strAjaxData] = {};\r\n // Check that we can update the prototype\r\n var theOpen = XMLHttpRequest[strPrototype].open;\r\n XMLHttpRequest[strPrototype].open = theOpen;\r\n }\r\n catch (e) {\r\n // We can't decorate the xhr object so disable monitoring\r\n result = false;\r\n _throwInternalCritical(ajaxMonitorInstance, 15 /* _eInternalMessageId.FailedMonitorAjaxOpen */, \"Failed to enable XMLHttpRequest monitoring, extension is not supported\", {\r\n exception: dumpObj(e)\r\n });\r\n }\r\n }\r\n return result;\r\n}\r\n/** @Ignore */\r\nfunction _getFailedAjaxDiagnosticsMessage(xhr) {\r\n var result = \"\";\r\n try {\r\n if (xhr && xhr[strAjaxData] && xhr[strAjaxData][_DYN_REQUEST_URL /* @min:%2erequestUrl */]) {\r\n result += \"(url: '\" + xhr[strAjaxData][_DYN_REQUEST_URL /* @min:%2erequestUrl */] + \"')\";\r\n }\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n return result;\r\n}\r\n/** @ignore */\r\nfunction _throwInternalCritical(ajaxMonitorInstance, msgId, message, properties, isUserAct) {\r\n _throwInternal(ajaxMonitorInstance[strDiagLog](), 1 /* eLoggingSeverity.CRITICAL */, msgId, message, properties, isUserAct);\r\n}\r\n/** @ignore */\r\nfunction _throwInternalWarning(ajaxMonitorInstance, msgId, message, properties, isUserAct) {\r\n _throwInternal(ajaxMonitorInstance[strDiagLog](), 2 /* eLoggingSeverity.WARNING */, msgId, message, properties, isUserAct);\r\n}\r\n/** @Ignore */\r\nfunction _createErrorCallbackFunc(ajaxMonitorInstance, internalMessage, message) {\r\n // tslint:disable-next-line\r\n return function (args) {\r\n _throwInternalCritical(ajaxMonitorInstance, internalMessage, message, {\r\n ajaxDiagnosticsMessage: _getFailedAjaxDiagnosticsMessage(args[_DYN_INST /* @min:%2einst */]),\r\n exception: dumpObj(args.err)\r\n });\r\n };\r\n}\r\nfunction _indexOf(value, match) {\r\n if (value && match) {\r\n return value.indexOf(match);\r\n }\r\n return -1;\r\n}\r\nfunction _addHandler(container, id, theFunc) {\r\n var theHandler = {\r\n id: id,\r\n fn: theFunc\r\n };\r\n container.push(theHandler);\r\n return {\r\n remove: function () {\r\n arrForEach(container, function (initializer, idx) {\r\n if (initializer.id === theHandler.id) {\r\n container.splice(idx, 1);\r\n return -1;\r\n }\r\n });\r\n }\r\n };\r\n}\r\nfunction _processDependencyContainer(core, container, details, message) {\r\n var result = true;\r\n arrForEach(container, function (theFunc, idx) {\r\n try {\r\n if (theFunc.fn.call(null, details) === false) {\r\n result = false;\r\n }\r\n }\r\n catch (e) {\r\n _throwInternal(core && core.logger, 1 /* eLoggingSeverity.CRITICAL */, 64 /* _eInternalMessageId.TelemetryInitializerFailed */, \"Dependency \" + message + \" [#\" + idx + \"] failed: \" + getExceptionName(e), { exception: dumpObj(e) }, true);\r\n }\r\n });\r\n return result;\r\n}\r\nfunction _processDependencyListeners(listeners, core, ajaxData, xhr, input, init) {\r\n var _a;\r\n var initializersCount = listeners[_DYN_LENGTH /* @min:%2elength */];\r\n if (initializersCount > 0) {\r\n var details = (_a = {},\r\n _a[_DYN_CORE /* @min:core */] = core,\r\n _a.xhr = xhr,\r\n _a.input = input,\r\n _a.init = init,\r\n _a.traceId = ajaxData[_DYN_TRACE_ID /* @min:%2etraceID */],\r\n _a.spanId = ajaxData[_DYN_SPAN_ID /* @min:%2espanID */],\r\n _a.traceFlags = ajaxData[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */],\r\n _a.context = ajaxData[_DYN_CONTEXT /* @min:%2econtext */] || {},\r\n _a);\r\n _processDependencyContainer(core, listeners, details, \"listener\");\r\n ajaxData[_DYN_TRACE_ID /* @min:%2etraceID */] = details[_DYN_TRACE_ID0 /* @min:%2etraceId */];\r\n ajaxData[_DYN_SPAN_ID /* @min:%2espanID */] = details[_DYN_SPAN_ID1 /* @min:%2espanId */];\r\n ajaxData[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] = details[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */];\r\n ajaxData[_DYN_CONTEXT /* @min:%2econtext */] = details[_DYN_CONTEXT /* @min:%2econtext */];\r\n }\r\n}\r\nvar BLOB_CORE = \"*.blob.core.\";\r\nexport var DfltAjaxCorrelationHeaderExDomains = deepFreeze([\r\n BLOB_CORE + \"windows.net\",\r\n BLOB_CORE + \"chinacloudapi.cn\",\r\n BLOB_CORE + \"cloudapi.de\",\r\n BLOB_CORE + \"usgovcloudapi.net\"\r\n]);\r\nvar _internalExcludeEndpoints = [\r\n /https:\\/\\/[^\\/]*(\\.pipe\\.aria|aria\\.pipe|events\\.data|collector\\.azure)\\.[^\\/]+\\/(OneCollector\\/1|Collector\\/3)\\.0/i\r\n];\r\nfunction _getDefaultConfig() {\r\n var _a;\r\n var config = (_a = {},\r\n _a[_DYN_MAX_AJAX_CALLS_PER_V9 /* @min:maxAjaxCallsPerView */] = 500,\r\n _a[_DYN_DISABLE_AJAX_TRACKIN12 /* @min:disableAjaxTracking */] = false,\r\n _a[_DYN_DISABLE_FETCH_TRACKI13 /* @min:disableFetchTracking */] = false,\r\n _a[_DYN_EXCLUDE_REQUEST_FROM11 /* @min:excludeRequestFromAutoTrackingPatterns */] = undefined,\r\n _a.disableCorrelationHeaders = false,\r\n _a.distributedTracingMode = 1 /* eDistributedTracingModes.AI_AND_W3C */,\r\n _a.correlationHeaderExcludedDomains = DfltAjaxCorrelationHeaderExDomains,\r\n _a.correlationHeaderDomains = undefined,\r\n _a.correlationHeaderExcludePatterns = undefined,\r\n _a[_DYN_APP_ID /* @min:appId */] = undefined,\r\n _a.enableCorsCorrelation = false,\r\n _a[_DYN_ENABLE_REQUEST_HEADE6 /* @min:enableRequestHeaderTracking */] = false,\r\n _a[_DYN_ENABLE_RESPONSE_HEAD10 /* @min:enableResponseHeaderTracking */] = false,\r\n _a[_DYN_ENABLE_AJAX_ERROR_ST7 /* @min:enableAjaxErrorStatusText */] = false,\r\n _a[_DYN_ENABLE_AJAX_PERF_TRA8 /* @min:enableAjaxPerfTracking */] = false,\r\n _a.maxAjaxPerfLookupAttempts = 3,\r\n _a[_DYN_AJAX_PERF_LOOKUP_DEL18 /* @min:ajaxPerfLookupDelay */] = 25,\r\n _a.ignoreHeaders = [\r\n \"Authorization\",\r\n \"X-API-Key\",\r\n \"WWW-Authenticate\"\r\n ],\r\n _a[_DYN_ADD_REQUEST_CONTEXT /* @min:addRequestContext */] = undefined,\r\n _a.addIntEndpoints = true,\r\n _a);\r\n return config;\r\n}\r\nfunction _getEmptyConfig() {\r\n var emptyConfig = _getDefaultConfig();\r\n objForEachKey(emptyConfig, function (value) {\r\n emptyConfig[value] = undefined;\r\n });\r\n return emptyConfig;\r\n}\r\nvar AjaxMonitor = /** @class */ (function (_super) {\r\n __extends(AjaxMonitor, _super);\r\n function AjaxMonitor() {\r\n var _this = _super.call(this) || this;\r\n _this.identifier = AjaxMonitor.identifier;\r\n _this.priority = 120;\r\n var _fetchInitialized; // fetch monitoring initialized\r\n var _xhrInitialized; // XHR monitoring initialized\r\n var _currentWindowHost;\r\n var _config;\r\n var _enableRequestHeaderTracking;\r\n var _enableAjaxErrorStatusText;\r\n var _trackAjaxAttempts;\r\n var _context;\r\n var _isUsingW3CHeaders;\r\n var _isUsingAIHeaders;\r\n var _markPrefix;\r\n var _enableAjaxPerfTracking;\r\n var _maxAjaxCallsPerView;\r\n var _enableResponseHeaderTracking;\r\n var _disabledUrls;\r\n var _disableAjaxTracking;\r\n var _disableFetchTracking;\r\n var _excludeRequestFromAutoTrackingPatterns;\r\n var _addRequestContext;\r\n var _evtNamespace;\r\n var _dependencyHandlerId;\r\n var _dependencyListeners;\r\n var _dependencyInitializers;\r\n dynamicProto(AjaxMonitor, _this, function (_self, _base) {\r\n var _addHook = _base._addHook;\r\n _initDefaults();\r\n _self.initialize = function (config, core, extensions, pluginChain) {\r\n if (!_self.isInitialized()) {\r\n _base.initialize(config, core, extensions, pluginChain);\r\n _evtNamespace = mergeEvtNamespace(createUniqueNamespace(\"ajax\"), core && core.evtNamespace && core.evtNamespace());\r\n _populateDefaults(config);\r\n _instrumentXhr();\r\n _instrumentFetch();\r\n _populateContext();\r\n }\r\n };\r\n _self._doTeardown = function () {\r\n _initDefaults();\r\n };\r\n _self.trackDependencyData = function (dependency, properties) {\r\n _reportDependencyInternal(_dependencyInitializers, _self[_DYN_CORE /* @min:%2ecore */], null, dependency, properties);\r\n };\r\n _self[_DYN_INCLUDE_CORRELATION_2 /* @min:%2eincludeCorrelationHeaders */] = function (ajaxData, input, init, xhr) {\r\n // Test Hook to allow the overriding of the location host\r\n var currentWindowHost = _self[\"_currentWindowHost\"] || _currentWindowHost;\r\n _processDependencyListeners(_dependencyListeners, _self[_DYN_CORE /* @min:%2ecore */], ajaxData, xhr, input, init);\r\n if (input) { // Fetch\r\n if (CorrelationIdHelper[_DYN_CAN_INCLUDE_CORRELAT3 /* @min:%2ecanIncludeCorrelationHeader */](_config, ajaxData[_DYN_GET_ABSOLUTE_URL /* @min:%2egetAbsoluteUrl */](), currentWindowHost)) {\r\n if (!init) {\r\n init = {};\r\n }\r\n // init headers override original request headers\r\n // so, if they exist use only them, otherwise use request's because they should have been applied in the first place\r\n // not using original request headers will result in them being lost\r\n var headers = new Headers(init[_DYN_HEADERS /* @min:%2eheaders */] || (input instanceof Request ? (input[_DYN_HEADERS /* @min:%2eheaders */] || {}) : {}));\r\n if (_isUsingAIHeaders) {\r\n var id = \"|\" + ajaxData[_DYN_TRACE_ID /* @min:%2etraceID */] + \".\" + ajaxData[_DYN_SPAN_ID /* @min:%2espanID */];\r\n headers.set(RequestHeaders[3 /* eRequestHeaders.requestIdHeader */], id);\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][RequestHeaders[3 /* eRequestHeaders.requestIdHeader */]] = id;\r\n }\r\n }\r\n var appId = _config[_DYN_APP_ID /* @min:%2eappId */] || (_context && _context[_DYN_APP_ID /* @min:%2eappId */]());\r\n if (appId) {\r\n headers.set(RequestHeaders[0 /* eRequestHeaders.requestContextHeader */], RequestHeaders[2 /* eRequestHeaders.requestContextAppIdFormat */] + appId);\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][RequestHeaders[0 /* eRequestHeaders.requestContextHeader */]] = RequestHeaders[2 /* eRequestHeaders.requestContextAppIdFormat */] + appId;\r\n }\r\n }\r\n if (_isUsingW3CHeaders) {\r\n var traceFlags = ajaxData[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */];\r\n if (isNullOrUndefined(traceFlags)) {\r\n traceFlags = 0x01;\r\n }\r\n var traceParent = formatTraceParent(createTraceParent(ajaxData[_DYN_TRACE_ID /* @min:%2etraceID */], ajaxData[_DYN_SPAN_ID /* @min:%2espanID */], traceFlags));\r\n headers.set(RequestHeaders[4 /* eRequestHeaders.traceParentHeader */], traceParent);\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][RequestHeaders[4 /* eRequestHeaders.traceParentHeader */]] = traceParent;\r\n }\r\n }\r\n init[_DYN_HEADERS /* @min:%2eheaders */] = headers;\r\n }\r\n return init;\r\n }\r\n else if (xhr) { // XHR\r\n if (CorrelationIdHelper[_DYN_CAN_INCLUDE_CORRELAT3 /* @min:%2ecanIncludeCorrelationHeader */](_config, ajaxData[_DYN_GET_ABSOLUTE_URL /* @min:%2egetAbsoluteUrl */](), currentWindowHost)) {\r\n if (_isUsingAIHeaders) {\r\n var id = \"|\" + ajaxData[_DYN_TRACE_ID /* @min:%2etraceID */] + \".\" + ajaxData[_DYN_SPAN_ID /* @min:%2espanID */];\r\n xhr[_DYN_SET_REQUEST_HEADER /* @min:%2esetRequestHeader */](RequestHeaders[3 /* eRequestHeaders.requestIdHeader */], id);\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][RequestHeaders[3 /* eRequestHeaders.requestIdHeader */]] = id;\r\n }\r\n }\r\n var appId = _config[_DYN_APP_ID /* @min:%2eappId */] || (_context && _context[_DYN_APP_ID /* @min:%2eappId */]());\r\n if (appId) {\r\n xhr[_DYN_SET_REQUEST_HEADER /* @min:%2esetRequestHeader */](RequestHeaders[0 /* eRequestHeaders.requestContextHeader */], RequestHeaders[2 /* eRequestHeaders.requestContextAppIdFormat */] + appId);\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][RequestHeaders[0 /* eRequestHeaders.requestContextHeader */]] = RequestHeaders[2 /* eRequestHeaders.requestContextAppIdFormat */] + appId;\r\n }\r\n }\r\n if (_isUsingW3CHeaders) {\r\n var traceFlags = ajaxData[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */];\r\n if (isNullOrUndefined(traceFlags)) {\r\n traceFlags = 0x01;\r\n }\r\n var traceParent = formatTraceParent(createTraceParent(ajaxData[_DYN_TRACE_ID /* @min:%2etraceID */], ajaxData[_DYN_SPAN_ID /* @min:%2espanID */], traceFlags));\r\n xhr[_DYN_SET_REQUEST_HEADER /* @min:%2esetRequestHeader */](RequestHeaders[4 /* eRequestHeaders.traceParentHeader */], traceParent);\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][RequestHeaders[4 /* eRequestHeaders.traceParentHeader */]] = traceParent;\r\n }\r\n }\r\n }\r\n return xhr;\r\n }\r\n return undefined;\r\n };\r\n _self[_DYN_TRACK_DEPENDENCY_DAT4 /* @min:%2etrackDependencyDataInternal */] = function (dependency, properties, systemProperties) {\r\n if (_maxAjaxCallsPerView === -1 || _trackAjaxAttempts < _maxAjaxCallsPerView) {\r\n // Hack since expected format in w3c mode is |abc.def.\r\n // Non-w3c format is |abc.def\r\n // @todo Remove if better solution is available, e.g. handle in portal\r\n if ((_config[_DYN_DISTRIBUTED_TRACING_5 /* @min:%2edistributedTracingMode */] === 2 /* eDistributedTracingModes.W3C */\r\n || _config[_DYN_DISTRIBUTED_TRACING_5 /* @min:%2edistributedTracingMode */] === 1 /* eDistributedTracingModes.AI_AND_W3C */)\r\n && typeof dependency.id === \"string\" && dependency.id[dependency.id[_DYN_LENGTH /* @min:%2elength */] - 1] !== \".\") {\r\n dependency.id += \".\";\r\n }\r\n if (isNullOrUndefined(dependency[_DYN_START_TIME /* @min:%2estartTime */])) {\r\n dependency[_DYN_START_TIME /* @min:%2estartTime */] = new Date();\r\n }\r\n var item = createTelemetryItem(dependency, RemoteDependencyData.dataType, RemoteDependencyData.envelopeType, _self[strDiagLog](), properties, systemProperties);\r\n _self[_DYN_CORE /* @min:%2ecore */].track(item);\r\n }\r\n else if (_trackAjaxAttempts === _maxAjaxCallsPerView) {\r\n _throwInternalCritical(_self, 55 /* _eInternalMessageId.MaxAjaxPerPVExceeded */, \"Maximum ajax per page view limit reached, ajax monitoring is paused until the next trackPageView(). In order to increase the limit set the maxAjaxCallsPerView configuration parameter.\", true);\r\n }\r\n ++_trackAjaxAttempts;\r\n };\r\n _self.addDependencyListener = function (dependencyListener) {\r\n return _addHandler(_dependencyListeners, _dependencyHandlerId++, dependencyListener);\r\n };\r\n _self.addDependencyInitializer = function (dependencyInitializer) {\r\n return _addHandler(_dependencyInitializers, _dependencyHandlerId++, dependencyInitializer);\r\n };\r\n function _initDefaults() {\r\n var location = getLocation();\r\n _fetchInitialized = false; // fetch monitoring initialized\r\n _xhrInitialized = false; // XHR monitoring initialized\r\n _currentWindowHost = location && location.host && location.host[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n _config = AjaxMonitor.getEmptyConfig();\r\n _enableRequestHeaderTracking = false;\r\n _enableAjaxErrorStatusText = false;\r\n _trackAjaxAttempts = 0;\r\n _context = null;\r\n _isUsingW3CHeaders = false;\r\n _isUsingAIHeaders = false;\r\n _markPrefix = null;\r\n _enableAjaxPerfTracking = false;\r\n _maxAjaxCallsPerView = 0;\r\n _enableResponseHeaderTracking = false;\r\n _disabledUrls = {};\r\n _disableAjaxTracking = false;\r\n _disableFetchTracking = false;\r\n _excludeRequestFromAutoTrackingPatterns = null;\r\n _addRequestContext = null;\r\n _evtNamespace = null;\r\n _dependencyHandlerId = 0;\r\n _dependencyListeners = [];\r\n _dependencyInitializers = [];\r\n }\r\n function _populateDefaults(config) {\r\n var ctx = createProcessTelemetryContext(null, config, _self[_DYN_CORE /* @min:%2ecore */]);\r\n // Reset to the empty config\r\n _config = _getEmptyConfig();\r\n var defaultConfig = _getDefaultConfig();\r\n objForEachKey(defaultConfig, function (field, value) {\r\n _config[field] = ctx.getConfig(AjaxMonitor.identifier, field, value);\r\n });\r\n var distributedTracingMode = _config[_DYN_DISTRIBUTED_TRACING_5 /* @min:%2edistributedTracingMode */];\r\n _enableRequestHeaderTracking = _config[_DYN_ENABLE_REQUEST_HEADE6 /* @min:%2eenableRequestHeaderTracking */];\r\n _enableAjaxErrorStatusText = _config[_DYN_ENABLE_AJAX_ERROR_ST7 /* @min:%2eenableAjaxErrorStatusText */];\r\n _enableAjaxPerfTracking = _config[_DYN_ENABLE_AJAX_PERF_TRA8 /* @min:%2eenableAjaxPerfTracking */];\r\n _maxAjaxCallsPerView = _config[_DYN_MAX_AJAX_CALLS_PER_V9 /* @min:%2emaxAjaxCallsPerView */];\r\n _enableResponseHeaderTracking = _config[_DYN_ENABLE_RESPONSE_HEAD10 /* @min:%2eenableResponseHeaderTracking */];\r\n _excludeRequestFromAutoTrackingPatterns = [].concat(_config[_DYN_EXCLUDE_REQUEST_FROM11 /* @min:%2eexcludeRequestFromAutoTrackingPatterns */] || [], _config.addIntEndpoints !== false ? _internalExcludeEndpoints : []);\r\n _addRequestContext = _config[_DYN_ADD_REQUEST_CONTEXT /* @min:%2eaddRequestContext */];\r\n _isUsingAIHeaders = distributedTracingMode === 0 /* eDistributedTracingModes.AI */ || distributedTracingMode === 1 /* eDistributedTracingModes.AI_AND_W3C */;\r\n _isUsingW3CHeaders = distributedTracingMode === 1 /* eDistributedTracingModes.AI_AND_W3C */ || distributedTracingMode === 2 /* eDistributedTracingModes.W3C */;\r\n if (_enableAjaxPerfTracking) {\r\n var iKey = config.instrumentationKey || \"unkwn\";\r\n if (iKey[_DYN_LENGTH /* @min:%2elength */] > 5) {\r\n _markPrefix = AJAX_MONITOR_PREFIX + iKey.substring(iKey[_DYN_LENGTH /* @min:%2elength */] - 5) + \".\";\r\n }\r\n else {\r\n _markPrefix = AJAX_MONITOR_PREFIX + iKey + \".\";\r\n }\r\n }\r\n _disableAjaxTracking = !!_config[_DYN_DISABLE_AJAX_TRACKIN12 /* @min:%2edisableAjaxTracking */];\r\n _disableFetchTracking = !!_config[_DYN_DISABLE_FETCH_TRACKI13 /* @min:%2edisableFetchTracking */];\r\n }\r\n function _populateContext() {\r\n var propExt = _self[_DYN_CORE /* @min:%2ecore */].getPlugin(PropertiesPluginIdentifier);\r\n if (propExt) {\r\n _context = propExt.plugin[_DYN_CONTEXT /* @min:%2econtext */]; // we could move IPropertiesPlugin to common as well\r\n }\r\n }\r\n // discard the header if it's defined as ignoreHeaders in ICorrelationConfig\r\n function _canIncludeHeaders(header) {\r\n var rlt = true;\r\n if (header || _config.ignoreHeaders) {\r\n arrForEach(_config.ignoreHeaders, (function (key) {\r\n if (key[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]() === header[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]()) {\r\n rlt = false;\r\n return -1;\r\n }\r\n }));\r\n }\r\n return rlt;\r\n }\r\n // Fetch Stuff\r\n function _instrumentFetch() {\r\n var fetch = _supportsFetch();\r\n if (!fetch) {\r\n return;\r\n }\r\n var global = getGlobal();\r\n var isPolyfill = fetch.polyfill;\r\n if (!_disableFetchTracking && !_fetchInitialized) {\r\n _addHook(InstrumentFunc(global, strFetch, {\r\n ns: _evtNamespace,\r\n // Add request hook\r\n req: function (callDetails, input, init) {\r\n var fetchData;\r\n if (!_disableFetchTracking && _fetchInitialized &&\r\n !_isDisabledRequest(null, input, init) &&\r\n // If we have a polyfil and XHR instrumented then let XHR report otherwise we get duplicates\r\n !(isPolyfill && _xhrInitialized)) {\r\n var ctx = callDetails.ctx();\r\n fetchData = _createFetchRecord(input, init);\r\n var newInit = _self[_DYN_INCLUDE_CORRELATION_2 /* @min:%2eincludeCorrelationHeaders */](fetchData, input, init);\r\n if (newInit !== init) {\r\n callDetails.set(1, newInit);\r\n }\r\n ctx.data = fetchData;\r\n }\r\n },\r\n rsp: function (callDetails, input) {\r\n if (!_disableFetchTracking) {\r\n var fetchData_1 = callDetails.ctx().data;\r\n if (fetchData_1) {\r\n // Replace the result with the new promise from this code\r\n callDetails.rslt = callDetails.rslt.then(function (response) {\r\n _reportFetchMetrics(callDetails, (response || {})[_DYN_STATUS /* @min:%2estatus */], input, response, fetchData_1, function () {\r\n var _a;\r\n var ajaxResponse = (_a = {\r\n statusText: response[_DYN_STATUS_TEXT /* @min:%2estatusText */]\r\n },\r\n _a[_DYN_HEADER_MAP /* @min:headerMap */] = null,\r\n _a[_DYN_CORRELATION_CONTEXT /* @min:correlationContext */] = _getFetchCorrelationContext(response),\r\n _a);\r\n if (_enableResponseHeaderTracking) {\r\n var responseHeaderMap_1 = {};\r\n response.headers.forEach(function (value, name) {\r\n if (_canIncludeHeaders(name)) {\r\n responseHeaderMap_1[name] = value;\r\n }\r\n });\r\n ajaxResponse[_DYN_HEADER_MAP /* @min:%2eheaderMap */] = responseHeaderMap_1;\r\n }\r\n return ajaxResponse;\r\n });\r\n return response;\r\n })[\"catch\"](function (reason) {\r\n _reportFetchMetrics(callDetails, 0, input, null, fetchData_1, null, { error: reason.message });\r\n throw reason;\r\n });\r\n }\r\n }\r\n },\r\n // Create an error callback to report any hook errors\r\n hkErr: _createErrorCallbackFunc(_self, 15 /* _eInternalMessageId.FailedMonitorAjaxOpen */, \"Failed to monitor Window.fetch\" + ERROR_POSTFIX)\r\n }));\r\n _fetchInitialized = true;\r\n }\r\n else if (isPolyfill) {\r\n // If fetch is a polyfill we need to capture the request to ensure that we correctly track\r\n // disabled request URLS (i.e. internal urls) to ensure we don't end up in a constant loop\r\n // of reporting ourselves, for example React Native uses a polyfill for fetch\r\n // Note: Polyfill implementations that don't support the \"poyyfill\" tag are not supported\r\n // the workaround is to add a polyfill property to your fetch implementation before initializing\r\n // App Insights\r\n _addHook(InstrumentFunc(global, strFetch, {\r\n ns: _evtNamespace,\r\n req: function (callDetails, input, init) {\r\n // Just call so that we record any disabled URL\r\n _isDisabledRequest(null, input, init);\r\n }\r\n }));\r\n }\r\n if (isPolyfill) {\r\n // retag the instrumented fetch with the same polyfill settings this is mostly for testing\r\n // But also supports multiple App Insights usages\r\n global[strFetch].polyfill = isPolyfill;\r\n }\r\n }\r\n function _hookProto(target, funcName, callbacks) {\r\n _addHook(InstrumentProto(target, funcName, callbacks));\r\n }\r\n function _instrumentXhr() {\r\n if (_supportsAjaxMonitoring(_self) && !_disableAjaxTracking && !_xhrInitialized) {\r\n // Instrument open\r\n _hookProto(XMLHttpRequest, \"open\", {\r\n ns: _evtNamespace,\r\n req: function (args, method, url, async) {\r\n if (!_disableAjaxTracking) {\r\n var xhr = args[_DYN_INST /* @min:%2einst */];\r\n var ajaxData = xhr[strAjaxData];\r\n if (!_isDisabledRequest(xhr, url) && _isMonitoredXhrInstance(xhr, true)) {\r\n if (!ajaxData || !ajaxData.xhrMonitoringState[_DYN_OPEN_DONE /* @min:%2eopenDone */]) {\r\n // Only create a single ajaxData (even when multiple AI instances are running)\r\n _openHandler(xhr, method, url, async);\r\n }\r\n // always attach to the on ready state change (required for handling multiple instances)\r\n _attachToOnReadyStateChange(xhr);\r\n }\r\n }\r\n },\r\n hkErr: _createErrorCallbackFunc(_self, 15 /* _eInternalMessageId.FailedMonitorAjaxOpen */, ERROR_HEADER + \".open\" + ERROR_POSTFIX)\r\n });\r\n // Instrument send\r\n _hookProto(XMLHttpRequest, \"send\", {\r\n ns: _evtNamespace,\r\n req: function (args, context) {\r\n if (!_disableAjaxTracking) {\r\n var xhr = args[_DYN_INST /* @min:%2einst */];\r\n var ajaxData = xhr[strAjaxData];\r\n if (_isMonitoredXhrInstance(xhr) && !ajaxData.xhrMonitoringState[_DYN_SEND_DONE /* @min:%2esendDone */]) {\r\n _createMarkId(\"xhr\", ajaxData);\r\n ajaxData[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */] = dateTimeUtilsNow();\r\n _self[_DYN_INCLUDE_CORRELATION_2 /* @min:%2eincludeCorrelationHeaders */](ajaxData, undefined, undefined, xhr);\r\n ajaxData.xhrMonitoringState[_DYN_SEND_DONE /* @min:%2esendDone */] = true;\r\n }\r\n }\r\n },\r\n hkErr: _createErrorCallbackFunc(_self, 17 /* _eInternalMessageId.FailedMonitorAjaxSend */, ERROR_HEADER + ERROR_POSTFIX)\r\n });\r\n // Instrument abort\r\n _hookProto(XMLHttpRequest, \"abort\", {\r\n ns: _evtNamespace,\r\n req: function (args) {\r\n if (!_disableAjaxTracking) {\r\n var xhr = args[_DYN_INST /* @min:%2einst */];\r\n var ajaxData = xhr[strAjaxData];\r\n if (_isMonitoredXhrInstance(xhr) && !ajaxData.xhrMonitoringState[_DYN_ABORT_DONE /* @min:%2eabortDone */]) {\r\n ajaxData.aborted = 1;\r\n ajaxData.xhrMonitoringState[_DYN_ABORT_DONE /* @min:%2eabortDone */] = true;\r\n }\r\n }\r\n },\r\n hkErr: _createErrorCallbackFunc(_self, 13 /* _eInternalMessageId.FailedMonitorAjaxAbort */, ERROR_HEADER + \".abort\" + ERROR_POSTFIX)\r\n });\r\n // Instrument setRequestHeader\r\n _hookProto(XMLHttpRequest, \"setRequestHeader\", {\r\n ns: _evtNamespace,\r\n req: function (args, header, value) {\r\n if (!_disableAjaxTracking && _enableRequestHeaderTracking) {\r\n var xhr = args[_DYN_INST /* @min:%2einst */];\r\n if (_isMonitoredXhrInstance(xhr) && _canIncludeHeaders(header)) {\r\n xhr[strAjaxData][_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][header] = value;\r\n }\r\n }\r\n },\r\n hkErr: _createErrorCallbackFunc(_self, 71 /* _eInternalMessageId.FailedMonitorAjaxSetRequestHeader */, ERROR_HEADER + \".setRequestHeader\" + ERROR_POSTFIX)\r\n });\r\n _xhrInitialized = true;\r\n }\r\n }\r\n function _isDisabledRequest(xhr, request, init) {\r\n var isDisabled = false;\r\n var theUrl = ((!isString(request) ? (request || {}).url || \"\" : request) || \"\")[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n // check excludeRequestFromAutoTrackingPatterns before stripping off any query string\r\n arrForEach(_excludeRequestFromAutoTrackingPatterns, function (regex) {\r\n var theRegex = regex;\r\n if (isString(regex)) {\r\n theRegex = new RegExp(regex);\r\n }\r\n if (!isDisabled) {\r\n isDisabled = theRegex.test(theUrl);\r\n }\r\n });\r\n // if request url matches with exclude regex pattern, return true and no need to check for headers\r\n if (isDisabled) {\r\n return isDisabled;\r\n }\r\n var idx = _indexOf(theUrl, \"?\");\r\n var idx2 = _indexOf(theUrl, \"#\");\r\n if (idx === -1 || (idx2 !== -1 && idx2 < idx)) {\r\n idx = idx2;\r\n }\r\n if (idx !== -1) {\r\n // Strip off any Query string\r\n theUrl = theUrl.substring(0, idx);\r\n }\r\n // check that this instance is not not used by ajax call performed inside client side monitoring to send data to collector\r\n if (!isNullOrUndefined(xhr)) {\r\n // Look on the XMLHttpRequest of the URL string value\r\n isDisabled = xhr[DisabledPropertyName] === true || theUrl[DisabledPropertyName] === true;\r\n }\r\n else if (!isNullOrUndefined(request)) { // fetch\r\n // Look for DisabledPropertyName in either Request or RequestInit\r\n isDisabled = (typeof request === \"object\" ? request[DisabledPropertyName] === true : false) ||\r\n (init ? init[DisabledPropertyName] === true : false);\r\n }\r\n // Also add extra check just in case the XHR or fetch objects where not decorated with the DisableProperty due to sealing or freezing\r\n if (!isDisabled && theUrl && isInternalApplicationInsightsEndpoint(theUrl)) {\r\n isDisabled = true;\r\n }\r\n if (isDisabled) {\r\n // Add the disabled url if not present\r\n if (!_disabledUrls[theUrl]) {\r\n _disabledUrls[theUrl] = 1;\r\n }\r\n }\r\n else {\r\n // Check to see if the url is listed as disabled\r\n if (_disabledUrls[theUrl]) {\r\n isDisabled = true;\r\n }\r\n }\r\n return isDisabled;\r\n }\r\n /// Verifies that particalar instance of XMLHttpRequest needs to be monitored\r\n /// Optional parameter. True if ajaxData must be excluded from verification\r\n /// True if instance needs to be monitored, otherwise false\r\n function _isMonitoredXhrInstance(xhr, excludeAjaxDataValidation) {\r\n var ajaxValidation = true;\r\n var initialized = _xhrInitialized;\r\n if (!isNullOrUndefined(xhr)) {\r\n ajaxValidation = excludeAjaxDataValidation === true || !isNullOrUndefined(xhr[strAjaxData]);\r\n }\r\n // checking to see that all interested functions on xhr were instrumented\r\n return initialized\r\n // checking on ajaxData to see that it was not removed in user code\r\n && ajaxValidation;\r\n }\r\n function _getDistributedTraceCtx() {\r\n var distributedTraceCtx = null;\r\n if (_self[_DYN_CORE /* @min:%2ecore */] && _self[_DYN_CORE /* @min:%2ecore */].getTraceCtx) {\r\n distributedTraceCtx = _self[_DYN_CORE /* @min:%2ecore */].getTraceCtx(false);\r\n }\r\n // Fall back\r\n if (!distributedTraceCtx && _context && _context.telemetryTrace) {\r\n distributedTraceCtx = createDistributedTraceContextFromTrace(_context.telemetryTrace);\r\n }\r\n return distributedTraceCtx;\r\n }\r\n function _openHandler(xhr, method, url, async) {\r\n var _a;\r\n var distributedTraceCtx = _getDistributedTraceCtx();\r\n var traceID = (distributedTraceCtx && distributedTraceCtx[_DYN_GET_TRACE_ID /* @min:%2egetTraceId */]()) || generateW3CId();\r\n var spanID = generateW3CId().substr(0, 16);\r\n var ajaxData = new ajaxRecord(traceID, spanID, _self[strDiagLog](), (_a = _self.core) === null || _a === void 0 ? void 0 : _a.getTraceCtx());\r\n ajaxData[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] = distributedTraceCtx && distributedTraceCtx[_DYN_GET_TRACE_FLAGS /* @min:%2egetTraceFlags */]();\r\n ajaxData[_DYN_METHOD /* @min:%2emethod */] = method;\r\n ajaxData[_DYN_REQUEST_URL /* @min:%2erequestUrl */] = url;\r\n ajaxData.xhrMonitoringState[_DYN_OPEN_DONE /* @min:%2eopenDone */] = true;\r\n ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */] = {};\r\n ajaxData.async = async;\r\n ajaxData[_DYN_ERROR_STATUS_TEXT /* @min:%2eerrorStatusText */] = _enableAjaxErrorStatusText;\r\n xhr[strAjaxData] = ajaxData;\r\n }\r\n function _attachToOnReadyStateChange(xhr) {\r\n xhr[strAjaxData].xhrMonitoringState[_DYN_STATE_CHANGE_ATTACHE14 /* @min:%2estateChangeAttached */] = eventOn(xhr, \"readystatechange\", function () {\r\n var _a;\r\n try {\r\n if (xhr && xhr.readyState === 4 && _isMonitoredXhrInstance(xhr)) {\r\n _onAjaxComplete(xhr);\r\n }\r\n }\r\n catch (e) {\r\n var exceptionText = dumpObj(e);\r\n // ignore messages with c00c023f, as this a known IE9 XHR abort issue\r\n if (!exceptionText || _indexOf(exceptionText[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */](), \"c00c023f\") === -1) {\r\n _throwInternalCritical(_self, 16 /* _eInternalMessageId.FailedMonitorAjaxRSC */, ERROR_HEADER + \" 'readystatechange' event handler\" + ERROR_POSTFIX, (_a = {},\r\n _a[_DYN_AJAX_DIAGNOSTICS_MES19 /* @min:ajaxDiagnosticsMessage */] = _getFailedAjaxDiagnosticsMessage(xhr),\r\n _a.exception = exceptionText,\r\n _a));\r\n }\r\n }\r\n }, _evtNamespace);\r\n }\r\n function _getResponseText(xhr) {\r\n try {\r\n var responseType = xhr.responseType;\r\n if (responseType === \"\" || responseType === \"text\") {\r\n // As per the specification responseText is only valid if the type is an empty string or \"text\"\r\n return xhr[_DYN_RESPONSE_TEXT /* @min:%2eresponseText */];\r\n }\r\n }\r\n catch (e) {\r\n // This shouldn't happen because of the above check -- but just in case, so just ignore\r\n }\r\n return null;\r\n }\r\n function _onAjaxComplete(xhr) {\r\n var ajaxData = xhr[strAjaxData];\r\n ajaxData[_DYN_RESPONSE_FINISHED_TI15 /* @min:%2eresponseFinishedTime */] = dateTimeUtilsNow();\r\n ajaxData[_DYN_STATUS /* @min:%2estatus */] = xhr[_DYN_STATUS /* @min:%2estatus */];\r\n function _reportXhrError(e, failedProps) {\r\n var errorProps = failedProps || {};\r\n errorProps[\"ajaxDiagnosticsMessage\"] = _getFailedAjaxDiagnosticsMessage(xhr);\r\n if (e) {\r\n errorProps[\"exception\"] = dumpObj(e);\r\n }\r\n _throwInternalWarning(_self, 14 /* _eInternalMessageId.FailedMonitorAjaxDur */, FAILED_TO_CALCULATE_DURATION_ERROR + \"ajax call\" + ERROR_NOT_SENT, errorProps);\r\n }\r\n _findPerfResourceEntry(\"xmlhttprequest\", ajaxData, function () {\r\n try {\r\n var dependency = ajaxData[_DYN__CREATE_TRACK_ITEM /* @min:%2eCreateTrackItem */](\"Ajax\", _enableRequestHeaderTracking, function () {\r\n var _a;\r\n var ajaxResponse = (_a = {\r\n statusText: xhr[_DYN_STATUS_TEXT /* @min:%2estatusText */]\r\n },\r\n _a[_DYN_HEADER_MAP /* @min:headerMap */] = null,\r\n _a[_DYN_CORRELATION_CONTEXT /* @min:correlationContext */] = _getAjaxCorrelationContext(xhr),\r\n _a.type = xhr.responseType,\r\n _a[_DYN_RESPONSE_TEXT /* @min:responseText */] = _getResponseText(xhr),\r\n _a.response = xhr[_DYN_RESPONSE /* @min:%2eresponse */],\r\n _a);\r\n if (_enableResponseHeaderTracking) {\r\n var headers = xhr[_DYN_GET_ALL_RESPONSE_HEA16 /* @min:%2egetAllResponseHeaders */]();\r\n if (headers) {\r\n // xhr.getAllResponseHeaders() method returns all the response headers, separated by CRLF, as a string or null\r\n // the regex converts the header string into an array of individual headers\r\n var arr = strTrim(headers).split(/[\\r\\n]+/);\r\n var responseHeaderMap_2 = {};\r\n arrForEach(arr, function (line) {\r\n var parts = line.split(\": \");\r\n var header = parts.shift();\r\n var value = parts.join(\": \");\r\n if (_canIncludeHeaders(header)) {\r\n responseHeaderMap_2[header] = value;\r\n }\r\n });\r\n ajaxResponse[_DYN_HEADER_MAP /* @min:%2eheaderMap */] = responseHeaderMap_2;\r\n }\r\n }\r\n return ajaxResponse;\r\n });\r\n var properties = void 0;\r\n try {\r\n if (!!_addRequestContext) {\r\n properties = _addRequestContext({ status: xhr[_DYN_STATUS /* @min:%2estatus */], xhr: xhr });\r\n }\r\n }\r\n catch (e) {\r\n _throwInternalWarning(_self, 104 /* _eInternalMessageId.FailedAddingCustomDefinedRequestContext */, CUSTOM_REQUEST_CONTEXT_ERROR);\r\n }\r\n if (dependency) {\r\n if (properties !== undefined) {\r\n dependency[STR_PROPERTIES /* @min:%2eproperties */] = __assign(__assign({}, dependency.properties), properties);\r\n }\r\n var sysProperties = ajaxData[_DYN_GET_PART_APROPS /* @min:%2egetPartAProps */]();\r\n _reportDependencyInternal(_dependencyInitializers, _self[_DYN_CORE /* @min:%2ecore */], ajaxData, dependency, null, sysProperties);\r\n }\r\n else {\r\n _reportXhrError(null, {\r\n requestSentTime: ajaxData[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */],\r\n responseFinishedTime: ajaxData[_DYN_RESPONSE_FINISHED_TI15 /* @min:%2eresponseFinishedTime */]\r\n });\r\n }\r\n }\r\n finally {\r\n // cleanup telemetry data\r\n try {\r\n xhr[strAjaxData] = null;\r\n }\r\n catch (e) {\r\n // May throw in environments that prevent extension or freeze xhr\r\n }\r\n }\r\n }, function (e) {\r\n _reportXhrError(e, null);\r\n });\r\n }\r\n function _getAjaxCorrelationContext(xhr) {\r\n var _a;\r\n try {\r\n var responseHeadersString = xhr[_DYN_GET_ALL_RESPONSE_HEA16 /* @min:%2egetAllResponseHeaders */]();\r\n if (responseHeadersString !== null) {\r\n var index = _indexOf(responseHeadersString[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */](), RequestHeaders[8 /* eRequestHeaders.requestContextHeaderLowerCase */]);\r\n if (index !== -1) {\r\n var responseHeader = xhr.getResponseHeader(RequestHeaders[0 /* eRequestHeaders.requestContextHeader */]);\r\n return CorrelationIdHelper[_DYN_GET_CORRELATION_CONT17 /* @min:%2egetCorrelationContext */](responseHeader);\r\n }\r\n }\r\n }\r\n catch (e) {\r\n _throwInternalWarning(_self, 18 /* _eInternalMessageId.FailedMonitorAjaxGetCorrelationHeader */, CORRELATION_HEADER_ERROR, (_a = {},\r\n _a[_DYN_AJAX_DIAGNOSTICS_MES19 /* @min:ajaxDiagnosticsMessage */] = _getFailedAjaxDiagnosticsMessage(xhr),\r\n _a.exception = dumpObj(e),\r\n _a));\r\n }\r\n }\r\n function _createMarkId(type, ajaxData) {\r\n if (ajaxData[_DYN_REQUEST_URL /* @min:%2erequestUrl */] && _markPrefix && _enableAjaxPerfTracking) {\r\n var performance_1 = getPerformance();\r\n if (performance_1 && isFunction(performance_1.mark)) {\r\n _markCount++;\r\n var markId = _markPrefix + type + \"#\" + _markCount;\r\n performance_1.mark(markId);\r\n var entries = performance_1.getEntriesByName(markId);\r\n if (entries && entries[_DYN_LENGTH /* @min:%2elength */] === 1) {\r\n ajaxData[_DYN_PERF_MARK /* @min:%2eperfMark */] = entries[0];\r\n }\r\n }\r\n }\r\n }\r\n function _findPerfResourceEntry(initiatorType, ajaxData, trackCallback, reportError) {\r\n var perfMark = ajaxData[_DYN_PERF_MARK /* @min:%2eperfMark */];\r\n var performance = getPerformance();\r\n var maxAttempts = _config.maxAjaxPerfLookupAttempts;\r\n var retryDelay = _config[_DYN_AJAX_PERF_LOOKUP_DEL18 /* @min:%2eajaxPerfLookupDelay */];\r\n var requestUrl = ajaxData[_DYN_REQUEST_URL /* @min:%2erequestUrl */];\r\n var attempt = 0;\r\n (function locateResourceTiming() {\r\n try {\r\n if (performance && perfMark) {\r\n attempt++;\r\n var perfTiming = null;\r\n var entries = performance.getEntries();\r\n for (var lp = entries[_DYN_LENGTH /* @min:%2elength */] - 1; lp >= 0; lp--) {\r\n var entry = entries[lp];\r\n if (entry) {\r\n if (entry.entryType === \"resource\") {\r\n if (entry.initiatorType === initiatorType &&\r\n (_indexOf(entry[_DYN_NAME /* @min:%2ename */], requestUrl) !== -1 || _indexOf(requestUrl, entry[_DYN_NAME /* @min:%2ename */]) !== -1)) {\r\n perfTiming = entry;\r\n }\r\n }\r\n else if (entry.entryType === \"mark\" && entry[_DYN_NAME /* @min:%2ename */] === perfMark[_DYN_NAME /* @min:%2ename */]) {\r\n // We hit the start event\r\n ajaxData[_DYN_PERF_TIMING /* @min:%2eperfTiming */] = perfTiming;\r\n break;\r\n }\r\n if (entry[_DYN_START_TIME /* @min:%2estartTime */] < perfMark[_DYN_START_TIME /* @min:%2estartTime */] - 1000) {\r\n // Fallback to try and reduce the time spent looking for the perf entry\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n if (!perfMark || // - we don't have a perfMark or\r\n ajaxData[_DYN_PERF_TIMING /* @min:%2eperfTiming */] || // - we have not found the perf entry or\r\n attempt >= maxAttempts || // - we have tried too many attempts or\r\n ajaxData.async === false) { // - this is a sync request\r\n if (perfMark && isFunction(performance.clearMarks)) {\r\n // Remove the mark so we don't fill up the performance resources too much\r\n performance.clearMarks(perfMark[_DYN_NAME /* @min:%2ename */]);\r\n }\r\n ajaxData.perfAttempts = attempt;\r\n // just continue and report the track event\r\n trackCallback();\r\n }\r\n else {\r\n // We need to wait for the browser to populate the window.performance entry\r\n // This needs to be at least 1ms as waiting <= 1 (on firefox) is not enough time for fetch or xhr,\r\n // this is a scheduling issue for the browser implementation\r\n setTimeout(locateResourceTiming, retryDelay);\r\n }\r\n }\r\n catch (e) {\r\n reportError(e);\r\n }\r\n })();\r\n }\r\n function _createFetchRecord(input, init) {\r\n var _a;\r\n var distributedTraceCtx = _getDistributedTraceCtx();\r\n var traceID = (distributedTraceCtx && distributedTraceCtx[_DYN_GET_TRACE_ID /* @min:%2egetTraceId */]()) || generateW3CId();\r\n var spanID = generateW3CId().substr(0, 16);\r\n var ajaxData = new ajaxRecord(traceID, spanID, _self[strDiagLog](), (_a = _self.core) === null || _a === void 0 ? void 0 : _a.getTraceCtx());\r\n ajaxData[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] = distributedTraceCtx && distributedTraceCtx[_DYN_GET_TRACE_FLAGS /* @min:%2egetTraceFlags */]();\r\n ajaxData[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */] = dateTimeUtilsNow();\r\n ajaxData[_DYN_ERROR_STATUS_TEXT /* @min:%2eerrorStatusText */] = _enableAjaxErrorStatusText;\r\n if (input instanceof Request) {\r\n ajaxData[_DYN_REQUEST_URL /* @min:%2erequestUrl */] = input ? input.url : \"\";\r\n }\r\n else {\r\n ajaxData[_DYN_REQUEST_URL /* @min:%2erequestUrl */] = input;\r\n }\r\n var method = \"GET\";\r\n if (init && init[_DYN_METHOD /* @min:%2emethod */]) {\r\n method = init[_DYN_METHOD /* @min:%2emethod */];\r\n }\r\n else if (input && input instanceof Request) {\r\n method = input[_DYN_METHOD /* @min:%2emethod */];\r\n }\r\n ajaxData[_DYN_METHOD /* @min:%2emethod */] = method;\r\n var requestHeaders = {};\r\n if (_enableRequestHeaderTracking) {\r\n var headers = new Headers((init ? init[_DYN_HEADERS /* @min:%2eheaders */] : 0) || (input instanceof Request ? (input[_DYN_HEADERS /* @min:%2eheaders */] || {}) : {}));\r\n headers.forEach(function (value, key) {\r\n if (_canIncludeHeaders(key)) {\r\n requestHeaders[key] = value;\r\n }\r\n });\r\n }\r\n ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */] = requestHeaders;\r\n _createMarkId(\"fetch\", ajaxData);\r\n return ajaxData;\r\n }\r\n function _getFailedFetchDiagnosticsMessage(input) {\r\n var result = \"\";\r\n try {\r\n if (!isNullOrUndefined(input)) {\r\n if (typeof (input) === \"string\") {\r\n result += \"(url: '\".concat(input, \"')\");\r\n }\r\n else {\r\n result += \"(url: '\".concat(input.url, \"')\");\r\n }\r\n }\r\n }\r\n catch (e) {\r\n _throwInternalCritical(_self, 15 /* _eInternalMessageId.FailedMonitorAjaxOpen */, \"Failed to grab failed fetch diagnostics message\", { exception: dumpObj(e) });\r\n }\r\n return result;\r\n }\r\n function _reportFetchMetrics(callDetails, status, input, response, ajaxData, getResponse, properties) {\r\n if (!ajaxData) {\r\n return;\r\n }\r\n function _reportFetchError(msgId, e, failedProps) {\r\n var errorProps = failedProps || {};\r\n errorProps[\"fetchDiagnosticsMessage\"] = _getFailedFetchDiagnosticsMessage(input);\r\n if (e) {\r\n errorProps[\"exception\"] = dumpObj(e);\r\n }\r\n _throwInternalWarning(_self, msgId, FAILED_TO_CALCULATE_DURATION_ERROR + \"fetch call\" + ERROR_NOT_SENT, errorProps);\r\n }\r\n ajaxData[_DYN_RESPONSE_FINISHED_TI15 /* @min:%2eresponseFinishedTime */] = dateTimeUtilsNow();\r\n ajaxData[_DYN_STATUS /* @min:%2estatus */] = status;\r\n _findPerfResourceEntry(\"fetch\", ajaxData, function () {\r\n var dependency = ajaxData[_DYN__CREATE_TRACK_ITEM /* @min:%2eCreateTrackItem */](\"Fetch\", _enableRequestHeaderTracking, getResponse);\r\n var properties;\r\n try {\r\n if (!!_addRequestContext) {\r\n properties = _addRequestContext({ status: status, request: input, response: response });\r\n }\r\n }\r\n catch (e) {\r\n _throwInternalWarning(_self, 104 /* _eInternalMessageId.FailedAddingCustomDefinedRequestContext */, CUSTOM_REQUEST_CONTEXT_ERROR);\r\n }\r\n if (dependency) {\r\n if (properties !== undefined) {\r\n dependency[STR_PROPERTIES /* @min:%2eproperties */] = __assign(__assign({}, dependency.properties), properties);\r\n }\r\n var sysProperties = ajaxData[_DYN_GET_PART_APROPS /* @min:%2egetPartAProps */]();\r\n _reportDependencyInternal(_dependencyInitializers, _self[_DYN_CORE /* @min:%2ecore */], ajaxData, dependency, null, sysProperties);\r\n }\r\n else {\r\n _reportFetchError(14 /* _eInternalMessageId.FailedMonitorAjaxDur */, null, {\r\n requestSentTime: ajaxData[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */],\r\n responseFinishedTime: ajaxData[_DYN_RESPONSE_FINISHED_TI15 /* @min:%2eresponseFinishedTime */]\r\n });\r\n }\r\n }, function (e) {\r\n _reportFetchError(18 /* _eInternalMessageId.FailedMonitorAjaxGetCorrelationHeader */, e, null);\r\n });\r\n }\r\n function _getFetchCorrelationContext(response) {\r\n if (response && response[_DYN_HEADERS /* @min:%2eheaders */]) {\r\n try {\r\n var responseHeader = response[_DYN_HEADERS /* @min:%2eheaders */].get(RequestHeaders[0 /* eRequestHeaders.requestContextHeader */]);\r\n return CorrelationIdHelper[_DYN_GET_CORRELATION_CONT17 /* @min:%2egetCorrelationContext */](responseHeader);\r\n }\r\n catch (e) {\r\n _throwInternalWarning(_self, 18 /* _eInternalMessageId.FailedMonitorAjaxGetCorrelationHeader */, CORRELATION_HEADER_ERROR, {\r\n fetchDiagnosticsMessage: _getFailedFetchDiagnosticsMessage(response),\r\n exception: dumpObj(e)\r\n });\r\n }\r\n }\r\n }\r\n function _reportDependencyInternal(initializers, core, ajaxData, dependency, properties, systemProperties) {\r\n var _a;\r\n var result = true;\r\n var initializersCount = initializers[_DYN_LENGTH /* @min:%2elength */];\r\n if (initializersCount > 0) {\r\n var details = (_a = {\r\n item: dependency\r\n },\r\n _a[STR_PROPERTIES /* @min:properties */] = properties,\r\n _a.sysProperties = systemProperties,\r\n _a.context = ajaxData ? ajaxData[_DYN_CONTEXT /* @min:%2econtext */] : null,\r\n _a);\r\n result = _processDependencyContainer(core, initializers, details, \"initializer\");\r\n }\r\n if (result) {\r\n _self[_DYN_TRACK_DEPENDENCY_DAT4 /* @min:%2etrackDependencyDataInternal */](dependency, properties, systemProperties);\r\n }\r\n }\r\n });\r\n return _this;\r\n }\r\n// Removed Stub for AjaxMonitor.prototype.initialize.\r\n AjaxMonitor.prototype.processTelemetry = function (item, itemCtx) {\r\n this.processNext(item, itemCtx);\r\n };\r\n// Removed Stub for AjaxMonitor.prototype.trackDependencyData.\r\n// Removed Stub for AjaxMonitor.prototype.includeCorrelationHeaders.\r\n// Removed Stub for AjaxMonitor.prototype.addDependencyListener.\r\n /**\r\n * Add an dependency telemetry initializer callback function to allow populating additional properties or drop the request.\r\n * It is called after the dependency call has completed and any available performance details are available. A dependency\r\n * initializer is similar to the TelemetryInitializer function but it allows you to block the reporting of the dependency\r\n * request so that it doesn't count against the `maxAjaxCallsPerView`.\r\n * @param dependencyInitializer - The Dependency Telemetry Initializer function\r\n * @returns - A IDependencyInitializerHandler to enable the initializer to be removed\r\n */\r\n AjaxMonitor.prototype.addDependencyInitializer = function (dependencyInitializer) {\r\n return null;\r\n };\r\n// Removed Stub for AjaxMonitor.prototype.trackDependencyDataInternal.\r\n AjaxMonitor.identifier = \"AjaxDependencyPlugin\";\r\n AjaxMonitor.getDefaultConfig = _getDefaultConfig;\r\n AjaxMonitor.getEmptyConfig = _getEmptyConfig;\r\n return AjaxMonitor;\r\n}(BaseTelemetryPlugin));\r\nexport { AjaxMonitor };\r\n","/*\n * Application Insights JavaScript SDK - Properties Plugin, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nvar Application = /** @class */ (function () {\r\n function Application() {\r\n }\r\n return Application;\r\n}());\r\nexport { Application };\r\n","/*\n * Application Insights JavaScript SDK - Properties Plugin, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nvar Device = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the Device class\r\n */\r\n function Device() {\r\n // don't attempt to fingerprint browsers\r\n this.id = \"browser\";\r\n // Device type is a dimension in our data platform\r\n // Setting it to 'Browser' allows to separate client and server dependencies/exceptions\r\n this.deviceClass = \"Browser\";\r\n }\r\n return Device;\r\n}());\r\nexport { Device };\r\n","/*\n * Application Insights JavaScript SDK - Properties Plugin, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// @skip-file-minify\r\n// ##############################################################\r\n// AUTO GENERATED FILE: This file is Auto Generated during build.\r\n// ##############################################################\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\nexport var _DYN_SESSION_MANAGER = \"sessionManager\"; // Count: 3\r\nexport var _DYN_UPDATE = \"update\"; // Count: 4\r\nexport var _DYN_IS_USER_COOKIE_SET = \"isUserCookieSet\"; // Count: 4\r\nexport var _DYN_IS_NEW_USER = \"isNewUser\"; // Count: 4\r\nexport var _DYN_GET_TRACE_CTX = \"getTraceCtx\"; // Count: 3\r\nexport var _DYN_TELEMETRY_TRACE = \"telemetryTrace\"; // Count: 3\r\nexport var _DYN_APPLY_SESSION_CONTEX0 = \"applySessionContext\"; // Count: 2\r\nexport var _DYN_APPLY_APPLICATION_CO1 = \"applyApplicationContext\"; // Count: 2\r\nexport var _DYN_APPLY_DEVICE_CONTEXT = \"applyDeviceContext\"; // Count: 2\r\nexport var _DYN_APPLY_OPERATION_CONT2 = \"applyOperationContext\"; // Count: 2\r\nexport var _DYN_APPLY_USER_CONTEXT = \"applyUserContext\"; // Count: 2\r\nexport var _DYN_APPLY_OPERATING_SYST3 = \"applyOperatingSystemContxt\"; // Count: 2\r\nexport var _DYN_APPLY_LOCATION_CONTE4 = \"applyLocationContext\"; // Count: 2\r\nexport var _DYN_APPLY_INTERNAL_CONTE5 = \"applyInternalContext\"; // Count: 2\r\nexport var _DYN_ACCOUNT_ID = \"accountId\"; // Count: 8\r\nexport var _DYN_SDK_EXTENSION = \"sdkExtension\"; // Count: 4\r\nexport var _DYN_GET_SESSION_ID = \"getSessionId\"; // Count: 4\r\nexport var _DYN_NAME_PREFIX = \"namePrefix\"; // Count: 7\r\nexport var _DYN_SESSION_COOKIE_POSTF6 = \"sessionCookiePostfix\"; // Count: 4\r\nexport var _DYN_USER_COOKIE_POSTFIX = \"userCookiePostfix\"; // Count: 4\r\nexport var _DYN_ID_LENGTH = \"idLength\"; // Count: 5\r\nexport var _DYN_GET_NEW_ID = \"getNewId\"; // Count: 6\r\nexport var _DYN_LENGTH = \"length\"; // Count: 4\r\nexport var _DYN_AUTOMATIC_SESSION = \"automaticSession\"; // Count: 5\r\nexport var _DYN_AUTHENTICATED_ID = \"authenticatedId\"; // Count: 6\r\nexport var _DYN_SESSION_EXPIRATION_M7 = \"sessionExpirationMs\"; // Count: 5\r\nexport var _DYN_SESSION_RENEWAL_MS = \"sessionRenewalMs\"; // Count: 4\r\nexport var _DYN_CONFIG = \"config\"; // Count: 4\r\nexport var _DYN_ACQUISITION_DATE = \"acquisitionDate\"; // Count: 5\r\nexport var _DYN_RENEWAL_DATE = \"renewalDate\"; // Count: 4\r\nexport var _DYN_COOKIE_DOMAIN = \"cookieDomain\"; // Count: 3\r\nexport var _DYN_JOIN = \"join\"; // Count: 5\r\nexport var _DYN_COOKIE_SEPARATOR = \"cookieSeparator\"; // Count: 5\r\nexport var _DYN_AUTH_USER_COOKIE_NAM8 = \"authUserCookieName\"; // Count: 3\r\n","/*\n * Application Insights JavaScript SDK - Properties Plugin, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { _DYN_SDK_EXTENSION } from \"../__DynamicConstants\";\r\nvar Version = '2.8.9';\r\nvar Internal = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the internal telemetry data class.\r\n */\r\n function Internal(config) {\r\n this.sdkVersion = (config[_DYN_SDK_EXTENSION /* @min:%2esdkExtension */] && config[_DYN_SDK_EXTENSION /* @min:%2esdkExtension */]() ? config[_DYN_SDK_EXTENSION /* @min:%2esdkExtension */]() + \"_\" : \"\") + \"javascript:\" + Version;\r\n }\r\n return Internal;\r\n}());\r\nexport { Internal };\r\n","/*\n * Application Insights JavaScript SDK - Properties Plugin, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nvar Location = /** @class */ (function () {\r\n function Location() {\r\n }\r\n return Location;\r\n}());\r\nexport { Location };\r\n","/*\n * Application Insights JavaScript SDK - Properties Plugin, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { utlCanUseLocalStorage, utlGetLocalStorage, utlSetLocalStorage } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal, dateNow, dumpObj, getExceptionName, isFunction, newId, safeGetCookieMgr, safeGetLogger } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_ACQUISITION_DATE, _DYN_AUTOMATIC_SESSION, _DYN_CONFIG, _DYN_COOKIE_DOMAIN, _DYN_GET_NEW_ID, _DYN_ID_LENGTH, _DYN_JOIN, _DYN_LENGTH, _DYN_NAME_PREFIX, _DYN_RENEWAL_DATE, _DYN_SESSION_COOKIE_POSTF6, _DYN_SESSION_EXPIRATION_M7, _DYN_SESSION_RENEWAL_MS, _DYN_UPDATE } from \"../__DynamicConstants\";\r\nvar cookieNameConst = \"ai_session\";\r\nvar Session = /** @class */ (function () {\r\n function Session() {\r\n }\r\n return Session;\r\n}());\r\nexport { Session };\r\nvar _SessionManager = /** @class */ (function () {\r\n function _SessionManager(config, core) {\r\n var self = this;\r\n var _storageNamePrefix;\r\n var _cookieUpdatedTimestamp;\r\n var _logger = safeGetLogger(core);\r\n var _cookieManager = safeGetCookieMgr(core);\r\n dynamicProto(_SessionManager, self, function (_self) {\r\n if (!config) {\r\n config = {};\r\n }\r\n if (!isFunction(config[_DYN_SESSION_EXPIRATION_M7 /* @min:%2esessionExpirationMs */])) {\r\n config[_DYN_SESSION_EXPIRATION_M7 /* @min:%2esessionExpirationMs */] = function () { return _SessionManager.acquisitionSpan; };\r\n }\r\n if (!isFunction(config[_DYN_SESSION_RENEWAL_MS /* @min:%2esessionRenewalMs */])) {\r\n config[_DYN_SESSION_RENEWAL_MS /* @min:%2esessionRenewalMs */] = function () { return _SessionManager.renewalSpan; };\r\n }\r\n _self[_DYN_CONFIG /* @min:%2econfig */] = config;\r\n // sessionCookiePostfix takes the preference if it is configured, otherwise takes namePrefix if configured.\r\n var sessionCookiePostfix = (_self.config[_DYN_SESSION_COOKIE_POSTF6 /* @min:%2esessionCookiePostfix */] && _self[_DYN_CONFIG /* @min:%2econfig */][_DYN_SESSION_COOKIE_POSTF6 /* @min:%2esessionCookiePostfix */]()) ?\r\n _self.config[_DYN_SESSION_COOKIE_POSTF6 /* @min:%2esessionCookiePostfix */]() :\r\n ((_self.config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */] && _self[_DYN_CONFIG /* @min:%2econfig */][_DYN_NAME_PREFIX /* @min:%2enamePrefix */]()) ? _self[_DYN_CONFIG /* @min:%2econfig */][_DYN_NAME_PREFIX /* @min:%2enamePrefix */]() : \"\");\r\n _storageNamePrefix = function () { return cookieNameConst + sessionCookiePostfix; };\r\n _self[_DYN_AUTOMATIC_SESSION /* @min:%2eautomaticSession */] = new Session();\r\n _self[_DYN_UPDATE /* @min:%2eupdate */] = function () {\r\n // Always using Date getTime() as there is a bug in older IE instances that causes the performance timings to have the hi-bit set eg 0x800000000 causing\r\n // the number to be incorrect.\r\n var nowMs = dateNow();\r\n var isExpired = false;\r\n var session = _self[_DYN_AUTOMATIC_SESSION /* @min:%2eautomaticSession */];\r\n if (!session.id) {\r\n isExpired = !_initializeAutomaticSession(session, nowMs);\r\n }\r\n var sessionExpirationMs = _self.config[_DYN_SESSION_EXPIRATION_M7 /* @min:%2esessionExpirationMs */]();\r\n if (!isExpired && sessionExpirationMs > 0) {\r\n var sessionRenewalMs = _self.config[_DYN_SESSION_RENEWAL_MS /* @min:%2esessionRenewalMs */]();\r\n var timeSinceAcqMs = nowMs - session[_DYN_ACQUISITION_DATE /* @min:%2eacquisitionDate */];\r\n var timeSinceRenewalMs = nowMs - session[_DYN_RENEWAL_DATE /* @min:%2erenewalDate */];\r\n isExpired = timeSinceAcqMs < 0 || timeSinceRenewalMs < 0; // expired if the acquisition or last renewal are in the future\r\n isExpired = isExpired || timeSinceAcqMs > sessionExpirationMs; // expired if the time since acquisition is more than session Expiration\r\n isExpired = isExpired || timeSinceRenewalMs > sessionRenewalMs; // expired if the time since last renewal is more than renewal period\r\n }\r\n // renew if acquisitionSpan or renewalSpan has elapsed\r\n if (isExpired) {\r\n // update automaticSession so session state has correct id\r\n _renew(nowMs);\r\n }\r\n else {\r\n // do not update the cookie more often than cookieUpdateInterval\r\n if (!_cookieUpdatedTimestamp || nowMs - _cookieUpdatedTimestamp > _SessionManager.cookieUpdateInterval) {\r\n _setCookie(session, nowMs);\r\n }\r\n }\r\n };\r\n /**\r\n * Record the current state of the automatic session and store it in our cookie string format\r\n * into the browser's local storage. This is used to restore the session data when the cookie\r\n * expires.\r\n */\r\n _self.backup = function () {\r\n var session = _self[_DYN_AUTOMATIC_SESSION /* @min:%2eautomaticSession */];\r\n _setStorage(session.id, session[_DYN_ACQUISITION_DATE /* @min:%2eacquisitionDate */], session[_DYN_RENEWAL_DATE /* @min:%2erenewalDate */]);\r\n };\r\n /**\r\n * Use config.namePrefix + ai_session cookie data or local storage data (when the cookie is unavailable) to\r\n * initialize the automatic session.\r\n * @returns true if values set otherwise false\r\n */\r\n function _initializeAutomaticSession(session, now) {\r\n var isValid = false;\r\n var cookieValue = _cookieManager.get(_storageNamePrefix());\r\n if (cookieValue && isFunction(cookieValue.split)) {\r\n isValid = _initializeAutomaticSessionWithData(session, cookieValue);\r\n }\r\n else {\r\n // There's no cookie, but we might have session data in local storage\r\n // This can happen if the session expired or the user actively deleted the cookie\r\n // We only want to recover data if the cookie is missing from expiry. We should respect the user's wishes if the cookie was deleted actively.\r\n // The User class handles this for us and deletes our local storage object if the persistent user cookie was removed.\r\n var storageValue = utlGetLocalStorage(_logger, _storageNamePrefix());\r\n if (storageValue) {\r\n isValid = _initializeAutomaticSessionWithData(session, storageValue);\r\n }\r\n }\r\n return isValid || !!session.id;\r\n }\r\n /**\r\n * Extract id, acquisitionDate, and renewalDate from an ai_session payload string and\r\n * use this data to initialize automaticSession.\r\n *\r\n * @param {string} sessionData - The string stored in an ai_session cookie or local storage backup\r\n * @returns true if values set otherwise false\r\n */\r\n function _initializeAutomaticSessionWithData(session, sessionData) {\r\n var isValid = false;\r\n var sessionReset = \", session will be reset\";\r\n var tokens = sessionData.split(\"|\");\r\n if (tokens[_DYN_LENGTH /* @min:%2elength */] >= 2) {\r\n try {\r\n var acqMs = +tokens[1] || 0;\r\n var renewalMs = +tokens[2] || 0;\r\n if (isNaN(acqMs) || acqMs <= 0) {\r\n _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 27 /* _eInternalMessageId.SessionRenewalDateIsZero */, \"AI session acquisition date is 0\" + sessionReset);\r\n }\r\n else if (isNaN(renewalMs) || renewalMs <= 0) {\r\n _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 27 /* _eInternalMessageId.SessionRenewalDateIsZero */, \"AI session renewal date is 0\" + sessionReset);\r\n }\r\n else if (tokens[0]) {\r\n // Everything looks valid so set the values\r\n session.id = tokens[0];\r\n session[_DYN_ACQUISITION_DATE /* @min:%2eacquisitionDate */] = acqMs;\r\n session[_DYN_RENEWAL_DATE /* @min:%2erenewalDate */] = renewalMs;\r\n isValid = true;\r\n }\r\n }\r\n catch (e) {\r\n _throwInternal(_logger, 1 /* eLoggingSeverity.CRITICAL */, 9 /* _eInternalMessageId.ErrorParsingAISessionCookie */, \"Error parsing ai_session value [\" + (sessionData || \"\") + \"]\" + sessionReset + \" - \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return isValid;\r\n }\r\n function _renew(nowMs) {\r\n var theConfig = (_self[_DYN_CONFIG /* @min:%2econfig */] || {});\r\n var getNewId = (theConfig[_DYN_GET_NEW_ID /* @min:%2egetNewId */] ? theConfig[_DYN_GET_NEW_ID /* @min:%2egetNewId */]() : null) || newId;\r\n _self.automaticSession.id = getNewId(theConfig[_DYN_ID_LENGTH /* @min:%2eidLength */] ? theConfig[_DYN_ID_LENGTH /* @min:%2eidLength */]() : 22);\r\n _self[_DYN_AUTOMATIC_SESSION /* @min:%2eautomaticSession */][_DYN_ACQUISITION_DATE /* @min:%2eacquisitionDate */] = nowMs;\r\n _setCookie(_self[_DYN_AUTOMATIC_SESSION /* @min:%2eautomaticSession */], nowMs);\r\n // If this browser does not support local storage, fire an internal log to keep track of it at this point\r\n if (!utlCanUseLocalStorage()) {\r\n _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 0 /* _eInternalMessageId.BrowserDoesNotSupportLocalStorage */, \"Browser does not support local storage. Session durations will be inaccurate.\");\r\n }\r\n }\r\n function _setCookie(session, nowMs) {\r\n var acq = session[_DYN_ACQUISITION_DATE /* @min:%2eacquisitionDate */];\r\n session[_DYN_RENEWAL_DATE /* @min:%2erenewalDate */] = nowMs;\r\n var config = _self[_DYN_CONFIG /* @min:%2econfig */];\r\n var renewalPeriodMs = config[_DYN_SESSION_RENEWAL_MS /* @min:%2esessionRenewalMs */]();\r\n // Set cookie to expire after the session expiry time passes or the session renewal deadline, whichever is sooner\r\n // Expiring the cookie will cause the session to expire even if the user isn't on the page\r\n var acqTimeLeftMs = (acq + config[_DYN_SESSION_EXPIRATION_M7 /* @min:%2esessionExpirationMs */]()) - nowMs;\r\n var cookie = [session.id, acq, nowMs];\r\n var maxAgeSec = 0;\r\n if (acqTimeLeftMs < renewalPeriodMs) {\r\n maxAgeSec = acqTimeLeftMs / 1000;\r\n }\r\n else {\r\n maxAgeSec = renewalPeriodMs / 1000;\r\n }\r\n var cookieDomain = config[_DYN_COOKIE_DOMAIN /* @min:%2ecookieDomain */] ? config[_DYN_COOKIE_DOMAIN /* @min:%2ecookieDomain */]() : null;\r\n // if sessionExpirationMs is set to 0, it means the expiry is set to 0 for this session cookie\r\n // A cookie with 0 expiry in the session cookie will never expire for that browser session. If the browser is closed the cookie expires.\r\n // Depending on the browser, another instance does not inherit this cookie, however, another tab will\r\n _cookieManager.set(_storageNamePrefix(), cookie.join(\"|\"), config[_DYN_SESSION_EXPIRATION_M7 /* @min:%2esessionExpirationMs */]() > 0 ? maxAgeSec : null, cookieDomain);\r\n _cookieUpdatedTimestamp = nowMs;\r\n }\r\n function _setStorage(guid, acq, renewal) {\r\n // Keep data in local storage to retain the last session id, allowing us to cleanly end the session when it expires\r\n // Browsers that don't support local storage won't be able to end sessions cleanly from the client\r\n // The server will notice this and end the sessions itself, with loss of accurate session duration\r\n utlSetLocalStorage(_logger, _storageNamePrefix(), [guid, acq, renewal][_DYN_JOIN /* @min:%2ejoin */](\"|\"));\r\n }\r\n });\r\n }\r\n// Removed Stub for _SessionManager.prototype.update.\r\n// Removed Stub for _SessionManager.prototype.backup.\r\n _SessionManager.acquisitionSpan = 86400000; // 24 hours in ms\r\n _SessionManager.renewalSpan = 1800000; // 30 minutes in ms\r\n _SessionManager.cookieUpdateInterval = 60000; // 1 minute in ms\r\n return _SessionManager;\r\n}());\r\nexport { _SessionManager };\r\n","/*\n * Application Insights JavaScript SDK - Properties Plugin, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { dataSanitizeString } from \"@microsoft/applicationinsights-common\";\r\nimport { generateW3CId, getLocation } from \"@microsoft/applicationinsights-core-js\";\r\nvar TelemetryTrace = /** @class */ (function () {\r\n function TelemetryTrace(id, parentId, name, logger) {\r\n var _self = this;\r\n _self.traceID = id || generateW3CId();\r\n _self.parentID = parentId;\r\n var location = getLocation();\r\n if (!name && location && location.pathname) {\r\n name = location.pathname;\r\n }\r\n _self.name = dataSanitizeString(logger, name);\r\n }\r\n return TelemetryTrace;\r\n}());\r\nexport { TelemetryTrace };\r\n","/*\n * Application Insights JavaScript SDK - Properties Plugin, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { utlRemoveStorage } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal, newId, safeGetCookieMgr, safeGetLogger, toISOString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_ACCOUNT_ID, _DYN_AUTHENTICATED_ID, _DYN_AUTH_USER_COOKIE_NAM8, _DYN_CONFIG, _DYN_COOKIE_SEPARATOR, _DYN_GET_NEW_ID, _DYN_ID_LENGTH, _DYN_IS_NEW_USER, _DYN_IS_USER_COOKIE_SET, _DYN_JOIN, _DYN_LENGTH, _DYN_NAME_PREFIX, _DYN_UPDATE, _DYN_USER_COOKIE_POSTFIX } from \"../__DynamicConstants\";\r\nfunction _validateUserInput(id) {\r\n // Validate:\r\n // 1. Id is a non-empty string.\r\n // 2. It does not contain special characters for cookies.\r\n if (typeof id !== \"string\" ||\r\n !id ||\r\n id.match(/,|;|=| |\\|/)) {\r\n return false;\r\n }\r\n return true;\r\n}\r\nvar User = /** @class */ (function () {\r\n function User(config, core) {\r\n /**\r\n * A flag indicating whether this represents a new user\r\n */\r\n this.isNewUser = false;\r\n /**\r\n * A flag indicating whether the user cookie has been set\r\n */\r\n this.isUserCookieSet = false;\r\n var _logger = safeGetLogger(core);\r\n var _cookieManager = safeGetCookieMgr(core);\r\n var _storageNamePrefix;\r\n dynamicProto(User, this, function (_self) {\r\n _self[_DYN_CONFIG /* @min:%2econfig */] = config;\r\n var userCookiePostfix = (_self.config[_DYN_USER_COOKIE_POSTFIX /* @min:%2euserCookiePostfix */] && _self[_DYN_CONFIG /* @min:%2econfig */][_DYN_USER_COOKIE_POSTFIX /* @min:%2euserCookiePostfix */]()) ? _self[_DYN_CONFIG /* @min:%2econfig */][_DYN_USER_COOKIE_POSTFIX /* @min:%2euserCookiePostfix */]() : \"\";\r\n _storageNamePrefix = function () { return User.userCookieName + userCookiePostfix; };\r\n // get userId or create new one if none exists\r\n var cookie = _cookieManager.get(_storageNamePrefix());\r\n if (cookie) {\r\n _self[_DYN_IS_NEW_USER /* @min:%2eisNewUser */] = false;\r\n var params = cookie.split(User[_DYN_COOKIE_SEPARATOR /* @min:%2ecookieSeparator */]);\r\n if (params[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n _self.id = params[0];\r\n // we already have a cookie\r\n _self[_DYN_IS_USER_COOKIE_SET /* @min:%2eisUserCookieSet */] = !!_self.id;\r\n }\r\n }\r\n function _generateNewId() {\r\n var theConfig = (config || {});\r\n var getNewId = (theConfig[_DYN_GET_NEW_ID /* @min:%2egetNewId */] ? theConfig[_DYN_GET_NEW_ID /* @min:%2egetNewId */]() : null) || newId;\r\n var id = getNewId(theConfig[_DYN_ID_LENGTH /* @min:%2eidLength */] ? config[_DYN_ID_LENGTH /* @min:%2eidLength */]() : 22);\r\n return id;\r\n }\r\n function _generateNewCookie(userId) {\r\n var acqStr = toISOString(new Date());\r\n _self.accountAcquisitionDate = acqStr;\r\n _self[_DYN_IS_NEW_USER /* @min:%2eisNewUser */] = true;\r\n var newCookie = [userId, acqStr];\r\n return newCookie;\r\n }\r\n function _setUserCookie(cookie) {\r\n // without expiration, cookies expire at the end of the session\r\n // set it to 365 days from now\r\n // 365 * 24 * 60 * 60 = 31536000\r\n var oneYear = 31536000;\r\n _self[_DYN_IS_USER_COOKIE_SET /* @min:%2eisUserCookieSet */] = _cookieManager.set(_storageNamePrefix(), cookie, oneYear);\r\n }\r\n if (!_self.id) {\r\n _self.id = _generateNewId();\r\n var newCookie = _generateNewCookie(_self.id);\r\n _setUserCookie(newCookie[_DYN_JOIN /* @min:%2ejoin */](User[_DYN_COOKIE_SEPARATOR /* @min:%2ecookieSeparator */]));\r\n // If we have an config.namePrefix() + ai_session in local storage this means the user actively removed our cookies.\r\n // We should respect their wishes and clear ourselves from local storage\r\n var name_1 = config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */] && config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */]() ? config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */]() + \"ai_session\" : \"ai_session\";\r\n utlRemoveStorage(_logger, name_1);\r\n }\r\n // We still take the account id from the ctor param for backward compatibility.\r\n // But if the the customer set the accountId through the newer setAuthenticatedUserContext API, we will override it.\r\n _self[_DYN_ACCOUNT_ID /* @min:%2eaccountId */] = config[_DYN_ACCOUNT_ID /* @min:%2eaccountId */] ? config[_DYN_ACCOUNT_ID /* @min:%2eaccountId */]() : undefined;\r\n // Get the auth user id and account id from the cookie if exists\r\n // Cookie is in the pattern: |\r\n var authCookie = _cookieManager.get(User[_DYN_AUTH_USER_COOKIE_NAM8 /* @min:%2eauthUserCookieName */]);\r\n if (authCookie) {\r\n authCookie = decodeURI(authCookie);\r\n var authCookieString = authCookie.split(User[_DYN_COOKIE_SEPARATOR /* @min:%2ecookieSeparator */]);\r\n if (authCookieString[0]) {\r\n _self[_DYN_AUTHENTICATED_ID /* @min:%2eauthenticatedId */] = authCookieString[0];\r\n }\r\n if (authCookieString[_DYN_LENGTH /* @min:%2elength */] > 1 && authCookieString[1]) {\r\n _self[_DYN_ACCOUNT_ID /* @min:%2eaccountId */] = authCookieString[1];\r\n }\r\n }\r\n _self.setAuthenticatedUserContext = function (authenticatedUserId, accountId, storeInCookie) {\r\n if (storeInCookie === void 0) { storeInCookie = false; }\r\n // Validate inputs to ensure no cookie control characters.\r\n var isInvalidInput = !_validateUserInput(authenticatedUserId) || (accountId && !_validateUserInput(accountId));\r\n if (isInvalidInput) {\r\n _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 60 /* _eInternalMessageId.SetAuthContextFailedAccountName */, \"Setting auth user context failed. \" +\r\n \"User auth/account id should be of type string, and not contain commas, semi-colons, equal signs, spaces, or vertical-bars.\", true);\r\n return;\r\n }\r\n // Create cookie string.\r\n _self[_DYN_AUTHENTICATED_ID /* @min:%2eauthenticatedId */] = authenticatedUserId;\r\n var authCookie = _self[_DYN_AUTHENTICATED_ID /* @min:%2eauthenticatedId */];\r\n if (accountId) {\r\n _self[_DYN_ACCOUNT_ID /* @min:%2eaccountId */] = accountId;\r\n authCookie = [_self[_DYN_AUTHENTICATED_ID /* @min:%2eauthenticatedId */], _self.accountId][_DYN_JOIN /* @min:%2ejoin */](User[_DYN_COOKIE_SEPARATOR /* @min:%2ecookieSeparator */]);\r\n }\r\n if (storeInCookie) {\r\n // Set the cookie. No expiration date because this is a session cookie (expires when browser closed).\r\n // Encoding the cookie to handle unexpected unicode characters.\r\n _cookieManager.set(User[_DYN_AUTH_USER_COOKIE_NAM8 /* @min:%2eauthUserCookieName */], encodeURI(authCookie));\r\n }\r\n };\r\n /**\r\n * Clears the authenticated user id and the account id from the user context.\r\n * @returns {}\r\n */\r\n _self.clearAuthenticatedUserContext = function () {\r\n _self[_DYN_AUTHENTICATED_ID /* @min:%2eauthenticatedId */] = null;\r\n _self[_DYN_ACCOUNT_ID /* @min:%2eaccountId */] = null;\r\n _cookieManager.del(User[_DYN_AUTH_USER_COOKIE_NAM8 /* @min:%2eauthUserCookieName */]);\r\n };\r\n _self[_DYN_UPDATE /* @min:%2eupdate */] = function (userId) {\r\n // Optimizations to avoid setting and processing the cookie when not needed\r\n if (_self.id !== userId || !_self[_DYN_IS_USER_COOKIE_SET /* @min:%2eisUserCookieSet */]) {\r\n var user_id = userId ? userId : _generateNewId();\r\n var user_cookie = _generateNewCookie(user_id);\r\n _setUserCookie(user_cookie[_DYN_JOIN /* @min:%2ejoin */](User[_DYN_COOKIE_SEPARATOR /* @min:%2ecookieSeparator */]));\r\n }\r\n };\r\n });\r\n }\r\n// Removed Stub for User.prototype.setAuthenticatedUserContext.\r\n// Removed Stub for User.prototype.clearAuthenticatedUserContext.\r\n// Removed Stub for User.prototype.update.\r\n User.cookieSeparator = \"|\";\r\n User.userCookieName = \"ai_user\";\r\n User.authUserCookieName = \"ai_authUser\";\r\n return User;\r\n}());\r\nexport { User };\r\n","/*\n * Application Insights JavaScript SDK - Properties Plugin, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n/**\r\n* TelemetryContext.ts\r\n* @copyright Microsoft 2018\r\n*/\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { CtxTagKeys, Extensions, PageView } from \"@microsoft/applicationinsights-common\";\r\nimport { _InternalLogMessage, getSetValue, hasWindow, isNullOrUndefined, isString, objKeys, setValue } from \"@microsoft/applicationinsights-core-js\";\r\nimport { Application } from \"./Context/Application\";\r\nimport { Device } from \"./Context/Device\";\r\nimport { Internal } from \"./Context/Internal\";\r\nimport { Location } from \"./Context/Location\";\r\nimport { Session, _SessionManager } from \"./Context/Session\";\r\nimport { TelemetryTrace } from \"./Context/TelemetryTrace\";\r\nimport { User } from \"./Context/User\";\r\nimport { _DYN_ACCOUNT_ID, _DYN_APPLY_APPLICATION_CO1, _DYN_APPLY_DEVICE_CONTEXT, _DYN_APPLY_INTERNAL_CONTE5, _DYN_APPLY_LOCATION_CONTE4, _DYN_APPLY_OPERATING_SYST3, _DYN_APPLY_OPERATION_CONT2, _DYN_APPLY_SESSION_CONTEX0, _DYN_APPLY_USER_CONTEXT, _DYN_AUTHENTICATED_ID, _DYN_AUTOMATIC_SESSION, _DYN_GET_SESSION_ID, _DYN_LENGTH, _DYN_SESSION_MANAGER, _DYN_TELEMETRY_TRACE } from \"./__DynamicConstants\";\r\nvar strExt = \"ext\";\r\nvar strTags = \"tags\";\r\nfunction _removeEmpty(target, name) {\r\n if (target && target[name] && objKeys(target[name])[_DYN_LENGTH /* @min:%2elength */] === 0) {\r\n delete target[name];\r\n }\r\n}\r\nvar TelemetryContext = /** @class */ (function () {\r\n function TelemetryContext(core, defaultConfig, previousTraceCtx) {\r\n var _this = this;\r\n var logger = core.logger;\r\n this.appId = function () { return null; };\r\n this[_DYN_GET_SESSION_ID /* @min:%2egetSessionId */] = function () { return null; };\r\n dynamicProto(TelemetryContext, this, function (_self) {\r\n _self.application = new Application();\r\n _self.internal = new Internal(defaultConfig);\r\n if (hasWindow()) {\r\n _self[_DYN_SESSION_MANAGER /* @min:%2esessionManager */] = new _SessionManager(defaultConfig, core);\r\n _self.device = new Device();\r\n _self.location = new Location();\r\n _self.user = new User(defaultConfig, core);\r\n var traceId = void 0;\r\n var parentId = void 0;\r\n var name_1;\r\n if (previousTraceCtx) {\r\n traceId = previousTraceCtx.getTraceId();\r\n parentId = previousTraceCtx.getSpanId();\r\n name_1 = previousTraceCtx.getName();\r\n }\r\n _self[_DYN_TELEMETRY_TRACE /* @min:%2etelemetryTrace */] = new TelemetryTrace(traceId, parentId, name_1, logger);\r\n _self.session = new Session();\r\n }\r\n _self[_DYN_GET_SESSION_ID /* @min:%2egetSessionId */] = function () {\r\n var session = _self.session;\r\n var sesId = null;\r\n // If customer set session info, apply their context; otherwise apply context automatically generated\r\n if (session && isString(session.id)) {\r\n sesId = session.id;\r\n }\r\n else {\r\n // Gets the automatic session if it exists or an empty object\r\n var autoSession = (_self[_DYN_SESSION_MANAGER /* @min:%2esessionManager */] || {})[_DYN_AUTOMATIC_SESSION /* @min:%2eautomaticSession */];\r\n sesId = autoSession && isString(autoSession.id) ? autoSession.id : null;\r\n }\r\n return sesId;\r\n };\r\n _self[_DYN_APPLY_SESSION_CONTEX0 /* @min:%2eapplySessionContext */] = function (evt, itemCtx) {\r\n setValue(getSetValue(evt.ext, Extensions.AppExt), \"sesId\", _self[_DYN_GET_SESSION_ID /* @min:%2egetSessionId */](), isString);\r\n };\r\n _self[_DYN_APPLY_OPERATING_SYST3 /* @min:%2eapplyOperatingSystemContxt */] = function (evt, itemCtx) {\r\n setValue(evt.ext, Extensions.OSExt, _self.os);\r\n };\r\n _self[_DYN_APPLY_APPLICATION_CO1 /* @min:%2eapplyApplicationContext */] = function (evt, itemCtx) {\r\n var application = _self.application;\r\n if (application) {\r\n // evt.ext.app\r\n var tags = getSetValue(evt, strTags);\r\n setValue(tags, CtxTagKeys.applicationVersion, application.ver, isString);\r\n setValue(tags, CtxTagKeys.applicationBuild, application.build, isString);\r\n }\r\n };\r\n _self[_DYN_APPLY_DEVICE_CONTEXT /* @min:%2eapplyDeviceContext */] = function (evt, itemCtx) {\r\n var device = _self.device;\r\n if (device) {\r\n // evt.ext.device\r\n var extDevice = getSetValue(getSetValue(evt, strExt), Extensions.DeviceExt);\r\n setValue(extDevice, \"localId\", device.id, isString);\r\n setValue(extDevice, \"ip\", device.ip, isString);\r\n setValue(extDevice, \"model\", device.model, isString);\r\n setValue(extDevice, \"deviceClass\", device.deviceClass, isString);\r\n }\r\n };\r\n _self[_DYN_APPLY_INTERNAL_CONTE5 /* @min:%2eapplyInternalContext */] = function (evt, itemCtx) {\r\n var internal = _self.internal;\r\n if (internal) {\r\n var tags = getSetValue(evt, strTags);\r\n setValue(tags, CtxTagKeys.internalAgentVersion, internal.agentVersion, isString); // not mapped in CS 4.0\r\n setValue(tags, CtxTagKeys.internalSdkVersion, internal.sdkVersion, isString);\r\n if (evt.baseType === _InternalLogMessage.dataType || evt.baseType === PageView.dataType) {\r\n setValue(tags, CtxTagKeys.internalSnippet, internal.snippetVer, isString);\r\n setValue(tags, CtxTagKeys.internalSdkSrc, internal.sdkSrc, isString);\r\n }\r\n }\r\n };\r\n _self[_DYN_APPLY_LOCATION_CONTE4 /* @min:%2eapplyLocationContext */] = function (evt, itemCtx) {\r\n var location = _this.location;\r\n if (location) {\r\n setValue(getSetValue(evt, strTags, []), CtxTagKeys.locationIp, location.ip, isString);\r\n }\r\n };\r\n _self[_DYN_APPLY_OPERATION_CONT2 /* @min:%2eapplyOperationContext */] = function (evt, itemCtx) {\r\n var telemetryTrace = _self[_DYN_TELEMETRY_TRACE /* @min:%2etelemetryTrace */];\r\n if (telemetryTrace) {\r\n var extTrace = getSetValue(getSetValue(evt, strExt), Extensions.TraceExt, { traceID: undefined, parentID: undefined });\r\n setValue(extTrace, \"traceID\", telemetryTrace.traceID, isString, isNullOrUndefined);\r\n setValue(extTrace, \"name\", telemetryTrace.name, isString, isNullOrUndefined);\r\n setValue(extTrace, \"parentID\", telemetryTrace.parentID, isString, isNullOrUndefined);\r\n }\r\n };\r\n _self.applyWebContext = function (evt, itemCtx) {\r\n var web = _this.web;\r\n if (web) {\r\n setValue(getSetValue(evt, strExt), Extensions.WebExt, web);\r\n }\r\n };\r\n _self[_DYN_APPLY_USER_CONTEXT /* @min:%2eapplyUserContext */] = function (evt, itemCtx) {\r\n var user = _self.user;\r\n if (user) {\r\n var tags = getSetValue(evt, strTags, []);\r\n // stays in tags\r\n setValue(tags, CtxTagKeys.userAccountId, user[_DYN_ACCOUNT_ID /* @min:%2eaccountId */], isString);\r\n // CS 4.0\r\n var extUser = getSetValue(getSetValue(evt, strExt), Extensions.UserExt);\r\n setValue(extUser, \"id\", user.id, isString);\r\n setValue(extUser, \"authId\", user[_DYN_AUTHENTICATED_ID /* @min:%2eauthenticatedId */], isString);\r\n }\r\n };\r\n _self.cleanUp = function (evt, itemCtx) {\r\n var ext = evt.ext;\r\n if (ext) {\r\n _removeEmpty(ext, Extensions.DeviceExt);\r\n _removeEmpty(ext, Extensions.UserExt);\r\n _removeEmpty(ext, Extensions.WebExt);\r\n _removeEmpty(ext, Extensions.OSExt);\r\n _removeEmpty(ext, Extensions.AppExt);\r\n _removeEmpty(ext, Extensions.TraceExt);\r\n }\r\n };\r\n });\r\n }\r\n// Removed Stub for TelemetryContext.prototype.applySessionContext.\r\n// Removed Stub for TelemetryContext.prototype.applyOperatingSystemContxt.\r\n// Removed Stub for TelemetryContext.prototype.applyApplicationContext.\r\n// Removed Stub for TelemetryContext.prototype.applyDeviceContext.\r\n// Removed Stub for TelemetryContext.prototype.applyInternalContext.\r\n// Removed Stub for TelemetryContext.prototype.applyLocationContext.\r\n// Removed Stub for TelemetryContext.prototype.applyOperationContext.\r\n// Removed Stub for TelemetryContext.prototype.applyWebContext.\r\n// Removed Stub for TelemetryContext.prototype.applyUserContext.\r\n// Removed Stub for TelemetryContext.prototype.cleanUp.\r\n // This is a workaround for an IE8 bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n // this will be removed when ES3 support is dropped.\n TelemetryContext.__ieDyn=1;\n\n return TelemetryContext;\r\n}());\r\nexport { TelemetryContext };\r\n","/*\n * Application Insights JavaScript SDK - Properties Plugin, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n/**\r\n* PropertiesPlugin.ts\r\n* @copyright Microsoft 2018\r\n*/\r\nimport { __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { BreezeChannelIdentifier, PageView, PropertiesPluginIdentifier, createDistributedTraceContextFromTrace } from \"@microsoft/applicationinsights-common\";\r\nimport { BaseTelemetryPlugin, _InternalLogMessage, _logInternalMessage, createProcessTelemetryContext, getNavigator, getSetValue, isNullOrUndefined, objForEachKey } from \"@microsoft/applicationinsights-core-js\";\r\nimport { TelemetryContext } from \"./TelemetryContext\";\r\nimport { _DYN_ACCOUNT_ID, _DYN_APPLY_APPLICATION_CO1, _DYN_APPLY_DEVICE_CONTEXT, _DYN_APPLY_INTERNAL_CONTE5, _DYN_APPLY_LOCATION_CONTE4, _DYN_APPLY_OPERATING_SYST3, _DYN_APPLY_OPERATION_CONT2, _DYN_APPLY_SESSION_CONTEX0, _DYN_APPLY_USER_CONTEXT, _DYN_COOKIE_DOMAIN, _DYN_GET_NEW_ID, _DYN_GET_SESSION_ID, _DYN_GET_TRACE_CTX, _DYN_ID_LENGTH, _DYN_IS_NEW_USER, _DYN_IS_USER_COOKIE_SET, _DYN_NAME_PREFIX, _DYN_SDK_EXTENSION, _DYN_SESSION_COOKIE_POSTF6, _DYN_SESSION_MANAGER, _DYN_TELEMETRY_TRACE, _DYN_UPDATE, _DYN_USER_COOKIE_POSTFIX } from \"./__DynamicConstants\";\r\nvar PropertiesPlugin = /** @class */ (function (_super) {\r\n __extends(PropertiesPlugin, _super);\r\n function PropertiesPlugin() {\r\n var _this = _super.call(this) || this;\r\n _this.priority = 110;\r\n _this.identifier = PropertiesPluginIdentifier;\r\n var _extensionConfig;\r\n var _distributedTraceCtx;\r\n var _previousTraceCtx;\r\n dynamicProto(PropertiesPlugin, _this, function (_self, _base) {\r\n _initDefaults();\r\n _self.initialize = function (config, core, extensions, pluginChain) {\r\n _base.initialize(config, core, extensions, pluginChain);\r\n _populateDefaults(config);\r\n };\r\n /**\r\n * Add Part A fields to the event\r\n * @param event The event that needs to be processed\r\n */\r\n _self.processTelemetry = function (event, itemCtx) {\r\n if (isNullOrUndefined(event)) {\r\n // TODO(barustum): throw an internal event once we have support for internal logging\r\n }\r\n else {\r\n itemCtx = _self._getTelCtx(itemCtx);\r\n // If the envelope is PageView, reset the internal message count so that we can send internal telemetry for the new page.\r\n if (event.name === PageView.envelopeType) {\r\n itemCtx.diagLog().resetInternalMessageCount();\r\n }\r\n var theContext = (_self.context || {});\r\n if (theContext.session) {\r\n // If customer did not provide custom session id update the session manager\r\n if (typeof _self.context.session.id !== \"string\" && theContext[_DYN_SESSION_MANAGER /* @min:%2esessionManager */]) {\r\n theContext[_DYN_SESSION_MANAGER /* @min:%2esessionManager */][_DYN_UPDATE /* @min:%2eupdate */]();\r\n }\r\n }\r\n var userCtx = theContext.user;\r\n if (userCtx && !userCtx[_DYN_IS_USER_COOKIE_SET /* @min:%2eisUserCookieSet */]) {\r\n userCtx[_DYN_UPDATE /* @min:%2eupdate */](theContext.user.id);\r\n }\r\n _processTelemetryInternal(event, itemCtx);\r\n if (userCtx && userCtx[_DYN_IS_NEW_USER /* @min:%2eisNewUser */]) {\r\n userCtx[_DYN_IS_NEW_USER /* @min:%2eisNewUser */] = false;\r\n var message = new _InternalLogMessage(72 /* _eInternalMessageId.SendBrowserInfoOnUserInit */, ((getNavigator() || {}).userAgent || \"\"));\r\n _logInternalMessage(itemCtx.diagLog(), 1 /* eLoggingSeverity.CRITICAL */, message);\r\n }\r\n _self.processNext(event, itemCtx);\r\n }\r\n };\r\n _self._doTeardown = function (unloadCtx, unloadState) {\r\n var core = (unloadCtx || {}).core();\r\n if (core && core[_DYN_GET_TRACE_CTX /* @min:%2egetTraceCtx */]) {\r\n var traceCtx = core[_DYN_GET_TRACE_CTX /* @min:%2egetTraceCtx */](false);\r\n if (traceCtx === _distributedTraceCtx) {\r\n core.setTraceCtx(_previousTraceCtx);\r\n }\r\n }\r\n _initDefaults();\r\n };\r\n function _initDefaults() {\r\n _extensionConfig = null;\r\n _distributedTraceCtx = null;\r\n _previousTraceCtx = null;\r\n }\r\n function _populateDefaults(config) {\r\n var identifier = _self.identifier;\r\n var core = _self.core;\r\n var ctx = createProcessTelemetryContext(null, config, core);\r\n var defaultConfig = PropertiesPlugin.getDefaultConfig();\r\n _extensionConfig = _extensionConfig || {};\r\n objForEachKey(defaultConfig, function (field, value) {\r\n _extensionConfig[field] = function () { return ctx.getConfig(identifier, field, value()); };\r\n });\r\n _previousTraceCtx = core[_DYN_GET_TRACE_CTX /* @min:%2egetTraceCtx */](false);\r\n _self.context = new TelemetryContext(core, _extensionConfig, _previousTraceCtx);\r\n _distributedTraceCtx = createDistributedTraceContextFromTrace(_self.context[_DYN_TELEMETRY_TRACE /* @min:%2etelemetryTrace */], _previousTraceCtx);\r\n core.setTraceCtx(_distributedTraceCtx);\r\n _self.context.appId = function () {\r\n var breezeChannel = core.getPlugin(BreezeChannelIdentifier);\r\n return breezeChannel ? breezeChannel.plugin[\"_appId\"] : null;\r\n };\r\n // Test hook to allow accessing the internal values -- explicitly not defined as an available property on the class\r\n _self[\"_extConfig\"] = _extensionConfig;\r\n }\r\n function _processTelemetryInternal(evt, itemCtx) {\r\n // Set Part A fields\r\n getSetValue(evt, \"tags\", []);\r\n getSetValue(evt, \"ext\", {});\r\n var ctx = _self.context;\r\n ctx[_DYN_APPLY_SESSION_CONTEX0 /* @min:%2eapplySessionContext */](evt, itemCtx);\r\n ctx[_DYN_APPLY_APPLICATION_CO1 /* @min:%2eapplyApplicationContext */](evt, itemCtx);\r\n ctx[_DYN_APPLY_DEVICE_CONTEXT /* @min:%2eapplyDeviceContext */](evt, itemCtx);\r\n ctx[_DYN_APPLY_OPERATION_CONT2 /* @min:%2eapplyOperationContext */](evt, itemCtx);\r\n ctx[_DYN_APPLY_USER_CONTEXT /* @min:%2eapplyUserContext */](evt, itemCtx);\r\n ctx[_DYN_APPLY_OPERATING_SYST3 /* @min:%2eapplyOperatingSystemContxt */](evt, itemCtx);\r\n ctx.applyWebContext(evt, itemCtx);\r\n ctx[_DYN_APPLY_LOCATION_CONTE4 /* @min:%2eapplyLocationContext */](evt, itemCtx); // legacy tags\r\n ctx[_DYN_APPLY_INTERNAL_CONTE5 /* @min:%2eapplyInternalContext */](evt, itemCtx); // legacy tags\r\n ctx.cleanUp(evt, itemCtx);\r\n }\r\n });\r\n return _this;\r\n }\r\n PropertiesPlugin.getDefaultConfig = function () {\r\n var _a;\r\n var defaultValue;\r\n var nullValue = null;\r\n var defaultConfig = (_a = {\r\n instrumentationKey: function () { return defaultValue; }\r\n },\r\n _a[_DYN_ACCOUNT_ID /* @min:accountId */] = function () { return nullValue; },\r\n _a.sessionRenewalMs = function () { return 30 * 60 * 1000; },\r\n _a.samplingPercentage = function () { return 100; },\r\n _a.sessionExpirationMs = function () { return 24 * 60 * 60 * 1000; },\r\n _a[_DYN_COOKIE_DOMAIN /* @min:cookieDomain */] = function () { return nullValue; },\r\n _a[_DYN_SDK_EXTENSION /* @min:sdkExtension */] = function () { return nullValue; },\r\n _a.isBrowserLinkTrackingEnabled = function () { return false; },\r\n _a.appId = function () { return nullValue; },\r\n _a[_DYN_GET_SESSION_ID /* @min:getSessionId */] = function () { return nullValue; },\r\n _a[_DYN_NAME_PREFIX /* @min:namePrefix */] = function () { return defaultValue; },\r\n _a[_DYN_SESSION_COOKIE_POSTF6 /* @min:sessionCookiePostfix */] = function () { return defaultValue; },\r\n _a[_DYN_USER_COOKIE_POSTFIX /* @min:userCookiePostfix */] = function () { return defaultValue; },\r\n _a[_DYN_ID_LENGTH /* @min:idLength */] = function () { return 22; },\r\n _a[_DYN_GET_NEW_ID /* @min:getNewId */] = function () { return nullValue; },\r\n _a);\r\n return defaultConfig;\r\n };\r\n// Removed Stub for PropertiesPlugin.prototype.initialize.\r\n// Removed Stub for PropertiesPlugin.prototype.processTelemetry.\r\n return PropertiesPlugin;\r\n}(BaseTelemetryPlugin));\r\nexport default PropertiesPlugin;\r\n","/*\n * Application Insights JavaScript SDK - Web, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Generally you should only put values that are used more than 2 times and then only if not already exposed as a constant (such as SdkCoreNames)\r\n// as when using \"short\" named values from here they will be will be minified smaller than the SdkCoreNames[eSdkCoreNames.xxxx] value.\r\nvar _AUTHENTICATED_USER_CONTEXT = \"AuthenticatedUserContext\";\r\nvar _TRACK = \"track\";\r\nexport var STR_EMPTY = \"\";\r\nexport var STR_SNIPPET = \"snippet\";\r\nexport var STR_GET_COOKIE_MGR = \"getCookieMgr\";\r\nexport var STR_START_TRACK_PAGE = \"startTrackPage\";\r\nexport var STR_STOP_TRACK_PAGE = \"stopTrackPage\";\r\nexport var STR_FLUSH = \"flush\";\r\nexport var STR_START_TRACK_EVENT = \"startTrackEvent\";\r\nexport var STR_STOP_TRACK_EVENT = \"stopTrackEvent\";\r\nexport var STR_ADD_TELEMETRY_INITIALIZER = \"addTelemetryInitializer\";\r\nexport var STR_ADD_TELEMETRY_INITIALIZERS = STR_ADD_TELEMETRY_INITIALIZER + \"s\";\r\nexport var STR_POLL_INTERNAL_LOGS = \"pollInternalLogs\";\r\nexport var STR_GET_PLUGIN = \"getPlugin\";\r\nexport var STR_EVT_NAMESPACE = \"evtNamespace\";\r\nexport var STR_TRACK_EVENT = _TRACK + \"Event\";\r\nexport var STR_TRACK_TRACE = _TRACK + \"Trace\";\r\nexport var STR_TRACK_METRIC = _TRACK + \"Metric\";\r\nexport var STR_TRACK_PAGE_VIEW = _TRACK + \"PageView\";\r\nexport var STR_TRACK_EXCEPTION = _TRACK + \"Exception\";\r\nexport var STR_TRACK_DEPENDENCY_DATA = _TRACK + \"DependencyData\";\r\nexport var STR_SET_AUTHENTICATED_USER_CONTEXT = \"set\" + _AUTHENTICATED_USER_CONTEXT;\r\nexport var STR_CLEAR_AUTHENTICATED_USER_CONTEXT = \"clear\" + _AUTHENTICATED_USER_CONTEXT;\r\n","/*\n * Application Insights JavaScript SDK - Web, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n\"use strict\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { AnalyticsPlugin } from \"@microsoft/applicationinsights-analytics-js\";\r\nimport { Sender } from \"@microsoft/applicationinsights-channel-js\";\r\nimport { AnalyticsPluginIdentifier, BreezeChannelIdentifier, ConfigurationManager, ConnectionStringParser, ContextTagKeys, CorrelationIdHelper, CtxTagKeys, DEFAULT_BREEZE_ENDPOINT, DEFAULT_BREEZE_PATH, Data, DataSanitizer, DateTimeUtils, DisabledPropertyName, DistributedTracingModes, Envelope, Event, Exception, Extensions, HttpMethod, Metric, PageView, PageViewPerformance, ProcessLegacy, PropertiesPluginIdentifier, RemoteDependencyData, RequestHeaders, SampleRate, SeverityLevel, TelemetryItemCreator, Trace, UrlHelper, Util, parseConnectionString } from \"@microsoft/applicationinsights-common\";\r\nimport { AppInsightsCore, _throwInternal, addPageHideEventListener, addPageUnloadEventListener, arrForEach, arrIndexOf, createUniqueNamespace, doPerf, hasDocument, hasWindow, isArray, isFunction, isNullOrUndefined, isReactNative, isString, mergeEvtNamespace, objForEachKey, proxyAssign, proxyFunctions, removePageHideEventListener, removePageUnloadEventListener, throwError } from \"@microsoft/applicationinsights-core-js\";\r\nimport { AjaxPlugin as DependenciesPlugin } from \"@microsoft/applicationinsights-dependencies-js\";\r\nimport { PropertiesPlugin } from \"@microsoft/applicationinsights-properties-js\";\r\nimport { STR_ADD_TELEMETRY_INITIALIZER, STR_CLEAR_AUTHENTICATED_USER_CONTEXT, STR_EVT_NAMESPACE, STR_FLUSH, STR_GET_COOKIE_MGR, STR_GET_PLUGIN, STR_POLL_INTERNAL_LOGS, STR_SET_AUTHENTICATED_USER_CONTEXT, STR_SNIPPET, STR_START_TRACK_EVENT, STR_START_TRACK_PAGE, STR_STOP_TRACK_EVENT, STR_STOP_TRACK_PAGE, STR_TRACK_DEPENDENCY_DATA, STR_TRACK_EVENT, STR_TRACK_EXCEPTION, STR_TRACK_METRIC, STR_TRACK_PAGE_VIEW, STR_TRACK_TRACE } from \"./InternalConstants\";\r\nimport { _DYN_ADD_HOUSEKEEPING_BEF20, _DYN_APP_INSIGHTS, _DYN_CONFIG, _DYN_CONNECTION_STRING, _DYN_CONTEXT, _DYN_DIAGNOSTIC_LOG_INTER4, _DYN_DISABLE_FLUSH_ON_BEF11, _DYN_DISABLE_FLUSH_ON_UNL12, _DYN_DISABLE_IKEY_DEPRECA18, _DYN_ENDPOINT_URL, _DYN_GET_TRANSMISSION_CON19, _DYN_INDEX_OF, _DYN_INSTRUMENTATION_KEY, _DYN_LOAD_APP_INSIGHTS, _DYN_ONUNLOAD_FLUSH, _DYN_PUSH, _DYN_QUEUE, _DYN_UPDATE_SNIPPET_DEFIN0, _DYN_VERSION } from \"./__DynamicConstants\";\r\nvar _internalSdkSrc;\r\n// This is an exclude list of properties that should not be updated during initialization\r\n// They include a combination of private and internal property names\r\nvar _ignoreUpdateSnippetProperties = [\r\n STR_SNIPPET, \"dependencies\", \"properties\", \"_snippetVersion\", \"appInsightsNew\", \"getSKUDefaults\"\r\n];\r\n// Re-exposing the Common classes as Telemetry, the list was taken by reviewing the generated code for the build while using\r\n// the previous configuration :-\r\n// import * as Common from \"@microsoft/applicationinsights-common\"\r\n// export const Telemetry = Common;\r\nvar fieldType = {\r\n Default: 0 /* FieldType.Default */,\r\n Required: 1 /* FieldType.Required */,\r\n Array: 2 /* FieldType.Array */,\r\n Hidden: 4 /* FieldType.Hidden */\r\n};\r\n/**\r\n * Telemetry type classes, e.g. PageView, Exception, etc\r\n */\r\nexport var Telemetry = {\r\n __proto__: null,\r\n PropertiesPluginIdentifier: PropertiesPluginIdentifier,\r\n BreezeChannelIdentifier: BreezeChannelIdentifier,\r\n AnalyticsPluginIdentifier: AnalyticsPluginIdentifier,\r\n Util: Util,\r\n CorrelationIdHelper: CorrelationIdHelper,\r\n UrlHelper: UrlHelper,\r\n DateTimeUtils: DateTimeUtils,\r\n ConnectionStringParser: ConnectionStringParser,\r\n FieldType: fieldType,\r\n RequestHeaders: RequestHeaders,\r\n DisabledPropertyName: DisabledPropertyName,\r\n ProcessLegacy: ProcessLegacy,\r\n SampleRate: SampleRate,\r\n HttpMethod: HttpMethod,\r\n DEFAULT_BREEZE_ENDPOINT: DEFAULT_BREEZE_ENDPOINT,\r\n Envelope: Envelope,\r\n Event: Event,\r\n Exception: Exception,\r\n Metric: Metric,\r\n PageView: PageView,\r\n RemoteDependencyData: RemoteDependencyData,\r\n Trace: Trace,\r\n PageViewPerformance: PageViewPerformance,\r\n Data: Data,\r\n SeverityLevel: SeverityLevel,\r\n ConfigurationManager: ConfigurationManager,\r\n ContextTagKeys: ContextTagKeys,\r\n DataSanitizer: DataSanitizer,\r\n TelemetryItemCreator: TelemetryItemCreator,\r\n CtxTagKeys: CtxTagKeys,\r\n Extensions: Extensions,\r\n DistributedTracingModes: DistributedTracingModes\r\n};\r\n/**\r\n * Application Insights API\r\n * @class Initialization\r\n * @implements {IApplicationInsights}\r\n */\r\nvar Initialization = /** @class */ (function () {\r\n function Initialization(snippet) {\r\n var _this = this;\r\n // NOTE!: DON'T set default values here, instead set them in the _initDefaults() function as it is also called during teardown()\r\n var dependencies;\r\n var properties;\r\n var _sender;\r\n var _snippetVersion;\r\n var _evtNamespace;\r\n var _houseKeepingNamespace;\r\n var _core;\r\n dynamicProto(Initialization, this, function (_self) {\r\n _initDefaults();\r\n // initialize the queue and config in case they are undefined\r\n _snippetVersion = \"\" + (snippet.sv || snippet[_DYN_VERSION /* @min:%2eversion */] || \"\");\r\n snippet[_DYN_QUEUE /* @min:%2equeue */] = snippet[_DYN_QUEUE /* @min:%2equeue */] || [];\r\n snippet[_DYN_VERSION /* @min:%2eversion */] = snippet[_DYN_VERSION /* @min:%2eversion */] || 2.0; // Default to new version\r\n var config = snippet[_DYN_CONFIG /* @min:%2econfig */] || {};\r\n if (config[_DYN_CONNECTION_STRING /* @min:%2econnectionString */]) {\r\n var cs = parseConnectionString(config[_DYN_CONNECTION_STRING /* @min:%2econnectionString */]);\r\n var ingest = cs.ingestionendpoint;\r\n config[_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */] = ingest ? (ingest + DEFAULT_BREEZE_PATH) : config[_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */]; // only add /v2/track when from connectionstring\r\n config[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */] = cs.instrumentationkey || config[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */];\r\n }\r\n _self[_DYN_APP_INSIGHTS /* @min:%2eappInsights */] = new AnalyticsPlugin();\r\n properties = new PropertiesPlugin();\r\n dependencies = new DependenciesPlugin();\r\n _sender = new Sender();\r\n _core = new AppInsightsCore();\r\n _self.core = _core;\r\n var isErrMessageDisabled = isNullOrUndefined(config[_DYN_DISABLE_IKEY_DEPRECA18 /* @min:%2edisableIkeyDeprecationMessage */]) ? true : config[_DYN_DISABLE_IKEY_DEPRECA18 /* @min:%2edisableIkeyDeprecationMessage */];\r\n if (!config[_DYN_CONNECTION_STRING /* @min:%2econnectionString */] && !isErrMessageDisabled) {\r\n _throwInternal(_core.logger, 1 /* eLoggingSeverity.CRITICAL */, 106 /* _eInternalMessageId.InstrumentationKeyDeprecation */, \"Instrumentation key support will end soon, see aka.ms/IkeyMigrate\");\r\n }\r\n _self[STR_SNIPPET /* @min:%2esnippet */] = snippet;\r\n _self[_DYN_CONFIG /* @min:%2econfig */] = config;\r\n _getSKUDefaults();\r\n _self[STR_FLUSH /* @min:%2eflush */] = function (async) {\r\n if (async === void 0) { async = true; }\r\n doPerf(_core, function () { return \"AISKU.flush\"; }, function () {\r\n arrForEach(_core[_DYN_GET_TRANSMISSION_CON19 /* @min:%2egetTransmissionControls */](), function (channels) {\r\n arrForEach(channels, function (channel) {\r\n channel[STR_FLUSH /* @min:%2eflush */](async);\r\n });\r\n });\r\n }, null, async);\r\n };\r\n _self[_DYN_ONUNLOAD_FLUSH /* @min:%2eonunloadFlush */] = function (async) {\r\n if (async === void 0) { async = true; }\r\n arrForEach(_core[_DYN_GET_TRANSMISSION_CON19 /* @min:%2egetTransmissionControls */](), function (channels) {\r\n arrForEach(channels, function (channel) {\r\n if (channel[_DYN_ONUNLOAD_FLUSH /* @min:%2eonunloadFlush */]) {\r\n channel[_DYN_ONUNLOAD_FLUSH /* @min:%2eonunloadFlush */]();\r\n }\r\n else {\r\n channel[STR_FLUSH /* @min:%2eflush */](async);\r\n }\r\n });\r\n });\r\n };\r\n _self[_DYN_LOAD_APP_INSIGHTS /* @min:%2eloadAppInsights */] = function (legacyMode, logger, notificationManager) {\r\n if (legacyMode === void 0) { legacyMode = false; }\r\n function _updateSnippetProperties(snippet) {\r\n if (snippet) {\r\n var snippetVer = \"\";\r\n if (!isNullOrUndefined(_snippetVersion)) {\r\n snippetVer += _snippetVersion;\r\n }\r\n if (legacyMode) {\r\n snippetVer += \".lg\";\r\n }\r\n if (_self[_DYN_CONTEXT /* @min:%2econtext */] && _self[_DYN_CONTEXT /* @min:%2econtext */].internal) {\r\n _self[_DYN_CONTEXT /* @min:%2econtext */].internal.snippetVer = snippetVer || \"-\";\r\n }\r\n // apply updated properties to the global instance (snippet)\r\n objForEachKey(_self, function (field, value) {\r\n if (isString(field) &&\r\n !isFunction(value) &&\r\n field && field[0] !== \"_\" && // Don't copy \"internal\" values\r\n arrIndexOf(_ignoreUpdateSnippetProperties, field) === -1) {\r\n snippet[field] = value;\r\n }\r\n });\r\n }\r\n }\r\n // dont allow additional channels/other extensions for legacy mode; legacy mode is only to allow users to switch with no code changes!\r\n if (legacyMode && _self[_DYN_CONFIG /* @min:%2econfig */].extensions && _self[_DYN_CONFIG /* @min:%2econfig */].extensions.length > 0) {\r\n throwError(\"Extensions not allowed in legacy mode\");\r\n }\r\n doPerf(_self.core, function () { return \"AISKU.loadAppInsights\"; }, function () {\r\n var extensions = [];\r\n extensions[_DYN_PUSH /* @min:%2epush */](_sender);\r\n extensions[_DYN_PUSH /* @min:%2epush */](properties);\r\n extensions[_DYN_PUSH /* @min:%2epush */](dependencies);\r\n extensions[_DYN_PUSH /* @min:%2epush */](_self[_DYN_APP_INSIGHTS /* @min:%2eappInsights */]);\r\n // initialize core\r\n _core.initialize(_self[_DYN_CONFIG /* @min:%2econfig */], extensions, logger, notificationManager);\r\n _self[_DYN_CONTEXT /* @min:%2econtext */] = properties[_DYN_CONTEXT /* @min:%2econtext */];\r\n if (_internalSdkSrc && _self[_DYN_CONTEXT /* @min:%2econtext */]) {\r\n _self[_DYN_CONTEXT /* @min:%2econtext */].internal.sdkSrc = _internalSdkSrc;\r\n }\r\n _updateSnippetProperties(_self[STR_SNIPPET /* @min:%2esnippet */]);\r\n // Empty queue of all api calls logged prior to sdk download\r\n _self.emptyQueue();\r\n _self[STR_POLL_INTERNAL_LOGS /* @min:%2epollInternalLogs */]();\r\n _self[_DYN_ADD_HOUSEKEEPING_BEF20 /* @min:%2eaddHousekeepingBeforeUnload */](_this);\r\n });\r\n return _self;\r\n };\r\n _self[_DYN_UPDATE_SNIPPET_DEFIN0 /* @min:%2eupdateSnippetDefinitions */] = function (snippet) {\r\n // apply full appInsights to the global instance\r\n // Note: This must be called before loadAppInsights is called\r\n proxyAssign(snippet, _self, function (name) {\r\n // Not excluding names prefixed with \"_\" as we need to proxy some functions like _onError\r\n return name && arrIndexOf(_ignoreUpdateSnippetProperties, name) === -1;\r\n });\r\n };\r\n _self.emptyQueue = function () {\r\n // call functions that were queued before the main script was loaded\r\n try {\r\n if (isArray(_self.snippet[_DYN_QUEUE /* @min:%2equeue */])) {\r\n // note: do not check length in the for-loop conditional in case something goes wrong and the stub methods are not overridden.\r\n var length_1 = _self.snippet[_DYN_QUEUE /* @min:%2equeue */].length;\r\n for (var i = 0; i < length_1; i++) {\r\n var call = _self.snippet[_DYN_QUEUE /* @min:%2equeue */][i];\r\n call();\r\n }\r\n _self.snippet[_DYN_QUEUE /* @min:%2equeue */] = undefined;\r\n delete _self.snippet[_DYN_QUEUE /* @min:%2equeue */];\r\n }\r\n }\r\n catch (exception) {\r\n var properties_1 = {};\r\n if (exception && isFunction(exception.toString)) {\r\n properties_1.exception = exception.toString();\r\n }\r\n // need from core\r\n // Microsoft.ApplicationInsights._InternalLogging.throwInternal(\r\n // eLoggingSeverity.WARNING,\r\n // _eInternalMessageId.FailedToSendQueuedTelemetry,\r\n // \"Failed to send queued telemetry\",\r\n // properties);\r\n }\r\n };\r\n _self[_DYN_ADD_HOUSEKEEPING_BEF20 /* @min:%2eaddHousekeepingBeforeUnload */] = function (appInsightsInstance) {\r\n // Add callback to push events when the user navigates away\r\n if (hasWindow() || hasDocument()) {\r\n var performHousekeeping = function () {\r\n // Adds the ability to flush all data before the page unloads.\r\n // Note: This approach tries to push a sync request with all the pending events onbeforeunload.\r\n // Firefox does not respect this.Other browsers DO push out the call with < 100% hit rate.\r\n // Telemetry here will help us analyze how effective this approach is.\r\n // Another approach would be to make this call sync with a acceptable timeout to reduce the\r\n // impact on user experience.\r\n // appInsightsInstance.context._sender.triggerSend();\r\n appInsightsInstance[_DYN_ONUNLOAD_FLUSH /* @min:%2eonunloadFlush */](false);\r\n // Back up the current session to local storage\r\n // This lets us close expired sessions after the cookies themselves expire\r\n if (isFunction(_this.core[STR_GET_PLUGIN /* @min:%2egetPlugin */])) {\r\n var loadedPlugin = _this.core[STR_GET_PLUGIN /* @min:%2egetPlugin */](PropertiesPluginIdentifier);\r\n if (loadedPlugin) {\r\n var propertiesPlugin = loadedPlugin.plugin;\r\n if (propertiesPlugin && propertiesPlugin[_DYN_CONTEXT /* @min:%2econtext */] && propertiesPlugin[_DYN_CONTEXT /* @min:%2econtext */]._sessionManager) {\r\n propertiesPlugin[_DYN_CONTEXT /* @min:%2econtext */]._sessionManager.backup();\r\n }\r\n }\r\n }\r\n };\r\n var added = false;\r\n var excludePageUnloadEvents = appInsightsInstance.appInsights[_DYN_CONFIG /* @min:%2econfig */].disablePageUnloadEvents;\r\n if (!_houseKeepingNamespace) {\r\n _houseKeepingNamespace = mergeEvtNamespace(_evtNamespace, _core[STR_EVT_NAMESPACE /* @min:%2eevtNamespace */] && _core[STR_EVT_NAMESPACE /* @min:%2eevtNamespace */]());\r\n }\r\n if (!appInsightsInstance.appInsights.config[_DYN_DISABLE_FLUSH_ON_BEF11 /* @min:%2edisableFlushOnBeforeUnload */]) {\r\n // Hook the unload event for the document, window and body to ensure that the client events are flushed to the server\r\n // As just hooking the window does not always fire (on chrome) for page navigation's.\r\n if (addPageUnloadEventListener(performHousekeeping, excludePageUnloadEvents, _houseKeepingNamespace)) {\r\n added = true;\r\n }\r\n // We also need to hook the pagehide and visibilitychange events as not all versions of Safari support load/unload events.\r\n if (addPageHideEventListener(performHousekeeping, excludePageUnloadEvents, _houseKeepingNamespace)) {\r\n added = true;\r\n }\r\n // A reactNative app may not have a window and therefore the beforeunload/pagehide events -- so don't\r\n // log the failure in this case\r\n if (!added && !isReactNative()) {\r\n _throwInternal(appInsightsInstance[_DYN_APP_INSIGHTS /* @min:%2eappInsights */].core.logger, 1 /* eLoggingSeverity.CRITICAL */, 19 /* _eInternalMessageId.FailedToAddHandlerForOnBeforeUnload */, \"Could not add handler for beforeunload and pagehide\");\r\n }\r\n }\r\n if (!added && !appInsightsInstance.appInsights.config[_DYN_DISABLE_FLUSH_ON_UNL12 /* @min:%2edisableFlushOnUnload */]) {\r\n // If we didn't add the normal set then attempt to add the pagehide and visibilitychange only\r\n addPageHideEventListener(performHousekeeping, excludePageUnloadEvents, _houseKeepingNamespace);\r\n }\r\n }\r\n };\r\n _self.getSender = function () {\r\n return _sender;\r\n };\r\n _self.unload = function (isAsync, unloadComplete, cbTimeout) {\r\n _self[_DYN_ONUNLOAD_FLUSH /* @min:%2eonunloadFlush */](isAsync);\r\n // Remove any registered event handlers\r\n if (_houseKeepingNamespace) {\r\n removePageUnloadEventListener(null, _houseKeepingNamespace);\r\n removePageHideEventListener(null, _houseKeepingNamespace);\r\n }\r\n _core.unload && _core.unload(isAsync, unloadComplete, cbTimeout);\r\n };\r\n proxyFunctions(_self, _self[_DYN_APP_INSIGHTS /* @min:%2eappInsights */], [\r\n STR_GET_COOKIE_MGR,\r\n STR_TRACK_EVENT,\r\n STR_TRACK_PAGE_VIEW,\r\n \"trackPageViewPerformance\",\r\n STR_TRACK_EXCEPTION,\r\n \"_onerror\",\r\n STR_TRACK_TRACE,\r\n STR_TRACK_METRIC,\r\n STR_START_TRACK_PAGE,\r\n STR_STOP_TRACK_PAGE,\r\n STR_START_TRACK_EVENT,\r\n STR_STOP_TRACK_EVENT\r\n ]);\r\n proxyFunctions(_self, _getCurrentDependencies, [\r\n STR_TRACK_DEPENDENCY_DATA,\r\n \"addDependencyListener\",\r\n \"addDependencyInitializer\"\r\n ]);\r\n proxyFunctions(_self, _core, [\r\n STR_ADD_TELEMETRY_INITIALIZER,\r\n STR_POLL_INTERNAL_LOGS,\r\n \"stopPollingInternalLogs\",\r\n STR_GET_PLUGIN,\r\n \"addPlugin\",\r\n STR_EVT_NAMESPACE,\r\n \"addUnloadCb\",\r\n \"getTraceCtx\"\r\n ]);\r\n proxyFunctions(_self, function () {\r\n var context = properties[_DYN_CONTEXT /* @min:%2econtext */];\r\n return context ? context.user : null;\r\n }, [\r\n STR_SET_AUTHENTICATED_USER_CONTEXT,\r\n STR_CLEAR_AUTHENTICATED_USER_CONTEXT\r\n ]);\r\n function _getSKUDefaults() {\r\n _self.config[_DYN_DIAGNOSTIC_LOG_INTER4 /* @min:%2ediagnosticLogInterval */] =\r\n _self.config[_DYN_DIAGNOSTIC_LOG_INTER4 /* @min:%2ediagnosticLogInterval */] && _self[_DYN_CONFIG /* @min:%2econfig */][_DYN_DIAGNOSTIC_LOG_INTER4 /* @min:%2ediagnosticLogInterval */] > 0 ? _self[_DYN_CONFIG /* @min:%2econfig */][_DYN_DIAGNOSTIC_LOG_INTER4 /* @min:%2ediagnosticLogInterval */] : 10000;\r\n }\r\n // Using a function to support the dynamic adding / removal of plugins, so this will always return the current value\r\n function _getCurrentDependencies() {\r\n return dependencies;\r\n }\r\n function _initDefaults() {\r\n _evtNamespace = createUniqueNamespace(\"AISKU\");\r\n _houseKeepingNamespace = null;\r\n dependencies = null;\r\n properties = null;\r\n _sender = null;\r\n _snippetVersion = null;\r\n }\r\n });\r\n }\r\n // Analytics Plugin\r\n// Removed Stub for Initialization.prototype.getCookieMgr.\r\n// Removed Stub for Initialization.prototype.trackEvent.\r\n// Removed Stub for Initialization.prototype.trackPageView.\r\n// Removed Stub for Initialization.prototype.trackPageViewPerformance.\r\n// Removed Stub for Initialization.prototype.trackException.\r\n// Removed Stub for Initialization.prototype._onerror.\r\n// Removed Stub for Initialization.prototype.trackTrace.\r\n// Removed Stub for Initialization.prototype.trackMetric.\r\n// Removed Stub for Initialization.prototype.startTrackPage.\r\n// Removed Stub for Initialization.prototype.stopTrackPage.\r\n// Removed Stub for Initialization.prototype.startTrackEvent.\r\n// Removed Stub for Initialization.prototype.stopTrackEvent.\r\n// Removed Stub for Initialization.prototype.addTelemetryInitializer.\r\n // Properties Plugin\r\n// Removed Stub for Initialization.prototype.setAuthenticatedUserContext.\r\n// Removed Stub for Initialization.prototype.clearAuthenticatedUserContext.\r\n // Dependencies Plugin\r\n// Removed Stub for Initialization.prototype.trackDependencyData.\r\n // Misc\r\n// Removed Stub for Initialization.prototype.flush.\r\n// Removed Stub for Initialization.prototype.onunloadFlush.\r\n// Removed Stub for Initialization.prototype.loadAppInsights.\r\n// Removed Stub for Initialization.prototype.updateSnippetDefinitions.\r\n// Removed Stub for Initialization.prototype.emptyQueue.\r\n// Removed Stub for Initialization.prototype.pollInternalLogs.\r\n// Removed Stub for Initialization.prototype.stopPollingInternalLogs.\r\n// Removed Stub for Initialization.prototype.addHousekeepingBeforeUnload.\r\n// Removed Stub for Initialization.prototype.getSender.\r\n// Removed Stub for Initialization.prototype.unload.\r\n// Removed Stub for Initialization.prototype.getPlugin.\r\n// Removed Stub for Initialization.prototype.addPlugin.\r\n// Removed Stub for Initialization.prototype.evtNamespace.\r\n// Removed Stub for Initialization.prototype.addUnloadCb.\r\n// Removed Stub for Initialization.prototype.addDependencyListener.\r\n /**\r\n * Add an dependency telemetry initializer callback function to allow populating additional properties or drop the request.\r\n * It is called after the dependency call has completed and any available performance details are available. A dependency\r\n * initializer is similar to the TelemetryInitializer function but it allows you to block the reporting of the dependency\r\n * request so that it doesn't count against the `maxAjaxCallsPerView`.\r\n * @param dependencyInitializer - The Dependency Telemetry Initializer function\r\n * @returns - A IDependencyInitializerHandler to enable the initializer to be removed\r\n */\r\n Initialization.prototype.addDependencyInitializer = function (dependencyInitializer) {\r\n return null;\r\n };\r\n// Removed Stub for Initialization.prototype.getTraceCtx.\r\n return Initialization;\r\n}());\r\nexport { Initialization };\r\n// tslint:disable-next-line\r\n(function () {\r\n var sdkSrc = null;\r\n var isModule = false;\r\n var cdns = [\r\n \"://js.monitor.azure.com/\",\r\n \"://az416426.vo.msecnd.net/\"\r\n ];\r\n try {\r\n // Try and determine whether the sdk is being loaded from the CDN\r\n // currentScript is only valid during initial processing\r\n var scrpt = (document || {}).currentScript;\r\n if (scrpt) {\r\n sdkSrc = scrpt.src;\r\n // } else {\r\n // // We need to update to at least typescript 2.9 for this to work :-(\r\n // // Leaving as a stub for now so after we upgrade this breadcrumb is available\r\n // let meta = import.meta;\r\n // sdkSrc = (meta || {}).url;\r\n // isModule = true;\r\n }\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n if (sdkSrc) {\r\n try {\r\n var url = sdkSrc.toLowerCase();\r\n if (url) {\r\n var src = \"\";\r\n for (var idx = 0; idx < cdns.length; idx++) {\r\n if (url[_DYN_INDEX_OF /* @min:%2eindexOf */](cdns[idx]) !== -1) {\r\n src = \"cdn\" + (idx + 1);\r\n if (url[_DYN_INDEX_OF /* @min:%2eindexOf */](\"/scripts/\") === -1) {\r\n if (url[_DYN_INDEX_OF /* @min:%2eindexOf */](\"/next/\") !== -1) {\r\n src += \"-next\";\r\n }\r\n else if (url[_DYN_INDEX_OF /* @min:%2eindexOf */](\"/beta/\") !== -1) {\r\n src += \"-beta\";\r\n }\r\n }\r\n _internalSdkSrc = src + (isModule ? \".mod\" : \"\");\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n }\r\n})();\r\n","/*\n * Application Insights JavaScript SDK - Web, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// @skip-file-minify\r\n// ##############################################################\r\n// AUTO GENERATED FILE: This file is Auto Generated during build.\r\n// ##############################################################\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\nexport var _DYN_UPDATE_SNIPPET_DEFIN0 = \"updateSnippetDefinitions\"; // Count: 4\r\nexport var _DYN_LOAD_APP_INSIGHTS = \"loadAppInsights\"; // Count: 4\r\nexport var _DYN_ENDPOINT_URL = \"endpointUrl\"; // Count: 4\r\nexport var _DYN_MAX_BATCH_SIZE_IN_BY1 = \"maxBatchSizeInBytes\"; // Count: 3\r\nexport var _DYN_MAX_BATCH_INTERVAL = \"maxBatchInterval\"; // Count: 3\r\nexport var _DYN_DISABLE_EXCEPTION_TR2 = \"disableExceptionTracking\"; // Count: 2\r\nexport var _DYN_DISABLE_TELEMETRY = \"disableTelemetry\"; // Count: 2\r\nexport var _DYN_EMIT_LINE_DELIMITED_3 = \"emitLineDelimitedJson\"; // Count: 2\r\nexport var _DYN_DIAGNOSTIC_LOG_INTER4 = \"diagnosticLogInterval\"; // Count: 6\r\nexport var _DYN_AUTO_TRACK_PAGE_VISI5 = \"autoTrackPageVisitTime\"; // Count: 2\r\nexport var _DYN_SAMPLING_PERCENTAGE = \"samplingPercentage\"; // Count: 4\r\nexport var _DYN_DISABLE_AJAX_TRACKIN6 = \"disableAjaxTracking\"; // Count: 2\r\nexport var _DYN_MAX_AJAX_CALLS_PER_V7 = \"maxAjaxCallsPerView\"; // Count: 3\r\nexport var _DYN_IS_BEACON_API_DISABL8 = \"isBeaconApiDisabled\"; // Count: 2\r\nexport var _DYN_DISABLE_CORRELATION_9 = \"disableCorrelationHeaders\"; // Count: 2\r\nexport var _DYN_CORRELATION_HEADER_E10 = \"correlationHeaderExcludedDomains\"; // Count: 2\r\nexport var _DYN_DISABLE_FLUSH_ON_BEF11 = \"disableFlushOnBeforeUnload\"; // Count: 4\r\nexport var _DYN_DISABLE_FLUSH_ON_UNL12 = \"disableFlushOnUnload\"; // Count: 3\r\nexport var _DYN_ENABLE_SESSION_STORA13 = \"enableSessionStorageBuffer\"; // Count: 2\r\nexport var _DYN_IS_COOKIE_USE_DISABL14 = \"isCookieUseDisabled\"; // Count: 2\r\nexport var _DYN_IS_STORAGE_USE_DISAB15 = \"isStorageUseDisabled\"; // Count: 2\r\nexport var _DYN_IS_BROWSER_LINK_TRAC16 = \"isBrowserLinkTrackingEnabled\"; // Count: 2\r\nexport var _DYN_ENABLE_CORS_CORRELAT17 = \"enableCorsCorrelation\"; // Count: 2\r\nexport var _DYN_CONFIG = \"config\"; // Count: 6\r\nexport var _DYN_CONTEXT = \"context\"; // Count: 8\r\nexport var _DYN_PUSH = \"push\"; // Count: 5\r\nexport var _DYN_VERSION = \"version\"; // Count: 6\r\nexport var _DYN_QUEUE = \"queue\"; // Count: 6\r\nexport var _DYN_CONNECTION_STRING = \"connectionString\"; // Count: 3\r\nexport var _DYN_INSTRUMENTATION_KEY = \"instrumentationKey\"; // Count: 2\r\nexport var _DYN_APP_INSIGHTS = \"appInsights\"; // Count: 3\r\nexport var _DYN_DISABLE_IKEY_DEPRECA18 = \"disableIkeyDeprecationMessage\"; // Count: 2\r\nexport var _DYN_GET_TRANSMISSION_CON19 = \"getTransmissionControls\"; // Count: 2\r\nexport var _DYN_ONUNLOAD_FLUSH = \"onunloadFlush\"; // Count: 6\r\nexport var _DYN_ADD_HOUSEKEEPING_BEF20 = \"addHousekeepingBeforeUnload\"; // Count: 2\r\nexport var _DYN_INDEX_OF = \"indexOf\"; // Count: 4\r\n","/*\n * Application Insights JavaScript SDK - Common, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { arrReduce, objKeys } from \"@microsoft/applicationinsights-core-js\";\r\nimport { DEFAULT_BREEZE_ENDPOINT } from \"./Constants\";\r\nimport { _DYN_INGESTIONENDPOINT, _DYN_LENGTH, _DYN_SPLIT, _DYN_TO_LOWER_CASE } from \"./__DynamicConstants\";\r\nvar _FIELDS_SEPARATOR = \";\";\r\nvar _FIELD_KEY_VALUE_SEPARATOR = \"=\";\r\nexport function parseConnectionString(connectionString) {\r\n if (!connectionString) {\r\n return {};\r\n }\r\n var kvPairs = connectionString[_DYN_SPLIT /* @min:%2esplit */](_FIELDS_SEPARATOR);\r\n var result = arrReduce(kvPairs, function (fields, kv) {\r\n var kvParts = kv[_DYN_SPLIT /* @min:%2esplit */](_FIELD_KEY_VALUE_SEPARATOR);\r\n if (kvParts[_DYN_LENGTH /* @min:%2elength */] === 2) { // only save fields with valid formats\r\n var key = kvParts[0][_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n var value = kvParts[1];\r\n fields[key] = value;\r\n }\r\n return fields;\r\n }, {});\r\n if (objKeys(result)[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n // this is a valid connection string, so parse the results\r\n if (result.endpointsuffix) {\r\n // use endpoint suffix where overrides are not provided\r\n var locationPrefix = result.location ? result.location + \".\" : \"\";\r\n result[_DYN_INGESTIONENDPOINT /* @min:%2eingestionendpoint */] = result[_DYN_INGESTIONENDPOINT /* @min:%2eingestionendpoint */] || (\"https://\" + locationPrefix + \"dc.\" + result.endpointsuffix);\r\n }\r\n // apply the default endpoints\r\n result[_DYN_INGESTIONENDPOINT /* @min:%2eingestionendpoint */] = result[_DYN_INGESTIONENDPOINT /* @min:%2eingestionendpoint */] || DEFAULT_BREEZE_ENDPOINT;\r\n }\r\n return result;\r\n}\r\nexport var ConnectionStringParser = {\r\n parse: parseConnectionString\r\n};\r\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AngularPlugin } from '@microsoft/applicationinsights-angularplugin-js';\nimport { ApplicationInsights } from '@microsoft/applicationinsights-web';\nimport { environment } from '../../environments/environment';\nimport { AccountService, ApplicationService } from './api.services';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AppInsightsService {\n private appInsights?: ApplicationInsights;\n constructor(\n private router: Router,\n applicationService: ApplicationService\n ) {\n applicationService.appInsightsConfig()\n .toPromise()\n .then(config => {\n const angularPlugin = new AngularPlugin();\n this.appInsights = new ApplicationInsights({\n config: {\n appId: `stug-frontend@${environment.appVersion}`,\n enableCorsCorrelation: true,\n instrumentationKey: config.instrumentationKey ? config.instrumentationKey : environment.appInsights.instrumentationKey,\n extensions: [angularPlugin],\n extensionConfig: {\n [angularPlugin.identifier]: { router: this.router }\n }\n }\n });\n this.appInsights.loadAppInsights();\n });\n\n }\n\n public setUserId(userId: string, accountId?: string) {\n this.appInsights?.setAuthenticatedUserContext(userId, accountId);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { UserViewModel, AccountService } from './api.services';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CachedAccountService {\n private userProfile?: UserViewModel;\n constructor(private accountService: AccountService) { }\n\n public async me(): Promise {\n return this.userProfile !== undefined ? this.userProfile : this.cacheUserProfile();\n }\n\n private async cacheUserProfile(): Promise {\n this.userProfile = await this.accountService.me().toPromise();\n return this.userProfile;\n } \n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { ApplicationService, Customizations } from './api.services';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CustomizationService {\n private cachedCustomizations: BehaviorSubject = new BehaviorSubject(CustomizationService.Default());\n public get customizations$(): Observable {\n return this.cachedCustomizations.asObservable();\n };\n constructor(applicationService: ApplicationService) {\n\n applicationService.customizations().toPromise().then(c => { this.cachedCustomizations.next(c); });\n }\n\n public static Default(): Customizations {\n return {\n name: 'Schoolinlog Sync',\n productLink: 'https://www.schoolinlog.nl/',\n logo: '/assets/schoolinlog.svg'\n }\n }\n}\n","import { Inject, Injectable, InjectionToken, Optional } from '@angular/core';\nimport { HttpClient, HttpEvent, HttpHeaders, HttpResponse, HttpResponseBase } from '@angular/common/http';\nimport { Observable, of, throwError } from 'rxjs';\nimport { catchError, mergeMap } from 'rxjs/operators';\n\n\nexport const GRAPH_BASE_URL = new InjectionToken('GRAPH_BASE_URL');\n\n@Injectable({\n providedIn: 'root'\n})\nexport class GraphService {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n constructor(\n @Inject(HttpClient) http: HttpClient,\n @Optional() @Inject(GRAPH_BASE_URL) baseUrl?: string\n ) {\n this.http = http;\n this.baseUrl = baseUrl ? baseUrl : \"https://graph.microsoft.com/v1.0/\";\n }\n\n\n\n protected getCollection(url: string): Observable | undefined> {\n return this.get>(url);\n }\n\n public getUserById(id: string) {\n return this.get(`users/${id}`);\n }\n\n public getGroupById(id: string) {\n return this.get(`groups/${id}`);\n }\n\n private defaultGetOptions(): any {\n return {\n observe: 'response',\n responseType: 'blob',\n headers: new HttpHeaders({\n 'Accept': 'application/json'\n })\n };\n }\n\n get(url: string): Observable {\n const url_ = `${this.baseUrl}${url}`;\n return this.http.request(\"get\", url_, this.defaultGetOptions()).pipe(mergeMap((response_: any) => {\n return this.processGet(response_);\n })).pipe(catchError((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processGet(response_);\n } catch (e) {\n return >throwError(e);\n }\n } else\n return >throwError(response_);\n }));\n }\n\n protected processGet(response: HttpResponseBase): Observable {\n console.log(response);\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response).error instanceof Blob ? (response).error : undefined;\n\n let _headers: any = {};\n if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); } }\n if (status === 200) {\n return blobToText(responseBlob).pipe(mergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n return of(result200);\n }));\n } else if (status !== 200) {\n return blobToText(responseBlob).pipe(mergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return of(null);\n }\n}\n\ninterface collectionResponse {\n value: Array;\n}\n\nexport class ApiException extends Error {\n message: string;\n status: number;\n response: string;\n headers: { [key: string]: any; };\n result: any;\n\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n super();\n\n this.message = message;\n this.status = status;\n this.response = response;\n this.headers = headers;\n this.result = result;\n }\n\n protected isApiException = true;\n\n static isApiException(obj: any): obj is ApiException {\n return obj.isApiException === true;\n }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): Observable {\n if (result !== null && result !== undefined)\n return throwError(result);\n else\n return throwError(new ApiException(message, status, response, headers, null));\n}\n\nfunction blobToText(blob: any): Observable {\n return new Observable((observer: any) => {\n if (!blob) {\n observer.next(\"\");\n observer.complete();\n } else {\n let reader = new FileReader();\n reader.onload = event => {\n observer.next((event.target).result);\n observer.complete();\n };\n reader.readAsText(blob);\n }\n });\n}\n","export const environment = {\n appVersion: require('../../package.json').version,\n production: true,\n appInsights: {\n instrumentationKey: '4f265f1b-f9ae-4480-8be6-0b76e500f5d0'\n }\n};\n","/**\n * @license Angular v14.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\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst 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 * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * 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\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction isBrowser() {\n return (typeof window !== 'undefined' && typeof window.document !== 'undefined');\n}\nfunction isNode() {\n // Checking only for `process` isn't enough to identify whether or not we're in a Node\n // environment, because Webpack by default will polyfill the `process`. While we can discern\n // that Webpack polyfilled it by looking at `process.browser`, it's very Webpack-specific and\n // might not be future-proof. Instead we look at the stringified version of `process` which\n // is `[object process]` in Node and `[object Object]` when polyfilled.\n return typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\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(driver, normalizer, element, 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}\nlet _contains = (elm1, elm2) => false;\nlet _query = (element, selector, multi) => {\n return [];\n};\nlet _documentElement = null;\nfunction getParentElement(element) {\n const parent = element.parentNode || element.host; // consider host to support shadow DOM\n if (parent === _documentElement) {\n return null;\n }\n return parent;\n}\n// Define utility methods for browsers and platform-server(domino) where Element\n// and utility methods exist.\nconst _isNode = isNode();\nif (_isNode || typeof Element !== 'undefined') {\n if (!isBrowser()) {\n _contains = (elm1, elm2) => elm1.contains(elm2);\n }\n else {\n // Read the document element in an IIFE that's been marked pure to avoid a top-level property\n // read that may prevent tree-shaking.\n _documentElement = /* @__PURE__ */ (() => document.documentElement)();\n _contains = (elm1, elm2) => {\n while (elm2) {\n if (elm2 === elm1) {\n return true;\n }\n elm2 = getParentElement(elm2);\n }\n return false;\n };\n }\n _query = (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 };\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}\nconst containsElement = _contains;\nconst invokeQuery = _query;\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 * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @publicApi\n */\nclass 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}\nNoopAnimationDriver.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: NoopAnimationDriver, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNoopAnimationDriver.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: NoopAnimationDriver });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: NoopAnimationDriver, decorators: [{\n type: Injectable\n }] });\n/**\n * @publicApi\n */\nclass AnimationDriver {\n}\nAnimationDriver.NOOP = ( /* @__PURE__ */new NoopAnimationDriver());\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst 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 getStyleAttributeString(element, key, value) {\n // Return the key-value pair string to be added to the style attribute for the\n // given CSS style key.\n if (value) {\n return key + ':' + value + ';';\n }\n else {\n return '';\n }\n}\nfunction writeStyleAttribute(element) {\n // Read the style property of the element and manually reflect it to the\n // style attribute. This is needed because Domino on platform-server doesn't\n // understand the full set of allowed CSS properties and doesn't reflect some\n // of them automatically.\n let styleAttrValue = '';\n for (let i = 0; i < element.style.length; i++) {\n const key = element.style.item(i);\n styleAttrValue += getStyleAttributeString(element, key, element.style.getPropertyValue(key));\n }\n for (const key in element.style) {\n // Skip internal Domino properties that don't need to be reflected.\n if (!element.style.hasOwnProperty(key) || key.startsWith('_')) {\n continue;\n }\n const dashKey = camelCaseToDashCase(key);\n styleAttrValue += getStyleAttributeString(element, dashKey, element.style[key]);\n }\n element.setAttribute('style', styleAttrValue);\n}\nfunction setStyles(element, styles, formerStyles) {\n if (element['style']) {\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 // On the server set the 'style' attribute since it's not automatically reflected.\n if (isNode()) {\n writeStyleAttribute(element);\n }\n }\n}\nfunction eraseStyles(element, styles) {\n if (element['style']) {\n styles.forEach((_, prop) => {\n const camelProp = dashCaseToCamelCase(prop);\n element.style[camelProp] = '';\n });\n // On the server set the 'style' attribute since it's not automatically reflected.\n if (isNode()) {\n writeStyleAttribute(element);\n }\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\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst NG_DEV_MODE = typeof ngDevMode === 'undefined' || !!ngDevMode;\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 NG_DEV_MODE && console.warn(`animation validation warnings:${createListOfWarnings(warnings)}`);\n}\nfunction warnTriggerBuild(name, warnings) {\n NG_DEV_MODE &&\n console.warn(`The animation trigger \"${name}\" has built with the following warnings:${createListOfWarnings(warnings)}`);\n}\nfunction warnRegister(warnings) {\n NG_DEV_MODE &&\n console.warn(`Animation built with the following warnings:${createListOfWarnings(warnings)}`);\n}\nfunction triggerParsingWarnings(name, warnings) {\n NG_DEV_MODE &&\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\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst 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\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst 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\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst 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._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 * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @publicApi\n */\nclass 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\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst 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\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction 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 invalidNonAnimatableProps = new Set();\n timelines.forEach(({ keyframes }) => {\n const nonAnimatablePropsInitialValues = new Map();\n keyframes.forEach(keyframe => {\n for (const [prop, value] of keyframe.entries()) {\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(normalizedProp, 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\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst 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._driver, this._normalizer, element, 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\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst 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 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 get params() {\n return this.options.params;\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 elementContainsData(element) {\n let containsData = false;\n if (this._elementListeners.has(element))\n containsData = true;\n containsData =\n (this._queue.find(entry => entry.element === element) ? true : false) || containsData;\n return containsData;\n }\n}\nclass TransitionAnimationEngine {\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 /** @internal */\n _onRemovalComplete(element, context) {\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 const ns = this._fetchNamespace(namespaceId);\n this.afterFlush(() => {\n this.namespacesByHostElement.delete(ns.hostElement);\n delete this._namespaceLookup[namespaceId];\n const index = this._namespaceList.indexOf(ns);\n if (index >= 0) {\n this._namespaceList.splice(index, 1);\n }\n });\n this.afterFlushAnimationsDone(() => ns.destroy(context));\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, isHostElement, 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 if (isHostElement) {\n const hostNS = this.namespacesByHostElement.get(element);\n if (hostNS && hostNS.id !== namespaceId) {\n hostNS.removeNode(element, context);\n }\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([...Array.from(post?.entries() ?? []), ...Array.from(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 elementContainsData(namespaceId, element) {\n let containsData = false;\n const details = element[REMOVAL_FLAG];\n if (details && details.setForRemoval)\n containsData = true;\n if (this.playersByElement.has(element))\n containsData = true;\n if (this.playersByQueriedElement.has(element))\n containsData = true;\n if (this.statesByElement.has(element))\n containsData = true;\n return this._fetchNamespace(namespaceId).elementContainsData(element) || containsData;\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.driver, this._normalizer, element, 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.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, isHostElement) {\n this._transitionEngine.removeNode(namespaceId, element, isHostElement || false, 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 this._transitionEngine.players\n .concat(this._timelineEngine.players);\n }\n whenRenderingDone() {\n return this._transitionEngine.whenRenderingDone();\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 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}\nSpecialCasedStyles.initialStylesByElement = ( /* @__PURE__ */new WeakMap());\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 this.domPlayer =\n this._triggerWebAnimation(this.element, keyframes, this.options);\n this._finalKeyframe = keyframes.length ? keyframes[keyframes.length - 1] : new Map();\n this.domPlayer.addEventListener('finish', () => this._onFinish());\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 // jscompiler doesn't seem to know animate is a native property because it's not fully\n // supported yet across common browsers (we polyfill it for Edge/Safari) [CL #143630929]\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 return this.domPlayer.currentTime / 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 * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\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 v14.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\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass 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}\nBrowserAnimationBuilder.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: BrowserAnimationBuilder, deps: [{ token: i0.RendererFactory2 }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nBrowserAnimationBuilder.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: BrowserAnimationBuilder });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.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 this.promise = Promise.resolve(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 // always use promise to schedule microtask instead of use Zone\n this.promise.then(() => {\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 Promise.resolve(null).then(() => {\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}\nAnimationRendererFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: AnimationRendererFactory, deps: [{ token: i0.RendererFactory2 }, { token: i1.ɵAnimationEngine }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nAnimationRendererFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: AnimationRendererFactory });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.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 this.destroyNode = this.delegate.destroyNode ? (n) => delegate.destroyNode(n) : null;\n }\n get data() {\n return this.delegate.data;\n }\n destroy() {\n this.engine.destroy(this.namespaceId, this.delegate);\n this.delegate.destroy();\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, isHostElement);\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\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass 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}\nInjectableAnimationEngine.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: InjectableAnimationEngine, deps: [{ token: DOCUMENT }, { token: i1.AnimationDriver }, { token: i1.ɵAnimationStyleNormalizer }, { token: i0.ApplicationRef }], target: i0.ɵɵFactoryTarget.Injectable });\nInjectableAnimationEngine.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: InjectableAnimationEngine });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.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 * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * 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 `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}\nBrowserAnimationsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: BrowserAnimationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nBrowserAnimationsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.2.12\", ngImport: i0, type: BrowserAnimationsModule, exports: [BrowserModule] });\nBrowserAnimationsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: BrowserAnimationsModule, providers: BROWSER_ANIMATIONS_PROVIDERS, imports: [BrowserModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.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 * @developerPreview\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}\nNoopAnimationsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: NoopAnimationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNoopAnimationsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.2.12\", ngImport: i0, type: NoopAnimationsModule, exports: [BrowserModule] });\nNoopAnimationsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: NoopAnimationsModule, providers: BROWSER_NOOP_ANIMATIONS_PROVIDERS, imports: [BrowserModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.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 * @developerPreview\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 * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\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","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Enumeration of operations that are instrumented by have their performance measured by the PerformanceClient.\r\n *\r\n * @export\r\n * @enum {number}\r\n */\r\nvar PerformanceEvents;\r\n(function (PerformanceEvents) {\r\n /**\r\n * acquireTokenByCode API (msal-browser and msal-node).\r\n * Used to acquire tokens by trading an authorization code against the token endpoint.\r\n */\r\n PerformanceEvents[\"AcquireTokenByCode\"] = \"acquireTokenByCode\";\r\n /**\r\n * acquireTokenByRefreshToken API (msal-browser and msal-node).\r\n * Used to renew an access token using a refresh token against the token endpoint.\r\n */\r\n PerformanceEvents[\"AcquireTokenByRefreshToken\"] = \"acquireTokenByRefreshToken\";\r\n /**\r\n * acquireTokenSilent API (msal-browser and msal-node).\r\n * Used to silently acquire a new access token (from the cache or the network).\r\n */\r\n PerformanceEvents[\"AcquireTokenSilent\"] = \"acquireTokenSilent\";\r\n /**\r\n * acquireTokenSilentAsync (msal-browser).\r\n * Internal API for acquireTokenSilent.\r\n */\r\n PerformanceEvents[\"AcquireTokenSilentAsync\"] = \"acquireTokenSilentAsync\";\r\n /**\r\n * acquireTokenPopup (msal-browser).\r\n * Used to acquire a new access token interactively through pop ups\r\n */\r\n PerformanceEvents[\"AcquireTokenPopup\"] = \"acquireTokenPopup\";\r\n /**\r\n * getPublicKeyThumbprint API in CryptoOpts class (msal-browser).\r\n * Used to generate a public/private keypair and generate a public key thumbprint for pop requests.\r\n */\r\n PerformanceEvents[\"CryptoOptsGetPublicKeyThumbprint\"] = \"cryptoOptsGetPublicKeyThumbprint\";\r\n /**\r\n * signJwt API in CryptoOpts class (msal-browser).\r\n * Used to signed a pop token.\r\n */\r\n PerformanceEvents[\"CryptoOptsSignJwt\"] = \"cryptoOptsSignJwt\";\r\n /**\r\n * acquireToken API in the SilentCacheClient class (msal-browser).\r\n * Used to read access tokens from the cache.\r\n */\r\n PerformanceEvents[\"SilentCacheClientAcquireToken\"] = \"silentCacheClientAcquireToken\";\r\n /**\r\n * acquireToken API in the SilentIframeClient class (msal-browser).\r\n * Used to acquire a new set of tokens from the authorize endpoint in a hidden iframe.\r\n */\r\n PerformanceEvents[\"SilentIframeClientAcquireToken\"] = \"silentIframeClientAcquireToken\";\r\n /**\r\n * acquireToken API in SilentRereshClient (msal-browser).\r\n * Used to acquire a new set of tokens from the token endpoint using a refresh token.\r\n */\r\n PerformanceEvents[\"SilentRefreshClientAcquireToken\"] = \"silentRefreshClientAcquireToken\";\r\n /**\r\n * ssoSilent API (msal-browser).\r\n * Used to silently acquire an authorization code and set of tokens using a hidden iframe.\r\n */\r\n PerformanceEvents[\"SsoSilent\"] = \"ssoSilent\";\r\n /**\r\n * getDiscoveredAuthority API in StandardInteractionClient class (msal-browser).\r\n * Used to load authority metadata for a request.\r\n */\r\n PerformanceEvents[\"StandardInteractionClientGetDiscoveredAuthority\"] = \"standardInteractionClientGetDiscoveredAuthority\";\r\n /**\r\n * acquireToken APIs in msal-browser.\r\n * Used to make an /authorize endpoint call with native brokering enabled.\r\n */\r\n PerformanceEvents[\"FetchAccountIdWithNativeBroker\"] = \"fetchAccountIdWithNativeBroker\";\r\n /**\r\n * acquireToken API in NativeInteractionClient class (msal-browser).\r\n * Used to acquire a token from Native component when native brokering is enabled.\r\n */\r\n PerformanceEvents[\"NativeInteractionClientAcquireToken\"] = \"nativeInteractionClientAcquireToken\";\r\n /**\r\n * Time spent creating default headers for requests to token endpoint\r\n */\r\n PerformanceEvents[\"BaseClientCreateTokenRequestHeaders\"] = \"baseClientCreateTokenRequestHeaders\";\r\n /**\r\n * Used to measure the time taken for completing embedded-broker handshake (PW-Broker).\r\n */\r\n PerformanceEvents[\"BrokerHandhshake\"] = \"brokerHandshake\";\r\n /**\r\n * acquireTokenByRefreshToken API in BrokerClientApplication (PW-Broker) .\r\n */\r\n PerformanceEvents[\"AcquireTokenByRefreshTokenInBroker\"] = \"acquireTokenByRefreshTokenInBroker\";\r\n /**\r\n * Time taken for token acquisition by broker\r\n */\r\n PerformanceEvents[\"AcquireTokenByBroker\"] = \"acquireTokenByBroker\";\r\n /**\r\n * Time spent on the network for refresh token acquisition\r\n */\r\n PerformanceEvents[\"RefreshTokenClientExecuteTokenRequest\"] = \"refreshTokenClientExecuteTokenRequest\";\r\n /**\r\n * Time taken for acquiring refresh token , records RT size\r\n */\r\n PerformanceEvents[\"RefreshTokenClientAcquireToken\"] = \"refreshTokenClientAcquireToken\";\r\n /**\r\n * Time taken for acquiring cached refresh token\r\n */\r\n PerformanceEvents[\"RefreshTokenClientAcquireTokenWithCachedRefreshToken\"] = \"refreshTokenClientAcquireTokenWithCachedRefreshToken\";\r\n PerformanceEvents[\"AcquireTokenByCodeAsync\"] = \"acquireTokenByCodeAsync\";\r\n PerformanceEvents[\"GetEndpointMetadataFromNetwork\"] = \"getEndpointMetadataFromNetwork\";\r\n PerformanceEvents[\"GetCloudDiscoveryMetadataFromNetworkMeasurement\"] = \"getCloudDiscoveryMetadataFromNetworkMeasurement\";\r\n PerformanceEvents[\"HandleRedirectPromiseMeasurement\"] = \"handleRedirectPromiseMeasurement\";\r\n PerformanceEvents[\"UpdateCloudDiscoveryMetadataMeasurement\"] = \"updateCloudDiscoveryMetadataMeasurement\";\r\n PerformanceEvents[\"UsernamePasswordClientAcquireToken\"] = \"usernamePasswordClientAcquireToken\";\r\n})(PerformanceEvents || (PerformanceEvents = {}));\r\n/**\r\n * State of the performance event.\r\n *\r\n * @export\r\n * @enum {number}\r\n */\r\nvar PerformanceEventStatus;\r\n(function (PerformanceEventStatus) {\r\n PerformanceEventStatus[PerformanceEventStatus[\"NotStarted\"] = 0] = \"NotStarted\";\r\n PerformanceEventStatus[PerformanceEventStatus[\"InProgress\"] = 1] = \"InProgress\";\r\n PerformanceEventStatus[PerformanceEventStatus[\"Completed\"] = 2] = \"Completed\";\r\n})(PerformanceEventStatus || (PerformanceEventStatus = {}));\n\nexport { PerformanceEventStatus, PerformanceEvents };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\nimport { __extends } from '../_virtual/_tslib.js';\nimport { AuthError } from './AuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Error thrown when there is an error with the server code, for example, unavailability.\r\n */\r\nvar ServerError = /** @class */ (function (_super) {\r\n __extends(ServerError, _super);\r\n function ServerError(errorCode, errorMessage, subError) {\r\n var _this = _super.call(this, errorCode, errorMessage, subError) || this;\r\n _this.name = \"ServerError\";\r\n Object.setPrototypeOf(_this, ServerError.prototype);\r\n return _this;\r\n }\r\n return ServerError;\r\n}(AuthError));\n\nexport { ServerError };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\nimport { __extends } from '../_virtual/_tslib.js';\nimport { AuthError } from './AuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * InteractionRequiredServerErrorMessage contains string constants used by error codes and messages returned by the server indicating interaction is required\r\n */\r\nvar InteractionRequiredServerErrorMessage = [\r\n \"interaction_required\",\r\n \"consent_required\",\r\n \"login_required\"\r\n];\r\nvar InteractionRequiredAuthSubErrorMessage = [\r\n \"message_only\",\r\n \"additional_action\",\r\n \"basic_action\",\r\n \"user_password_expired\",\r\n \"consent_required\"\r\n];\r\n/**\r\n * Interaction required errors defined by the SDK\r\n */\r\nvar InteractionRequiredAuthErrorMessage = {\r\n noTokensFoundError: {\r\n code: \"no_tokens_found\",\r\n desc: \"No refresh token found in the cache. Please sign-in.\"\r\n },\r\n native_account_unavailable: {\r\n code: \"native_account_unavailable\",\r\n desc: \"The requested account is not available in the native broker. It may have been deleted or logged out. Please sign-in again using an interactive API.\"\r\n }\r\n};\r\n/**\r\n * Error thrown when user interaction is required.\r\n */\r\nvar InteractionRequiredAuthError = /** @class */ (function (_super) {\r\n __extends(InteractionRequiredAuthError, _super);\r\n function InteractionRequiredAuthError(errorCode, errorMessage, subError) {\r\n var _this = _super.call(this, errorCode, errorMessage, subError) || this;\r\n _this.name = \"InteractionRequiredAuthError\";\r\n Object.setPrototypeOf(_this, InteractionRequiredAuthError.prototype);\r\n return _this;\r\n }\r\n /**\r\n * Helper function used to determine if an error thrown by the server requires interaction to resolve\r\n * @param errorCode\r\n * @param errorString\r\n * @param subError\r\n */\r\n InteractionRequiredAuthError.isInteractionRequiredError = function (errorCode, errorString, subError) {\r\n var isInteractionRequiredErrorCode = !!errorCode && InteractionRequiredServerErrorMessage.indexOf(errorCode) > -1;\r\n var isInteractionRequiredSubError = !!subError && InteractionRequiredAuthSubErrorMessage.indexOf(subError) > -1;\r\n var isInteractionRequiredErrorDesc = !!errorString && InteractionRequiredServerErrorMessage.some(function (irErrorCode) {\r\n return errorString.indexOf(irErrorCode) > -1;\r\n });\r\n return isInteractionRequiredErrorCode || isInteractionRequiredErrorDesc || isInteractionRequiredSubError;\r\n };\r\n /**\r\n * Creates an error thrown when the authorization code required for a token request is null or empty.\r\n */\r\n InteractionRequiredAuthError.createNoTokensFoundError = function () {\r\n return new InteractionRequiredAuthError(InteractionRequiredAuthErrorMessage.noTokensFoundError.code, InteractionRequiredAuthErrorMessage.noTokensFoundError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the native broker returns ACCOUNT_UNAVAILABLE status, indicating that the account was removed and interactive sign-in is required\r\n * @returns\r\n */\r\n InteractionRequiredAuthError.createNativeAccountUnavailableError = function () {\r\n return new InteractionRequiredAuthError(InteractionRequiredAuthErrorMessage.native_account_unavailable.code, InteractionRequiredAuthErrorMessage.native_account_unavailable.desc);\r\n };\r\n return InteractionRequiredAuthError;\r\n}(AuthError));\n\nexport { InteractionRequiredAuthError, InteractionRequiredAuthErrorMessage, InteractionRequiredAuthSubErrorMessage, InteractionRequiredServerErrorMessage };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\nimport { __extends } from '../_virtual/_tslib.js';\nimport { AuthError } from './AuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * ClientAuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nvar JoseHeaderErrorMessage = {\r\n missingKidError: {\r\n code: \"missing_kid_error\",\r\n desc: \"The JOSE Header for the requested JWT, JWS or JWK object requires a keyId to be configured as the 'kid' header claim. No 'kid' value was provided.\"\r\n },\r\n missingAlgError: {\r\n code: \"missing_alg_error\",\r\n desc: \"The JOSE Header for the requested JWT, JWS or JWK object requires an algorithm to be specified as the 'alg' header claim. No 'alg' value was provided.\"\r\n },\r\n};\r\n/**\r\n * Error thrown when there is an error in the client code running on the browser.\r\n */\r\nvar JoseHeaderError = /** @class */ (function (_super) {\r\n __extends(JoseHeaderError, _super);\r\n function JoseHeaderError(errorCode, errorMessage) {\r\n var _this = _super.call(this, errorCode, errorMessage) || this;\r\n _this.name = \"JoseHeaderError\";\r\n Object.setPrototypeOf(_this, JoseHeaderError.prototype);\r\n return _this;\r\n }\r\n /**\r\n * Creates an error thrown when keyId isn't set on JOSE header.\r\n */\r\n JoseHeaderError.createMissingKidError = function () {\r\n return new JoseHeaderError(JoseHeaderErrorMessage.missingKidError.code, JoseHeaderErrorMessage.missingKidError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when algorithm isn't set on JOSE header.\r\n */\r\n JoseHeaderError.createMissingAlgError = function () {\r\n return new JoseHeaderError(JoseHeaderErrorMessage.missingAlgError.code, JoseHeaderErrorMessage.missingAlgError.desc);\r\n };\r\n return JoseHeaderError;\r\n}(AuthError));\n\nexport { JoseHeaderError, JoseHeaderErrorMessage };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\nimport { JoseHeaderError } from '../error/JoseHeaderError.js';\nimport { JsonTypes } from '../utils/Constants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar JoseHeader = /** @class */ (function () {\r\n function JoseHeader(options) {\r\n this.typ = options.typ;\r\n this.alg = options.alg;\r\n this.kid = options.kid;\r\n }\r\n /**\r\n * Builds SignedHttpRequest formatted JOSE Header from the\r\n * JOSE Header options provided or previously set on the object and returns\r\n * the stringified header object.\r\n * Throws if keyId or algorithm aren't provided since they are required for Access Token Binding.\r\n * @param shrHeaderOptions\r\n * @returns\r\n */\r\n JoseHeader.getShrHeaderString = function (shrHeaderOptions) {\r\n // KeyID is required on the SHR header\r\n if (!shrHeaderOptions.kid) {\r\n throw JoseHeaderError.createMissingKidError();\r\n }\r\n // Alg is required on the SHR header\r\n if (!shrHeaderOptions.alg) {\r\n throw JoseHeaderError.createMissingAlgError();\r\n }\r\n var shrHeader = new JoseHeader({\r\n // Access Token PoP headers must have type JWT, but the type header can be overriden for special cases\r\n typ: shrHeaderOptions.typ || JsonTypes.Jwt,\r\n kid: shrHeaderOptions.kid,\r\n alg: shrHeaderOptions.alg\r\n });\r\n return JSON.stringify(shrHeader);\r\n };\r\n return JoseHeader;\r\n}());\n\nexport { JoseHeader };\n","/*! @azure/msal-browser v2.32.2 2023-01-10 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Utility class for math specific functions in browser.\r\n */\r\nvar MathUtils = /** @class */ (function () {\r\n function MathUtils() {\r\n }\r\n /**\r\n * Decimal to Hex\r\n *\r\n * @param num\r\n */\r\n MathUtils.decimalToHex = function (num) {\r\n var hex = num.toString(16);\r\n while (hex.length < 2) {\r\n hex = \"0\" + hex;\r\n }\r\n return hex;\r\n };\r\n return MathUtils;\r\n}());\n\nexport { MathUtils };\n","/*! @azure/msal-browser v2.32.2 2023-01-10 */\n'use strict';\nimport { Constants } from '@azure/msal-common';\nimport { MathUtils } from '../utils/MathUtils.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar GuidGenerator = /** @class */ (function () {\r\n function GuidGenerator(cryptoObj) {\r\n this.cryptoObj = cryptoObj;\r\n }\r\n /*\r\n * RFC4122: The version 4 UUID is meant for generating UUIDs from truly-random or\r\n * pseudo-random numbers.\r\n * The algorithm is as follows:\r\n * Set the two most significant bits (bits 6 and 7) of the\r\n * clock_seq_hi_and_reserved to zero and one, respectively.\r\n * Set the four most significant bits (bits 12 through 15) of the\r\n * time_hi_and_version field to the 4-bit version number from\r\n * Section 4.1.3. Version4\r\n * Set all the other bits to randomly (or pseudo-randomly) chosen\r\n * values.\r\n * UUID = time-low \"-\" time-mid \"-\"time-high-and-version \"-\"clock-seq-reserved and low(2hexOctet)\"-\" node\r\n * time-low = 4hexOctet\r\n * time-mid = 2hexOctet\r\n * time-high-and-version = 2hexOctet\r\n * clock-seq-and-reserved = hexOctet:\r\n * clock-seq-low = hexOctet\r\n * node = 6hexOctet\r\n * Format: xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\r\n * y could be 1000, 1001, 1010, 1011 since most significant two bits needs to be 10\r\n * y values are 8, 9, A, B\r\n */\r\n GuidGenerator.prototype.generateGuid = function () {\r\n try {\r\n var buffer = new Uint8Array(16);\r\n this.cryptoObj.getRandomValues(buffer);\r\n // buffer[6] and buffer[7] represents the time_hi_and_version field. We will set the four most significant bits (4 through 7) of buffer[6] to represent decimal number 4 (UUID version number).\r\n buffer[6] |= 0x40; // buffer[6] | 01000000 will set the 6 bit to 1.\r\n buffer[6] &= 0x4f; // buffer[6] & 01001111 will set the 4, 5, and 7 bit to 0 such that bits 4-7 == 0100 = \"4\".\r\n // buffer[8] represents the clock_seq_hi_and_reserved field. We will set the two most significant bits (6 and 7) of the clock_seq_hi_and_reserved to zero and one, respectively.\r\n buffer[8] |= 0x80; // buffer[8] | 10000000 will set the 7 bit to 1.\r\n buffer[8] &= 0xbf; // buffer[8] & 10111111 will set the 6 bit to 0.\r\n return MathUtils.decimalToHex(buffer[0]) + MathUtils.decimalToHex(buffer[1])\r\n + MathUtils.decimalToHex(buffer[2]) + MathUtils.decimalToHex(buffer[3])\r\n + \"-\" + MathUtils.decimalToHex(buffer[4]) + MathUtils.decimalToHex(buffer[5])\r\n + \"-\" + MathUtils.decimalToHex(buffer[6]) + MathUtils.decimalToHex(buffer[7])\r\n + \"-\" + MathUtils.decimalToHex(buffer[8]) + MathUtils.decimalToHex(buffer[9])\r\n + \"-\" + MathUtils.decimalToHex(buffer[10]) + MathUtils.decimalToHex(buffer[11])\r\n + MathUtils.decimalToHex(buffer[12]) + MathUtils.decimalToHex(buffer[13])\r\n + MathUtils.decimalToHex(buffer[14]) + MathUtils.decimalToHex(buffer[15]);\r\n }\r\n catch (err) {\r\n var guidHolder = \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\";\r\n var hex = \"0123456789abcdef\";\r\n var r = 0;\r\n var guidResponse = Constants.EMPTY_STRING;\r\n for (var i = 0; i < 36; i++) {\r\n if (guidHolder[i] !== \"-\" && guidHolder[i] !== \"4\") {\r\n // each x and y needs to be random\r\n r = Math.random() * 16 | 0;\r\n }\r\n if (guidHolder[i] === \"x\") {\r\n guidResponse += hex[r];\r\n }\r\n else if (guidHolder[i] === \"y\") {\r\n // clock-seq-and-reserved first hex is filtered and remaining hex values are random\r\n r &= 0x3; // bit and with 0011 to set pos 2 to zero ?0??\r\n r |= 0x8; // set pos 3 to 1 as 1???\r\n guidResponse += hex[r];\r\n }\r\n else {\r\n guidResponse += guidHolder[i];\r\n }\r\n }\r\n return guidResponse;\r\n }\r\n };\r\n /**\r\n * verifies if a string is GUID\r\n * @param guid\r\n */\r\n GuidGenerator.prototype.isGuid = function (guid) {\r\n var regexGuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\r\n return regexGuid.test(guid);\r\n };\r\n return GuidGenerator;\r\n}());\n\nexport { GuidGenerator };\n","/*! @azure/msal-browser v2.32.2 2023-01-10 */\n'use strict';\nimport { Constants } from '@azure/msal-common';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Utility functions for strings in a browser. See here for implementation details:\r\n * https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#Solution_2_%E2%80%93_JavaScript's_UTF-16_%3E_UTF-8_%3E_base64\r\n */\r\nvar BrowserStringUtils = /** @class */ (function () {\r\n function BrowserStringUtils() {\r\n }\r\n /**\r\n * Converts string to Uint8Array\r\n * @param sDOMStr\r\n */\r\n BrowserStringUtils.stringToUtf8Arr = function (sDOMStr) {\r\n var nChr;\r\n var nArrLen = 0;\r\n var nStrLen = sDOMStr.length;\r\n /* mapping... */\r\n for (var nMapIdx = 0; nMapIdx < nStrLen; nMapIdx++) {\r\n nChr = sDOMStr.charCodeAt(nMapIdx);\r\n nArrLen += nChr < 0x80 ? 1 : nChr < 0x800 ? 2 : nChr < 0x10000 ? 3 : nChr < 0x200000 ? 4 : nChr < 0x4000000 ? 5 : 6;\r\n }\r\n var aBytes = new Uint8Array(nArrLen);\r\n /* transcription... */\r\n for (var nIdx = 0, nChrIdx = 0; nIdx < nArrLen; nChrIdx++) {\r\n nChr = sDOMStr.charCodeAt(nChrIdx);\r\n if (nChr < 128) {\r\n /* one byte */\r\n aBytes[nIdx++] = nChr;\r\n }\r\n else if (nChr < 0x800) {\r\n /* two bytes */\r\n aBytes[nIdx++] = 192 + (nChr >>> 6);\r\n aBytes[nIdx++] = 128 + (nChr & 63);\r\n }\r\n else if (nChr < 0x10000) {\r\n /* three bytes */\r\n aBytes[nIdx++] = 224 + (nChr >>> 12);\r\n aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\r\n aBytes[nIdx++] = 128 + (nChr & 63);\r\n }\r\n else if (nChr < 0x200000) {\r\n /* four bytes */\r\n aBytes[nIdx++] = 240 + (nChr >>> 18);\r\n aBytes[nIdx++] = 128 + (nChr >>> 12 & 63);\r\n aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\r\n aBytes[nIdx++] = 128 + (nChr & 63);\r\n }\r\n else if (nChr < 0x4000000) {\r\n /* five bytes */\r\n aBytes[nIdx++] = 248 + (nChr >>> 24);\r\n aBytes[nIdx++] = 128 + (nChr >>> 18 & 63);\r\n aBytes[nIdx++] = 128 + (nChr >>> 12 & 63);\r\n aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\r\n aBytes[nIdx++] = 128 + (nChr & 63);\r\n }\r\n else /* if (nChr <= 0x7fffffff) */ {\r\n /* six bytes */\r\n aBytes[nIdx++] = 252 + (nChr >>> 30);\r\n aBytes[nIdx++] = 128 + (nChr >>> 24 & 63);\r\n aBytes[nIdx++] = 128 + (nChr >>> 18 & 63);\r\n aBytes[nIdx++] = 128 + (nChr >>> 12 & 63);\r\n aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\r\n aBytes[nIdx++] = 128 + (nChr & 63);\r\n }\r\n }\r\n return aBytes;\r\n };\r\n /**\r\n * Converst string to ArrayBuffer\r\n * @param dataString\r\n */\r\n BrowserStringUtils.stringToArrayBuffer = function (dataString) {\r\n var data = new ArrayBuffer(dataString.length);\r\n var dataView = new Uint8Array(data);\r\n for (var i = 0; i < dataString.length; i++) {\r\n dataView[i] = dataString.charCodeAt(i);\r\n }\r\n return data;\r\n };\r\n /**\r\n * Converts Uint8Array to a string\r\n * @param aBytes\r\n */\r\n BrowserStringUtils.utf8ArrToString = function (aBytes) {\r\n var sView = Constants.EMPTY_STRING;\r\n for (var nPart = void 0, nLen = aBytes.length, nIdx = 0; nIdx < nLen; nIdx++) {\r\n nPart = aBytes[nIdx];\r\n sView += String.fromCharCode(nPart > 251 && nPart < 254 && nIdx + 5 < nLen ? /* six bytes */\r\n /* (nPart - 252 << 30) may be not so safe in ECMAScript! So...: */\r\n (nPart - 252) * 1073741824 + (aBytes[++nIdx] - 128 << 24) + (aBytes[++nIdx] - 128 << 18) + (aBytes[++nIdx] - 128 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\r\n : nPart > 247 && nPart < 252 && nIdx + 4 < nLen ? /* five bytes */\r\n (nPart - 248 << 24) + (aBytes[++nIdx] - 128 << 18) + (aBytes[++nIdx] - 128 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\r\n : nPart > 239 && nPart < 248 && nIdx + 3 < nLen ? /* four bytes */\r\n (nPart - 240 << 18) + (aBytes[++nIdx] - 128 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\r\n : nPart > 223 && nPart < 240 && nIdx + 2 < nLen ? /* three bytes */\r\n (nPart - 224 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\r\n : nPart > 191 && nPart < 224 && nIdx + 1 < nLen ? /* two bytes */\r\n (nPart - 192 << 6) + aBytes[++nIdx] - 128\r\n : /* nPart < 127 ? */ /* one byte */\r\n nPart);\r\n }\r\n return sView;\r\n };\r\n /**\r\n * Returns stringified jwk.\r\n * @param jwk\r\n */\r\n BrowserStringUtils.getSortedObjectString = function (obj) {\r\n return JSON.stringify(obj, Object.keys(obj).sort());\r\n };\r\n return BrowserStringUtils;\r\n}());\n\nexport { BrowserStringUtils };\n","/*! @azure/msal-browser v2.32.2 2023-01-10 */\n'use strict';\nimport { Constants } from '@azure/msal-common';\nimport { BrowserStringUtils } from '../utils/BrowserStringUtils.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Class which exposes APIs to encode plaintext to base64 encoded string. See here for implementation details:\r\n * https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#Solution_2_%E2%80%93_JavaScript's_UTF-16_%3E_UTF-8_%3E_base64\r\n */\r\nvar Base64Encode = /** @class */ (function () {\r\n function Base64Encode() {\r\n }\r\n /**\r\n * Returns URL Safe b64 encoded string from a plaintext string.\r\n * @param input\r\n */\r\n Base64Encode.prototype.urlEncode = function (input) {\r\n return encodeURIComponent(this.encode(input)\r\n .replace(/=/g, Constants.EMPTY_STRING)\r\n .replace(/\\+/g, \"-\")\r\n .replace(/\\//g, \"_\"));\r\n };\r\n /**\r\n * Returns URL Safe b64 encoded string from an int8Array.\r\n * @param inputArr\r\n */\r\n Base64Encode.prototype.urlEncodeArr = function (inputArr) {\r\n return this.base64EncArr(inputArr)\r\n .replace(/=/g, Constants.EMPTY_STRING)\r\n .replace(/\\+/g, \"-\")\r\n .replace(/\\//g, \"_\");\r\n };\r\n /**\r\n * Returns b64 encoded string from plaintext string.\r\n * @param input\r\n */\r\n Base64Encode.prototype.encode = function (input) {\r\n var inputUtf8Arr = BrowserStringUtils.stringToUtf8Arr(input);\r\n return this.base64EncArr(inputUtf8Arr);\r\n };\r\n /**\r\n * Base64 encode byte array\r\n * @param aBytes\r\n */\r\n Base64Encode.prototype.base64EncArr = function (aBytes) {\r\n var eqLen = (3 - (aBytes.length % 3)) % 3;\r\n var sB64Enc = Constants.EMPTY_STRING;\r\n for (var nMod3 = void 0, nLen = aBytes.length, nUint24 = 0, nIdx = 0; nIdx < nLen; nIdx++) {\r\n nMod3 = nIdx % 3;\r\n /* Uncomment the following line in order to split the output in lines 76-character long: */\r\n /*\r\n *if (nIdx > 0 && (nIdx * 4 / 3) % 76 === 0) { sB64Enc += \"\\r\\n\"; }\r\n */\r\n nUint24 |= aBytes[nIdx] << (16 >>> nMod3 & 24);\r\n if (nMod3 === 2 || aBytes.length - nIdx === 1) {\r\n sB64Enc += String.fromCharCode(this.uint6ToB64(nUint24 >>> 18 & 63), this.uint6ToB64(nUint24 >>> 12 & 63), this.uint6ToB64(nUint24 >>> 6 & 63), this.uint6ToB64(nUint24 & 63));\r\n nUint24 = 0;\r\n }\r\n }\r\n return eqLen === 0 ? sB64Enc : sB64Enc.substring(0, sB64Enc.length - eqLen) + (eqLen === 1 ? \"=\" : \"==\");\r\n };\r\n /**\r\n * Base64 string to array encoding helper\r\n * @param nUint6\r\n */\r\n Base64Encode.prototype.uint6ToB64 = function (nUint6) {\r\n return nUint6 < 26 ?\r\n nUint6 + 65\r\n : nUint6 < 52 ?\r\n nUint6 + 71\r\n : nUint6 < 62 ?\r\n nUint6 - 4\r\n : nUint6 === 62 ?\r\n 43\r\n : nUint6 === 63 ?\r\n 47\r\n :\r\n 65;\r\n };\r\n return Base64Encode;\r\n}());\n\nexport { Base64Encode };\n","/*! @azure/msal-browser v2.32.2 2023-01-10 */\n'use strict';\nimport { Constants } from '@azure/msal-common';\nimport { BrowserStringUtils } from '../utils/BrowserStringUtils.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Class which exposes APIs to decode base64 strings to plaintext. See here for implementation details:\r\n * https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#Solution_2_%E2%80%93_JavaScript's_UTF-16_%3E_UTF-8_%3E_base64\r\n */\r\nvar Base64Decode = /** @class */ (function () {\r\n function Base64Decode() {\r\n }\r\n /**\r\n * Returns a URL-safe plaintext decoded string from b64 encoded input.\r\n * @param input\r\n */\r\n Base64Decode.prototype.decode = function (input) {\r\n var encodedString = input.replace(/-/g, \"+\").replace(/_/g, \"/\");\r\n switch (encodedString.length % 4) {\r\n case 0:\r\n break;\r\n case 2:\r\n encodedString += \"==\";\r\n break;\r\n case 3:\r\n encodedString += \"=\";\r\n break;\r\n default:\r\n throw new Error(\"Invalid base64 string\");\r\n }\r\n var inputUtf8Arr = this.base64DecToArr(encodedString);\r\n return BrowserStringUtils.utf8ArrToString(inputUtf8Arr);\r\n };\r\n /**\r\n * Decodes base64 into Uint8Array\r\n * @param base64String\r\n * @param nBlockSize\r\n */\r\n Base64Decode.prototype.base64DecToArr = function (base64String, nBlockSize) {\r\n var sB64Enc = base64String.replace(/[^A-Za-z0-9\\+\\/]/g, Constants.EMPTY_STRING);\r\n var nInLen = sB64Enc.length;\r\n var nOutLen = nBlockSize ? Math.ceil((nInLen * 3 + 1 >>> 2) / nBlockSize) * nBlockSize : nInLen * 3 + 1 >>> 2;\r\n var aBytes = new Uint8Array(nOutLen);\r\n for (var nMod3 = void 0, nMod4 = void 0, nUint24 = 0, nOutIdx = 0, nInIdx = 0; nInIdx < nInLen; nInIdx++) {\r\n nMod4 = nInIdx & 3;\r\n nUint24 |= this.b64ToUint6(sB64Enc.charCodeAt(nInIdx)) << 18 - 6 * nMod4;\r\n if (nMod4 === 3 || nInLen - nInIdx === 1) {\r\n for (nMod3 = 0; nMod3 < 3 && nOutIdx < nOutLen; nMod3++, nOutIdx++) {\r\n aBytes[nOutIdx] = nUint24 >>> (16 >>> nMod3 & 24) & 255;\r\n }\r\n nUint24 = 0;\r\n }\r\n }\r\n return aBytes;\r\n };\r\n /**\r\n * Base64 string to array decoding helper\r\n * @param charNum\r\n */\r\n Base64Decode.prototype.b64ToUint6 = function (charNum) {\r\n return charNum > 64 && charNum < 91 ?\r\n charNum - 65\r\n : charNum > 96 && charNum < 123 ?\r\n charNum - 71\r\n : charNum > 47 && charNum < 58 ?\r\n charNum + 4\r\n : charNum === 43 ?\r\n 62\r\n : charNum === 47 ?\r\n 63\r\n :\r\n 0;\r\n };\r\n return Base64Decode;\r\n}());\n\nexport { Base64Decode };\n","/*! @azure/msal-browser v2.32.2 2023-01-10 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { Base64Encode } from '../encode/Base64Encode.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n// Constant byte array length\r\nvar RANDOM_BYTE_ARR_LENGTH = 32;\r\n/**\r\n * Class which exposes APIs to generate PKCE codes and code verifiers.\r\n */\r\nvar PkceGenerator = /** @class */ (function () {\r\n function PkceGenerator(cryptoObj) {\r\n this.base64Encode = new Base64Encode();\r\n this.cryptoObj = cryptoObj;\r\n }\r\n /**\r\n * Generates PKCE Codes. See the RFC for more information: https://tools.ietf.org/html/rfc7636\r\n */\r\n PkceGenerator.prototype.generateCodes = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var codeVerifier, codeChallenge;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n codeVerifier = this.generateCodeVerifier();\r\n return [4 /*yield*/, this.generateCodeChallengeFromVerifier(codeVerifier)];\r\n case 1:\r\n codeChallenge = _a.sent();\r\n return [2 /*return*/, {\r\n verifier: codeVerifier,\r\n challenge: codeChallenge\r\n }];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Generates a random 32 byte buffer and returns the base64\r\n * encoded string to be used as a PKCE Code Verifier\r\n */\r\n PkceGenerator.prototype.generateCodeVerifier = function () {\r\n try {\r\n // Generate random values as utf-8\r\n var buffer = new Uint8Array(RANDOM_BYTE_ARR_LENGTH);\r\n this.cryptoObj.getRandomValues(buffer);\r\n // encode verifier as base64\r\n var pkceCodeVerifierB64 = this.base64Encode.urlEncodeArr(buffer);\r\n return pkceCodeVerifierB64;\r\n }\r\n catch (e) {\r\n throw BrowserAuthError.createPkceNotGeneratedError(e);\r\n }\r\n };\r\n /**\r\n * Creates a base64 encoded PKCE Code Challenge string from the\r\n * hash created from the PKCE Code Verifier supplied\r\n */\r\n PkceGenerator.prototype.generateCodeChallengeFromVerifier = function (pkceCodeVerifier) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var pkceHashedCodeVerifier, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4 /*yield*/, this.cryptoObj.sha256Digest(pkceCodeVerifier)];\r\n case 1:\r\n pkceHashedCodeVerifier = _a.sent();\r\n // encode hash as base64\r\n return [2 /*return*/, this.base64Encode.urlEncodeArr(new Uint8Array(pkceHashedCodeVerifier))];\r\n case 2:\r\n e_1 = _a.sent();\r\n throw BrowserAuthError.createPkceNotGeneratedError(e_1);\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n return PkceGenerator;\r\n}());\n\nexport { PkceGenerator };\n","/*! @azure/msal-browser v2.32.2 2023-01-10 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { KEY_FORMAT_JWK } from '../utils/BrowserConstants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar ModernBrowserCrypto = /** @class */ (function () {\r\n function ModernBrowserCrypto() {\r\n }\r\n ModernBrowserCrypto.prototype.getRandomValues = function (dataBuffer) {\r\n return window.crypto.getRandomValues(dataBuffer);\r\n };\r\n ModernBrowserCrypto.prototype.generateKey = function (algorithm, extractable, keyUsages) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, window.crypto.subtle.generateKey(algorithm, extractable, keyUsages)];\r\n });\r\n });\r\n };\r\n ModernBrowserCrypto.prototype.exportKey = function (key) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, window.crypto.subtle.exportKey(KEY_FORMAT_JWK, key)];\r\n });\r\n });\r\n };\r\n ModernBrowserCrypto.prototype.importKey = function (keyData, algorithm, extractable, keyUsages) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, window.crypto.subtle.importKey(KEY_FORMAT_JWK, keyData, algorithm, extractable, keyUsages)];\r\n });\r\n });\r\n };\r\n ModernBrowserCrypto.prototype.sign = function (algorithm, key, data) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, window.crypto.subtle.sign(algorithm, key, data)];\r\n });\r\n });\r\n };\r\n ModernBrowserCrypto.prototype.digest = function (algorithm, data) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, window.crypto.subtle.digest(algorithm, data)];\r\n });\r\n });\r\n };\r\n return ModernBrowserCrypto;\r\n}());\n\nexport { ModernBrowserCrypto };\n","/*! @azure/msal-browser v2.32.2 2023-01-10 */\n'use strict';\nimport { __spread, __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { KEY_FORMAT_JWK } from '../utils/BrowserConstants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar MsrBrowserCrypto = /** @class */ (function () {\r\n function MsrBrowserCrypto() {\r\n }\r\n MsrBrowserCrypto.prototype.initPrng = function (entropy) {\r\n // Turn into array, as initPrng seems to not always like Uint8Array (even though it should support both)\r\n return window.msrCrypto.initPrng(__spread(entropy));\r\n };\r\n MsrBrowserCrypto.prototype.getRandomValues = function (dataBuffer) {\r\n return window.msrCrypto.getRandomValues(dataBuffer);\r\n };\r\n MsrBrowserCrypto.prototype.generateKey = function (algorithm, extractable, keyUsages) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, window.msrCrypto.subtle.generateKey(algorithm, extractable, keyUsages)];\r\n });\r\n });\r\n };\r\n MsrBrowserCrypto.prototype.exportKey = function (key) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, window.msrCrypto.subtle.exportKey(KEY_FORMAT_JWK, key)];\r\n });\r\n });\r\n };\r\n MsrBrowserCrypto.prototype.importKey = function (keyData, algorithm, extractable, keyUsages) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, window.msrCrypto.subtle.importKey(KEY_FORMAT_JWK, keyData, algorithm, extractable, keyUsages)];\r\n });\r\n });\r\n };\r\n MsrBrowserCrypto.prototype.sign = function (algorithm, key, data) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, window.msrCrypto.subtle.sign(algorithm, key, data)];\r\n });\r\n });\r\n };\r\n MsrBrowserCrypto.prototype.digest = function (algorithm, data) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, window.msrCrypto.subtle.digest(algorithm, data)];\r\n });\r\n });\r\n };\r\n return MsrBrowserCrypto;\r\n}());\n\nexport { MsrBrowserCrypto };\n","/*! @azure/msal-browser v2.32.2 2023-01-10 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { Constants } from '@azure/msal-common';\nimport { KEY_FORMAT_JWK } from '../utils/BrowserConstants.js';\nimport { BrowserStringUtils } from '../utils/BrowserStringUtils.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar MsBrowserCrypto = /** @class */ (function () {\r\n function MsBrowserCrypto() {\r\n }\r\n MsBrowserCrypto.prototype.getRandomValues = function (dataBuffer) {\r\n return window[\"msCrypto\"].getRandomValues(dataBuffer);\r\n };\r\n MsBrowserCrypto.prototype.generateKey = function (algorithm, extractable, keyUsages) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n var msGenerateKey = window[\"msCrypto\"].subtle.generateKey(algorithm, extractable, keyUsages);\r\n msGenerateKey.addEventListener(\"complete\", function (e) {\r\n resolve(e.target.result);\r\n });\r\n msGenerateKey.addEventListener(\"error\", function (error) {\r\n reject(error);\r\n });\r\n })];\r\n });\r\n });\r\n };\r\n MsBrowserCrypto.prototype.exportKey = function (key) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n var msExportKey = window[\"msCrypto\"].subtle.exportKey(KEY_FORMAT_JWK, key);\r\n msExportKey.addEventListener(\"complete\", function (e) {\r\n var resultBuffer = e.target.result;\r\n var resultString = BrowserStringUtils.utf8ArrToString(new Uint8Array(resultBuffer))\r\n .replace(/\\r/g, Constants.EMPTY_STRING)\r\n .replace(/\\n/g, Constants.EMPTY_STRING)\r\n .replace(/\\t/g, Constants.EMPTY_STRING)\r\n .split(\" \").join(Constants.EMPTY_STRING)\r\n .replace(\"\\u0000\", Constants.EMPTY_STRING);\r\n try {\r\n resolve(JSON.parse(resultString));\r\n }\r\n catch (e) {\r\n reject(e);\r\n }\r\n });\r\n msExportKey.addEventListener(\"error\", function (error) {\r\n reject(error);\r\n });\r\n })];\r\n });\r\n });\r\n };\r\n MsBrowserCrypto.prototype.importKey = function (keyData, algorithm, extractable, keyUsages) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var keyString, keyBuffer;\r\n return __generator(this, function (_a) {\r\n keyString = BrowserStringUtils.getSortedObjectString(keyData);\r\n keyBuffer = BrowserStringUtils.stringToArrayBuffer(keyString);\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n var msImportKey = window[\"msCrypto\"].subtle.importKey(KEY_FORMAT_JWK, keyBuffer, algorithm, extractable, keyUsages);\r\n msImportKey.addEventListener(\"complete\", function (e) {\r\n resolve(e.target.result);\r\n });\r\n msImportKey.addEventListener(\"error\", function (error) {\r\n reject(error);\r\n });\r\n })];\r\n });\r\n });\r\n };\r\n MsBrowserCrypto.prototype.sign = function (algorithm, key, data) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n var msSign = window[\"msCrypto\"].subtle.sign(algorithm, key, data);\r\n msSign.addEventListener(\"complete\", function (e) {\r\n resolve(e.target.result);\r\n });\r\n msSign.addEventListener(\"error\", function (error) {\r\n reject(error);\r\n });\r\n })];\r\n });\r\n });\r\n };\r\n MsBrowserCrypto.prototype.digest = function (algorithm, data) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n var digestOperation = window[\"msCrypto\"].subtle.digest(algorithm, data.buffer);\r\n digestOperation.addEventListener(\"complete\", function (e) {\r\n resolve(e.target.result);\r\n });\r\n digestOperation.addEventListener(\"error\", function (error) {\r\n reject(error);\r\n });\r\n })];\r\n });\r\n });\r\n };\r\n return MsBrowserCrypto;\r\n}());\n\nexport { MsBrowserCrypto };\n","/*! @azure/msal-browser v2.32.2 2023-01-10 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { BrowserStringUtils } from '../utils/BrowserStringUtils.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { ModernBrowserCrypto } from './ModernBrowserCrypto.js';\nimport { MsrBrowserCrypto } from './MsrBrowserCrypto.js';\nimport { MsBrowserCrypto } from './MsBrowserCrypto.js';\nimport { BrowserConfigurationAuthError } from '../error/BrowserConfigurationAuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * See here for more info on RsaHashedKeyGenParams: https://developer.mozilla.org/en-US/docs/Web/API/RsaHashedKeyGenParams\r\n */\r\n// RSA KeyGen Algorithm\r\nvar PKCS1_V15_KEYGEN_ALG = \"RSASSA-PKCS1-v1_5\";\r\n// SHA-256 hashing algorithm\r\nvar S256_HASH_ALG = \"SHA-256\";\r\n// MOD length for PoP tokens\r\nvar MODULUS_LENGTH = 2048;\r\n// Public Exponent\r\nvar PUBLIC_EXPONENT = new Uint8Array([0x01, 0x00, 0x01]);\r\n/**\r\n * This class implements functions used by the browser library to perform cryptography operations such as\r\n * hashing and encoding. It also has helper functions to validate the availability of specific APIs.\r\n */\r\nvar BrowserCrypto = /** @class */ (function () {\r\n function BrowserCrypto(logger, cryptoOptions) {\r\n var _a, _b;\r\n this.logger = logger;\r\n this.cryptoOptions = cryptoOptions;\r\n if (this.hasBrowserCrypto()) {\r\n // Use standard modern web crypto if available\r\n this.logger.verbose(\"BrowserCrypto: modern crypto interface available\");\r\n this.subtleCrypto = new ModernBrowserCrypto();\r\n }\r\n else if (this.hasIECrypto()) {\r\n // For IE11, use msCrypto interface\r\n this.logger.verbose(\"BrowserCrypto: MS crypto interface available\");\r\n this.subtleCrypto = new MsBrowserCrypto();\r\n }\r\n else if (this.hasMsrCrypto() && ((_a = this.cryptoOptions) === null || _a === void 0 ? void 0 : _a.useMsrCrypto)) {\r\n // For other browsers, use MSR Crypto if found\r\n this.logger.verbose(\"BrowserCrypto: MSR crypto interface available\");\r\n this.subtleCrypto = new MsrBrowserCrypto();\r\n }\r\n else {\r\n if (this.hasMsrCrypto()) {\r\n this.logger.info(\"BrowserCrypto: MSR Crypto interface available but system.cryptoOptions.useMsrCrypto not enabled\");\r\n }\r\n this.logger.error(\"BrowserCrypto: No crypto interfaces available.\");\r\n throw BrowserAuthError.createCryptoNotAvailableError(\"Browser crypto, msCrypto, or msrCrypto interfaces not available.\");\r\n }\r\n // Mainly needed for MSR Crypto: https://github.com/microsoft/MSR-JavaScript-Crypto#random-number-generator-prng\r\n if (this.subtleCrypto.initPrng) {\r\n this.logger.verbose(\"BrowserCrypto: Interface requires entropy\");\r\n if (!((_b = this.cryptoOptions) === null || _b === void 0 ? void 0 : _b.entropy)) {\r\n this.logger.error(\"BrowserCrypto: Interface requires entropy but none provided.\");\r\n throw BrowserConfigurationAuthError.createEntropyNotProvided();\r\n }\r\n this.logger.verbose(\"BrowserCrypto: Entropy provided\");\r\n this.subtleCrypto.initPrng(this.cryptoOptions.entropy);\r\n }\r\n this.keygenAlgorithmOptions = {\r\n name: PKCS1_V15_KEYGEN_ALG,\r\n hash: S256_HASH_ALG,\r\n modulusLength: MODULUS_LENGTH,\r\n publicExponent: PUBLIC_EXPONENT\r\n };\r\n }\r\n /**\r\n * Check whether IE crypto or other browser cryptography is available.\r\n */\r\n BrowserCrypto.prototype.hasIECrypto = function () {\r\n return \"msCrypto\" in window;\r\n };\r\n /**\r\n * Check whether browser crypto is available.\r\n */\r\n BrowserCrypto.prototype.hasBrowserCrypto = function () {\r\n return \"crypto\" in window;\r\n };\r\n /**\r\n * Check whether MSR crypto polyfill is available\r\n */\r\n BrowserCrypto.prototype.hasMsrCrypto = function () {\r\n return \"msrCrypto\" in window;\r\n };\r\n /**\r\n * Returns a sha-256 hash of the given dataString as an ArrayBuffer.\r\n * @param dataString\r\n */\r\n BrowserCrypto.prototype.sha256Digest = function (dataString) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var data;\r\n return __generator(this, function (_a) {\r\n data = BrowserStringUtils.stringToUtf8Arr(dataString);\r\n // MSR Crypto wants object with name property, instead of string\r\n return [2 /*return*/, this.subtleCrypto.digest({ name: S256_HASH_ALG }, data)];\r\n });\r\n });\r\n };\r\n /**\r\n * Populates buffer with cryptographically random values.\r\n * @param dataBuffer\r\n */\r\n BrowserCrypto.prototype.getRandomValues = function (dataBuffer) {\r\n return this.subtleCrypto.getRandomValues(dataBuffer);\r\n };\r\n /**\r\n * Generates a keypair based on current keygen algorithm config.\r\n * @param extractable\r\n * @param usages\r\n */\r\n BrowserCrypto.prototype.generateKeyPair = function (extractable, usages) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, this.subtleCrypto.generateKey(this.keygenAlgorithmOptions, extractable, usages)];\r\n });\r\n });\r\n };\r\n /**\r\n * Export key as Json Web Key (JWK)\r\n * @param key\r\n * @param format\r\n */\r\n BrowserCrypto.prototype.exportJwk = function (key) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, this.subtleCrypto.exportKey(key)];\r\n });\r\n });\r\n };\r\n /**\r\n * Imports key as Json Web Key (JWK), can set extractable and usages.\r\n * @param key\r\n * @param format\r\n * @param extractable\r\n * @param usages\r\n */\r\n BrowserCrypto.prototype.importJwk = function (key, extractable, usages) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, this.subtleCrypto.importKey(key, this.keygenAlgorithmOptions, extractable, usages)];\r\n });\r\n });\r\n };\r\n /**\r\n * Signs given data with given key\r\n * @param key\r\n * @param data\r\n */\r\n BrowserCrypto.prototype.sign = function (key, data) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, this.subtleCrypto.sign(this.keygenAlgorithmOptions, key, data)];\r\n });\r\n });\r\n };\r\n return BrowserCrypto;\r\n}());\n\nexport { BrowserCrypto };\n","/*! @azure/msal-browser v2.32.2 2023-01-10 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { DB_NAME, DB_VERSION, DB_TABLE_NAME } from '../utils/BrowserConstants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Storage wrapper for IndexedDB storage in browsers: https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API\r\n */\r\nvar DatabaseStorage = /** @class */ (function () {\r\n function DatabaseStorage() {\r\n this.dbName = DB_NAME;\r\n this.version = DB_VERSION;\r\n this.tableName = DB_TABLE_NAME;\r\n this.dbOpen = false;\r\n }\r\n /**\r\n * Opens IndexedDB instance.\r\n */\r\n DatabaseStorage.prototype.open = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n var openDB = window.indexedDB.open(_this.dbName, _this.version);\r\n openDB.addEventListener(\"upgradeneeded\", function (e) {\r\n var event = e;\r\n event.target.result.createObjectStore(_this.tableName);\r\n });\r\n openDB.addEventListener(\"success\", function (e) {\r\n var event = e;\r\n _this.db = event.target.result;\r\n _this.dbOpen = true;\r\n resolve();\r\n });\r\n openDB.addEventListener(\"error\", function () { return reject(BrowserAuthError.createDatabaseUnavailableError()); });\r\n })];\r\n });\r\n });\r\n };\r\n /**\r\n * Closes the connection to IndexedDB database when all pending transactions\r\n * complete.\r\n */\r\n DatabaseStorage.prototype.closeConnection = function () {\r\n var db = this.db;\r\n if (db && this.dbOpen) {\r\n db.close();\r\n this.dbOpen = false;\r\n }\r\n };\r\n /**\r\n * Opens database if it's not already open\r\n */\r\n DatabaseStorage.prototype.validateDbIsOpen = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!!this.dbOpen) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.open()];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n case 2: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Retrieves item from IndexedDB instance.\r\n * @param key\r\n */\r\n DatabaseStorage.prototype.getItem = function (key) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.validateDbIsOpen()];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n // TODO: Add timeouts?\r\n if (!_this.db) {\r\n return reject(BrowserAuthError.createDatabaseNotOpenError());\r\n }\r\n var transaction = _this.db.transaction([_this.tableName], \"readonly\");\r\n var objectStore = transaction.objectStore(_this.tableName);\r\n var dbGet = objectStore.get(key);\r\n dbGet.addEventListener(\"success\", function (e) {\r\n var event = e;\r\n _this.closeConnection();\r\n resolve(event.target.result);\r\n });\r\n dbGet.addEventListener(\"error\", function (e) {\r\n _this.closeConnection();\r\n reject(e);\r\n });\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Adds item to IndexedDB under given key\r\n * @param key\r\n * @param payload\r\n */\r\n DatabaseStorage.prototype.setItem = function (key, payload) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.validateDbIsOpen()];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n // TODO: Add timeouts?\r\n if (!_this.db) {\r\n return reject(BrowserAuthError.createDatabaseNotOpenError());\r\n }\r\n var transaction = _this.db.transaction([_this.tableName], \"readwrite\");\r\n var objectStore = transaction.objectStore(_this.tableName);\r\n var dbPut = objectStore.put(payload, key);\r\n dbPut.addEventListener(\"success\", function () {\r\n _this.closeConnection();\r\n resolve();\r\n });\r\n dbPut.addEventListener(\"error\", function (e) {\r\n _this.closeConnection();\r\n reject(e);\r\n });\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Removes item from IndexedDB under given key\r\n * @param key\r\n */\r\n DatabaseStorage.prototype.removeItem = function (key) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.validateDbIsOpen()];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n if (!_this.db) {\r\n return reject(BrowserAuthError.createDatabaseNotOpenError());\r\n }\r\n var transaction = _this.db.transaction([_this.tableName], \"readwrite\");\r\n var objectStore = transaction.objectStore(_this.tableName);\r\n var dbDelete = objectStore.delete(key);\r\n dbDelete.addEventListener(\"success\", function () {\r\n _this.closeConnection();\r\n resolve();\r\n });\r\n dbDelete.addEventListener(\"error\", function (e) {\r\n _this.closeConnection();\r\n reject(e);\r\n });\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Get all the keys from the storage object as an iterable array of strings.\r\n */\r\n DatabaseStorage.prototype.getKeys = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.validateDbIsOpen()];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n if (!_this.db) {\r\n return reject(BrowserAuthError.createDatabaseNotOpenError());\r\n }\r\n var transaction = _this.db.transaction([_this.tableName], \"readonly\");\r\n var objectStore = transaction.objectStore(_this.tableName);\r\n var dbGetKeys = objectStore.getAllKeys();\r\n dbGetKeys.addEventListener(\"success\", function (e) {\r\n var event = e;\r\n _this.closeConnection();\r\n resolve(event.target.result);\r\n });\r\n dbGetKeys.addEventListener(\"error\", function (e) {\r\n _this.closeConnection();\r\n reject(e);\r\n });\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n *\r\n * Checks whether there is an object under the search key in the object store\r\n */\r\n DatabaseStorage.prototype.containsKey = function (key) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.validateDbIsOpen()];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n if (!_this.db) {\r\n return reject(BrowserAuthError.createDatabaseNotOpenError());\r\n }\r\n var transaction = _this.db.transaction([_this.tableName], \"readonly\");\r\n var objectStore = transaction.objectStore(_this.tableName);\r\n var dbContainsKey = objectStore.count(key);\r\n dbContainsKey.addEventListener(\"success\", function (e) {\r\n var event = e;\r\n _this.closeConnection();\r\n resolve(event.target.result === 1);\r\n });\r\n dbContainsKey.addEventListener(\"error\", function (e) {\r\n _this.closeConnection();\r\n reject(e);\r\n });\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Deletes the MSAL database. The database is deleted rather than cleared to make it possible\r\n * for client applications to downgrade to a previous MSAL version without worrying about forward compatibility issues\r\n * with IndexedDB database versions.\r\n */\r\n DatabaseStorage.prototype.deleteDatabase = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n // Check if database being deleted exists\r\n if (this.db && this.dbOpen) {\r\n this.closeConnection();\r\n }\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n var deleteDbRequest = window.indexedDB.deleteDatabase(DB_NAME);\r\n deleteDbRequest.addEventListener(\"success\", function () { return resolve(true); });\r\n deleteDbRequest.addEventListener(\"blocked\", function () { return resolve(true); });\r\n deleteDbRequest.addEventListener(\"error\", function () { return reject(false); });\r\n })];\r\n });\r\n });\r\n };\r\n return DatabaseStorage;\r\n}());\n\nexport { DatabaseStorage };\n","/*! @azure/msal-browser v2.32.2 2023-01-10 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar MemoryStorage = /** @class */ (function () {\r\n function MemoryStorage() {\r\n this.cache = new Map();\r\n }\r\n MemoryStorage.prototype.getItem = function (key) {\r\n return this.cache.get(key) || null;\r\n };\r\n MemoryStorage.prototype.setItem = function (key, value) {\r\n this.cache.set(key, value);\r\n };\r\n MemoryStorage.prototype.removeItem = function (key) {\r\n this.cache.delete(key);\r\n };\r\n MemoryStorage.prototype.getKeys = function () {\r\n var cacheKeys = [];\r\n this.cache.forEach(function (value, key) {\r\n cacheKeys.push(key);\r\n });\r\n return cacheKeys;\r\n };\r\n MemoryStorage.prototype.containsKey = function (key) {\r\n return this.cache.has(key);\r\n };\r\n MemoryStorage.prototype.clear = function () {\r\n this.cache.clear();\r\n };\r\n return MemoryStorage;\r\n}());\n\nexport { MemoryStorage };\n","/*! @azure/msal-browser v2.32.2 2023-01-10 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { BrowserAuthError, BrowserAuthErrorMessage } from '../error/BrowserAuthError.js';\nimport { DatabaseStorage } from './DatabaseStorage.js';\nimport { MemoryStorage } from './MemoryStorage.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * This class allows MSAL to store artifacts asynchronously using the DatabaseStorage IndexedDB wrapper,\r\n * backed up with the more volatile MemoryStorage object for cases in which IndexedDB may be unavailable.\r\n */\r\nvar AsyncMemoryStorage = /** @class */ (function () {\r\n function AsyncMemoryStorage(logger, storeName) {\r\n this.inMemoryCache = new MemoryStorage();\r\n this.indexedDBCache = new DatabaseStorage();\r\n this.logger = logger;\r\n this.storeName = storeName;\r\n }\r\n AsyncMemoryStorage.prototype.handleDatabaseAccessError = function (error) {\r\n if (error instanceof BrowserAuthError && error.errorCode === BrowserAuthErrorMessage.databaseUnavailable.code) {\r\n this.logger.error(\"Could not access persistent storage. This may be caused by browser privacy features which block persistent storage in third-party contexts.\");\r\n }\r\n else {\r\n throw error;\r\n }\r\n };\r\n /**\r\n * Get the item matching the given key. Tries in-memory cache first, then in the asynchronous\r\n * storage object if item isn't found in-memory.\r\n * @param key\r\n */\r\n AsyncMemoryStorage.prototype.getItem = function (key) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var item, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n item = this.inMemoryCache.getItem(key);\r\n if (!!item) return [3 /*break*/, 4];\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n this.logger.verbose(\"Queried item not found in in-memory cache, now querying persistent storage.\");\r\n return [4 /*yield*/, this.indexedDBCache.getItem(key)];\r\n case 2: return [2 /*return*/, _a.sent()];\r\n case 3:\r\n e_1 = _a.sent();\r\n this.handleDatabaseAccessError(e_1);\r\n return [3 /*break*/, 4];\r\n case 4: return [2 /*return*/, item];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Sets the item in the in-memory cache and then tries to set it in the asynchronous\r\n * storage object with the given key.\r\n * @param key\r\n * @param value\r\n */\r\n AsyncMemoryStorage.prototype.setItem = function (key, value) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var e_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.inMemoryCache.setItem(key, value);\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.indexedDBCache.setItem(key, value)];\r\n case 2:\r\n _a.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n e_2 = _a.sent();\r\n this.handleDatabaseAccessError(e_2);\r\n return [3 /*break*/, 4];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Removes the item matching the key from the in-memory cache, then tries to remove it from the asynchronous storage object.\r\n * @param key\r\n */\r\n AsyncMemoryStorage.prototype.removeItem = function (key) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var e_3;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.inMemoryCache.removeItem(key);\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.indexedDBCache.removeItem(key)];\r\n case 2:\r\n _a.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n e_3 = _a.sent();\r\n this.handleDatabaseAccessError(e_3);\r\n return [3 /*break*/, 4];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Get all the keys from the in-memory cache as an iterable array of strings. If no keys are found, query the keys in the\r\n * asynchronous storage object.\r\n */\r\n AsyncMemoryStorage.prototype.getKeys = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var cacheKeys, e_4;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n cacheKeys = this.inMemoryCache.getKeys();\r\n if (!(cacheKeys.length === 0)) return [3 /*break*/, 4];\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n this.logger.verbose(\"In-memory cache is empty, now querying persistent storage.\");\r\n return [4 /*yield*/, this.indexedDBCache.getKeys()];\r\n case 2: return [2 /*return*/, _a.sent()];\r\n case 3:\r\n e_4 = _a.sent();\r\n this.handleDatabaseAccessError(e_4);\r\n return [3 /*break*/, 4];\r\n case 4: return [2 /*return*/, cacheKeys];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Returns true or false if the given key is present in the cache.\r\n * @param key\r\n */\r\n AsyncMemoryStorage.prototype.containsKey = function (key) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var containsKey, e_5;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n containsKey = this.inMemoryCache.containsKey(key);\r\n if (!!containsKey) return [3 /*break*/, 4];\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n this.logger.verbose(\"Key not found in in-memory cache, now querying persistent storage.\");\r\n return [4 /*yield*/, this.indexedDBCache.containsKey(key)];\r\n case 2: return [2 /*return*/, _a.sent()];\r\n case 3:\r\n e_5 = _a.sent();\r\n this.handleDatabaseAccessError(e_5);\r\n return [3 /*break*/, 4];\r\n case 4: return [2 /*return*/, containsKey];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Clears in-memory Map\r\n */\r\n AsyncMemoryStorage.prototype.clearInMemory = function () {\r\n // InMemory cache is a Map instance, clear is straightforward\r\n this.logger.verbose(\"Deleting in-memory keystore \" + this.storeName);\r\n this.inMemoryCache.clear();\r\n this.logger.verbose(\"In-memory keystore \" + this.storeName + \" deleted\");\r\n };\r\n /**\r\n * Tries to delete the IndexedDB database\r\n * @returns\r\n */\r\n AsyncMemoryStorage.prototype.clearPersistent = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var dbDeleted, e_6;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n this.logger.verbose(\"Deleting persistent keystore\");\r\n return [4 /*yield*/, this.indexedDBCache.deleteDatabase()];\r\n case 1:\r\n dbDeleted = _a.sent();\r\n if (dbDeleted) {\r\n this.logger.verbose(\"Persistent keystore deleted\");\r\n }\r\n return [2 /*return*/, dbDeleted];\r\n case 2:\r\n e_6 = _a.sent();\r\n this.handleDatabaseAccessError(e_6);\r\n return [2 /*return*/, false];\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n return AsyncMemoryStorage;\r\n}());\n\nexport { AsyncMemoryStorage };\n","/*! @azure/msal-browser v2.32.2 2023-01-10 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { AsyncMemoryStorage } from './AsyncMemoryStorage.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar CryptoKeyStoreNames;\r\n(function (CryptoKeyStoreNames) {\r\n CryptoKeyStoreNames[\"asymmetricKeys\"] = \"asymmetricKeys\";\r\n CryptoKeyStoreNames[\"symmetricKeys\"] = \"symmetricKeys\";\r\n})(CryptoKeyStoreNames || (CryptoKeyStoreNames = {}));\r\n/**\r\n * MSAL CryptoKeyStore DB Version 2\r\n */\r\nvar CryptoKeyStore = /** @class */ (function () {\r\n function CryptoKeyStore(logger) {\r\n this.logger = logger;\r\n this.asymmetricKeys = new AsyncMemoryStorage(this.logger, CryptoKeyStoreNames.asymmetricKeys);\r\n this.symmetricKeys = new AsyncMemoryStorage(this.logger, CryptoKeyStoreNames.symmetricKeys);\r\n }\r\n CryptoKeyStore.prototype.clear = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n // Delete in-memory keystores\r\n this.asymmetricKeys.clearInMemory();\r\n this.symmetricKeys.clearInMemory();\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.asymmetricKeys.clearPersistent()];\r\n case 2:\r\n _a.sent();\r\n return [2 /*return*/, true];\r\n case 3:\r\n e_1 = _a.sent();\r\n if (e_1 instanceof Error) {\r\n this.logger.error(\"Clearing keystore failed with error: \" + e_1.message);\r\n }\r\n else {\r\n this.logger.error(\"Clearing keystore failed with unknown error\");\r\n }\r\n return [2 /*return*/, false];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n return CryptoKeyStore;\r\n}());\n\nexport { CryptoKeyStore, CryptoKeyStoreNames };\n","/*! @azure/msal-browser v2.32.2 2023-01-10 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { PerformanceEvents, JoseHeader } from '@azure/msal-common';\nimport { GuidGenerator } from './GuidGenerator.js';\nimport { Base64Encode } from '../encode/Base64Encode.js';\nimport { Base64Decode } from '../encode/Base64Decode.js';\nimport { PkceGenerator } from './PkceGenerator.js';\nimport { BrowserCrypto } from './BrowserCrypto.js';\nimport { BrowserStringUtils } from '../utils/BrowserStringUtils.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { CryptoKeyStore } from '../cache/CryptoKeyStore.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * This class implements MSAL's crypto interface, which allows it to perform base64 encoding and decoding, generating cryptographically random GUIDs and\r\n * implementing Proof Key for Code Exchange specs for the OAuth Authorization Code Flow using PKCE (rfc here: https://tools.ietf.org/html/rfc7636).\r\n */\r\nvar CryptoOps = /** @class */ (function () {\r\n function CryptoOps(logger, performanceClient, cryptoConfig) {\r\n this.logger = logger;\r\n // Browser crypto needs to be validated first before any other classes can be set.\r\n this.browserCrypto = new BrowserCrypto(this.logger, cryptoConfig);\r\n this.b64Encode = new Base64Encode();\r\n this.b64Decode = new Base64Decode();\r\n this.guidGenerator = new GuidGenerator(this.browserCrypto);\r\n this.pkceGenerator = new PkceGenerator(this.browserCrypto);\r\n this.cache = new CryptoKeyStore(this.logger);\r\n this.performanceClient = performanceClient;\r\n }\r\n /**\r\n * Creates a new random GUID - used to populate state and nonce.\r\n * @returns string (GUID)\r\n */\r\n CryptoOps.prototype.createNewGuid = function () {\r\n return this.guidGenerator.generateGuid();\r\n };\r\n /**\r\n * Encodes input string to base64.\r\n * @param input\r\n */\r\n CryptoOps.prototype.base64Encode = function (input) {\r\n return this.b64Encode.encode(input);\r\n };\r\n /**\r\n * Decodes input string from base64.\r\n * @param input\r\n */\r\n CryptoOps.prototype.base64Decode = function (input) {\r\n return this.b64Decode.decode(input);\r\n };\r\n /**\r\n * Generates PKCE codes used in Authorization Code Flow.\r\n */\r\n CryptoOps.prototype.generatePkceCodes = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, this.pkceGenerator.generateCodes()];\r\n });\r\n });\r\n };\r\n /**\r\n * Generates a keypair, stores it and returns a thumbprint\r\n * @param request\r\n */\r\n CryptoOps.prototype.getPublicKeyThumbprint = function (request) {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var publicKeyThumbMeasurement, keyPair, publicKeyJwk, pubKeyThumprintObj, publicJwkString, publicJwkHash, privateKeyJwk, unextractablePrivateKey;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n publicKeyThumbMeasurement = (_a = this.performanceClient) === null || _a === void 0 ? void 0 : _a.startMeasurement(PerformanceEvents.CryptoOptsGetPublicKeyThumbprint, request.correlationId);\r\n return [4 /*yield*/, this.browserCrypto.generateKeyPair(CryptoOps.EXTRACTABLE, CryptoOps.POP_KEY_USAGES)];\r\n case 1:\r\n keyPair = _b.sent();\r\n return [4 /*yield*/, this.browserCrypto.exportJwk(keyPair.publicKey)];\r\n case 2:\r\n publicKeyJwk = _b.sent();\r\n pubKeyThumprintObj = {\r\n e: publicKeyJwk.e,\r\n kty: publicKeyJwk.kty,\r\n n: publicKeyJwk.n\r\n };\r\n publicJwkString = BrowserStringUtils.getSortedObjectString(pubKeyThumprintObj);\r\n return [4 /*yield*/, this.hashString(publicJwkString)];\r\n case 3:\r\n publicJwkHash = _b.sent();\r\n return [4 /*yield*/, this.browserCrypto.exportJwk(keyPair.privateKey)];\r\n case 4:\r\n privateKeyJwk = _b.sent();\r\n return [4 /*yield*/, this.browserCrypto.importJwk(privateKeyJwk, false, [\"sign\"])];\r\n case 5:\r\n unextractablePrivateKey = _b.sent();\r\n // Store Keypair data in keystore\r\n return [4 /*yield*/, this.cache.asymmetricKeys.setItem(publicJwkHash, {\r\n privateKey: unextractablePrivateKey,\r\n publicKey: keyPair.publicKey,\r\n requestMethod: request.resourceRequestMethod,\r\n requestUri: request.resourceRequestUri\r\n })];\r\n case 6:\r\n // Store Keypair data in keystore\r\n _b.sent();\r\n if (publicKeyThumbMeasurement) {\r\n publicKeyThumbMeasurement.endMeasurement({\r\n success: true\r\n });\r\n }\r\n return [2 /*return*/, publicJwkHash];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Removes cryptographic keypair from key store matching the keyId passed in\r\n * @param kid\r\n */\r\n CryptoOps.prototype.removeTokenBindingKey = function (kid) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var keyFound;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.cache.asymmetricKeys.removeItem(kid)];\r\n case 1:\r\n _a.sent();\r\n return [4 /*yield*/, this.cache.asymmetricKeys.containsKey(kid)];\r\n case 2:\r\n keyFound = _a.sent();\r\n return [2 /*return*/, !keyFound];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Removes all cryptographic keys from IndexedDB storage\r\n */\r\n CryptoOps.prototype.clearKeystore = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.cache.clear()];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Signs the given object as a jwt payload with private key retrieved by given kid.\r\n * @param payload\r\n * @param kid\r\n */\r\n CryptoOps.prototype.signJwt = function (payload, kid, correlationId) {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var signJwtMeasurement, cachedKeyPair, publicKeyJwk, publicKeyJwkString, encodedKeyIdThumbprint, shrHeader, encodedShrHeader, encodedPayload, tokenString, tokenBuffer, signatureBuffer, encodedSignature, signedJwt;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n signJwtMeasurement = (_a = this.performanceClient) === null || _a === void 0 ? void 0 : _a.startMeasurement(PerformanceEvents.CryptoOptsSignJwt, correlationId);\r\n return [4 /*yield*/, this.cache.asymmetricKeys.getItem(kid)];\r\n case 1:\r\n cachedKeyPair = _b.sent();\r\n if (!cachedKeyPair) {\r\n throw BrowserAuthError.createSigningKeyNotFoundInStorageError(kid);\r\n }\r\n return [4 /*yield*/, this.browserCrypto.exportJwk(cachedKeyPair.publicKey)];\r\n case 2:\r\n publicKeyJwk = _b.sent();\r\n publicKeyJwkString = BrowserStringUtils.getSortedObjectString(publicKeyJwk);\r\n encodedKeyIdThumbprint = this.b64Encode.urlEncode(JSON.stringify({ kid: kid }));\r\n shrHeader = JoseHeader.getShrHeaderString({ kid: encodedKeyIdThumbprint, alg: publicKeyJwk.alg });\r\n encodedShrHeader = this.b64Encode.urlEncode(shrHeader);\r\n // Generate payload\r\n payload.cnf = {\r\n jwk: JSON.parse(publicKeyJwkString)\r\n };\r\n encodedPayload = this.b64Encode.urlEncode(JSON.stringify(payload));\r\n tokenString = encodedShrHeader + \".\" + encodedPayload;\r\n tokenBuffer = BrowserStringUtils.stringToArrayBuffer(tokenString);\r\n return [4 /*yield*/, this.browserCrypto.sign(cachedKeyPair.privateKey, tokenBuffer)];\r\n case 3:\r\n signatureBuffer = _b.sent();\r\n encodedSignature = this.b64Encode.urlEncodeArr(new Uint8Array(signatureBuffer));\r\n signedJwt = tokenString + \".\" + encodedSignature;\r\n if (signJwtMeasurement) {\r\n signJwtMeasurement.endMeasurement({\r\n success: true\r\n });\r\n }\r\n return [2 /*return*/, signedJwt];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Returns the SHA-256 hash of an input string\r\n * @param plainText\r\n */\r\n CryptoOps.prototype.hashString = function (plainText) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var hashBuffer, hashBytes;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.browserCrypto.sha256Digest(plainText)];\r\n case 1:\r\n hashBuffer = _a.sent();\r\n hashBytes = new Uint8Array(hashBuffer);\r\n return [2 /*return*/, this.b64Encode.urlEncodeArr(hashBytes)];\r\n }\r\n });\r\n });\r\n };\r\n CryptoOps.POP_KEY_USAGES = [\"sign\", \"verify\"];\r\n CryptoOps.EXTRACTABLE = true;\r\n return CryptoOps;\r\n}());\n\nexport { CryptoOps };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\nimport { StringUtils } from '../utils/StringUtils.js';\nimport { Constants } from '../utils/Constants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Log message level.\r\n */\r\nvar LogLevel;\r\n(function (LogLevel) {\r\n LogLevel[LogLevel[\"Error\"] = 0] = \"Error\";\r\n LogLevel[LogLevel[\"Warning\"] = 1] = \"Warning\";\r\n LogLevel[LogLevel[\"Info\"] = 2] = \"Info\";\r\n LogLevel[LogLevel[\"Verbose\"] = 3] = \"Verbose\";\r\n LogLevel[LogLevel[\"Trace\"] = 4] = \"Trace\";\r\n})(LogLevel || (LogLevel = {}));\r\n/**\r\n * Class which facilitates logging of messages to a specific place.\r\n */\r\nvar Logger = /** @class */ (function () {\r\n function Logger(loggerOptions, packageName, packageVersion) {\r\n // Current log level, defaults to info.\r\n this.level = LogLevel.Info;\r\n var defaultLoggerCallback = function () {\r\n return;\r\n };\r\n var setLoggerOptions = loggerOptions || Logger.createDefaultLoggerOptions();\r\n this.localCallback = setLoggerOptions.loggerCallback || defaultLoggerCallback;\r\n this.piiLoggingEnabled = setLoggerOptions.piiLoggingEnabled || false;\r\n this.level = typeof (setLoggerOptions.logLevel) === \"number\" ? setLoggerOptions.logLevel : LogLevel.Info;\r\n this.correlationId = setLoggerOptions.correlationId || Constants.EMPTY_STRING;\r\n this.packageName = packageName || Constants.EMPTY_STRING;\r\n this.packageVersion = packageVersion || Constants.EMPTY_STRING;\r\n }\r\n Logger.createDefaultLoggerOptions = function () {\r\n return {\r\n loggerCallback: function () {\r\n // allow users to not set loggerCallback\r\n },\r\n piiLoggingEnabled: false,\r\n logLevel: LogLevel.Info\r\n };\r\n };\r\n /**\r\n * Create new Logger with existing configurations.\r\n */\r\n Logger.prototype.clone = function (packageName, packageVersion, correlationId) {\r\n return new Logger({ loggerCallback: this.localCallback, piiLoggingEnabled: this.piiLoggingEnabled, logLevel: this.level, correlationId: correlationId || this.correlationId }, packageName, packageVersion);\r\n };\r\n /**\r\n * Log message with required options.\r\n */\r\n Logger.prototype.logMessage = function (logMessage, options) {\r\n if ((options.logLevel > this.level) || (!this.piiLoggingEnabled && options.containsPii)) {\r\n return;\r\n }\r\n var timestamp = new Date().toUTCString();\r\n // Add correlationId to logs if set, correlationId provided on log messages take precedence\r\n var logHeader;\r\n if (!StringUtils.isEmpty(options.correlationId)) {\r\n logHeader = \"[\" + timestamp + \"] : [\" + options.correlationId + \"]\";\r\n }\r\n else if (!StringUtils.isEmpty(this.correlationId)) {\r\n logHeader = \"[\" + timestamp + \"] : [\" + this.correlationId + \"]\";\r\n }\r\n else {\r\n logHeader = \"[\" + timestamp + \"]\";\r\n }\r\n var log = logHeader + \" : \" + this.packageName + \"@\" + this.packageVersion + \" : \" + LogLevel[options.logLevel] + \" - \" + logMessage;\r\n // debug(`msal:${LogLevel[options.logLevel]}${options.containsPii ? \"-Pii\": Constants.EMPTY_STRING}${options.context ? `:${options.context}` : Constants.EMPTY_STRING}`)(logMessage);\r\n this.executeCallback(options.logLevel, log, options.containsPii || false);\r\n };\r\n /**\r\n * Execute callback with message.\r\n */\r\n Logger.prototype.executeCallback = function (level, message, containsPii) {\r\n if (this.localCallback) {\r\n this.localCallback(level, message, containsPii);\r\n }\r\n };\r\n /**\r\n * Logs error messages.\r\n */\r\n Logger.prototype.error = function (message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Error,\r\n containsPii: false,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n };\r\n /**\r\n * Logs error messages with PII.\r\n */\r\n Logger.prototype.errorPii = function (message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Error,\r\n containsPii: true,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n };\r\n /**\r\n * Logs warning messages.\r\n */\r\n Logger.prototype.warning = function (message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Warning,\r\n containsPii: false,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n };\r\n /**\r\n * Logs warning messages with PII.\r\n */\r\n Logger.prototype.warningPii = function (message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Warning,\r\n containsPii: true,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n };\r\n /**\r\n * Logs info messages.\r\n */\r\n Logger.prototype.info = function (message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Info,\r\n containsPii: false,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n };\r\n /**\r\n * Logs info messages with PII.\r\n */\r\n Logger.prototype.infoPii = function (message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Info,\r\n containsPii: true,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n };\r\n /**\r\n * Logs verbose messages.\r\n */\r\n Logger.prototype.verbose = function (message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Verbose,\r\n containsPii: false,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n };\r\n /**\r\n * Logs verbose messages with PII.\r\n */\r\n Logger.prototype.verbosePii = function (message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Verbose,\r\n containsPii: true,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n };\r\n /**\r\n * Logs trace messages.\r\n */\r\n Logger.prototype.trace = function (message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Trace,\r\n containsPii: false,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n };\r\n /**\r\n * Logs trace messages with PII.\r\n */\r\n Logger.prototype.tracePii = function (message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Trace,\r\n containsPii: true,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n };\r\n /**\r\n * Returns whether PII Logging is enabled or not.\r\n */\r\n Logger.prototype.isPiiLoggingEnabled = function () {\r\n return this.piiLoggingEnabled || false;\r\n };\r\n return Logger;\r\n}());\n\nexport { LogLevel, Logger };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\nimport { __assign } from '../../_virtual/_tslib.js';\nimport { PerformanceEventStatus } from './PerformanceEvent.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar PerformanceClient = /** @class */ (function () {\r\n /**\r\n * Creates an instance of PerformanceClient,\r\n * an abstract class containing core performance telemetry logic.\r\n *\r\n * @constructor\r\n * @param {string} clientId Client ID of the application\r\n * @param {string} authority Authority used by the application\r\n * @param {Logger} logger Logger used by the application\r\n * @param {string} libraryName Name of the library\r\n * @param {string} libraryVersion Version of the library\r\n */\r\n function PerformanceClient(clientId, authority, logger, libraryName, libraryVersion, applicationTelemetry) {\r\n this.authority = authority;\r\n this.libraryName = libraryName;\r\n this.libraryVersion = libraryVersion;\r\n this.applicationTelemetry = applicationTelemetry;\r\n this.clientId = clientId;\r\n this.logger = logger;\r\n this.callbacks = new Map();\r\n this.eventsByCorrelationId = new Map();\r\n this.staticFieldsByCorrelationId = new Map();\r\n this.measurementsById = new Map();\r\n this.countersByCorrelationId = new Map();\r\n }\r\n /**\r\n * Starts and returns an platform-specific implementation of IPerformanceMeasurement.\r\n * Note: this function can be changed to abstract at the next major version bump.\r\n *\r\n * @param {string} measureName\r\n * @param {string} correlationId\r\n * @returns {IPerformanceMeasurement}\r\n */\r\n /* eslint-disable-next-line @typescript-eslint/no-unused-vars */\r\n PerformanceClient.prototype.startPerformanceMeasurement = function (measureName, correlationId) {\r\n return {};\r\n };\r\n /**\r\n * Starts and returns an platform-specific implementation of IPerformanceMeasurement.\r\n * Note: this incorrectly-named function will be removed at the next major version bump.\r\n *\r\n * @param {string} measureName\r\n * @param {string} correlationId\r\n * @returns {IPerformanceMeasurement}\r\n */\r\n /* eslint-disable-next-line @typescript-eslint/no-unused-vars */\r\n PerformanceClient.prototype.startPerformanceMeasuremeant = function (measureName, correlationId) {\r\n return {};\r\n };\r\n /**\r\n * Starts measuring performance for a given operation. Returns a function that should be used to end the measurement.\r\n *\r\n * @param {PerformanceEvents} measureName\r\n * @param {?string} [correlationId]\r\n * @returns {InProgressPerformanceEvent}\r\n */\r\n PerformanceClient.prototype.startMeasurement = function (measureName, correlationId) {\r\n var _this = this;\r\n var _a, _b;\r\n // Generate a placeholder correlation if the request does not provide one\r\n var eventCorrelationId = correlationId || this.generateId();\r\n if (!correlationId) {\r\n this.logger.info(\"PerformanceClient: No correlation id provided for \" + measureName + \", generating\", eventCorrelationId);\r\n }\r\n // Duplicate code to address spelling error will be removed at the next major version bump.\r\n this.logger.trace(\"PerformanceClient: Performance measurement started for \" + measureName, eventCorrelationId);\r\n var validMeasurement;\r\n var performanceMeasuremeant = this.startPerformanceMeasuremeant(measureName, eventCorrelationId);\r\n if (performanceMeasuremeant.startMeasurement) {\r\n performanceMeasuremeant.startMeasurement();\r\n validMeasurement = performanceMeasuremeant;\r\n }\r\n else {\r\n var performanceMeasurement = this.startPerformanceMeasurement(measureName, eventCorrelationId);\r\n performanceMeasurement.startMeasurement();\r\n validMeasurement = performanceMeasurement;\r\n }\r\n var inProgressEvent = {\r\n eventId: this.generateId(),\r\n status: PerformanceEventStatus.InProgress,\r\n authority: this.authority,\r\n libraryName: this.libraryName,\r\n libraryVersion: this.libraryVersion,\r\n clientId: this.clientId,\r\n name: measureName,\r\n startTimeMs: Date.now(),\r\n correlationId: eventCorrelationId,\r\n };\r\n // Store in progress events so they can be discarded if not ended properly\r\n this.cacheEventByCorrelationId(inProgressEvent);\r\n var staticFields = {\r\n appName: (_a = this.applicationTelemetry) === null || _a === void 0 ? void 0 : _a.appName,\r\n appVersion: (_b = this.applicationTelemetry) === null || _b === void 0 ? void 0 : _b.appVersion,\r\n };\r\n this.addStaticFields(staticFields, eventCorrelationId);\r\n this.cacheMeasurement(inProgressEvent, validMeasurement);\r\n // Return the event and functions the caller can use to properly end/flush the measurement\r\n return {\r\n endMeasurement: function (event) {\r\n var completedEvent = _this.endMeasurement(__assign(__assign({}, inProgressEvent), event));\r\n if (completedEvent) {\r\n // Cache event so that submeasurements can be added downstream\r\n _this.cacheEventByCorrelationId(completedEvent);\r\n }\r\n return completedEvent;\r\n },\r\n flushMeasurement: function () {\r\n return _this.flushMeasurements(inProgressEvent.name, inProgressEvent.correlationId);\r\n },\r\n discardMeasurement: function () {\r\n return _this.discardMeasurements(inProgressEvent.correlationId);\r\n },\r\n addStaticFields: function (fields) {\r\n return _this.addStaticFields(fields, inProgressEvent.correlationId);\r\n },\r\n increment: function (counters) {\r\n return _this.increment(counters, inProgressEvent.correlationId);\r\n },\r\n measurement: validMeasurement,\r\n event: inProgressEvent\r\n };\r\n };\r\n /**\r\n * Stops measuring the performance for an operation. Should only be called directly by PerformanceClient classes,\r\n * as consumers should instead use the function returned by startMeasurement.\r\n *\r\n * @param {PerformanceEvent} event\r\n * @returns {(PerformanceEvent | null)}\r\n */\r\n PerformanceClient.prototype.endMeasurement = function (event) {\r\n var performanceMeasurement = this.measurementsById.get(event.eventId);\r\n if (performanceMeasurement) {\r\n // Immediately delete so that the same event isnt ended twice\r\n this.measurementsById.delete(event.eventId);\r\n performanceMeasurement.endMeasurement();\r\n var durationMs = performanceMeasurement.flushMeasurement();\r\n // null indicates no measurement was taken (e.g. needed performance APIs not present)\r\n if (durationMs !== null) {\r\n this.logger.trace(\"PerformanceClient: Performance measurement ended for \" + event.name + \": \" + durationMs + \" ms\", event.correlationId);\r\n var completedEvent = __assign(__assign({ \r\n // Allow duration to be overwritten when event ends (e.g. testing), but not status\r\n durationMs: Math.round(durationMs) }, event), { status: PerformanceEventStatus.Completed });\r\n return completedEvent;\r\n }\r\n else {\r\n this.logger.trace(\"PerformanceClient: Performance measurement not taken\", event.correlationId);\r\n }\r\n }\r\n else {\r\n this.logger.trace(\"PerformanceClient: Measurement not found for \" + event.eventId, event.correlationId);\r\n }\r\n return null;\r\n };\r\n /**\r\n * Saves extra information to be emitted when the measurements are flushed\r\n * @param fields\r\n * @param correlationId\r\n */\r\n PerformanceClient.prototype.addStaticFields = function (fields, correlationId) {\r\n var existingStaticFields = this.staticFieldsByCorrelationId.get(correlationId);\r\n if (existingStaticFields) {\r\n this.logger.trace(\"PerformanceClient: Updating static fields\");\r\n this.staticFieldsByCorrelationId.set(correlationId, __assign(__assign({}, existingStaticFields), fields));\r\n }\r\n else {\r\n this.logger.trace(\"PerformanceClient: Adding static fields\");\r\n this.staticFieldsByCorrelationId.set(correlationId, fields);\r\n }\r\n };\r\n /**\r\n * Increment counters to be emitted when the measurements are flushed\r\n * @param counters {Counters}\r\n * @param correlationId {string} correlation identifier\r\n */\r\n PerformanceClient.prototype.increment = function (counters, correlationId) {\r\n var existing = this.countersByCorrelationId.get(correlationId);\r\n if (!existing) {\r\n this.logger.trace(\"PerformanceClient: Setting counters\");\r\n this.countersByCorrelationId.set(correlationId, __assign({}, counters));\r\n return;\r\n }\r\n this.logger.trace(\"PerformanceClient: Updating counters\");\r\n for (var counter in counters) {\r\n if (!existing.hasOwnProperty(counter)) {\r\n existing[counter] = 0;\r\n }\r\n existing[counter] += counters[counter];\r\n }\r\n };\r\n /**\r\n * Upserts event into event cache.\r\n * First key is the correlation id, second key is the event id.\r\n * Allows for events to be grouped by correlation id,\r\n * and to easily allow for properties on them to be updated.\r\n *\r\n * @private\r\n * @param {PerformanceEvent} event\r\n */\r\n PerformanceClient.prototype.cacheEventByCorrelationId = function (event) {\r\n var existingEvents = this.eventsByCorrelationId.get(event.correlationId);\r\n if (existingEvents) {\r\n this.logger.trace(\"PerformanceClient: Performance measurement for \" + event.name + \" added/updated\", event.correlationId);\r\n existingEvents.set(event.eventId, event);\r\n }\r\n else {\r\n this.logger.trace(\"PerformanceClient: Performance measurement for \" + event.name + \" started\", event.correlationId);\r\n this.eventsByCorrelationId.set(event.correlationId, new Map().set(event.eventId, event));\r\n }\r\n };\r\n /**\r\n * Cache measurements by their id.\r\n *\r\n * @private\r\n * @param {PerformanceEvent} event\r\n * @param {IPerformanceMeasurement} measurement\r\n */\r\n PerformanceClient.prototype.cacheMeasurement = function (event, measurement) {\r\n this.measurementsById.set(event.eventId, measurement);\r\n };\r\n /**\r\n * Gathers and emits performance events for measurements taked for the given top-level API and correlation ID.\r\n *\r\n * @param {PerformanceEvents} measureName\r\n * @param {string} correlationId\r\n */\r\n PerformanceClient.prototype.flushMeasurements = function (measureName, correlationId) {\r\n var _this = this;\r\n this.logger.trace(\"PerformanceClient: Performance measurements flushed for \" + measureName, correlationId);\r\n var eventsForCorrelationId = this.eventsByCorrelationId.get(correlationId);\r\n var staticFields = this.staticFieldsByCorrelationId.get(correlationId);\r\n var counters = this.countersByCorrelationId.get(correlationId);\r\n if (eventsForCorrelationId) {\r\n this.discardCache(correlationId);\r\n /*\r\n * Manually end incomplete submeasurements to ensure there arent orphaned/never ending events.\r\n * Incomplete submeasurements are likely an instrumentation bug that should be fixed.\r\n * IE only supports Map.forEach.\r\n */\r\n var completedEvents_1 = [];\r\n eventsForCorrelationId.forEach(function (event) {\r\n if (event.name !== measureName && event.status !== PerformanceEventStatus.Completed) {\r\n _this.logger.trace(\"PerformanceClient: Incomplete submeasurement \" + event.name + \" found for \" + measureName, correlationId);\r\n var completedEvent = _this.endMeasurement(event);\r\n if (completedEvent) {\r\n completedEvents_1.push(completedEvent);\r\n }\r\n }\r\n completedEvents_1.push(event);\r\n });\r\n // Sort events by start time (earliest first)\r\n var sortedCompletedEvents = completedEvents_1.sort(function (eventA, eventB) { return eventA.startTimeMs - eventB.startTimeMs; });\r\n // Take completed top level event and add completed submeasurements durations as properties\r\n var topLevelEvents = sortedCompletedEvents.filter(function (event) { return event.name === measureName && event.status === PerformanceEventStatus.Completed; });\r\n if (topLevelEvents.length > 0) {\r\n /*\r\n * Only take the first top-level event if there are multiple events with the same correlation id.\r\n * This greatly simplifies logic for submeasurements.\r\n */\r\n if (topLevelEvents.length > 1) {\r\n this.logger.verbose(\"PerformanceClient: Multiple distinct top-level performance events found, using the first\", correlationId);\r\n }\r\n var topLevelEvent = topLevelEvents[0];\r\n this.logger.verbose(\"PerformanceClient: Measurement found for \" + measureName, correlationId);\r\n // Build event object with top level and sub measurements\r\n var eventToEmit = sortedCompletedEvents.reduce(function (previous, current) {\r\n if (current.name !== measureName) {\r\n _this.logger.trace(\"PerformanceClient: Complete submeasurement found for \" + current.name, correlationId);\r\n // TODO: Emit additional properties for each subMeasurement\r\n var subMeasurementName = current.name + \"DurationMs\";\r\n /*\r\n * Some code paths, such as resolving an authority, can occur multiple times.\r\n * Only take the first measurement, since the second could be read from the cache,\r\n * or due to the same correlation id being used for two distinct requests.\r\n */\r\n if (!previous[subMeasurementName]) {\r\n previous[subMeasurementName] = current.durationMs;\r\n }\r\n else {\r\n _this.logger.verbose(\"PerformanceClient: Submeasurement for \" + measureName + \" already exists for \" + current.name + \", ignoring\", correlationId);\r\n }\r\n }\r\n return previous;\r\n }, topLevelEvent);\r\n var finalEvent = __assign(__assign(__assign({}, eventToEmit), staticFields), counters);\r\n this.emitEvents([finalEvent], eventToEmit.correlationId);\r\n }\r\n else {\r\n this.logger.verbose(\"PerformanceClient: No completed top-level measurements found for \" + measureName, correlationId);\r\n }\r\n }\r\n else {\r\n this.logger.verbose(\"PerformanceClient: No measurements found\", correlationId);\r\n }\r\n };\r\n /**\r\n * Removes measurements for a given correlation id.\r\n *\r\n * @param {string} correlationId\r\n */\r\n PerformanceClient.prototype.discardMeasurements = function (correlationId) {\r\n this.logger.trace(\"PerformanceClient: Performance measurements discarded\", correlationId);\r\n this.eventsByCorrelationId.delete(correlationId);\r\n };\r\n /**\r\n * Removes cache for a given correlation id.\r\n *\r\n * @param {string} correlation identifier\r\n */\r\n PerformanceClient.prototype.discardCache = function (correlationId) {\r\n this.discardMeasurements(correlationId);\r\n this.logger.trace(\"PerformanceClient: Static fields discarded\", correlationId);\r\n this.staticFieldsByCorrelationId.delete(correlationId);\r\n this.logger.trace(\"PerformanceClient: Counters discarded\", correlationId);\r\n this.countersByCorrelationId.delete(correlationId);\r\n };\r\n /**\r\n * Registers a callback function to receive performance events.\r\n *\r\n * @param {PerformanceCallbackFunction} callback\r\n * @returns {string}\r\n */\r\n PerformanceClient.prototype.addPerformanceCallback = function (callback) {\r\n var callbackId = this.generateId();\r\n this.callbacks.set(callbackId, callback);\r\n this.logger.verbose(\"PerformanceClient: Performance callback registered with id: \" + callbackId);\r\n return callbackId;\r\n };\r\n /**\r\n * Removes a callback registered with addPerformanceCallback.\r\n *\r\n * @param {string} callbackId\r\n * @returns {boolean}\r\n */\r\n PerformanceClient.prototype.removePerformanceCallback = function (callbackId) {\r\n var result = this.callbacks.delete(callbackId);\r\n if (result) {\r\n this.logger.verbose(\"PerformanceClient: Performance callback \" + callbackId + \" removed.\");\r\n }\r\n else {\r\n this.logger.verbose(\"PerformanceClient: Performance callback \" + callbackId + \" not removed.\");\r\n }\r\n return result;\r\n };\r\n /**\r\n * Emits events to all registered callbacks.\r\n *\r\n * @param {PerformanceEvent[]} events\r\n * @param {?string} [correlationId]\r\n */\r\n PerformanceClient.prototype.emitEvents = function (events, correlationId) {\r\n var _this = this;\r\n this.logger.verbose(\"PerformanceClient: Emitting performance events\", correlationId);\r\n this.callbacks.forEach(function (callback, callbackId) {\r\n _this.logger.trace(\"PerformanceClient: Emitting event to callback \" + callbackId, correlationId);\r\n callback.apply(null, [events]);\r\n });\r\n };\r\n return PerformanceClient;\r\n}());\n\nexport { PerformanceClient };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\nimport { __extends } from '../../_virtual/_tslib.js';\nimport { PerformanceClient } from './PerformanceClient.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar StubPerformanceMeasurement = /** @class */ (function () {\r\n function StubPerformanceMeasurement() {\r\n }\r\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\r\n StubPerformanceMeasurement.prototype.startMeasurement = function () { };\r\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\r\n StubPerformanceMeasurement.prototype.endMeasurement = function () { };\r\n StubPerformanceMeasurement.prototype.flushMeasurement = function () {\r\n return null;\r\n };\r\n return StubPerformanceMeasurement;\r\n}());\r\nvar StubPerformanceClient = /** @class */ (function (_super) {\r\n __extends(StubPerformanceClient, _super);\r\n function StubPerformanceClient() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n StubPerformanceClient.prototype.generateId = function () {\r\n return \"callback-id\";\r\n };\r\n StubPerformanceClient.prototype.startPerformanceMeasuremeant = function () {\r\n return new StubPerformanceMeasurement();\r\n };\r\n StubPerformanceClient.prototype.startPerformanceMeasurement = function () {\r\n return new StubPerformanceMeasurement();\r\n };\r\n return StubPerformanceClient;\r\n}(PerformanceClient));\n\nexport { StubPerformanceClient, StubPerformanceMeasurement };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { AuthError } from '../error/AuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar DEFAULT_CRYPTO_IMPLEMENTATION = {\r\n createNewGuid: function () {\r\n var notImplErr = \"Crypto interface - createNewGuid() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n },\r\n base64Decode: function () {\r\n var notImplErr = \"Crypto interface - base64Decode() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n },\r\n base64Encode: function () {\r\n var notImplErr = \"Crypto interface - base64Encode() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n },\r\n generatePkceCodes: function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var notImplErr;\r\n return __generator(this, function (_a) {\r\n notImplErr = \"Crypto interface - generatePkceCodes() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n });\r\n });\r\n },\r\n getPublicKeyThumbprint: function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var notImplErr;\r\n return __generator(this, function (_a) {\r\n notImplErr = \"Crypto interface - getPublicKeyThumbprint() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n });\r\n });\r\n },\r\n removeTokenBindingKey: function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var notImplErr;\r\n return __generator(this, function (_a) {\r\n notImplErr = \"Crypto interface - removeTokenBindingKey() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n });\r\n });\r\n },\r\n clearKeystore: function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var notImplErr;\r\n return __generator(this, function (_a) {\r\n notImplErr = \"Crypto interface - clearKeystore() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n });\r\n });\r\n },\r\n signJwt: function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var notImplErr;\r\n return __generator(this, function (_a) {\r\n notImplErr = \"Crypto interface - signJwt() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n });\r\n });\r\n },\r\n hashString: function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var notImplErr;\r\n return __generator(this, function (_a) {\r\n notImplErr = \"Crypto interface - hashString() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n });\r\n });\r\n }\r\n};\n\nexport { DEFAULT_CRYPTO_IMPLEMENTATION };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\nimport { StringUtils } from '../utils/StringUtils.js';\nimport { Separators, Constants } from '../utils/Constants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Function to build a client info object from server clientInfo string\r\n * @param rawClientInfo\r\n * @param crypto\r\n */\r\nfunction buildClientInfo(rawClientInfo, crypto) {\r\n if (StringUtils.isEmpty(rawClientInfo)) {\r\n throw ClientAuthError.createClientInfoEmptyError();\r\n }\r\n try {\r\n var decodedClientInfo = crypto.base64Decode(rawClientInfo);\r\n return JSON.parse(decodedClientInfo);\r\n }\r\n catch (e) {\r\n throw ClientAuthError.createClientInfoDecodingError(e.message);\r\n }\r\n}\r\n/**\r\n * Function to build a client info object from cached homeAccountId string\r\n * @param homeAccountId\r\n */\r\nfunction buildClientInfoFromHomeAccountId(homeAccountId) {\r\n if (StringUtils.isEmpty(homeAccountId)) {\r\n throw ClientAuthError.createClientInfoDecodingError(\"Home account ID was empty.\");\r\n }\r\n var clientInfoParts = homeAccountId.split(Separators.CLIENT_INFO_SEPARATOR, 2);\r\n return {\r\n uid: clientInfoParts[0],\r\n utid: clientInfoParts.length < 2 ? Constants.EMPTY_STRING : clientInfoParts[1]\r\n };\r\n}\n\nexport { buildClientInfo, buildClientInfoFromHomeAccountId };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Authority types supported by MSAL.\r\n */\r\nvar AuthorityType;\r\n(function (AuthorityType) {\r\n AuthorityType[AuthorityType[\"Default\"] = 0] = \"Default\";\r\n AuthorityType[AuthorityType[\"Adfs\"] = 1] = \"Adfs\";\r\n AuthorityType[AuthorityType[\"Dsts\"] = 2] = \"Dsts\";\r\n})(AuthorityType || (AuthorityType = {}));\n\nexport { AuthorityType };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\nimport { Separators, CacheAccountType, CacheType, Constants } from '../../utils/Constants.js';\nimport { buildClientInfo } from '../../account/ClientInfo.js';\nimport { StringUtils } from '../../utils/StringUtils.js';\nimport { ClientAuthError } from '../../error/ClientAuthError.js';\nimport { AuthorityType } from '../../authority/AuthorityType.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Type that defines required and optional parameters for an Account field (based on universal cache schema implemented by all MSALs).\r\n *\r\n * Key : Value Schema\r\n *\r\n * Key: --\r\n *\r\n * Value Schema:\r\n * {\r\n * homeAccountId: home account identifier for the auth scheme,\r\n * environment: entity that issued the token, represented as a full host\r\n * realm: Full tenant or organizational identifier that the account belongs to\r\n * localAccountId: Original tenant-specific accountID, usually used for legacy cases\r\n * username: primary username that represents the user, usually corresponds to preferred_username in the v2 endpt\r\n * authorityType: Accounts authority type as a string\r\n * name: Full name for the account, including given name and family name,\r\n * clientInfo: Full base64 encoded client info received from ESTS\r\n * lastModificationTime: last time this entity was modified in the cache\r\n * lastModificationApp:\r\n * idTokenClaims: Object containing claims parsed from ID token\r\n * nativeAccountId: Account identifier on the native device\r\n * }\r\n */\r\nvar AccountEntity = /** @class */ (function () {\r\n function AccountEntity() {\r\n }\r\n /**\r\n * Generate Account Id key component as per the schema: -\r\n */\r\n AccountEntity.prototype.generateAccountId = function () {\r\n var accountId = [this.homeAccountId, this.environment];\r\n return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n };\r\n /**\r\n * Generate Account Cache Key as per the schema: --\r\n */\r\n AccountEntity.prototype.generateAccountKey = function () {\r\n return AccountEntity.generateAccountCacheKey({\r\n homeAccountId: this.homeAccountId,\r\n environment: this.environment,\r\n tenantId: this.realm,\r\n username: this.username,\r\n localAccountId: this.localAccountId\r\n });\r\n };\r\n /**\r\n * returns the type of the cache (in this case account)\r\n */\r\n AccountEntity.prototype.generateType = function () {\r\n switch (this.authorityType) {\r\n case CacheAccountType.ADFS_ACCOUNT_TYPE:\r\n return CacheType.ADFS;\r\n case CacheAccountType.MSAV1_ACCOUNT_TYPE:\r\n return CacheType.MSA;\r\n case CacheAccountType.MSSTS_ACCOUNT_TYPE:\r\n return CacheType.MSSTS;\r\n case CacheAccountType.GENERIC_ACCOUNT_TYPE:\r\n return CacheType.GENERIC;\r\n default: {\r\n throw ClientAuthError.createUnexpectedAccountTypeError();\r\n }\r\n }\r\n };\r\n /**\r\n * Returns the AccountInfo interface for this account.\r\n */\r\n AccountEntity.prototype.getAccountInfo = function () {\r\n return {\r\n homeAccountId: this.homeAccountId,\r\n environment: this.environment,\r\n tenantId: this.realm,\r\n username: this.username,\r\n localAccountId: this.localAccountId,\r\n name: this.name,\r\n idTokenClaims: this.idTokenClaims,\r\n nativeAccountId: this.nativeAccountId\r\n };\r\n };\r\n /**\r\n * Generates account key from interface\r\n * @param accountInterface\r\n */\r\n AccountEntity.generateAccountCacheKey = function (accountInterface) {\r\n var accountKey = [\r\n accountInterface.homeAccountId,\r\n accountInterface.environment || Constants.EMPTY_STRING,\r\n accountInterface.tenantId || Constants.EMPTY_STRING,\r\n ];\r\n return accountKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n };\r\n /**\r\n * Build Account cache from IdToken, clientInfo and authority/policy. Associated with AAD.\r\n * @param clientInfo\r\n * @param authority\r\n * @param idToken\r\n * @param policy\r\n */\r\n AccountEntity.createAccount = function (clientInfo, homeAccountId, idToken, authority, cloudGraphHostName, msGraphHost, environment, nativeAccountId) {\r\n var _a, _b, _c, _d, _e, _f;\r\n var account = new AccountEntity();\r\n account.authorityType = CacheAccountType.MSSTS_ACCOUNT_TYPE;\r\n account.clientInfo = clientInfo;\r\n account.homeAccountId = homeAccountId;\r\n account.nativeAccountId = nativeAccountId;\r\n var env = environment || (authority && authority.getPreferredCache());\r\n if (!env) {\r\n throw ClientAuthError.createInvalidCacheEnvironmentError();\r\n }\r\n account.environment = env;\r\n // non AAD scenarios can have empty realm\r\n account.realm = ((_a = idToken === null || idToken === void 0 ? void 0 : idToken.claims) === null || _a === void 0 ? void 0 : _a.tid) || Constants.EMPTY_STRING;\r\n if (idToken) {\r\n account.idTokenClaims = idToken.claims;\r\n // How do you account for MSA CID here?\r\n account.localAccountId = ((_b = idToken === null || idToken === void 0 ? void 0 : idToken.claims) === null || _b === void 0 ? void 0 : _b.oid) || ((_c = idToken === null || idToken === void 0 ? void 0 : idToken.claims) === null || _c === void 0 ? void 0 : _c.sub) || Constants.EMPTY_STRING;\r\n /*\r\n * In B2C scenarios the emails claim is used instead of preferred_username and it is an array.\r\n * In most cases it will contain a single email. This field should not be relied upon if a custom\r\n * policy is configured to return more than 1 email.\r\n */\r\n var preferredUsername = (_d = idToken === null || idToken === void 0 ? void 0 : idToken.claims) === null || _d === void 0 ? void 0 : _d.preferred_username;\r\n var email = ((_e = idToken === null || idToken === void 0 ? void 0 : idToken.claims) === null || _e === void 0 ? void 0 : _e.emails) ? idToken.claims.emails[0] : null;\r\n account.username = preferredUsername || email || Constants.EMPTY_STRING;\r\n account.name = (_f = idToken === null || idToken === void 0 ? void 0 : idToken.claims) === null || _f === void 0 ? void 0 : _f.name;\r\n }\r\n account.cloudGraphHostName = cloudGraphHostName;\r\n account.msGraphHost = msGraphHost;\r\n return account;\r\n };\r\n /**\r\n * Builds non-AAD/ADFS account.\r\n * @param authority\r\n * @param idToken\r\n */\r\n AccountEntity.createGenericAccount = function (homeAccountId, idToken, authority, cloudGraphHostName, msGraphHost, environment) {\r\n var _a, _b, _c, _d;\r\n var account = new AccountEntity();\r\n account.authorityType = (authority &&\r\n authority.authorityType === AuthorityType.Adfs) ? CacheAccountType.ADFS_ACCOUNT_TYPE : CacheAccountType.GENERIC_ACCOUNT_TYPE;\r\n account.homeAccountId = homeAccountId;\r\n // non AAD scenarios can have empty realm\r\n account.realm = Constants.EMPTY_STRING;\r\n var env = environment || authority && authority.getPreferredCache();\r\n if (!env) {\r\n throw ClientAuthError.createInvalidCacheEnvironmentError();\r\n }\r\n if (idToken) {\r\n // How do you account for MSA CID here?\r\n account.localAccountId = ((_a = idToken === null || idToken === void 0 ? void 0 : idToken.claims) === null || _a === void 0 ? void 0 : _a.oid) || ((_b = idToken === null || idToken === void 0 ? void 0 : idToken.claims) === null || _b === void 0 ? void 0 : _b.sub) || Constants.EMPTY_STRING;\r\n // upn claim for most ADFS scenarios\r\n account.username = ((_c = idToken === null || idToken === void 0 ? void 0 : idToken.claims) === null || _c === void 0 ? void 0 : _c.upn) || Constants.EMPTY_STRING;\r\n account.name = ((_d = idToken === null || idToken === void 0 ? void 0 : idToken.claims) === null || _d === void 0 ? void 0 : _d.name) || Constants.EMPTY_STRING;\r\n account.idTokenClaims = idToken === null || idToken === void 0 ? void 0 : idToken.claims;\r\n }\r\n account.environment = env;\r\n account.cloudGraphHostName = cloudGraphHostName;\r\n account.msGraphHost = msGraphHost;\r\n /*\r\n * add uniqueName to claims\r\n * account.name = idToken.claims.uniqueName;\r\n */\r\n return account;\r\n };\r\n /**\r\n * Generate HomeAccountId from server response\r\n * @param serverClientInfo\r\n * @param authType\r\n */\r\n AccountEntity.generateHomeAccountId = function (serverClientInfo, authType, logger, cryptoObj, idToken) {\r\n var _a;\r\n var accountId = ((_a = idToken === null || idToken === void 0 ? void 0 : idToken.claims) === null || _a === void 0 ? void 0 : _a.sub) ? idToken.claims.sub : Constants.EMPTY_STRING;\r\n // since ADFS does not have tid and does not set client_info\r\n if (authType === AuthorityType.Adfs || authType === AuthorityType.Dsts) {\r\n return accountId;\r\n }\r\n // for cases where there is clientInfo\r\n if (serverClientInfo) {\r\n try {\r\n var clientInfo = buildClientInfo(serverClientInfo, cryptoObj);\r\n if (!StringUtils.isEmpty(clientInfo.uid) && !StringUtils.isEmpty(clientInfo.utid)) {\r\n return \"\" + clientInfo.uid + Separators.CLIENT_INFO_SEPARATOR + clientInfo.utid;\r\n }\r\n }\r\n catch (e) { }\r\n }\r\n // default to \"sub\" claim\r\n logger.verbose(\"No client info in response\");\r\n return accountId;\r\n };\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n AccountEntity.isAccountEntity = function (entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (entity.hasOwnProperty(\"homeAccountId\") &&\r\n entity.hasOwnProperty(\"environment\") &&\r\n entity.hasOwnProperty(\"realm\") &&\r\n entity.hasOwnProperty(\"localAccountId\") &&\r\n entity.hasOwnProperty(\"username\") &&\r\n entity.hasOwnProperty(\"authorityType\"));\r\n };\r\n /**\r\n * Helper function to determine whether 2 accountInfo objects represent the same account\r\n * @param accountA\r\n * @param accountB\r\n * @param compareClaims - If set to true idTokenClaims will also be compared to determine account equality\r\n */\r\n AccountEntity.accountInfoIsEqual = function (accountA, accountB, compareClaims) {\r\n if (!accountA || !accountB) {\r\n return false;\r\n }\r\n var claimsMatch = true; // default to true so as to not fail comparison below if compareClaims: false\r\n if (compareClaims) {\r\n var accountAClaims = (accountA.idTokenClaims || {});\r\n var accountBClaims = (accountB.idTokenClaims || {});\r\n // issued at timestamp and nonce are expected to change each time a new id token is acquired\r\n claimsMatch = (accountAClaims.iat === accountBClaims.iat) &&\r\n (accountAClaims.nonce === accountBClaims.nonce);\r\n }\r\n return (accountA.homeAccountId === accountB.homeAccountId) &&\r\n (accountA.localAccountId === accountB.localAccountId) &&\r\n (accountA.username === accountB.username) &&\r\n (accountA.tenantId === accountB.tenantId) &&\r\n (accountA.environment === accountB.environment) &&\r\n (accountA.nativeAccountId === accountB.nativeAccountId) &&\r\n claimsMatch;\r\n };\r\n return AccountEntity;\r\n}());\n\nexport { AccountEntity };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\nimport { CredentialType, CacheType, Constants, Separators, AuthenticationScheme } from '../../utils/Constants.js';\nimport { ClientAuthError } from '../../error/ClientAuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Base type for credentials to be stored in the cache: eg: ACCESS_TOKEN, ID_TOKEN etc\r\n *\r\n * Key:Value Schema:\r\n *\r\n * Key: -------\r\n *\r\n * Value Schema:\r\n * {\r\n * homeAccountId: home account identifier for the auth scheme,\r\n * environment: entity that issued the token, represented as a full host\r\n * credentialType: Type of credential as a string, can be one of the following: RefreshToken, AccessToken, IdToken, Password, Cookie, Certificate, Other\r\n * clientId: client ID of the application\r\n * secret: Actual credential as a string\r\n * familyId: Family ID identifier, usually only used for refresh tokens\r\n * realm: Full tenant or organizational identifier that the account belongs to\r\n * target: Permissions that are included in the token, or for refresh tokens, the resource identifier.\r\n * tokenType: Matches the authentication scheme for which the token was issued (i.e. Bearer or pop)\r\n * requestedClaimsHash: Matches the SHA 256 hash of the claims object included in the token request\r\n * userAssertionHash: Matches the SHA 256 hash of the obo_assertion for the OBO flow\r\n * }\r\n */\r\nvar CredentialEntity = /** @class */ (function () {\r\n function CredentialEntity() {\r\n }\r\n /**\r\n * Generate Account Id key component as per the schema: -\r\n */\r\n CredentialEntity.prototype.generateAccountId = function () {\r\n return CredentialEntity.generateAccountIdForCacheKey(this.homeAccountId, this.environment);\r\n };\r\n /**\r\n * Generate Credential Id key component as per the schema: --\r\n */\r\n CredentialEntity.prototype.generateCredentialId = function () {\r\n return CredentialEntity.generateCredentialIdForCacheKey(this.credentialType, this.clientId, this.realm, this.familyId);\r\n };\r\n /**\r\n * Generate target key component as per schema: \r\n */\r\n CredentialEntity.prototype.generateTarget = function () {\r\n return CredentialEntity.generateTargetForCacheKey(this.target);\r\n };\r\n /**\r\n * generates credential key\r\n */\r\n CredentialEntity.prototype.generateCredentialKey = function () {\r\n return CredentialEntity.generateCredentialCacheKey(this.homeAccountId, this.environment, this.credentialType, this.clientId, this.realm, this.target, this.familyId, this.tokenType, this.requestedClaimsHash);\r\n };\r\n /**\r\n * returns the type of the cache (in this case credential)\r\n */\r\n CredentialEntity.prototype.generateType = function () {\r\n switch (this.credentialType) {\r\n case CredentialType.ID_TOKEN:\r\n return CacheType.ID_TOKEN;\r\n case CredentialType.ACCESS_TOKEN:\r\n case CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME:\r\n return CacheType.ACCESS_TOKEN;\r\n case CredentialType.REFRESH_TOKEN:\r\n return CacheType.REFRESH_TOKEN;\r\n default: {\r\n throw ClientAuthError.createUnexpectedCredentialTypeError();\r\n }\r\n }\r\n };\r\n /**\r\n * helper function to return `CredentialType`\r\n * @param key\r\n */\r\n CredentialEntity.getCredentialType = function (key) {\r\n var separator = Separators.CACHE_KEY_SEPARATOR;\r\n // Match host names like \"login.microsoftonline.com\", \"https://accounts.google.com:4000\", etc.\r\n var domainRe = \"(https?:\\\\/\\\\/)?([\\\\w-]+\\\\.)*([\\\\w-]{1,63})(\\\\.(\\\\w{2,63}))(\\\\:[0-9]{4,5})?\";\r\n for (var _i = 0, _a = Object.keys(CredentialType); _i < _a.length; _i++) {\r\n var credKey = _a[_i];\r\n var credVal = CredentialType[credKey].toLowerCase();\r\n // Verify credential type is preceded by a valid host name (environment)\r\n if (key.toLowerCase().search(\"\" + separator + domainRe + separator + credVal + separator) !== -1) {\r\n return CredentialType[credKey];\r\n }\r\n }\r\n return Constants.NOT_DEFINED;\r\n };\r\n /**\r\n * generates credential key\r\n * -\\-----\r\n */\r\n CredentialEntity.generateCredentialCacheKey = function (homeAccountId, environment, credentialType, clientId, realm, target, familyId, tokenType, requestedClaimsHash) {\r\n var credentialKey = [\r\n this.generateAccountIdForCacheKey(homeAccountId, environment),\r\n this.generateCredentialIdForCacheKey(credentialType, clientId, realm, familyId),\r\n this.generateTargetForCacheKey(target),\r\n this.generateClaimsHashForCacheKey(requestedClaimsHash),\r\n this.generateSchemeForCacheKey(tokenType)\r\n ];\r\n return credentialKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n };\r\n /**\r\n * generates Account Id for keys\r\n * @param homeAccountId\r\n * @param environment\r\n */\r\n CredentialEntity.generateAccountIdForCacheKey = function (homeAccountId, environment) {\r\n var accountId = [homeAccountId, environment];\r\n return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n };\r\n /**\r\n * Generates Credential Id for keys\r\n * @param credentialType\r\n * @param realm\r\n * @param clientId\r\n * @param familyId\r\n */\r\n CredentialEntity.generateCredentialIdForCacheKey = function (credentialType, clientId, realm, familyId) {\r\n var clientOrFamilyId = credentialType === CredentialType.REFRESH_TOKEN\r\n ? familyId || clientId\r\n : clientId;\r\n var credentialId = [\r\n credentialType,\r\n clientOrFamilyId,\r\n realm || Constants.EMPTY_STRING,\r\n ];\r\n return credentialId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n };\r\n /**\r\n * Generate target key component as per schema: \r\n */\r\n CredentialEntity.generateTargetForCacheKey = function (scopes) {\r\n return (scopes || Constants.EMPTY_STRING).toLowerCase();\r\n };\r\n /**\r\n * Generate requested claims key component as per schema: \r\n */\r\n CredentialEntity.generateClaimsHashForCacheKey = function (requestedClaimsHash) {\r\n return (requestedClaimsHash || Constants.EMPTY_STRING).toLowerCase();\r\n };\r\n /**\r\n * Generate scheme key componenet as per schema: \r\n */\r\n CredentialEntity.generateSchemeForCacheKey = function (tokenType) {\r\n /*\r\n * PoP Tokens and SSH certs include scheme in cache key\r\n * Cast to lowercase to handle \"bearer\" from ADFS\r\n */\r\n return (tokenType && tokenType.toLowerCase() !== AuthenticationScheme.BEARER.toLowerCase()) ? tokenType.toLowerCase() : Constants.EMPTY_STRING;\r\n };\r\n return CredentialEntity;\r\n}());\n\nexport { CredentialEntity };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\nimport { __spreadArrays } from '../_virtual/_tslib.js';\nimport { ClientConfigurationError } from '../error/ClientConfigurationError.js';\nimport { StringUtils } from '../utils/StringUtils.js';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\nimport { OIDC_SCOPES, Constants } from '../utils/Constants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * The ScopeSet class creates a set of scopes. Scopes are case-insensitive, unique values, so the Set object in JS makes\r\n * the most sense to implement for this class. All scopes are trimmed and converted to lower case strings in intersection and union functions\r\n * to ensure uniqueness of strings.\r\n */\r\nvar ScopeSet = /** @class */ (function () {\r\n function ScopeSet(inputScopes) {\r\n var _this = this;\r\n // Filter empty string and null/undefined array items\r\n var scopeArr = inputScopes ? StringUtils.trimArrayEntries(__spreadArrays(inputScopes)) : [];\r\n var filteredInput = scopeArr ? StringUtils.removeEmptyStringsFromArray(scopeArr) : [];\r\n // Validate and filter scopes (validate function throws if validation fails)\r\n this.validateInputScopes(filteredInput);\r\n this.scopes = new Set(); // Iterator in constructor not supported by IE11\r\n filteredInput.forEach(function (scope) { return _this.scopes.add(scope); });\r\n }\r\n /**\r\n * Factory method to create ScopeSet from space-delimited string\r\n * @param inputScopeString\r\n * @param appClientId\r\n * @param scopesRequired\r\n */\r\n ScopeSet.fromString = function (inputScopeString) {\r\n var scopeString = inputScopeString || Constants.EMPTY_STRING;\r\n var inputScopes = scopeString.split(\" \");\r\n return new ScopeSet(inputScopes);\r\n };\r\n /**\r\n * Used to validate the scopes input parameter requested by the developer.\r\n * @param {Array} inputScopes - Developer requested permissions. Not all scopes are guaranteed to be included in the access token returned.\r\n * @param {boolean} scopesRequired - Boolean indicating whether the scopes array is required or not\r\n */\r\n ScopeSet.prototype.validateInputScopes = function (inputScopes) {\r\n // Check if scopes are required but not given or is an empty array\r\n if (!inputScopes || inputScopes.length < 1) {\r\n throw ClientConfigurationError.createEmptyScopesArrayError();\r\n }\r\n };\r\n /**\r\n * Check if a given scope is present in this set of scopes.\r\n * @param scope\r\n */\r\n ScopeSet.prototype.containsScope = function (scope) {\r\n var lowerCaseScopes = this.printScopesLowerCase().split(\" \");\r\n var lowerCaseScopesSet = new ScopeSet(lowerCaseScopes);\r\n // compare lowercase scopes\r\n return !StringUtils.isEmpty(scope) ? lowerCaseScopesSet.scopes.has(scope.toLowerCase()) : false;\r\n };\r\n /**\r\n * Check if a set of scopes is present in this set of scopes.\r\n * @param scopeSet\r\n */\r\n ScopeSet.prototype.containsScopeSet = function (scopeSet) {\r\n var _this = this;\r\n if (!scopeSet || scopeSet.scopes.size <= 0) {\r\n return false;\r\n }\r\n return (this.scopes.size >= scopeSet.scopes.size && scopeSet.asArray().every(function (scope) { return _this.containsScope(scope); }));\r\n };\r\n /**\r\n * Check if set of scopes contains only the defaults\r\n */\r\n ScopeSet.prototype.containsOnlyOIDCScopes = function () {\r\n var _this = this;\r\n var defaultScopeCount = 0;\r\n OIDC_SCOPES.forEach(function (defaultScope) {\r\n if (_this.containsScope(defaultScope)) {\r\n defaultScopeCount += 1;\r\n }\r\n });\r\n return this.scopes.size === defaultScopeCount;\r\n };\r\n /**\r\n * Appends single scope if passed\r\n * @param newScope\r\n */\r\n ScopeSet.prototype.appendScope = function (newScope) {\r\n if (!StringUtils.isEmpty(newScope)) {\r\n this.scopes.add(newScope.trim());\r\n }\r\n };\r\n /**\r\n * Appends multiple scopes if passed\r\n * @param newScopes\r\n */\r\n ScopeSet.prototype.appendScopes = function (newScopes) {\r\n var _this = this;\r\n try {\r\n newScopes.forEach(function (newScope) { return _this.appendScope(newScope); });\r\n }\r\n catch (e) {\r\n throw ClientAuthError.createAppendScopeSetError(e);\r\n }\r\n };\r\n /**\r\n * Removes element from set of scopes.\r\n * @param scope\r\n */\r\n ScopeSet.prototype.removeScope = function (scope) {\r\n if (StringUtils.isEmpty(scope)) {\r\n throw ClientAuthError.createRemoveEmptyScopeFromSetError(scope);\r\n }\r\n this.scopes.delete(scope.trim());\r\n };\r\n /**\r\n * Removes default scopes from set of scopes\r\n * Primarily used to prevent cache misses if the default scopes are not returned from the server\r\n */\r\n ScopeSet.prototype.removeOIDCScopes = function () {\r\n var _this = this;\r\n OIDC_SCOPES.forEach(function (defaultScope) {\r\n _this.scopes.delete(defaultScope);\r\n });\r\n };\r\n /**\r\n * Combines an array of scopes with the current set of scopes.\r\n * @param otherScopes\r\n */\r\n ScopeSet.prototype.unionScopeSets = function (otherScopes) {\r\n if (!otherScopes) {\r\n throw ClientAuthError.createEmptyInputScopeSetError();\r\n }\r\n var unionScopes = new Set(); // Iterator in constructor not supported in IE11\r\n otherScopes.scopes.forEach(function (scope) { return unionScopes.add(scope.toLowerCase()); });\r\n this.scopes.forEach(function (scope) { return unionScopes.add(scope.toLowerCase()); });\r\n return unionScopes;\r\n };\r\n /**\r\n * Check if scopes intersect between this set and another.\r\n * @param otherScopes\r\n */\r\n ScopeSet.prototype.intersectingScopeSets = function (otherScopes) {\r\n if (!otherScopes) {\r\n throw ClientAuthError.createEmptyInputScopeSetError();\r\n }\r\n // Do not allow OIDC scopes to be the only intersecting scopes\r\n if (!otherScopes.containsOnlyOIDCScopes()) {\r\n otherScopes.removeOIDCScopes();\r\n }\r\n var unionScopes = this.unionScopeSets(otherScopes);\r\n var sizeOtherScopes = otherScopes.getScopeCount();\r\n var sizeThisScopes = this.getScopeCount();\r\n var sizeUnionScopes = unionScopes.size;\r\n return sizeUnionScopes < (sizeThisScopes + sizeOtherScopes);\r\n };\r\n /**\r\n * Returns size of set of scopes.\r\n */\r\n ScopeSet.prototype.getScopeCount = function () {\r\n return this.scopes.size;\r\n };\r\n /**\r\n * Returns the scopes as an array of string values\r\n */\r\n ScopeSet.prototype.asArray = function () {\r\n var array = [];\r\n this.scopes.forEach(function (val) { return array.push(val); });\r\n return array;\r\n };\r\n /**\r\n * Prints scopes into a space-delimited string\r\n */\r\n ScopeSet.prototype.printScopes = function () {\r\n if (this.scopes) {\r\n var scopeArr = this.asArray();\r\n return scopeArr.join(\" \");\r\n }\r\n return Constants.EMPTY_STRING;\r\n };\r\n /**\r\n * Prints scopes into a space-delimited lower-case string (used for caching)\r\n */\r\n ScopeSet.prototype.printScopesLowerCase = function () {\r\n return this.printScopes().toLowerCase();\r\n };\r\n return ScopeSet;\r\n}());\n\nexport { ScopeSet };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\nimport { StringUtils } from '../utils/StringUtils.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * JWT Token representation class. Parses token string and generates claims object.\r\n */\r\nvar AuthToken = /** @class */ (function () {\r\n function AuthToken(rawToken, crypto) {\r\n if (StringUtils.isEmpty(rawToken)) {\r\n throw ClientAuthError.createTokenNullOrEmptyError(rawToken);\r\n }\r\n this.rawToken = rawToken;\r\n this.claims = AuthToken.extractTokenClaims(rawToken, crypto);\r\n }\r\n /**\r\n * Extract token by decoding the rawToken\r\n *\r\n * @param encodedToken\r\n */\r\n AuthToken.extractTokenClaims = function (encodedToken, crypto) {\r\n var decodedToken = StringUtils.decodeAuthToken(encodedToken);\r\n // token will be decoded to get the username\r\n try {\r\n var base64TokenPayload = decodedToken.JWSPayload;\r\n // base64Decode() should throw an error if there is an issue\r\n var base64Decoded = crypto.base64Decode(base64TokenPayload);\r\n return JSON.parse(base64Decoded);\r\n }\r\n catch (err) {\r\n throw ClientAuthError.createTokenParsingError(err);\r\n }\r\n };\r\n /**\r\n * Determine if the token's max_age has transpired\r\n */\r\n AuthToken.checkMaxAge = function (authTime, maxAge) {\r\n /*\r\n * per https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest\r\n * To force an immediate re-authentication: If an app requires that a user re-authenticate prior to access,\r\n * provide a value of 0 for the max_age parameter and the AS will force a fresh login.\r\n */\r\n var fiveMinuteSkew = 300000; // five minutes in milliseconds\r\n if ((maxAge === 0) || ((Date.now() - fiveMinuteSkew) > (authTime + maxAge))) {\r\n throw ClientAuthError.createMaxAgeTranspiredError();\r\n }\r\n };\r\n return AuthToken;\r\n}());\n\nexport { AuthToken };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\nimport { __awaiter, __generator, __extends } from '../_virtual/_tslib.js';\nimport { Constants, CredentialType, AuthenticationScheme, CacheSchemaType, THE_FAMILY_ID, APP_METADATA, AUTHORITY_METADATA_CONSTANTS } from '../utils/Constants.js';\nimport { CredentialEntity } from './entities/CredentialEntity.js';\nimport { ScopeSet } from '../request/ScopeSet.js';\nimport { AccountEntity } from './entities/AccountEntity.js';\nimport { AuthError } from '../error/AuthError.js';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\nimport { AuthToken } from '../account/AuthToken.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Interface class which implement cache storage functions used by MSAL to perform validity checks, and store tokens.\r\n */\r\nvar CacheManager = /** @class */ (function () {\r\n function CacheManager(clientId, cryptoImpl) {\r\n this.clientId = clientId;\r\n this.cryptoImpl = cryptoImpl;\r\n }\r\n /**\r\n * Returns all accounts in cache\r\n */\r\n CacheManager.prototype.getAllAccounts = function () {\r\n var _this = this;\r\n var currentAccounts = this.getAccountsFilteredBy();\r\n var accountValues = Object.keys(currentAccounts).map(function (accountKey) { return currentAccounts[accountKey]; });\r\n var numAccounts = accountValues.length;\r\n if (numAccounts < 1) {\r\n return [];\r\n }\r\n else {\r\n var allAccounts = accountValues.map(function (value) {\r\n var accountEntity = CacheManager.toObject(new AccountEntity(), value);\r\n var accountInfo = accountEntity.getAccountInfo();\r\n var idToken = _this.readIdTokenFromCache(_this.clientId, accountInfo);\r\n if (idToken && !accountInfo.idTokenClaims) {\r\n accountInfo.idToken = idToken.secret;\r\n accountInfo.idTokenClaims = new AuthToken(idToken.secret, _this.cryptoImpl).claims;\r\n }\r\n return accountInfo;\r\n });\r\n return allAccounts;\r\n }\r\n };\r\n /**\r\n * saves a cache record\r\n * @param cacheRecord\r\n */\r\n CacheManager.prototype.saveCacheRecord = function (cacheRecord) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!cacheRecord) {\r\n throw ClientAuthError.createNullOrUndefinedCacheRecord();\r\n }\r\n if (!!cacheRecord.account) {\r\n this.setAccount(cacheRecord.account);\r\n }\r\n if (!!cacheRecord.idToken) {\r\n this.setIdTokenCredential(cacheRecord.idToken);\r\n }\r\n if (!!!cacheRecord.accessToken) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.saveAccessToken(cacheRecord.accessToken)];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n if (!!cacheRecord.refreshToken) {\r\n this.setRefreshTokenCredential(cacheRecord.refreshToken);\r\n }\r\n if (!!cacheRecord.appMetadata) {\r\n this.setAppMetadata(cacheRecord.appMetadata);\r\n }\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * saves access token credential\r\n * @param credential\r\n */\r\n CacheManager.prototype.saveAccessToken = function (credential) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var currentTokenCache, currentScopes, currentAccessTokens, removedAccessTokens_1;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n currentTokenCache = this.getCredentialsFilteredBy({\r\n clientId: credential.clientId,\r\n credentialType: credential.credentialType,\r\n environment: credential.environment,\r\n homeAccountId: credential.homeAccountId,\r\n realm: credential.realm,\r\n tokenType: credential.tokenType,\r\n requestedClaimsHash: credential.requestedClaimsHash\r\n });\r\n currentScopes = ScopeSet.fromString(credential.target);\r\n currentAccessTokens = Object.keys(currentTokenCache.accessTokens).map(function (key) { return currentTokenCache.accessTokens[key]; });\r\n if (!currentAccessTokens) return [3 /*break*/, 2];\r\n removedAccessTokens_1 = [];\r\n currentAccessTokens.forEach(function (tokenEntity) {\r\n var tokenScopeSet = ScopeSet.fromString(tokenEntity.target);\r\n if (tokenScopeSet.intersectingScopeSets(currentScopes)) {\r\n removedAccessTokens_1.push(_this.removeCredential(tokenEntity));\r\n }\r\n });\r\n return [4 /*yield*/, Promise.all(removedAccessTokens_1)];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n this.setAccessTokenCredential(credential);\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * retrieve accounts matching all provided filters; if no filter is set, get all accounts\r\n * not checking for casing as keys are all generated in lower case, remember to convert to lower case if object properties are compared\r\n * @param homeAccountId\r\n * @param environment\r\n * @param realm\r\n */\r\n CacheManager.prototype.getAccountsFilteredBy = function (accountFilter) {\r\n return this.getAccountsFilteredByInternal(accountFilter ? accountFilter.homeAccountId : Constants.EMPTY_STRING, accountFilter ? accountFilter.environment : Constants.EMPTY_STRING, accountFilter ? accountFilter.realm : Constants.EMPTY_STRING, accountFilter ? accountFilter.nativeAccountId : Constants.EMPTY_STRING);\r\n };\r\n /**\r\n * retrieve accounts matching all provided filters; if no filter is set, get all accounts\r\n * not checking for casing as keys are all generated in lower case, remember to convert to lower case if object properties are compared\r\n * @param homeAccountId\r\n * @param environment\r\n * @param realm\r\n */\r\n CacheManager.prototype.getAccountsFilteredByInternal = function (homeAccountId, environment, realm, nativeAccountId) {\r\n var _this = this;\r\n var allCacheKeys = this.getKeys();\r\n var matchingAccounts = {};\r\n allCacheKeys.forEach(function (cacheKey) {\r\n var entity = _this.getAccount(cacheKey);\r\n if (!entity) {\r\n return;\r\n }\r\n if (!!homeAccountId && !_this.matchHomeAccountId(entity, homeAccountId)) {\r\n return;\r\n }\r\n if (!!environment && !_this.matchEnvironment(entity, environment)) {\r\n return;\r\n }\r\n if (!!realm && !_this.matchRealm(entity, realm)) {\r\n return;\r\n }\r\n if (!!nativeAccountId && !_this.matchNativeAccountId(entity, nativeAccountId)) {\r\n return;\r\n }\r\n matchingAccounts[cacheKey] = entity;\r\n });\r\n return matchingAccounts;\r\n };\r\n /**\r\n * retrieve credentails matching all provided filters; if no filter is set, get all credentials\r\n * @param homeAccountId\r\n * @param environment\r\n * @param credentialType\r\n * @param clientId\r\n * @param realm\r\n * @param target\r\n */\r\n CacheManager.prototype.getCredentialsFilteredBy = function (filter) {\r\n return this.getCredentialsFilteredByInternal(filter.homeAccountId, filter.environment, filter.credentialType, filter.clientId, filter.familyId, filter.realm, filter.target, filter.userAssertionHash, filter.tokenType, filter.keyId, filter.requestedClaimsHash);\r\n };\r\n /**\r\n * Support function to help match credentials\r\n * @param homeAccountId\r\n * @param environment\r\n * @param credentialType\r\n * @param clientId\r\n * @param realm\r\n * @param target\r\n * @param userAssertionHash\r\n * @param tokenType\r\n */\r\n CacheManager.prototype.getCredentialsFilteredByInternal = function (homeAccountId, environment, credentialType, clientId, familyId, realm, target, userAssertionHash, tokenType, keyId, requestedClaimsHash) {\r\n var _this = this;\r\n var allCacheKeys = this.getKeys();\r\n var matchingCredentials = {\r\n idTokens: {},\r\n accessTokens: {},\r\n refreshTokens: {},\r\n };\r\n allCacheKeys.forEach(function (cacheKey) {\r\n // don't parse any non-credential type cache entities\r\n var credType = CredentialEntity.getCredentialType(cacheKey);\r\n if (credType === Constants.NOT_DEFINED) {\r\n return;\r\n }\r\n // Attempt retrieval\r\n var entity = _this.getSpecificCredential(cacheKey, credType);\r\n if (!entity) {\r\n return;\r\n }\r\n if (!!userAssertionHash && !_this.matchUserAssertionHash(entity, userAssertionHash)) {\r\n return;\r\n }\r\n /*\r\n * homeAccountId can undefined, and we want to filter out cached items that have a homeAccountId of \"\"\r\n * because we don't want a client_credential request to return a cached token that has a homeAccountId\r\n */\r\n if ((typeof homeAccountId === \"string\") && !_this.matchHomeAccountId(entity, homeAccountId)) {\r\n return;\r\n }\r\n if (!!environment && !_this.matchEnvironment(entity, environment)) {\r\n return;\r\n }\r\n if (!!realm && !_this.matchRealm(entity, realm)) {\r\n return;\r\n }\r\n if (!!credentialType && !_this.matchCredentialType(entity, credentialType)) {\r\n return;\r\n }\r\n if (!!clientId && !_this.matchClientId(entity, clientId)) {\r\n return;\r\n }\r\n if (!!familyId && !_this.matchFamilyId(entity, familyId)) {\r\n return;\r\n }\r\n /*\r\n * idTokens do not have \"target\", target specific refreshTokens do exist for some types of authentication\r\n * Resource specific refresh tokens case will be added when the support is deemed necessary\r\n */\r\n if (!!target && !_this.matchTarget(entity, target)) {\r\n return;\r\n }\r\n // If request OR cached entity has requested Claims Hash, check if they match\r\n if (requestedClaimsHash || entity.requestedClaimsHash) {\r\n // Don't match if either is undefined or they are different\r\n if (entity.requestedClaimsHash !== requestedClaimsHash) {\r\n return;\r\n }\r\n }\r\n // Access Token with Auth Scheme specific matching\r\n if (credentialType === CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME) {\r\n if (!!tokenType && !_this.matchTokenType(entity, tokenType)) {\r\n return;\r\n }\r\n // KeyId (sshKid) in request must match cached SSH certificate keyId because SSH cert is bound to a specific key\r\n if (tokenType === AuthenticationScheme.SSH) {\r\n if (keyId && !_this.matchKeyId(entity, keyId)) {\r\n return;\r\n }\r\n }\r\n }\r\n // At this point, the entity matches the request, update cache key if key schema has changed\r\n var updatedCacheKey = _this.updateCredentialCacheKey(cacheKey, entity);\r\n switch (credType) {\r\n case CredentialType.ID_TOKEN:\r\n matchingCredentials.idTokens[updatedCacheKey] = entity;\r\n break;\r\n case CredentialType.ACCESS_TOKEN:\r\n case CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME:\r\n matchingCredentials.accessTokens[updatedCacheKey] = entity;\r\n break;\r\n case CredentialType.REFRESH_TOKEN:\r\n matchingCredentials.refreshTokens[updatedCacheKey] = entity;\r\n break;\r\n }\r\n });\r\n return matchingCredentials;\r\n };\r\n /**\r\n * retrieve appMetadata matching all provided filters; if no filter is set, get all appMetadata\r\n * @param filter\r\n */\r\n CacheManager.prototype.getAppMetadataFilteredBy = function (filter) {\r\n return this.getAppMetadataFilteredByInternal(filter.environment, filter.clientId);\r\n };\r\n /**\r\n * Support function to help match appMetadata\r\n * @param environment\r\n * @param clientId\r\n */\r\n CacheManager.prototype.getAppMetadataFilteredByInternal = function (environment, clientId) {\r\n var _this = this;\r\n var allCacheKeys = this.getKeys();\r\n var matchingAppMetadata = {};\r\n allCacheKeys.forEach(function (cacheKey) {\r\n // don't parse any non-appMetadata type cache entities\r\n if (!_this.isAppMetadata(cacheKey)) {\r\n return;\r\n }\r\n // Attempt retrieval\r\n var entity = _this.getAppMetadata(cacheKey);\r\n if (!entity) {\r\n return;\r\n }\r\n if (!!environment && !_this.matchEnvironment(entity, environment)) {\r\n return;\r\n }\r\n if (!!clientId && !_this.matchClientId(entity, clientId)) {\r\n return;\r\n }\r\n matchingAppMetadata[cacheKey] = entity;\r\n });\r\n return matchingAppMetadata;\r\n };\r\n /**\r\n * retrieve authorityMetadata that contains a matching alias\r\n * @param filter\r\n */\r\n CacheManager.prototype.getAuthorityMetadataByAlias = function (host) {\r\n var _this = this;\r\n var allCacheKeys = this.getAuthorityMetadataKeys();\r\n var matchedEntity = null;\r\n allCacheKeys.forEach(function (cacheKey) {\r\n // don't parse any non-authorityMetadata type cache entities\r\n if (!_this.isAuthorityMetadata(cacheKey) || cacheKey.indexOf(_this.clientId) === -1) {\r\n return;\r\n }\r\n // Attempt retrieval\r\n var entity = _this.getAuthorityMetadata(cacheKey);\r\n if (!entity) {\r\n return;\r\n }\r\n if (entity.aliases.indexOf(host) === -1) {\r\n return;\r\n }\r\n matchedEntity = entity;\r\n });\r\n return matchedEntity;\r\n };\r\n /**\r\n * Removes all accounts and related tokens from cache.\r\n */\r\n CacheManager.prototype.removeAllAccounts = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var allCacheKeys, removedAccounts;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n allCacheKeys = this.getKeys();\r\n removedAccounts = [];\r\n allCacheKeys.forEach(function (cacheKey) {\r\n var entity = _this.getAccount(cacheKey);\r\n if (!entity) {\r\n return;\r\n }\r\n removedAccounts.push(_this.removeAccount(cacheKey));\r\n });\r\n return [4 /*yield*/, Promise.all(removedAccounts)];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/, true];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * returns a boolean if the given account is removed\r\n * @param account\r\n */\r\n CacheManager.prototype.removeAccount = function (accountKey) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var account;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n account = this.getAccount(accountKey);\r\n if (!account) {\r\n throw ClientAuthError.createNoAccountFoundError();\r\n }\r\n return [4 /*yield*/, this.removeAccountContext(account)];\r\n case 1: return [2 /*return*/, ((_a.sent()) && this.removeItem(accountKey, CacheSchemaType.ACCOUNT))];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Removes credentials associated with the provided account\r\n * @param account\r\n */\r\n CacheManager.prototype.removeAccountContext = function (account) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var allCacheKeys, accountId, removedCredentials;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n allCacheKeys = this.getKeys();\r\n accountId = account.generateAccountId();\r\n removedCredentials = [];\r\n allCacheKeys.forEach(function (cacheKey) {\r\n // don't parse any non-credential type cache entities\r\n var credType = CredentialEntity.getCredentialType(cacheKey);\r\n if (credType === Constants.NOT_DEFINED) {\r\n return;\r\n }\r\n var cacheEntity = _this.getSpecificCredential(cacheKey, credType);\r\n if (!!cacheEntity && accountId === cacheEntity.generateAccountId()) {\r\n removedCredentials.push(_this.removeCredential(cacheEntity));\r\n }\r\n });\r\n return [4 /*yield*/, Promise.all(removedCredentials)];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/, true];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * returns a boolean if the given credential is removed\r\n * @param credential\r\n */\r\n CacheManager.prototype.removeCredential = function (credential) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var key, accessTokenWithAuthSchemeEntity, kid;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n key = credential.generateCredentialKey();\r\n if (!(credential.credentialType.toLowerCase() === CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase())) return [3 /*break*/, 4];\r\n if (!(credential.tokenType === AuthenticationScheme.POP)) return [3 /*break*/, 4];\r\n accessTokenWithAuthSchemeEntity = credential;\r\n kid = accessTokenWithAuthSchemeEntity.keyId;\r\n if (!kid) return [3 /*break*/, 4];\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.cryptoImpl.removeTokenBindingKey(kid)];\r\n case 2:\r\n _a.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n _a.sent();\r\n throw ClientAuthError.createBindingKeyNotRemovedError();\r\n case 4: return [2 /*return*/, this.removeItem(key, CacheSchemaType.CREDENTIAL)];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Removes all app metadata objects from cache.\r\n */\r\n CacheManager.prototype.removeAppMetadata = function () {\r\n var _this = this;\r\n var allCacheKeys = this.getKeys();\r\n allCacheKeys.forEach(function (cacheKey) {\r\n if (_this.isAppMetadata(cacheKey)) {\r\n _this.removeItem(cacheKey, CacheSchemaType.APP_METADATA);\r\n }\r\n });\r\n return true;\r\n };\r\n /**\r\n * Retrieve the cached credentials into a cacherecord\r\n * @param account\r\n * @param clientId\r\n * @param scopes\r\n * @param environment\r\n * @param authScheme\r\n */\r\n CacheManager.prototype.readCacheRecord = function (account, clientId, request, environment) {\r\n var cachedAccount = this.readAccountFromCache(account);\r\n var cachedIdToken = this.readIdTokenFromCache(clientId, account);\r\n var cachedAccessToken = this.readAccessTokenFromCache(clientId, account, request);\r\n var cachedRefreshToken = this.readRefreshTokenFromCache(clientId, account, false);\r\n var cachedAppMetadata = this.readAppMetadataFromCache(environment, clientId);\r\n if (cachedAccount && cachedIdToken) {\r\n cachedAccount.idTokenClaims = new AuthToken(cachedIdToken.secret, this.cryptoImpl).claims;\r\n }\r\n return {\r\n account: cachedAccount,\r\n idToken: cachedIdToken,\r\n accessToken: cachedAccessToken,\r\n refreshToken: cachedRefreshToken,\r\n appMetadata: cachedAppMetadata,\r\n };\r\n };\r\n /**\r\n * Retrieve AccountEntity from cache\r\n * @param account\r\n */\r\n CacheManager.prototype.readAccountFromCache = function (account) {\r\n var accountKey = AccountEntity.generateAccountCacheKey(account);\r\n return this.getAccount(accountKey);\r\n };\r\n /**\r\n * Retrieve AccountEntity from cache\r\n * @param nativeAccountId\r\n * @returns AccountEntity or Null\r\n */\r\n CacheManager.prototype.readAccountFromCacheWithNativeAccountId = function (nativeAccountId) {\r\n // fetch account from memory\r\n var accountFilter = {\r\n nativeAccountId: nativeAccountId\r\n };\r\n var accountCache = this.getAccountsFilteredBy(accountFilter);\r\n var accounts = Object.keys(accountCache).map(function (key) { return accountCache[key]; });\r\n if (accounts.length < 1) {\r\n return null;\r\n }\r\n else if (accounts.length > 1) {\r\n throw ClientAuthError.createMultipleMatchingAccountsInCacheError();\r\n }\r\n return accountCache[0];\r\n };\r\n /**\r\n * Retrieve IdTokenEntity from cache\r\n * @param clientId\r\n * @param account\r\n * @param inputRealm\r\n */\r\n CacheManager.prototype.readIdTokenFromCache = function (clientId, account) {\r\n var idTokenFilter = {\r\n homeAccountId: account.homeAccountId,\r\n environment: account.environment,\r\n credentialType: CredentialType.ID_TOKEN,\r\n clientId: clientId,\r\n realm: account.tenantId,\r\n };\r\n var credentialCache = this.getCredentialsFilteredBy(idTokenFilter);\r\n var idTokens = Object.keys(credentialCache.idTokens).map(function (key) { return credentialCache.idTokens[key]; });\r\n var numIdTokens = idTokens.length;\r\n if (numIdTokens < 1) {\r\n return null;\r\n }\r\n else if (numIdTokens > 1) {\r\n throw ClientAuthError.createMultipleMatchingTokensInCacheError();\r\n }\r\n return idTokens[0];\r\n };\r\n /**\r\n * Retrieve AccessTokenEntity from cache\r\n * @param clientId\r\n * @param account\r\n * @param scopes\r\n * @param authScheme\r\n */\r\n CacheManager.prototype.readAccessTokenFromCache = function (clientId, account, request) {\r\n var scopes = new ScopeSet(request.scopes || []);\r\n var authScheme = request.authenticationScheme || AuthenticationScheme.BEARER;\r\n /*\r\n * Distinguish between Bearer and PoP/SSH token cache types\r\n * Cast to lowercase to handle \"bearer\" from ADFS\r\n */\r\n var credentialType = (authScheme && authScheme.toLowerCase() !== AuthenticationScheme.BEARER.toLowerCase()) ? CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME : CredentialType.ACCESS_TOKEN;\r\n var accessTokenFilter = {\r\n homeAccountId: account.homeAccountId,\r\n environment: account.environment,\r\n credentialType: credentialType,\r\n clientId: clientId,\r\n realm: account.tenantId,\r\n target: scopes.printScopesLowerCase(),\r\n tokenType: authScheme,\r\n keyId: request.sshKid,\r\n requestedClaimsHash: request.requestedClaimsHash,\r\n };\r\n var credentialCache = this.getCredentialsFilteredBy(accessTokenFilter);\r\n var accessTokens = Object.keys(credentialCache.accessTokens).map(function (key) { return credentialCache.accessTokens[key]; });\r\n var numAccessTokens = accessTokens.length;\r\n if (numAccessTokens < 1) {\r\n return null;\r\n }\r\n else if (numAccessTokens > 1) {\r\n throw ClientAuthError.createMultipleMatchingTokensInCacheError();\r\n }\r\n return accessTokens[0];\r\n };\r\n /**\r\n * Helper to retrieve the appropriate refresh token from cache\r\n * @param clientId\r\n * @param account\r\n * @param familyRT\r\n */\r\n CacheManager.prototype.readRefreshTokenFromCache = function (clientId, account, familyRT) {\r\n var id = familyRT ? THE_FAMILY_ID : undefined;\r\n var refreshTokenFilter = {\r\n homeAccountId: account.homeAccountId,\r\n environment: account.environment,\r\n credentialType: CredentialType.REFRESH_TOKEN,\r\n clientId: clientId,\r\n familyId: id,\r\n };\r\n var credentialCache = this.getCredentialsFilteredBy(refreshTokenFilter);\r\n var refreshTokens = Object.keys(credentialCache.refreshTokens).map(function (key) { return credentialCache.refreshTokens[key]; });\r\n var numRefreshTokens = refreshTokens.length;\r\n if (numRefreshTokens < 1) {\r\n return null;\r\n }\r\n // address the else case after remove functions address environment aliases\r\n return refreshTokens[0];\r\n };\r\n /**\r\n * Retrieve AppMetadataEntity from cache\r\n */\r\n CacheManager.prototype.readAppMetadataFromCache = function (environment, clientId) {\r\n var appMetadataFilter = {\r\n environment: environment,\r\n clientId: clientId,\r\n };\r\n var appMetadata = this.getAppMetadataFilteredBy(appMetadataFilter);\r\n var appMetadataEntries = Object.keys(appMetadata).map(function (key) { return appMetadata[key]; });\r\n var numAppMetadata = appMetadataEntries.length;\r\n if (numAppMetadata < 1) {\r\n return null;\r\n }\r\n else if (numAppMetadata > 1) {\r\n throw ClientAuthError.createMultipleMatchingAppMetadataInCacheError();\r\n }\r\n return appMetadataEntries[0];\r\n };\r\n /**\r\n * Return the family_id value associated with FOCI\r\n * @param environment\r\n * @param clientId\r\n */\r\n CacheManager.prototype.isAppMetadataFOCI = function (environment, clientId) {\r\n var appMetadata = this.readAppMetadataFromCache(environment, clientId);\r\n return !!(appMetadata && appMetadata.familyId === THE_FAMILY_ID);\r\n };\r\n /**\r\n * helper to match account ids\r\n * @param value\r\n * @param homeAccountId\r\n */\r\n CacheManager.prototype.matchHomeAccountId = function (entity, homeAccountId) {\r\n return !!((typeof entity.homeAccountId === \"string\") && (homeAccountId === entity.homeAccountId));\r\n };\r\n /**\r\n * helper to match assertion\r\n * @param value\r\n * @param oboAssertion\r\n */\r\n CacheManager.prototype.matchUserAssertionHash = function (entity, userAssertionHash) {\r\n return !!(entity.userAssertionHash && userAssertionHash === entity.userAssertionHash);\r\n };\r\n /**\r\n * helper to match environment\r\n * @param value\r\n * @param environment\r\n */\r\n CacheManager.prototype.matchEnvironment = function (entity, environment) {\r\n var cloudMetadata = this.getAuthorityMetadataByAlias(environment);\r\n if (cloudMetadata && cloudMetadata.aliases.indexOf(entity.environment) > -1) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n /**\r\n * helper to match credential type\r\n * @param entity\r\n * @param credentialType\r\n */\r\n CacheManager.prototype.matchCredentialType = function (entity, credentialType) {\r\n return (entity.credentialType && credentialType.toLowerCase() === entity.credentialType.toLowerCase());\r\n };\r\n /**\r\n * helper to match client ids\r\n * @param entity\r\n * @param clientId\r\n */\r\n CacheManager.prototype.matchClientId = function (entity, clientId) {\r\n return !!(entity.clientId && clientId === entity.clientId);\r\n };\r\n /**\r\n * helper to match family ids\r\n * @param entity\r\n * @param familyId\r\n */\r\n CacheManager.prototype.matchFamilyId = function (entity, familyId) {\r\n return !!(entity.familyId && familyId === entity.familyId);\r\n };\r\n /**\r\n * helper to match realm\r\n * @param entity\r\n * @param realm\r\n */\r\n CacheManager.prototype.matchRealm = function (entity, realm) {\r\n return !!(entity.realm && realm === entity.realm);\r\n };\r\n /**\r\n * helper to match nativeAccountId\r\n * @param entity\r\n * @param nativeAccountId\r\n * @returns boolean indicating the match result\r\n */\r\n CacheManager.prototype.matchNativeAccountId = function (entity, nativeAccountId) {\r\n return !!(entity.nativeAccountId && nativeAccountId === entity.nativeAccountId);\r\n };\r\n /**\r\n * Returns true if the target scopes are a subset of the current entity's scopes, false otherwise.\r\n * @param entity\r\n * @param target\r\n */\r\n CacheManager.prototype.matchTarget = function (entity, target) {\r\n var isNotAccessTokenCredential = (entity.credentialType !== CredentialType.ACCESS_TOKEN && entity.credentialType !== CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME);\r\n if (isNotAccessTokenCredential || !entity.target) {\r\n return false;\r\n }\r\n var entityScopeSet = ScopeSet.fromString(entity.target);\r\n var requestTargetScopeSet = ScopeSet.fromString(target);\r\n if (!requestTargetScopeSet.containsOnlyOIDCScopes()) {\r\n requestTargetScopeSet.removeOIDCScopes(); // ignore OIDC scopes\r\n }\r\n else {\r\n requestTargetScopeSet.removeScope(Constants.OFFLINE_ACCESS_SCOPE);\r\n }\r\n return entityScopeSet.containsScopeSet(requestTargetScopeSet);\r\n };\r\n /**\r\n * Returns true if the credential's tokenType or Authentication Scheme matches the one in the request, false otherwise\r\n * @param entity\r\n * @param tokenType\r\n */\r\n CacheManager.prototype.matchTokenType = function (entity, tokenType) {\r\n return !!(entity.tokenType && entity.tokenType === tokenType);\r\n };\r\n /**\r\n * Returns true if the credential's keyId matches the one in the request, false otherwise\r\n * @param entity\r\n * @param tokenType\r\n */\r\n CacheManager.prototype.matchKeyId = function (entity, keyId) {\r\n return !!(entity.keyId && entity.keyId === keyId);\r\n };\r\n /**\r\n * returns if a given cache entity is of the type appmetadata\r\n * @param key\r\n */\r\n CacheManager.prototype.isAppMetadata = function (key) {\r\n return key.indexOf(APP_METADATA) !== -1;\r\n };\r\n /**\r\n * returns if a given cache entity is of the type authoritymetadata\r\n * @param key\r\n */\r\n CacheManager.prototype.isAuthorityMetadata = function (key) {\r\n return key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) !== -1;\r\n };\r\n /**\r\n * returns cache key used for cloud instance metadata\r\n */\r\n CacheManager.prototype.generateAuthorityMetadataCacheKey = function (authority) {\r\n return AUTHORITY_METADATA_CONSTANTS.CACHE_KEY + \"-\" + this.clientId + \"-\" + authority;\r\n };\r\n /**\r\n * Returns the specific credential (IdToken/AccessToken/RefreshToken) from the cache\r\n * @param key\r\n * @param credType\r\n */\r\n CacheManager.prototype.getSpecificCredential = function (key, credType) {\r\n switch (credType) {\r\n case CredentialType.ID_TOKEN: {\r\n return this.getIdTokenCredential(key);\r\n }\r\n case CredentialType.ACCESS_TOKEN:\r\n case CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME: {\r\n return this.getAccessTokenCredential(key);\r\n }\r\n case CredentialType.REFRESH_TOKEN: {\r\n return this.getRefreshTokenCredential(key);\r\n }\r\n default:\r\n return null;\r\n }\r\n };\r\n /**\r\n * Helper to convert serialized data to object\r\n * @param obj\r\n * @param json\r\n */\r\n CacheManager.toObject = function (obj, json) {\r\n for (var propertyName in json) {\r\n obj[propertyName] = json[propertyName];\r\n }\r\n return obj;\r\n };\r\n return CacheManager;\r\n}());\r\nvar DefaultStorageClass = /** @class */ (function (_super) {\r\n __extends(DefaultStorageClass, _super);\r\n function DefaultStorageClass() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n DefaultStorageClass.prototype.setAccount = function () {\r\n var notImplErr = \"Storage interface - setAccount() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.getAccount = function () {\r\n var notImplErr = \"Storage interface - getAccount() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.setIdTokenCredential = function () {\r\n var notImplErr = \"Storage interface - setIdTokenCredential() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.getIdTokenCredential = function () {\r\n var notImplErr = \"Storage interface - getIdTokenCredential() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.setAccessTokenCredential = function () {\r\n var notImplErr = \"Storage interface - setAccessTokenCredential() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.getAccessTokenCredential = function () {\r\n var notImplErr = \"Storage interface - getAccessTokenCredential() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.setRefreshTokenCredential = function () {\r\n var notImplErr = \"Storage interface - setRefreshTokenCredential() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.getRefreshTokenCredential = function () {\r\n var notImplErr = \"Storage interface - getRefreshTokenCredential() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.setAppMetadata = function () {\r\n var notImplErr = \"Storage interface - setAppMetadata() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.getAppMetadata = function () {\r\n var notImplErr = \"Storage interface - getAppMetadata() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.setServerTelemetry = function () {\r\n var notImplErr = \"Storage interface - setServerTelemetry() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.getServerTelemetry = function () {\r\n var notImplErr = \"Storage interface - getServerTelemetry() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.setAuthorityMetadata = function () {\r\n var notImplErr = \"Storage interface - setAuthorityMetadata() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.getAuthorityMetadata = function () {\r\n var notImplErr = \"Storage interface - getAuthorityMetadata() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.getAuthorityMetadataKeys = function () {\r\n var notImplErr = \"Storage interface - getAuthorityMetadataKeys() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.setThrottlingCache = function () {\r\n var notImplErr = \"Storage interface - setThrottlingCache() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.getThrottlingCache = function () {\r\n var notImplErr = \"Storage interface - getThrottlingCache() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.removeItem = function () {\r\n var notImplErr = \"Storage interface - removeItem() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.containsKey = function () {\r\n var notImplErr = \"Storage interface - containsKey() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.getKeys = function () {\r\n var notImplErr = \"Storage interface - getKeys() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.clear = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var notImplErr;\r\n return __generator(this, function (_a) {\r\n notImplErr = \"Storage interface - clear() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n });\r\n });\r\n };\r\n DefaultStorageClass.prototype.updateCredentialCacheKey = function () {\r\n var notImplErr = \"Storage interface - updateCredentialCacheKey() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n return DefaultStorageClass;\r\n}(CacheManager));\n\nexport { CacheManager, DefaultStorageClass };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\nimport { __extends } from '../../_virtual/_tslib.js';\nimport { CredentialEntity } from './CredentialEntity.js';\nimport { CredentialType } from '../../utils/Constants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * ID_TOKEN Cache\r\n *\r\n * Key:Value Schema:\r\n *\r\n * Key Example: uid.utid-login.microsoftonline.com-idtoken-clientId-contoso.com-\r\n *\r\n * Value Schema:\r\n * {\r\n * homeAccountId: home account identifier for the auth scheme,\r\n * environment: entity that issued the token, represented as a full host\r\n * credentialType: Type of credential as a string, can be one of the following: RefreshToken, AccessToken, IdToken, Password, Cookie, Certificate, Other\r\n * clientId: client ID of the application\r\n * secret: Actual credential as a string\r\n * realm: Full tenant or organizational identifier that the account belongs to\r\n * }\r\n */\r\nvar IdTokenEntity = /** @class */ (function (_super) {\r\n __extends(IdTokenEntity, _super);\r\n function IdTokenEntity() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n /**\r\n * Create IdTokenEntity\r\n * @param homeAccountId\r\n * @param authenticationResult\r\n * @param clientId\r\n * @param authority\r\n */\r\n IdTokenEntity.createIdTokenEntity = function (homeAccountId, environment, idToken, clientId, tenantId) {\r\n var idTokenEntity = new IdTokenEntity();\r\n idTokenEntity.credentialType = CredentialType.ID_TOKEN;\r\n idTokenEntity.homeAccountId = homeAccountId;\r\n idTokenEntity.environment = environment;\r\n idTokenEntity.clientId = clientId;\r\n idTokenEntity.secret = idToken;\r\n idTokenEntity.realm = tenantId;\r\n return idTokenEntity;\r\n };\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n IdTokenEntity.isIdTokenEntity = function (entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (entity.hasOwnProperty(\"homeAccountId\") &&\r\n entity.hasOwnProperty(\"environment\") &&\r\n entity.hasOwnProperty(\"credentialType\") &&\r\n entity.hasOwnProperty(\"realm\") &&\r\n entity.hasOwnProperty(\"clientId\") &&\r\n entity.hasOwnProperty(\"secret\") &&\r\n entity[\"credentialType\"] === CredentialType.ID_TOKEN);\r\n };\r\n return IdTokenEntity;\r\n}(CredentialEntity));\n\nexport { IdTokenEntity };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Utility class which exposes functions for managing date and time operations.\r\n */\r\nvar TimeUtils = /** @class */ (function () {\r\n function TimeUtils() {\r\n }\r\n /**\r\n * return the current time in Unix time (seconds).\r\n */\r\n TimeUtils.nowSeconds = function () {\r\n // Date.getTime() returns in milliseconds.\r\n return Math.round(new Date().getTime() / 1000.0);\r\n };\r\n /**\r\n * check if a token is expired based on given UTC time in seconds.\r\n * @param expiresOn\r\n */\r\n TimeUtils.isTokenExpired = function (expiresOn, offset) {\r\n // check for access token expiry\r\n var expirationSec = Number(expiresOn) || 0;\r\n var offsetCurrentTimeSec = TimeUtils.nowSeconds() + offset;\r\n // If current time + offset is greater than token expiration time, then token is expired.\r\n return (offsetCurrentTimeSec > expirationSec);\r\n };\r\n /**\r\n * If the current time is earlier than the time that a token was cached at, we must discard the token\r\n * i.e. The system clock was turned back after acquiring the cached token\r\n * @param cachedAt\r\n * @param offset\r\n */\r\n TimeUtils.wasClockTurnedBack = function (cachedAt) {\r\n var cachedAtSec = Number(cachedAt);\r\n return cachedAtSec > TimeUtils.nowSeconds();\r\n };\r\n /**\r\n * Waits for t number of milliseconds\r\n * @param t number\r\n * @param value T\r\n */\r\n TimeUtils.delay = function (t, value) {\r\n return new Promise(function (resolve) { return setTimeout(function () { return resolve(value); }, t); });\r\n };\r\n return TimeUtils;\r\n}());\n\nexport { TimeUtils };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\nimport { __extends } from '../../_virtual/_tslib.js';\nimport { CredentialEntity } from './CredentialEntity.js';\nimport { CredentialType, AuthenticationScheme } from '../../utils/Constants.js';\nimport { TimeUtils } from '../../utils/TimeUtils.js';\nimport { StringUtils } from '../../utils/StringUtils.js';\nimport { AuthToken } from '../../account/AuthToken.js';\nimport { ClientAuthError } from '../../error/ClientAuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * ACCESS_TOKEN Credential Type\r\n *\r\n * Key:Value Schema:\r\n *\r\n * Key Example: uid.utid-login.microsoftonline.com-accesstoken-clientId-contoso.com-user.read\r\n *\r\n * Value Schema:\r\n * {\r\n * homeAccountId: home account identifier for the auth scheme,\r\n * environment: entity that issued the token, represented as a full host\r\n * credentialType: Type of credential as a string, can be one of the following: RefreshToken, AccessToken, IdToken, Password, Cookie, Certificate, Other\r\n * clientId: client ID of the application\r\n * secret: Actual credential as a string\r\n * familyId: Family ID identifier, usually only used for refresh tokens\r\n * realm: Full tenant or organizational identifier that the account belongs to\r\n * target: Permissions that are included in the token, or for refresh tokens, the resource identifier.\r\n * cachedAt: Absolute device time when entry was created in the cache.\r\n * expiresOn: Token expiry time, calculated based on current UTC time in seconds. Represented as a string.\r\n * extendedExpiresOn: Additional extended expiry time until when token is valid in case of server-side outage. Represented as string in UTC seconds.\r\n * keyId: used for POP and SSH tokenTypes\r\n * tokenType: Type of the token issued. Usually \"Bearer\"\r\n * }\r\n */\r\nvar AccessTokenEntity = /** @class */ (function (_super) {\r\n __extends(AccessTokenEntity, _super);\r\n function AccessTokenEntity() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n /**\r\n * Create AccessTokenEntity\r\n * @param homeAccountId\r\n * @param environment\r\n * @param accessToken\r\n * @param clientId\r\n * @param tenantId\r\n * @param scopes\r\n * @param expiresOn\r\n * @param extExpiresOn\r\n */\r\n AccessTokenEntity.createAccessTokenEntity = function (homeAccountId, environment, accessToken, clientId, tenantId, scopes, expiresOn, extExpiresOn, cryptoUtils, refreshOn, tokenType, userAssertionHash, keyId, requestedClaims, requestedClaimsHash) {\r\n var _a, _b;\r\n var atEntity = new AccessTokenEntity();\r\n atEntity.homeAccountId = homeAccountId;\r\n atEntity.credentialType = CredentialType.ACCESS_TOKEN;\r\n atEntity.secret = accessToken;\r\n var currentTime = TimeUtils.nowSeconds();\r\n atEntity.cachedAt = currentTime.toString();\r\n /*\r\n * Token expiry time.\r\n * This value should be  calculated based on the current UTC time measured locally and the value  expires_in Represented as a string in JSON.\r\n */\r\n atEntity.expiresOn = expiresOn.toString();\r\n atEntity.extendedExpiresOn = extExpiresOn.toString();\r\n if (refreshOn) {\r\n atEntity.refreshOn = refreshOn.toString();\r\n }\r\n atEntity.environment = environment;\r\n atEntity.clientId = clientId;\r\n atEntity.realm = tenantId;\r\n atEntity.target = scopes;\r\n atEntity.userAssertionHash = userAssertionHash;\r\n atEntity.tokenType = StringUtils.isEmpty(tokenType) ? AuthenticationScheme.BEARER : tokenType;\r\n if (requestedClaims) {\r\n atEntity.requestedClaims = requestedClaims;\r\n atEntity.requestedClaimsHash = requestedClaimsHash;\r\n }\r\n /*\r\n * Create Access Token With Auth Scheme instead of regular access token\r\n * Cast to lower to handle \"bearer\" from ADFS\r\n */\r\n if (((_a = atEntity.tokenType) === null || _a === void 0 ? void 0 : _a.toLowerCase()) !== AuthenticationScheme.BEARER.toLowerCase()) {\r\n atEntity.credentialType = CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME;\r\n switch (atEntity.tokenType) {\r\n case AuthenticationScheme.POP:\r\n // Make sure keyId is present and add it to credential\r\n var tokenClaims = AuthToken.extractTokenClaims(accessToken, cryptoUtils);\r\n if (!((_b = tokenClaims === null || tokenClaims === void 0 ? void 0 : tokenClaims.cnf) === null || _b === void 0 ? void 0 : _b.kid)) {\r\n throw ClientAuthError.createTokenClaimsRequiredError();\r\n }\r\n atEntity.keyId = tokenClaims.cnf.kid;\r\n break;\r\n case AuthenticationScheme.SSH:\r\n atEntity.keyId = keyId;\r\n }\r\n }\r\n return atEntity;\r\n };\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n AccessTokenEntity.isAccessTokenEntity = function (entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (entity.hasOwnProperty(\"homeAccountId\") &&\r\n entity.hasOwnProperty(\"environment\") &&\r\n entity.hasOwnProperty(\"credentialType\") &&\r\n entity.hasOwnProperty(\"realm\") &&\r\n entity.hasOwnProperty(\"clientId\") &&\r\n entity.hasOwnProperty(\"secret\") &&\r\n entity.hasOwnProperty(\"target\") &&\r\n (entity[\"credentialType\"] === CredentialType.ACCESS_TOKEN || entity[\"credentialType\"] === CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME));\r\n };\r\n return AccessTokenEntity;\r\n}(CredentialEntity));\n\nexport { AccessTokenEntity };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\nimport { __extends } from '../../_virtual/_tslib.js';\nimport { CredentialEntity } from './CredentialEntity.js';\nimport { CredentialType } from '../../utils/Constants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * REFRESH_TOKEN Cache\r\n *\r\n * Key:Value Schema:\r\n *\r\n * Key Example: uid.utid-login.microsoftonline.com-refreshtoken-clientId--\r\n *\r\n * Value:\r\n * {\r\n * homeAccountId: home account identifier for the auth scheme,\r\n * environment: entity that issued the token, represented as a full host\r\n * credentialType: Type of credential as a string, can be one of the following: RefreshToken, AccessToken, IdToken, Password, Cookie, Certificate, Other\r\n * clientId: client ID of the application\r\n * secret: Actual credential as a string\r\n * familyId: Family ID identifier, '1' represents Microsoft Family\r\n * realm: Full tenant or organizational identifier that the account belongs to\r\n * target: Permissions that are included in the token, or for refresh tokens, the resource identifier.\r\n * }\r\n */\r\nvar RefreshTokenEntity = /** @class */ (function (_super) {\r\n __extends(RefreshTokenEntity, _super);\r\n function RefreshTokenEntity() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n /**\r\n * Create RefreshTokenEntity\r\n * @param homeAccountId\r\n * @param authenticationResult\r\n * @param clientId\r\n * @param authority\r\n */\r\n RefreshTokenEntity.createRefreshTokenEntity = function (homeAccountId, environment, refreshToken, clientId, familyId, userAssertionHash) {\r\n var rtEntity = new RefreshTokenEntity();\r\n rtEntity.clientId = clientId;\r\n rtEntity.credentialType = CredentialType.REFRESH_TOKEN;\r\n rtEntity.environment = environment;\r\n rtEntity.homeAccountId = homeAccountId;\r\n rtEntity.secret = refreshToken;\r\n rtEntity.userAssertionHash = userAssertionHash;\r\n if (familyId)\r\n rtEntity.familyId = familyId;\r\n return rtEntity;\r\n };\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n RefreshTokenEntity.isRefreshTokenEntity = function (entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (entity.hasOwnProperty(\"homeAccountId\") &&\r\n entity.hasOwnProperty(\"environment\") &&\r\n entity.hasOwnProperty(\"credentialType\") &&\r\n entity.hasOwnProperty(\"clientId\") &&\r\n entity.hasOwnProperty(\"secret\") &&\r\n entity[\"credentialType\"] === CredentialType.REFRESH_TOKEN);\r\n };\r\n return RefreshTokenEntity;\r\n}(CredentialEntity));\n\nexport { RefreshTokenEntity };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\nimport { Separators, APP_METADATA } from '../../utils/Constants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * APP_METADATA Cache\r\n *\r\n * Key:Value Schema:\r\n *\r\n * Key: appmetadata--\r\n *\r\n * Value:\r\n * {\r\n * clientId: client ID of the application\r\n * environment: entity that issued the token, represented as a full host\r\n * familyId: Family ID identifier, '1' represents Microsoft Family\r\n * }\r\n */\r\nvar AppMetadataEntity = /** @class */ (function () {\r\n function AppMetadataEntity() {\r\n }\r\n /**\r\n * Generate AppMetadata Cache Key as per the schema: appmetadata--\r\n */\r\n AppMetadataEntity.prototype.generateAppMetadataKey = function () {\r\n return AppMetadataEntity.generateAppMetadataCacheKey(this.environment, this.clientId);\r\n };\r\n /**\r\n * Generate AppMetadata Cache Key\r\n */\r\n AppMetadataEntity.generateAppMetadataCacheKey = function (environment, clientId) {\r\n var appMetaDataKeyArray = [\r\n APP_METADATA,\r\n environment,\r\n clientId,\r\n ];\r\n return appMetaDataKeyArray.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n };\r\n /**\r\n * Creates AppMetadataEntity\r\n * @param clientId\r\n * @param environment\r\n * @param familyId\r\n */\r\n AppMetadataEntity.createAppMetadataEntity = function (clientId, environment, familyId) {\r\n var appMetadata = new AppMetadataEntity();\r\n appMetadata.clientId = clientId;\r\n appMetadata.environment = environment;\r\n if (familyId) {\r\n appMetadata.familyId = familyId;\r\n }\r\n return appMetadata;\r\n };\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n AppMetadataEntity.isAppMetadataEntity = function (key, entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (key.indexOf(APP_METADATA) === 0 &&\r\n entity.hasOwnProperty(\"clientId\") &&\r\n entity.hasOwnProperty(\"environment\"));\r\n };\r\n return AppMetadataEntity;\r\n}());\n\nexport { AppMetadataEntity };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\nimport { SERVER_TELEM_CONSTANTS } from '../../utils/Constants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar ServerTelemetryEntity = /** @class */ (function () {\r\n function ServerTelemetryEntity() {\r\n this.failedRequests = [];\r\n this.errors = [];\r\n this.cacheHits = 0;\r\n }\r\n /**\r\n * validates if a given cache entry is \"Telemetry\", parses \r\n * @param key\r\n * @param entity\r\n */\r\n ServerTelemetryEntity.isServerTelemetryEntity = function (key, entity) {\r\n var validateKey = key.indexOf(SERVER_TELEM_CONSTANTS.CACHE_KEY) === 0;\r\n var validateEntity = true;\r\n if (entity) {\r\n validateEntity =\r\n entity.hasOwnProperty(\"failedRequests\") &&\r\n entity.hasOwnProperty(\"errors\") &&\r\n entity.hasOwnProperty(\"cacheHits\");\r\n }\r\n return validateKey && validateEntity;\r\n };\r\n return ServerTelemetryEntity;\r\n}());\n\nexport { ServerTelemetryEntity };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\nimport { AUTHORITY_METADATA_CONSTANTS } from '../../utils/Constants.js';\nimport { TimeUtils } from '../../utils/TimeUtils.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar AuthorityMetadataEntity = /** @class */ (function () {\r\n function AuthorityMetadataEntity() {\r\n this.expiresAt = TimeUtils.nowSeconds() + AUTHORITY_METADATA_CONSTANTS.REFRESH_TIME_SECONDS;\r\n }\r\n /**\r\n * Update the entity with new aliases, preferred_cache and preferred_network values\r\n * @param metadata\r\n * @param fromNetwork\r\n */\r\n AuthorityMetadataEntity.prototype.updateCloudDiscoveryMetadata = function (metadata, fromNetwork) {\r\n this.aliases = metadata.aliases;\r\n this.preferred_cache = metadata.preferred_cache;\r\n this.preferred_network = metadata.preferred_network;\r\n this.aliasesFromNetwork = fromNetwork;\r\n };\r\n /**\r\n * Update the entity with new endpoints\r\n * @param metadata\r\n * @param fromNetwork\r\n */\r\n AuthorityMetadataEntity.prototype.updateEndpointMetadata = function (metadata, fromNetwork) {\r\n this.authorization_endpoint = metadata.authorization_endpoint;\r\n this.token_endpoint = metadata.token_endpoint;\r\n this.end_session_endpoint = metadata.end_session_endpoint;\r\n this.issuer = metadata.issuer;\r\n this.endpointsFromNetwork = fromNetwork;\r\n this.jwks_uri = metadata.jwks_uri;\r\n };\r\n /**\r\n * Save the authority that was used to create this cache entry\r\n * @param authority\r\n */\r\n AuthorityMetadataEntity.prototype.updateCanonicalAuthority = function (authority) {\r\n this.canonical_authority = authority;\r\n };\r\n /**\r\n * Reset the exiresAt value\r\n */\r\n AuthorityMetadataEntity.prototype.resetExpiresAt = function () {\r\n this.expiresAt = TimeUtils.nowSeconds() + AUTHORITY_METADATA_CONSTANTS.REFRESH_TIME_SECONDS;\r\n };\r\n /**\r\n * Returns whether or not the data needs to be refreshed\r\n */\r\n AuthorityMetadataEntity.prototype.isExpired = function () {\r\n return this.expiresAt <= TimeUtils.nowSeconds();\r\n };\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n AuthorityMetadataEntity.isAuthorityMetadataEntity = function (key, entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) === 0 &&\r\n entity.hasOwnProperty(\"aliases\") &&\r\n entity.hasOwnProperty(\"preferred_cache\") &&\r\n entity.hasOwnProperty(\"preferred_network\") &&\r\n entity.hasOwnProperty(\"canonical_authority\") &&\r\n entity.hasOwnProperty(\"authorization_endpoint\") &&\r\n entity.hasOwnProperty(\"token_endpoint\") &&\r\n entity.hasOwnProperty(\"issuer\") &&\r\n entity.hasOwnProperty(\"aliasesFromNetwork\") &&\r\n entity.hasOwnProperty(\"endpointsFromNetwork\") &&\r\n entity.hasOwnProperty(\"expiresAt\") &&\r\n entity.hasOwnProperty(\"jwks_uri\"));\r\n };\r\n return AuthorityMetadataEntity;\r\n}());\n\nexport { AuthorityMetadataEntity };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\nimport { ThrottlingConstants } from '../../utils/Constants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar ThrottlingEntity = /** @class */ (function () {\r\n function ThrottlingEntity() {\r\n }\r\n /**\r\n * validates if a given cache entry is \"Throttling\", parses \r\n * @param key\r\n * @param entity\r\n */\r\n ThrottlingEntity.isThrottlingEntity = function (key, entity) {\r\n var validateKey = false;\r\n if (key) {\r\n validateKey = key.indexOf(ThrottlingConstants.THROTTLING_PREFIX) === 0;\r\n }\r\n var validateEntity = true;\r\n if (entity) {\r\n validateEntity = entity.hasOwnProperty(\"throttleTime\");\r\n }\r\n return validateKey && validateEntity;\r\n };\r\n return ThrottlingEntity;\r\n}());\n\nexport { ThrottlingEntity };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\nimport { StringUtils } from './StringUtils.js';\nimport { Constants } from './Constants.js';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Class which provides helpers for OAuth 2.0 protocol specific values\r\n */\r\nvar ProtocolUtils = /** @class */ (function () {\r\n function ProtocolUtils() {\r\n }\r\n /**\r\n * Appends user state with random guid, or returns random guid.\r\n * @param userState\r\n * @param randomGuid\r\n */\r\n ProtocolUtils.setRequestState = function (cryptoObj, userState, meta) {\r\n var libraryState = ProtocolUtils.generateLibraryState(cryptoObj, meta);\r\n return !StringUtils.isEmpty(userState) ? \"\" + libraryState + Constants.RESOURCE_DELIM + userState : libraryState;\r\n };\r\n /**\r\n * Generates the state value used by the common library.\r\n * @param randomGuid\r\n * @param cryptoObj\r\n */\r\n ProtocolUtils.generateLibraryState = function (cryptoObj, meta) {\r\n if (!cryptoObj) {\r\n throw ClientAuthError.createNoCryptoObjectError(\"generateLibraryState\");\r\n }\r\n // Create a state object containing a unique id and the timestamp of the request creation\r\n var stateObj = {\r\n id: cryptoObj.createNewGuid()\r\n };\r\n if (meta) {\r\n stateObj.meta = meta;\r\n }\r\n var stateString = JSON.stringify(stateObj);\r\n return cryptoObj.base64Encode(stateString);\r\n };\r\n /**\r\n * Parses the state into the RequestStateObject, which contains the LibraryState info and the state passed by the user.\r\n * @param state\r\n * @param cryptoObj\r\n */\r\n ProtocolUtils.parseRequestState = function (cryptoObj, state) {\r\n if (!cryptoObj) {\r\n throw ClientAuthError.createNoCryptoObjectError(\"parseRequestState\");\r\n }\r\n if (StringUtils.isEmpty(state)) {\r\n throw ClientAuthError.createInvalidStateError(state, \"Null, undefined or empty state\");\r\n }\r\n try {\r\n // Split the state between library state and user passed state and decode them separately\r\n var splitState = state.split(Constants.RESOURCE_DELIM);\r\n var libraryState = splitState[0];\r\n var userState = splitState.length > 1 ? splitState.slice(1).join(Constants.RESOURCE_DELIM) : Constants.EMPTY_STRING;\r\n var libraryStateString = cryptoObj.base64Decode(libraryState);\r\n var libraryStateObj = JSON.parse(libraryStateString);\r\n return {\r\n userRequestState: !StringUtils.isEmpty(userState) ? userState : Constants.EMPTY_STRING,\r\n libraryState: libraryStateObj\r\n };\r\n }\r\n catch (e) {\r\n throw ClientAuthError.createInvalidStateError(state, e);\r\n }\r\n };\r\n return ProtocolUtils;\r\n}());\n\nexport { ProtocolUtils };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar CcsCredentialType;\r\n(function (CcsCredentialType) {\r\n CcsCredentialType[\"HOME_ACCOUNT_ID\"] = \"home_account_id\";\r\n CcsCredentialType[\"UPN\"] = \"UPN\";\r\n})(CcsCredentialType || (CcsCredentialType = {}));\n\nexport { CcsCredentialType };\n","/*! @azure/msal-browser v2.32.2 2023-01-10 */\n'use strict';\nimport { BrowserConfigurationAuthError } from '../error/BrowserConfigurationAuthError.js';\nimport { BrowserCacheLocation } from '../utils/BrowserConstants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar BrowserStorage = /** @class */ (function () {\r\n function BrowserStorage(cacheLocation) {\r\n this.validateWindowStorage(cacheLocation);\r\n this.windowStorage = window[cacheLocation];\r\n }\r\n BrowserStorage.prototype.validateWindowStorage = function (cacheLocation) {\r\n if (cacheLocation !== BrowserCacheLocation.LocalStorage && cacheLocation !== BrowserCacheLocation.SessionStorage) {\r\n throw BrowserConfigurationAuthError.createStorageNotSupportedError(cacheLocation);\r\n }\r\n var storageSupported = !!window[cacheLocation];\r\n if (!storageSupported) {\r\n throw BrowserConfigurationAuthError.createStorageNotSupportedError(cacheLocation);\r\n }\r\n };\r\n BrowserStorage.prototype.getItem = function (key) {\r\n return this.windowStorage.getItem(key);\r\n };\r\n BrowserStorage.prototype.setItem = function (key, value) {\r\n this.windowStorage.setItem(key, value);\r\n };\r\n BrowserStorage.prototype.removeItem = function (key) {\r\n this.windowStorage.removeItem(key);\r\n };\r\n BrowserStorage.prototype.getKeys = function () {\r\n return Object.keys(this.windowStorage);\r\n };\r\n BrowserStorage.prototype.containsKey = function (key) {\r\n return this.windowStorage.hasOwnProperty(key);\r\n };\r\n return BrowserStorage;\r\n}());\n\nexport { BrowserStorage };\n","/*! @azure/msal-browser v2.32.2 2023-01-10 */\n'use strict';\nimport { StringUtils, ProtocolUtils, ClientAuthError, UrlString } from '@azure/msal-common';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar BrowserProtocolUtils = /** @class */ (function () {\r\n function BrowserProtocolUtils() {\r\n }\r\n /**\r\n * Extracts the BrowserStateObject from the state string.\r\n * @param browserCrypto\r\n * @param state\r\n */\r\n BrowserProtocolUtils.extractBrowserRequestState = function (browserCrypto, state) {\r\n if (StringUtils.isEmpty(state)) {\r\n return null;\r\n }\r\n try {\r\n var requestStateObj = ProtocolUtils.parseRequestState(browserCrypto, state);\r\n return requestStateObj.libraryState.meta;\r\n }\r\n catch (e) {\r\n throw ClientAuthError.createInvalidStateError(state, e);\r\n }\r\n };\r\n /**\r\n * Parses properties of server response from url hash\r\n * @param locationHash Hash from url\r\n */\r\n BrowserProtocolUtils.parseServerResponseFromHash = function (locationHash) {\r\n if (!locationHash) {\r\n return {};\r\n }\r\n var hashUrlString = new UrlString(locationHash);\r\n return UrlString.getDeserializedHash(hashUrlString.getHash());\r\n };\r\n return BrowserProtocolUtils;\r\n}());\n\nexport { BrowserProtocolUtils };\n","/*! @azure/msal-browser v2.32.2 2023-01-10 */\n'use strict';\nimport { __extends, __spread, __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { AccountEntity, CacheManager, IdTokenEntity, AccessTokenEntity, RefreshTokenEntity, AppMetadataEntity, ServerTelemetryEntity, AuthorityMetadataEntity, Constants, PersistentCacheKeys, ClientAuthError, ThrottlingEntity, StringUtils, ProtocolUtils, CcsCredentialType, IdToken, DEFAULT_CRYPTO_IMPLEMENTATION } from '@azure/msal-common';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { BrowserCacheLocation, InMemoryCacheKeys, TemporaryCacheKeys } from '../utils/BrowserConstants.js';\nimport { BrowserStorage } from './BrowserStorage.js';\nimport { MemoryStorage } from './MemoryStorage.js';\nimport { BrowserProtocolUtils } from '../utils/BrowserProtocolUtils.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * This class implements the cache storage interface for MSAL through browser local or session storage.\r\n * Cookies are only used if storeAuthStateInCookie is true, and are only used for\r\n * parameters such as state and nonce, generally.\r\n */\r\nvar BrowserCacheManager = /** @class */ (function (_super) {\r\n __extends(BrowserCacheManager, _super);\r\n function BrowserCacheManager(clientId, cacheConfig, cryptoImpl, logger) {\r\n var _this = _super.call(this, clientId, cryptoImpl) || this;\r\n // Cookie life calculation (hours * minutes * seconds * ms)\r\n _this.COOKIE_LIFE_MULTIPLIER = 24 * 60 * 60 * 1000;\r\n _this.cacheConfig = cacheConfig;\r\n _this.logger = logger;\r\n _this.internalStorage = new MemoryStorage();\r\n _this.browserStorage = _this.setupBrowserStorage(_this.cacheConfig.cacheLocation);\r\n _this.temporaryCacheStorage = _this.setupTemporaryCacheStorage(_this.cacheConfig.cacheLocation);\r\n // Migrate any cache entries from older versions of MSAL.\r\n _this.migrateCacheEntries();\r\n return _this;\r\n }\r\n /**\r\n * Returns a window storage class implementing the IWindowStorage interface that corresponds to the configured cacheLocation.\r\n * @param cacheLocation\r\n */\r\n BrowserCacheManager.prototype.setupBrowserStorage = function (cacheLocation) {\r\n switch (cacheLocation) {\r\n case BrowserCacheLocation.LocalStorage:\r\n case BrowserCacheLocation.SessionStorage:\r\n try {\r\n // Temporary cache items will always be stored in session storage to mitigate problems caused by multiple tabs\r\n return new BrowserStorage(cacheLocation);\r\n }\r\n catch (e) {\r\n this.logger.verbose(e);\r\n break;\r\n }\r\n }\r\n this.cacheConfig.cacheLocation = BrowserCacheLocation.MemoryStorage;\r\n return new MemoryStorage();\r\n };\r\n /**\r\n *\r\n * @param cacheLocation\r\n */\r\n BrowserCacheManager.prototype.setupTemporaryCacheStorage = function (cacheLocation) {\r\n switch (cacheLocation) {\r\n case BrowserCacheLocation.LocalStorage:\r\n case BrowserCacheLocation.SessionStorage:\r\n try {\r\n // Temporary cache items will always be stored in session storage to mitigate problems caused by multiple tabs\r\n return new BrowserStorage(BrowserCacheLocation.SessionStorage);\r\n }\r\n catch (e) {\r\n this.logger.verbose(e);\r\n return this.internalStorage;\r\n }\r\n case BrowserCacheLocation.MemoryStorage:\r\n default:\r\n return this.internalStorage;\r\n }\r\n };\r\n /**\r\n * Migrate all old cache entries to new schema. No rollback supported.\r\n * @param storeAuthStateInCookie\r\n */\r\n BrowserCacheManager.prototype.migrateCacheEntries = function () {\r\n var _this = this;\r\n var idTokenKey = Constants.CACHE_PREFIX + \".\" + PersistentCacheKeys.ID_TOKEN;\r\n var clientInfoKey = Constants.CACHE_PREFIX + \".\" + PersistentCacheKeys.CLIENT_INFO;\r\n var errorKey = Constants.CACHE_PREFIX + \".\" + PersistentCacheKeys.ERROR;\r\n var errorDescKey = Constants.CACHE_PREFIX + \".\" + PersistentCacheKeys.ERROR_DESC;\r\n var idTokenValue = this.browserStorage.getItem(idTokenKey);\r\n var clientInfoValue = this.browserStorage.getItem(clientInfoKey);\r\n var errorValue = this.browserStorage.getItem(errorKey);\r\n var errorDescValue = this.browserStorage.getItem(errorDescKey);\r\n var values = [idTokenValue, clientInfoValue, errorValue, errorDescValue];\r\n var keysToMigrate = [PersistentCacheKeys.ID_TOKEN, PersistentCacheKeys.CLIENT_INFO, PersistentCacheKeys.ERROR, PersistentCacheKeys.ERROR_DESC];\r\n keysToMigrate.forEach(function (cacheKey, index) { return _this.migrateCacheEntry(cacheKey, values[index]); });\r\n };\r\n /**\r\n * Utility function to help with migration.\r\n * @param newKey\r\n * @param value\r\n * @param storeAuthStateInCookie\r\n */\r\n BrowserCacheManager.prototype.migrateCacheEntry = function (newKey, value) {\r\n if (value) {\r\n this.setTemporaryCache(newKey, value, true);\r\n }\r\n };\r\n /**\r\n * Parses passed value as JSON object, JSON.parse() will throw an error.\r\n * @param input\r\n */\r\n BrowserCacheManager.prototype.validateAndParseJson = function (jsonValue) {\r\n try {\r\n var parsedJson = JSON.parse(jsonValue);\r\n /**\r\n * There are edge cases in which JSON.parse will successfully parse a non-valid JSON object\r\n * (e.g. JSON.parse will parse an escaped string into an unescaped string), so adding a type check\r\n * of the parsed value is necessary in order to be certain that the string represents a valid JSON object.\r\n *\r\n */\r\n return (parsedJson && typeof parsedJson === \"object\") ? parsedJson : null;\r\n }\r\n catch (error) {\r\n return null;\r\n }\r\n };\r\n /**\r\n * fetches the entry from the browser storage based off the key\r\n * @param key\r\n */\r\n BrowserCacheManager.prototype.getItem = function (key) {\r\n return this.browserStorage.getItem(key);\r\n };\r\n /**\r\n * sets the entry in the browser storage\r\n * @param key\r\n * @param value\r\n */\r\n BrowserCacheManager.prototype.setItem = function (key, value) {\r\n this.browserStorage.setItem(key, value);\r\n };\r\n /**\r\n * fetch the account entity from the platform cache\r\n * @param accountKey\r\n */\r\n BrowserCacheManager.prototype.getAccount = function (accountKey) {\r\n var account = this.getItem(accountKey);\r\n if (!account) {\r\n return null;\r\n }\r\n var parsedAccount = this.validateAndParseJson(account);\r\n if (!parsedAccount || !AccountEntity.isAccountEntity(parsedAccount)) {\r\n return null;\r\n }\r\n return CacheManager.toObject(new AccountEntity(), parsedAccount);\r\n };\r\n /**\r\n * set account entity in the platform cache\r\n * @param key\r\n * @param value\r\n */\r\n BrowserCacheManager.prototype.setAccount = function (account) {\r\n this.logger.trace(\"BrowserCacheManager.setAccount called\");\r\n var key = account.generateAccountKey();\r\n this.setItem(key, JSON.stringify(account));\r\n };\r\n /**\r\n * generates idToken entity from a string\r\n * @param idTokenKey\r\n */\r\n BrowserCacheManager.prototype.getIdTokenCredential = function (idTokenKey) {\r\n var value = this.getItem(idTokenKey);\r\n if (!value) {\r\n this.logger.trace(\"BrowserCacheManager.getIdTokenCredential: called, no cache hit\");\r\n return null;\r\n }\r\n var parsedIdToken = this.validateAndParseJson(value);\r\n if (!parsedIdToken || !IdTokenEntity.isIdTokenEntity(parsedIdToken)) {\r\n this.logger.trace(\"BrowserCacheManager.getIdTokenCredential: called, no cache hit\");\r\n return null;\r\n }\r\n this.logger.trace(\"BrowserCacheManager.getIdTokenCredential: cache hit\");\r\n return CacheManager.toObject(new IdTokenEntity(), parsedIdToken);\r\n };\r\n /**\r\n * set IdToken credential to the platform cache\r\n * @param idToken\r\n */\r\n BrowserCacheManager.prototype.setIdTokenCredential = function (idToken) {\r\n this.logger.trace(\"BrowserCacheManager.setIdTokenCredential called\");\r\n var idTokenKey = idToken.generateCredentialKey();\r\n this.setItem(idTokenKey, JSON.stringify(idToken));\r\n };\r\n /**\r\n * generates accessToken entity from a string\r\n * @param key\r\n */\r\n BrowserCacheManager.prototype.getAccessTokenCredential = function (accessTokenKey) {\r\n var value = this.getItem(accessTokenKey);\r\n if (!value) {\r\n this.logger.trace(\"BrowserCacheManager.getAccessTokenCredential: called, no cache hit\");\r\n return null;\r\n }\r\n var parsedAccessToken = this.validateAndParseJson(value);\r\n if (!parsedAccessToken || !AccessTokenEntity.isAccessTokenEntity(parsedAccessToken)) {\r\n this.logger.trace(\"BrowserCacheManager.getAccessTokenCredential: called, no cache hit\");\r\n return null;\r\n }\r\n this.logger.trace(\"BrowserCacheManager.getAccessTokenCredential: cache hit\");\r\n return CacheManager.toObject(new AccessTokenEntity(), parsedAccessToken);\r\n };\r\n /**\r\n * set accessToken credential to the platform cache\r\n * @param accessToken\r\n */\r\n BrowserCacheManager.prototype.setAccessTokenCredential = function (accessToken) {\r\n this.logger.trace(\"BrowserCacheManager.setAccessTokenCredential called\");\r\n var accessTokenKey = accessToken.generateCredentialKey();\r\n this.setItem(accessTokenKey, JSON.stringify(accessToken));\r\n };\r\n /**\r\n * generates refreshToken entity from a string\r\n * @param refreshTokenKey\r\n */\r\n BrowserCacheManager.prototype.getRefreshTokenCredential = function (refreshTokenKey) {\r\n var value = this.getItem(refreshTokenKey);\r\n if (!value) {\r\n this.logger.trace(\"BrowserCacheManager.getRefreshTokenCredential: called, no cache hit\");\r\n return null;\r\n }\r\n var parsedRefreshToken = this.validateAndParseJson(value);\r\n if (!parsedRefreshToken || !RefreshTokenEntity.isRefreshTokenEntity(parsedRefreshToken)) {\r\n this.logger.trace(\"BrowserCacheManager.getRefreshTokenCredential: called, no cache hit\");\r\n return null;\r\n }\r\n this.logger.trace(\"BrowserCacheManager.getRefreshTokenCredential: cache hit\");\r\n return CacheManager.toObject(new RefreshTokenEntity(), parsedRefreshToken);\r\n };\r\n /**\r\n * set refreshToken credential to the platform cache\r\n * @param refreshToken\r\n */\r\n BrowserCacheManager.prototype.setRefreshTokenCredential = function (refreshToken) {\r\n this.logger.trace(\"BrowserCacheManager.setRefreshTokenCredential called\");\r\n var refreshTokenKey = refreshToken.generateCredentialKey();\r\n this.setItem(refreshTokenKey, JSON.stringify(refreshToken));\r\n };\r\n /**\r\n * fetch appMetadata entity from the platform cache\r\n * @param appMetadataKey\r\n */\r\n BrowserCacheManager.prototype.getAppMetadata = function (appMetadataKey) {\r\n var value = this.getItem(appMetadataKey);\r\n if (!value) {\r\n this.logger.trace(\"BrowserCacheManager.getAppMetadata: called, no cache hit\");\r\n return null;\r\n }\r\n var parsedMetadata = this.validateAndParseJson(value);\r\n if (!parsedMetadata || !AppMetadataEntity.isAppMetadataEntity(appMetadataKey, parsedMetadata)) {\r\n this.logger.trace(\"BrowserCacheManager.getAppMetadata: called, no cache hit\");\r\n return null;\r\n }\r\n this.logger.trace(\"BrowserCacheManager.getAppMetadata: cache hit\");\r\n return CacheManager.toObject(new AppMetadataEntity(), parsedMetadata);\r\n };\r\n /**\r\n * set appMetadata entity to the platform cache\r\n * @param appMetadata\r\n */\r\n BrowserCacheManager.prototype.setAppMetadata = function (appMetadata) {\r\n this.logger.trace(\"BrowserCacheManager.setAppMetadata called\");\r\n var appMetadataKey = appMetadata.generateAppMetadataKey();\r\n this.setItem(appMetadataKey, JSON.stringify(appMetadata));\r\n };\r\n /**\r\n * fetch server telemetry entity from the platform cache\r\n * @param serverTelemetryKey\r\n */\r\n BrowserCacheManager.prototype.getServerTelemetry = function (serverTelemetryKey) {\r\n var value = this.getItem(serverTelemetryKey);\r\n if (!value) {\r\n this.logger.trace(\"BrowserCacheManager.getServerTelemetry: called, no cache hit\");\r\n return null;\r\n }\r\n var parsedMetadata = this.validateAndParseJson(value);\r\n if (!parsedMetadata || !ServerTelemetryEntity.isServerTelemetryEntity(serverTelemetryKey, parsedMetadata)) {\r\n this.logger.trace(\"BrowserCacheManager.getServerTelemetry: called, no cache hit\");\r\n return null;\r\n }\r\n this.logger.trace(\"BrowserCacheManager.getServerTelemetry: cache hit\");\r\n return CacheManager.toObject(new ServerTelemetryEntity(), parsedMetadata);\r\n };\r\n /**\r\n * set server telemetry entity to the platform cache\r\n * @param serverTelemetryKey\r\n * @param serverTelemetry\r\n */\r\n BrowserCacheManager.prototype.setServerTelemetry = function (serverTelemetryKey, serverTelemetry) {\r\n this.logger.trace(\"BrowserCacheManager.setServerTelemetry called\");\r\n this.setItem(serverTelemetryKey, JSON.stringify(serverTelemetry));\r\n };\r\n /**\r\n *\r\n */\r\n BrowserCacheManager.prototype.getAuthorityMetadata = function (key) {\r\n var value = this.internalStorage.getItem(key);\r\n if (!value) {\r\n this.logger.trace(\"BrowserCacheManager.getAuthorityMetadata: called, no cache hit\");\r\n return null;\r\n }\r\n var parsedMetadata = this.validateAndParseJson(value);\r\n if (parsedMetadata && AuthorityMetadataEntity.isAuthorityMetadataEntity(key, parsedMetadata)) {\r\n this.logger.trace(\"BrowserCacheManager.getAuthorityMetadata: cache hit\");\r\n return CacheManager.toObject(new AuthorityMetadataEntity(), parsedMetadata);\r\n }\r\n return null;\r\n };\r\n /**\r\n *\r\n */\r\n BrowserCacheManager.prototype.getAuthorityMetadataKeys = function () {\r\n var _this = this;\r\n var allKeys = this.internalStorage.getKeys();\r\n return allKeys.filter(function (key) {\r\n return _this.isAuthorityMetadata(key);\r\n });\r\n };\r\n /**\r\n * Sets wrapper metadata in memory\r\n * @param wrapperSKU\r\n * @param wrapperVersion\r\n */\r\n BrowserCacheManager.prototype.setWrapperMetadata = function (wrapperSKU, wrapperVersion) {\r\n this.internalStorage.setItem(InMemoryCacheKeys.WRAPPER_SKU, wrapperSKU);\r\n this.internalStorage.setItem(InMemoryCacheKeys.WRAPPER_VER, wrapperVersion);\r\n };\r\n /**\r\n * Returns wrapper metadata from in-memory storage\r\n */\r\n BrowserCacheManager.prototype.getWrapperMetadata = function () {\r\n var sku = this.internalStorage.getItem(InMemoryCacheKeys.WRAPPER_SKU) || Constants.EMPTY_STRING;\r\n var version = this.internalStorage.getItem(InMemoryCacheKeys.WRAPPER_VER) || Constants.EMPTY_STRING;\r\n return [sku, version];\r\n };\r\n /**\r\n *\r\n * @param entity\r\n */\r\n BrowserCacheManager.prototype.setAuthorityMetadata = function (key, entity) {\r\n this.logger.trace(\"BrowserCacheManager.setAuthorityMetadata called\");\r\n this.internalStorage.setItem(key, JSON.stringify(entity));\r\n };\r\n /**\r\n * Gets the active account\r\n */\r\n BrowserCacheManager.prototype.getActiveAccount = function () {\r\n var activeAccountKeyFilters = this.generateCacheKey(PersistentCacheKeys.ACTIVE_ACCOUNT_FILTERS);\r\n var activeAccountValueFilters = this.getItem(activeAccountKeyFilters);\r\n if (!activeAccountValueFilters) {\r\n // if new active account cache type isn't found, it's an old version, so look for that instead\r\n this.logger.trace(\"BrowserCacheManager.getActiveAccount: No active account filters cache schema found, looking for legacy schema\");\r\n var activeAccountKeyLocal = this.generateCacheKey(PersistentCacheKeys.ACTIVE_ACCOUNT);\r\n var activeAccountValueLocal = this.getItem(activeAccountKeyLocal);\r\n if (!activeAccountValueLocal) {\r\n this.logger.trace(\"BrowserCacheManager.getActiveAccount: No active account found\");\r\n return null;\r\n }\r\n var activeAccount = this.getAccountInfoByFilter({ localAccountId: activeAccountValueLocal })[0] || null;\r\n if (activeAccount) {\r\n this.logger.trace(\"BrowserCacheManager.getActiveAccount: Legacy active account cache schema found\");\r\n this.logger.trace(\"BrowserCacheManager.getActiveAccount: Adding active account filters cache schema\");\r\n this.setActiveAccount(activeAccount);\r\n return activeAccount;\r\n }\r\n return null;\r\n }\r\n var activeAccountValueObj = this.validateAndParseJson(activeAccountValueFilters);\r\n if (activeAccountValueObj) {\r\n this.logger.trace(\"BrowserCacheManager.getActiveAccount: Active account filters schema found\");\r\n return this.getAccountInfoByFilter({\r\n homeAccountId: activeAccountValueObj.homeAccountId,\r\n localAccountId: activeAccountValueObj.localAccountId\r\n })[0] || null;\r\n }\r\n this.logger.trace(\"BrowserCacheManager.getActiveAccount: No active account found\");\r\n return null;\r\n };\r\n /**\r\n * Sets the active account's localAccountId in cache\r\n * @param account\r\n */\r\n BrowserCacheManager.prototype.setActiveAccount = function (account) {\r\n var activeAccountKey = this.generateCacheKey(PersistentCacheKeys.ACTIVE_ACCOUNT_FILTERS);\r\n var activeAccountKeyLocal = this.generateCacheKey(PersistentCacheKeys.ACTIVE_ACCOUNT);\r\n if (account) {\r\n this.logger.verbose(\"setActiveAccount: Active account set\");\r\n var activeAccountValue = {\r\n homeAccountId: account.homeAccountId,\r\n localAccountId: account.localAccountId\r\n };\r\n this.browserStorage.setItem(activeAccountKey, JSON.stringify(activeAccountValue));\r\n this.browserStorage.setItem(activeAccountKeyLocal, account.localAccountId);\r\n }\r\n else {\r\n this.logger.verbose(\"setActiveAccount: No account passed, active account not set\");\r\n this.browserStorage.removeItem(activeAccountKey);\r\n this.browserStorage.removeItem(activeAccountKeyLocal);\r\n }\r\n };\r\n /**\r\n * Gets a list of accounts that match all of the filters provided\r\n * @param account\r\n */\r\n BrowserCacheManager.prototype.getAccountInfoByFilter = function (accountFilter) {\r\n var allAccounts = this.getAllAccounts();\r\n this.logger.trace(\"BrowserCacheManager.getAccountInfoByFilter: total \" + allAccounts.length + \" accounts found\");\r\n return allAccounts.filter(function (accountObj) {\r\n if (accountFilter.username && accountFilter.username.toLowerCase() !== accountObj.username.toLowerCase()) {\r\n return false;\r\n }\r\n if (accountFilter.homeAccountId && accountFilter.homeAccountId !== accountObj.homeAccountId) {\r\n return false;\r\n }\r\n if (accountFilter.localAccountId && accountFilter.localAccountId !== accountObj.localAccountId) {\r\n return false;\r\n }\r\n if (accountFilter.tenantId && accountFilter.tenantId !== accountObj.tenantId) {\r\n return false;\r\n }\r\n if (accountFilter.environment && accountFilter.environment !== accountObj.environment) {\r\n return false;\r\n }\r\n return true;\r\n });\r\n };\r\n /**\r\n * Checks the cache for accounts matching loginHint or SID\r\n * @param loginHint\r\n * @param sid\r\n */\r\n BrowserCacheManager.prototype.getAccountInfoByHints = function (loginHint, sid) {\r\n var matchingAccounts = this.getAllAccounts().filter(function (accountInfo) {\r\n if (sid) {\r\n var accountSid = accountInfo.idTokenClaims && accountInfo.idTokenClaims[\"sid\"];\r\n return sid === accountSid;\r\n }\r\n if (loginHint) {\r\n return loginHint === accountInfo.username;\r\n }\r\n return false;\r\n });\r\n if (matchingAccounts.length === 1) {\r\n return matchingAccounts[0];\r\n }\r\n else if (matchingAccounts.length > 1) {\r\n throw ClientAuthError.createMultipleMatchingAccountsInCacheError();\r\n }\r\n return null;\r\n };\r\n /**\r\n * fetch throttling entity from the platform cache\r\n * @param throttlingCacheKey\r\n */\r\n BrowserCacheManager.prototype.getThrottlingCache = function (throttlingCacheKey) {\r\n var value = this.getItem(throttlingCacheKey);\r\n if (!value) {\r\n this.logger.trace(\"BrowserCacheManager.getThrottlingCache: called, no cache hit\");\r\n return null;\r\n }\r\n var parsedThrottlingCache = this.validateAndParseJson(value);\r\n if (!parsedThrottlingCache || !ThrottlingEntity.isThrottlingEntity(throttlingCacheKey, parsedThrottlingCache)) {\r\n this.logger.trace(\"BrowserCacheManager.getThrottlingCache: called, no cache hit\");\r\n return null;\r\n }\r\n this.logger.trace(\"BrowserCacheManager.getThrottlingCache: cache hit\");\r\n return CacheManager.toObject(new ThrottlingEntity(), parsedThrottlingCache);\r\n };\r\n /**\r\n * set throttling entity to the platform cache\r\n * @param throttlingCacheKey\r\n * @param throttlingCache\r\n */\r\n BrowserCacheManager.prototype.setThrottlingCache = function (throttlingCacheKey, throttlingCache) {\r\n this.logger.trace(\"BrowserCacheManager.setThrottlingCache called\");\r\n this.setItem(throttlingCacheKey, JSON.stringify(throttlingCache));\r\n };\r\n /**\r\n * Gets cache item with given key.\r\n * Will retrieve from cookies if storeAuthStateInCookie is set to true.\r\n * @param key\r\n */\r\n BrowserCacheManager.prototype.getTemporaryCache = function (cacheKey, generateKey) {\r\n var key = generateKey ? this.generateCacheKey(cacheKey) : cacheKey;\r\n if (this.cacheConfig.storeAuthStateInCookie) {\r\n var itemCookie = this.getItemCookie(key);\r\n if (itemCookie) {\r\n this.logger.trace(\"BrowserCacheManager.getTemporaryCache: storeAuthStateInCookies set to true, retrieving from cookies\");\r\n return itemCookie;\r\n }\r\n }\r\n var value = this.temporaryCacheStorage.getItem(key);\r\n if (!value) {\r\n // If temp cache item not found in session/memory, check local storage for items set by old versions\r\n if (this.cacheConfig.cacheLocation === BrowserCacheLocation.LocalStorage) {\r\n var item = this.browserStorage.getItem(key);\r\n if (item) {\r\n this.logger.trace(\"BrowserCacheManager.getTemporaryCache: Temporary cache item found in local storage\");\r\n return item;\r\n }\r\n }\r\n this.logger.trace(\"BrowserCacheManager.getTemporaryCache: No cache item found in local storage\");\r\n return null;\r\n }\r\n this.logger.trace(\"BrowserCacheManager.getTemporaryCache: Temporary cache item returned\");\r\n return value;\r\n };\r\n /**\r\n * Sets the cache item with the key and value given.\r\n * Stores in cookie if storeAuthStateInCookie is set to true.\r\n * This can cause cookie overflow if used incorrectly.\r\n * @param key\r\n * @param value\r\n */\r\n BrowserCacheManager.prototype.setTemporaryCache = function (cacheKey, value, generateKey) {\r\n var key = generateKey ? this.generateCacheKey(cacheKey) : cacheKey;\r\n this.temporaryCacheStorage.setItem(key, value);\r\n if (this.cacheConfig.storeAuthStateInCookie) {\r\n this.logger.trace(\"BrowserCacheManager.setTemporaryCache: storeAuthStateInCookie set to true, setting item cookie\");\r\n this.setItemCookie(key, value);\r\n }\r\n };\r\n /**\r\n * Removes the cache item with the given key.\r\n * Will also clear the cookie item if storeAuthStateInCookie is set to true.\r\n * @param key\r\n */\r\n BrowserCacheManager.prototype.removeItem = function (key) {\r\n this.browserStorage.removeItem(key);\r\n this.temporaryCacheStorage.removeItem(key);\r\n if (this.cacheConfig.storeAuthStateInCookie) {\r\n this.logger.trace(\"BrowserCacheManager.removeItem: storeAuthStateInCookie is true, clearing item cookie\");\r\n this.clearItemCookie(key);\r\n }\r\n return true;\r\n };\r\n /**\r\n * Checks whether key is in cache.\r\n * @param key\r\n */\r\n BrowserCacheManager.prototype.containsKey = function (key) {\r\n return this.browserStorage.containsKey(key) || this.temporaryCacheStorage.containsKey(key);\r\n };\r\n /**\r\n * Gets all keys in window.\r\n */\r\n BrowserCacheManager.prototype.getKeys = function () {\r\n return __spread(this.browserStorage.getKeys(), this.temporaryCacheStorage.getKeys());\r\n };\r\n /**\r\n * Clears all cache entries created by MSAL.\r\n */\r\n BrowserCacheManager.prototype.clear = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: \r\n // Removes all accounts and their credentials\r\n return [4 /*yield*/, this.removeAllAccounts()];\r\n case 1:\r\n // Removes all accounts and their credentials\r\n _a.sent();\r\n this.removeAppMetadata();\r\n // Removes all remaining MSAL cache items\r\n this.getKeys().forEach(function (cacheKey) {\r\n // Check if key contains msal prefix; For now, we are clearing all the cache items created by MSAL.js\r\n if ((_this.browserStorage.containsKey(cacheKey) || _this.temporaryCacheStorage.containsKey(cacheKey)) && ((cacheKey.indexOf(Constants.CACHE_PREFIX) !== -1) || (cacheKey.indexOf(_this.clientId) !== -1))) {\r\n _this.removeItem(cacheKey);\r\n }\r\n });\r\n this.internalStorage.clear();\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Add value to cookies\r\n * @param cookieName\r\n * @param cookieValue\r\n * @param expires\r\n */\r\n BrowserCacheManager.prototype.setItemCookie = function (cookieName, cookieValue, expires) {\r\n var cookieStr = encodeURIComponent(cookieName) + \"=\" + encodeURIComponent(cookieValue) + \";path=/;SameSite=Lax;\";\r\n if (expires) {\r\n var expireTime = this.getCookieExpirationTime(expires);\r\n cookieStr += \"expires=\" + expireTime + \";\";\r\n }\r\n if (this.cacheConfig.secureCookies) {\r\n cookieStr += \"Secure;\";\r\n }\r\n document.cookie = cookieStr;\r\n };\r\n /**\r\n * Get one item by key from cookies\r\n * @param cookieName\r\n */\r\n BrowserCacheManager.prototype.getItemCookie = function (cookieName) {\r\n var name = encodeURIComponent(cookieName) + \"=\";\r\n var cookieList = document.cookie.split(\";\");\r\n for (var i = 0; i < cookieList.length; i++) {\r\n var cookie = cookieList[i];\r\n while (cookie.charAt(0) === \" \") {\r\n cookie = cookie.substring(1);\r\n }\r\n if (cookie.indexOf(name) === 0) {\r\n return decodeURIComponent(cookie.substring(name.length, cookie.length));\r\n }\r\n }\r\n return Constants.EMPTY_STRING;\r\n };\r\n /**\r\n * Clear all msal-related cookies currently set in the browser. Should only be used to clear temporary cache items.\r\n */\r\n BrowserCacheManager.prototype.clearMsalCookies = function () {\r\n var _this = this;\r\n var cookiePrefix = Constants.CACHE_PREFIX + \".\" + this.clientId;\r\n var cookieList = document.cookie.split(\";\");\r\n cookieList.forEach(function (cookie) {\r\n while (cookie.charAt(0) === \" \") {\r\n // eslint-disable-next-line no-param-reassign\r\n cookie = cookie.substring(1);\r\n }\r\n if (cookie.indexOf(cookiePrefix) === 0) {\r\n var cookieKey = cookie.split(\"=\")[0];\r\n _this.clearItemCookie(cookieKey);\r\n }\r\n });\r\n };\r\n /**\r\n * Clear an item in the cookies by key\r\n * @param cookieName\r\n */\r\n BrowserCacheManager.prototype.clearItemCookie = function (cookieName) {\r\n this.setItemCookie(cookieName, Constants.EMPTY_STRING, -1);\r\n };\r\n /**\r\n * Get cookie expiration time\r\n * @param cookieLifeDays\r\n */\r\n BrowserCacheManager.prototype.getCookieExpirationTime = function (cookieLifeDays) {\r\n var today = new Date();\r\n var expr = new Date(today.getTime() + cookieLifeDays * this.COOKIE_LIFE_MULTIPLIER);\r\n return expr.toUTCString();\r\n };\r\n /**\r\n * Gets the cache object referenced by the browser\r\n */\r\n BrowserCacheManager.prototype.getCache = function () {\r\n return this.browserStorage;\r\n };\r\n /**\r\n * interface compat, we cannot overwrite browser cache; Functionality is supported by individual entities in browser\r\n */\r\n BrowserCacheManager.prototype.setCache = function () {\r\n // sets nothing\r\n };\r\n /**\r\n * Prepend msal. to each key; Skip for any JSON object as Key (defined schemas do not need the key appended: AccessToken Keys or the upcoming schema)\r\n * @param key\r\n * @param addInstanceId\r\n */\r\n BrowserCacheManager.prototype.generateCacheKey = function (key) {\r\n var generatedKey = this.validateAndParseJson(key);\r\n if (!generatedKey) {\r\n if (StringUtils.startsWith(key, Constants.CACHE_PREFIX) || StringUtils.startsWith(key, PersistentCacheKeys.ADAL_ID_TOKEN)) {\r\n return key;\r\n }\r\n return Constants.CACHE_PREFIX + \".\" + this.clientId + \".\" + key;\r\n }\r\n return JSON.stringify(key);\r\n };\r\n /**\r\n * Create authorityKey to cache authority\r\n * @param state\r\n */\r\n BrowserCacheManager.prototype.generateAuthorityKey = function (stateString) {\r\n var stateId = ProtocolUtils.parseRequestState(this.cryptoImpl, stateString).libraryState.id;\r\n return this.generateCacheKey(TemporaryCacheKeys.AUTHORITY + \".\" + stateId);\r\n };\r\n /**\r\n * Create Nonce key to cache nonce\r\n * @param state\r\n */\r\n BrowserCacheManager.prototype.generateNonceKey = function (stateString) {\r\n var stateId = ProtocolUtils.parseRequestState(this.cryptoImpl, stateString).libraryState.id;\r\n return this.generateCacheKey(TemporaryCacheKeys.NONCE_IDTOKEN + \".\" + stateId);\r\n };\r\n /**\r\n * Creates full cache key for the request state\r\n * @param stateString State string for the request\r\n */\r\n BrowserCacheManager.prototype.generateStateKey = function (stateString) {\r\n // Use the library state id to key temp storage for uniqueness for multiple concurrent requests\r\n var stateId = ProtocolUtils.parseRequestState(this.cryptoImpl, stateString).libraryState.id;\r\n return this.generateCacheKey(TemporaryCacheKeys.REQUEST_STATE + \".\" + stateId);\r\n };\r\n /**\r\n * Gets the cached authority based on the cached state. Returns empty if no cached state found.\r\n */\r\n BrowserCacheManager.prototype.getCachedAuthority = function (cachedState) {\r\n var stateCacheKey = this.generateStateKey(cachedState);\r\n var state = this.getTemporaryCache(stateCacheKey);\r\n if (!state) {\r\n return null;\r\n }\r\n var authorityCacheKey = this.generateAuthorityKey(state);\r\n return this.getTemporaryCache(authorityCacheKey);\r\n };\r\n /**\r\n * Updates account, authority, and state in cache\r\n * @param serverAuthenticationRequest\r\n * @param account\r\n */\r\n BrowserCacheManager.prototype.updateCacheEntries = function (state, nonce, authorityInstance, loginHint, account) {\r\n this.logger.trace(\"BrowserCacheManager.updateCacheEntries called\");\r\n // Cache the request state\r\n var stateCacheKey = this.generateStateKey(state);\r\n this.setTemporaryCache(stateCacheKey, state, false);\r\n // Cache the nonce\r\n var nonceCacheKey = this.generateNonceKey(state);\r\n this.setTemporaryCache(nonceCacheKey, nonce, false);\r\n // Cache authorityKey\r\n var authorityCacheKey = this.generateAuthorityKey(state);\r\n this.setTemporaryCache(authorityCacheKey, authorityInstance, false);\r\n if (account) {\r\n var ccsCredential = {\r\n credential: account.homeAccountId,\r\n type: CcsCredentialType.HOME_ACCOUNT_ID\r\n };\r\n this.setTemporaryCache(TemporaryCacheKeys.CCS_CREDENTIAL, JSON.stringify(ccsCredential), true);\r\n }\r\n else if (!StringUtils.isEmpty(loginHint)) {\r\n var ccsCredential = {\r\n credential: loginHint,\r\n type: CcsCredentialType.UPN\r\n };\r\n this.setTemporaryCache(TemporaryCacheKeys.CCS_CREDENTIAL, JSON.stringify(ccsCredential), true);\r\n }\r\n };\r\n /**\r\n * Reset all temporary cache items\r\n * @param state\r\n */\r\n BrowserCacheManager.prototype.resetRequestCache = function (state) {\r\n var _this = this;\r\n this.logger.trace(\"BrowserCacheManager.resetRequestCache called\");\r\n // check state and remove associated cache items\r\n if (!StringUtils.isEmpty(state)) {\r\n this.getKeys().forEach(function (key) {\r\n if (key.indexOf(state) !== -1) {\r\n _this.removeItem(key);\r\n }\r\n });\r\n }\r\n // delete generic interactive request parameters\r\n if (state) {\r\n this.removeItem(this.generateStateKey(state));\r\n this.removeItem(this.generateNonceKey(state));\r\n this.removeItem(this.generateAuthorityKey(state));\r\n }\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.REQUEST_PARAMS));\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.ORIGIN_URI));\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.URL_HASH));\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.CORRELATION_ID));\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.CCS_CREDENTIAL));\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.NATIVE_REQUEST));\r\n this.setInteractionInProgress(false);\r\n };\r\n /**\r\n * Removes temporary cache for the provided state\r\n * @param stateString\r\n */\r\n BrowserCacheManager.prototype.cleanRequestByState = function (stateString) {\r\n this.logger.trace(\"BrowserCacheManager.cleanRequestByState called\");\r\n // Interaction is completed - remove interaction status.\r\n if (stateString) {\r\n var stateKey = this.generateStateKey(stateString);\r\n var cachedState = this.temporaryCacheStorage.getItem(stateKey);\r\n this.logger.infoPii(\"BrowserCacheManager.cleanRequestByState: Removing temporary cache items for state: \" + cachedState);\r\n this.resetRequestCache(cachedState || Constants.EMPTY_STRING);\r\n }\r\n this.clearMsalCookies();\r\n };\r\n /**\r\n * Looks in temporary cache for any state values with the provided interactionType and removes all temporary cache items for that state\r\n * Used in scenarios where temp cache needs to be cleaned but state is not known, such as clicking browser back button.\r\n * @param interactionType\r\n */\r\n BrowserCacheManager.prototype.cleanRequestByInteractionType = function (interactionType) {\r\n var _this = this;\r\n this.logger.trace(\"BrowserCacheManager.cleanRequestByInteractionType called\");\r\n // Loop through all keys to find state key\r\n this.getKeys().forEach(function (key) {\r\n // If this key is not the state key, move on\r\n if (key.indexOf(TemporaryCacheKeys.REQUEST_STATE) === -1) {\r\n return;\r\n }\r\n // Retrieve state value, return if not a valid value\r\n var stateValue = _this.temporaryCacheStorage.getItem(key);\r\n if (!stateValue) {\r\n return;\r\n }\r\n // Extract state and ensure it matches given InteractionType, then clean request cache\r\n var parsedState = BrowserProtocolUtils.extractBrowserRequestState(_this.cryptoImpl, stateValue);\r\n if (parsedState && parsedState.interactionType === interactionType) {\r\n _this.logger.infoPii(\"BrowserCacheManager.cleanRequestByInteractionType: Removing temporary cache items for state: \" + stateValue);\r\n _this.resetRequestCache(stateValue);\r\n }\r\n });\r\n this.clearMsalCookies();\r\n this.setInteractionInProgress(false);\r\n };\r\n BrowserCacheManager.prototype.cacheCodeRequest = function (authCodeRequest, browserCrypto) {\r\n this.logger.trace(\"BrowserCacheManager.cacheCodeRequest called\");\r\n var encodedValue = browserCrypto.base64Encode(JSON.stringify(authCodeRequest));\r\n this.setTemporaryCache(TemporaryCacheKeys.REQUEST_PARAMS, encodedValue, true);\r\n };\r\n /**\r\n * Gets the token exchange parameters from the cache. Throws an error if nothing is found.\r\n */\r\n BrowserCacheManager.prototype.getCachedRequest = function (state, browserCrypto) {\r\n this.logger.trace(\"BrowserCacheManager.getCachedRequest called\");\r\n // Get token request from cache and parse as TokenExchangeParameters.\r\n var encodedTokenRequest = this.getTemporaryCache(TemporaryCacheKeys.REQUEST_PARAMS, true);\r\n if (!encodedTokenRequest) {\r\n throw BrowserAuthError.createNoTokenRequestCacheError();\r\n }\r\n var parsedRequest = this.validateAndParseJson(browserCrypto.base64Decode(encodedTokenRequest));\r\n if (!parsedRequest) {\r\n throw BrowserAuthError.createUnableToParseTokenRequestCacheError();\r\n }\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.REQUEST_PARAMS));\r\n // Get cached authority and use if no authority is cached with request.\r\n if (StringUtils.isEmpty(parsedRequest.authority)) {\r\n var authorityCacheKey = this.generateAuthorityKey(state);\r\n var cachedAuthority = this.getTemporaryCache(authorityCacheKey);\r\n if (!cachedAuthority) {\r\n throw BrowserAuthError.createNoCachedAuthorityError();\r\n }\r\n parsedRequest.authority = cachedAuthority;\r\n }\r\n return parsedRequest;\r\n };\r\n /**\r\n * Gets cached native request for redirect flows\r\n */\r\n BrowserCacheManager.prototype.getCachedNativeRequest = function () {\r\n this.logger.trace(\"BrowserCacheManager.getCachedNativeRequest called\");\r\n var cachedRequest = this.getTemporaryCache(TemporaryCacheKeys.NATIVE_REQUEST, true);\r\n if (!cachedRequest) {\r\n this.logger.trace(\"BrowserCacheManager.getCachedNativeRequest: No cached native request found\");\r\n return null;\r\n }\r\n var parsedRequest = this.validateAndParseJson(cachedRequest);\r\n if (!parsedRequest) {\r\n this.logger.error(\"BrowserCacheManager.getCachedNativeRequest: Unable to parse native request\");\r\n return null;\r\n }\r\n return parsedRequest;\r\n };\r\n BrowserCacheManager.prototype.isInteractionInProgress = function (matchClientId) {\r\n var clientId = this.getInteractionInProgress();\r\n if (matchClientId) {\r\n return clientId === this.clientId;\r\n }\r\n else {\r\n return !!clientId;\r\n }\r\n };\r\n BrowserCacheManager.prototype.getInteractionInProgress = function () {\r\n var key = Constants.CACHE_PREFIX + \".\" + TemporaryCacheKeys.INTERACTION_STATUS_KEY;\r\n return this.getTemporaryCache(key, false);\r\n };\r\n BrowserCacheManager.prototype.setInteractionInProgress = function (inProgress) {\r\n // Ensure we don't overwrite interaction in progress for a different clientId\r\n var key = Constants.CACHE_PREFIX + \".\" + TemporaryCacheKeys.INTERACTION_STATUS_KEY;\r\n if (inProgress) {\r\n if (this.getInteractionInProgress()) {\r\n throw BrowserAuthError.createInteractionInProgressError();\r\n }\r\n else {\r\n // No interaction is in progress\r\n this.setTemporaryCache(key, this.clientId, false);\r\n }\r\n }\r\n else if (!inProgress && this.getInteractionInProgress() === this.clientId) {\r\n this.removeItem(key);\r\n }\r\n };\r\n /**\r\n * Returns username retrieved from ADAL or MSAL v1 idToken\r\n */\r\n BrowserCacheManager.prototype.getLegacyLoginHint = function () {\r\n // Only check for adal/msal token if no SSO params are being used\r\n var adalIdTokenString = this.getTemporaryCache(PersistentCacheKeys.ADAL_ID_TOKEN);\r\n if (adalIdTokenString) {\r\n this.browserStorage.removeItem(PersistentCacheKeys.ADAL_ID_TOKEN);\r\n this.logger.verbose(\"Cached ADAL id token retrieved.\");\r\n }\r\n // Check for cached MSAL v1 id token\r\n var msalIdTokenString = this.getTemporaryCache(PersistentCacheKeys.ID_TOKEN, true);\r\n if (msalIdTokenString) {\r\n this.removeItem(this.generateCacheKey(PersistentCacheKeys.ID_TOKEN));\r\n this.logger.verbose(\"Cached MSAL.js v1 id token retrieved\");\r\n }\r\n var cachedIdTokenString = msalIdTokenString || adalIdTokenString;\r\n if (cachedIdTokenString) {\r\n var cachedIdToken = new IdToken(cachedIdTokenString, this.cryptoImpl);\r\n if (cachedIdToken.claims && cachedIdToken.claims.preferred_username) {\r\n this.logger.verbose(\"No SSO params used and ADAL/MSAL v1 token retrieved, setting ADAL/MSAL v1 preferred_username as loginHint\");\r\n return cachedIdToken.claims.preferred_username;\r\n }\r\n else if (cachedIdToken.claims && cachedIdToken.claims.upn) {\r\n this.logger.verbose(\"No SSO params used and ADAL/MSAL v1 token retrieved, setting ADAL/MSAL v1 upn as loginHint\");\r\n return cachedIdToken.claims.upn;\r\n }\r\n else {\r\n this.logger.verbose(\"No SSO params used and ADAL/MSAL v1 token retrieved, however, no account hint claim found. Enable preferred_username or upn id token claim to get SSO.\");\r\n }\r\n }\r\n return null;\r\n };\r\n /**\r\n * Updates a credential's cache key if the current cache key is outdated\r\n */\r\n BrowserCacheManager.prototype.updateCredentialCacheKey = function (currentCacheKey, credential) {\r\n var updatedCacheKey = credential.generateCredentialKey();\r\n if (currentCacheKey !== updatedCacheKey) {\r\n var cacheItem = this.getItem(currentCacheKey);\r\n if (cacheItem) {\r\n this.removeItem(currentCacheKey);\r\n this.setItem(updatedCacheKey, cacheItem);\r\n this.logger.verbose(\"Updated an outdated \" + credential.credentialType + \" cache key\");\r\n return updatedCacheKey;\r\n }\r\n else {\r\n this.logger.error(\"Attempted to update an outdated \" + credential.credentialType + \" cache key but no item matching the outdated key was found in storage\");\r\n }\r\n }\r\n return currentCacheKey;\r\n };\r\n /**\r\n * Returns application id as redirect context during AcquireTokenRedirect flow.\r\n */\r\n BrowserCacheManager.prototype.getRedirectRequestContext = function () {\r\n return this.getTemporaryCache(TemporaryCacheKeys.REDIRECT_CONTEXT, true);\r\n };\r\n /**\r\n * Sets application id as the redirect context during AcquireTokenRedirect flow.\r\n * @param value\r\n */\r\n BrowserCacheManager.prototype.setRedirectRequestContext = function (value) {\r\n this.setTemporaryCache(TemporaryCacheKeys.REDIRECT_CONTEXT, value, true);\r\n };\r\n return BrowserCacheManager;\r\n}(CacheManager));\r\nvar DEFAULT_BROWSER_CACHE_MANAGER = function (clientId, logger) {\r\n var cacheOptions = {\r\n cacheLocation: BrowserCacheLocation.MemoryStorage,\r\n storeAuthStateInCookie: false,\r\n secureCookies: false\r\n };\r\n return new BrowserCacheManager(clientId, cacheOptions, DEFAULT_CRYPTO_IMPLEMENTATION, logger);\r\n};\n\nexport { BrowserCacheManager, DEFAULT_BROWSER_CACHE_MANAGER };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Protocol modes supported by MSAL.\r\n */\r\nvar ProtocolMode;\r\n(function (ProtocolMode) {\r\n ProtocolMode[\"AAD\"] = \"AAD\";\r\n ProtocolMode[\"OIDC\"] = \"OIDC\";\r\n})(ProtocolMode || (ProtocolMode = {}));\n\nexport { ProtocolMode };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar AzureCloudInstance;\r\n(function (AzureCloudInstance) {\r\n // AzureCloudInstance is not specified.\r\n AzureCloudInstance[AzureCloudInstance[\"None\"] = 0] = \"None\";\r\n // Microsoft Azure public cloud\r\n AzureCloudInstance[\"AzurePublic\"] = \"https://login.microsoftonline.com\";\r\n // Microsoft PPE\r\n AzureCloudInstance[\"AzurePpe\"] = \"https://login.windows-ppe.net\";\r\n // Microsoft Chinese national cloud\r\n AzureCloudInstance[\"AzureChina\"] = \"https://login.chinacloudapi.cn\";\r\n // Microsoft German national cloud (\"Black Forest\")\r\n AzureCloudInstance[\"AzureGermany\"] = \"https://login.microsoftonline.de\";\r\n // US Government cloud\r\n AzureCloudInstance[\"AzureUsGovernment\"] = \"https://login.microsoftonline.us\";\r\n})(AzureCloudInstance || (AzureCloudInstance = {}));\n\nexport { AzureCloudInstance };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\nimport { __assign, __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { DEFAULT_CRYPTO_IMPLEMENTATION } from '../crypto/ICrypto.js';\nimport { AuthError } from '../error/AuthError.js';\nimport { LogLevel } from '../logger/Logger.js';\nimport { Constants } from '../utils/Constants.js';\nimport { version } from '../packageMetadata.js';\nimport { AzureCloudInstance } from '../authority/AuthorityOptions.js';\nimport { DefaultStorageClass } from '../cache/CacheManager.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n// Token renewal offset default in seconds\r\nvar DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = 300;\r\nvar DEFAULT_SYSTEM_OPTIONS = {\r\n tokenRenewalOffsetSeconds: DEFAULT_TOKEN_RENEWAL_OFFSET_SEC,\r\n preventCorsPreflight: false,\r\n proxyUrl: Constants.EMPTY_STRING\r\n};\r\nvar DEFAULT_LOGGER_IMPLEMENTATION = {\r\n loggerCallback: function () {\r\n // allow users to not set loggerCallback\r\n },\r\n piiLoggingEnabled: false,\r\n logLevel: LogLevel.Info,\r\n correlationId: Constants.EMPTY_STRING\r\n};\r\nvar DEFAULT_NETWORK_IMPLEMENTATION = {\r\n sendGetRequestAsync: function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var notImplErr;\r\n return __generator(this, function (_a) {\r\n notImplErr = \"Network interface - sendGetRequestAsync() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n });\r\n });\r\n },\r\n sendPostRequestAsync: function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var notImplErr;\r\n return __generator(this, function (_a) {\r\n notImplErr = \"Network interface - sendPostRequestAsync() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n });\r\n });\r\n }\r\n};\r\nvar DEFAULT_LIBRARY_INFO = {\r\n sku: Constants.SKU,\r\n version: version,\r\n cpu: Constants.EMPTY_STRING,\r\n os: Constants.EMPTY_STRING\r\n};\r\nvar DEFAULT_CLIENT_CREDENTIALS = {\r\n clientSecret: Constants.EMPTY_STRING,\r\n clientAssertion: undefined\r\n};\r\nvar DEFAULT_AZURE_CLOUD_OPTIONS = {\r\n azureCloudInstance: AzureCloudInstance.None,\r\n tenant: \"\" + Constants.DEFAULT_COMMON_TENANT\r\n};\r\nvar DEFAULT_TELEMETRY_OPTIONS = {\r\n application: {\r\n appName: \"\",\r\n appVersion: \"\"\r\n }\r\n};\r\n/**\r\n * Function that sets the default options when not explicitly configured from app developer\r\n *\r\n * @param Configuration\r\n *\r\n * @returns Configuration\r\n */\r\nfunction buildClientConfiguration(_a) {\r\n var userAuthOptions = _a.authOptions, userSystemOptions = _a.systemOptions, userLoggerOption = _a.loggerOptions, storageImplementation = _a.storageInterface, networkImplementation = _a.networkInterface, cryptoImplementation = _a.cryptoInterface, clientCredentials = _a.clientCredentials, libraryInfo = _a.libraryInfo, telemetry = _a.telemetry, serverTelemetryManager = _a.serverTelemetryManager, persistencePlugin = _a.persistencePlugin, serializableCache = _a.serializableCache;\r\n var loggerOptions = __assign(__assign({}, DEFAULT_LOGGER_IMPLEMENTATION), userLoggerOption);\r\n return {\r\n authOptions: buildAuthOptions(userAuthOptions),\r\n systemOptions: __assign(__assign({}, DEFAULT_SYSTEM_OPTIONS), userSystemOptions),\r\n loggerOptions: loggerOptions,\r\n storageInterface: storageImplementation || new DefaultStorageClass(userAuthOptions.clientId, DEFAULT_CRYPTO_IMPLEMENTATION),\r\n networkInterface: networkImplementation || DEFAULT_NETWORK_IMPLEMENTATION,\r\n cryptoInterface: cryptoImplementation || DEFAULT_CRYPTO_IMPLEMENTATION,\r\n clientCredentials: clientCredentials || DEFAULT_CLIENT_CREDENTIALS,\r\n libraryInfo: __assign(__assign({}, DEFAULT_LIBRARY_INFO), libraryInfo),\r\n telemetry: __assign(__assign({}, DEFAULT_TELEMETRY_OPTIONS), telemetry),\r\n serverTelemetryManager: serverTelemetryManager || null,\r\n persistencePlugin: persistencePlugin || null,\r\n serializableCache: serializableCache || null,\r\n };\r\n}\r\n/**\r\n * Construct authoptions from the client and platform passed values\r\n * @param authOptions\r\n */\r\nfunction buildAuthOptions(authOptions) {\r\n return __assign({ clientCapabilities: [], azureCloudOptions: DEFAULT_AZURE_CLOUD_OPTIONS, skipAuthorityMetadataCache: false }, authOptions);\r\n}\n\nexport { DEFAULT_SYSTEM_OPTIONS, buildClientConfiguration };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\n/* eslint-disable header/header */\r\nvar name = \"@azure/msal-common\";\r\nvar version = \"9.1.1\";\n\nexport { name, version };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\nimport { AuthError } from '../error/AuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar StubbedNetworkModule = {\r\n sendGetRequestAsync: function () {\r\n var notImplErr = \"Network interface - sendGetRequestAsync() has not been implemented for the Network interface.\";\r\n return Promise.reject(AuthError.createUnexpectedError(notImplErr));\r\n },\r\n sendPostRequestAsync: function () {\r\n var notImplErr = \"Network interface - sendPostRequestAsync() has not been implemented for the Network interface.\";\r\n return Promise.reject(AuthError.createUnexpectedError(notImplErr));\r\n }\r\n};\n\nexport { StubbedNetworkModule };\n","/*! @azure/msal-browser v2.32.2 2023-01-10 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar NavigationClient = /** @class */ (function () {\r\n function NavigationClient() {\r\n }\r\n /**\r\n * Navigates to other pages within the same web application\r\n * @param url\r\n * @param options\r\n */\r\n NavigationClient.prototype.navigateInternal = function (url, options) {\r\n return NavigationClient.defaultNavigateWindow(url, options);\r\n };\r\n /**\r\n * Navigates to other pages outside the web application i.e. the Identity Provider\r\n * @param url\r\n * @param options\r\n */\r\n NavigationClient.prototype.navigateExternal = function (url, options) {\r\n return NavigationClient.defaultNavigateWindow(url, options);\r\n };\r\n /**\r\n * Default navigation implementation invoked by the internal and external functions\r\n * @param url\r\n * @param options\r\n */\r\n NavigationClient.defaultNavigateWindow = function (url, options) {\r\n if (options.noHistory) {\r\n window.location.replace(url);\r\n }\r\n else {\r\n window.location.assign(url);\r\n }\r\n return new Promise(function (resolve) {\r\n setTimeout(function () {\r\n resolve(true);\r\n }, options.timeout);\r\n });\r\n };\r\n return NavigationClient;\r\n}());\n\nexport { NavigationClient };\n","/*! @azure/msal-browser v2.32.2 2023-01-10 */\n'use strict';\n/* eslint-disable header/header */\r\nvar name = \"@azure/msal-browser\";\r\nvar version = \"2.32.2\";\n\nexport { name, version };\n","/*! @azure/msal-browser v2.32.2 2023-01-10 */\n'use strict';\nimport { AccountEntity, CacheManager } from '@azure/msal-common';\nimport { EventType } from './EventType.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar EventHandler = /** @class */ (function () {\r\n function EventHandler(logger, browserCrypto) {\r\n this.eventCallbacks = new Map();\r\n this.logger = logger;\r\n this.browserCrypto = browserCrypto;\r\n this.listeningToStorageEvents = false;\r\n this.handleAccountCacheChange = this.handleAccountCacheChange.bind(this);\r\n }\r\n /**\r\n * Adds event callbacks to array\r\n * @param callback\r\n */\r\n EventHandler.prototype.addEventCallback = function (callback) {\r\n if (typeof window !== \"undefined\") {\r\n var callbackId = this.browserCrypto.createNewGuid();\r\n this.eventCallbacks.set(callbackId, callback);\r\n this.logger.verbose(\"Event callback registered with id: \" + callbackId);\r\n return callbackId;\r\n }\r\n return null;\r\n };\r\n /**\r\n * Removes callback with provided id from callback array\r\n * @param callbackId\r\n */\r\n EventHandler.prototype.removeEventCallback = function (callbackId) {\r\n this.eventCallbacks.delete(callbackId);\r\n this.logger.verbose(\"Event callback \" + callbackId + \" removed.\");\r\n };\r\n /**\r\n * Adds event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window\r\n */\r\n EventHandler.prototype.enableAccountStorageEvents = function () {\r\n if (typeof window === \"undefined\") {\r\n return;\r\n }\r\n if (!this.listeningToStorageEvents) {\r\n this.logger.verbose(\"Adding account storage listener.\");\r\n this.listeningToStorageEvents = true;\r\n window.addEventListener(\"storage\", this.handleAccountCacheChange);\r\n }\r\n else {\r\n this.logger.verbose(\"Account storage listener already registered.\");\r\n }\r\n };\r\n /**\r\n * Removes event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window\r\n */\r\n EventHandler.prototype.disableAccountStorageEvents = function () {\r\n if (typeof window === \"undefined\") {\r\n return;\r\n }\r\n if (this.listeningToStorageEvents) {\r\n this.logger.verbose(\"Removing account storage listener.\");\r\n window.removeEventListener(\"storage\", this.handleAccountCacheChange);\r\n this.listeningToStorageEvents = false;\r\n }\r\n else {\r\n this.logger.verbose(\"No account storage listener registered.\");\r\n }\r\n };\r\n /**\r\n * Emits events by calling callback with event message\r\n * @param eventType\r\n * @param interactionType\r\n * @param payload\r\n * @param error\r\n */\r\n EventHandler.prototype.emitEvent = function (eventType, interactionType, payload, error) {\r\n var _this = this;\r\n if (typeof window !== \"undefined\") {\r\n var message_1 = {\r\n eventType: eventType,\r\n interactionType: interactionType || null,\r\n payload: payload || null,\r\n error: error || null,\r\n timestamp: Date.now()\r\n };\r\n this.logger.info(\"Emitting event: \" + eventType);\r\n this.eventCallbacks.forEach(function (callback, callbackId) {\r\n _this.logger.verbose(\"Emitting event to callback \" + callbackId + \": \" + eventType);\r\n callback.apply(null, [message_1]);\r\n });\r\n }\r\n };\r\n /**\r\n * Emit account added/removed events when cached accounts are changed in a different tab or frame\r\n */\r\n EventHandler.prototype.handleAccountCacheChange = function (e) {\r\n try {\r\n var cacheValue = e.newValue || e.oldValue;\r\n if (!cacheValue) {\r\n return;\r\n }\r\n var parsedValue = JSON.parse(cacheValue);\r\n if (typeof parsedValue !== \"object\" || !AccountEntity.isAccountEntity(parsedValue)) {\r\n return;\r\n }\r\n var accountEntity = CacheManager.toObject(new AccountEntity(), parsedValue);\r\n var accountInfo = accountEntity.getAccountInfo();\r\n if (!e.oldValue && e.newValue) {\r\n this.logger.info(\"Account was added to cache in a different window\");\r\n this.emitEvent(EventType.ACCOUNT_ADDED, undefined, accountInfo);\r\n }\r\n else if (!e.newValue && e.oldValue) {\r\n this.logger.info(\"Account was removed from cache in a different window\");\r\n this.emitEvent(EventType.ACCOUNT_REMOVED, undefined, accountInfo);\r\n }\r\n }\r\n catch (e) {\r\n return;\r\n }\r\n };\r\n return EventHandler;\r\n}());\n\nexport { EventHandler };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\nimport { ThrottlingConstants, CacheSchemaType, Constants, HeaderNames } from '../utils/Constants.js';\nimport { ServerError } from '../error/ServerError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar ThrottlingUtils = /** @class */ (function () {\r\n function ThrottlingUtils() {\r\n }\r\n /**\r\n * Prepares a RequestThumbprint to be stored as a key.\r\n * @param thumbprint\r\n */\r\n ThrottlingUtils.generateThrottlingStorageKey = function (thumbprint) {\r\n return ThrottlingConstants.THROTTLING_PREFIX + \".\" + JSON.stringify(thumbprint);\r\n };\r\n /**\r\n * Performs necessary throttling checks before a network request.\r\n * @param cacheManager\r\n * @param thumbprint\r\n */\r\n ThrottlingUtils.preProcess = function (cacheManager, thumbprint) {\r\n var _a;\r\n var key = ThrottlingUtils.generateThrottlingStorageKey(thumbprint);\r\n var value = cacheManager.getThrottlingCache(key);\r\n if (value) {\r\n if (value.throttleTime < Date.now()) {\r\n cacheManager.removeItem(key, CacheSchemaType.THROTTLING);\r\n return;\r\n }\r\n throw new ServerError(((_a = value.errorCodes) === null || _a === void 0 ? void 0 : _a.join(\" \")) || Constants.EMPTY_STRING, value.errorMessage, value.subError);\r\n }\r\n };\r\n /**\r\n * Performs necessary throttling checks after a network request.\r\n * @param cacheManager\r\n * @param thumbprint\r\n * @param response\r\n */\r\n ThrottlingUtils.postProcess = function (cacheManager, thumbprint, response) {\r\n if (ThrottlingUtils.checkResponseStatus(response) || ThrottlingUtils.checkResponseForRetryAfter(response)) {\r\n var thumbprintValue = {\r\n throttleTime: ThrottlingUtils.calculateThrottleTime(parseInt(response.headers[HeaderNames.RETRY_AFTER])),\r\n error: response.body.error,\r\n errorCodes: response.body.error_codes,\r\n errorMessage: response.body.error_description,\r\n subError: response.body.suberror\r\n };\r\n cacheManager.setThrottlingCache(ThrottlingUtils.generateThrottlingStorageKey(thumbprint), thumbprintValue);\r\n }\r\n };\r\n /**\r\n * Checks a NetworkResponse object's status codes against 429 or 5xx\r\n * @param response\r\n */\r\n ThrottlingUtils.checkResponseStatus = function (response) {\r\n return response.status === 429 || response.status >= 500 && response.status < 600;\r\n };\r\n /**\r\n * Checks a NetworkResponse object's RetryAfter header\r\n * @param response\r\n */\r\n ThrottlingUtils.checkResponseForRetryAfter = function (response) {\r\n if (response.headers) {\r\n return response.headers.hasOwnProperty(HeaderNames.RETRY_AFTER) && (response.status < 200 || response.status >= 300);\r\n }\r\n return false;\r\n };\r\n /**\r\n * Calculates the Unix-time value for a throttle to expire given throttleTime in seconds.\r\n * @param throttleTime\r\n */\r\n ThrottlingUtils.calculateThrottleTime = function (throttleTime) {\r\n var time = throttleTime <= 0 ? 0 : throttleTime;\r\n var currentSeconds = Date.now() / 1000;\r\n return Math.floor(Math.min(currentSeconds + (time || ThrottlingConstants.DEFAULT_THROTTLE_TIME_SECONDS), currentSeconds + ThrottlingConstants.DEFAULT_MAX_THROTTLE_TIME_SECONDS) * 1000);\r\n };\r\n ThrottlingUtils.removeThrottle = function (cacheManager, clientId, request, homeAccountIdentifier) {\r\n var thumbprint = {\r\n clientId: clientId,\r\n authority: request.authority,\r\n scopes: request.scopes,\r\n homeAccountIdentifier: homeAccountIdentifier,\r\n claims: request.claims,\r\n authenticationScheme: request.authenticationScheme,\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n resourceRequestUri: request.resourceRequestUri,\r\n shrClaims: request.shrClaims,\r\n sshKid: request.sshKid\r\n };\r\n var key = this.generateThrottlingStorageKey(thumbprint);\r\n return cacheManager.removeItem(key, CacheSchemaType.THROTTLING);\r\n };\r\n return ThrottlingUtils;\r\n}());\n\nexport { ThrottlingUtils };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { ThrottlingUtils } from './ThrottlingUtils.js';\nimport { AuthError } from '../error/AuthError.js';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar NetworkManager = /** @class */ (function () {\r\n function NetworkManager(networkClient, cacheManager) {\r\n this.networkClient = networkClient;\r\n this.cacheManager = cacheManager;\r\n }\r\n /**\r\n * Wraps sendPostRequestAsync with necessary preflight and postflight logic\r\n * @param thumbprint\r\n * @param tokenEndpoint\r\n * @param options\r\n */\r\n NetworkManager.prototype.sendPostRequest = function (thumbprint, tokenEndpoint, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n ThrottlingUtils.preProcess(this.cacheManager, thumbprint);\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.networkClient.sendPostRequestAsync(tokenEndpoint, options)];\r\n case 2:\r\n response = _a.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n e_1 = _a.sent();\r\n if (e_1 instanceof AuthError) {\r\n throw e_1;\r\n }\r\n else {\r\n throw ClientAuthError.createNetworkError(tokenEndpoint, e_1);\r\n }\r\n case 4:\r\n ThrottlingUtils.postProcess(this.cacheManager, thumbprint, response);\r\n return [2 /*return*/, response];\r\n }\r\n });\r\n });\r\n };\r\n return NetworkManager;\r\n}());\n\nexport { NetworkManager };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { buildClientConfiguration } from '../config/ClientConfiguration.js';\nimport { NetworkManager } from '../network/NetworkManager.js';\nimport { Logger } from '../logger/Logger.js';\nimport { HeaderNames, Constants } from '../utils/Constants.js';\nimport { name, version } from '../packageMetadata.js';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\nimport { CcsCredentialType } from '../account/CcsCredential.js';\nimport { buildClientInfoFromHomeAccountId } from '../account/ClientInfo.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Base application class which will construct requests to send to and handle responses from the Microsoft STS using the authorization code flow.\r\n */\r\nvar BaseClient = /** @class */ (function () {\r\n function BaseClient(configuration, performanceClient) {\r\n // Set the configuration\r\n this.config = buildClientConfiguration(configuration);\r\n // Initialize the logger\r\n this.logger = new Logger(this.config.loggerOptions, name, version);\r\n // Initialize crypto\r\n this.cryptoUtils = this.config.cryptoInterface;\r\n // Initialize storage interface\r\n this.cacheManager = this.config.storageInterface;\r\n // Set the network interface\r\n this.networkClient = this.config.networkInterface;\r\n // Set the NetworkManager\r\n this.networkManager = new NetworkManager(this.networkClient, this.cacheManager);\r\n // Set TelemetryManager\r\n this.serverTelemetryManager = this.config.serverTelemetryManager;\r\n // set Authority\r\n this.authority = this.config.authOptions.authority;\r\n // set performance telemetry client\r\n this.performanceClient = performanceClient;\r\n }\r\n /**\r\n * Creates default headers for requests to token endpoint\r\n */\r\n BaseClient.prototype.createTokenRequestHeaders = function (ccsCred) {\r\n var headers = {};\r\n headers[HeaderNames.CONTENT_TYPE] = Constants.URL_FORM_CONTENT_TYPE;\r\n if (!this.config.systemOptions.preventCorsPreflight && ccsCred) {\r\n switch (ccsCred.type) {\r\n case CcsCredentialType.HOME_ACCOUNT_ID:\r\n try {\r\n var clientInfo = buildClientInfoFromHomeAccountId(ccsCred.credential);\r\n headers[HeaderNames.CCS_HEADER] = \"Oid:\" + clientInfo.uid + \"@\" + clientInfo.utid;\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse home account ID for CCS Header: \" + e);\r\n }\r\n break;\r\n case CcsCredentialType.UPN:\r\n headers[HeaderNames.CCS_HEADER] = \"UPN: \" + ccsCred.credential;\r\n break;\r\n }\r\n }\r\n return headers;\r\n };\r\n /**\r\n * Http post to token endpoint\r\n * @param tokenEndpoint\r\n * @param queryString\r\n * @param headers\r\n * @param thumbprint\r\n */\r\n BaseClient.prototype.executePostToTokenEndpoint = function (tokenEndpoint, queryString, headers, thumbprint) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.networkManager.sendPostRequest(thumbprint, tokenEndpoint, { body: queryString, headers: headers, proxyUrl: this.config.systemOptions.proxyUrl })];\r\n case 1:\r\n response = _a.sent();\r\n if (this.config.serverTelemetryManager && response.status < 500 && response.status !== 429) {\r\n // Telemetry data successfully logged by server, clear Telemetry cache\r\n this.config.serverTelemetryManager.clearTelemetryCache();\r\n }\r\n return [2 /*return*/, response];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Updates the authority object of the client. Endpoint discovery must be completed.\r\n * @param updatedAuthority\r\n */\r\n BaseClient.prototype.updateAuthority = function (updatedAuthority) {\r\n if (!updatedAuthority.discoveryComplete()) {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Updated authority has not completed endpoint discovery.\");\r\n }\r\n this.authority = updatedAuthority;\r\n };\r\n return BaseClient;\r\n}());\n\nexport { BaseClient };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\nimport { StringUtils } from '../utils/StringUtils.js';\nimport { ClientConfigurationError } from '../error/ClientConfigurationError.js';\nimport { CodeChallengeMethodValues, PromptValue } from '../utils/Constants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Validates server consumable params from the \"request\" objects\r\n */\r\nvar RequestValidator = /** @class */ (function () {\r\n function RequestValidator() {\r\n }\r\n /**\r\n * Utility to check if the `redirectUri` in the request is a non-null value\r\n * @param redirectUri\r\n */\r\n RequestValidator.validateRedirectUri = function (redirectUri) {\r\n if (StringUtils.isEmpty(redirectUri)) {\r\n throw ClientConfigurationError.createRedirectUriEmptyError();\r\n }\r\n };\r\n /**\r\n * Utility to validate prompt sent by the user in the request\r\n * @param prompt\r\n */\r\n RequestValidator.validatePrompt = function (prompt) {\r\n var promptValues = [];\r\n for (var value in PromptValue) {\r\n promptValues.push(PromptValue[value]);\r\n }\r\n if (promptValues.indexOf(prompt) < 0) {\r\n throw ClientConfigurationError.createInvalidPromptError(prompt);\r\n }\r\n };\r\n RequestValidator.validateClaims = function (claims) {\r\n try {\r\n JSON.parse(claims);\r\n }\r\n catch (e) {\r\n throw ClientConfigurationError.createInvalidClaimsRequestError();\r\n }\r\n };\r\n /**\r\n * Utility to validate code_challenge and code_challenge_method\r\n * @param codeChallenge\r\n * @param codeChallengeMethod\r\n */\r\n RequestValidator.validateCodeChallengeParams = function (codeChallenge, codeChallengeMethod) {\r\n if (StringUtils.isEmpty(codeChallenge) || StringUtils.isEmpty(codeChallengeMethod)) {\r\n throw ClientConfigurationError.createInvalidCodeChallengeParamsError();\r\n }\r\n else {\r\n this.validateCodeChallengeMethod(codeChallengeMethod);\r\n }\r\n };\r\n /**\r\n * Utility to validate code_challenge_method\r\n * @param codeChallengeMethod\r\n */\r\n RequestValidator.validateCodeChallengeMethod = function (codeChallengeMethod) {\r\n if ([\r\n CodeChallengeMethodValues.PLAIN,\r\n CodeChallengeMethodValues.S256\r\n ].indexOf(codeChallengeMethod) < 0) {\r\n throw ClientConfigurationError.createInvalidCodeChallengeMethodError();\r\n }\r\n };\r\n /**\r\n * Removes unnecessary or duplicate query parameters from extraQueryParameters\r\n * @param request\r\n */\r\n RequestValidator.sanitizeEQParams = function (eQParams, queryParams) {\r\n if (!eQParams) {\r\n return {};\r\n }\r\n // Remove any query parameters already included in SSO params\r\n queryParams.forEach(function (value, key) {\r\n if (eQParams[key]) {\r\n delete eQParams[key];\r\n }\r\n });\r\n return eQParams;\r\n };\r\n return RequestValidator;\r\n}());\n\nexport { RequestValidator };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\nimport { __spreadArrays } from '../_virtual/_tslib.js';\nimport { AADServerParamKeys, Constants, ResponseMode, OIDC_DEFAULT_SCOPES, SSOTypes, HeaderNames, CLIENT_INFO, ClaimsRequestKeys, PasswordGrantConstants, AuthenticationScheme, ThrottlingConstants } from '../utils/Constants.js';\nimport { ScopeSet } from './ScopeSet.js';\nimport { ClientConfigurationError } from '../error/ClientConfigurationError.js';\nimport { RequestValidator } from './RequestValidator.js';\nimport { StringUtils } from '../utils/StringUtils.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar RequestParameterBuilder = /** @class */ (function () {\r\n function RequestParameterBuilder() {\r\n this.parameters = new Map();\r\n }\r\n /**\r\n * add response_type = code\r\n */\r\n RequestParameterBuilder.prototype.addResponseTypeCode = function () {\r\n this.parameters.set(AADServerParamKeys.RESPONSE_TYPE, encodeURIComponent(Constants.CODE_RESPONSE_TYPE));\r\n };\r\n /**\r\n * add response_type = token id_token\r\n */\r\n RequestParameterBuilder.prototype.addResponseTypeForTokenAndIdToken = function () {\r\n this.parameters.set(AADServerParamKeys.RESPONSE_TYPE, encodeURIComponent(Constants.TOKEN_RESPONSE_TYPE + \" \" + Constants.ID_TOKEN_RESPONSE_TYPE));\r\n };\r\n /**\r\n * add response_mode. defaults to query.\r\n * @param responseMode\r\n */\r\n RequestParameterBuilder.prototype.addResponseMode = function (responseMode) {\r\n this.parameters.set(AADServerParamKeys.RESPONSE_MODE, encodeURIComponent((responseMode) ? responseMode : ResponseMode.QUERY));\r\n };\r\n /**\r\n * Add flag to indicate STS should attempt to use WAM if available\r\n */\r\n RequestParameterBuilder.prototype.addNativeBroker = function () {\r\n this.parameters.set(AADServerParamKeys.NATIVE_BROKER, encodeURIComponent(\"1\"));\r\n };\r\n /**\r\n * add scopes. set addOidcScopes to false to prevent default scopes in non-user scenarios\r\n * @param scopeSet\r\n * @param addOidcScopes\r\n */\r\n RequestParameterBuilder.prototype.addScopes = function (scopes, addOidcScopes) {\r\n if (addOidcScopes === void 0) { addOidcScopes = true; }\r\n var requestScopes = addOidcScopes ? __spreadArrays(scopes || [], OIDC_DEFAULT_SCOPES) : scopes || [];\r\n var scopeSet = new ScopeSet(requestScopes);\r\n this.parameters.set(AADServerParamKeys.SCOPE, encodeURIComponent(scopeSet.printScopes()));\r\n };\r\n /**\r\n * add clientId\r\n * @param clientId\r\n */\r\n RequestParameterBuilder.prototype.addClientId = function (clientId) {\r\n this.parameters.set(AADServerParamKeys.CLIENT_ID, encodeURIComponent(clientId));\r\n };\r\n /**\r\n * add redirect_uri\r\n * @param redirectUri\r\n */\r\n RequestParameterBuilder.prototype.addRedirectUri = function (redirectUri) {\r\n RequestValidator.validateRedirectUri(redirectUri);\r\n this.parameters.set(AADServerParamKeys.REDIRECT_URI, encodeURIComponent(redirectUri));\r\n };\r\n /**\r\n * add post logout redirectUri\r\n * @param redirectUri\r\n */\r\n RequestParameterBuilder.prototype.addPostLogoutRedirectUri = function (redirectUri) {\r\n RequestValidator.validateRedirectUri(redirectUri);\r\n this.parameters.set(AADServerParamKeys.POST_LOGOUT_URI, encodeURIComponent(redirectUri));\r\n };\r\n /**\r\n * add id_token_hint to logout request\r\n * @param idTokenHint\r\n */\r\n RequestParameterBuilder.prototype.addIdTokenHint = function (idTokenHint) {\r\n this.parameters.set(AADServerParamKeys.ID_TOKEN_HINT, encodeURIComponent(idTokenHint));\r\n };\r\n /**\r\n * add domain_hint\r\n * @param domainHint\r\n */\r\n RequestParameterBuilder.prototype.addDomainHint = function (domainHint) {\r\n this.parameters.set(SSOTypes.DOMAIN_HINT, encodeURIComponent(domainHint));\r\n };\r\n /**\r\n * add login_hint\r\n * @param loginHint\r\n */\r\n RequestParameterBuilder.prototype.addLoginHint = function (loginHint) {\r\n this.parameters.set(SSOTypes.LOGIN_HINT, encodeURIComponent(loginHint));\r\n };\r\n /**\r\n * Adds the CCS (Cache Credential Service) query parameter for login_hint\r\n * @param loginHint\r\n */\r\n RequestParameterBuilder.prototype.addCcsUpn = function (loginHint) {\r\n this.parameters.set(HeaderNames.CCS_HEADER, encodeURIComponent(\"UPN:\" + loginHint));\r\n };\r\n /**\r\n * Adds the CCS (Cache Credential Service) query parameter for account object\r\n * @param loginHint\r\n */\r\n RequestParameterBuilder.prototype.addCcsOid = function (clientInfo) {\r\n this.parameters.set(HeaderNames.CCS_HEADER, encodeURIComponent(\"Oid:\" + clientInfo.uid + \"@\" + clientInfo.utid));\r\n };\r\n /**\r\n * add sid\r\n * @param sid\r\n */\r\n RequestParameterBuilder.prototype.addSid = function (sid) {\r\n this.parameters.set(SSOTypes.SID, encodeURIComponent(sid));\r\n };\r\n /**\r\n * add claims\r\n * @param claims\r\n */\r\n RequestParameterBuilder.prototype.addClaims = function (claims, clientCapabilities) {\r\n var mergedClaims = this.addClientCapabilitiesToClaims(claims, clientCapabilities);\r\n RequestValidator.validateClaims(mergedClaims);\r\n this.parameters.set(AADServerParamKeys.CLAIMS, encodeURIComponent(mergedClaims));\r\n };\r\n /**\r\n * add correlationId\r\n * @param correlationId\r\n */\r\n RequestParameterBuilder.prototype.addCorrelationId = function (correlationId) {\r\n this.parameters.set(AADServerParamKeys.CLIENT_REQUEST_ID, encodeURIComponent(correlationId));\r\n };\r\n /**\r\n * add library info query params\r\n * @param libraryInfo\r\n */\r\n RequestParameterBuilder.prototype.addLibraryInfo = function (libraryInfo) {\r\n // Telemetry Info\r\n this.parameters.set(AADServerParamKeys.X_CLIENT_SKU, libraryInfo.sku);\r\n this.parameters.set(AADServerParamKeys.X_CLIENT_VER, libraryInfo.version);\r\n if (libraryInfo.os) {\r\n this.parameters.set(AADServerParamKeys.X_CLIENT_OS, libraryInfo.os);\r\n }\r\n if (libraryInfo.cpu) {\r\n this.parameters.set(AADServerParamKeys.X_CLIENT_CPU, libraryInfo.cpu);\r\n }\r\n };\r\n /**\r\n * Add client telemetry parameters\r\n * @param appTelemetry\r\n */\r\n RequestParameterBuilder.prototype.addApplicationTelemetry = function (appTelemetry) {\r\n if (appTelemetry === null || appTelemetry === void 0 ? void 0 : appTelemetry.appName) {\r\n this.parameters.set(AADServerParamKeys.X_APP_NAME, appTelemetry.appName);\r\n }\r\n if (appTelemetry === null || appTelemetry === void 0 ? void 0 : appTelemetry.appVersion) {\r\n this.parameters.set(AADServerParamKeys.X_APP_VER, appTelemetry.appVersion);\r\n }\r\n };\r\n /**\r\n * add prompt\r\n * @param prompt\r\n */\r\n RequestParameterBuilder.prototype.addPrompt = function (prompt) {\r\n RequestValidator.validatePrompt(prompt);\r\n this.parameters.set(\"\" + AADServerParamKeys.PROMPT, encodeURIComponent(prompt));\r\n };\r\n /**\r\n * add state\r\n * @param state\r\n */\r\n RequestParameterBuilder.prototype.addState = function (state) {\r\n if (!StringUtils.isEmpty(state)) {\r\n this.parameters.set(AADServerParamKeys.STATE, encodeURIComponent(state));\r\n }\r\n };\r\n /**\r\n * add nonce\r\n * @param nonce\r\n */\r\n RequestParameterBuilder.prototype.addNonce = function (nonce) {\r\n this.parameters.set(AADServerParamKeys.NONCE, encodeURIComponent(nonce));\r\n };\r\n /**\r\n * add code_challenge and code_challenge_method\r\n * - throw if either of them are not passed\r\n * @param codeChallenge\r\n * @param codeChallengeMethod\r\n */\r\n RequestParameterBuilder.prototype.addCodeChallengeParams = function (codeChallenge, codeChallengeMethod) {\r\n RequestValidator.validateCodeChallengeParams(codeChallenge, codeChallengeMethod);\r\n if (codeChallenge && codeChallengeMethod) {\r\n this.parameters.set(AADServerParamKeys.CODE_CHALLENGE, encodeURIComponent(codeChallenge));\r\n this.parameters.set(AADServerParamKeys.CODE_CHALLENGE_METHOD, encodeURIComponent(codeChallengeMethod));\r\n }\r\n else {\r\n throw ClientConfigurationError.createInvalidCodeChallengeParamsError();\r\n }\r\n };\r\n /**\r\n * add the `authorization_code` passed by the user to exchange for a token\r\n * @param code\r\n */\r\n RequestParameterBuilder.prototype.addAuthorizationCode = function (code) {\r\n this.parameters.set(AADServerParamKeys.CODE, encodeURIComponent(code));\r\n };\r\n /**\r\n * add the `authorization_code` passed by the user to exchange for a token\r\n * @param code\r\n */\r\n RequestParameterBuilder.prototype.addDeviceCode = function (code) {\r\n this.parameters.set(AADServerParamKeys.DEVICE_CODE, encodeURIComponent(code));\r\n };\r\n /**\r\n * add the `refreshToken` passed by the user\r\n * @param refreshToken\r\n */\r\n RequestParameterBuilder.prototype.addRefreshToken = function (refreshToken) {\r\n this.parameters.set(AADServerParamKeys.REFRESH_TOKEN, encodeURIComponent(refreshToken));\r\n };\r\n /**\r\n * add the `code_verifier` passed by the user to exchange for a token\r\n * @param codeVerifier\r\n */\r\n RequestParameterBuilder.prototype.addCodeVerifier = function (codeVerifier) {\r\n this.parameters.set(AADServerParamKeys.CODE_VERIFIER, encodeURIComponent(codeVerifier));\r\n };\r\n /**\r\n * add client_secret\r\n * @param clientSecret\r\n */\r\n RequestParameterBuilder.prototype.addClientSecret = function (clientSecret) {\r\n this.parameters.set(AADServerParamKeys.CLIENT_SECRET, encodeURIComponent(clientSecret));\r\n };\r\n /**\r\n * add clientAssertion for confidential client flows\r\n * @param clientAssertion\r\n */\r\n RequestParameterBuilder.prototype.addClientAssertion = function (clientAssertion) {\r\n if (!StringUtils.isEmpty(clientAssertion)) {\r\n this.parameters.set(AADServerParamKeys.CLIENT_ASSERTION, encodeURIComponent(clientAssertion));\r\n }\r\n };\r\n /**\r\n * add clientAssertionType for confidential client flows\r\n * @param clientAssertionType\r\n */\r\n RequestParameterBuilder.prototype.addClientAssertionType = function (clientAssertionType) {\r\n if (!StringUtils.isEmpty(clientAssertionType)) {\r\n this.parameters.set(AADServerParamKeys.CLIENT_ASSERTION_TYPE, encodeURIComponent(clientAssertionType));\r\n }\r\n };\r\n /**\r\n * add OBO assertion for confidential client flows\r\n * @param clientAssertion\r\n */\r\n RequestParameterBuilder.prototype.addOboAssertion = function (oboAssertion) {\r\n this.parameters.set(AADServerParamKeys.OBO_ASSERTION, encodeURIComponent(oboAssertion));\r\n };\r\n /**\r\n * add grant type\r\n * @param grantType\r\n */\r\n RequestParameterBuilder.prototype.addRequestTokenUse = function (tokenUse) {\r\n this.parameters.set(AADServerParamKeys.REQUESTED_TOKEN_USE, encodeURIComponent(tokenUse));\r\n };\r\n /**\r\n * add grant type\r\n * @param grantType\r\n */\r\n RequestParameterBuilder.prototype.addGrantType = function (grantType) {\r\n this.parameters.set(AADServerParamKeys.GRANT_TYPE, encodeURIComponent(grantType));\r\n };\r\n /**\r\n * add client info\r\n *\r\n */\r\n RequestParameterBuilder.prototype.addClientInfo = function () {\r\n this.parameters.set(CLIENT_INFO, \"1\");\r\n };\r\n /**\r\n * add extraQueryParams\r\n * @param eQparams\r\n */\r\n RequestParameterBuilder.prototype.addExtraQueryParameters = function (eQparams) {\r\n var _this = this;\r\n RequestValidator.sanitizeEQParams(eQparams, this.parameters);\r\n Object.keys(eQparams).forEach(function (key) {\r\n _this.parameters.set(key, eQparams[key]);\r\n });\r\n };\r\n RequestParameterBuilder.prototype.addClientCapabilitiesToClaims = function (claims, clientCapabilities) {\r\n var mergedClaims;\r\n // Parse provided claims into JSON object or initialize empty object\r\n if (!claims) {\r\n mergedClaims = {};\r\n }\r\n else {\r\n try {\r\n mergedClaims = JSON.parse(claims);\r\n }\r\n catch (e) {\r\n throw ClientConfigurationError.createInvalidClaimsRequestError();\r\n }\r\n }\r\n if (clientCapabilities && clientCapabilities.length > 0) {\r\n if (!mergedClaims.hasOwnProperty(ClaimsRequestKeys.ACCESS_TOKEN)) {\r\n // Add access_token key to claims object\r\n mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN] = {};\r\n }\r\n // Add xms_cc claim with provided clientCapabilities to access_token key\r\n mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN][ClaimsRequestKeys.XMS_CC] = {\r\n values: clientCapabilities\r\n };\r\n }\r\n return JSON.stringify(mergedClaims);\r\n };\r\n /**\r\n * adds `username` for Password Grant flow\r\n * @param username\r\n */\r\n RequestParameterBuilder.prototype.addUsername = function (username) {\r\n this.parameters.set(PasswordGrantConstants.username, encodeURIComponent(username));\r\n };\r\n /**\r\n * adds `password` for Password Grant flow\r\n * @param password\r\n */\r\n RequestParameterBuilder.prototype.addPassword = function (password) {\r\n this.parameters.set(PasswordGrantConstants.password, encodeURIComponent(password));\r\n };\r\n /**\r\n * add pop_jwk to query params\r\n * @param cnfString\r\n */\r\n RequestParameterBuilder.prototype.addPopToken = function (cnfString) {\r\n if (!StringUtils.isEmpty(cnfString)) {\r\n this.parameters.set(AADServerParamKeys.TOKEN_TYPE, AuthenticationScheme.POP);\r\n this.parameters.set(AADServerParamKeys.REQ_CNF, encodeURIComponent(cnfString));\r\n }\r\n };\r\n /**\r\n * add SSH JWK and key ID to query params\r\n */\r\n RequestParameterBuilder.prototype.addSshJwk = function (sshJwkString) {\r\n if (!StringUtils.isEmpty(sshJwkString)) {\r\n this.parameters.set(AADServerParamKeys.TOKEN_TYPE, AuthenticationScheme.SSH);\r\n this.parameters.set(AADServerParamKeys.REQ_CNF, encodeURIComponent(sshJwkString));\r\n }\r\n };\r\n /**\r\n * add server telemetry fields\r\n * @param serverTelemetryManager\r\n */\r\n RequestParameterBuilder.prototype.addServerTelemetry = function (serverTelemetryManager) {\r\n this.parameters.set(AADServerParamKeys.X_CLIENT_CURR_TELEM, serverTelemetryManager.generateCurrentRequestHeaderValue());\r\n this.parameters.set(AADServerParamKeys.X_CLIENT_LAST_TELEM, serverTelemetryManager.generateLastRequestHeaderValue());\r\n };\r\n /**\r\n * Adds parameter that indicates to the server that throttling is supported\r\n */\r\n RequestParameterBuilder.prototype.addThrottling = function () {\r\n this.parameters.set(AADServerParamKeys.X_MS_LIB_CAPABILITY, ThrottlingConstants.X_MS_LIB_CAPABILITY_VALUE);\r\n };\r\n /**\r\n * Adds logout_hint parameter for \"silent\" logout which prevent server account picker\r\n */\r\n RequestParameterBuilder.prototype.addLogoutHint = function (logoutHint) {\r\n this.parameters.set(AADServerParamKeys.LOGOUT_HINT, encodeURIComponent(logoutHint));\r\n };\r\n /**\r\n * Utility to create a URL from the params map\r\n */\r\n RequestParameterBuilder.prototype.createQueryString = function () {\r\n var queryParameterArray = new Array();\r\n this.parameters.forEach(function (value, key) {\r\n queryParameterArray.push(key + \"=\" + value);\r\n });\r\n return queryParameterArray.join(\"&\");\r\n };\r\n return RequestParameterBuilder;\r\n}());\n\nexport { RequestParameterBuilder };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar CacheRecord = /** @class */ (function () {\r\n function CacheRecord(accountEntity, idTokenEntity, accessTokenEntity, refreshTokenEntity, appMetadataEntity) {\r\n this.account = accountEntity || null;\r\n this.idToken = idTokenEntity || null;\r\n this.accessToken = accessTokenEntity || null;\r\n this.refreshToken = refreshTokenEntity || null;\r\n this.appMetadata = appMetadataEntity || null;\r\n }\r\n return CacheRecord;\r\n}());\n\nexport { CacheRecord };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\nimport { __awaiter, __generator, __assign } from '../_virtual/_tslib.js';\nimport { TimeUtils } from '../utils/TimeUtils.js';\nimport { UrlString } from '../url/UrlString.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar KeyLocation;\r\n(function (KeyLocation) {\r\n KeyLocation[\"SW\"] = \"sw\";\r\n KeyLocation[\"UHW\"] = \"uhw\";\r\n})(KeyLocation || (KeyLocation = {}));\r\nvar PopTokenGenerator = /** @class */ (function () {\r\n function PopTokenGenerator(cryptoUtils) {\r\n this.cryptoUtils = cryptoUtils;\r\n }\r\n /**\r\n * Generates the req_cnf validated at the RP in the POP protocol for SHR parameters\r\n * and returns an object containing the keyid, the full req_cnf string and the req_cnf string hash\r\n * @param request\r\n * @returns\r\n */\r\n PopTokenGenerator.prototype.generateCnf = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var reqCnf, reqCnfString, _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0: return [4 /*yield*/, this.generateKid(request)];\r\n case 1:\r\n reqCnf = _b.sent();\r\n reqCnfString = this.cryptoUtils.base64Encode(JSON.stringify(reqCnf));\r\n _a = {\r\n kid: reqCnf.kid,\r\n reqCnfString: reqCnfString\r\n };\r\n return [4 /*yield*/, this.cryptoUtils.hashString(reqCnfString)];\r\n case 2: return [2 /*return*/, (_a.reqCnfHash = _b.sent(),\r\n _a)];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Generates key_id for a SHR token request\r\n * @param request\r\n * @returns\r\n */\r\n PopTokenGenerator.prototype.generateKid = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var kidThumbprint;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.cryptoUtils.getPublicKeyThumbprint(request)];\r\n case 1:\r\n kidThumbprint = _a.sent();\r\n return [2 /*return*/, {\r\n kid: kidThumbprint,\r\n xms_ksl: KeyLocation.SW\r\n }];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Signs the POP access_token with the local generated key-pair\r\n * @param accessToken\r\n * @param request\r\n * @returns\r\n */\r\n PopTokenGenerator.prototype.signPopToken = function (accessToken, keyId, request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, this.signPayload(accessToken, keyId, request)];\r\n });\r\n });\r\n };\r\n /**\r\n * Utility function to generate the signed JWT for an access_token\r\n * @param payload\r\n * @param kid\r\n * @param request\r\n * @param claims\r\n * @returns\r\n */\r\n PopTokenGenerator.prototype.signPayload = function (payload, keyId, request, claims) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var resourceRequestMethod, resourceRequestUri, shrClaims, shrNonce, resourceUrlString, resourceUrlComponents;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n resourceRequestMethod = request.resourceRequestMethod, resourceRequestUri = request.resourceRequestUri, shrClaims = request.shrClaims, shrNonce = request.shrNonce;\r\n resourceUrlString = (resourceRequestUri) ? new UrlString(resourceRequestUri) : undefined;\r\n resourceUrlComponents = resourceUrlString === null || resourceUrlString === void 0 ? void 0 : resourceUrlString.getUrlComponents();\r\n return [4 /*yield*/, this.cryptoUtils.signJwt(__assign({ at: payload, ts: TimeUtils.nowSeconds(), m: resourceRequestMethod === null || resourceRequestMethod === void 0 ? void 0 : resourceRequestMethod.toUpperCase(), u: resourceUrlComponents === null || resourceUrlComponents === void 0 ? void 0 : resourceUrlComponents.HostNameAndPort, nonce: shrNonce || this.cryptoUtils.createNewGuid(), p: resourceUrlComponents === null || resourceUrlComponents === void 0 ? void 0 : resourceUrlComponents.AbsolutePath, q: (resourceUrlComponents === null || resourceUrlComponents === void 0 ? void 0 : resourceUrlComponents.QueryString) ? [[], resourceUrlComponents.QueryString] : undefined, client_claims: shrClaims || undefined }, claims), keyId, request.correlationId)];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n };\r\n return PopTokenGenerator;\r\n}());\n\nexport { PopTokenGenerator };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * This class instance helps track the memory changes facilitating\r\n * decisions to read from and write to the persistent cache\r\n */ var TokenCacheContext = /** @class */ (function () {\r\n function TokenCacheContext(tokenCache, hasChanged) {\r\n this.cache = tokenCache;\r\n this.hasChanged = hasChanged;\r\n }\r\n Object.defineProperty(TokenCacheContext.prototype, \"cacheHasChanged\", {\r\n /**\r\n * boolean which indicates the changes in cache\r\n */\r\n get: function () {\r\n return this.hasChanged;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(TokenCacheContext.prototype, \"tokenCache\", {\r\n /**\r\n * function to retrieve the token cache\r\n */\r\n get: function () {\r\n return this.cache;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return TokenCacheContext;\r\n}());\n\nexport { TokenCacheContext };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { buildClientInfo } from '../account/ClientInfo.js';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\nimport { StringUtils } from '../utils/StringUtils.js';\nimport { ServerError } from '../error/ServerError.js';\nimport { AuthToken } from '../account/AuthToken.js';\nimport { ScopeSet } from '../request/ScopeSet.js';\nimport { AccountEntity } from '../cache/entities/AccountEntity.js';\nimport { AuthorityType } from '../authority/AuthorityType.js';\nimport { IdTokenEntity } from '../cache/entities/IdTokenEntity.js';\nimport { AccessTokenEntity } from '../cache/entities/AccessTokenEntity.js';\nimport { RefreshTokenEntity } from '../cache/entities/RefreshTokenEntity.js';\nimport { InteractionRequiredAuthError } from '../error/InteractionRequiredAuthError.js';\nimport { CacheRecord } from '../cache/entities/CacheRecord.js';\nimport { ProtocolUtils } from '../utils/ProtocolUtils.js';\nimport { Constants, AuthenticationScheme, THE_FAMILY_ID } from '../utils/Constants.js';\nimport { PopTokenGenerator } from '../crypto/PopTokenGenerator.js';\nimport { AppMetadataEntity } from '../cache/entities/AppMetadataEntity.js';\nimport { TokenCacheContext } from '../cache/persistence/TokenCacheContext.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Class that handles response parsing.\r\n */\r\nvar ResponseHandler = /** @class */ (function () {\r\n function ResponseHandler(clientId, cacheStorage, cryptoObj, logger, serializableCache, persistencePlugin) {\r\n this.clientId = clientId;\r\n this.cacheStorage = cacheStorage;\r\n this.cryptoObj = cryptoObj;\r\n this.logger = logger;\r\n this.serializableCache = serializableCache;\r\n this.persistencePlugin = persistencePlugin;\r\n }\r\n /**\r\n * Function which validates server authorization code response.\r\n * @param serverResponseHash\r\n * @param cachedState\r\n * @param cryptoObj\r\n */\r\n ResponseHandler.prototype.validateServerAuthorizationCodeResponse = function (serverResponseHash, cachedState, cryptoObj) {\r\n if (!serverResponseHash.state || !cachedState) {\r\n throw !serverResponseHash.state ? ClientAuthError.createStateNotFoundError(\"Server State\") : ClientAuthError.createStateNotFoundError(\"Cached State\");\r\n }\r\n if (decodeURIComponent(serverResponseHash.state) !== decodeURIComponent(cachedState)) {\r\n throw ClientAuthError.createStateMismatchError();\r\n }\r\n // Check for error\r\n if (serverResponseHash.error || serverResponseHash.error_description || serverResponseHash.suberror) {\r\n if (InteractionRequiredAuthError.isInteractionRequiredError(serverResponseHash.error, serverResponseHash.error_description, serverResponseHash.suberror)) {\r\n throw new InteractionRequiredAuthError(serverResponseHash.error || Constants.EMPTY_STRING, serverResponseHash.error_description, serverResponseHash.suberror);\r\n }\r\n throw new ServerError(serverResponseHash.error || Constants.EMPTY_STRING, serverResponseHash.error_description, serverResponseHash.suberror);\r\n }\r\n if (serverResponseHash.client_info) {\r\n buildClientInfo(serverResponseHash.client_info, cryptoObj);\r\n }\r\n };\r\n /**\r\n * Function which validates server authorization token response.\r\n * @param serverResponse\r\n */\r\n ResponseHandler.prototype.validateTokenResponse = function (serverResponse) {\r\n // Check for error\r\n if (serverResponse.error || serverResponse.error_description || serverResponse.suberror) {\r\n if (InteractionRequiredAuthError.isInteractionRequiredError(serverResponse.error, serverResponse.error_description, serverResponse.suberror)) {\r\n throw new InteractionRequiredAuthError(serverResponse.error, serverResponse.error_description, serverResponse.suberror);\r\n }\r\n var errString = serverResponse.error_codes + \" - [\" + serverResponse.timestamp + \"]: \" + serverResponse.error_description + \" - Correlation ID: \" + serverResponse.correlation_id + \" - Trace ID: \" + serverResponse.trace_id;\r\n throw new ServerError(serverResponse.error, errString, serverResponse.suberror);\r\n }\r\n };\r\n /**\r\n * Returns a constructed token response based on given string. Also manages the cache updates and cleanups.\r\n * @param serverTokenResponse\r\n * @param authority\r\n */\r\n ResponseHandler.prototype.handleServerTokenResponse = function (serverTokenResponse, authority, reqTimestamp, request, authCodePayload, userAssertionHash, handlingRefreshTokenResponse, forceCacheRefreshTokenResponse, serverRequestId) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var idTokenObj, authTime, requestStateObj, cacheRecord, cacheContext, key, account;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (serverTokenResponse.id_token) {\r\n idTokenObj = new AuthToken(serverTokenResponse.id_token || Constants.EMPTY_STRING, this.cryptoObj);\r\n // token nonce check (TODO: Add a warning if no nonce is given?)\r\n if (authCodePayload && !StringUtils.isEmpty(authCodePayload.nonce)) {\r\n if (idTokenObj.claims.nonce !== authCodePayload.nonce) {\r\n throw ClientAuthError.createNonceMismatchError();\r\n }\r\n }\r\n // token max_age check\r\n if (request.maxAge || (request.maxAge === 0)) {\r\n authTime = idTokenObj.claims.auth_time;\r\n if (!authTime) {\r\n throw ClientAuthError.createAuthTimeNotFoundError();\r\n }\r\n AuthToken.checkMaxAge(authTime, request.maxAge);\r\n }\r\n }\r\n // generate homeAccountId\r\n this.homeAccountIdentifier = AccountEntity.generateHomeAccountId(serverTokenResponse.client_info || Constants.EMPTY_STRING, authority.authorityType, this.logger, this.cryptoObj, idTokenObj);\r\n if (!!authCodePayload && !!authCodePayload.state) {\r\n requestStateObj = ProtocolUtils.parseRequestState(this.cryptoObj, authCodePayload.state);\r\n }\r\n // Add keyId from request to serverTokenResponse if defined\r\n serverTokenResponse.key_id = serverTokenResponse.key_id || request.sshKid || undefined;\r\n cacheRecord = this.generateCacheRecord(serverTokenResponse, authority, reqTimestamp, request, idTokenObj, userAssertionHash, authCodePayload);\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, , 5, 8]);\r\n if (!(this.persistencePlugin && this.serializableCache)) return [3 /*break*/, 3];\r\n this.logger.verbose(\"Persistence enabled, calling beforeCacheAccess\");\r\n cacheContext = new TokenCacheContext(this.serializableCache, true);\r\n return [4 /*yield*/, this.persistencePlugin.beforeCacheAccess(cacheContext)];\r\n case 2:\r\n _a.sent();\r\n _a.label = 3;\r\n case 3:\r\n /*\r\n * When saving a refreshed tokens to the cache, it is expected that the account that was used is present in the cache.\r\n * If not present, we should return null, as it's the case that another application called removeAccount in between\r\n * the calls to getAllAccounts and acquireTokenSilent. We should not overwrite that removal, unless explicitly flagged by\r\n * the developer, as in the case of refresh token flow used in ADAL Node to MSAL Node migration.\r\n */\r\n if (handlingRefreshTokenResponse && !forceCacheRefreshTokenResponse && cacheRecord.account) {\r\n key = cacheRecord.account.generateAccountKey();\r\n account = this.cacheStorage.getAccount(key);\r\n if (!account) {\r\n this.logger.warning(\"Account used to refresh tokens not in persistence, refreshed tokens will not be stored in the cache\");\r\n return [2 /*return*/, ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenObj, requestStateObj, undefined, serverRequestId)];\r\n }\r\n }\r\n return [4 /*yield*/, this.cacheStorage.saveCacheRecord(cacheRecord)];\r\n case 4:\r\n _a.sent();\r\n return [3 /*break*/, 8];\r\n case 5:\r\n if (!(this.persistencePlugin && this.serializableCache && cacheContext)) return [3 /*break*/, 7];\r\n this.logger.verbose(\"Persistence enabled, calling afterCacheAccess\");\r\n return [4 /*yield*/, this.persistencePlugin.afterCacheAccess(cacheContext)];\r\n case 6:\r\n _a.sent();\r\n _a.label = 7;\r\n case 7: return [7 /*endfinally*/];\r\n case 8: return [2 /*return*/, ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenObj, requestStateObj, serverTokenResponse.spa_code, serverRequestId)];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Generates CacheRecord\r\n * @param serverTokenResponse\r\n * @param idTokenObj\r\n * @param authority\r\n */\r\n ResponseHandler.prototype.generateCacheRecord = function (serverTokenResponse, authority, reqTimestamp, request, idTokenObj, userAssertionHash, authCodePayload) {\r\n var env = authority.getPreferredCache();\r\n if (StringUtils.isEmpty(env)) {\r\n throw ClientAuthError.createInvalidCacheEnvironmentError();\r\n }\r\n // IdToken: non AAD scenarios can have empty realm\r\n var cachedIdToken;\r\n var cachedAccount;\r\n if (!StringUtils.isEmpty(serverTokenResponse.id_token) && !!idTokenObj) {\r\n cachedIdToken = IdTokenEntity.createIdTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.id_token || Constants.EMPTY_STRING, this.clientId, idTokenObj.claims.tid || Constants.EMPTY_STRING);\r\n cachedAccount = this.generateAccountEntity(serverTokenResponse, idTokenObj, authority, authCodePayload);\r\n }\r\n // AccessToken\r\n var cachedAccessToken = null;\r\n if (!StringUtils.isEmpty(serverTokenResponse.access_token)) {\r\n // If scopes not returned in server response, use request scopes\r\n var responseScopes = serverTokenResponse.scope ? ScopeSet.fromString(serverTokenResponse.scope) : new ScopeSet(request.scopes || []);\r\n /*\r\n * Use timestamp calculated before request\r\n * Server may return timestamps as strings, parse to numbers if so.\r\n */\r\n var expiresIn = (typeof serverTokenResponse.expires_in === \"string\" ? parseInt(serverTokenResponse.expires_in, 10) : serverTokenResponse.expires_in) || 0;\r\n var extExpiresIn = (typeof serverTokenResponse.ext_expires_in === \"string\" ? parseInt(serverTokenResponse.ext_expires_in, 10) : serverTokenResponse.ext_expires_in) || 0;\r\n var refreshIn = (typeof serverTokenResponse.refresh_in === \"string\" ? parseInt(serverTokenResponse.refresh_in, 10) : serverTokenResponse.refresh_in) || undefined;\r\n var tokenExpirationSeconds = reqTimestamp + expiresIn;\r\n var extendedTokenExpirationSeconds = tokenExpirationSeconds + extExpiresIn;\r\n var refreshOnSeconds = refreshIn && refreshIn > 0 ? reqTimestamp + refreshIn : undefined;\r\n // non AAD scenarios can have empty realm\r\n cachedAccessToken = AccessTokenEntity.createAccessTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.access_token || Constants.EMPTY_STRING, this.clientId, idTokenObj ? idTokenObj.claims.tid || Constants.EMPTY_STRING : authority.tenant, responseScopes.printScopes(), tokenExpirationSeconds, extendedTokenExpirationSeconds, this.cryptoObj, refreshOnSeconds, serverTokenResponse.token_type, userAssertionHash, serverTokenResponse.key_id, request.claims, request.requestedClaimsHash);\r\n }\r\n // refreshToken\r\n var cachedRefreshToken = null;\r\n if (!StringUtils.isEmpty(serverTokenResponse.refresh_token)) {\r\n cachedRefreshToken = RefreshTokenEntity.createRefreshTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.refresh_token || Constants.EMPTY_STRING, this.clientId, serverTokenResponse.foci, userAssertionHash);\r\n }\r\n // appMetadata\r\n var cachedAppMetadata = null;\r\n if (!StringUtils.isEmpty(serverTokenResponse.foci)) {\r\n cachedAppMetadata = AppMetadataEntity.createAppMetadataEntity(this.clientId, env, serverTokenResponse.foci);\r\n }\r\n return new CacheRecord(cachedAccount, cachedIdToken, cachedAccessToken, cachedRefreshToken, cachedAppMetadata);\r\n };\r\n /**\r\n * Generate Account\r\n * @param serverTokenResponse\r\n * @param idToken\r\n * @param authority\r\n */\r\n ResponseHandler.prototype.generateAccountEntity = function (serverTokenResponse, idToken, authority, authCodePayload) {\r\n var authorityType = authority.authorityType;\r\n var cloudGraphHostName = authCodePayload ? authCodePayload.cloud_graph_host_name : Constants.EMPTY_STRING;\r\n var msGraphhost = authCodePayload ? authCodePayload.msgraph_host : Constants.EMPTY_STRING;\r\n // ADFS does not require client_info in the response\r\n if (authorityType === AuthorityType.Adfs) {\r\n this.logger.verbose(\"Authority type is ADFS, creating ADFS account\");\r\n return AccountEntity.createGenericAccount(this.homeAccountIdentifier, idToken, authority, cloudGraphHostName, msGraphhost);\r\n }\r\n // This fallback applies to B2C as well as they fall under an AAD account type.\r\n if (StringUtils.isEmpty(serverTokenResponse.client_info) && authority.protocolMode === \"AAD\") {\r\n throw ClientAuthError.createClientInfoEmptyError();\r\n }\r\n return serverTokenResponse.client_info ?\r\n AccountEntity.createAccount(serverTokenResponse.client_info, this.homeAccountIdentifier, idToken, authority, cloudGraphHostName, msGraphhost) :\r\n AccountEntity.createGenericAccount(this.homeAccountIdentifier, idToken, authority, cloudGraphHostName, msGraphhost);\r\n };\r\n /**\r\n * Creates an @AuthenticationResult from @CacheRecord , @IdToken , and a boolean that states whether or not the result is from cache.\r\n *\r\n * Optionally takes a state string that is set as-is in the response.\r\n *\r\n * @param cacheRecord\r\n * @param idTokenObj\r\n * @param fromTokenCache\r\n * @param stateString\r\n */\r\n ResponseHandler.generateAuthenticationResult = function (cryptoObj, authority, cacheRecord, fromTokenCache, request, idTokenObj, requestState, code, requestId) {\r\n var _a, _b, _c;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var accessToken, responseScopes, expiresOn, extExpiresOn, familyId, popTokenGenerator, _d, secret, keyId, uid, tid;\r\n return __generator(this, function (_e) {\r\n switch (_e.label) {\r\n case 0:\r\n accessToken = Constants.EMPTY_STRING;\r\n responseScopes = [];\r\n expiresOn = null;\r\n familyId = Constants.EMPTY_STRING;\r\n if (!cacheRecord.accessToken) return [3 /*break*/, 4];\r\n if (!(cacheRecord.accessToken.tokenType === AuthenticationScheme.POP)) return [3 /*break*/, 2];\r\n popTokenGenerator = new PopTokenGenerator(cryptoObj);\r\n _d = cacheRecord.accessToken, secret = _d.secret, keyId = _d.keyId;\r\n if (!keyId) {\r\n throw ClientAuthError.createKeyIdMissingError();\r\n }\r\n return [4 /*yield*/, popTokenGenerator.signPopToken(secret, keyId, request)];\r\n case 1:\r\n accessToken = _e.sent();\r\n return [3 /*break*/, 3];\r\n case 2:\r\n accessToken = cacheRecord.accessToken.secret;\r\n _e.label = 3;\r\n case 3:\r\n responseScopes = ScopeSet.fromString(cacheRecord.accessToken.target).asArray();\r\n expiresOn = new Date(Number(cacheRecord.accessToken.expiresOn) * 1000);\r\n extExpiresOn = new Date(Number(cacheRecord.accessToken.extendedExpiresOn) * 1000);\r\n _e.label = 4;\r\n case 4:\r\n if (cacheRecord.appMetadata) {\r\n familyId = cacheRecord.appMetadata.familyId === THE_FAMILY_ID ? THE_FAMILY_ID : Constants.EMPTY_STRING;\r\n }\r\n uid = (idTokenObj === null || idTokenObj === void 0 ? void 0 : idTokenObj.claims.oid) || (idTokenObj === null || idTokenObj === void 0 ? void 0 : idTokenObj.claims.sub) || Constants.EMPTY_STRING;\r\n tid = (idTokenObj === null || idTokenObj === void 0 ? void 0 : idTokenObj.claims.tid) || Constants.EMPTY_STRING;\r\n return [2 /*return*/, {\r\n authority: authority.canonicalAuthority,\r\n uniqueId: uid,\r\n tenantId: tid,\r\n scopes: responseScopes,\r\n account: cacheRecord.account ? cacheRecord.account.getAccountInfo() : null,\r\n idToken: idTokenObj ? idTokenObj.rawToken : Constants.EMPTY_STRING,\r\n idTokenClaims: idTokenObj ? idTokenObj.claims : {},\r\n accessToken: accessToken,\r\n fromCache: fromTokenCache,\r\n expiresOn: expiresOn,\r\n correlationId: request.correlationId,\r\n requestId: requestId || Constants.EMPTY_STRING,\r\n extExpiresOn: extExpiresOn,\r\n familyId: familyId,\r\n tokenType: ((_a = cacheRecord.accessToken) === null || _a === void 0 ? void 0 : _a.tokenType) || Constants.EMPTY_STRING,\r\n state: requestState ? requestState.userRequestState : Constants.EMPTY_STRING,\r\n cloudGraphHostName: ((_b = cacheRecord.account) === null || _b === void 0 ? void 0 : _b.cloudGraphHostName) || Constants.EMPTY_STRING,\r\n msGraphHost: ((_c = cacheRecord.account) === null || _c === void 0 ? void 0 : _c.msGraphHost) || Constants.EMPTY_STRING,\r\n code: code,\r\n fromNativeBroker: false,\r\n }];\r\n }\r\n });\r\n });\r\n };\r\n return ResponseHandler;\r\n}());\n\nexport { ResponseHandler };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\nimport { __extends, __awaiter, __generator, __assign, __spreadArrays } from '../_virtual/_tslib.js';\nimport { BaseClient } from './BaseClient.js';\nimport { RequestParameterBuilder } from '../request/RequestParameterBuilder.js';\nimport { Separators, AADServerParamKeys, AuthenticationScheme, GrantType, PromptValue, HeaderNames } from '../utils/Constants.js';\nimport { ResponseHandler } from '../response/ResponseHandler.js';\nimport { StringUtils } from '../utils/StringUtils.js';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\nimport { UrlString } from '../url/UrlString.js';\nimport { PopTokenGenerator } from '../crypto/PopTokenGenerator.js';\nimport { TimeUtils } from '../utils/TimeUtils.js';\nimport { buildClientInfo, buildClientInfoFromHomeAccountId } from '../account/ClientInfo.js';\nimport { CcsCredentialType } from '../account/CcsCredential.js';\nimport { ClientConfigurationError } from '../error/ClientConfigurationError.js';\nimport { RequestValidator } from '../request/RequestValidator.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Oauth2.0 Authorization Code client\r\n */\r\nvar AuthorizationCodeClient = /** @class */ (function (_super) {\r\n __extends(AuthorizationCodeClient, _super);\r\n function AuthorizationCodeClient(configuration, performanceClient) {\r\n var _this = _super.call(this, configuration, performanceClient) || this;\r\n // Flag to indicate if client is for hybrid spa auth code redemption\r\n _this.includeRedirectUri = true;\r\n return _this;\r\n }\r\n /**\r\n * Creates the URL of the authorization request letting the user input credentials and consent to the\r\n * application. The URL target the /authorize endpoint of the authority configured in the\r\n * application object.\r\n *\r\n * Once the user inputs their credentials and consents, the authority will send a response to the redirect URI\r\n * sent in the request and should contain an authorization code, which can then be used to acquire tokens via\r\n * acquireToken(AuthorizationCodeRequest)\r\n * @param request\r\n */\r\n AuthorizationCodeClient.prototype.getAuthCodeUrl = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var queryString;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.createAuthCodeUrlQueryString(request)];\r\n case 1:\r\n queryString = _a.sent();\r\n return [2 /*return*/, UrlString.appendQueryString(this.authority.authorizationEndpoint, queryString)];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * API to acquire a token in exchange of 'authorization_code` acquired by the user in the first leg of the\r\n * authorization_code_grant\r\n * @param request\r\n */\r\n AuthorizationCodeClient.prototype.acquireToken = function (request, authCodePayload) {\r\n var _a, _b, _c;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var atsMeasurement, reqTimestamp, response, requestId, httpVerAuthority, responseHandler;\r\n var _this = this;\r\n return __generator(this, function (_d) {\r\n switch (_d.label) {\r\n case 0:\r\n atsMeasurement = (_a = this.performanceClient) === null || _a === void 0 ? void 0 : _a.startMeasurement(\"AuthCodeClientAcquireToken\", request.correlationId);\r\n this.logger.info(\"in acquireToken call in auth-code client\");\r\n if (!request || StringUtils.isEmpty(request.code)) {\r\n throw ClientAuthError.createTokenRequestCannotBeMadeError();\r\n }\r\n reqTimestamp = TimeUtils.nowSeconds();\r\n return [4 /*yield*/, this.executeTokenRequest(this.authority, request)];\r\n case 1:\r\n response = _d.sent();\r\n requestId = (_b = response.headers) === null || _b === void 0 ? void 0 : _b[HeaderNames.X_MS_REQUEST_ID];\r\n httpVerAuthority = (_c = response.headers) === null || _c === void 0 ? void 0 : _c[HeaderNames.X_MS_HTTP_VERSION];\r\n if (httpVerAuthority) {\r\n atsMeasurement === null || atsMeasurement === void 0 ? void 0 : atsMeasurement.addStaticFields({\r\n httpVerAuthority: httpVerAuthority\r\n });\r\n }\r\n responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin);\r\n // Validate response. This function throws a server error if an error is returned by the server.\r\n responseHandler.validateTokenResponse(response.body);\r\n return [2 /*return*/, responseHandler.handleServerTokenResponse(response.body, this.authority, reqTimestamp, request, authCodePayload, undefined, undefined, undefined, requestId).then(function (result) {\r\n atsMeasurement === null || atsMeasurement === void 0 ? void 0 : atsMeasurement.endMeasurement({\r\n success: true\r\n });\r\n return result;\r\n })\r\n .catch(function (error) {\r\n _this.logger.verbose(\"Error in fetching token in ACC\", request.correlationId);\r\n atsMeasurement === null || atsMeasurement === void 0 ? void 0 : atsMeasurement.endMeasurement({\r\n errorCode: error.errorCode,\r\n subErrorCode: error.subError,\r\n success: false\r\n });\r\n throw error;\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Handles the hash fragment response from public client code request. Returns a code response used by\r\n * the client to exchange for a token in acquireToken.\r\n * @param hashFragment\r\n */\r\n AuthorizationCodeClient.prototype.handleFragmentResponse = function (hashFragment, cachedState) {\r\n // Handle responses.\r\n var responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, null, null);\r\n // Deserialize hash fragment response parameters.\r\n var hashUrlString = new UrlString(hashFragment);\r\n // Deserialize hash fragment response parameters.\r\n var serverParams = UrlString.getDeserializedHash(hashUrlString.getHash());\r\n // Get code response\r\n responseHandler.validateServerAuthorizationCodeResponse(serverParams, cachedState, this.cryptoUtils);\r\n // throw when there is no auth code in the response\r\n if (!serverParams.code) {\r\n throw ClientAuthError.createNoAuthCodeInServerResponseError();\r\n }\r\n return __assign(__assign({}, serverParams), { \r\n // Code param is optional in ServerAuthorizationCodeResponse but required in AuthorizationCodePaylod\r\n code: serverParams.code });\r\n };\r\n /**\r\n * Used to log out the current user, and redirect the user to the postLogoutRedirectUri.\r\n * Default behaviour is to redirect the user to `window.location.href`.\r\n * @param authorityUri\r\n */\r\n AuthorizationCodeClient.prototype.getLogoutUri = function (logoutRequest) {\r\n // Throw error if logoutRequest is null/undefined\r\n if (!logoutRequest) {\r\n throw ClientConfigurationError.createEmptyLogoutRequestError();\r\n }\r\n var queryString = this.createLogoutUrlQueryString(logoutRequest);\r\n // Construct logout URI\r\n return UrlString.appendQueryString(this.authority.endSessionEndpoint, queryString);\r\n };\r\n /**\r\n * Executes POST request to token endpoint\r\n * @param authority\r\n * @param request\r\n */\r\n AuthorizationCodeClient.prototype.executeTokenRequest = function (authority, request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var thumbprint, requestBody, queryParameters, ccsCredential, clientInfo, headers, endpoint;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n thumbprint = {\r\n clientId: this.config.authOptions.clientId,\r\n authority: authority.canonicalAuthority,\r\n scopes: request.scopes,\r\n claims: request.claims,\r\n authenticationScheme: request.authenticationScheme,\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n resourceRequestUri: request.resourceRequestUri,\r\n shrClaims: request.shrClaims,\r\n sshKid: request.sshKid\r\n };\r\n return [4 /*yield*/, this.createTokenRequestBody(request)];\r\n case 1:\r\n requestBody = _a.sent();\r\n queryParameters = this.createTokenQueryParameters(request);\r\n ccsCredential = undefined;\r\n if (request.clientInfo) {\r\n try {\r\n clientInfo = buildClientInfo(request.clientInfo, this.cryptoUtils);\r\n ccsCredential = {\r\n credential: \"\" + clientInfo.uid + Separators.CLIENT_INFO_SEPARATOR + clientInfo.utid,\r\n type: CcsCredentialType.HOME_ACCOUNT_ID\r\n };\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse client info for CCS Header: \" + e);\r\n }\r\n }\r\n headers = this.createTokenRequestHeaders(ccsCredential || request.ccsCredential);\r\n endpoint = StringUtils.isEmpty(queryParameters) ? authority.tokenEndpoint : authority.tokenEndpoint + \"?\" + queryParameters;\r\n return [2 /*return*/, this.executePostToTokenEndpoint(endpoint, requestBody, headers, thumbprint)];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Creates query string for the /token request\r\n * @param request\r\n */\r\n AuthorizationCodeClient.prototype.createTokenQueryParameters = function (request) {\r\n var parameterBuilder = new RequestParameterBuilder();\r\n if (request.tokenQueryParameters) {\r\n parameterBuilder.addExtraQueryParameters(request.tokenQueryParameters);\r\n }\r\n return parameterBuilder.createQueryString();\r\n };\r\n /**\r\n * Generates a map for all the params to be sent to the service\r\n * @param request\r\n */\r\n AuthorizationCodeClient.prototype.createTokenRequestBody = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var parameterBuilder, clientAssertion, popTokenGenerator, reqCnfData, correlationId, ccsCred, clientInfo, clientInfo;\r\n var _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n parameterBuilder = new RequestParameterBuilder();\r\n parameterBuilder.addClientId(this.config.authOptions.clientId);\r\n /*\r\n * For hybrid spa flow, there will be a code but no verifier\r\n * In this scenario, don't include redirect uri as auth code will not be bound to redirect URI\r\n */\r\n if (!this.includeRedirectUri) {\r\n // Just validate\r\n RequestValidator.validateRedirectUri(request.redirectUri);\r\n }\r\n else {\r\n // Validate and include redirect uri\r\n parameterBuilder.addRedirectUri(request.redirectUri);\r\n }\r\n // Add scope array, parameter builder will add default scopes and dedupe\r\n parameterBuilder.addScopes(request.scopes);\r\n // add code: user set, not validated\r\n parameterBuilder.addAuthorizationCode(request.code);\r\n // Add library metadata\r\n parameterBuilder.addLibraryInfo(this.config.libraryInfo);\r\n parameterBuilder.addApplicationTelemetry(this.config.telemetry.application);\r\n parameterBuilder.addThrottling();\r\n if (this.serverTelemetryManager) {\r\n parameterBuilder.addServerTelemetry(this.serverTelemetryManager);\r\n }\r\n // add code_verifier if passed\r\n if (request.codeVerifier) {\r\n parameterBuilder.addCodeVerifier(request.codeVerifier);\r\n }\r\n if (this.config.clientCredentials.clientSecret) {\r\n parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret);\r\n }\r\n if (this.config.clientCredentials.clientAssertion) {\r\n clientAssertion = this.config.clientCredentials.clientAssertion;\r\n parameterBuilder.addClientAssertion(clientAssertion.assertion);\r\n parameterBuilder.addClientAssertionType(clientAssertion.assertionType);\r\n }\r\n parameterBuilder.addGrantType(GrantType.AUTHORIZATION_CODE_GRANT);\r\n parameterBuilder.addClientInfo();\r\n if (!(request.authenticationScheme === AuthenticationScheme.POP)) return [3 /*break*/, 2];\r\n popTokenGenerator = new PopTokenGenerator(this.cryptoUtils);\r\n return [4 /*yield*/, popTokenGenerator.generateCnf(request)];\r\n case 1:\r\n reqCnfData = _b.sent();\r\n // SPA PoP requires full Base64Url encoded req_cnf string (unhashed)\r\n parameterBuilder.addPopToken(reqCnfData.reqCnfString);\r\n return [3 /*break*/, 3];\r\n case 2:\r\n if (request.authenticationScheme === AuthenticationScheme.SSH) {\r\n if (request.sshJwk) {\r\n parameterBuilder.addSshJwk(request.sshJwk);\r\n }\r\n else {\r\n throw ClientConfigurationError.createMissingSshJwkError();\r\n }\r\n }\r\n _b.label = 3;\r\n case 3:\r\n correlationId = request.correlationId || this.config.cryptoInterface.createNewGuid();\r\n parameterBuilder.addCorrelationId(correlationId);\r\n if (!StringUtils.isEmptyObj(request.claims) || this.config.authOptions.clientCapabilities && this.config.authOptions.clientCapabilities.length > 0) {\r\n parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n ccsCred = undefined;\r\n if (request.clientInfo) {\r\n try {\r\n clientInfo = buildClientInfo(request.clientInfo, this.cryptoUtils);\r\n ccsCred = {\r\n credential: \"\" + clientInfo.uid + Separators.CLIENT_INFO_SEPARATOR + clientInfo.utid,\r\n type: CcsCredentialType.HOME_ACCOUNT_ID\r\n };\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse client info for CCS Header: \" + e);\r\n }\r\n }\r\n else {\r\n ccsCred = request.ccsCredential;\r\n }\r\n // Adds these as parameters in the request instead of headers to prevent CORS preflight request\r\n if (this.config.systemOptions.preventCorsPreflight && ccsCred) {\r\n switch (ccsCred.type) {\r\n case CcsCredentialType.HOME_ACCOUNT_ID:\r\n try {\r\n clientInfo = buildClientInfoFromHomeAccountId(ccsCred.credential);\r\n parameterBuilder.addCcsOid(clientInfo);\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse home account ID for CCS Header: \" + e);\r\n }\r\n break;\r\n case CcsCredentialType.UPN:\r\n parameterBuilder.addCcsUpn(ccsCred.credential);\r\n break;\r\n }\r\n }\r\n if (request.tokenBodyParameters) {\r\n parameterBuilder.addExtraQueryParameters(request.tokenBodyParameters);\r\n }\r\n // Add hybrid spa parameters if not already provided\r\n if (request.enableSpaAuthorizationCode && (!request.tokenBodyParameters || !request.tokenBodyParameters[AADServerParamKeys.RETURN_SPA_CODE])) {\r\n parameterBuilder.addExtraQueryParameters((_a = {},\r\n _a[AADServerParamKeys.RETURN_SPA_CODE] = \"1\",\r\n _a));\r\n }\r\n return [2 /*return*/, parameterBuilder.createQueryString()];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * This API validates the `AuthorizationCodeUrlRequest` and creates a URL\r\n * @param request\r\n */\r\n AuthorizationCodeClient.prototype.createAuthCodeUrlQueryString = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var parameterBuilder, requestScopes, correlationId, accountSid, accountLoginHintClaim, clientInfo, clientInfo, clientInfo, popTokenGenerator, reqCnfData;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n parameterBuilder = new RequestParameterBuilder();\r\n parameterBuilder.addClientId(this.config.authOptions.clientId);\r\n requestScopes = __spreadArrays(request.scopes || [], request.extraScopesToConsent || []);\r\n parameterBuilder.addScopes(requestScopes);\r\n // validate the redirectUri (to be a non null value)\r\n parameterBuilder.addRedirectUri(request.redirectUri);\r\n correlationId = request.correlationId || this.config.cryptoInterface.createNewGuid();\r\n parameterBuilder.addCorrelationId(correlationId);\r\n // add response_mode. If not passed in it defaults to query.\r\n parameterBuilder.addResponseMode(request.responseMode);\r\n // add response_type = code\r\n parameterBuilder.addResponseTypeCode();\r\n // add library info parameters\r\n parameterBuilder.addLibraryInfo(this.config.libraryInfo);\r\n parameterBuilder.addApplicationTelemetry(this.config.telemetry.application);\r\n // add client_info=1\r\n parameterBuilder.addClientInfo();\r\n if (request.codeChallenge && request.codeChallengeMethod) {\r\n parameterBuilder.addCodeChallengeParams(request.codeChallenge, request.codeChallengeMethod);\r\n }\r\n if (request.prompt) {\r\n parameterBuilder.addPrompt(request.prompt);\r\n }\r\n if (request.domainHint) {\r\n parameterBuilder.addDomainHint(request.domainHint);\r\n }\r\n // Add sid or loginHint with preference for login_hint claim (in request) -> sid -> loginHint (upn/email) -> username of AccountInfo object\r\n if (request.prompt !== PromptValue.SELECT_ACCOUNT) {\r\n // AAD will throw if prompt=select_account is passed with an account hint\r\n if (request.sid && request.prompt === PromptValue.NONE) {\r\n // SessionID is only used in silent calls\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Prompt is none, adding sid from request\");\r\n parameterBuilder.addSid(request.sid);\r\n }\r\n else if (request.account) {\r\n accountSid = this.extractAccountSid(request.account);\r\n accountLoginHintClaim = this.extractLoginHint(request.account);\r\n // If login_hint claim is present, use it over sid/username\r\n if (accountLoginHintClaim) {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: login_hint claim present on account\");\r\n parameterBuilder.addLoginHint(accountLoginHintClaim);\r\n try {\r\n clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId);\r\n parameterBuilder.addCcsOid(clientInfo);\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header\");\r\n }\r\n }\r\n else if (accountSid && request.prompt === PromptValue.NONE) {\r\n /*\r\n * If account and loginHint are provided, we will check account first for sid before adding loginHint\r\n * SessionId is only used in silent calls\r\n */\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Prompt is none, adding sid from account\");\r\n parameterBuilder.addSid(accountSid);\r\n try {\r\n clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId);\r\n parameterBuilder.addCcsOid(clientInfo);\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header\");\r\n }\r\n }\r\n else if (request.loginHint) {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Adding login_hint from request\");\r\n parameterBuilder.addLoginHint(request.loginHint);\r\n parameterBuilder.addCcsUpn(request.loginHint);\r\n }\r\n else if (request.account.username) {\r\n // Fallback to account username if provided\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Adding login_hint from account\");\r\n parameterBuilder.addLoginHint(request.account.username);\r\n try {\r\n clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId);\r\n parameterBuilder.addCcsOid(clientInfo);\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header\");\r\n }\r\n }\r\n }\r\n else if (request.loginHint) {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: No account, adding login_hint from request\");\r\n parameterBuilder.addLoginHint(request.loginHint);\r\n parameterBuilder.addCcsUpn(request.loginHint);\r\n }\r\n }\r\n else {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Prompt is select_account, ignoring account hints\");\r\n }\r\n if (request.nonce) {\r\n parameterBuilder.addNonce(request.nonce);\r\n }\r\n if (request.state) {\r\n parameterBuilder.addState(request.state);\r\n }\r\n if (!StringUtils.isEmpty(request.claims) || this.config.authOptions.clientCapabilities && this.config.authOptions.clientCapabilities.length > 0) {\r\n parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n if (request.extraQueryParameters) {\r\n parameterBuilder.addExtraQueryParameters(request.extraQueryParameters);\r\n }\r\n if (!request.nativeBroker) return [3 /*break*/, 2];\r\n // signal ests that this is a WAM call\r\n parameterBuilder.addNativeBroker();\r\n if (!(request.authenticationScheme === AuthenticationScheme.POP)) return [3 /*break*/, 2];\r\n popTokenGenerator = new PopTokenGenerator(this.cryptoUtils);\r\n return [4 /*yield*/, popTokenGenerator.generateCnf(request)];\r\n case 1:\r\n reqCnfData = _a.sent();\r\n parameterBuilder.addPopToken(reqCnfData.reqCnfHash);\r\n _a.label = 2;\r\n case 2: return [2 /*return*/, parameterBuilder.createQueryString()];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * This API validates the `EndSessionRequest` and creates a URL\r\n * @param request\r\n */\r\n AuthorizationCodeClient.prototype.createLogoutUrlQueryString = function (request) {\r\n var parameterBuilder = new RequestParameterBuilder();\r\n if (request.postLogoutRedirectUri) {\r\n parameterBuilder.addPostLogoutRedirectUri(request.postLogoutRedirectUri);\r\n }\r\n if (request.correlationId) {\r\n parameterBuilder.addCorrelationId(request.correlationId);\r\n }\r\n if (request.idTokenHint) {\r\n parameterBuilder.addIdTokenHint(request.idTokenHint);\r\n }\r\n if (request.state) {\r\n parameterBuilder.addState(request.state);\r\n }\r\n if (request.logoutHint) {\r\n parameterBuilder.addLogoutHint(request.logoutHint);\r\n }\r\n if (request.extraQueryParameters) {\r\n parameterBuilder.addExtraQueryParameters(request.extraQueryParameters);\r\n }\r\n return parameterBuilder.createQueryString();\r\n };\r\n /**\r\n * Helper to get sid from account. Returns null if idTokenClaims are not present or sid is not present.\r\n * @param account\r\n */\r\n AuthorizationCodeClient.prototype.extractAccountSid = function (account) {\r\n var _a;\r\n return ((_a = account.idTokenClaims) === null || _a === void 0 ? void 0 : _a.sid) || null;\r\n };\r\n AuthorizationCodeClient.prototype.extractLoginHint = function (account) {\r\n var _a;\r\n return ((_a = account.idTokenClaims) === null || _a === void 0 ? void 0 : _a.login_hint) || null;\r\n };\r\n return AuthorizationCodeClient;\r\n}(BaseClient));\n\nexport { AuthorizationCodeClient };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nfunction isOpenIdConfigResponse(response) {\r\n return (response.hasOwnProperty(\"authorization_endpoint\") &&\r\n response.hasOwnProperty(\"token_endpoint\") &&\r\n response.hasOwnProperty(\"issuer\") &&\r\n response.hasOwnProperty(\"jwks_uri\"));\r\n}\n\nexport { isOpenIdConfigResponse };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar rawMetdataJSON = { \"endpointMetadata\": { \"https://login.microsoftonline.com/common/\": { \"token_endpoint\": \"https://login.microsoftonline.com/common/oauth2/v2.0/token\", \"token_endpoint_auth_methods_supported\": [\"client_secret_post\", \"private_key_jwt\", \"client_secret_basic\"], \"jwks_uri\": \"https://login.microsoftonline.com/common/discovery/v2.0/keys\", \"response_modes_supported\": [\"query\", \"fragment\", \"form_post\"], \"subject_types_supported\": [\"pairwise\"], \"id_token_signing_alg_values_supported\": [\"RS256\"], \"response_types_supported\": [\"code\", \"id_token\", \"code id_token\", \"id_token token\"], \"scopes_supported\": [\"openid\", \"profile\", \"email\", \"offline_access\"], \"issuer\": \"https://login.microsoftonline.com/{tenantid}/v2.0\", \"request_uri_parameter_supported\": false, \"userinfo_endpoint\": \"https://graph.microsoft.com/oidc/userinfo\", \"authorization_endpoint\": \"https://login.microsoftonline.com/common/oauth2/v2.0/authorize\", \"device_authorization_endpoint\": \"https://login.microsoftonline.com/common/oauth2/v2.0/devicecode\", \"http_logout_supported\": true, \"frontchannel_logout_supported\": true, \"end_session_endpoint\": \"https://login.microsoftonline.com/common/oauth2/v2.0/logout\", \"claims_supported\": [\"sub\", \"iss\", \"cloud_instance_name\", \"cloud_instance_host_name\", \"cloud_graph_host_name\", \"msgraph_host\", \"aud\", \"exp\", \"iat\", \"auth_time\", \"acr\", \"nonce\", \"preferred_username\", \"name\", \"tid\", \"ver\", \"at_hash\", \"c_hash\", \"email\"], \"kerberos_endpoint\": \"https://login.microsoftonline.com/common/kerberos\", \"tenant_region_scope\": null, \"cloud_instance_name\": \"microsoftonline.com\", \"cloud_graph_host_name\": \"graph.windows.net\", \"msgraph_host\": \"graph.microsoft.com\", \"rbac_url\": \"https://pas.windows.net\" }, \"https://login.chinacloudapi.cn/common/\": { \"token_endpoint\": \"https://login.chinacloudapi.cn/common/oauth2/v2.0/token\", \"token_endpoint_auth_methods_supported\": [\"client_secret_post\", \"private_key_jwt\", \"client_secret_basic\"], \"jwks_uri\": \"https://login.chinacloudapi.cn/common/discovery/v2.0/keys\", \"response_modes_supported\": [\"query\", \"fragment\", \"form_post\"], \"subject_types_supported\": [\"pairwise\"], \"id_token_signing_alg_values_supported\": [\"RS256\"], \"response_types_supported\": [\"code\", \"id_token\", \"code id_token\", \"id_token token\"], \"scopes_supported\": [\"openid\", \"profile\", \"email\", \"offline_access\"], \"issuer\": \"https://login.partner.microsoftonline.cn/{tenantid}/v2.0\", \"request_uri_parameter_supported\": false, \"userinfo_endpoint\": \"https://microsoftgraph.chinacloudapi.cn/oidc/userinfo\", \"authorization_endpoint\": \"https://login.chinacloudapi.cn/common/oauth2/v2.0/authorize\", \"device_authorization_endpoint\": \"https://login.chinacloudapi.cn/common/oauth2/v2.0/devicecode\", \"http_logout_supported\": true, \"frontchannel_logout_supported\": true, \"end_session_endpoint\": \"https://login.chinacloudapi.cn/common/oauth2/v2.0/logout\", \"claims_supported\": [\"sub\", \"iss\", \"cloud_instance_name\", \"cloud_instance_host_name\", \"cloud_graph_host_name\", \"msgraph_host\", \"aud\", \"exp\", \"iat\", \"auth_time\", \"acr\", \"nonce\", \"preferred_username\", \"name\", \"tid\", \"ver\", \"at_hash\", \"c_hash\", \"email\"], \"kerberos_endpoint\": \"https://login.chinacloudapi.cn/common/kerberos\", \"tenant_region_scope\": null, \"cloud_instance_name\": \"partner.microsoftonline.cn\", \"cloud_graph_host_name\": \"graph.chinacloudapi.cn\", \"msgraph_host\": \"microsoftgraph.chinacloudapi.cn\", \"rbac_url\": \"https://pas.chinacloudapi.cn\" }, \"https://login.microsoftonline.us/common/\": { \"token_endpoint\": \"https://login.microsoftonline.us/common/oauth2/v2.0/token\", \"token_endpoint_auth_methods_supported\": [\"client_secret_post\", \"private_key_jwt\", \"client_secret_basic\"], \"jwks_uri\": \"https://login.microsoftonline.us/common/discovery/v2.0/keys\", \"response_modes_supported\": [\"query\", \"fragment\", \"form_post\"], \"subject_types_supported\": [\"pairwise\"], \"id_token_signing_alg_values_supported\": [\"RS256\"], \"response_types_supported\": [\"code\", \"id_token\", \"code id_token\", \"id_token token\"], \"scopes_supported\": [\"openid\", \"profile\", \"email\", \"offline_access\"], \"issuer\": \"https://login.microsoftonline.us/{tenantid}/v2.0\", \"request_uri_parameter_supported\": false, \"userinfo_endpoint\": \"https://graph.microsoft.com/oidc/userinfo\", \"authorization_endpoint\": \"https://login.microsoftonline.us/common/oauth2/v2.0/authorize\", \"device_authorization_endpoint\": \"https://login.microsoftonline.us/common/oauth2/v2.0/devicecode\", \"http_logout_supported\": true, \"frontchannel_logout_supported\": true, \"end_session_endpoint\": \"https://login.microsoftonline.us/common/oauth2/v2.0/logout\", \"claims_supported\": [\"sub\", \"iss\", \"cloud_instance_name\", \"cloud_instance_host_name\", \"cloud_graph_host_name\", \"msgraph_host\", \"aud\", \"exp\", \"iat\", \"auth_time\", \"acr\", \"nonce\", \"preferred_username\", \"name\", \"tid\", \"ver\", \"at_hash\", \"c_hash\", \"email\"], \"kerberos_endpoint\": \"https://login.microsoftonline.us/common/kerberos\", \"tenant_region_scope\": null, \"cloud_instance_name\": \"microsoftonline.us\", \"cloud_graph_host_name\": \"graph.windows.net\", \"msgraph_host\": \"graph.microsoft.com\", \"rbac_url\": \"https://pasff.usgovcloudapi.net\" }, \"https://login.microsoftonline.com/consumers/\": { \"token_endpoint\": \"https://login.microsoftonline.com/consumers/oauth2/v2.0/token\", \"token_endpoint_auth_methods_supported\": [\"client_secret_post\", \"private_key_jwt\", \"client_secret_basic\"], \"jwks_uri\": \"https://login.microsoftonline.com/consumers/discovery/v2.0/keys\", \"response_modes_supported\": [\"query\", \"fragment\", \"form_post\"], \"subject_types_supported\": [\"pairwise\"], \"id_token_signing_alg_values_supported\": [\"RS256\"], \"response_types_supported\": [\"code\", \"id_token\", \"code id_token\", \"id_token token\"], \"scopes_supported\": [\"openid\", \"profile\", \"email\", \"offline_access\"], \"issuer\": \"https://login.microsoftonline.com/9188040d-6c67-4c5b-b112-36a304b66dad/v2.0\", \"request_uri_parameter_supported\": false, \"userinfo_endpoint\": \"https://graph.microsoft.com/oidc/userinfo\", \"authorization_endpoint\": \"https://login.microsoftonline.com/consumers/oauth2/v2.0/authorize\", \"device_authorization_endpoint\": \"https://login.microsoftonline.com/consumers/oauth2/v2.0/devicecode\", \"http_logout_supported\": true, \"frontchannel_logout_supported\": true, \"end_session_endpoint\": \"https://login.microsoftonline.com/consumers/oauth2/v2.0/logout\", \"claims_supported\": [\"sub\", \"iss\", \"cloud_instance_name\", \"cloud_instance_host_name\", \"cloud_graph_host_name\", \"msgraph_host\", \"aud\", \"exp\", \"iat\", \"auth_time\", \"acr\", \"nonce\", \"preferred_username\", \"name\", \"tid\", \"ver\", \"at_hash\", \"c_hash\", \"email\"], \"kerberos_endpoint\": \"https://login.microsoftonline.com/consumers/kerberos\", \"tenant_region_scope\": null, \"cloud_instance_name\": \"microsoftonline.com\", \"cloud_graph_host_name\": \"graph.windows.net\", \"msgraph_host\": \"graph.microsoft.com\", \"rbac_url\": \"https://pas.windows.net\" }, \"https://login.chinacloudapi.cn/consumers/\": { \"token_endpoint\": \"https://login.chinacloudapi.cn/consumers/oauth2/v2.0/token\", \"token_endpoint_auth_methods_supported\": [\"client_secret_post\", \"private_key_jwt\", \"client_secret_basic\"], \"jwks_uri\": \"https://login.chinacloudapi.cn/consumers/discovery/v2.0/keys\", \"response_modes_supported\": [\"query\", \"fragment\", \"form_post\"], \"subject_types_supported\": [\"pairwise\"], \"id_token_signing_alg_values_supported\": [\"RS256\"], \"response_types_supported\": [\"code\", \"id_token\", \"code id_token\", \"id_token token\"], \"scopes_supported\": [\"openid\", \"profile\", \"email\", \"offline_access\"], \"issuer\": \"https://login.partner.microsoftonline.cn/9188040d-6c67-4c5b-b112-36a304b66dad/v2.0\", \"request_uri_parameter_supported\": false, \"userinfo_endpoint\": \"https://microsoftgraph.chinacloudapi.cn/oidc/userinfo\", \"authorization_endpoint\": \"https://login.chinacloudapi.cn/consumers/oauth2/v2.0/authorize\", \"device_authorization_endpoint\": \"https://login.chinacloudapi.cn/consumers/oauth2/v2.0/devicecode\", \"http_logout_supported\": true, \"frontchannel_logout_supported\": true, \"end_session_endpoint\": \"https://login.chinacloudapi.cn/consumers/oauth2/v2.0/logout\", \"claims_supported\": [\"sub\", \"iss\", \"cloud_instance_name\", \"cloud_instance_host_name\", \"cloud_graph_host_name\", \"msgraph_host\", \"aud\", \"exp\", \"iat\", \"auth_time\", \"acr\", \"nonce\", \"preferred_username\", \"name\", \"tid\", \"ver\", \"at_hash\", \"c_hash\", \"email\"], \"kerberos_endpoint\": \"https://login.chinacloudapi.cn/consumers/kerberos\", \"tenant_region_scope\": null, \"cloud_instance_name\": \"partner.microsoftonline.cn\", \"cloud_graph_host_name\": \"graph.chinacloudapi.cn\", \"msgraph_host\": \"microsoftgraph.chinacloudapi.cn\", \"rbac_url\": \"https://pas.chinacloudapi.cn\" }, \"https://login.microsoftonline.us/consumers/\": { \"token_endpoint\": \"https://login.microsoftonline.us/consumers/oauth2/v2.0/token\", \"token_endpoint_auth_methods_supported\": [\"client_secret_post\", \"private_key_jwt\", \"client_secret_basic\"], \"jwks_uri\": \"https://login.microsoftonline.us/consumers/discovery/v2.0/keys\", \"response_modes_supported\": [\"query\", \"fragment\", \"form_post\"], \"subject_types_supported\": [\"pairwise\"], \"id_token_signing_alg_values_supported\": [\"RS256\"], \"response_types_supported\": [\"code\", \"id_token\", \"code id_token\", \"id_token token\"], \"scopes_supported\": [\"openid\", \"profile\", \"email\", \"offline_access\"], \"issuer\": \"https://login.microsoftonline.us/9188040d-6c67-4c5b-b112-36a304b66dad/v2.0\", \"request_uri_parameter_supported\": false, \"userinfo_endpoint\": \"https://graph.microsoft.com/oidc/userinfo\", \"authorization_endpoint\": \"https://login.microsoftonline.us/consumers/oauth2/v2.0/authorize\", \"device_authorization_endpoint\": \"https://login.microsoftonline.us/consumers/oauth2/v2.0/devicecode\", \"http_logout_supported\": true, \"frontchannel_logout_supported\": true, \"end_session_endpoint\": \"https://login.microsoftonline.us/consumers/oauth2/v2.0/logout\", \"claims_supported\": [\"sub\", \"iss\", \"cloud_instance_name\", \"cloud_instance_host_name\", \"cloud_graph_host_name\", \"msgraph_host\", \"aud\", \"exp\", \"iat\", \"auth_time\", \"acr\", \"nonce\", \"preferred_username\", \"name\", \"tid\", \"ver\", \"at_hash\", \"c_hash\", \"email\"], \"kerberos_endpoint\": \"https://login.microsoftonline.us/consumers/kerberos\", \"tenant_region_scope\": null, \"cloud_instance_name\": \"microsoftonline.us\", \"cloud_graph_host_name\": \"graph.windows.net\", \"msgraph_host\": \"graph.microsoft.com\", \"rbac_url\": \"https://pasff.usgovcloudapi.net\" }, \"https://login.microsoftonline.com/organizations/\": { \"token_endpoint\": \"https://login.microsoftonline.com/organizations/oauth2/v2.0/token\", \"token_endpoint_auth_methods_supported\": [\"client_secret_post\", \"private_key_jwt\", \"client_secret_basic\"], \"jwks_uri\": \"https://login.microsoftonline.com/organizations/discovery/v2.0/keys\", \"response_modes_supported\": [\"query\", \"fragment\", \"form_post\"], \"subject_types_supported\": [\"pairwise\"], \"id_token_signing_alg_values_supported\": [\"RS256\"], \"response_types_supported\": [\"code\", \"id_token\", \"code id_token\", \"id_token token\"], \"scopes_supported\": [\"openid\", \"profile\", \"email\", \"offline_access\"], \"issuer\": \"https://login.microsoftonline.com/{tenantid}/v2.0\", \"request_uri_parameter_supported\": false, \"userinfo_endpoint\": \"https://graph.microsoft.com/oidc/userinfo\", \"authorization_endpoint\": \"https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize\", \"device_authorization_endpoint\": \"https://login.microsoftonline.com/organizations/oauth2/v2.0/devicecode\", \"http_logout_supported\": true, \"frontchannel_logout_supported\": true, \"end_session_endpoint\": \"https://login.microsoftonline.com/organizations/oauth2/v2.0/logout\", \"claims_supported\": [\"sub\", \"iss\", \"cloud_instance_name\", \"cloud_instance_host_name\", \"cloud_graph_host_name\", \"msgraph_host\", \"aud\", \"exp\", \"iat\", \"auth_time\", \"acr\", \"nonce\", \"preferred_username\", \"name\", \"tid\", \"ver\", \"at_hash\", \"c_hash\", \"email\"], \"kerberos_endpoint\": \"https://login.microsoftonline.com/organizations/kerberos\", \"tenant_region_scope\": null, \"cloud_instance_name\": \"microsoftonline.com\", \"cloud_graph_host_name\": \"graph.windows.net\", \"msgraph_host\": \"graph.microsoft.com\", \"rbac_url\": \"https://pas.windows.net\" }, \"https://login.chinacloudapi.cn/organizations/\": { \"token_endpoint\": \"https://login.chinacloudapi.cn/organizations/oauth2/v2.0/token\", \"token_endpoint_auth_methods_supported\": [\"client_secret_post\", \"private_key_jwt\", \"client_secret_basic\"], \"jwks_uri\": \"https://login.chinacloudapi.cn/organizations/discovery/v2.0/keys\", \"response_modes_supported\": [\"query\", \"fragment\", \"form_post\"], \"subject_types_supported\": [\"pairwise\"], \"id_token_signing_alg_values_supported\": [\"RS256\"], \"response_types_supported\": [\"code\", \"id_token\", \"code id_token\", \"id_token token\"], \"scopes_supported\": [\"openid\", \"profile\", \"email\", \"offline_access\"], \"issuer\": \"https://login.partner.microsoftonline.cn/{tenantid}/v2.0\", \"request_uri_parameter_supported\": false, \"userinfo_endpoint\": \"https://microsoftgraph.chinacloudapi.cn/oidc/userinfo\", \"authorization_endpoint\": \"https://login.chinacloudapi.cn/organizations/oauth2/v2.0/authorize\", \"device_authorization_endpoint\": \"https://login.chinacloudapi.cn/organizations/oauth2/v2.0/devicecode\", \"http_logout_supported\": true, \"frontchannel_logout_supported\": true, \"end_session_endpoint\": \"https://login.chinacloudapi.cn/organizations/oauth2/v2.0/logout\", \"claims_supported\": [\"sub\", \"iss\", \"cloud_instance_name\", \"cloud_instance_host_name\", \"cloud_graph_host_name\", \"msgraph_host\", \"aud\", \"exp\", \"iat\", \"auth_time\", \"acr\", \"nonce\", \"preferred_username\", \"name\", \"tid\", \"ver\", \"at_hash\", \"c_hash\", \"email\"], \"kerberos_endpoint\": \"https://login.chinacloudapi.cn/organizations/kerberos\", \"tenant_region_scope\": null, \"cloud_instance_name\": \"partner.microsoftonline.cn\", \"cloud_graph_host_name\": \"graph.chinacloudapi.cn\", \"msgraph_host\": \"microsoftgraph.chinacloudapi.cn\", \"rbac_url\": \"https://pas.chinacloudapi.cn\" }, \"https://login.microsoftonline.us/organizations/\": { \"token_endpoint\": \"https://login.microsoftonline.us/organizations/oauth2/v2.0/token\", \"token_endpoint_auth_methods_supported\": [\"client_secret_post\", \"private_key_jwt\", \"client_secret_basic\"], \"jwks_uri\": \"https://login.microsoftonline.us/organizations/discovery/v2.0/keys\", \"response_modes_supported\": [\"query\", \"fragment\", \"form_post\"], \"subject_types_supported\": [\"pairwise\"], \"id_token_signing_alg_values_supported\": [\"RS256\"], \"response_types_supported\": [\"code\", \"id_token\", \"code id_token\", \"id_token token\"], \"scopes_supported\": [\"openid\", \"profile\", \"email\", \"offline_access\"], \"issuer\": \"https://login.microsoftonline.us/{tenantid}/v2.0\", \"request_uri_parameter_supported\": false, \"userinfo_endpoint\": \"https://graph.microsoft.com/oidc/userinfo\", \"authorization_endpoint\": \"https://login.microsoftonline.us/organizations/oauth2/v2.0/authorize\", \"device_authorization_endpoint\": \"https://login.microsoftonline.us/organizations/oauth2/v2.0/devicecode\", \"http_logout_supported\": true, \"frontchannel_logout_supported\": true, \"end_session_endpoint\": \"https://login.microsoftonline.us/organizations/oauth2/v2.0/logout\", \"claims_supported\": [\"sub\", \"iss\", \"cloud_instance_name\", \"cloud_instance_host_name\", \"cloud_graph_host_name\", \"msgraph_host\", \"aud\", \"exp\", \"iat\", \"auth_time\", \"acr\", \"nonce\", \"preferred_username\", \"name\", \"tid\", \"ver\", \"at_hash\", \"c_hash\", \"email\"], \"kerberos_endpoint\": \"https://login.microsoftonline.us/organizations/kerberos\", \"tenant_region_scope\": null, \"cloud_instance_name\": \"microsoftonline.us\", \"cloud_graph_host_name\": \"graph.windows.net\", \"msgraph_host\": \"graph.microsoft.com\", \"rbac_url\": \"https://pasff.usgovcloudapi.net\" } }, \"instanceDiscoveryMetadata\": { \"https://login.microsoftonline.com/common/\": { \"tenant_discovery_endpoint\": \"https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration\", \"api-version\": \"1.1\", \"metadata\": [{ \"preferred_network\": \"login.microsoftonline.com\", \"preferred_cache\": \"login.windows.net\", \"aliases\": [\"login.microsoftonline.com\", \"login.windows.net\", \"login.microsoft.com\", \"sts.windows.net\"] }, { \"preferred_network\": \"login.partner.microsoftonline.cn\", \"preferred_cache\": \"login.partner.microsoftonline.cn\", \"aliases\": [\"login.partner.microsoftonline.cn\", \"login.chinacloudapi.cn\"] }, { \"preferred_network\": \"login.microsoftonline.de\", \"preferred_cache\": \"login.microsoftonline.de\", \"aliases\": [\"login.microsoftonline.de\"] }, { \"preferred_network\": \"login.microsoftonline.us\", \"preferred_cache\": \"login.microsoftonline.us\", \"aliases\": [\"login.microsoftonline.us\", \"login.usgovcloudapi.net\"] }, { \"preferred_network\": \"login-us.microsoftonline.com\", \"preferred_cache\": \"login-us.microsoftonline.com\", \"aliases\": [\"login-us.microsoftonline.com\"] }] }, \"https://login.chinacloudapi.cn/common/\": { \"tenant_discovery_endpoint\": \"https://login.chinacloudapi.cn/common/v2.0/.well-known/openid-configuration\", \"api-version\": \"1.1\", \"metadata\": [{ \"preferred_network\": \"login.microsoftonline.com\", \"preferred_cache\": \"login.windows.net\", \"aliases\": [\"login.microsoftonline.com\", \"login.windows.net\", \"login.microsoft.com\", \"sts.windows.net\"] }, { \"preferred_network\": \"login.partner.microsoftonline.cn\", \"preferred_cache\": \"login.partner.microsoftonline.cn\", \"aliases\": [\"login.partner.microsoftonline.cn\", \"login.chinacloudapi.cn\"] }, { \"preferred_network\": \"login.microsoftonline.de\", \"preferred_cache\": \"login.microsoftonline.de\", \"aliases\": [\"login.microsoftonline.de\"] }, { \"preferred_network\": \"login.microsoftonline.us\", \"preferred_cache\": \"login.microsoftonline.us\", \"aliases\": [\"login.microsoftonline.us\", \"login.usgovcloudapi.net\"] }, { \"preferred_network\": \"login-us.microsoftonline.com\", \"preferred_cache\": \"login-us.microsoftonline.com\", \"aliases\": [\"login-us.microsoftonline.com\"] }] }, \"https://login.microsoftonline.us/common/\": { \"tenant_discovery_endpoint\": \"https://login.microsoftonline.us/common/v2.0/.well-known/openid-configuration\", \"api-version\": \"1.1\", \"metadata\": [{ \"preferred_network\": \"login.microsoftonline.com\", \"preferred_cache\": \"login.windows.net\", \"aliases\": [\"login.microsoftonline.com\", \"login.windows.net\", \"login.microsoft.com\", \"sts.windows.net\"] }, { \"preferred_network\": \"login.partner.microsoftonline.cn\", \"preferred_cache\": \"login.partner.microsoftonline.cn\", \"aliases\": [\"login.partner.microsoftonline.cn\", \"login.chinacloudapi.cn\"] }, { \"preferred_network\": \"login.microsoftonline.de\", \"preferred_cache\": \"login.microsoftonline.de\", \"aliases\": [\"login.microsoftonline.de\"] }, { \"preferred_network\": \"login.microsoftonline.us\", \"preferred_cache\": \"login.microsoftonline.us\", \"aliases\": [\"login.microsoftonline.us\", \"login.usgovcloudapi.net\"] }, { \"preferred_network\": \"login-us.microsoftonline.com\", \"preferred_cache\": \"login-us.microsoftonline.com\", \"aliases\": [\"login-us.microsoftonline.com\"] }] }, \"https://login.microsoftonline.com/consumers/\": { \"tenant_discovery_endpoint\": \"https://login.microsoftonline.com/consumers/v2.0/.well-known/openid-configuration\", \"api-version\": \"1.1\", \"metadata\": [{ \"preferred_network\": \"login.microsoftonline.com\", \"preferred_cache\": \"login.windows.net\", \"aliases\": [\"login.microsoftonline.com\", \"login.windows.net\", \"login.microsoft.com\", \"sts.windows.net\"] }, { \"preferred_network\": \"login.partner.microsoftonline.cn\", \"preferred_cache\": \"login.partner.microsoftonline.cn\", \"aliases\": [\"login.partner.microsoftonline.cn\", \"login.chinacloudapi.cn\"] }, { \"preferred_network\": \"login.microsoftonline.de\", \"preferred_cache\": \"login.microsoftonline.de\", \"aliases\": [\"login.microsoftonline.de\"] }, { \"preferred_network\": \"login.microsoftonline.us\", \"preferred_cache\": \"login.microsoftonline.us\", \"aliases\": [\"login.microsoftonline.us\", \"login.usgovcloudapi.net\"] }, { \"preferred_network\": \"login-us.microsoftonline.com\", \"preferred_cache\": \"login-us.microsoftonline.com\", \"aliases\": [\"login-us.microsoftonline.com\"] }] }, \"https://login.chinacloudapi.cn/consumers/\": { \"tenant_discovery_endpoint\": \"https://login.chinacloudapi.cn/consumers/v2.0/.well-known/openid-configuration\", \"api-version\": \"1.1\", \"metadata\": [{ \"preferred_network\": \"login.microsoftonline.com\", \"preferred_cache\": \"login.windows.net\", \"aliases\": [\"login.microsoftonline.com\", \"login.windows.net\", \"login.microsoft.com\", \"sts.windows.net\"] }, { \"preferred_network\": \"login.partner.microsoftonline.cn\", \"preferred_cache\": \"login.partner.microsoftonline.cn\", \"aliases\": [\"login.partner.microsoftonline.cn\", \"login.chinacloudapi.cn\"] }, { \"preferred_network\": \"login.microsoftonline.de\", \"preferred_cache\": \"login.microsoftonline.de\", \"aliases\": [\"login.microsoftonline.de\"] }, { \"preferred_network\": \"login.microsoftonline.us\", \"preferred_cache\": \"login.microsoftonline.us\", \"aliases\": [\"login.microsoftonline.us\", \"login.usgovcloudapi.net\"] }, { \"preferred_network\": \"login-us.microsoftonline.com\", \"preferred_cache\": \"login-us.microsoftonline.com\", \"aliases\": [\"login-us.microsoftonline.com\"] }] }, \"https://login.microsoftonline.us/consumers/\": { \"tenant_discovery_endpoint\": \"https://login.microsoftonline.us/consumers/v2.0/.well-known/openid-configuration\", \"api-version\": \"1.1\", \"metadata\": [{ \"preferred_network\": \"login.microsoftonline.com\", \"preferred_cache\": \"login.windows.net\", \"aliases\": [\"login.microsoftonline.com\", \"login.windows.net\", \"login.microsoft.com\", \"sts.windows.net\"] }, { \"preferred_network\": \"login.partner.microsoftonline.cn\", \"preferred_cache\": \"login.partner.microsoftonline.cn\", \"aliases\": [\"login.partner.microsoftonline.cn\", \"login.chinacloudapi.cn\"] }, { \"preferred_network\": \"login.microsoftonline.de\", \"preferred_cache\": \"login.microsoftonline.de\", \"aliases\": [\"login.microsoftonline.de\"] }, { \"preferred_network\": \"login.microsoftonline.us\", \"preferred_cache\": \"login.microsoftonline.us\", \"aliases\": [\"login.microsoftonline.us\", \"login.usgovcloudapi.net\"] }, { \"preferred_network\": \"login-us.microsoftonline.com\", \"preferred_cache\": \"login-us.microsoftonline.com\", \"aliases\": [\"login-us.microsoftonline.com\"] }] }, \"https://login.microsoftonline.com/organizations/\": { \"tenant_discovery_endpoint\": \"https://login.microsoftonline.com/organizations/v2.0/.well-known/openid-configuration\", \"api-version\": \"1.1\", \"metadata\": [{ \"preferred_network\": \"login.microsoftonline.com\", \"preferred_cache\": \"login.windows.net\", \"aliases\": [\"login.microsoftonline.com\", \"login.windows.net\", \"login.microsoft.com\", \"sts.windows.net\"] }, { \"preferred_network\": \"login.partner.microsoftonline.cn\", \"preferred_cache\": \"login.partner.microsoftonline.cn\", \"aliases\": [\"login.partner.microsoftonline.cn\", \"login.chinacloudapi.cn\"] }, { \"preferred_network\": \"login.microsoftonline.de\", \"preferred_cache\": \"login.microsoftonline.de\", \"aliases\": [\"login.microsoftonline.de\"] }, { \"preferred_network\": \"login.microsoftonline.us\", \"preferred_cache\": \"login.microsoftonline.us\", \"aliases\": [\"login.microsoftonline.us\", \"login.usgovcloudapi.net\"] }, { \"preferred_network\": \"login-us.microsoftonline.com\", \"preferred_cache\": \"login-us.microsoftonline.com\", \"aliases\": [\"login-us.microsoftonline.com\"] }] }, \"https://login.chinacloudapi.cn/organizations/\": { \"tenant_discovery_endpoint\": \"https://login.chinacloudapi.cn/organizations/v2.0/.well-known/openid-configuration\", \"api-version\": \"1.1\", \"metadata\": [{ \"preferred_network\": \"login.microsoftonline.com\", \"preferred_cache\": \"login.windows.net\", \"aliases\": [\"login.microsoftonline.com\", \"login.windows.net\", \"login.microsoft.com\", \"sts.windows.net\"] }, { \"preferred_network\": \"login.partner.microsoftonline.cn\", \"preferred_cache\": \"login.partner.microsoftonline.cn\", \"aliases\": [\"login.partner.microsoftonline.cn\", \"login.chinacloudapi.cn\"] }, { \"preferred_network\": \"login.microsoftonline.de\", \"preferred_cache\": \"login.microsoftonline.de\", \"aliases\": [\"login.microsoftonline.de\"] }, { \"preferred_network\": \"login.microsoftonline.us\", \"preferred_cache\": \"login.microsoftonline.us\", \"aliases\": [\"login.microsoftonline.us\", \"login.usgovcloudapi.net\"] }, { \"preferred_network\": \"login-us.microsoftonline.com\", \"preferred_cache\": \"login-us.microsoftonline.com\", \"aliases\": [\"login-us.microsoftonline.com\"] }] }, \"https://login.microsoftonline.us/organizations/\": { \"tenant_discovery_endpoint\": \"https://login.microsoftonline.us/organizations/v2.0/.well-known/openid-configuration\", \"api-version\": \"1.1\", \"metadata\": [{ \"preferred_network\": \"login.microsoftonline.com\", \"preferred_cache\": \"login.windows.net\", \"aliases\": [\"login.microsoftonline.com\", \"login.windows.net\", \"login.microsoft.com\", \"sts.windows.net\"] }, { \"preferred_network\": \"login.partner.microsoftonline.cn\", \"preferred_cache\": \"login.partner.microsoftonline.cn\", \"aliases\": [\"login.partner.microsoftonline.cn\", \"login.chinacloudapi.cn\"] }, { \"preferred_network\": \"login.microsoftonline.de\", \"preferred_cache\": \"login.microsoftonline.de\", \"aliases\": [\"login.microsoftonline.de\"] }, { \"preferred_network\": \"login.microsoftonline.us\", \"preferred_cache\": \"login.microsoftonline.us\", \"aliases\": [\"login.microsoftonline.us\", \"login.usgovcloudapi.net\"] }, { \"preferred_network\": \"login-us.microsoftonline.com\", \"preferred_cache\": \"login-us.microsoftonline.com\", \"aliases\": [\"login-us.microsoftonline.com\"] }] } } };\r\nvar EndpointMetadata = rawMetdataJSON.endpointMetadata;\r\nvar InstanceDiscoveryMetadata = rawMetdataJSON.instanceDiscoveryMetadata;\n\nexport { EndpointMetadata, InstanceDiscoveryMetadata, rawMetdataJSON };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { RegionDiscoverySources, ResponseCodes, Constants } from '../utils/Constants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar RegionDiscovery = /** @class */ (function () {\r\n function RegionDiscovery(networkInterface) {\r\n this.networkInterface = networkInterface;\r\n }\r\n /**\r\n * Detect the region from the application's environment.\r\n *\r\n * @returns Promise\r\n */\r\n RegionDiscovery.prototype.detectRegion = function (environmentRegion, regionDiscoveryMetadata, proxyUrl) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var autodetectedRegionName, options, localIMDSVersionResponse, currentIMDSVersion, currentIMDSVersionResponse;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n autodetectedRegionName = environmentRegion;\r\n if (!!autodetectedRegionName) return [3 /*break*/, 8];\r\n options = RegionDiscovery.IMDS_OPTIONS;\r\n if (proxyUrl) {\r\n options.proxyUrl = proxyUrl;\r\n }\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 6, , 7]);\r\n return [4 /*yield*/, this.getRegionFromIMDS(Constants.IMDS_VERSION, options)];\r\n case 2:\r\n localIMDSVersionResponse = _a.sent();\r\n if (localIMDSVersionResponse.status === ResponseCodes.httpSuccess) {\r\n autodetectedRegionName = localIMDSVersionResponse.body;\r\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.IMDS;\r\n }\r\n if (!(localIMDSVersionResponse.status === ResponseCodes.httpBadRequest)) return [3 /*break*/, 5];\r\n return [4 /*yield*/, this.getCurrentVersion(options)];\r\n case 3:\r\n currentIMDSVersion = _a.sent();\r\n if (!currentIMDSVersion) {\r\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.FAILED_AUTO_DETECTION;\r\n return [2 /*return*/, null];\r\n }\r\n return [4 /*yield*/, this.getRegionFromIMDS(currentIMDSVersion, options)];\r\n case 4:\r\n currentIMDSVersionResponse = _a.sent();\r\n if (currentIMDSVersionResponse.status === ResponseCodes.httpSuccess) {\r\n autodetectedRegionName = currentIMDSVersionResponse.body;\r\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.IMDS;\r\n }\r\n _a.label = 5;\r\n case 5: return [3 /*break*/, 7];\r\n case 6:\r\n _a.sent();\r\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.FAILED_AUTO_DETECTION;\r\n return [2 /*return*/, null];\r\n case 7: return [3 /*break*/, 9];\r\n case 8:\r\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.ENVIRONMENT_VARIABLE;\r\n _a.label = 9;\r\n case 9:\r\n // If no region was auto detected from the environment or from the IMDS endpoint, mark the attempt as a FAILED_AUTO_DETECTION\r\n if (!autodetectedRegionName) {\r\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.FAILED_AUTO_DETECTION;\r\n }\r\n return [2 /*return*/, autodetectedRegionName || null];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Make the call to the IMDS endpoint\r\n *\r\n * @param imdsEndpointUrl\r\n * @returns Promise>\r\n */\r\n RegionDiscovery.prototype.getRegionFromIMDS = function (version, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, this.networkInterface.sendGetRequestAsync(Constants.IMDS_ENDPOINT + \"?api-version=\" + version + \"&format=text\", options, Constants.IMDS_TIMEOUT)];\r\n });\r\n });\r\n };\r\n /**\r\n * Get the most recent version of the IMDS endpoint available\r\n *\r\n * @returns Promise\r\n */\r\n RegionDiscovery.prototype.getCurrentVersion = function (options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4 /*yield*/, this.networkInterface.sendGetRequestAsync(Constants.IMDS_ENDPOINT + \"?format=json\", options)];\r\n case 1:\r\n response = _a.sent();\r\n // When IMDS endpoint is called without the api version query param, bad request response comes back with latest version.\r\n if (response.status === ResponseCodes.httpBadRequest && response.body && response.body[\"newest-versions\"] && response.body[\"newest-versions\"].length > 0) {\r\n return [2 /*return*/, response.body[\"newest-versions\"][0]];\r\n }\r\n return [2 /*return*/, null];\r\n case 2:\r\n _a.sent();\r\n return [2 /*return*/, null];\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n // Options for the IMDS endpoint request\r\n RegionDiscovery.IMDS_OPTIONS = {\r\n headers: {\r\n Metadata: \"true\",\r\n },\r\n };\r\n return RegionDiscovery;\r\n}());\n\nexport { RegionDiscovery };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\nimport { __awaiter, __generator, __assign } from '../_virtual/_tslib.js';\nimport { AuthorityType } from './AuthorityType.js';\nimport { isOpenIdConfigResponse } from './OpenIdConfigResponse.js';\nimport { UrlString } from '../url/UrlString.js';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\nimport { Constants, AuthorityMetadataSource, RegionDiscoveryOutcomes } from '../utils/Constants.js';\nimport { EndpointMetadata, InstanceDiscoveryMetadata } from './AuthorityMetadata.js';\nimport { ClientConfigurationError } from '../error/ClientConfigurationError.js';\nimport { ProtocolMode } from './ProtocolMode.js';\nimport { AuthorityMetadataEntity } from '../cache/entities/AuthorityMetadataEntity.js';\nimport { AzureCloudInstance } from './AuthorityOptions.js';\nimport { isCloudInstanceDiscoveryResponse } from './CloudInstanceDiscoveryResponse.js';\nimport { isCloudInstanceDiscoveryErrorResponse } from './CloudInstanceDiscoveryErrorResponse.js';\nimport { RegionDiscovery } from './RegionDiscovery.js';\nimport { AuthError } from '../error/AuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * The authority class validates the authority URIs used by the user, and retrieves the OpenID Configuration Data from the\r\n * endpoint. It will store the pertinent config data in this object for use during token calls.\r\n */\r\nvar Authority = /** @class */ (function () {\r\n function Authority(authority, networkInterface, cacheManager, authorityOptions, logger, proxyUrl) {\r\n this.canonicalAuthority = authority;\r\n this._canonicalAuthority.validateAsUri();\r\n this.networkInterface = networkInterface;\r\n this.cacheManager = cacheManager;\r\n this.authorityOptions = authorityOptions;\r\n this.regionDiscovery = new RegionDiscovery(networkInterface);\r\n this.regionDiscoveryMetadata = { region_used: undefined, region_source: undefined, region_outcome: undefined };\r\n this.proxyUrl = proxyUrl || Constants.EMPTY_STRING;\r\n this.logger = logger;\r\n }\r\n Object.defineProperty(Authority.prototype, \"authorityType\", {\r\n // See above for AuthorityType\r\n get: function () {\r\n var pathSegments = this.canonicalAuthorityUrlComponents.PathSegments;\r\n if (pathSegments.length) {\r\n switch (pathSegments[0].toLowerCase()) {\r\n case Constants.ADFS:\r\n return AuthorityType.Adfs;\r\n case Constants.DSTS:\r\n return AuthorityType.Dsts;\r\n }\r\n }\r\n return AuthorityType.Default;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"protocolMode\", {\r\n /**\r\n * ProtocolMode enum representing the way endpoints are constructed.\r\n */\r\n get: function () {\r\n return this.authorityOptions.protocolMode;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"options\", {\r\n /**\r\n * Returns authorityOptions which can be used to reinstantiate a new authority instance\r\n */\r\n get: function () {\r\n return this.authorityOptions;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"canonicalAuthority\", {\r\n /**\r\n * A URL that is the authority set by the developer\r\n */\r\n get: function () {\r\n return this._canonicalAuthority.urlString;\r\n },\r\n /**\r\n * Sets canonical authority.\r\n */\r\n set: function (url) {\r\n this._canonicalAuthority = new UrlString(url);\r\n this._canonicalAuthority.validateAsUri();\r\n this._canonicalAuthorityUrlComponents = null;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"canonicalAuthorityUrlComponents\", {\r\n /**\r\n * Get authority components.\r\n */\r\n get: function () {\r\n if (!this._canonicalAuthorityUrlComponents) {\r\n this._canonicalAuthorityUrlComponents = this._canonicalAuthority.getUrlComponents();\r\n }\r\n return this._canonicalAuthorityUrlComponents;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"hostnameAndPort\", {\r\n /**\r\n * Get hostname and port i.e. login.microsoftonline.com\r\n */\r\n get: function () {\r\n return this.canonicalAuthorityUrlComponents.HostNameAndPort.toLowerCase();\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"tenant\", {\r\n /**\r\n * Get tenant for authority.\r\n */\r\n get: function () {\r\n return this.canonicalAuthorityUrlComponents.PathSegments[0];\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"authorizationEndpoint\", {\r\n /**\r\n * OAuth /authorize endpoint for requests\r\n */\r\n get: function () {\r\n if (this.discoveryComplete()) {\r\n var endpoint = this.replacePath(this.metadata.authorization_endpoint);\r\n return this.replaceTenant(endpoint);\r\n }\r\n else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"tokenEndpoint\", {\r\n /**\r\n * OAuth /token endpoint for requests\r\n */\r\n get: function () {\r\n if (this.discoveryComplete()) {\r\n var endpoint = this.replacePath(this.metadata.token_endpoint);\r\n return this.replaceTenant(endpoint);\r\n }\r\n else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"deviceCodeEndpoint\", {\r\n get: function () {\r\n if (this.discoveryComplete()) {\r\n var endpoint = this.replacePath(this.metadata.token_endpoint.replace(\"/token\", \"/devicecode\"));\r\n return this.replaceTenant(endpoint);\r\n }\r\n else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"endSessionEndpoint\", {\r\n /**\r\n * OAuth logout endpoint for requests\r\n */\r\n get: function () {\r\n if (this.discoveryComplete()) {\r\n // ROPC policies may not have end_session_endpoint set\r\n if (!this.metadata.end_session_endpoint) {\r\n throw ClientAuthError.createLogoutNotSupportedError();\r\n }\r\n var endpoint = this.replacePath(this.metadata.end_session_endpoint);\r\n return this.replaceTenant(endpoint);\r\n }\r\n else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"selfSignedJwtAudience\", {\r\n /**\r\n * OAuth issuer for requests\r\n */\r\n get: function () {\r\n if (this.discoveryComplete()) {\r\n var endpoint = this.replacePath(this.metadata.issuer);\r\n return this.replaceTenant(endpoint);\r\n }\r\n else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"jwksUri\", {\r\n /**\r\n * Jwks_uri for token signing keys\r\n */\r\n get: function () {\r\n if (this.discoveryComplete()) {\r\n var endpoint = this.replacePath(this.metadata.jwks_uri);\r\n return this.replaceTenant(endpoint);\r\n }\r\n else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n /**\r\n * Replaces tenant in url path with current tenant. Defaults to common.\r\n * @param urlString\r\n */\r\n Authority.prototype.replaceTenant = function (urlString) {\r\n return urlString.replace(/{tenant}|{tenantid}/g, this.tenant);\r\n };\r\n /**\r\n * Replaces path such as tenant or policy with the current tenant or policy.\r\n * @param urlString\r\n */\r\n Authority.prototype.replacePath = function (urlString) {\r\n var endpoint = urlString;\r\n var cachedAuthorityUrl = new UrlString(this.metadata.canonical_authority);\r\n var cachedAuthorityParts = cachedAuthorityUrl.getUrlComponents().PathSegments;\r\n var currentAuthorityParts = this.canonicalAuthorityUrlComponents.PathSegments;\r\n currentAuthorityParts.forEach(function (currentPart, index) {\r\n var cachedPart = cachedAuthorityParts[index];\r\n if (currentPart !== cachedPart) {\r\n endpoint = endpoint.replace(\"/\" + cachedPart + \"/\", \"/\" + currentPart + \"/\");\r\n }\r\n });\r\n return endpoint;\r\n };\r\n Object.defineProperty(Authority.prototype, \"defaultOpenIdConfigurationEndpoint\", {\r\n /**\r\n * The default open id configuration endpoint for any canonical authority.\r\n */\r\n get: function () {\r\n if (this.authorityType === AuthorityType.Adfs ||\r\n this.authorityType === AuthorityType.Dsts ||\r\n this.protocolMode === ProtocolMode.OIDC) {\r\n return this.canonicalAuthority + \".well-known/openid-configuration\";\r\n }\r\n return this.canonicalAuthority + \"v2.0/.well-known/openid-configuration\";\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n /**\r\n * Boolean that returns whethr or not tenant discovery has been completed.\r\n */\r\n Authority.prototype.discoveryComplete = function () {\r\n return !!this.metadata;\r\n };\r\n /**\r\n * Perform endpoint discovery to discover aliases, preferred_cache, preferred_network\r\n * and the /authorize, /token and logout endpoints.\r\n */\r\n Authority.prototype.resolveEndpointsAsync = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var metadataEntity, cloudDiscoverySource, endpointSource, cacheKey;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n metadataEntity = this.cacheManager.getAuthorityMetadataByAlias(this.hostnameAndPort);\r\n if (!metadataEntity) {\r\n metadataEntity = new AuthorityMetadataEntity();\r\n metadataEntity.updateCanonicalAuthority(this.canonicalAuthority);\r\n }\r\n return [4 /*yield*/, this.updateCloudDiscoveryMetadata(metadataEntity)];\r\n case 1:\r\n cloudDiscoverySource = _a.sent();\r\n this.canonicalAuthority = this.canonicalAuthority.replace(this.hostnameAndPort, metadataEntity.preferred_network);\r\n return [4 /*yield*/, this.updateEndpointMetadata(metadataEntity)];\r\n case 2:\r\n endpointSource = _a.sent();\r\n if (cloudDiscoverySource !== AuthorityMetadataSource.CACHE && endpointSource !== AuthorityMetadataSource.CACHE) {\r\n // Reset the expiration time unless both values came from a successful cache lookup\r\n metadataEntity.resetExpiresAt();\r\n metadataEntity.updateCanonicalAuthority(this.canonicalAuthority);\r\n }\r\n cacheKey = this.cacheManager.generateAuthorityMetadataCacheKey(metadataEntity.preferred_cache);\r\n this.cacheManager.setAuthorityMetadata(cacheKey, metadataEntity);\r\n this.metadata = metadataEntity;\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Update AuthorityMetadataEntity with new endpoints and return where the information came from\r\n * @param metadataEntity\r\n */\r\n Authority.prototype.updateEndpointMetadata = function (metadataEntity) {\r\n var _a, _b;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var metadata, harcodedMetadata;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n metadata = this.getEndpointMetadataFromConfig();\r\n if (metadata) {\r\n metadataEntity.updateEndpointMetadata(metadata, false);\r\n return [2 /*return*/, AuthorityMetadataSource.CONFIG];\r\n }\r\n if (this.isAuthoritySameType(metadataEntity) && metadataEntity.endpointsFromNetwork && !metadataEntity.isExpired()) {\r\n // No need to update\r\n return [2 /*return*/, AuthorityMetadataSource.CACHE];\r\n }\r\n harcodedMetadata = this.getEndpointMetadataFromHardcodedValues();\r\n return [4 /*yield*/, this.getEndpointMetadataFromNetwork()];\r\n case 1:\r\n metadata = _c.sent();\r\n if (!metadata) return [3 /*break*/, 4];\r\n if (!((_a = this.authorityOptions.azureRegionConfiguration) === null || _a === void 0 ? void 0 : _a.azureRegion)) return [3 /*break*/, 3];\r\n return [4 /*yield*/, this.updateMetadataWithRegionalInformation(metadata)];\r\n case 2:\r\n metadata = _c.sent();\r\n _c.label = 3;\r\n case 3:\r\n metadataEntity.updateEndpointMetadata(metadata, true);\r\n return [2 /*return*/, AuthorityMetadataSource.NETWORK];\r\n case 4:\r\n if (!(harcodedMetadata && !this.authorityOptions.skipAuthorityMetadataCache)) return [3 /*break*/, 7];\r\n if (!((_b = this.authorityOptions.azureRegionConfiguration) === null || _b === void 0 ? void 0 : _b.azureRegion)) return [3 /*break*/, 6];\r\n return [4 /*yield*/, this.updateMetadataWithRegionalInformation(harcodedMetadata)];\r\n case 5:\r\n harcodedMetadata = _c.sent();\r\n _c.label = 6;\r\n case 6:\r\n metadataEntity.updateEndpointMetadata(harcodedMetadata, false);\r\n return [2 /*return*/, AuthorityMetadataSource.HARDCODED_VALUES];\r\n case 7: throw ClientAuthError.createUnableToGetOpenidConfigError(this.defaultOpenIdConfigurationEndpoint);\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Compares the number of url components after the domain to determine if the cached\r\n * authority metadata can be used for the requested authority. Protects against same domain different\r\n * authority such as login.microsoftonline.com/tenant and login.microsoftonline.com/tfp/tenant/policy\r\n * @param metadataEntity\r\n */\r\n Authority.prototype.isAuthoritySameType = function (metadataEntity) {\r\n var cachedAuthorityUrl = new UrlString(metadataEntity.canonical_authority);\r\n var cachedParts = cachedAuthorityUrl.getUrlComponents().PathSegments;\r\n return cachedParts.length === this.canonicalAuthorityUrlComponents.PathSegments.length;\r\n };\r\n /**\r\n * Parse authorityMetadata config option\r\n */\r\n Authority.prototype.getEndpointMetadataFromConfig = function () {\r\n if (this.authorityOptions.authorityMetadata) {\r\n try {\r\n return JSON.parse(this.authorityOptions.authorityMetadata);\r\n }\r\n catch (e) {\r\n throw ClientConfigurationError.createInvalidAuthorityMetadataError();\r\n }\r\n }\r\n return null;\r\n };\r\n /**\r\n * Gets OAuth endpoints from the given OpenID configuration endpoint.\r\n *\r\n * @param hasHardcodedMetadata boolean\r\n */\r\n Authority.prototype.getEndpointMetadataFromNetwork = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var options, response;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n options = {};\r\n if (this.proxyUrl) {\r\n options.proxyUrl = this.proxyUrl;\r\n }\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.networkInterface.\r\n sendGetRequestAsync(this.defaultOpenIdConfigurationEndpoint, options)];\r\n case 2:\r\n response = _a.sent();\r\n return [2 /*return*/, isOpenIdConfigResponse(response.body) ? response.body : null];\r\n case 3:\r\n _a.sent();\r\n return [2 /*return*/, null];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Get OAuth endpoints for common authorities.\r\n */\r\n Authority.prototype.getEndpointMetadataFromHardcodedValues = function () {\r\n if (this.canonicalAuthority in EndpointMetadata) {\r\n return EndpointMetadata[this.canonicalAuthority];\r\n }\r\n return null;\r\n };\r\n /**\r\n * Update the retrieved metadata with regional information.\r\n */\r\n Authority.prototype.updateMetadataWithRegionalInformation = function (metadata) {\r\n var _a, _b, _c, _d, _e;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var autodetectedRegionName, azureRegion;\r\n return __generator(this, function (_f) {\r\n switch (_f.label) {\r\n case 0: return [4 /*yield*/, this.regionDiscovery.detectRegion((_a = this.authorityOptions.azureRegionConfiguration) === null || _a === void 0 ? void 0 : _a.environmentRegion, this.regionDiscoveryMetadata, this.proxyUrl)];\r\n case 1:\r\n autodetectedRegionName = _f.sent();\r\n azureRegion = ((_b = this.authorityOptions.azureRegionConfiguration) === null || _b === void 0 ? void 0 : _b.azureRegion) === Constants.AZURE_REGION_AUTO_DISCOVER_FLAG\r\n ? autodetectedRegionName\r\n : (_c = this.authorityOptions.azureRegionConfiguration) === null || _c === void 0 ? void 0 : _c.azureRegion;\r\n if (((_d = this.authorityOptions.azureRegionConfiguration) === null || _d === void 0 ? void 0 : _d.azureRegion) === Constants.AZURE_REGION_AUTO_DISCOVER_FLAG) {\r\n this.regionDiscoveryMetadata.region_outcome = autodetectedRegionName ?\r\n RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_SUCCESSFUL :\r\n RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_FAILED;\r\n }\r\n else {\r\n if (autodetectedRegionName) {\r\n this.regionDiscoveryMetadata.region_outcome = (((_e = this.authorityOptions.azureRegionConfiguration) === null || _e === void 0 ? void 0 : _e.azureRegion) === autodetectedRegionName) ?\r\n RegionDiscoveryOutcomes.CONFIGURED_MATCHES_DETECTED :\r\n RegionDiscoveryOutcomes.CONFIGURED_NOT_DETECTED;\r\n }\r\n else {\r\n this.regionDiscoveryMetadata.region_outcome = RegionDiscoveryOutcomes.CONFIGURED_NO_AUTO_DETECTION;\r\n }\r\n }\r\n if (azureRegion) {\r\n this.regionDiscoveryMetadata.region_used = azureRegion;\r\n return [2 /*return*/, Authority.replaceWithRegionalInformation(metadata, azureRegion)];\r\n }\r\n return [2 /*return*/, metadata];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Updates the AuthorityMetadataEntity with new aliases, preferred_network and preferred_cache\r\n * and returns where the information was retrieved from\r\n * @param cachedMetadata\r\n * @param newMetadata\r\n */\r\n Authority.prototype.updateCloudDiscoveryMetadata = function (metadataEntity) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var metadata, metadataEntityExpired, harcodedMetadata;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.verbose(\"Attempting to get cloud discovery metadata in the config\");\r\n this.logger.verbosePii(\"Known Authorities: \" + (this.authorityOptions.knownAuthorities || Constants.NOT_APPLICABLE));\r\n this.logger.verbosePii(\"Authority Metadata: \" + (this.authorityOptions.authorityMetadata || Constants.NOT_APPLICABLE));\r\n this.logger.verbosePii(\"Canonical Authority: \" + (metadataEntity.canonical_authority || Constants.NOT_APPLICABLE));\r\n metadata = this.getCloudDiscoveryMetadataFromConfig();\r\n if (metadata) {\r\n this.logger.verbose(\"Found cloud discovery metadata in the config.\");\r\n metadataEntity.updateCloudDiscoveryMetadata(metadata, false);\r\n return [2 /*return*/, AuthorityMetadataSource.CONFIG];\r\n }\r\n // If the cached metadata came from config but that config was not passed to this instance, we must go to the network\r\n this.logger.verbose(\"Did not find cloud discovery metadata in the config... Attempting to get cloud discovery metadata from the cache.\");\r\n metadataEntityExpired = metadataEntity.isExpired();\r\n if (this.isAuthoritySameType(metadataEntity) && metadataEntity.aliasesFromNetwork && !metadataEntityExpired) {\r\n this.logger.verbose(\"Found metadata in the cache.\");\r\n // No need to update\r\n return [2 /*return*/, AuthorityMetadataSource.CACHE];\r\n }\r\n else if (metadataEntityExpired) {\r\n this.logger.verbose(\"The metadata entity is expired.\");\r\n }\r\n this.logger.verbose(\"Did not find cloud discovery metadata in the cache... Attempting to get cloud discovery metadata from the network.\");\r\n return [4 /*yield*/, this.getCloudDiscoveryMetadataFromNetwork()];\r\n case 1:\r\n metadata = _a.sent();\r\n if (metadata) {\r\n this.logger.verbose(\"cloud discovery metadata was successfully returned from getCloudDiscoveryMetadataFromNetwork()\");\r\n metadataEntity.updateCloudDiscoveryMetadata(metadata, true);\r\n return [2 /*return*/, AuthorityMetadataSource.NETWORK];\r\n }\r\n this.logger.verbose(\"Did not find cloud discovery metadata from the network... Attempting to get cloud discovery metadata from hardcoded values.\");\r\n harcodedMetadata = this.getCloudDiscoveryMetadataFromHarcodedValues();\r\n if (harcodedMetadata && !this.options.skipAuthorityMetadataCache) {\r\n this.logger.verbose(\"Found cloud discovery metadata from hardcoded values.\");\r\n metadataEntity.updateCloudDiscoveryMetadata(harcodedMetadata, false);\r\n return [2 /*return*/, AuthorityMetadataSource.HARDCODED_VALUES];\r\n }\r\n // Metadata could not be obtained from the config, cache, network or hardcoded values\r\n this.logger.error(\"Did not find cloud discovery metadata from hardcoded values... Metadata could not be obtained from config, cache, network or hardcoded values. Throwing Untrusted Authority Error.\");\r\n throw ClientConfigurationError.createUntrustedAuthorityError();\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Parse cloudDiscoveryMetadata config or check knownAuthorities\r\n */\r\n Authority.prototype.getCloudDiscoveryMetadataFromConfig = function () {\r\n // Check if network response was provided in config\r\n if (this.authorityOptions.cloudDiscoveryMetadata) {\r\n this.logger.verbose(\"The cloud discovery metadata has been provided as a network response, in the config.\");\r\n try {\r\n this.logger.verbose(\"Attempting to parse the cloud discovery metadata.\");\r\n var parsedResponse = JSON.parse(this.authorityOptions.cloudDiscoveryMetadata);\r\n var metadata = Authority.getCloudDiscoveryMetadataFromNetworkResponse(parsedResponse.metadata, this.hostnameAndPort);\r\n this.logger.verbose(\"Parsed the cloud discovery metadata.\");\r\n if (metadata) {\r\n this.logger.verbose(\"There is returnable metadata attached to the parsed cloud discovery metadata.\");\r\n return metadata;\r\n }\r\n else {\r\n this.logger.verbose(\"There is no metadata attached to the parsed cloud discovery metadata.\");\r\n }\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Unable to parse the cloud discovery metadata. Throwing Invalid Cloud Discovery Metadata Error.\");\r\n throw ClientConfigurationError.createInvalidCloudDiscoveryMetadataError();\r\n }\r\n }\r\n // If cloudDiscoveryMetadata is empty or does not contain the host, check knownAuthorities\r\n if (this.isInKnownAuthorities()) {\r\n this.logger.verbose(\"The host is included in knownAuthorities. Creating new cloud discovery metadata from the host.\");\r\n return Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);\r\n }\r\n return null;\r\n };\r\n /**\r\n * Called to get metadata from network if CloudDiscoveryMetadata was not populated by config\r\n *\r\n * @param hasHardcodedMetadata boolean\r\n */\r\n Authority.prototype.getCloudDiscoveryMetadataFromNetwork = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var instanceDiscoveryEndpoint, options, match, response, typedResponseBody, metadata, error_1, typedError;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n instanceDiscoveryEndpoint = \"\" + Constants.AAD_INSTANCE_DISCOVERY_ENDPT + this.canonicalAuthority + \"oauth2/v2.0/authorize\";\r\n options = {};\r\n if (this.proxyUrl) {\r\n options.proxyUrl = this.proxyUrl;\r\n }\r\n match = null;\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.networkInterface.sendGetRequestAsync(instanceDiscoveryEndpoint, options)];\r\n case 2:\r\n response = _a.sent();\r\n typedResponseBody = void 0;\r\n metadata = void 0;\r\n if (isCloudInstanceDiscoveryResponse(response.body)) {\r\n typedResponseBody = response.body;\r\n metadata = typedResponseBody.metadata;\r\n this.logger.verbosePii(\"tenant_discovery_endpoint is: \" + typedResponseBody.tenant_discovery_endpoint);\r\n }\r\n else if (isCloudInstanceDiscoveryErrorResponse(response.body)) {\r\n this.logger.warning(\"A CloudInstanceDiscoveryErrorResponse was returned. The cloud instance discovery network request's status code is: \" + response.status);\r\n typedResponseBody = response.body;\r\n if (typedResponseBody.error === Constants.INVALID_INSTANCE) {\r\n this.logger.error(\"The CloudInstanceDiscoveryErrorResponse error is invalid_instance.\");\r\n return [2 /*return*/, null];\r\n }\r\n this.logger.warning(\"The CloudInstanceDiscoveryErrorResponse error is \" + typedResponseBody.error);\r\n this.logger.warning(\"The CloudInstanceDiscoveryErrorResponse error description is \" + typedResponseBody.error_description);\r\n this.logger.warning(\"Setting the value of the CloudInstanceDiscoveryMetadata (returned from the network) to []\");\r\n metadata = [];\r\n }\r\n else {\r\n this.logger.error(\"AAD did not return a CloudInstanceDiscoveryResponse or CloudInstanceDiscoveryErrorResponse\");\r\n return [2 /*return*/, null];\r\n }\r\n this.logger.verbose(\"Attempting to find a match between the developer's authority and the CloudInstanceDiscoveryMetadata returned from the network request.\");\r\n match = Authority.getCloudDiscoveryMetadataFromNetworkResponse(metadata, this.hostnameAndPort);\r\n return [3 /*break*/, 4];\r\n case 3:\r\n error_1 = _a.sent();\r\n if (error_1 instanceof AuthError) {\r\n this.logger.error(\"There was a network error while attempting to get the cloud discovery instance metadata.\\nError: \" + error_1.errorCode + \"\\nError Description: \" + error_1.errorMessage);\r\n }\r\n else {\r\n typedError = error_1;\r\n this.logger.error(\"A non-MSALJS error was thrown while attempting to get the cloud instance discovery metadata.\\nError: \" + typedError.name + \"\\nError Description: \" + typedError.message);\r\n }\r\n return [2 /*return*/, null];\r\n case 4:\r\n // Custom Domain scenario, host is trusted because Instance Discovery call succeeded\r\n if (!match) {\r\n this.logger.warning(\"The developer's authority was not found within the CloudInstanceDiscoveryMetadata returned from the network request.\");\r\n this.logger.verbose(\"Creating custom Authority for custom domain scenario.\");\r\n match = Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);\r\n }\r\n return [2 /*return*/, match];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Get cloud discovery metadata for common authorities\r\n */\r\n Authority.prototype.getCloudDiscoveryMetadataFromHarcodedValues = function () {\r\n if (this.canonicalAuthority in InstanceDiscoveryMetadata) {\r\n return InstanceDiscoveryMetadata[this.canonicalAuthority];\r\n }\r\n return null;\r\n };\r\n /**\r\n * Helper function to determine if this host is included in the knownAuthorities config option\r\n */\r\n Authority.prototype.isInKnownAuthorities = function () {\r\n var _this = this;\r\n var matches = this.authorityOptions.knownAuthorities.filter(function (authority) {\r\n return UrlString.getDomainFromUrl(authority).toLowerCase() === _this.hostnameAndPort;\r\n });\r\n return matches.length > 0;\r\n };\r\n /**\r\n * helper function to populate the authority based on azureCloudOptions\r\n * @param authorityString\r\n * @param azureCloudOptions\r\n */\r\n Authority.generateAuthority = function (authorityString, azureCloudOptions) {\r\n var authorityAzureCloudInstance;\r\n if (azureCloudOptions && azureCloudOptions.azureCloudInstance !== AzureCloudInstance.None) {\r\n var tenant = azureCloudOptions.tenant ? azureCloudOptions.tenant : Constants.DEFAULT_COMMON_TENANT;\r\n authorityAzureCloudInstance = azureCloudOptions.azureCloudInstance + \"/\" + tenant + \"/\";\r\n }\r\n return authorityAzureCloudInstance ? authorityAzureCloudInstance : authorityString;\r\n };\r\n /**\r\n * Creates cloud discovery metadata object from a given host\r\n * @param host\r\n */\r\n Authority.createCloudDiscoveryMetadataFromHost = function (host) {\r\n return {\r\n preferred_network: host,\r\n preferred_cache: host,\r\n aliases: [host]\r\n };\r\n };\r\n /**\r\n * Searches instance discovery network response for the entry that contains the host in the aliases list\r\n * @param response\r\n * @param authority\r\n */\r\n Authority.getCloudDiscoveryMetadataFromNetworkResponse = function (response, authority) {\r\n for (var i = 0; i < response.length; i++) {\r\n var metadata = response[i];\r\n if (metadata.aliases.indexOf(authority) > -1) {\r\n return metadata;\r\n }\r\n }\r\n return null;\r\n };\r\n /**\r\n * helper function to generate environment from authority object\r\n */\r\n Authority.prototype.getPreferredCache = function () {\r\n if (this.discoveryComplete()) {\r\n return this.metadata.preferred_cache;\r\n }\r\n else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n };\r\n /**\r\n * Returns whether or not the provided host is an alias of this authority instance\r\n * @param host\r\n */\r\n Authority.prototype.isAlias = function (host) {\r\n return this.metadata.aliases.indexOf(host) > -1;\r\n };\r\n /**\r\n * Checks whether the provided host is that of a public cloud authority\r\n *\r\n * @param authority string\r\n * @returns bool\r\n */\r\n Authority.isPublicCloudAuthority = function (host) {\r\n return Constants.KNOWN_PUBLIC_CLOUDS.indexOf(host) >= 0;\r\n };\r\n /**\r\n * Rebuild the authority string with the region\r\n *\r\n * @param host string\r\n * @param region string\r\n */\r\n Authority.buildRegionalAuthorityString = function (host, region, queryString) {\r\n // Create and validate a Url string object with the initial authority string\r\n var authorityUrlInstance = new UrlString(host);\r\n authorityUrlInstance.validateAsUri();\r\n var authorityUrlParts = authorityUrlInstance.getUrlComponents();\r\n var hostNameAndPort = region + \".\" + authorityUrlParts.HostNameAndPort;\r\n if (this.isPublicCloudAuthority(authorityUrlParts.HostNameAndPort)) {\r\n hostNameAndPort = region + \".\" + Constants.REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX;\r\n }\r\n // Include the query string portion of the url\r\n var url = UrlString.constructAuthorityUriFromObject(__assign(__assign({}, authorityUrlInstance.getUrlComponents()), { HostNameAndPort: hostNameAndPort })).urlString;\r\n // Add the query string if a query string was provided\r\n if (queryString)\r\n return url + \"?\" + queryString;\r\n return url;\r\n };\r\n /**\r\n * Replace the endpoints in the metadata object with their regional equivalents.\r\n *\r\n * @param metadata OpenIdConfigResponse\r\n * @param azureRegion string\r\n */\r\n Authority.replaceWithRegionalInformation = function (metadata, azureRegion) {\r\n metadata.authorization_endpoint = Authority.buildRegionalAuthorityString(metadata.authorization_endpoint, azureRegion);\r\n // TODO: Enquire on whether we should leave the query string or remove it before releasing the feature\r\n metadata.token_endpoint = Authority.buildRegionalAuthorityString(metadata.token_endpoint, azureRegion, Constants.REGIONAL_AUTH_NON_MSI_QUERY_STRING);\r\n if (metadata.end_session_endpoint) {\r\n metadata.end_session_endpoint = Authority.buildRegionalAuthorityString(metadata.end_session_endpoint, azureRegion);\r\n }\r\n return metadata;\r\n };\r\n return Authority;\r\n}());\n\nexport { Authority };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nfunction isCloudInstanceDiscoveryResponse(response) {\r\n return (response.hasOwnProperty(\"tenant_discovery_endpoint\") &&\r\n response.hasOwnProperty(\"metadata\"));\r\n}\n\nexport { isCloudInstanceDiscoveryResponse };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nfunction isCloudInstanceDiscoveryErrorResponse(response) {\r\n return (response.hasOwnProperty(\"error\") &&\r\n response.hasOwnProperty(\"error_description\"));\r\n}\n\nexport { isCloudInstanceDiscoveryErrorResponse };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { Authority } from './Authority.js';\nimport { ClientConfigurationError } from '../error/ClientConfigurationError.js';\nimport { StringUtils } from '../utils/StringUtils.js';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar AuthorityFactory = /** @class */ (function () {\r\n function AuthorityFactory() {\r\n }\r\n /**\r\n * Create an authority object of the correct type based on the url\r\n * Performs basic authority validation - checks to see if the authority is of a valid type (i.e. aad, b2c, adfs)\r\n *\r\n * Also performs endpoint discovery.\r\n *\r\n * @param authorityUri\r\n * @param networkClient\r\n * @param protocolMode\r\n */\r\n AuthorityFactory.createDiscoveredInstance = function (authorityUri, networkClient, cacheManager, authorityOptions, logger, proxyUrl) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var acquireTokenAuthority, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n acquireTokenAuthority = AuthorityFactory.createInstance(authorityUri, networkClient, cacheManager, authorityOptions, logger, proxyUrl);\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, acquireTokenAuthority.resolveEndpointsAsync()];\r\n case 2:\r\n _a.sent();\r\n return [2 /*return*/, acquireTokenAuthority];\r\n case 3:\r\n e_1 = _a.sent();\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(e_1);\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Create an authority object of the correct type based on the url\r\n * Performs basic authority validation - checks to see if the authority is of a valid type (i.e. aad, b2c, adfs)\r\n *\r\n * Does not perform endpoint discovery.\r\n *\r\n * @param authorityUrl\r\n * @param networkInterface\r\n * @param protocolMode\r\n */\r\n AuthorityFactory.createInstance = function (authorityUrl, networkInterface, cacheManager, authorityOptions, logger, proxyUrl) {\r\n // Throw error if authority url is empty\r\n if (StringUtils.isEmpty(authorityUrl)) {\r\n throw ClientConfigurationError.createUrlEmptyError();\r\n }\r\n return new Authority(authorityUrl, networkInterface, cacheManager, authorityOptions, logger, proxyUrl);\r\n };\r\n return AuthorityFactory;\r\n}());\n\nexport { AuthorityFactory };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\nimport { SERVER_TELEM_CONSTANTS, CacheOutcome, Constants, Separators } from '../../utils/Constants.js';\nimport { ServerTelemetryEntity } from '../../cache/entities/ServerTelemetryEntity.js';\nimport { StringUtils } from '../../utils/StringUtils.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar ServerTelemetryManager = /** @class */ (function () {\r\n function ServerTelemetryManager(telemetryRequest, cacheManager) {\r\n this.cacheOutcome = CacheOutcome.NO_CACHE_HIT;\r\n this.cacheManager = cacheManager;\r\n this.apiId = telemetryRequest.apiId;\r\n this.correlationId = telemetryRequest.correlationId;\r\n this.wrapperSKU = telemetryRequest.wrapperSKU || Constants.EMPTY_STRING;\r\n this.wrapperVer = telemetryRequest.wrapperVer || Constants.EMPTY_STRING;\r\n this.telemetryCacheKey = SERVER_TELEM_CONSTANTS.CACHE_KEY + Separators.CACHE_KEY_SEPARATOR + telemetryRequest.clientId;\r\n }\r\n /**\r\n * API to add MSER Telemetry to request\r\n */\r\n ServerTelemetryManager.prototype.generateCurrentRequestHeaderValue = function () {\r\n var request = \"\" + this.apiId + SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR + this.cacheOutcome;\r\n var platformFields = [this.wrapperSKU, this.wrapperVer].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n var regionDiscoveryFields = this.getRegionDiscoveryFields();\r\n var requestWithRegionDiscoveryFields = [request, regionDiscoveryFields].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n return [SERVER_TELEM_CONSTANTS.SCHEMA_VERSION, requestWithRegionDiscoveryFields, platformFields].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR);\r\n };\r\n /**\r\n * API to add MSER Telemetry for the last failed request\r\n */\r\n ServerTelemetryManager.prototype.generateLastRequestHeaderValue = function () {\r\n var lastRequests = this.getLastRequests();\r\n var maxErrors = ServerTelemetryManager.maxErrorsToSend(lastRequests);\r\n var failedRequests = lastRequests.failedRequests.slice(0, 2 * maxErrors).join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n var errors = lastRequests.errors.slice(0, maxErrors).join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n var errorCount = lastRequests.errors.length;\r\n // Indicate whether this header contains all data or partial data\r\n var overflow = maxErrors < errorCount ? SERVER_TELEM_CONSTANTS.OVERFLOW_TRUE : SERVER_TELEM_CONSTANTS.OVERFLOW_FALSE;\r\n var platformFields = [errorCount, overflow].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n return [SERVER_TELEM_CONSTANTS.SCHEMA_VERSION, lastRequests.cacheHits, failedRequests, errors, platformFields].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR);\r\n };\r\n /**\r\n * API to cache token failures for MSER data capture\r\n * @param error\r\n */\r\n ServerTelemetryManager.prototype.cacheFailedRequest = function (error) {\r\n var lastRequests = this.getLastRequests();\r\n if (lastRequests.errors.length >= SERVER_TELEM_CONSTANTS.MAX_CACHED_ERRORS) {\r\n // Remove a cached error to make room, first in first out\r\n lastRequests.failedRequests.shift(); // apiId\r\n lastRequests.failedRequests.shift(); // correlationId\r\n lastRequests.errors.shift();\r\n }\r\n lastRequests.failedRequests.push(this.apiId, this.correlationId);\r\n if (!StringUtils.isEmpty(error.subError)) {\r\n lastRequests.errors.push(error.subError);\r\n }\r\n else if (!StringUtils.isEmpty(error.errorCode)) {\r\n lastRequests.errors.push(error.errorCode);\r\n }\r\n else if (!!error && error.toString()) {\r\n lastRequests.errors.push(error.toString());\r\n }\r\n else {\r\n lastRequests.errors.push(SERVER_TELEM_CONSTANTS.UNKNOWN_ERROR);\r\n }\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests);\r\n return;\r\n };\r\n /**\r\n * Update server telemetry cache entry by incrementing cache hit counter\r\n */\r\n ServerTelemetryManager.prototype.incrementCacheHits = function () {\r\n var lastRequests = this.getLastRequests();\r\n lastRequests.cacheHits += 1;\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests);\r\n return lastRequests.cacheHits;\r\n };\r\n /**\r\n * Get the server telemetry entity from cache or initialize a new one\r\n */\r\n ServerTelemetryManager.prototype.getLastRequests = function () {\r\n var initialValue = new ServerTelemetryEntity();\r\n var lastRequests = this.cacheManager.getServerTelemetry(this.telemetryCacheKey);\r\n return lastRequests || initialValue;\r\n };\r\n /**\r\n * Remove server telemetry cache entry\r\n */\r\n ServerTelemetryManager.prototype.clearTelemetryCache = function () {\r\n var lastRequests = this.getLastRequests();\r\n var numErrorsFlushed = ServerTelemetryManager.maxErrorsToSend(lastRequests);\r\n var errorCount = lastRequests.errors.length;\r\n if (numErrorsFlushed === errorCount) {\r\n // All errors were sent on last request, clear Telemetry cache\r\n this.cacheManager.removeItem(this.telemetryCacheKey);\r\n }\r\n else {\r\n // Partial data was flushed to server, construct a new telemetry cache item with errors that were not flushed\r\n var serverTelemEntity = new ServerTelemetryEntity();\r\n serverTelemEntity.failedRequests = lastRequests.failedRequests.slice(numErrorsFlushed * 2); // failedRequests contains 2 items for each error\r\n serverTelemEntity.errors = lastRequests.errors.slice(numErrorsFlushed);\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, serverTelemEntity);\r\n }\r\n };\r\n /**\r\n * Returns the maximum number of errors that can be flushed to the server in the next network request\r\n * @param serverTelemetryEntity\r\n */\r\n ServerTelemetryManager.maxErrorsToSend = function (serverTelemetryEntity) {\r\n var i;\r\n var maxErrors = 0;\r\n var dataSize = 0;\r\n var errorCount = serverTelemetryEntity.errors.length;\r\n for (i = 0; i < errorCount; i++) {\r\n // failedRequests parameter contains pairs of apiId and correlationId, multiply index by 2 to preserve pairs\r\n var apiId = serverTelemetryEntity.failedRequests[2 * i] || Constants.EMPTY_STRING;\r\n var correlationId = serverTelemetryEntity.failedRequests[2 * i + 1] || Constants.EMPTY_STRING;\r\n var errorCode = serverTelemetryEntity.errors[i] || Constants.EMPTY_STRING;\r\n // Count number of characters that would be added to header, each character is 1 byte. Add 3 at the end to account for separators\r\n dataSize += apiId.toString().length + correlationId.toString().length + errorCode.length + 3;\r\n if (dataSize < SERVER_TELEM_CONSTANTS.MAX_LAST_HEADER_BYTES) {\r\n // Adding this entry to the header would still keep header size below the limit\r\n maxErrors += 1;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n return maxErrors;\r\n };\r\n /**\r\n * Get the region discovery fields\r\n *\r\n * @returns string\r\n */\r\n ServerTelemetryManager.prototype.getRegionDiscoveryFields = function () {\r\n var regionDiscoveryFields = [];\r\n regionDiscoveryFields.push(this.regionUsed || Constants.EMPTY_STRING);\r\n regionDiscoveryFields.push(this.regionSource || Constants.EMPTY_STRING);\r\n regionDiscoveryFields.push(this.regionOutcome || Constants.EMPTY_STRING);\r\n return regionDiscoveryFields.join(\",\");\r\n };\r\n /**\r\n * Update the region discovery metadata\r\n *\r\n * @param regionDiscoveryMetadata\r\n * @returns void\r\n */\r\n ServerTelemetryManager.prototype.updateRegionDiscoveryMetadata = function (regionDiscoveryMetadata) {\r\n this.regionUsed = regionDiscoveryMetadata.region_used;\r\n this.regionSource = regionDiscoveryMetadata.region_source;\r\n this.regionOutcome = regionDiscoveryMetadata.region_outcome;\r\n };\r\n /**\r\n * Set cache outcome\r\n */\r\n ServerTelemetryManager.prototype.setCacheOutcome = function (cacheOutcome) {\r\n this.cacheOutcome = cacheOutcome;\r\n };\r\n return ServerTelemetryManager;\r\n}());\n\nexport { ServerTelemetryManager };\n","/*! @azure/msal-browser v2.32.2 2023-01-10 */\n'use strict';\nimport { __awaiter, __generator, __spread, __assign } from '../_virtual/_tslib.js';\nimport { AccountEntity, AuthenticationScheme, ClientConfigurationError, StringUtils, UrlString, ServerTelemetryManager, AuthorityFactory } from '@azure/msal-common';\nimport { version } from '../packageMetadata.js';\nimport { BrowserConstants } from '../utils/BrowserConstants.js';\nimport { BrowserUtils } from '../utils/BrowserUtils.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar BaseInteractionClient = /** @class */ (function () {\r\n function BaseInteractionClient(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId) {\r\n this.config = config;\r\n this.browserStorage = storageImpl;\r\n this.browserCrypto = browserCrypto;\r\n this.networkClient = this.config.system.networkClient;\r\n this.eventHandler = eventHandler;\r\n this.navigationClient = navigationClient;\r\n this.nativeMessageHandler = nativeMessageHandler;\r\n this.correlationId = correlationId || this.browserCrypto.createNewGuid();\r\n this.logger = logger.clone(BrowserConstants.MSAL_SKU, version, this.correlationId);\r\n this.performanceClient = performanceClient;\r\n }\r\n BaseInteractionClient.prototype.clearCacheOnLogout = function (account) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!account) return [3 /*break*/, 5];\r\n if (AccountEntity.accountInfoIsEqual(account, this.browserStorage.getActiveAccount(), false)) {\r\n this.logger.verbose(\"Setting active account to null\");\r\n this.browserStorage.setActiveAccount(null);\r\n }\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.browserStorage.removeAccount(AccountEntity.generateAccountCacheKey(account))];\r\n case 2:\r\n _a.sent();\r\n this.logger.verbose(\"Cleared cache items belonging to the account provided in the logout request.\");\r\n return [3 /*break*/, 4];\r\n case 3:\r\n _a.sent();\r\n this.logger.error(\"Account provided in logout request was not found. Local cache unchanged.\");\r\n return [3 /*break*/, 4];\r\n case 4: return [3 /*break*/, 9];\r\n case 5:\r\n _a.trys.push([5, 8, , 9]);\r\n this.logger.verbose(\"No account provided in logout request, clearing all cache items.\", this.correlationId);\r\n // Clear all accounts and tokens\r\n return [4 /*yield*/, this.browserStorage.clear()];\r\n case 6:\r\n // Clear all accounts and tokens\r\n _a.sent();\r\n // Clear any stray keys from IndexedDB\r\n return [4 /*yield*/, this.browserCrypto.clearKeystore()];\r\n case 7:\r\n // Clear any stray keys from IndexedDB\r\n _a.sent();\r\n return [3 /*break*/, 9];\r\n case 8:\r\n _a.sent();\r\n this.logger.error(\"Attempted to clear all MSAL cache items and failed. Local cache unchanged.\");\r\n return [3 /*break*/, 9];\r\n case 9: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Initializer function for all request APIs\r\n * @param request\r\n */\r\n BaseInteractionClient.prototype.initializeBaseRequest = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var authority, scopes, validatedRequest, _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n this.logger.verbose(\"Initializing BaseAuthRequest\");\r\n authority = request.authority || this.config.auth.authority;\r\n scopes = __spread(((request && request.scopes) || []));\r\n validatedRequest = __assign(__assign({}, request), { correlationId: this.correlationId, authority: authority,\r\n scopes: scopes });\r\n // Set authenticationScheme to BEARER if not explicitly set in the request\r\n if (!validatedRequest.authenticationScheme) {\r\n validatedRequest.authenticationScheme = AuthenticationScheme.BEARER;\r\n this.logger.verbose(\"Authentication Scheme wasn't explicitly set in request, defaulting to \\\"Bearer\\\" request\");\r\n }\r\n else {\r\n if (validatedRequest.authenticationScheme === AuthenticationScheme.SSH) {\r\n if (!request.sshJwk) {\r\n throw ClientConfigurationError.createMissingSshJwkError();\r\n }\r\n if (!request.sshKid) {\r\n throw ClientConfigurationError.createMissingSshKidError();\r\n }\r\n }\r\n this.logger.verbose(\"Authentication Scheme set to \\\"\" + validatedRequest.authenticationScheme + \"\\\" as configured in Auth request\");\r\n }\r\n if (!(request.claims && !StringUtils.isEmpty(request.claims))) return [3 /*break*/, 2];\r\n _a = validatedRequest;\r\n return [4 /*yield*/, this.browserCrypto.hashString(request.claims)];\r\n case 1:\r\n _a.requestedClaimsHash = _b.sent();\r\n _b.label = 2;\r\n case 2: return [2 /*return*/, validatedRequest];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n *\r\n * Use to get the redirect uri configured in MSAL or null.\r\n * @param requestRedirectUri\r\n * @returns Redirect URL\r\n *\r\n */\r\n BaseInteractionClient.prototype.getRedirectUri = function (requestRedirectUri) {\r\n this.logger.verbose(\"getRedirectUri called\");\r\n var redirectUri = requestRedirectUri || this.config.auth.redirectUri || BrowserUtils.getCurrentUri();\r\n return UrlString.getAbsoluteUrl(redirectUri, BrowserUtils.getCurrentUri());\r\n };\r\n /**\r\n *\r\n * @param apiId\r\n * @param correlationId\r\n * @param forceRefresh\r\n */\r\n BaseInteractionClient.prototype.initializeServerTelemetryManager = function (apiId, forceRefresh) {\r\n this.logger.verbose(\"initializeServerTelemetryManager called\");\r\n var telemetryPayload = {\r\n clientId: this.config.auth.clientId,\r\n correlationId: this.correlationId,\r\n apiId: apiId,\r\n forceRefresh: forceRefresh || false,\r\n wrapperSKU: this.browserStorage.getWrapperMetadata()[0],\r\n wrapperVer: this.browserStorage.getWrapperMetadata()[1]\r\n };\r\n return new ServerTelemetryManager(telemetryPayload, this.browserStorage);\r\n };\r\n /**\r\n * Used to get a discovered version of the default authority.\r\n * @param requestAuthority\r\n * @param requestCorrelationId\r\n */\r\n BaseInteractionClient.prototype.getDiscoveredAuthority = function (requestAuthority) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var authorityOptions;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.verbose(\"getDiscoveredAuthority called\");\r\n authorityOptions = {\r\n protocolMode: this.config.auth.protocolMode,\r\n knownAuthorities: this.config.auth.knownAuthorities,\r\n cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata,\r\n authorityMetadata: this.config.auth.authorityMetadata\r\n };\r\n if (!requestAuthority) return [3 /*break*/, 2];\r\n this.logger.verbose(\"Creating discovered authority with request authority\");\r\n return [4 /*yield*/, AuthorityFactory.createDiscoveredInstance(requestAuthority, this.config.system.networkClient, this.browserStorage, authorityOptions, this.logger)];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n case 2:\r\n this.logger.verbose(\"Creating discovered authority with configured authority\");\r\n return [4 /*yield*/, AuthorityFactory.createDiscoveredInstance(this.config.auth.authority, this.config.system.networkClient, this.browserStorage, authorityOptions, this.logger)];\r\n case 3: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n };\r\n return BaseInteractionClient;\r\n}());\n\nexport { BaseInteractionClient };\n","/*! @azure/msal-browser v2.32.2 2023-01-10 */\n'use strict';\nimport { __extends, __awaiter, __generator, __assign } from '../_virtual/_tslib.js';\nimport { UrlString, Constants, AuthorizationCodeClient, PerformanceEvents, Authority, AuthorityFactory, ResponseMode, StringUtils, ProtocolUtils } from '@azure/msal-common';\nimport { BaseInteractionClient } from './BaseInteractionClient.js';\nimport { BrowserConstants } from '../utils/BrowserConstants.js';\nimport { version } from '../packageMetadata.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { BrowserProtocolUtils } from '../utils/BrowserProtocolUtils.js';\nimport { BrowserUtils } from '../utils/BrowserUtils.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Defines the class structure and helper functions used by the \"standard\", non-brokered auth flows (popup, redirect, silent (RT), silent (iframe))\r\n */\r\nvar StandardInteractionClient = /** @class */ (function (_super) {\r\n __extends(StandardInteractionClient, _super);\r\n function StandardInteractionClient() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n /**\r\n * Generates an auth code request tied to the url request.\r\n * @param request\r\n */\r\n StandardInteractionClient.prototype.initializeAuthorizationCodeRequest = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var generatedPkceParams, authCodeRequest;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.verbose(\"initializeAuthorizationRequest called\", request.correlationId);\r\n return [4 /*yield*/, this.browserCrypto.generatePkceCodes()];\r\n case 1:\r\n generatedPkceParams = _a.sent();\r\n authCodeRequest = __assign(__assign({}, request), { redirectUri: request.redirectUri, code: Constants.EMPTY_STRING, codeVerifier: generatedPkceParams.verifier });\r\n request.codeChallenge = generatedPkceParams.challenge;\r\n request.codeChallengeMethod = Constants.S256_CODE_CHALLENGE_METHOD;\r\n return [2 /*return*/, authCodeRequest];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Initializer for the logout request.\r\n * @param logoutRequest\r\n */\r\n StandardInteractionClient.prototype.initializeLogoutRequest = function (logoutRequest) {\r\n this.logger.verbose(\"initializeLogoutRequest called\", logoutRequest === null || logoutRequest === void 0 ? void 0 : logoutRequest.correlationId);\r\n var validLogoutRequest = __assign({ correlationId: this.correlationId || this.browserCrypto.createNewGuid() }, logoutRequest);\r\n /**\r\n * Set logout_hint to be login_hint from ID Token Claims if present\r\n * and logoutHint attribute wasn't manually set in logout request\r\n */\r\n if (logoutRequest) {\r\n // If logoutHint isn't set and an account was passed in, try to extract logoutHint from ID Token Claims\r\n if (!logoutRequest.logoutHint) {\r\n if (logoutRequest.account) {\r\n var logoutHint = this.getLogoutHintFromIdTokenClaims(logoutRequest.account);\r\n if (logoutHint) {\r\n this.logger.verbose(\"Setting logoutHint to login_hint ID Token Claim value for the account provided\");\r\n validLogoutRequest.logoutHint = logoutHint;\r\n }\r\n }\r\n else {\r\n this.logger.verbose(\"logoutHint was not set and account was not passed into logout request, logoutHint will not be set\");\r\n }\r\n }\r\n else {\r\n this.logger.verbose(\"logoutHint has already been set in logoutRequest\");\r\n }\r\n }\r\n else {\r\n this.logger.verbose(\"logoutHint will not be set since no logout request was configured\");\r\n }\r\n /*\r\n * Only set redirect uri if logout request isn't provided or the set uri isn't null.\r\n * Otherwise, use passed uri, config, or current page.\r\n */\r\n if (!logoutRequest || logoutRequest.postLogoutRedirectUri !== null) {\r\n if (logoutRequest && logoutRequest.postLogoutRedirectUri) {\r\n this.logger.verbose(\"Setting postLogoutRedirectUri to uri set on logout request\", validLogoutRequest.correlationId);\r\n validLogoutRequest.postLogoutRedirectUri = UrlString.getAbsoluteUrl(logoutRequest.postLogoutRedirectUri, BrowserUtils.getCurrentUri());\r\n }\r\n else if (this.config.auth.postLogoutRedirectUri === null) {\r\n this.logger.verbose(\"postLogoutRedirectUri configured as null and no uri set on request, not passing post logout redirect\", validLogoutRequest.correlationId);\r\n }\r\n else if (this.config.auth.postLogoutRedirectUri) {\r\n this.logger.verbose(\"Setting postLogoutRedirectUri to configured uri\", validLogoutRequest.correlationId);\r\n validLogoutRequest.postLogoutRedirectUri = UrlString.getAbsoluteUrl(this.config.auth.postLogoutRedirectUri, BrowserUtils.getCurrentUri());\r\n }\r\n else {\r\n this.logger.verbose(\"Setting postLogoutRedirectUri to current page\", validLogoutRequest.correlationId);\r\n validLogoutRequest.postLogoutRedirectUri = UrlString.getAbsoluteUrl(BrowserUtils.getCurrentUri(), BrowserUtils.getCurrentUri());\r\n }\r\n }\r\n else {\r\n this.logger.verbose(\"postLogoutRedirectUri passed as null, not setting post logout redirect uri\", validLogoutRequest.correlationId);\r\n }\r\n return validLogoutRequest;\r\n };\r\n /**\r\n * Parses login_hint ID Token Claim out of AccountInfo object to be used as\r\n * logout_hint in end session request.\r\n * @param account\r\n */\r\n StandardInteractionClient.prototype.getLogoutHintFromIdTokenClaims = function (account) {\r\n var idTokenClaims = account.idTokenClaims;\r\n if (idTokenClaims) {\r\n if (idTokenClaims.login_hint) {\r\n return idTokenClaims.login_hint;\r\n }\r\n else {\r\n this.logger.verbose(\"The ID Token Claims tied to the provided account do not contain a login_hint claim, logoutHint will not be added to logout request\");\r\n }\r\n }\r\n else {\r\n this.logger.verbose(\"The provided account does not contain ID Token Claims, logoutHint will not be added to logout request\");\r\n }\r\n return null;\r\n };\r\n /**\r\n * Creates an Authorization Code Client with the given authority, or the default authority.\r\n * @param serverTelemetryManager\r\n * @param authorityUrl\r\n */\r\n StandardInteractionClient.prototype.createAuthCodeClient = function (serverTelemetryManager, authorityUrl, requestAzureCloudOptions) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var clientConfig;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.getClientConfiguration(serverTelemetryManager, authorityUrl, requestAzureCloudOptions)];\r\n case 1:\r\n clientConfig = _a.sent();\r\n return [2 /*return*/, new AuthorizationCodeClient(clientConfig)];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Creates a Client Configuration object with the given request authority, or the default authority.\r\n * @param serverTelemetryManager\r\n * @param requestAuthority\r\n * @param requestCorrelationId\r\n */\r\n StandardInteractionClient.prototype.getClientConfiguration = function (serverTelemetryManager, requestAuthority, requestAzureCloudOptions) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var discoveredAuthority, logger;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.verbose(\"getClientConfiguration called\", this.correlationId);\r\n return [4 /*yield*/, this.getDiscoveredAuthority(requestAuthority, requestAzureCloudOptions)];\r\n case 1:\r\n discoveredAuthority = _a.sent();\r\n logger = this.config.system.loggerOptions;\r\n return [2 /*return*/, {\r\n authOptions: {\r\n clientId: this.config.auth.clientId,\r\n authority: discoveredAuthority,\r\n clientCapabilities: this.config.auth.clientCapabilities\r\n },\r\n systemOptions: {\r\n tokenRenewalOffsetSeconds: this.config.system.tokenRenewalOffsetSeconds,\r\n preventCorsPreflight: true\r\n },\r\n loggerOptions: {\r\n loggerCallback: logger.loggerCallback,\r\n piiLoggingEnabled: logger.piiLoggingEnabled,\r\n logLevel: logger.logLevel,\r\n correlationId: this.correlationId\r\n },\r\n cryptoInterface: this.browserCrypto,\r\n networkInterface: this.networkClient,\r\n storageInterface: this.browserStorage,\r\n serverTelemetryManager: serverTelemetryManager,\r\n libraryInfo: {\r\n sku: BrowserConstants.MSAL_SKU,\r\n version: version,\r\n cpu: Constants.EMPTY_STRING,\r\n os: Constants.EMPTY_STRING\r\n },\r\n telemetry: this.config.telemetry\r\n }];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * @param hash\r\n * @param interactionType\r\n */\r\n StandardInteractionClient.prototype.validateAndExtractStateFromHash = function (serverParams, interactionType, requestCorrelationId) {\r\n this.logger.verbose(\"validateAndExtractStateFromHash called\", requestCorrelationId);\r\n if (!serverParams.state) {\r\n throw BrowserAuthError.createHashDoesNotContainStateError();\r\n }\r\n var platformStateObj = BrowserProtocolUtils.extractBrowserRequestState(this.browserCrypto, serverParams.state);\r\n if (!platformStateObj) {\r\n throw BrowserAuthError.createUnableToParseStateError();\r\n }\r\n if (platformStateObj.interactionType !== interactionType) {\r\n throw BrowserAuthError.createStateInteractionTypeMismatchError();\r\n }\r\n this.logger.verbose(\"Returning state from hash\", requestCorrelationId);\r\n return serverParams.state;\r\n };\r\n /**\r\n * Used to get a discovered version of the default authority.\r\n * @param requestAuthority\r\n * @param requestCorrelationId\r\n */\r\n StandardInteractionClient.prototype.getDiscoveredAuthority = function (requestAuthority, requestAzureCloudOptions) {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var getAuthorityMeasurement, authorityOptions, userAuthority, builtAuthority;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n this.logger.verbose(\"getDiscoveredAuthority called\", this.correlationId);\r\n getAuthorityMeasurement = (_a = this.performanceClient) === null || _a === void 0 ? void 0 : _a.startMeasurement(PerformanceEvents.StandardInteractionClientGetDiscoveredAuthority, this.correlationId);\r\n authorityOptions = {\r\n protocolMode: this.config.auth.protocolMode,\r\n knownAuthorities: this.config.auth.knownAuthorities,\r\n cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata,\r\n authorityMetadata: this.config.auth.authorityMetadata,\r\n skipAuthorityMetadataCache: this.config.auth.skipAuthorityMetadataCache\r\n };\r\n userAuthority = requestAuthority ? requestAuthority : this.config.auth.authority;\r\n builtAuthority = Authority.generateAuthority(userAuthority, requestAzureCloudOptions || this.config.auth.azureCloudOptions);\r\n this.logger.verbose(\"Creating discovered authority with configured authority\", this.correlationId);\r\n return [4 /*yield*/, AuthorityFactory.createDiscoveredInstance(builtAuthority, this.config.system.networkClient, this.browserStorage, authorityOptions, this.logger)\r\n .then(function (result) {\r\n getAuthorityMeasurement.endMeasurement({\r\n success: true,\r\n });\r\n return result;\r\n })\r\n .catch(function (error) {\r\n getAuthorityMeasurement.endMeasurement({\r\n errorCode: error.errorCode,\r\n subErrorCode: error.subError,\r\n success: false\r\n });\r\n throw error;\r\n })];\r\n case 1: return [2 /*return*/, _b.sent()];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Helper to initialize required request parameters for interactive APIs and ssoSilent()\r\n * @param request\r\n * @param interactionType\r\n */\r\n StandardInteractionClient.prototype.initializeAuthorizationRequest = function (request, interactionType) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var redirectUri, browserState, state, validatedRequest, _a, account, legacyLoginHint;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n this.logger.verbose(\"initializeAuthorizationRequest called\", this.correlationId);\r\n redirectUri = this.getRedirectUri(request.redirectUri);\r\n browserState = {\r\n interactionType: interactionType\r\n };\r\n state = ProtocolUtils.setRequestState(this.browserCrypto, (request && request.state) || Constants.EMPTY_STRING, browserState);\r\n _a = [{}];\r\n return [4 /*yield*/, this.initializeBaseRequest(request)];\r\n case 1:\r\n validatedRequest = __assign.apply(void 0, [__assign.apply(void 0, _a.concat([_b.sent()])), { redirectUri: redirectUri, state: state, nonce: request.nonce || this.browserCrypto.createNewGuid(), responseMode: ResponseMode.FRAGMENT }]);\r\n account = request.account || this.browserStorage.getActiveAccount();\r\n if (account) {\r\n this.logger.verbose(\"Setting validated request account\", this.correlationId);\r\n this.logger.verbosePii(\"Setting validated request account: \" + account.homeAccountId, this.correlationId);\r\n validatedRequest.account = account;\r\n }\r\n // Check for ADAL/MSAL v1 SSO\r\n if (StringUtils.isEmpty(validatedRequest.loginHint) && !account) {\r\n legacyLoginHint = this.browserStorage.getLegacyLoginHint();\r\n if (legacyLoginHint) {\r\n validatedRequest.loginHint = legacyLoginHint;\r\n }\r\n }\r\n return [2 /*return*/, validatedRequest];\r\n }\r\n });\r\n });\r\n };\r\n return StandardInteractionClient;\r\n}(BaseInteractionClient));\n\nexport { StandardInteractionClient };\n","/*! @azure/msal-browser v2.32.2 2023-01-10 */\n'use strict';\nimport { __extends } from '../_virtual/_tslib.js';\nimport { InteractionRequiredAuthError, AuthError } from '@azure/msal-common';\nimport { BrowserAuthError } from './BrowserAuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar NativeStatusCode;\r\n(function (NativeStatusCode) {\r\n NativeStatusCode[\"USER_INTERACTION_REQUIRED\"] = \"USER_INTERACTION_REQUIRED\";\r\n NativeStatusCode[\"USER_CANCEL\"] = \"USER_CANCEL\";\r\n NativeStatusCode[\"NO_NETWORK\"] = \"NO_NETWORK\";\r\n NativeStatusCode[\"TRANSIENT_ERROR\"] = \"TRANSIENT_ERROR\";\r\n NativeStatusCode[\"PERSISTENT_ERROR\"] = \"PERSISTENT_ERROR\";\r\n NativeStatusCode[\"DISABLED\"] = \"DISABLED\";\r\n NativeStatusCode[\"ACCOUNT_UNAVAILABLE\"] = \"ACCOUNT_UNAVAILABLE\";\r\n})(NativeStatusCode || (NativeStatusCode = {}));\r\nvar NativeAuthErrorMessage = {\r\n extensionError: {\r\n code: \"ContentError\"\r\n },\r\n userSwitch: {\r\n code: \"user_switch\",\r\n desc: \"User attempted to switch accounts in the native broker, which is not allowed. All new accounts must sign-in through the standard web flow first, please try again.\"\r\n },\r\n tokensNotFoundInCache: {\r\n code: \"tokens_not_found_in_internal_memory_cache\",\r\n desc: \"Tokens not cached in MSAL JS internal memory, please make the WAM request\"\r\n }\r\n};\r\nvar NativeAuthError = /** @class */ (function (_super) {\r\n __extends(NativeAuthError, _super);\r\n function NativeAuthError(errorCode, description, ext) {\r\n var _this = _super.call(this, errorCode, description) || this;\r\n Object.setPrototypeOf(_this, NativeAuthError.prototype);\r\n _this.name = \"NativeAuthError\";\r\n _this.ext = ext;\r\n return _this;\r\n }\r\n /**\r\n * These errors should result in a fallback to the 'standard' browser based auth flow.\r\n */\r\n NativeAuthError.prototype.isFatal = function () {\r\n if (this.ext && this.ext.status && (this.ext.status === NativeStatusCode.PERSISTENT_ERROR || this.ext.status === NativeStatusCode.DISABLED)) {\r\n return true;\r\n }\r\n switch (this.errorCode) {\r\n case NativeAuthErrorMessage.extensionError.code:\r\n return true;\r\n default:\r\n return false;\r\n }\r\n };\r\n /**\r\n * Create the appropriate error object based on the WAM status code.\r\n * @param code\r\n * @param description\r\n * @param ext\r\n * @returns\r\n */\r\n NativeAuthError.createError = function (code, description, ext) {\r\n if (ext && ext.status) {\r\n switch (ext.status) {\r\n case NativeStatusCode.ACCOUNT_UNAVAILABLE:\r\n return InteractionRequiredAuthError.createNativeAccountUnavailableError();\r\n case NativeStatusCode.USER_INTERACTION_REQUIRED:\r\n return new InteractionRequiredAuthError(code, description);\r\n case NativeStatusCode.USER_CANCEL:\r\n return BrowserAuthError.createUserCancelledError();\r\n case NativeStatusCode.NO_NETWORK:\r\n return BrowserAuthError.createNoNetworkConnectivityError();\r\n }\r\n }\r\n return new NativeAuthError(code, description, ext);\r\n };\r\n /**\r\n * Creates user switch error when the user chooses a different account in the native broker prompt\r\n * @returns\r\n */\r\n NativeAuthError.createUserSwitchError = function () {\r\n return new NativeAuthError(NativeAuthErrorMessage.userSwitch.code, NativeAuthErrorMessage.userSwitch.desc);\r\n };\r\n /**\r\n * Creates a tokens not found error when the internal cache look up fails\r\n * @returns NativeAuthError: tokensNotFoundInCache\r\n */\r\n NativeAuthError.createTokensNotFoundInCacheError = function () {\r\n return new NativeAuthError(NativeAuthErrorMessage.tokensNotFoundInCache.code, NativeAuthErrorMessage.tokensNotFoundInCache.desc);\r\n };\r\n return NativeAuthError;\r\n}(AuthError));\n\nexport { NativeAuthError, NativeAuthErrorMessage, NativeStatusCode };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\nimport { __extends, __awaiter, __generator, __assign } from '../_virtual/_tslib.js';\nimport { BaseClient } from './BaseClient.js';\nimport { RequestParameterBuilder } from '../request/RequestParameterBuilder.js';\nimport { AuthenticationScheme, GrantType, HeaderNames, Errors } from '../utils/Constants.js';\nimport { ResponseHandler } from '../response/ResponseHandler.js';\nimport { PopTokenGenerator } from '../crypto/PopTokenGenerator.js';\nimport { StringUtils } from '../utils/StringUtils.js';\nimport { ClientConfigurationError } from '../error/ClientConfigurationError.js';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\nimport { ServerError } from '../error/ServerError.js';\nimport { TimeUtils } from '../utils/TimeUtils.js';\nimport { UrlString } from '../url/UrlString.js';\nimport { CcsCredentialType } from '../account/CcsCredential.js';\nimport { buildClientInfoFromHomeAccountId } from '../account/ClientInfo.js';\nimport { InteractionRequiredAuthError, InteractionRequiredAuthErrorMessage } from '../error/InteractionRequiredAuthError.js';\nimport { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * OAuth2.0 refresh token client\r\n */\r\nvar RefreshTokenClient = /** @class */ (function (_super) {\r\n __extends(RefreshTokenClient, _super);\r\n function RefreshTokenClient(configuration, performanceClient) {\r\n return _super.call(this, configuration, performanceClient) || this;\r\n }\r\n RefreshTokenClient.prototype.acquireToken = function (request) {\r\n var _a, _b, _c, _d;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var atsMeasurement, reqTimestamp, response, httpVerToken, requestId, responseHandler;\r\n var _this = this;\r\n return __generator(this, function (_e) {\r\n switch (_e.label) {\r\n case 0:\r\n atsMeasurement = (_a = this.performanceClient) === null || _a === void 0 ? void 0 : _a.startMeasurement(PerformanceEvents.RefreshTokenClientAcquireToken, request.correlationId);\r\n this.logger.verbose(\"RefreshTokenClientAcquireToken called\", request.correlationId);\r\n reqTimestamp = TimeUtils.nowSeconds();\r\n return [4 /*yield*/, this.executeTokenRequest(request, this.authority)];\r\n case 1:\r\n response = _e.sent();\r\n httpVerToken = (_b = response.headers) === null || _b === void 0 ? void 0 : _b[HeaderNames.X_MS_HTTP_VERSION];\r\n atsMeasurement === null || atsMeasurement === void 0 ? void 0 : atsMeasurement.addStaticFields({\r\n refreshTokenSize: ((_c = response.body.refresh_token) === null || _c === void 0 ? void 0 : _c.length) || 0,\r\n });\r\n if (httpVerToken) {\r\n atsMeasurement === null || atsMeasurement === void 0 ? void 0 : atsMeasurement.addStaticFields({\r\n httpVerToken: httpVerToken,\r\n });\r\n }\r\n requestId = (_d = response.headers) === null || _d === void 0 ? void 0 : _d[HeaderNames.X_MS_REQUEST_ID];\r\n responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin);\r\n responseHandler.validateTokenResponse(response.body);\r\n return [2 /*return*/, responseHandler.handleServerTokenResponse(response.body, this.authority, reqTimestamp, request, undefined, undefined, true, request.forceCache, requestId).then(function (result) {\r\n atsMeasurement === null || atsMeasurement === void 0 ? void 0 : atsMeasurement.endMeasurement({\r\n success: true\r\n });\r\n return result;\r\n })\r\n .catch(function (error) {\r\n _this.logger.verbose(\"Error in fetching refresh token\", request.correlationId);\r\n atsMeasurement === null || atsMeasurement === void 0 ? void 0 : atsMeasurement.endMeasurement({\r\n errorCode: error.errorCode,\r\n subErrorCode: error.subError,\r\n success: false\r\n });\r\n throw error;\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Gets cached refresh token and attaches to request, then calls acquireToken API\r\n * @param request\r\n */\r\n RefreshTokenClient.prototype.acquireTokenByRefreshToken = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var isFOCI, noFamilyRTInCache, clientMismatchErrorWithFamilyRT;\r\n return __generator(this, function (_a) {\r\n // Cannot renew token if no request object is given.\r\n if (!request) {\r\n throw ClientConfigurationError.createEmptyTokenRequestError();\r\n }\r\n // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases\r\n if (!request.account) {\r\n throw ClientAuthError.createNoAccountInSilentRequestError();\r\n }\r\n isFOCI = this.cacheManager.isAppMetadataFOCI(request.account.environment, this.config.authOptions.clientId);\r\n // if the app is part of the family, retrive a Family refresh token if present and make a refreshTokenRequest\r\n if (isFOCI) {\r\n try {\r\n return [2 /*return*/, this.acquireTokenWithCachedRefreshToken(request, true)];\r\n }\r\n catch (e) {\r\n noFamilyRTInCache = e instanceof InteractionRequiredAuthError && e.errorCode === InteractionRequiredAuthErrorMessage.noTokensFoundError.code;\r\n clientMismatchErrorWithFamilyRT = e instanceof ServerError && e.errorCode === Errors.INVALID_GRANT_ERROR && e.subError === Errors.CLIENT_MISMATCH_ERROR;\r\n // if family Refresh Token (FRT) cache acquisition fails or if client_mismatch error is seen with FRT, reattempt with application Refresh Token (ART)\r\n if (noFamilyRTInCache || clientMismatchErrorWithFamilyRT) {\r\n return [2 /*return*/, this.acquireTokenWithCachedRefreshToken(request, false)];\r\n // throw in all other cases\r\n }\r\n else {\r\n throw e;\r\n }\r\n }\r\n }\r\n // fall back to application refresh token acquisition\r\n return [2 /*return*/, this.acquireTokenWithCachedRefreshToken(request, false)];\r\n });\r\n });\r\n };\r\n /**\r\n * makes a network call to acquire tokens by exchanging RefreshToken available in userCache; throws if refresh token is not cached\r\n * @param request\r\n */\r\n RefreshTokenClient.prototype.acquireTokenWithCachedRefreshToken = function (request, foci) {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var atsMeasurement, refreshToken, refreshTokenRequest;\r\n return __generator(this, function (_b) {\r\n atsMeasurement = (_a = this.performanceClient) === null || _a === void 0 ? void 0 : _a.startMeasurement(PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, request.correlationId);\r\n this.logger.verbose(\"RefreshTokenClientAcquireTokenWithCachedRefreshToken called\", request.correlationId);\r\n refreshToken = this.cacheManager.readRefreshTokenFromCache(this.config.authOptions.clientId, request.account, foci);\r\n if (!refreshToken) {\r\n atsMeasurement === null || atsMeasurement === void 0 ? void 0 : atsMeasurement.discardMeasurement();\r\n throw InteractionRequiredAuthError.createNoTokensFoundError();\r\n }\r\n // attach cached RT size to the current measurement\r\n atsMeasurement === null || atsMeasurement === void 0 ? void 0 : atsMeasurement.endMeasurement({\r\n success: true\r\n });\r\n refreshTokenRequest = __assign(__assign({}, request), { refreshToken: refreshToken.secret, authenticationScheme: request.authenticationScheme || AuthenticationScheme.BEARER, ccsCredential: {\r\n credential: request.account.homeAccountId,\r\n type: CcsCredentialType.HOME_ACCOUNT_ID\r\n } });\r\n return [2 /*return*/, this.acquireToken(refreshTokenRequest)];\r\n });\r\n });\r\n };\r\n /**\r\n * Constructs the network message and makes a NW call to the underlying secure token service\r\n * @param request\r\n * @param authority\r\n */\r\n RefreshTokenClient.prototype.executeTokenRequest = function (request, authority) {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var acquireTokenMeasurement, requestBody, queryParameters, headers, thumbprint, endpoint;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n acquireTokenMeasurement = (_a = this.performanceClient) === null || _a === void 0 ? void 0 : _a.startMeasurement(PerformanceEvents.RefreshTokenClientExecuteTokenRequest, request.correlationId);\r\n return [4 /*yield*/, this.createTokenRequestBody(request)];\r\n case 1:\r\n requestBody = _b.sent();\r\n queryParameters = this.createTokenQueryParameters(request);\r\n headers = this.createTokenRequestHeaders(request.ccsCredential);\r\n thumbprint = {\r\n clientId: this.config.authOptions.clientId,\r\n authority: authority.canonicalAuthority,\r\n scopes: request.scopes,\r\n claims: request.claims,\r\n authenticationScheme: request.authenticationScheme,\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n resourceRequestUri: request.resourceRequestUri,\r\n shrClaims: request.shrClaims,\r\n sshKid: request.sshKid\r\n };\r\n endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParameters);\r\n return [2 /*return*/, this.executePostToTokenEndpoint(endpoint, requestBody, headers, thumbprint)\r\n .then(function (result) {\r\n acquireTokenMeasurement === null || acquireTokenMeasurement === void 0 ? void 0 : acquireTokenMeasurement.endMeasurement({\r\n success: true\r\n });\r\n return result;\r\n })\r\n .catch(function (error) {\r\n acquireTokenMeasurement === null || acquireTokenMeasurement === void 0 ? void 0 : acquireTokenMeasurement.endMeasurement({\r\n success: false\r\n });\r\n throw error;\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Creates query string for the /token request\r\n * @param request\r\n */\r\n RefreshTokenClient.prototype.createTokenQueryParameters = function (request) {\r\n var parameterBuilder = new RequestParameterBuilder();\r\n if (request.tokenQueryParameters) {\r\n parameterBuilder.addExtraQueryParameters(request.tokenQueryParameters);\r\n }\r\n return parameterBuilder.createQueryString();\r\n };\r\n /**\r\n * Helper function to create the token request body\r\n * @param request\r\n */\r\n RefreshTokenClient.prototype.createTokenRequestBody = function (request) {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var correlationId, acquireTokenMeasurement, parameterBuilder, clientAssertion, popTokenGenerator, reqCnfData, clientInfo;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n correlationId = request.correlationId;\r\n acquireTokenMeasurement = (_a = this.performanceClient) === null || _a === void 0 ? void 0 : _a.startMeasurement(PerformanceEvents.BaseClientCreateTokenRequestHeaders, correlationId);\r\n parameterBuilder = new RequestParameterBuilder();\r\n parameterBuilder.addClientId(this.config.authOptions.clientId);\r\n parameterBuilder.addScopes(request.scopes);\r\n parameterBuilder.addGrantType(GrantType.REFRESH_TOKEN_GRANT);\r\n parameterBuilder.addClientInfo();\r\n parameterBuilder.addLibraryInfo(this.config.libraryInfo);\r\n parameterBuilder.addApplicationTelemetry(this.config.telemetry.application);\r\n parameterBuilder.addThrottling();\r\n if (this.serverTelemetryManager) {\r\n parameterBuilder.addServerTelemetry(this.serverTelemetryManager);\r\n }\r\n parameterBuilder.addCorrelationId(correlationId);\r\n parameterBuilder.addRefreshToken(request.refreshToken);\r\n if (this.config.clientCredentials.clientSecret) {\r\n parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret);\r\n }\r\n if (this.config.clientCredentials.clientAssertion) {\r\n clientAssertion = this.config.clientCredentials.clientAssertion;\r\n parameterBuilder.addClientAssertion(clientAssertion.assertion);\r\n parameterBuilder.addClientAssertionType(clientAssertion.assertionType);\r\n }\r\n if (!(request.authenticationScheme === AuthenticationScheme.POP)) return [3 /*break*/, 2];\r\n popTokenGenerator = new PopTokenGenerator(this.cryptoUtils);\r\n return [4 /*yield*/, popTokenGenerator.generateCnf(request)];\r\n case 1:\r\n reqCnfData = _b.sent();\r\n // SPA PoP requires full Base64Url encoded req_cnf string (unhashed)\r\n parameterBuilder.addPopToken(reqCnfData.reqCnfString);\r\n return [3 /*break*/, 3];\r\n case 2:\r\n if (request.authenticationScheme === AuthenticationScheme.SSH) {\r\n if (request.sshJwk) {\r\n parameterBuilder.addSshJwk(request.sshJwk);\r\n }\r\n else {\r\n acquireTokenMeasurement === null || acquireTokenMeasurement === void 0 ? void 0 : acquireTokenMeasurement.endMeasurement({\r\n success: false\r\n });\r\n throw ClientConfigurationError.createMissingSshJwkError();\r\n }\r\n }\r\n _b.label = 3;\r\n case 3:\r\n if (!StringUtils.isEmptyObj(request.claims) || this.config.authOptions.clientCapabilities && this.config.authOptions.clientCapabilities.length > 0) {\r\n parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n if (this.config.systemOptions.preventCorsPreflight && request.ccsCredential) {\r\n switch (request.ccsCredential.type) {\r\n case CcsCredentialType.HOME_ACCOUNT_ID:\r\n try {\r\n clientInfo = buildClientInfoFromHomeAccountId(request.ccsCredential.credential);\r\n parameterBuilder.addCcsOid(clientInfo);\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse home account ID for CCS Header: \" + e);\r\n }\r\n break;\r\n case CcsCredentialType.UPN:\r\n parameterBuilder.addCcsUpn(request.ccsCredential.credential);\r\n break;\r\n }\r\n }\r\n acquireTokenMeasurement === null || acquireTokenMeasurement === void 0 ? void 0 : acquireTokenMeasurement.endMeasurement({\r\n success: true\r\n });\r\n return [2 /*return*/, parameterBuilder.createQueryString()];\r\n }\r\n });\r\n });\r\n };\r\n return RefreshTokenClient;\r\n}(BaseClient));\n\nexport { RefreshTokenClient };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\nimport { __extends, __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { BaseClient } from './BaseClient.js';\nimport { AuthToken } from '../account/AuthToken.js';\nimport { TimeUtils } from '../utils/TimeUtils.js';\nimport { RefreshTokenClient } from './RefreshTokenClient.js';\nimport { ClientAuthError, ClientAuthErrorMessage } from '../error/ClientAuthError.js';\nimport { ClientConfigurationError } from '../error/ClientConfigurationError.js';\nimport { ResponseHandler } from '../response/ResponseHandler.js';\nimport { CacheOutcome } from '../utils/Constants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar SilentFlowClient = /** @class */ (function (_super) {\r\n __extends(SilentFlowClient, _super);\r\n function SilentFlowClient(configuration, performanceClient) {\r\n return _super.call(this, configuration, performanceClient) || this;\r\n }\r\n /**\r\n * Retrieves a token from cache if it is still valid, or uses the cached refresh token to renew\r\n * the given token and returns the renewed token\r\n * @param request\r\n */\r\n SilentFlowClient.prototype.acquireToken = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var e_1, refreshTokenClient;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4 /*yield*/, this.acquireCachedToken(request)];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n case 2:\r\n e_1 = _a.sent();\r\n if (e_1 instanceof ClientAuthError && e_1.errorCode === ClientAuthErrorMessage.tokenRefreshRequired.code) {\r\n refreshTokenClient = new RefreshTokenClient(this.config, this.performanceClient);\r\n return [2 /*return*/, refreshTokenClient.acquireTokenByRefreshToken(request)];\r\n }\r\n else {\r\n throw e_1;\r\n }\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Retrieves token from cache or throws an error if it must be refreshed.\r\n * @param request\r\n */\r\n SilentFlowClient.prototype.acquireCachedToken = function (request) {\r\n var _a, _b, _c, _d;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var environment, cacheRecord;\r\n return __generator(this, function (_e) {\r\n switch (_e.label) {\r\n case 0:\r\n // Cannot renew token if no request object is given.\r\n if (!request) {\r\n throw ClientConfigurationError.createEmptyTokenRequestError();\r\n }\r\n if (request.forceRefresh) {\r\n // Must refresh due to present force_refresh flag.\r\n (_a = this.serverTelemetryManager) === null || _a === void 0 ? void 0 : _a.setCacheOutcome(CacheOutcome.FORCE_REFRESH);\r\n this.logger.info(\"SilentFlowClient:acquireCachedToken - Skipping cache because forceRefresh is true.\");\r\n throw ClientAuthError.createRefreshRequiredError();\r\n }\r\n // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases\r\n if (!request.account) {\r\n throw ClientAuthError.createNoAccountInSilentRequestError();\r\n }\r\n environment = request.authority || this.authority.getPreferredCache();\r\n cacheRecord = this.cacheManager.readCacheRecord(request.account, this.config.authOptions.clientId, request, environment);\r\n if (!cacheRecord.accessToken) {\r\n // Must refresh due to non-existent access_token.\r\n (_b = this.serverTelemetryManager) === null || _b === void 0 ? void 0 : _b.setCacheOutcome(CacheOutcome.NO_CACHED_ACCESS_TOKEN);\r\n this.logger.info(\"SilentFlowClient:acquireCachedToken - No access token found in cache for the given properties.\");\r\n throw ClientAuthError.createRefreshRequiredError();\r\n }\r\n else if (TimeUtils.wasClockTurnedBack(cacheRecord.accessToken.cachedAt) ||\r\n TimeUtils.isTokenExpired(cacheRecord.accessToken.expiresOn, this.config.systemOptions.tokenRenewalOffsetSeconds)) {\r\n // Must refresh due to expired access_token.\r\n (_c = this.serverTelemetryManager) === null || _c === void 0 ? void 0 : _c.setCacheOutcome(CacheOutcome.CACHED_ACCESS_TOKEN_EXPIRED);\r\n this.logger.info(\"SilentFlowClient:acquireCachedToken - Cached access token is expired or will expire within \" + this.config.systemOptions.tokenRenewalOffsetSeconds + \" seconds.\");\r\n throw ClientAuthError.createRefreshRequiredError();\r\n }\r\n else if (cacheRecord.accessToken.refreshOn && TimeUtils.isTokenExpired(cacheRecord.accessToken.refreshOn, 0)) {\r\n // Must refresh due to the refresh_in value.\r\n (_d = this.serverTelemetryManager) === null || _d === void 0 ? void 0 : _d.setCacheOutcome(CacheOutcome.REFRESH_CACHED_ACCESS_TOKEN);\r\n this.logger.info(\"SilentFlowClient:acquireCachedToken - Cached access token's refreshOn property has been exceeded'.\");\r\n throw ClientAuthError.createRefreshRequiredError();\r\n }\r\n if (this.config.serverTelemetryManager) {\r\n this.config.serverTelemetryManager.incrementCacheHits();\r\n }\r\n return [4 /*yield*/, this.generateResultFromCacheRecord(cacheRecord, request)];\r\n case 1: return [2 /*return*/, _e.sent()];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Helper function to build response object from the CacheRecord\r\n * @param cacheRecord\r\n */\r\n SilentFlowClient.prototype.generateResultFromCacheRecord = function (cacheRecord, request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var idTokenObj, authTime;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (cacheRecord.idToken) {\r\n idTokenObj = new AuthToken(cacheRecord.idToken.secret, this.config.cryptoInterface);\r\n }\r\n // token max_age check\r\n if (request.maxAge || (request.maxAge === 0)) {\r\n authTime = idTokenObj === null || idTokenObj === void 0 ? void 0 : idTokenObj.claims.auth_time;\r\n if (!authTime) {\r\n throw ClientAuthError.createAuthTimeNotFoundError();\r\n }\r\n AuthToken.checkMaxAge(authTime, request.maxAge);\r\n }\r\n return [4 /*yield*/, ResponseHandler.generateAuthenticationResult(this.cryptoUtils, this.authority, cacheRecord, true, request, idTokenObj)];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n };\r\n return SilentFlowClient;\r\n}(BaseClient));\n\nexport { SilentFlowClient };\n","/*! @azure/msal-browser v2.32.2 2023-01-10 */\n'use strict';\nimport { __extends, __awaiter, __generator, __assign } from '../_virtual/_tslib.js';\nimport { StandardInteractionClient } from './StandardInteractionClient.js';\nimport { AuthError, PerformanceEvents, SilentFlowClient } from '@azure/msal-common';\nimport { ApiId } from '../utils/BrowserConstants.js';\nimport { BrowserAuthError, BrowserAuthErrorMessage } from '../error/BrowserAuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar SilentCacheClient = /** @class */ (function (_super) {\r\n __extends(SilentCacheClient, _super);\r\n function SilentCacheClient() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n /**\r\n * Returns unexpired tokens from the cache, if available\r\n * @param silentRequest\r\n */\r\n SilentCacheClient.prototype.acquireToken = function (silentRequest) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var acquireTokenMeasurement, serverTelemetryManager, silentAuthClient, cachedToken, error_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n acquireTokenMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.SilentCacheClientAcquireToken, silentRequest.correlationId);\r\n serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenSilent_silentFlow);\r\n return [4 /*yield*/, this.createSilentFlowClient(serverTelemetryManager, silentRequest.authority, silentRequest.azureCloudOptions)];\r\n case 1:\r\n silentAuthClient = _a.sent();\r\n this.logger.verbose(\"Silent auth client created\");\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 4, , 5]);\r\n return [4 /*yield*/, silentAuthClient.acquireCachedToken(silentRequest)];\r\n case 3:\r\n cachedToken = _a.sent();\r\n acquireTokenMeasurement.endMeasurement({\r\n success: true,\r\n fromCache: true\r\n });\r\n return [2 /*return*/, cachedToken];\r\n case 4:\r\n error_1 = _a.sent();\r\n if (error_1 instanceof BrowserAuthError && error_1.errorCode === BrowserAuthErrorMessage.signingKeyNotFoundInStorage.code) {\r\n this.logger.verbose(\"Signing keypair for bound access token not found. Refreshing bound access token and generating a new crypto keypair.\");\r\n }\r\n acquireTokenMeasurement.endMeasurement({\r\n errorCode: error_1 instanceof AuthError && error_1.errorCode || undefined,\r\n subErrorCode: error_1 instanceof AuthError && error_1.subError || undefined,\r\n success: false\r\n });\r\n throw error_1;\r\n case 5: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Currently Unsupported\r\n */\r\n SilentCacheClient.prototype.logout = function () {\r\n // Synchronous so we must reject\r\n return Promise.reject(BrowserAuthError.createSilentLogoutUnsupportedError());\r\n };\r\n /**\r\n * Creates an Silent Flow Client with the given authority, or the default authority.\r\n * @param serverTelemetryManager\r\n * @param authorityUrl\r\n */\r\n SilentCacheClient.prototype.createSilentFlowClient = function (serverTelemetryManager, authorityUrl, azureCloudOptions) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var clientConfig;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.getClientConfiguration(serverTelemetryManager, authorityUrl, azureCloudOptions)];\r\n case 1:\r\n clientConfig = _a.sent();\r\n return [2 /*return*/, new SilentFlowClient(clientConfig, this.performanceClient)];\r\n }\r\n });\r\n });\r\n };\r\n SilentCacheClient.prototype.initializeSilentRequest = function (request, account) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n _a = [__assign({}, request)];\r\n return [4 /*yield*/, this.initializeBaseRequest(request)];\r\n case 1: return [2 /*return*/, __assign.apply(void 0, [__assign.apply(void 0, _a.concat([_b.sent()])), { account: account, forceRefresh: request.forceRefresh || false }])];\r\n }\r\n });\r\n });\r\n };\r\n return SilentCacheClient;\r\n}(StandardInteractionClient));\n\nexport { SilentCacheClient };\n","/*! @azure/msal-browser v2.32.2 2023-01-10 */\n'use strict';\nimport { __extends, __awaiter, __generator, __rest, __assign } from '../_virtual/_tslib.js';\nimport { PerformanceEvents, TimeUtils, ScopeSet, ClientAuthError, IdTokenEntity, Constants, AccessTokenEntity, AuthenticationScheme, PopTokenGenerator, AccountEntity, AuthorityType, AuthToken, UrlString, OIDC_DEFAULT_SCOPES, PromptValue } from '@azure/msal-common';\nimport { BaseInteractionClient } from './BaseInteractionClient.js';\nimport { TemporaryCacheKeys, NativeExtensionMethod, NativeConstants, ApiId } from '../utils/BrowserConstants.js';\nimport { NativeAuthError } from '../error/NativeAuthError.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { SilentCacheClient } from './SilentCacheClient.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar NativeInteractionClient = /** @class */ (function (_super) {\r\n __extends(NativeInteractionClient, _super);\r\n function NativeInteractionClient(config, browserStorage, browserCrypto, logger, eventHandler, navigationClient, apiId, performanceClient, provider, accountId, nativeStorageImpl, correlationId) {\r\n var _this = _super.call(this, config, browserStorage, browserCrypto, logger, eventHandler, navigationClient, performanceClient, provider, correlationId) || this;\r\n _this.apiId = apiId;\r\n _this.accountId = accountId;\r\n _this.nativeMessageHandler = provider;\r\n _this.nativeStorageManager = nativeStorageImpl;\r\n _this.silentCacheClient = new SilentCacheClient(config, _this.nativeStorageManager, browserCrypto, logger, eventHandler, navigationClient, performanceClient, provider, correlationId);\r\n return _this;\r\n }\r\n /**\r\n * Acquire token from native platform via browser extension\r\n * @param request\r\n */\r\n NativeInteractionClient.prototype.acquireToken = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var nativeATMeasurement, reqTimestamp, nativeRequest, result, messageBody, response, validatedResponse;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.trace(\"NativeInteractionClient - acquireToken called.\");\r\n nativeATMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.NativeInteractionClientAcquireToken, request.correlationId);\r\n reqTimestamp = TimeUtils.nowSeconds();\r\n return [4 /*yield*/, this.initializeNativeRequest(request)];\r\n case 1:\r\n nativeRequest = _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 4, , 5]);\r\n return [4 /*yield*/, this.acquireTokensFromCache(this.accountId, nativeRequest)];\r\n case 3:\r\n result = _a.sent();\r\n nativeATMeasurement.endMeasurement({\r\n success: true,\r\n isNativeBroker: false,\r\n fromCache: true\r\n });\r\n return [2 /*return*/, result];\r\n case 4:\r\n _a.sent();\r\n // continue with a native call for any and all errors\r\n this.logger.info(\"MSAL internal Cache does not contain tokens, proceed to make a native call\");\r\n return [3 /*break*/, 5];\r\n case 5:\r\n messageBody = {\r\n method: NativeExtensionMethod.GetToken,\r\n request: nativeRequest\r\n };\r\n return [4 /*yield*/, this.nativeMessageHandler.sendMessage(messageBody)];\r\n case 6:\r\n response = _a.sent();\r\n validatedResponse = this.validateNativeResponse(response);\r\n return [2 /*return*/, this.handleNativeResponse(validatedResponse, nativeRequest, reqTimestamp)\r\n .then(function (result) {\r\n nativeATMeasurement.endMeasurement({\r\n success: true,\r\n isNativeBroker: true,\r\n requestId: result.requestId\r\n });\r\n return result;\r\n })\r\n .catch(function (error) {\r\n nativeATMeasurement.endMeasurement({\r\n success: false,\r\n errorCode: error.errorCode,\r\n subErrorCode: error.subError,\r\n isNativeBroker: true\r\n });\r\n throw error;\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Creates silent flow request\r\n * @param request\r\n * @param cachedAccount\r\n * @returns CommonSilentFlowRequest\r\n */\r\n NativeInteractionClient.prototype.createSilentCacheRequest = function (request, cachedAccount) {\r\n return {\r\n authority: request.authority,\r\n correlationId: this.correlationId,\r\n scopes: ScopeSet.fromString(request.scope).asArray(),\r\n account: cachedAccount,\r\n forceRefresh: false,\r\n };\r\n };\r\n /**\r\n * Fetches the tokens from the cache if un-expired\r\n * @param nativeAccountId\r\n * @param request\r\n * @returns authenticationResult\r\n */\r\n NativeInteractionClient.prototype.acquireTokensFromCache = function (nativeAccountId, request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var accountEntity, account, silentRequest, result, e_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n accountEntity = this.browserStorage.readAccountFromCacheWithNativeAccountId(nativeAccountId);\r\n if (!accountEntity) {\r\n throw ClientAuthError.createNoAccountFoundError();\r\n }\r\n account = accountEntity.getAccountInfo();\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n silentRequest = this.createSilentCacheRequest(request, account);\r\n return [4 /*yield*/, this.silentCacheClient.acquireToken(silentRequest)];\r\n case 2:\r\n result = _a.sent();\r\n return [2 /*return*/, result];\r\n case 3:\r\n e_2 = _a.sent();\r\n throw e_2;\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Acquires a token from native platform then redirects to the redirectUri instead of returning the response\r\n * @param request\r\n */\r\n NativeInteractionClient.prototype.acquireTokenRedirect = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var nativeRequest, messageBody, response, e_3, navigationOptions, redirectUri;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.trace(\"NativeInteractionClient - acquireTokenRedirect called.\");\r\n return [4 /*yield*/, this.initializeNativeRequest(request)];\r\n case 1:\r\n nativeRequest = _a.sent();\r\n messageBody = {\r\n method: NativeExtensionMethod.GetToken,\r\n request: nativeRequest\r\n };\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 4, , 5]);\r\n return [4 /*yield*/, this.nativeMessageHandler.sendMessage(messageBody)];\r\n case 3:\r\n response = _a.sent();\r\n this.validateNativeResponse(response);\r\n return [3 /*break*/, 5];\r\n case 4:\r\n e_3 = _a.sent();\r\n // Only throw fatal errors here to allow application to fallback to regular redirect. Otherwise proceed and the error will be thrown in handleRedirectPromise\r\n if (e_3 instanceof NativeAuthError && e_3.isFatal()) {\r\n throw e_3;\r\n }\r\n return [3 /*break*/, 5];\r\n case 5:\r\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.NATIVE_REQUEST, JSON.stringify(nativeRequest), true);\r\n navigationOptions = {\r\n apiId: ApiId.acquireTokenRedirect,\r\n timeout: this.config.system.redirectNavigationTimeout,\r\n noHistory: false\r\n };\r\n redirectUri = this.config.auth.navigateToLoginRequestUrl ? window.location.href : this.getRedirectUri(request.redirectUri);\r\n return [4 /*yield*/, this.navigationClient.navigateExternal(redirectUri, navigationOptions)];\r\n case 6:\r\n _a.sent(); // Need to treat this as external to ensure handleRedirectPromise is run again\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * If the previous page called native platform for a token using redirect APIs, send the same request again and return the response\r\n */\r\n NativeInteractionClient.prototype.handleRedirectPromise = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var cachedRequest, prompt, request, messageBody, reqTimestamp, response, result, e_4;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.trace(\"NativeInteractionClient - handleRedirectPromise called.\");\r\n if (!this.browserStorage.isInteractionInProgress(true)) {\r\n this.logger.info(\"handleRedirectPromise called but there is no interaction in progress, returning null.\");\r\n return [2 /*return*/, null];\r\n }\r\n cachedRequest = this.browserStorage.getCachedNativeRequest();\r\n if (!cachedRequest) {\r\n this.logger.verbose(\"NativeInteractionClient - handleRedirectPromise called but there is no cached request, returning null.\");\r\n return [2 /*return*/, null];\r\n }\r\n prompt = cachedRequest.prompt, request = __rest(cachedRequest, [\"prompt\"]);\r\n if (prompt) {\r\n this.logger.verbose(\"NativeInteractionClient - handleRedirectPromise called and prompt was included in the original request, removing prompt from cached request to prevent second interaction with native broker window.\");\r\n }\r\n this.browserStorage.removeItem(this.browserStorage.generateCacheKey(TemporaryCacheKeys.NATIVE_REQUEST));\r\n messageBody = {\r\n method: NativeExtensionMethod.GetToken,\r\n request: request\r\n };\r\n reqTimestamp = TimeUtils.nowSeconds();\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n this.logger.verbose(\"NativeInteractionClient - handleRedirectPromise sending message to native broker.\");\r\n return [4 /*yield*/, this.nativeMessageHandler.sendMessage(messageBody)];\r\n case 2:\r\n response = _a.sent();\r\n this.validateNativeResponse(response);\r\n result = this.handleNativeResponse(response, request, reqTimestamp);\r\n this.browserStorage.setInteractionInProgress(false);\r\n return [2 /*return*/, result];\r\n case 3:\r\n e_4 = _a.sent();\r\n this.browserStorage.setInteractionInProgress(false);\r\n throw e_4;\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Logout from native platform via browser extension\r\n * @param request\r\n */\r\n NativeInteractionClient.prototype.logout = function () {\r\n this.logger.trace(\"NativeInteractionClient - logout called.\");\r\n return Promise.reject(\"Logout not implemented yet\");\r\n };\r\n /**\r\n * Transform response from native platform into AuthenticationResult object which will be returned to the end user\r\n * @param response\r\n * @param request\r\n * @param reqTimestamp\r\n */\r\n NativeInteractionClient.prototype.handleNativeResponse = function (response, request, reqTimestamp) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var mats, idTokenObj, authority, authorityPreferredCache, homeAccountIdentifier, accountEntity, responseScopes, accountProperties, uid, tid, responseAccessToken, responseTokenType, _a, popTokenGenerator, shrParameters, result, idTokenEntity, expiresIn, tokenExpirationSeconds, accessTokenEntity;\r\n var _this = this;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n this.logger.trace(\"NativeInteractionClient - handleNativeResponse called.\");\r\n mats = this.getMATSFromResponse(response);\r\n this.performanceClient.addStaticFields({\r\n extensionId: this.nativeMessageHandler.getExtensionId(),\r\n extensionVersion: this.nativeMessageHandler.getExtensionVersion(),\r\n matsBrokerVersion: mats ? mats.broker_version : undefined,\r\n matsAccountJoinOnStart: mats ? mats.account_join_on_start : undefined,\r\n matsAccountJoinOnEnd: mats ? mats.account_join_on_end : undefined,\r\n matsDeviceJoin: mats ? mats.device_join : undefined,\r\n matsPromptBehavior: mats ? mats.prompt_behavior : undefined,\r\n matsApiErrorCode: mats ? mats.api_error_code : undefined,\r\n matsUiVisible: mats ? mats.ui_visible : undefined,\r\n matsSilentCode: mats ? mats.silent_code : undefined,\r\n matsSilentBiSubCode: mats ? mats.silent_bi_sub_code : undefined,\r\n matsSilentMessage: mats ? mats.silent_message : undefined,\r\n matsSilentStatus: mats ? mats.silent_status : undefined,\r\n matsHttpStatus: mats ? mats.http_status : undefined,\r\n matsHttpEventCount: mats ? mats.http_event_count : undefined\r\n }, this.correlationId);\r\n if (response.account.id !== request.accountId) {\r\n // User switch in native broker prompt is not supported. All users must first sign in through web flow to ensure server state is in sync\r\n throw NativeAuthError.createUserSwitchError();\r\n }\r\n idTokenObj = new AuthToken(response.id_token || Constants.EMPTY_STRING, this.browserCrypto);\r\n return [4 /*yield*/, this.getDiscoveredAuthority(request.authority)];\r\n case 1:\r\n authority = _b.sent();\r\n authorityPreferredCache = authority.getPreferredCache();\r\n homeAccountIdentifier = AccountEntity.generateHomeAccountId(response.client_info || Constants.EMPTY_STRING, AuthorityType.Default, this.logger, this.browserCrypto, idTokenObj);\r\n accountEntity = AccountEntity.createAccount(response.client_info, homeAccountIdentifier, idTokenObj, undefined, undefined, undefined, authorityPreferredCache, response.account.id);\r\n this.browserStorage.setAccount(accountEntity);\r\n responseScopes = response.scope ? ScopeSet.fromString(response.scope) : ScopeSet.fromString(request.scope);\r\n accountProperties = response.account.properties || {};\r\n uid = accountProperties[\"UID\"] || idTokenObj.claims.oid || idTokenObj.claims.sub || Constants.EMPTY_STRING;\r\n tid = accountProperties[\"TenantId\"] || idTokenObj.claims.tid || Constants.EMPTY_STRING;\r\n responseTokenType = AuthenticationScheme.BEARER;\r\n _a = request.tokenType;\r\n switch (_a) {\r\n case AuthenticationScheme.POP: return [3 /*break*/, 2];\r\n }\r\n return [3 /*break*/, 4];\r\n case 2:\r\n // Set the token type to POP in the response\r\n responseTokenType = AuthenticationScheme.POP;\r\n // Check if native layer returned an SHR token\r\n if (response.shr) {\r\n this.logger.trace(\"handleNativeServerResponse: SHR is enabled in native layer\");\r\n responseAccessToken = response.shr;\r\n return [3 /*break*/, 5];\r\n }\r\n popTokenGenerator = new PopTokenGenerator(this.browserCrypto);\r\n shrParameters = {\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n resourceRequestUri: request.resourceRequestUri,\r\n shrClaims: request.shrClaims,\r\n shrNonce: request.shrNonce\r\n };\r\n /**\r\n * KeyID must be present in the native request from when the PoP key was generated in order for\r\n * PopTokenGenerator to query the full key for signing\r\n */\r\n if (!request.keyId) {\r\n throw ClientAuthError.createKeyIdMissingError();\r\n }\r\n return [4 /*yield*/, popTokenGenerator.signPopToken(response.access_token, request.keyId, shrParameters)];\r\n case 3:\r\n responseAccessToken = _b.sent();\r\n return [3 /*break*/, 5];\r\n case 4:\r\n {\r\n responseAccessToken = response.access_token;\r\n }\r\n _b.label = 5;\r\n case 5:\r\n result = {\r\n authority: authority.canonicalAuthority,\r\n uniqueId: uid,\r\n tenantId: tid,\r\n scopes: responseScopes.asArray(),\r\n account: accountEntity.getAccountInfo(),\r\n idToken: response.id_token,\r\n idTokenClaims: idTokenObj.claims,\r\n accessToken: responseAccessToken,\r\n fromCache: mats ? this.isResponseFromCache(mats) : false,\r\n expiresOn: new Date(Number(reqTimestamp + response.expires_in) * 1000),\r\n tokenType: responseTokenType,\r\n correlationId: this.correlationId,\r\n state: response.state,\r\n fromNativeBroker: true\r\n };\r\n idTokenEntity = IdTokenEntity.createIdTokenEntity(homeAccountIdentifier, request.authority, response.id_token || Constants.EMPTY_STRING, request.clientId, idTokenObj.claims.tid || Constants.EMPTY_STRING);\r\n this.nativeStorageManager.setIdTokenCredential(idTokenEntity);\r\n expiresIn = (responseTokenType === AuthenticationScheme.POP)\r\n ? Constants.SHR_NONCE_VALIDITY\r\n : (typeof response.expires_in === \"string\"\r\n ? parseInt(response.expires_in, 10)\r\n : response.expires_in) || 0;\r\n tokenExpirationSeconds = reqTimestamp + expiresIn;\r\n accessTokenEntity = AccessTokenEntity.createAccessTokenEntity(homeAccountIdentifier, request.authority, responseAccessToken, request.clientId, tid, responseScopes.printScopes(), tokenExpirationSeconds, 0, this.browserCrypto);\r\n this.nativeStorageManager.setAccessTokenCredential(accessTokenEntity);\r\n // Remove any existing cached tokens for this account in browser storage\r\n this.browserStorage.removeAccountContext(accountEntity).catch(function (e) {\r\n _this.logger.error(\"Error occurred while removing account context from browser storage. \" + e);\r\n });\r\n return [2 /*return*/, result];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Validates native platform response before processing\r\n * @param response\r\n */\r\n NativeInteractionClient.prototype.validateNativeResponse = function (response) {\r\n if (response.hasOwnProperty(\"access_token\") &&\r\n response.hasOwnProperty(\"id_token\") &&\r\n response.hasOwnProperty(\"client_info\") &&\r\n response.hasOwnProperty(\"account\") &&\r\n response.hasOwnProperty(\"scope\") &&\r\n response.hasOwnProperty(\"expires_in\")) {\r\n return response;\r\n }\r\n else {\r\n throw NativeAuthError.createUnexpectedError(\"Response missing expected properties.\");\r\n }\r\n };\r\n /**\r\n * Gets MATS telemetry from native response\r\n * @param response\r\n * @returns\r\n */\r\n NativeInteractionClient.prototype.getMATSFromResponse = function (response) {\r\n if (response.properties.MATS) {\r\n try {\r\n return JSON.parse(response.properties.MATS);\r\n }\r\n catch (e) {\r\n this.logger.error(\"NativeInteractionClient - Error parsing MATS telemetry, returning null instead\");\r\n }\r\n }\r\n return null;\r\n };\r\n /**\r\n * Returns whether or not response came from native cache\r\n * @param response\r\n * @returns\r\n */\r\n NativeInteractionClient.prototype.isResponseFromCache = function (mats) {\r\n if (typeof mats.is_cached === \"undefined\") {\r\n this.logger.verbose(\"NativeInteractionClient - MATS telemetry does not contain field indicating if response was served from cache. Returning false.\");\r\n return false;\r\n }\r\n return !!mats.is_cached;\r\n };\r\n /**\r\n * Translates developer provided request object into NativeRequest object\r\n * @param request\r\n */\r\n NativeInteractionClient.prototype.initializeNativeRequest = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var authority, canonicalAuthority, scopes, remainingProperties, scopeSet, getPrompt, validatedRequest, shrParameters, popTokenGenerator, reqCnfData;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.trace(\"NativeInteractionClient - initializeNativeRequest called\");\r\n authority = request.authority || this.config.auth.authority;\r\n canonicalAuthority = new UrlString(authority);\r\n canonicalAuthority.validateAsUri();\r\n scopes = request.scopes, remainingProperties = __rest(request, [\"scopes\"]);\r\n scopeSet = new ScopeSet(scopes || []);\r\n scopeSet.appendScopes(OIDC_DEFAULT_SCOPES);\r\n getPrompt = function () {\r\n // If request is silent, prompt is always none\r\n switch (_this.apiId) {\r\n case ApiId.ssoSilent:\r\n case ApiId.acquireTokenSilent_silentFlow:\r\n _this.logger.trace(\"initializeNativeRequest: silent request sets prompt to none\");\r\n return PromptValue.NONE;\r\n }\r\n // Prompt not provided, request may proceed and native broker decides if it needs to prompt\r\n if (!request.prompt) {\r\n _this.logger.trace(\"initializeNativeRequest: prompt was not provided\");\r\n return undefined;\r\n }\r\n // If request is interactive, check if prompt provided is allowed to go directly to native broker\r\n switch (request.prompt) {\r\n case PromptValue.NONE:\r\n case PromptValue.CONSENT:\r\n case PromptValue.LOGIN:\r\n _this.logger.trace(\"initializeNativeRequest: prompt is compatible with native flow\");\r\n return request.prompt;\r\n default:\r\n _this.logger.trace(\"initializeNativeRequest: prompt = \" + request.prompt + \" is not compatible with native flow\");\r\n throw BrowserAuthError.createNativePromptParameterNotSupportedError();\r\n }\r\n };\r\n validatedRequest = __assign(__assign({}, remainingProperties), { accountId: this.accountId, clientId: this.config.auth.clientId, authority: canonicalAuthority.urlString, scope: scopeSet.printScopes(), redirectUri: this.getRedirectUri(request.redirectUri), prompt: getPrompt(), correlationId: this.correlationId, tokenType: request.authenticationScheme, windowTitleSubstring: document.title, extraParameters: __assign(__assign(__assign({}, request.extraQueryParameters), request.tokenQueryParameters), { telemetry: NativeConstants.MATS_TELEMETRY }), extendedExpiryToken: false // Make this configurable?\r\n });\r\n if (!(request.authenticationScheme === AuthenticationScheme.POP)) return [3 /*break*/, 2];\r\n shrParameters = {\r\n resourceRequestUri: request.resourceRequestUri,\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n shrClaims: request.shrClaims,\r\n shrNonce: request.shrNonce\r\n };\r\n popTokenGenerator = new PopTokenGenerator(this.browserCrypto);\r\n return [4 /*yield*/, popTokenGenerator.generateCnf(shrParameters)];\r\n case 1:\r\n reqCnfData = _a.sent();\r\n // to reduce the URL length, it is recommended to send the hash of the req_cnf instead of the whole string\r\n validatedRequest.reqCnf = reqCnfData.reqCnfHash;\r\n validatedRequest.keyId = reqCnfData.kid;\r\n _a.label = 2;\r\n case 2: return [2 /*return*/, validatedRequest];\r\n }\r\n });\r\n });\r\n };\r\n return NativeInteractionClient;\r\n}(BaseInteractionClient));\n\nexport { NativeInteractionClient };\n","/*! @azure/msal-browser v2.32.2 2023-01-10 */\n'use strict';\nimport { __awaiter, __generator } from '../../_virtual/_tslib.js';\nimport { NativeConstants, NativeExtensionMethod } from '../../utils/BrowserConstants.js';\nimport { AuthError, AuthenticationScheme } from '@azure/msal-common';\nimport { NativeAuthError } from '../../error/NativeAuthError.js';\nimport { BrowserAuthError } from '../../error/BrowserAuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar NativeMessageHandler = /** @class */ (function () {\r\n function NativeMessageHandler(logger, handshakeTimeoutMs, extensionId) {\r\n this.logger = logger;\r\n this.handshakeTimeoutMs = handshakeTimeoutMs;\r\n this.extensionId = extensionId;\r\n this.resolvers = new Map(); // Used for non-handshake messages\r\n this.handshakeResolvers = new Map(); // Used for handshake messages\r\n this.responseId = 0;\r\n this.messageChannel = new MessageChannel();\r\n this.windowListener = this.onWindowMessage.bind(this); // Window event callback doesn't have access to 'this' unless it's bound\r\n }\r\n /**\r\n * Sends a given message to the extension and resolves with the extension response\r\n * @param body\r\n */\r\n NativeMessageHandler.prototype.sendMessage = function (body) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var req;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n this.logger.trace(\"NativeMessageHandler - sendMessage called.\");\r\n req = {\r\n channel: NativeConstants.CHANNEL_ID,\r\n extensionId: this.extensionId,\r\n responseId: this.responseId++,\r\n body: body\r\n };\r\n this.logger.trace(\"NativeMessageHandler - Sending request to browser extension\");\r\n this.logger.tracePii(\"NativeMessageHandler - Sending request to browser extension: \" + JSON.stringify(req));\r\n this.messageChannel.port1.postMessage(req);\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n _this.resolvers.set(req.responseId, { resolve: resolve, reject: reject });\r\n })];\r\n });\r\n });\r\n };\r\n /**\r\n * Returns an instance of the MessageHandler that has successfully established a connection with an extension\r\n * @param logger\r\n * @param handshakeTimeoutMs\r\n */\r\n NativeMessageHandler.createProvider = function (logger, handshakeTimeoutMs) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var preferredProvider, backupProvider;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n logger.trace(\"NativeMessageHandler - createProvider called.\");\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 5]);\r\n preferredProvider = new NativeMessageHandler(logger, handshakeTimeoutMs, NativeConstants.PREFERRED_EXTENSION_ID);\r\n return [4 /*yield*/, preferredProvider.sendHandshakeRequest()];\r\n case 2:\r\n _a.sent();\r\n return [2 /*return*/, preferredProvider];\r\n case 3:\r\n _a.sent();\r\n backupProvider = new NativeMessageHandler(logger, handshakeTimeoutMs);\r\n return [4 /*yield*/, backupProvider.sendHandshakeRequest()];\r\n case 4:\r\n _a.sent();\r\n return [2 /*return*/, backupProvider];\r\n case 5: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Send handshake request helper.\r\n */\r\n NativeMessageHandler.prototype.sendHandshakeRequest = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var req;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n this.logger.trace(\"NativeMessageHandler - sendHandshakeRequest called.\");\r\n // Register this event listener before sending handshake\r\n window.addEventListener(\"message\", this.windowListener, false); // false is important, because content script message processing should work first\r\n req = {\r\n channel: NativeConstants.CHANNEL_ID,\r\n extensionId: this.extensionId,\r\n responseId: this.responseId++,\r\n body: {\r\n method: NativeExtensionMethod.HandshakeRequest\r\n }\r\n };\r\n this.messageChannel.port1.onmessage = function (event) {\r\n _this.onChannelMessage(event);\r\n };\r\n window.postMessage(req, window.origin, [this.messageChannel.port2]);\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n _this.handshakeResolvers.set(req.responseId, { resolve: resolve, reject: reject });\r\n _this.timeoutId = window.setTimeout(function () {\r\n /*\r\n * Throw an error if neither HandshakeResponse nor original Handshake request are received in a reasonable timeframe.\r\n * This typically suggests an event handler stopped propagation of the Handshake request but did not respond to it on the MessageChannel port\r\n */\r\n window.removeEventListener(\"message\", _this.windowListener, false);\r\n _this.messageChannel.port1.close();\r\n _this.messageChannel.port2.close();\r\n reject(BrowserAuthError.createNativeHandshakeTimeoutError());\r\n _this.handshakeResolvers.delete(req.responseId);\r\n }, _this.handshakeTimeoutMs); // Use a reasonable timeout in milliseconds here\r\n })];\r\n });\r\n });\r\n };\r\n /**\r\n * Invoked when a message is posted to the window. If a handshake request is received it means the extension is not installed.\r\n * @param event\r\n */\r\n NativeMessageHandler.prototype.onWindowMessage = function (event) {\r\n this.logger.trace(\"NativeMessageHandler - onWindowMessage called\");\r\n // We only accept messages from ourselves\r\n if (event.source !== window) {\r\n return;\r\n }\r\n var request = event.data;\r\n if (!request.channel || request.channel !== NativeConstants.CHANNEL_ID) {\r\n return;\r\n }\r\n if (request.extensionId && request.extensionId !== this.extensionId) {\r\n return;\r\n }\r\n if (request.body.method === NativeExtensionMethod.HandshakeRequest) {\r\n // If we receive this message back it means no extension intercepted the request, meaning no extension supporting handshake protocol is installed\r\n this.logger.verbose(request.extensionId ? \"Extension with id: \" + request.extensionId + \" not installed\" : \"No extension installed\");\r\n clearTimeout(this.timeoutId);\r\n this.messageChannel.port1.close();\r\n this.messageChannel.port2.close();\r\n window.removeEventListener(\"message\", this.windowListener, false);\r\n var handshakeResolver = this.handshakeResolvers.get(request.responseId);\r\n if (handshakeResolver) {\r\n handshakeResolver.reject(BrowserAuthError.createNativeExtensionNotInstalledError());\r\n }\r\n }\r\n };\r\n /**\r\n * Invoked when a message is received from the extension on the MessageChannel port\r\n * @param event\r\n */\r\n NativeMessageHandler.prototype.onChannelMessage = function (event) {\r\n this.logger.trace(\"NativeMessageHandler - onChannelMessage called.\");\r\n var request = event.data;\r\n var resolver = this.resolvers.get(request.responseId);\r\n var handshakeResolver = this.handshakeResolvers.get(request.responseId);\r\n try {\r\n var method = request.body.method;\r\n if (method === NativeExtensionMethod.Response) {\r\n if (!resolver) {\r\n return;\r\n }\r\n var response = request.body.response;\r\n this.logger.trace(\"NativeMessageHandler - Received response from browser extension\");\r\n this.logger.tracePii(\"NativeMessageHandler - Received response from browser extension: \" + JSON.stringify(response));\r\n if (response.status !== \"Success\") {\r\n resolver.reject(NativeAuthError.createError(response.code, response.description, response.ext));\r\n }\r\n else if (response.result) {\r\n if (response.result[\"code\"] && response.result[\"description\"]) {\r\n resolver.reject(NativeAuthError.createError(response.result[\"code\"], response.result[\"description\"], response.result[\"ext\"]));\r\n }\r\n else {\r\n resolver.resolve(response.result);\r\n }\r\n }\r\n else {\r\n throw AuthError.createUnexpectedError(\"Event does not contain result.\");\r\n }\r\n this.resolvers.delete(request.responseId);\r\n }\r\n else if (method === NativeExtensionMethod.HandshakeResponse) {\r\n if (!handshakeResolver) {\r\n return;\r\n }\r\n clearTimeout(this.timeoutId); // Clear setTimeout\r\n window.removeEventListener(\"message\", this.windowListener, false); // Remove 'No extension' listener\r\n this.extensionId = request.extensionId;\r\n this.extensionVersion = request.body.version;\r\n this.logger.verbose(\"NativeMessageHandler - Received HandshakeResponse from extension: \" + this.extensionId);\r\n handshakeResolver.resolve();\r\n this.handshakeResolvers.delete(request.responseId);\r\n }\r\n // Do nothing if method is not Response or HandshakeResponse\r\n }\r\n catch (err) {\r\n this.logger.error(\"Error parsing response from WAM Extension\");\r\n this.logger.errorPii(\"Error parsing response from WAM Extension: \" + err.toString());\r\n this.logger.errorPii(\"Unable to parse \" + event);\r\n if (resolver) {\r\n resolver.reject(err);\r\n }\r\n else if (handshakeResolver) {\r\n handshakeResolver.reject(err);\r\n }\r\n }\r\n };\r\n /**\r\n * Returns the Id for the browser extension this handler is communicating with\r\n * @returns\r\n */\r\n NativeMessageHandler.prototype.getExtensionId = function () {\r\n return this.extensionId;\r\n };\r\n /**\r\n * Returns the version for the browser extension this handler is communicating with\r\n * @returns\r\n */\r\n NativeMessageHandler.prototype.getExtensionVersion = function () {\r\n return this.extensionVersion;\r\n };\r\n /**\r\n * Returns boolean indicating whether or not the request should attempt to use native broker\r\n * @param logger\r\n * @param config\r\n * @param nativeExtensionProvider\r\n * @param authenticationScheme\r\n */\r\n NativeMessageHandler.isNativeAvailable = function (config, logger, nativeExtensionProvider, authenticationScheme) {\r\n logger.trace(\"isNativeAvailable called\");\r\n if (!config.system.allowNativeBroker) {\r\n logger.trace(\"isNativeAvailable: allowNativeBroker is not enabled, returning false\");\r\n // Developer disabled WAM\r\n return false;\r\n }\r\n if (!nativeExtensionProvider) {\r\n logger.trace(\"isNativeAvailable: WAM extension provider is not initialized, returning false\");\r\n // Extension is not available\r\n return false;\r\n }\r\n if (authenticationScheme) {\r\n switch (authenticationScheme) {\r\n case AuthenticationScheme.BEARER:\r\n case AuthenticationScheme.POP:\r\n logger.trace(\"isNativeAvailable: authenticationScheme is supported, returning true\");\r\n return true;\r\n default:\r\n logger.trace(\"isNativeAvailable: authenticationScheme is not supported, returning false\");\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n return NativeMessageHandler;\r\n}());\n\nexport { NativeMessageHandler };\n","/*! @azure/msal-browser v2.32.2 2023-01-10 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { StringUtils, ClientAuthError, ServerError, AuthorityFactory } from '@azure/msal-common';\nimport { BrowserAuthError, BrowserAuthErrorMessage } from '../error/BrowserAuthError.js';\nimport { TemporaryCacheKeys } from '../utils/BrowserConstants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Abstract class which defines operations for a browser interaction handling class.\r\n */\r\nvar InteractionHandler = /** @class */ (function () {\r\n function InteractionHandler(authCodeModule, storageImpl, authCodeRequest, logger) {\r\n this.authModule = authCodeModule;\r\n this.browserStorage = storageImpl;\r\n this.authCodeRequest = authCodeRequest;\r\n this.logger = logger;\r\n }\r\n /**\r\n * Function to handle response parameters from hash.\r\n * @param locationHash\r\n */\r\n InteractionHandler.prototype.handleCodeResponseFromHash = function (locationHash, state, authority, networkModule) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var stateKey, requestState, authCodeResponse;\r\n return __generator(this, function (_a) {\r\n this.logger.verbose(\"InteractionHandler.handleCodeResponse called\");\r\n // Check that location hash isn't empty.\r\n if (StringUtils.isEmpty(locationHash)) {\r\n throw BrowserAuthError.createEmptyHashError(locationHash);\r\n }\r\n stateKey = this.browserStorage.generateStateKey(state);\r\n requestState = this.browserStorage.getTemporaryCache(stateKey);\r\n if (!requestState) {\r\n throw ClientAuthError.createStateNotFoundError(\"Cached State\");\r\n }\r\n try {\r\n authCodeResponse = this.authModule.handleFragmentResponse(locationHash, requestState);\r\n }\r\n catch (e) {\r\n if (e instanceof ServerError && e.subError === BrowserAuthErrorMessage.userCancelledError.code) {\r\n // Translate server error caused by user closing native prompt to corresponding first class MSAL error\r\n throw BrowserAuthError.createUserCancelledError();\r\n }\r\n else {\r\n throw e;\r\n }\r\n }\r\n return [2 /*return*/, this.handleCodeResponseFromServer(authCodeResponse, state, authority, networkModule)];\r\n });\r\n });\r\n };\r\n /**\r\n * Process auth code response from AAD\r\n * @param authCodeResponse\r\n * @param state\r\n * @param authority\r\n * @param networkModule\r\n * @returns\r\n */\r\n InteractionHandler.prototype.handleCodeResponseFromServer = function (authCodeResponse, state, authority, networkModule, validateNonce) {\r\n if (validateNonce === void 0) { validateNonce = true; }\r\n return __awaiter(this, void 0, void 0, function () {\r\n var stateKey, requestState, nonceKey, cachedNonce, cachedCcsCred, tokenResponse;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.trace(\"InteractionHandler.handleCodeResponseFromServer called\");\r\n stateKey = this.browserStorage.generateStateKey(state);\r\n requestState = this.browserStorage.getTemporaryCache(stateKey);\r\n if (!requestState) {\r\n throw ClientAuthError.createStateNotFoundError(\"Cached State\");\r\n }\r\n nonceKey = this.browserStorage.generateNonceKey(requestState);\r\n cachedNonce = this.browserStorage.getTemporaryCache(nonceKey);\r\n // Assign code to request\r\n this.authCodeRequest.code = authCodeResponse.code;\r\n if (!authCodeResponse.cloud_instance_host_name) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.updateTokenEndpointAuthority(authCodeResponse.cloud_instance_host_name, authority, networkModule)];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n // Nonce validation not needed when redirect not involved (e.g. hybrid spa, renewing token via rt)\r\n if (validateNonce) {\r\n authCodeResponse.nonce = cachedNonce || undefined;\r\n }\r\n authCodeResponse.state = requestState;\r\n // Add CCS parameters if available\r\n if (authCodeResponse.client_info) {\r\n this.authCodeRequest.clientInfo = authCodeResponse.client_info;\r\n }\r\n else {\r\n cachedCcsCred = this.checkCcsCredentials();\r\n if (cachedCcsCred) {\r\n this.authCodeRequest.ccsCredential = cachedCcsCred;\r\n }\r\n }\r\n return [4 /*yield*/, this.authModule.acquireToken(this.authCodeRequest, authCodeResponse)];\r\n case 3:\r\n tokenResponse = _a.sent();\r\n this.browserStorage.cleanRequestByState(state);\r\n return [2 /*return*/, tokenResponse];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Updates authority based on cloudInstanceHostname\r\n * @param cloudInstanceHostname\r\n * @param authority\r\n * @param networkModule\r\n */\r\n InteractionHandler.prototype.updateTokenEndpointAuthority = function (cloudInstanceHostname, authority, networkModule) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var cloudInstanceAuthorityUri, cloudInstanceAuthority;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n cloudInstanceAuthorityUri = \"https://\" + cloudInstanceHostname + \"/\" + authority.tenant + \"/\";\r\n return [4 /*yield*/, AuthorityFactory.createDiscoveredInstance(cloudInstanceAuthorityUri, networkModule, this.browserStorage, authority.options, this.logger)];\r\n case 1:\r\n cloudInstanceAuthority = _a.sent();\r\n this.authModule.updateAuthority(cloudInstanceAuthority);\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Looks up ccs creds in the cache\r\n */\r\n InteractionHandler.prototype.checkCcsCredentials = function () {\r\n // Look up ccs credential in temp cache\r\n var cachedCcsCred = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.CCS_CREDENTIAL, true);\r\n if (cachedCcsCred) {\r\n try {\r\n return JSON.parse(cachedCcsCred);\r\n }\r\n catch (e) {\r\n this.authModule.logger.error(\"Cache credential could not be parsed\");\r\n this.authModule.logger.errorPii(\"Cache credential could not be parsed: \" + cachedCcsCred);\r\n }\r\n }\r\n return null;\r\n };\r\n return InteractionHandler;\r\n}());\n\nexport { InteractionHandler };\n","/*! @azure/msal-browser v2.32.2 2023-01-10 */\n'use strict';\nimport { __extends, __awaiter, __generator, __assign } from '../_virtual/_tslib.js';\nimport { OIDC_DEFAULT_SCOPES, StringUtils, UrlString, Constants, AuthError, ThrottlingUtils, ProtocolUtils, PerformanceEvents } from '@azure/msal-common';\nimport { StandardInteractionClient } from './StandardInteractionClient.js';\nimport { EventType } from '../event/EventType.js';\nimport { BrowserConstants, InteractionType, ApiId } from '../utils/BrowserConstants.js';\nimport { BrowserUtils } from '../utils/BrowserUtils.js';\nimport { NativeInteractionClient } from './NativeInteractionClient.js';\nimport { NativeMessageHandler } from '../broker/nativeBroker/NativeMessageHandler.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { InteractionHandler } from '../interaction_handler/InteractionHandler.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar PopupClient = /** @class */ (function (_super) {\r\n __extends(PopupClient, _super);\r\n function PopupClient(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeStorageImpl, nativeMessageHandler, correlationId) {\r\n var _this = _super.call(this, config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId) || this;\r\n // Properly sets this reference for the unload event.\r\n _this.unloadWindow = _this.unloadWindow.bind(_this);\r\n _this.nativeStorage = nativeStorageImpl;\r\n return _this;\r\n }\r\n /**\r\n * Acquires tokens by opening a popup window to the /authorize endpoint of the authority\r\n * @param request\r\n */\r\n PopupClient.prototype.acquireToken = function (request) {\r\n try {\r\n var popupName = this.generatePopupName(request.scopes || OIDC_DEFAULT_SCOPES, request.authority || this.config.auth.authority);\r\n var popupWindowAttributes = request.popupWindowAttributes || {};\r\n // asyncPopups flag is true. Acquires token without first opening popup. Popup will be opened later asynchronously.\r\n if (this.config.system.asyncPopups) {\r\n this.logger.verbose(\"asyncPopups set to true, acquiring token\");\r\n // Passes on popup position and dimensions if in request\r\n return this.acquireTokenPopupAsync(request, popupName, popupWindowAttributes);\r\n }\r\n else {\r\n // asyncPopups flag is set to false. Opens popup before acquiring token.\r\n this.logger.verbose(\"asyncPopup set to false, opening popup before acquiring token\");\r\n var popup = this.openSizedPopup(\"about:blank\", popupName, popupWindowAttributes);\r\n return this.acquireTokenPopupAsync(request, popupName, popupWindowAttributes, popup);\r\n }\r\n }\r\n catch (e) {\r\n return Promise.reject(e);\r\n }\r\n };\r\n /**\r\n * Clears local cache for the current user then opens a popup window prompting the user to sign-out of the server\r\n * @param logoutRequest\r\n */\r\n PopupClient.prototype.logout = function (logoutRequest) {\r\n try {\r\n this.logger.verbose(\"logoutPopup called\");\r\n var validLogoutRequest = this.initializeLogoutRequest(logoutRequest);\r\n var popupName = this.generateLogoutPopupName(validLogoutRequest);\r\n var authority = logoutRequest && logoutRequest.authority;\r\n var mainWindowRedirectUri = logoutRequest && logoutRequest.mainWindowRedirectUri;\r\n var popupWindowAttributes = (logoutRequest === null || logoutRequest === void 0 ? void 0 : logoutRequest.popupWindowAttributes) || {};\r\n // asyncPopups flag is true. Acquires token without first opening popup. Popup will be opened later asynchronously.\r\n if (this.config.system.asyncPopups) {\r\n this.logger.verbose(\"asyncPopups set to true\");\r\n // Passes on popup position and dimensions if in request\r\n return this.logoutPopupAsync(validLogoutRequest, popupName, popupWindowAttributes, authority, undefined, mainWindowRedirectUri);\r\n }\r\n else {\r\n // asyncPopups flag is set to false. Opens popup before logging out.\r\n this.logger.verbose(\"asyncPopup set to false, opening popup\");\r\n var popup = this.openSizedPopup(\"about:blank\", popupName, popupWindowAttributes);\r\n return this.logoutPopupAsync(validLogoutRequest, popupName, popupWindowAttributes, authority, popup, mainWindowRedirectUri);\r\n }\r\n }\r\n catch (e) {\r\n // Since this function is synchronous we need to reject\r\n return Promise.reject(e);\r\n }\r\n };\r\n /**\r\n * Helper which obtains an access_token for your API via opening a popup window in the user's browser\r\n * @param validRequest\r\n * @param popupName\r\n * @param popup\r\n * @param popupWindowAttributes\r\n *\r\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\r\n */\r\n PopupClient.prototype.acquireTokenPopupAsync = function (request, popupName, popupWindowAttributes, popup) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var serverTelemetryManager, validRequest, authCodeRequest, authClient, isNativeBroker, fetchNativeAccountIdMeasurement, navigateUrl, interactionHandler, popupParameters, popupWindow, hash, serverParams, state_1, nativeInteractionClient, userRequestState, result, e_1;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.verbose(\"acquireTokenPopupAsync called\");\r\n serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenPopup);\r\n return [4 /*yield*/, this.initializeAuthorizationRequest(request, InteractionType.Popup)];\r\n case 1:\r\n validRequest = _a.sent();\r\n this.browserStorage.updateCacheEntries(validRequest.state, validRequest.nonce, validRequest.authority, validRequest.loginHint || Constants.EMPTY_STRING, validRequest.account || null);\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 8, , 9]);\r\n return [4 /*yield*/, this.initializeAuthorizationCodeRequest(validRequest)];\r\n case 3:\r\n authCodeRequest = _a.sent();\r\n return [4 /*yield*/, this.createAuthCodeClient(serverTelemetryManager, validRequest.authority, validRequest.azureCloudOptions)];\r\n case 4:\r\n authClient = _a.sent();\r\n this.logger.verbose(\"Auth code client created\");\r\n isNativeBroker = NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeMessageHandler, request.authenticationScheme);\r\n fetchNativeAccountIdMeasurement = void 0;\r\n if (isNativeBroker) {\r\n fetchNativeAccountIdMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.FetchAccountIdWithNativeBroker, request.correlationId);\r\n }\r\n return [4 /*yield*/, authClient.getAuthCodeUrl(__assign(__assign({}, validRequest), { nativeBroker: isNativeBroker }))];\r\n case 5:\r\n navigateUrl = _a.sent();\r\n interactionHandler = new InteractionHandler(authClient, this.browserStorage, authCodeRequest, this.logger);\r\n popupParameters = {\r\n popup: popup,\r\n popupName: popupName,\r\n popupWindowAttributes: popupWindowAttributes\r\n };\r\n popupWindow = this.initiateAuthRequest(navigateUrl, popupParameters);\r\n this.eventHandler.emitEvent(EventType.POPUP_OPENED, InteractionType.Popup, { popupWindow: popupWindow }, null);\r\n return [4 /*yield*/, this.monitorPopupForHash(popupWindow)];\r\n case 6:\r\n hash = _a.sent();\r\n serverParams = UrlString.getDeserializedHash(hash);\r\n state_1 = this.validateAndExtractStateFromHash(serverParams, InteractionType.Popup, validRequest.correlationId);\r\n // Remove throttle if it exists\r\n ThrottlingUtils.removeThrottle(this.browserStorage, this.config.auth.clientId, authCodeRequest);\r\n if (serverParams.accountId) {\r\n this.logger.verbose(\"Account id found in hash, calling WAM for token\");\r\n // end measurement for server call with native brokering enabled\r\n if (fetchNativeAccountIdMeasurement) {\r\n fetchNativeAccountIdMeasurement.endMeasurement({\r\n success: true,\r\n isNativeBroker: true\r\n });\r\n }\r\n if (!this.nativeMessageHandler) {\r\n throw BrowserAuthError.createNativeConnectionNotEstablishedError();\r\n }\r\n nativeInteractionClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.acquireTokenPopup, this.performanceClient, this.nativeMessageHandler, serverParams.accountId, this.nativeStorage, validRequest.correlationId);\r\n userRequestState = ProtocolUtils.parseRequestState(this.browserCrypto, state_1).userRequestState;\r\n return [2 /*return*/, nativeInteractionClient.acquireToken(__assign(__assign({}, validRequest), { state: userRequestState, prompt: undefined // Server should handle the prompt, ideally native broker can do this part silently\r\n })).finally(function () {\r\n _this.browserStorage.cleanRequestByState(state_1);\r\n })];\r\n }\r\n return [4 /*yield*/, interactionHandler.handleCodeResponseFromHash(hash, state_1, authClient.authority, this.networkClient)];\r\n case 7:\r\n result = _a.sent();\r\n return [2 /*return*/, result];\r\n case 8:\r\n e_1 = _a.sent();\r\n if (popup) {\r\n // Close the synchronous popup if an error is thrown before the window unload event is registered\r\n popup.close();\r\n }\r\n if (e_1 instanceof AuthError) {\r\n e_1.setCorrelationId(this.correlationId);\r\n }\r\n serverTelemetryManager.cacheFailedRequest(e_1);\r\n this.browserStorage.cleanRequestByState(validRequest.state);\r\n throw e_1;\r\n case 9: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n *\r\n * @param validRequest\r\n * @param popupName\r\n * @param requestAuthority\r\n * @param popup\r\n * @param mainWindowRedirectUri\r\n * @param popupWindowAttributes\r\n */\r\n PopupClient.prototype.logoutPopupAsync = function (validRequest, popupName, popupWindowAttributes, requestAuthority, popup, mainWindowRedirectUri) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var serverTelemetryManager, authClient, logoutUri, popupWindow, navigationOptions, absoluteUrl, e_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.verbose(\"logoutPopupAsync called\");\r\n this.eventHandler.emitEvent(EventType.LOGOUT_START, InteractionType.Popup, validRequest);\r\n serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.logoutPopup);\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 5, , 6]);\r\n // Clear cache on logout\r\n return [4 /*yield*/, this.clearCacheOnLogout(validRequest.account)];\r\n case 2:\r\n // Clear cache on logout\r\n _a.sent();\r\n return [4 /*yield*/, this.createAuthCodeClient(serverTelemetryManager, requestAuthority)];\r\n case 3:\r\n authClient = _a.sent();\r\n this.logger.verbose(\"Auth code client created\");\r\n logoutUri = authClient.getLogoutUri(validRequest);\r\n this.eventHandler.emitEvent(EventType.LOGOUT_SUCCESS, InteractionType.Popup, validRequest);\r\n popupWindow = this.openPopup(logoutUri, { popupName: popupName, popupWindowAttributes: popupWindowAttributes, popup: popup });\r\n this.eventHandler.emitEvent(EventType.POPUP_OPENED, InteractionType.Popup, { popupWindow: popupWindow }, null);\r\n return [4 /*yield*/, this.waitForLogoutPopup(popupWindow)];\r\n case 4:\r\n _a.sent();\r\n if (mainWindowRedirectUri) {\r\n navigationOptions = {\r\n apiId: ApiId.logoutPopup,\r\n timeout: this.config.system.redirectNavigationTimeout,\r\n noHistory: false\r\n };\r\n absoluteUrl = UrlString.getAbsoluteUrl(mainWindowRedirectUri, BrowserUtils.getCurrentUri());\r\n this.logger.verbose(\"Redirecting main window to url specified in the request\");\r\n this.logger.verbosePii(\"Redirecting main window to: \" + absoluteUrl);\r\n this.navigationClient.navigateInternal(absoluteUrl, navigationOptions);\r\n }\r\n else {\r\n this.logger.verbose(\"No main window navigation requested\");\r\n }\r\n return [3 /*break*/, 6];\r\n case 5:\r\n e_2 = _a.sent();\r\n if (popup) {\r\n // Close the synchronous popup if an error is thrown before the window unload event is registered\r\n popup.close();\r\n }\r\n if (e_2 instanceof AuthError) {\r\n e_2.setCorrelationId(this.correlationId);\r\n }\r\n this.browserStorage.setInteractionInProgress(false);\r\n this.eventHandler.emitEvent(EventType.LOGOUT_FAILURE, InteractionType.Popup, null, e_2);\r\n this.eventHandler.emitEvent(EventType.LOGOUT_END, InteractionType.Popup);\r\n serverTelemetryManager.cacheFailedRequest(e_2);\r\n throw e_2;\r\n case 6:\r\n this.eventHandler.emitEvent(EventType.LOGOUT_END, InteractionType.Popup);\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Opens a popup window with given request Url.\r\n * @param requestUrl\r\n */\r\n PopupClient.prototype.initiateAuthRequest = function (requestUrl, params) {\r\n // Check that request url is not empty.\r\n if (!StringUtils.isEmpty(requestUrl)) {\r\n this.logger.infoPii(\"Navigate to: \" + requestUrl);\r\n // Open the popup window to requestUrl.\r\n return this.openPopup(requestUrl, params);\r\n }\r\n else {\r\n // Throw error if request URL is empty.\r\n this.logger.error(\"Navigate url is empty\");\r\n throw BrowserAuthError.createEmptyNavigationUriError();\r\n }\r\n };\r\n /**\r\n * Monitors a window until it loads a url with the same origin.\r\n * @param popupWindow - window that is being monitored\r\n * @param timeout - timeout for processing hash once popup is redirected back to application\r\n */\r\n PopupClient.prototype.monitorPopupForHash = function (popupWindow) {\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n /*\r\n * Polling for popups needs to be tick-based,\r\n * since a non-trivial amount of time can be spent on interaction (which should not count against the timeout).\r\n */\r\n var maxTicks = _this.config.system.windowHashTimeout / _this.config.system.pollIntervalMilliseconds;\r\n var ticks = 0;\r\n _this.logger.verbose(\"PopupHandler.monitorPopupForHash - polling started\");\r\n var intervalId = setInterval(function () {\r\n // Window is closed\r\n if (popupWindow.closed) {\r\n _this.logger.error(\"PopupHandler.monitorPopupForHash - window closed\");\r\n _this.cleanPopup();\r\n clearInterval(intervalId);\r\n reject(BrowserAuthError.createUserCancelledError());\r\n return;\r\n }\r\n var href = Constants.EMPTY_STRING;\r\n var hash = Constants.EMPTY_STRING;\r\n try {\r\n /*\r\n * Will throw if cross origin,\r\n * which should be caught and ignored\r\n * since we need the interval to keep running while on STS UI.\r\n */\r\n href = popupWindow.location.href;\r\n hash = popupWindow.location.hash;\r\n }\r\n catch (e) { }\r\n // Don't process blank pages or cross domain\r\n if (StringUtils.isEmpty(href) || href === \"about:blank\") {\r\n return;\r\n }\r\n _this.logger.verbose(\"PopupHandler.monitorPopupForHash - popup window is on same origin as caller\");\r\n /*\r\n * Only run clock when we are on same domain for popups\r\n * as popup operations can take a long time.\r\n */\r\n ticks++;\r\n if (hash) {\r\n _this.logger.verbose(\"PopupHandler.monitorPopupForHash - found hash in url\");\r\n clearInterval(intervalId);\r\n _this.cleanPopup(popupWindow);\r\n if (UrlString.hashContainsKnownProperties(hash)) {\r\n _this.logger.verbose(\"PopupHandler.monitorPopupForHash - hash contains known properties, returning.\");\r\n resolve(hash);\r\n }\r\n else {\r\n _this.logger.error(\"PopupHandler.monitorPopupForHash - found hash in url but it does not contain known properties. Check that your router is not changing the hash prematurely.\");\r\n _this.logger.errorPii(\"PopupHandler.monitorPopupForHash - hash found: \" + hash);\r\n reject(BrowserAuthError.createHashDoesNotContainKnownPropertiesError());\r\n }\r\n }\r\n else if (ticks > maxTicks) {\r\n _this.logger.error(\"PopupHandler.monitorPopupForHash - unable to find hash in url, timing out\");\r\n clearInterval(intervalId);\r\n reject(BrowserAuthError.createMonitorPopupTimeoutError());\r\n }\r\n }, _this.config.system.pollIntervalMilliseconds);\r\n });\r\n };\r\n /**\r\n * Waits for user interaction in logout popup window\r\n * @param popupWindow\r\n * @returns\r\n */\r\n PopupClient.prototype.waitForLogoutPopup = function (popupWindow) {\r\n var _this = this;\r\n return new Promise(function (resolve) {\r\n _this.logger.verbose(\"PopupHandler.waitForLogoutPopup - polling started\");\r\n var intervalId = setInterval(function () {\r\n // Window is closed\r\n if (popupWindow.closed) {\r\n _this.logger.error(\"PopupHandler.waitForLogoutPopup - window closed\");\r\n _this.cleanPopup();\r\n clearInterval(intervalId);\r\n resolve();\r\n }\r\n var href = Constants.EMPTY_STRING;\r\n try {\r\n /*\r\n * Will throw if cross origin,\r\n * which should be caught and ignored\r\n * since we need the interval to keep running while on STS UI.\r\n */\r\n href = popupWindow.location.href;\r\n }\r\n catch (e) { }\r\n // Don't process blank pages or cross domain\r\n if (StringUtils.isEmpty(href) || href === \"about:blank\") {\r\n return;\r\n }\r\n _this.logger.verbose(\"PopupHandler.waitForLogoutPopup - popup window is on same origin as caller, closing.\");\r\n clearInterval(intervalId);\r\n _this.cleanPopup(popupWindow);\r\n resolve();\r\n }, _this.config.system.pollIntervalMilliseconds);\r\n });\r\n };\r\n /**\r\n * @hidden\r\n *\r\n * Configures popup window for login.\r\n *\r\n * @param urlNavigate\r\n * @param title\r\n * @param popUpWidth\r\n * @param popUpHeight\r\n * @param popupWindowAttributes\r\n * @ignore\r\n * @hidden\r\n */\r\n PopupClient.prototype.openPopup = function (urlNavigate, popupParams) {\r\n try {\r\n var popupWindow = void 0;\r\n // Popup window passed in, setting url to navigate to\r\n if (popupParams.popup) {\r\n popupWindow = popupParams.popup;\r\n this.logger.verbosePii(\"Navigating popup window to: \" + urlNavigate);\r\n popupWindow.location.assign(urlNavigate);\r\n }\r\n else if (typeof popupParams.popup === \"undefined\") {\r\n // Popup will be undefined if it was not passed in\r\n this.logger.verbosePii(\"Opening popup window to: \" + urlNavigate);\r\n popupWindow = this.openSizedPopup(urlNavigate, popupParams.popupName, popupParams.popupWindowAttributes);\r\n }\r\n // Popup will be null if popups are blocked\r\n if (!popupWindow) {\r\n throw BrowserAuthError.createEmptyWindowCreatedError();\r\n }\r\n if (popupWindow.focus) {\r\n popupWindow.focus();\r\n }\r\n this.currentWindow = popupWindow;\r\n window.addEventListener(\"beforeunload\", this.unloadWindow);\r\n return popupWindow;\r\n }\r\n catch (e) {\r\n this.logger.error(\"error opening popup \" + e.message);\r\n this.browserStorage.setInteractionInProgress(false);\r\n throw BrowserAuthError.createPopupWindowError(e.toString());\r\n }\r\n };\r\n /**\r\n * Helper function to set popup window dimensions and position\r\n * @param urlNavigate\r\n * @param popupName\r\n * @param popupWindowAttributes\r\n * @returns\r\n */\r\n PopupClient.prototype.openSizedPopup = function (urlNavigate, popupName, popupWindowAttributes) {\r\n var _a, _b, _c, _d;\r\n /**\r\n * adding winLeft and winTop to account for dual monitor\r\n * using screenLeft and screenTop for IE8 and earlier\r\n */\r\n var winLeft = window.screenLeft ? window.screenLeft : window.screenX;\r\n var winTop = window.screenTop ? window.screenTop : window.screenY;\r\n /**\r\n * window.innerWidth displays browser window\"s height and width excluding toolbars\r\n * using document.documentElement.clientWidth for IE8 and earlier\r\n */\r\n var winWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;\r\n var winHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;\r\n var width = (_a = popupWindowAttributes.popupSize) === null || _a === void 0 ? void 0 : _a.width;\r\n var height = (_b = popupWindowAttributes.popupSize) === null || _b === void 0 ? void 0 : _b.height;\r\n var top = (_c = popupWindowAttributes.popupPosition) === null || _c === void 0 ? void 0 : _c.top;\r\n var left = (_d = popupWindowAttributes.popupPosition) === null || _d === void 0 ? void 0 : _d.left;\r\n if (!width || width < 0 || width > winWidth) {\r\n this.logger.verbose(\"Default popup window width used. Window width not configured or invalid.\");\r\n width = BrowserConstants.POPUP_WIDTH;\r\n }\r\n if (!height || height < 0 || height > winHeight) {\r\n this.logger.verbose(\"Default popup window height used. Window height not configured or invalid.\");\r\n height = BrowserConstants.POPUP_HEIGHT;\r\n }\r\n if (!top || top < 0 || top > winHeight) {\r\n this.logger.verbose(\"Default popup window top position used. Window top not configured or invalid.\");\r\n top = Math.max(0, ((winHeight / 2) - (BrowserConstants.POPUP_HEIGHT / 2)) + winTop);\r\n }\r\n if (!left || left < 0 || left > winWidth) {\r\n this.logger.verbose(\"Default popup window left position used. Window left not configured or invalid.\");\r\n left = Math.max(0, ((winWidth / 2) - (BrowserConstants.POPUP_WIDTH / 2)) + winLeft);\r\n }\r\n return window.open(urlNavigate, popupName, \"width=\" + width + \", height=\" + height + \", top=\" + top + \", left=\" + left + \", scrollbars=yes\");\r\n };\r\n /**\r\n * Event callback to unload main window.\r\n */\r\n PopupClient.prototype.unloadWindow = function (e) {\r\n this.browserStorage.cleanRequestByInteractionType(InteractionType.Popup);\r\n if (this.currentWindow) {\r\n this.currentWindow.close();\r\n }\r\n // Guarantees browser unload will happen, so no other errors will be thrown.\r\n e.preventDefault();\r\n };\r\n /**\r\n * Closes popup, removes any state vars created during popup calls.\r\n * @param popupWindow\r\n */\r\n PopupClient.prototype.cleanPopup = function (popupWindow) {\r\n if (popupWindow) {\r\n // Close window.\r\n popupWindow.close();\r\n }\r\n // Remove window unload function\r\n window.removeEventListener(\"beforeunload\", this.unloadWindow);\r\n // Interaction is completed - remove interaction status.\r\n this.browserStorage.setInteractionInProgress(false);\r\n };\r\n /**\r\n * Generates the name for the popup based on the client id and request\r\n * @param clientId\r\n * @param request\r\n */\r\n PopupClient.prototype.generatePopupName = function (scopes, authority) {\r\n return BrowserConstants.POPUP_NAME_PREFIX + \".\" + this.config.auth.clientId + \".\" + scopes.join(\"-\") + \".\" + authority + \".\" + this.correlationId;\r\n };\r\n /**\r\n * Generates the name for the popup based on the client id and request for logouts\r\n * @param clientId\r\n * @param request\r\n */\r\n PopupClient.prototype.generateLogoutPopupName = function (request) {\r\n var homeAccountId = request.account && request.account.homeAccountId;\r\n return BrowserConstants.POPUP_NAME_PREFIX + \".\" + this.config.auth.clientId + \".\" + homeAccountId + \".\" + this.correlationId;\r\n };\r\n return PopupClient;\r\n}(StandardInteractionClient));\n\nexport { PopupClient };\n","/*! @azure/msal-browser v2.32.2 2023-01-10 */\n'use strict';\nimport { __extends, __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { StringUtils, ClientAuthError, ServerError } from '@azure/msal-common';\nimport { BrowserAuthError, BrowserAuthErrorMessage } from '../error/BrowserAuthError.js';\nimport { TemporaryCacheKeys, ApiId } from '../utils/BrowserConstants.js';\nimport { InteractionHandler } from './InteractionHandler.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar RedirectHandler = /** @class */ (function (_super) {\r\n __extends(RedirectHandler, _super);\r\n function RedirectHandler(authCodeModule, storageImpl, authCodeRequest, logger, browserCrypto) {\r\n var _this = _super.call(this, authCodeModule, storageImpl, authCodeRequest, logger) || this;\r\n _this.browserCrypto = browserCrypto;\r\n return _this;\r\n }\r\n /**\r\n * Redirects window to given URL.\r\n * @param urlNavigate\r\n */\r\n RedirectHandler.prototype.initiateAuthRequest = function (requestUrl, params) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var navigationOptions, navigate;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.verbose(\"RedirectHandler.initiateAuthRequest called\");\r\n if (!!StringUtils.isEmpty(requestUrl)) return [3 /*break*/, 7];\r\n // Cache start page, returns to this page after redirectUri if navigateToLoginRequestUrl is true\r\n if (params.redirectStartPage) {\r\n this.logger.verbose(\"RedirectHandler.initiateAuthRequest: redirectStartPage set, caching start page\");\r\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.ORIGIN_URI, params.redirectStartPage, true);\r\n }\r\n // Set interaction status in the library.\r\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.CORRELATION_ID, this.authCodeRequest.correlationId, true);\r\n this.browserStorage.cacheCodeRequest(this.authCodeRequest, this.browserCrypto);\r\n this.logger.infoPii(\"RedirectHandler.initiateAuthRequest: Navigate to: \" + requestUrl);\r\n navigationOptions = {\r\n apiId: ApiId.acquireTokenRedirect,\r\n timeout: params.redirectTimeout,\r\n noHistory: false\r\n };\r\n if (!(typeof params.onRedirectNavigate === \"function\")) return [3 /*break*/, 4];\r\n this.logger.verbose(\"RedirectHandler.initiateAuthRequest: Invoking onRedirectNavigate callback\");\r\n navigate = params.onRedirectNavigate(requestUrl);\r\n if (!(navigate !== false)) return [3 /*break*/, 2];\r\n this.logger.verbose(\"RedirectHandler.initiateAuthRequest: onRedirectNavigate did not return false, navigating\");\r\n return [4 /*yield*/, params.navigationClient.navigateExternal(requestUrl, navigationOptions)];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/];\r\n case 2:\r\n this.logger.verbose(\"RedirectHandler.initiateAuthRequest: onRedirectNavigate returned false, stopping navigation\");\r\n return [2 /*return*/];\r\n case 3: return [3 /*break*/, 6];\r\n case 4:\r\n // Navigate window to request URL\r\n this.logger.verbose(\"RedirectHandler.initiateAuthRequest: Navigating window to navigate url\");\r\n return [4 /*yield*/, params.navigationClient.navigateExternal(requestUrl, navigationOptions)];\r\n case 5:\r\n _a.sent();\r\n return [2 /*return*/];\r\n case 6: return [3 /*break*/, 8];\r\n case 7:\r\n // Throw error if request URL is empty.\r\n this.logger.info(\"RedirectHandler.initiateAuthRequest: Navigate url is empty\");\r\n throw BrowserAuthError.createEmptyNavigationUriError();\r\n case 8: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Handle authorization code response in the window.\r\n * @param hash\r\n */\r\n RedirectHandler.prototype.handleCodeResponseFromHash = function (locationHash, state, authority, networkModule) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var stateKey, requestState, authCodeResponse, nonceKey, cachedNonce, cachedCcsCred, tokenResponse;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.verbose(\"RedirectHandler.handleCodeResponse called\");\r\n // Check that location hash isn't empty.\r\n if (StringUtils.isEmpty(locationHash)) {\r\n throw BrowserAuthError.createEmptyHashError(locationHash);\r\n }\r\n // Interaction is completed - remove interaction status.\r\n this.browserStorage.setInteractionInProgress(false);\r\n stateKey = this.browserStorage.generateStateKey(state);\r\n requestState = this.browserStorage.getTemporaryCache(stateKey);\r\n if (!requestState) {\r\n throw ClientAuthError.createStateNotFoundError(\"Cached State\");\r\n }\r\n try {\r\n authCodeResponse = this.authModule.handleFragmentResponse(locationHash, requestState);\r\n }\r\n catch (e) {\r\n if (e instanceof ServerError && e.subError === BrowserAuthErrorMessage.userCancelledError.code) {\r\n // Translate server error caused by user closing native prompt to corresponding first class MSAL error\r\n throw BrowserAuthError.createUserCancelledError();\r\n }\r\n else {\r\n throw e;\r\n }\r\n }\r\n nonceKey = this.browserStorage.generateNonceKey(requestState);\r\n cachedNonce = this.browserStorage.getTemporaryCache(nonceKey);\r\n // Assign code to request\r\n this.authCodeRequest.code = authCodeResponse.code;\r\n if (!authCodeResponse.cloud_instance_host_name) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.updateTokenEndpointAuthority(authCodeResponse.cloud_instance_host_name, authority, networkModule)];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n authCodeResponse.nonce = cachedNonce || undefined;\r\n authCodeResponse.state = requestState;\r\n // Add CCS parameters if available\r\n if (authCodeResponse.client_info) {\r\n this.authCodeRequest.clientInfo = authCodeResponse.client_info;\r\n }\r\n else {\r\n cachedCcsCred = this.checkCcsCredentials();\r\n if (cachedCcsCred) {\r\n this.authCodeRequest.ccsCredential = cachedCcsCred;\r\n }\r\n }\r\n return [4 /*yield*/, this.authModule.acquireToken(this.authCodeRequest, authCodeResponse)];\r\n case 3:\r\n tokenResponse = _a.sent();\r\n this.browserStorage.cleanRequestByState(state);\r\n return [2 /*return*/, tokenResponse];\r\n }\r\n });\r\n });\r\n };\r\n return RedirectHandler;\r\n}(InteractionHandler));\n\nexport { RedirectHandler };\n","/*! @azure/msal-browser v2.32.2 2023-01-10 */\n'use strict';\nimport { __extends, __awaiter, __generator, __assign } from '../_virtual/_tslib.js';\nimport { UrlString, AuthError, Constants, ThrottlingUtils, ProtocolUtils } from '@azure/msal-common';\nimport { StandardInteractionClient } from './StandardInteractionClient.js';\nimport { TemporaryCacheKeys, ApiId, InteractionType } from '../utils/BrowserConstants.js';\nimport { RedirectHandler } from '../interaction_handler/RedirectHandler.js';\nimport { BrowserUtils } from '../utils/BrowserUtils.js';\nimport { EventType } from '../event/EventType.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { NativeInteractionClient } from './NativeInteractionClient.js';\nimport { NativeMessageHandler } from '../broker/nativeBroker/NativeMessageHandler.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar RedirectClient = /** @class */ (function (_super) {\r\n __extends(RedirectClient, _super);\r\n function RedirectClient(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeStorageImpl, nativeMessageHandler, correlationId) {\r\n var _this = _super.call(this, config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId) || this;\r\n _this.nativeStorage = nativeStorageImpl;\r\n return _this;\r\n }\r\n /**\r\n * Redirects the page to the /authorize endpoint of the IDP\r\n * @param request\r\n */\r\n RedirectClient.prototype.acquireToken = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var validRequest, serverTelemetryManager, handleBackButton, authCodeRequest, authClient, interactionHandler, navigateUrl, redirectStartPage, e_1;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.initializeAuthorizationRequest(request, InteractionType.Redirect)];\r\n case 1:\r\n validRequest = _a.sent();\r\n this.browserStorage.updateCacheEntries(validRequest.state, validRequest.nonce, validRequest.authority, validRequest.loginHint || Constants.EMPTY_STRING, validRequest.account || null);\r\n serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenRedirect);\r\n handleBackButton = function (event) {\r\n // Clear temporary cache if the back button is clicked during the redirect flow.\r\n if (event.persisted) {\r\n _this.logger.verbose(\"Page was restored from back/forward cache. Clearing temporary cache.\");\r\n _this.browserStorage.cleanRequestByState(validRequest.state);\r\n }\r\n };\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 7, , 8]);\r\n return [4 /*yield*/, this.initializeAuthorizationCodeRequest(validRequest)];\r\n case 3:\r\n authCodeRequest = _a.sent();\r\n return [4 /*yield*/, this.createAuthCodeClient(serverTelemetryManager, validRequest.authority, validRequest.azureCloudOptions)];\r\n case 4:\r\n authClient = _a.sent();\r\n this.logger.verbose(\"Auth code client created\");\r\n interactionHandler = new RedirectHandler(authClient, this.browserStorage, authCodeRequest, this.logger, this.browserCrypto);\r\n return [4 /*yield*/, authClient.getAuthCodeUrl(__assign(__assign({}, validRequest), { nativeBroker: NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeMessageHandler, request.authenticationScheme) }))];\r\n case 5:\r\n navigateUrl = _a.sent();\r\n redirectStartPage = this.getRedirectStartPage(request.redirectStartPage);\r\n this.logger.verbosePii(\"Redirect start page: \" + redirectStartPage);\r\n // Clear temporary cache if the back button is clicked during the redirect flow.\r\n window.addEventListener(\"pageshow\", handleBackButton);\r\n return [4 /*yield*/, interactionHandler.initiateAuthRequest(navigateUrl, {\r\n navigationClient: this.navigationClient,\r\n redirectTimeout: this.config.system.redirectNavigationTimeout,\r\n redirectStartPage: redirectStartPage,\r\n onRedirectNavigate: request.onRedirectNavigate\r\n })];\r\n case 6: \r\n // Show the UI once the url has been created. Response will come back in the hash, which will be handled in the handleRedirectCallback function.\r\n return [2 /*return*/, _a.sent()];\r\n case 7:\r\n e_1 = _a.sent();\r\n if (e_1 instanceof AuthError) {\r\n e_1.setCorrelationId(this.correlationId);\r\n }\r\n window.removeEventListener(\"pageshow\", handleBackButton);\r\n serverTelemetryManager.cacheFailedRequest(e_1);\r\n this.browserStorage.cleanRequestByState(validRequest.state);\r\n throw e_1;\r\n case 8: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Checks if navigateToLoginRequestUrl is set, and:\r\n * - if true, performs logic to cache and navigate\r\n * - if false, handles hash string and parses response\r\n * @param hash\r\n */\r\n RedirectClient.prototype.handleRedirectPromise = function (hash) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var serverTelemetryManager, responseHash, state, serverParams, loginRequestUrl, loginRequestUrlNormalized, currentUrlNormalized, handleHashResult, navigationOptions, processHashOnRedirect, homepage, e_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.handleRedirectPromise);\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 10, , 11]);\r\n if (!this.browserStorage.isInteractionInProgress(true)) {\r\n this.logger.info(\"handleRedirectPromise called but there is no interaction in progress, returning null.\");\r\n return [2 /*return*/, null];\r\n }\r\n responseHash = this.getRedirectResponseHash(hash || window.location.hash);\r\n if (!responseHash) {\r\n // Not a recognized server response hash or hash not associated with a redirect request\r\n this.logger.info(\"handleRedirectPromise did not detect a response hash as a result of a redirect. Cleaning temporary cache.\");\r\n this.browserStorage.cleanRequestByInteractionType(InteractionType.Redirect);\r\n return [2 /*return*/, null];\r\n }\r\n state = void 0;\r\n try {\r\n serverParams = UrlString.getDeserializedHash(responseHash);\r\n state = this.validateAndExtractStateFromHash(serverParams, InteractionType.Redirect);\r\n this.logger.verbose(\"State extracted from hash\");\r\n }\r\n catch (e) {\r\n this.logger.info(\"handleRedirectPromise was unable to extract state due to: \" + e);\r\n this.browserStorage.cleanRequestByInteractionType(InteractionType.Redirect);\r\n return [2 /*return*/, null];\r\n }\r\n loginRequestUrl = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.ORIGIN_URI, true) || Constants.EMPTY_STRING;\r\n loginRequestUrlNormalized = UrlString.removeHashFromUrl(loginRequestUrl);\r\n currentUrlNormalized = UrlString.removeHashFromUrl(window.location.href);\r\n if (!(loginRequestUrlNormalized === currentUrlNormalized && this.config.auth.navigateToLoginRequestUrl)) return [3 /*break*/, 3];\r\n // We are on the page we need to navigate to - handle hash\r\n this.logger.verbose(\"Current page is loginRequestUrl, handling hash\");\r\n return [4 /*yield*/, this.handleHash(responseHash, state, serverTelemetryManager)];\r\n case 2:\r\n handleHashResult = _a.sent();\r\n if (loginRequestUrl.indexOf(\"#\") > -1) {\r\n // Replace current hash with non-msal hash, if present\r\n BrowserUtils.replaceHash(loginRequestUrl);\r\n }\r\n return [2 /*return*/, handleHashResult];\r\n case 3:\r\n if (!!this.config.auth.navigateToLoginRequestUrl) return [3 /*break*/, 4];\r\n this.logger.verbose(\"NavigateToLoginRequestUrl set to false, handling hash\");\r\n return [2 /*return*/, this.handleHash(responseHash, state, serverTelemetryManager)];\r\n case 4:\r\n if (!(!BrowserUtils.isInIframe() || this.config.system.allowRedirectInIframe)) return [3 /*break*/, 9];\r\n /*\r\n * Returned from authority using redirect - need to perform navigation before processing response\r\n * Cache the hash to be retrieved after the next redirect\r\n */\r\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.URL_HASH, responseHash, true);\r\n navigationOptions = {\r\n apiId: ApiId.handleRedirectPromise,\r\n timeout: this.config.system.redirectNavigationTimeout,\r\n noHistory: true\r\n };\r\n processHashOnRedirect = true;\r\n if (!(!loginRequestUrl || loginRequestUrl === \"null\")) return [3 /*break*/, 6];\r\n homepage = BrowserUtils.getHomepage();\r\n // Cache the homepage under ORIGIN_URI to ensure cached hash is processed on homepage\r\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.ORIGIN_URI, homepage, true);\r\n this.logger.warning(\"Unable to get valid login request url from cache, redirecting to home page\");\r\n return [4 /*yield*/, this.navigationClient.navigateInternal(homepage, navigationOptions)];\r\n case 5:\r\n processHashOnRedirect = _a.sent();\r\n return [3 /*break*/, 8];\r\n case 6:\r\n // Navigate to page that initiated the redirect request\r\n this.logger.verbose(\"Navigating to loginRequestUrl: \" + loginRequestUrl);\r\n return [4 /*yield*/, this.navigationClient.navigateInternal(loginRequestUrl, navigationOptions)];\r\n case 7:\r\n processHashOnRedirect = _a.sent();\r\n _a.label = 8;\r\n case 8:\r\n // If navigateInternal implementation returns false, handle the hash now\r\n if (!processHashOnRedirect) {\r\n return [2 /*return*/, this.handleHash(responseHash, state, serverTelemetryManager)];\r\n }\r\n _a.label = 9;\r\n case 9: return [2 /*return*/, null];\r\n case 10:\r\n e_2 = _a.sent();\r\n if (e_2 instanceof AuthError) {\r\n e_2.setCorrelationId(this.correlationId);\r\n }\r\n serverTelemetryManager.cacheFailedRequest(e_2);\r\n this.browserStorage.cleanRequestByInteractionType(InteractionType.Redirect);\r\n throw e_2;\r\n case 11: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Gets the response hash for a redirect request\r\n * Returns null if interactionType in the state value is not \"redirect\" or the hash does not contain known properties\r\n * @param hash\r\n */\r\n RedirectClient.prototype.getRedirectResponseHash = function (hash) {\r\n this.logger.verbose(\"getRedirectResponseHash called\");\r\n // Get current location hash from window or cache.\r\n var isResponseHash = UrlString.hashContainsKnownProperties(hash);\r\n if (isResponseHash) {\r\n BrowserUtils.clearHash(window);\r\n this.logger.verbose(\"Hash contains known properties, returning response hash\");\r\n return hash;\r\n }\r\n var cachedHash = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.URL_HASH, true);\r\n this.browserStorage.removeItem(this.browserStorage.generateCacheKey(TemporaryCacheKeys.URL_HASH));\r\n this.logger.verbose(\"Hash does not contain known properties, returning cached hash\");\r\n return cachedHash;\r\n };\r\n /**\r\n * Checks if hash exists and handles in window.\r\n * @param hash\r\n * @param state\r\n */\r\n RedirectClient.prototype.handleHash = function (hash, state, serverTelemetryManager) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var cachedRequest, serverParams, nativeInteractionClient, userRequestState, currentAuthority, authClient, interactionHandler;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n cachedRequest = this.browserStorage.getCachedRequest(state, this.browserCrypto);\r\n this.logger.verbose(\"handleHash called, retrieved cached request\");\r\n serverParams = UrlString.getDeserializedHash(hash);\r\n if (serverParams.accountId) {\r\n this.logger.verbose(\"Account id found in hash, calling WAM for token\");\r\n if (!this.nativeMessageHandler) {\r\n throw BrowserAuthError.createNativeConnectionNotEstablishedError();\r\n }\r\n nativeInteractionClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.acquireTokenPopup, this.performanceClient, this.nativeMessageHandler, serverParams.accountId, this.browserStorage, cachedRequest.correlationId);\r\n userRequestState = ProtocolUtils.parseRequestState(this.browserCrypto, state).userRequestState;\r\n return [2 /*return*/, nativeInteractionClient.acquireToken(__assign(__assign({}, cachedRequest), { state: userRequestState, prompt: undefined // Server should handle the prompt, ideally native broker can do this part silently\r\n })).finally(function () {\r\n _this.browserStorage.cleanRequestByState(state);\r\n })];\r\n }\r\n currentAuthority = this.browserStorage.getCachedAuthority(state);\r\n if (!currentAuthority) {\r\n throw BrowserAuthError.createNoCachedAuthorityError();\r\n }\r\n return [4 /*yield*/, this.createAuthCodeClient(serverTelemetryManager, currentAuthority)];\r\n case 1:\r\n authClient = _a.sent();\r\n this.logger.verbose(\"Auth code client created\");\r\n ThrottlingUtils.removeThrottle(this.browserStorage, this.config.auth.clientId, cachedRequest);\r\n interactionHandler = new RedirectHandler(authClient, this.browserStorage, cachedRequest, this.logger, this.browserCrypto);\r\n return [4 /*yield*/, interactionHandler.handleCodeResponseFromHash(hash, state, authClient.authority, this.networkClient)];\r\n case 2: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Use to log out the current user, and redirect the user to the postLogoutRedirectUri.\r\n * Default behaviour is to redirect the user to `window.location.href`.\r\n * @param logoutRequest\r\n */\r\n RedirectClient.prototype.logout = function (logoutRequest) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var validLogoutRequest, serverTelemetryManager, navigationOptions, authClient, logoutUri, navigate, e_3;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.verbose(\"logoutRedirect called\");\r\n validLogoutRequest = this.initializeLogoutRequest(logoutRequest);\r\n serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.logout);\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 10, , 11]);\r\n this.eventHandler.emitEvent(EventType.LOGOUT_START, InteractionType.Redirect, logoutRequest);\r\n // Clear cache on logout\r\n return [4 /*yield*/, this.clearCacheOnLogout(validLogoutRequest.account)];\r\n case 2:\r\n // Clear cache on logout\r\n _a.sent();\r\n navigationOptions = {\r\n apiId: ApiId.logout,\r\n timeout: this.config.system.redirectNavigationTimeout,\r\n noHistory: false\r\n };\r\n return [4 /*yield*/, this.createAuthCodeClient(serverTelemetryManager, logoutRequest && logoutRequest.authority)];\r\n case 3:\r\n authClient = _a.sent();\r\n this.logger.verbose(\"Auth code client created\");\r\n logoutUri = authClient.getLogoutUri(validLogoutRequest);\r\n this.eventHandler.emitEvent(EventType.LOGOUT_SUCCESS, InteractionType.Redirect, validLogoutRequest);\r\n if (!(logoutRequest && typeof logoutRequest.onRedirectNavigate === \"function\")) return [3 /*break*/, 7];\r\n navigate = logoutRequest.onRedirectNavigate(logoutUri);\r\n if (!(navigate !== false)) return [3 /*break*/, 5];\r\n this.logger.verbose(\"Logout onRedirectNavigate did not return false, navigating\");\r\n // Ensure interaction is in progress\r\n if (!this.browserStorage.getInteractionInProgress()) {\r\n this.browserStorage.setInteractionInProgress(true);\r\n }\r\n return [4 /*yield*/, this.navigationClient.navigateExternal(logoutUri, navigationOptions)];\r\n case 4:\r\n _a.sent();\r\n return [2 /*return*/];\r\n case 5:\r\n // Ensure interaction is not in progress\r\n this.browserStorage.setInteractionInProgress(false);\r\n this.logger.verbose(\"Logout onRedirectNavigate returned false, stopping navigation\");\r\n _a.label = 6;\r\n case 6: return [3 /*break*/, 9];\r\n case 7:\r\n // Ensure interaction is in progress\r\n if (!this.browserStorage.getInteractionInProgress()) {\r\n this.browserStorage.setInteractionInProgress(true);\r\n }\r\n return [4 /*yield*/, this.navigationClient.navigateExternal(logoutUri, navigationOptions)];\r\n case 8:\r\n _a.sent();\r\n return [2 /*return*/];\r\n case 9: return [3 /*break*/, 11];\r\n case 10:\r\n e_3 = _a.sent();\r\n if (e_3 instanceof AuthError) {\r\n e_3.setCorrelationId(this.correlationId);\r\n }\r\n serverTelemetryManager.cacheFailedRequest(e_3);\r\n this.eventHandler.emitEvent(EventType.LOGOUT_FAILURE, InteractionType.Redirect, null, e_3);\r\n this.eventHandler.emitEvent(EventType.LOGOUT_END, InteractionType.Redirect);\r\n throw e_3;\r\n case 11:\r\n this.eventHandler.emitEvent(EventType.LOGOUT_END, InteractionType.Redirect);\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Use to get the redirectStartPage either from request or use current window\r\n * @param requestStartPage\r\n */\r\n RedirectClient.prototype.getRedirectStartPage = function (requestStartPage) {\r\n var redirectStartPage = requestStartPage || window.location.href;\r\n return UrlString.getAbsoluteUrl(redirectStartPage, BrowserUtils.getCurrentUri());\r\n };\r\n return RedirectClient;\r\n}(StandardInteractionClient));\n\nexport { RedirectClient };\n","/*! @azure/msal-browser v2.32.2 2023-01-10 */\n'use strict';\nimport { __extends, __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { StringUtils, Constants, UrlString } from '@azure/msal-common';\nimport { InteractionHandler } from './InteractionHandler.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { DEFAULT_IFRAME_TIMEOUT_MS } from '../config/Configuration.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar SilentHandler = /** @class */ (function (_super) {\r\n __extends(SilentHandler, _super);\r\n function SilentHandler(authCodeModule, storageImpl, authCodeRequest, logger, systemOptions) {\r\n var _this = _super.call(this, authCodeModule, storageImpl, authCodeRequest, logger) || this;\r\n _this.navigateFrameWait = systemOptions.navigateFrameWait;\r\n _this.pollIntervalMilliseconds = systemOptions.pollIntervalMilliseconds;\r\n return _this;\r\n }\r\n /**\r\n * Creates a hidden iframe to given URL using user-requested scopes as an id.\r\n * @param urlNavigate\r\n * @param userRequestScopes\r\n */\r\n SilentHandler.prototype.initiateAuthRequest = function (requestUrl) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (StringUtils.isEmpty(requestUrl)) {\r\n // Throw error if request URL is empty.\r\n this.logger.info(\"Navigate url is empty\");\r\n throw BrowserAuthError.createEmptyNavigationUriError();\r\n }\r\n if (!this.navigateFrameWait) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.loadFrame(requestUrl)];\r\n case 1:\r\n _a = _b.sent();\r\n return [3 /*break*/, 3];\r\n case 2:\r\n _a = this.loadFrameSync(requestUrl);\r\n _b.label = 3;\r\n case 3: return [2 /*return*/, _a];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Monitors an iframe content window until it loads a url with a known hash, or hits a specified timeout.\r\n * @param iframe\r\n * @param timeout\r\n */\r\n SilentHandler.prototype.monitorIframeForHash = function (iframe, timeout) {\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n if (timeout < DEFAULT_IFRAME_TIMEOUT_MS) {\r\n _this.logger.warning(\"system.loadFrameTimeout or system.iframeHashTimeout set to lower (\" + timeout + \"ms) than the default (\" + DEFAULT_IFRAME_TIMEOUT_MS + \"ms). This may result in timeouts.\");\r\n }\r\n /*\r\n * Polling for iframes can be purely timing based,\r\n * since we don't need to account for interaction.\r\n */\r\n var nowMark = window.performance.now();\r\n var timeoutMark = nowMark + timeout;\r\n var intervalId = setInterval(function () {\r\n if (window.performance.now() > timeoutMark) {\r\n _this.removeHiddenIframe(iframe);\r\n clearInterval(intervalId);\r\n reject(BrowserAuthError.createMonitorIframeTimeoutError());\r\n return;\r\n }\r\n var href = Constants.EMPTY_STRING;\r\n var contentWindow = iframe.contentWindow;\r\n try {\r\n /*\r\n * Will throw if cross origin,\r\n * which should be caught and ignored\r\n * since we need the interval to keep running while on STS UI.\r\n */\r\n href = contentWindow ? contentWindow.location.href : Constants.EMPTY_STRING;\r\n }\r\n catch (e) { }\r\n if (StringUtils.isEmpty(href)) {\r\n return;\r\n }\r\n var contentHash = contentWindow ? contentWindow.location.hash : Constants.EMPTY_STRING;\r\n if (UrlString.hashContainsKnownProperties(contentHash)) {\r\n // Success case\r\n _this.removeHiddenIframe(iframe);\r\n clearInterval(intervalId);\r\n resolve(contentHash);\r\n return;\r\n }\r\n }, _this.pollIntervalMilliseconds);\r\n });\r\n };\r\n /**\r\n * @hidden\r\n * Loads iframe with authorization endpoint URL\r\n * @ignore\r\n */\r\n SilentHandler.prototype.loadFrame = function (urlNavigate) {\r\n /*\r\n * This trick overcomes iframe navigation in IE\r\n * IE does not load the page consistently in iframe\r\n */\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n var frameHandle = _this.createHiddenIframe();\r\n setTimeout(function () {\r\n if (!frameHandle) {\r\n reject(\"Unable to load iframe\");\r\n return;\r\n }\r\n frameHandle.src = urlNavigate;\r\n resolve(frameHandle);\r\n }, _this.navigateFrameWait);\r\n });\r\n };\r\n /**\r\n * @hidden\r\n * Loads the iframe synchronously when the navigateTimeFrame is set to `0`\r\n * @param urlNavigate\r\n * @param frameName\r\n * @param logger\r\n */\r\n SilentHandler.prototype.loadFrameSync = function (urlNavigate) {\r\n var frameHandle = this.createHiddenIframe();\r\n frameHandle.src = urlNavigate;\r\n return frameHandle;\r\n };\r\n /**\r\n * @hidden\r\n * Creates a new hidden iframe or gets an existing one for silent token renewal.\r\n * @ignore\r\n */\r\n SilentHandler.prototype.createHiddenIframe = function () {\r\n var authFrame = document.createElement(\"iframe\");\r\n authFrame.style.visibility = \"hidden\";\r\n authFrame.style.position = \"absolute\";\r\n authFrame.style.width = authFrame.style.height = \"0\";\r\n authFrame.style.border = \"0\";\r\n authFrame.setAttribute(\"sandbox\", \"allow-scripts allow-same-origin allow-forms\");\r\n document.getElementsByTagName(\"body\")[0].appendChild(authFrame);\r\n return authFrame;\r\n };\r\n /**\r\n * @hidden\r\n * Removes a hidden iframe from the page.\r\n * @ignore\r\n */\r\n SilentHandler.prototype.removeHiddenIframe = function (iframe) {\r\n if (document.body === iframe.parentNode) {\r\n document.body.removeChild(iframe);\r\n }\r\n };\r\n return SilentHandler;\r\n}(InteractionHandler));\n\nexport { SilentHandler };\n","/*! @azure/msal-browser v2.32.2 2023-01-10 */\n'use strict';\nimport { __assign } from '../_virtual/_tslib.js';\nimport { DEFAULT_SYSTEM_OPTIONS, StubbedNetworkModule, Constants, ProtocolMode, AzureCloudInstance, LogLevel } from '@azure/msal-common';\nimport { BrowserUtils } from '../utils/BrowserUtils.js';\nimport { BrowserConstants, BrowserCacheLocation } from '../utils/BrowserConstants.js';\nimport { NavigationClient } from '../navigation/NavigationClient.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n// Default timeout for popup windows and iframes in milliseconds\r\nvar DEFAULT_POPUP_TIMEOUT_MS = 60000;\r\nvar DEFAULT_IFRAME_TIMEOUT_MS = 6000;\r\nvar DEFAULT_REDIRECT_TIMEOUT_MS = 30000;\r\nvar DEFAULT_NATIVE_BROKER_HANDSHAKE_TIMEOUT_MS = 2000;\r\n/**\r\n * MSAL function that sets the default options when not explicitly configured from app developer\r\n *\r\n * @param auth\r\n * @param cache\r\n * @param system\r\n *\r\n * @returns Configuration object\r\n */\r\nfunction buildConfiguration(_a, isBrowserEnvironment) {\r\n var userInputAuth = _a.auth, userInputCache = _a.cache, userInputSystem = _a.system, userInputTelemetry = _a.telemetry;\r\n // Default auth options for browser\r\n var DEFAULT_AUTH_OPTIONS = {\r\n clientId: Constants.EMPTY_STRING,\r\n authority: \"\" + Constants.DEFAULT_AUTHORITY,\r\n knownAuthorities: [],\r\n cloudDiscoveryMetadata: Constants.EMPTY_STRING,\r\n authorityMetadata: Constants.EMPTY_STRING,\r\n redirectUri: Constants.EMPTY_STRING,\r\n postLogoutRedirectUri: Constants.EMPTY_STRING,\r\n navigateToLoginRequestUrl: true,\r\n clientCapabilities: [],\r\n protocolMode: ProtocolMode.AAD,\r\n azureCloudOptions: {\r\n azureCloudInstance: AzureCloudInstance.None,\r\n tenant: Constants.EMPTY_STRING\r\n },\r\n skipAuthorityMetadataCache: false,\r\n };\r\n // Default cache options for browser\r\n var DEFAULT_CACHE_OPTIONS = {\r\n cacheLocation: BrowserCacheLocation.SessionStorage,\r\n storeAuthStateInCookie: false,\r\n secureCookies: false\r\n };\r\n // Default logger options for browser\r\n var DEFAULT_LOGGER_OPTIONS = {\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n loggerCallback: function () {\r\n // allow users to not set logger call back \r\n },\r\n logLevel: LogLevel.Info,\r\n piiLoggingEnabled: false\r\n };\r\n // Default system options for browser\r\n var DEFAULT_BROWSER_SYSTEM_OPTIONS = __assign(__assign({}, DEFAULT_SYSTEM_OPTIONS), { loggerOptions: DEFAULT_LOGGER_OPTIONS, networkClient: isBrowserEnvironment ? BrowserUtils.getBrowserNetworkClient() : StubbedNetworkModule, navigationClient: new NavigationClient(), loadFrameTimeout: 0, \r\n // If loadFrameTimeout is provided, use that as default.\r\n windowHashTimeout: (userInputSystem === null || userInputSystem === void 0 ? void 0 : userInputSystem.loadFrameTimeout) || DEFAULT_POPUP_TIMEOUT_MS, iframeHashTimeout: (userInputSystem === null || userInputSystem === void 0 ? void 0 : userInputSystem.loadFrameTimeout) || DEFAULT_IFRAME_TIMEOUT_MS, navigateFrameWait: isBrowserEnvironment && BrowserUtils.detectIEOrEdge() ? 500 : 0, redirectNavigationTimeout: DEFAULT_REDIRECT_TIMEOUT_MS, asyncPopups: false, allowRedirectInIframe: false, allowNativeBroker: false, nativeBrokerHandshakeTimeout: (userInputSystem === null || userInputSystem === void 0 ? void 0 : userInputSystem.nativeBrokerHandshakeTimeout) || DEFAULT_NATIVE_BROKER_HANDSHAKE_TIMEOUT_MS, pollIntervalMilliseconds: BrowserConstants.DEFAULT_POLL_INTERVAL_MS, cryptoOptions: {\r\n useMsrCrypto: false,\r\n entropy: undefined\r\n } });\r\n var providedSystemOptions = __assign(__assign({}, userInputSystem), { loggerOptions: (userInputSystem === null || userInputSystem === void 0 ? void 0 : userInputSystem.loggerOptions) || DEFAULT_LOGGER_OPTIONS });\r\n var DEFAULT_TELEMETRY_OPTIONS = {\r\n application: {\r\n appName: Constants.EMPTY_STRING,\r\n appVersion: Constants.EMPTY_STRING\r\n }\r\n };\r\n var overlayedConfig = {\r\n auth: __assign(__assign({}, DEFAULT_AUTH_OPTIONS), userInputAuth),\r\n cache: __assign(__assign({}, DEFAULT_CACHE_OPTIONS), userInputCache),\r\n system: __assign(__assign({}, DEFAULT_BROWSER_SYSTEM_OPTIONS), providedSystemOptions),\r\n telemetry: __assign(__assign({}, DEFAULT_TELEMETRY_OPTIONS), userInputTelemetry)\r\n };\r\n return overlayedConfig;\r\n}\n\nexport { DEFAULT_IFRAME_TIMEOUT_MS, DEFAULT_NATIVE_BROKER_HANDSHAKE_TIMEOUT_MS, DEFAULT_POPUP_TIMEOUT_MS, DEFAULT_REDIRECT_TIMEOUT_MS, buildConfiguration };\n","/*! @azure/msal-browser v2.32.2 2023-01-10 */\n'use strict';\nimport { __extends, __awaiter, __generator, __assign } from '../_virtual/_tslib.js';\nimport { AuthError, Constants, PerformanceEvents, StringUtils, PromptValue, UrlString, ProtocolUtils } from '@azure/msal-common';\nimport { StandardInteractionClient } from './StandardInteractionClient.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { InteractionType } from '../utils/BrowserConstants.js';\nimport { SilentHandler } from '../interaction_handler/SilentHandler.js';\nimport { NativeMessageHandler } from '../broker/nativeBroker/NativeMessageHandler.js';\nimport { NativeInteractionClient } from './NativeInteractionClient.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar SilentIframeClient = /** @class */ (function (_super) {\r\n __extends(SilentIframeClient, _super);\r\n function SilentIframeClient(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, apiId, performanceClient, nativeStorageImpl, nativeMessageHandler, correlationId) {\r\n var _this = _super.call(this, config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId) || this;\r\n _this.apiId = apiId;\r\n _this.nativeStorage = nativeStorageImpl;\r\n return _this;\r\n }\r\n /**\r\n * Acquires a token silently by opening a hidden iframe to the /authorize endpoint with prompt=none or prompt=no_session\r\n * @param request\r\n */\r\n SilentIframeClient.prototype.acquireToken = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var acquireTokenMeasurement, silentRequest, serverTelemetryManager, authClient, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.verbose(\"acquireTokenByIframe called\");\r\n acquireTokenMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.SilentIframeClientAcquireToken, request.correlationId);\r\n // Check that we have some SSO data\r\n if (StringUtils.isEmpty(request.loginHint) && StringUtils.isEmpty(request.sid) && (!request.account || StringUtils.isEmpty(request.account.username))) {\r\n this.logger.warning(\"No user hint provided. The authorization server may need more information to complete this request.\");\r\n }\r\n // Check that prompt is set to none or no_session, throw error if it is set to anything else.\r\n if (request.prompt && (request.prompt !== PromptValue.NONE) && (request.prompt !== PromptValue.NO_SESSION)) {\r\n acquireTokenMeasurement.endMeasurement({\r\n success: false\r\n });\r\n throw BrowserAuthError.createSilentPromptValueError(request.prompt);\r\n }\r\n return [4 /*yield*/, this.initializeAuthorizationRequest(__assign(__assign({}, request), { prompt: request.prompt || PromptValue.NONE }), InteractionType.Silent)];\r\n case 1:\r\n silentRequest = _a.sent();\r\n this.browserStorage.updateCacheEntries(silentRequest.state, silentRequest.nonce, silentRequest.authority, silentRequest.loginHint || Constants.EMPTY_STRING, silentRequest.account || null);\r\n serverTelemetryManager = this.initializeServerTelemetryManager(this.apiId);\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 5, , 6]);\r\n return [4 /*yield*/, this.createAuthCodeClient(serverTelemetryManager, silentRequest.authority, silentRequest.azureCloudOptions)];\r\n case 3:\r\n authClient = _a.sent();\r\n this.logger.verbose(\"Auth code client created\");\r\n return [4 /*yield*/, this.silentTokenHelper(authClient, silentRequest).then(function (result) {\r\n acquireTokenMeasurement.endMeasurement({\r\n success: true,\r\n fromCache: false,\r\n requestId: result.requestId\r\n });\r\n return result;\r\n })];\r\n case 4: return [2 /*return*/, _a.sent()];\r\n case 5:\r\n e_1 = _a.sent();\r\n if (e_1 instanceof AuthError) {\r\n e_1.setCorrelationId(this.correlationId);\r\n }\r\n serverTelemetryManager.cacheFailedRequest(e_1);\r\n this.browserStorage.cleanRequestByState(silentRequest.state);\r\n acquireTokenMeasurement.endMeasurement({\r\n errorCode: e_1 instanceof AuthError && e_1.errorCode || undefined,\r\n subErrorCode: e_1 instanceof AuthError && e_1.subError || undefined,\r\n success: false\r\n });\r\n throw e_1;\r\n case 6: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Currently Unsupported\r\n */\r\n SilentIframeClient.prototype.logout = function () {\r\n // Synchronous so we must reject\r\n return Promise.reject(BrowserAuthError.createSilentLogoutUnsupportedError());\r\n };\r\n /**\r\n * Helper which acquires an authorization code silently using a hidden iframe from given url\r\n * using the scopes requested as part of the id, and exchanges the code for a set of OAuth tokens.\r\n * @param navigateUrl\r\n * @param userRequestScopes\r\n */\r\n SilentIframeClient.prototype.silentTokenHelper = function (authClient, silentRequest) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var authCodeRequest, navigateUrl, silentHandler, msalFrame, hash, serverParams, state, nativeInteractionClient, userRequestState;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.initializeAuthorizationCodeRequest(silentRequest)];\r\n case 1:\r\n authCodeRequest = _a.sent();\r\n return [4 /*yield*/, authClient.getAuthCodeUrl(__assign(__assign({}, silentRequest), { nativeBroker: NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeMessageHandler, silentRequest.authenticationScheme) }))];\r\n case 2:\r\n navigateUrl = _a.sent();\r\n silentHandler = new SilentHandler(authClient, this.browserStorage, authCodeRequest, this.logger, this.config.system);\r\n return [4 /*yield*/, silentHandler.initiateAuthRequest(navigateUrl)];\r\n case 3:\r\n msalFrame = _a.sent();\r\n return [4 /*yield*/, silentHandler.monitorIframeForHash(msalFrame, this.config.system.iframeHashTimeout)];\r\n case 4:\r\n hash = _a.sent();\r\n serverParams = UrlString.getDeserializedHash(hash);\r\n state = this.validateAndExtractStateFromHash(serverParams, InteractionType.Silent, authCodeRequest.correlationId);\r\n if (serverParams.accountId) {\r\n this.logger.verbose(\"Account id found in hash, calling WAM for token\");\r\n if (!this.nativeMessageHandler) {\r\n throw BrowserAuthError.createNativeConnectionNotEstablishedError();\r\n }\r\n nativeInteractionClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.apiId, this.performanceClient, this.nativeMessageHandler, serverParams.accountId, this.browserStorage, this.correlationId);\r\n userRequestState = ProtocolUtils.parseRequestState(this.browserCrypto, state).userRequestState;\r\n return [2 /*return*/, nativeInteractionClient.acquireToken(__assign(__assign({}, silentRequest), { state: userRequestState, prompt: silentRequest.prompt || PromptValue.NONE })).finally(function () {\r\n _this.browserStorage.cleanRequestByState(state);\r\n })];\r\n }\r\n // Handle response from hash string\r\n return [2 /*return*/, silentHandler.handleCodeResponseFromHash(hash, state, authClient.authority, this.networkClient)];\r\n }\r\n });\r\n });\r\n };\r\n return SilentIframeClient;\r\n}(StandardInteractionClient));\n\nexport { SilentIframeClient };\n","/*! @azure/msal-browser v2.32.2 2023-01-10 */\n'use strict';\nimport { __extends, __awaiter, __generator, __assign } from '../_virtual/_tslib.js';\nimport { StandardInteractionClient } from './StandardInteractionClient.js';\nimport { AuthError, PerformanceEvents, RefreshTokenClient } from '@azure/msal-common';\nimport { ApiId } from '../utils/BrowserConstants.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar SilentRefreshClient = /** @class */ (function (_super) {\r\n __extends(SilentRefreshClient, _super);\r\n function SilentRefreshClient() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n /**\r\n * Exchanges the refresh token for new tokens\r\n * @param request\r\n */\r\n SilentRefreshClient.prototype.acquireToken = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var silentRequest, _a, acquireTokenMeasurement, serverTelemetryManager, refreshTokenClient;\r\n var _this = this;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n _a = [__assign({}, request)];\r\n return [4 /*yield*/, this.initializeBaseRequest(request)];\r\n case 1:\r\n silentRequest = __assign.apply(void 0, _a.concat([_b.sent()]));\r\n acquireTokenMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.SilentRefreshClientAcquireToken, silentRequest.correlationId);\r\n serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenSilent_silentFlow);\r\n return [4 /*yield*/, this.createRefreshTokenClient(serverTelemetryManager, silentRequest.authority, silentRequest.azureCloudOptions)];\r\n case 2:\r\n refreshTokenClient = _b.sent();\r\n this.logger.verbose(\"Refresh token client created\");\r\n // Send request to renew token. Auth module will throw errors if token cannot be renewed.\r\n return [2 /*return*/, refreshTokenClient.acquireTokenByRefreshToken(silentRequest)\r\n .then(function (result) {\r\n acquireTokenMeasurement.endMeasurement({\r\n success: true,\r\n fromCache: result.fromCache,\r\n requestId: result.requestId\r\n });\r\n return result;\r\n })\r\n .catch(function (e) {\r\n if (e instanceof AuthError) {\r\n e.setCorrelationId(_this.correlationId);\r\n }\r\n serverTelemetryManager.cacheFailedRequest(e);\r\n acquireTokenMeasurement.endMeasurement({\r\n errorCode: e.errorCode,\r\n subErrorCode: e.subError,\r\n success: false\r\n });\r\n throw e;\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Currently Unsupported\r\n */\r\n SilentRefreshClient.prototype.logout = function () {\r\n // Synchronous so we must reject\r\n return Promise.reject(BrowserAuthError.createSilentLogoutUnsupportedError());\r\n };\r\n /**\r\n * Creates a Refresh Client with the given authority, or the default authority.\r\n * @param serverTelemetryManager\r\n * @param authorityUrl\r\n */\r\n SilentRefreshClient.prototype.createRefreshTokenClient = function (serverTelemetryManager, authorityUrl, azureCloudOptions) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var clientConfig;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.getClientConfiguration(serverTelemetryManager, authorityUrl, azureCloudOptions)];\r\n case 1:\r\n clientConfig = _a.sent();\r\n return [2 /*return*/, new RefreshTokenClient(clientConfig, this.performanceClient)];\r\n }\r\n });\r\n });\r\n };\r\n return SilentRefreshClient;\r\n}(StandardInteractionClient));\n\nexport { SilentRefreshClient };\n","/*! @azure/msal-browser v2.32.2 2023-01-10 */\n'use strict';\nimport { AuthToken, CacheRecord, Authority, AccountEntity, IdTokenEntity, ScopeSet, AccessTokenEntity, RefreshTokenEntity, Constants } from '@azure/msal-common';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Token cache manager\r\n */\r\nvar TokenCache = /** @class */ (function () {\r\n function TokenCache(configuration, storage, logger, cryptoObj) {\r\n this.isBrowserEnvironment = typeof window !== \"undefined\";\r\n this.config = configuration;\r\n this.storage = storage;\r\n this.logger = logger;\r\n this.cryptoObj = cryptoObj;\r\n }\r\n // Move getAllAccounts here and cache utility APIs\r\n /**\r\n * API to load tokens to msal-browser cache.\r\n * @param request\r\n * @param response\r\n * @param options\r\n * @returns `AuthenticationResult` for the response that was loaded.\r\n */\r\n TokenCache.prototype.loadExternalTokens = function (request, response, options) {\r\n this.logger.info(\"TokenCache - loadExternalTokens called\");\r\n if (!response.id_token) {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"Please ensure server response includes id token.\");\r\n }\r\n var idToken = new AuthToken(response.id_token, this.cryptoObj);\r\n var cacheRecord;\r\n var authority;\r\n if (request.account) {\r\n var cacheRecordAccount = this.loadAccount(idToken, request.account.environment, undefined, undefined, request.account.homeAccountId);\r\n cacheRecord = new CacheRecord(cacheRecordAccount, this.loadIdToken(idToken, cacheRecordAccount.homeAccountId, request.account.environment, request.account.tenantId), this.loadAccessToken(request, response, cacheRecordAccount.homeAccountId, request.account.environment, request.account.tenantId, options), this.loadRefreshToken(request, response, cacheRecordAccount.homeAccountId, request.account.environment));\r\n }\r\n else if (request.authority) {\r\n var authorityUrl = Authority.generateAuthority(request.authority, request.azureCloudOptions);\r\n var authorityOptions = {\r\n protocolMode: this.config.auth.protocolMode,\r\n knownAuthorities: this.config.auth.knownAuthorities,\r\n cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata,\r\n authorityMetadata: this.config.auth.authorityMetadata,\r\n skipAuthorityMetadataCache: this.config.auth.skipAuthorityMetadataCache,\r\n };\r\n authority = new Authority(authorityUrl, this.config.system.networkClient, this.storage, authorityOptions, this.logger);\r\n // \"clientInfo\" from options takes precedence over \"clientInfo\" in response\r\n if (options.clientInfo) {\r\n this.logger.trace(\"TokenCache - homeAccountId from options\");\r\n var cacheRecordAccount = this.loadAccount(idToken, authority.hostnameAndPort, options.clientInfo, authority.authorityType);\r\n cacheRecord = new CacheRecord(cacheRecordAccount, this.loadIdToken(idToken, cacheRecordAccount.homeAccountId, authority.hostnameAndPort, authority.tenant), this.loadAccessToken(request, response, cacheRecordAccount.homeAccountId, authority.hostnameAndPort, authority.tenant, options), this.loadRefreshToken(request, response, cacheRecordAccount.homeAccountId, authority.hostnameAndPort));\r\n }\r\n else if (response.client_info) {\r\n this.logger.trace(\"TokenCache - homeAccountId from response\");\r\n var cacheRecordAccount = this.loadAccount(idToken, authority.hostnameAndPort, response.client_info, authority.authorityType);\r\n cacheRecord = new CacheRecord(cacheRecordAccount, this.loadIdToken(idToken, cacheRecordAccount.homeAccountId, authority.hostnameAndPort, authority.tenant), this.loadAccessToken(request, response, cacheRecordAccount.homeAccountId, authority.hostnameAndPort, authority.tenant, options), this.loadRefreshToken(request, response, cacheRecordAccount.homeAccountId, authority.hostnameAndPort));\r\n }\r\n else {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"Please provide clientInfo in the response or options.\");\r\n }\r\n }\r\n else {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"Please provide a request with an account or a request with authority.\");\r\n }\r\n return this.generateAuthenticationResult(request, idToken, cacheRecord, authority);\r\n };\r\n /**\r\n * Helper function to load account to msal-browser cache\r\n * @param idToken\r\n * @param environment\r\n * @param clientInfo\r\n * @param authorityType\r\n * @param requestHomeAccountId\r\n * @returns `AccountEntity`\r\n */\r\n TokenCache.prototype.loadAccount = function (idToken, environment, clientInfo, authorityType, requestHomeAccountId) {\r\n var homeAccountId;\r\n if (requestHomeAccountId) {\r\n homeAccountId = requestHomeAccountId;\r\n }\r\n else if (authorityType !== undefined && clientInfo) {\r\n homeAccountId = AccountEntity.generateHomeAccountId(clientInfo, authorityType, this.logger, this.cryptoObj, idToken);\r\n }\r\n if (!homeAccountId) {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"Unexpected missing homeAccountId\");\r\n }\r\n var accountEntity = clientInfo ?\r\n AccountEntity.createAccount(clientInfo, homeAccountId, idToken, undefined, undefined, undefined, environment) :\r\n AccountEntity.createGenericAccount(homeAccountId, idToken, undefined, undefined, undefined, environment);\r\n if (this.isBrowserEnvironment) {\r\n this.logger.verbose(\"TokenCache - loading account\");\r\n this.storage.setAccount(accountEntity);\r\n return accountEntity;\r\n }\r\n else {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"loadExternalTokens is designed to work in browser environments only.\");\r\n }\r\n };\r\n /**\r\n * Helper function to load id tokens to msal-browser cache\r\n * @param idToken\r\n * @param homeAccountId\r\n * @param environment\r\n * @param tenantId\r\n * @returns `IdTokenEntity`\r\n */\r\n TokenCache.prototype.loadIdToken = function (idToken, homeAccountId, environment, tenantId) {\r\n var idTokenEntity = IdTokenEntity.createIdTokenEntity(homeAccountId, environment, idToken.rawToken, this.config.auth.clientId, tenantId);\r\n if (this.isBrowserEnvironment) {\r\n this.logger.verbose(\"TokenCache - loading id token\");\r\n this.storage.setIdTokenCredential(idTokenEntity);\r\n return idTokenEntity;\r\n }\r\n else {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"loadExternalTokens is designed to work in browser environments only.\");\r\n }\r\n };\r\n /**\r\n * Helper function to load access tokens to msal-browser cache\r\n * @param request\r\n * @param response\r\n * @param homeAccountId\r\n * @param environment\r\n * @param tenantId\r\n * @returns `AccessTokenEntity`\r\n */\r\n TokenCache.prototype.loadAccessToken = function (request, response, homeAccountId, environment, tenantId, options) {\r\n if (!response.access_token) {\r\n this.logger.verbose(\"TokenCache - No access token provided for caching\");\r\n return null;\r\n }\r\n if (!response.expires_in) {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"Please ensure server response includes expires_in value.\");\r\n }\r\n if (!options.extendedExpiresOn) {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"Please provide an extendedExpiresOn value in the options.\");\r\n }\r\n var scopes = new ScopeSet(request.scopes).printScopes();\r\n var expiresOn = options.expiresOn || (response.expires_in + new Date().getTime() / 1000);\r\n var extendedExpiresOn = options.extendedExpiresOn;\r\n var accessTokenEntity = AccessTokenEntity.createAccessTokenEntity(homeAccountId, environment, response.access_token, this.config.auth.clientId, tenantId, scopes, expiresOn, extendedExpiresOn, this.cryptoObj);\r\n if (this.isBrowserEnvironment) {\r\n this.logger.verbose(\"TokenCache - loading access token\");\r\n this.storage.setAccessTokenCredential(accessTokenEntity);\r\n return accessTokenEntity;\r\n }\r\n else {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"loadExternalTokens is designed to work in browser environments only.\");\r\n }\r\n };\r\n /**\r\n * Helper function to load refresh tokens to msal-browser cache\r\n * @param request\r\n * @param response\r\n * @param homeAccountId\r\n * @param environment\r\n * @returns `RefreshTokenEntity`\r\n */\r\n TokenCache.prototype.loadRefreshToken = function (request, response, homeAccountId, environment) {\r\n if (!response.refresh_token) {\r\n this.logger.verbose(\"TokenCache - No refresh token provided for caching\");\r\n return null;\r\n }\r\n var refreshTokenEntity = RefreshTokenEntity.createRefreshTokenEntity(homeAccountId, environment, response.refresh_token, this.config.auth.clientId);\r\n if (this.isBrowserEnvironment) {\r\n this.logger.verbose(\"TokenCache - loading refresh token\");\r\n this.storage.setRefreshTokenCredential(refreshTokenEntity);\r\n return refreshTokenEntity;\r\n }\r\n else {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"loadExternalTokens is designed to work in browser environments only.\");\r\n }\r\n };\r\n /**\r\n * Helper function to generate an `AuthenticationResult` for the result.\r\n * @param request\r\n * @param idTokenObj\r\n * @param cacheRecord\r\n * @param authority\r\n * @returns `AuthenticationResult`\r\n */\r\n TokenCache.prototype.generateAuthenticationResult = function (request, idTokenObj, cacheRecord, authority) {\r\n var _a, _b, _c;\r\n var accessToken = Constants.EMPTY_STRING;\r\n var responseScopes = [];\r\n var expiresOn = null;\r\n var extExpiresOn;\r\n if (cacheRecord === null || cacheRecord === void 0 ? void 0 : cacheRecord.accessToken) {\r\n accessToken = cacheRecord.accessToken.secret;\r\n responseScopes = ScopeSet.fromString(cacheRecord.accessToken.target).asArray();\r\n expiresOn = new Date(Number(cacheRecord.accessToken.expiresOn) * 1000);\r\n extExpiresOn = new Date(Number(cacheRecord.accessToken.extendedExpiresOn) * 1000);\r\n }\r\n var uid = (idTokenObj === null || idTokenObj === void 0 ? void 0 : idTokenObj.claims.oid) || (idTokenObj === null || idTokenObj === void 0 ? void 0 : idTokenObj.claims.sub) || Constants.EMPTY_STRING;\r\n var tid = (idTokenObj === null || idTokenObj === void 0 ? void 0 : idTokenObj.claims.tid) || Constants.EMPTY_STRING;\r\n return {\r\n authority: authority ? authority.canonicalAuthority : Constants.EMPTY_STRING,\r\n uniqueId: uid,\r\n tenantId: tid,\r\n scopes: responseScopes,\r\n account: (cacheRecord === null || cacheRecord === void 0 ? void 0 : cacheRecord.account) ? cacheRecord.account.getAccountInfo() : null,\r\n idToken: idTokenObj ? idTokenObj.rawToken : Constants.EMPTY_STRING,\r\n idTokenClaims: idTokenObj ? idTokenObj.claims : {},\r\n accessToken: accessToken,\r\n fromCache: true,\r\n expiresOn: expiresOn,\r\n correlationId: request.correlationId || Constants.EMPTY_STRING,\r\n requestId: Constants.EMPTY_STRING,\r\n extExpiresOn: extExpiresOn,\r\n familyId: Constants.EMPTY_STRING,\r\n tokenType: ((_a = cacheRecord === null || cacheRecord === void 0 ? void 0 : cacheRecord.accessToken) === null || _a === void 0 ? void 0 : _a.tokenType) || Constants.EMPTY_STRING,\r\n state: Constants.EMPTY_STRING,\r\n cloudGraphHostName: ((_b = cacheRecord === null || cacheRecord === void 0 ? void 0 : cacheRecord.account) === null || _b === void 0 ? void 0 : _b.cloudGraphHostName) || Constants.EMPTY_STRING,\r\n msGraphHost: ((_c = cacheRecord === null || cacheRecord === void 0 ? void 0 : cacheRecord.account) === null || _c === void 0 ? void 0 : _c.msGraphHost) || Constants.EMPTY_STRING,\r\n code: undefined,\r\n fromNativeBroker: false\r\n };\r\n };\r\n return TokenCache;\r\n}());\n\nexport { TokenCache };\n","/*! @azure/msal-browser v2.32.2 2023-01-10 */\n'use strict';\nimport { __extends } from '../_virtual/_tslib.js';\nimport { AuthorizationCodeClient } from '@azure/msal-common';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar HybridSpaAuthorizationCodeClient = /** @class */ (function (_super) {\r\n __extends(HybridSpaAuthorizationCodeClient, _super);\r\n function HybridSpaAuthorizationCodeClient(config) {\r\n var _this = _super.call(this, config) || this;\r\n _this.includeRedirectUri = false;\r\n return _this;\r\n }\r\n return HybridSpaAuthorizationCodeClient;\r\n}(AuthorizationCodeClient));\n\nexport { HybridSpaAuthorizationCodeClient };\n","/*! @azure/msal-browser v2.32.2 2023-01-10 */\n'use strict';\nimport { __extends, __awaiter, __generator, __assign } from '../_virtual/_tslib.js';\nimport { AuthError, Constants } from '@azure/msal-common';\nimport { StandardInteractionClient } from './StandardInteractionClient.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { InteractionType } from '../utils/BrowserConstants.js';\nimport { SilentHandler } from '../interaction_handler/SilentHandler.js';\nimport { HybridSpaAuthorizationCodeClient } from './HybridSpaAuthorizationCodeClient.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar SilentAuthCodeClient = /** @class */ (function (_super) {\r\n __extends(SilentAuthCodeClient, _super);\r\n function SilentAuthCodeClient(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, apiId, performanceClient, nativeMessageHandler, correlationId) {\r\n var _this = _super.call(this, config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId) || this;\r\n _this.apiId = apiId;\r\n return _this;\r\n }\r\n /**\r\n * Acquires a token silently by redeeming an authorization code against the /token endpoint\r\n * @param request\r\n */\r\n SilentAuthCodeClient.prototype.acquireToken = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var silentRequest, serverTelemetryManager, authCodeRequest, clientConfig, authClient, silentHandler, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.trace(\"SilentAuthCodeClient.acquireToken called\");\r\n // Auth code payload is required\r\n if (!request.code) {\r\n throw BrowserAuthError.createAuthCodeRequiredError();\r\n }\r\n return [4 /*yield*/, this.initializeAuthorizationRequest(request, InteractionType.Silent)];\r\n case 1:\r\n silentRequest = _a.sent();\r\n this.browserStorage.updateCacheEntries(silentRequest.state, silentRequest.nonce, silentRequest.authority, silentRequest.loginHint || Constants.EMPTY_STRING, silentRequest.account || null);\r\n serverTelemetryManager = this.initializeServerTelemetryManager(this.apiId);\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 4, , 5]);\r\n authCodeRequest = __assign(__assign({}, silentRequest), { code: request.code });\r\n return [4 /*yield*/, this.getClientConfiguration(serverTelemetryManager, silentRequest.authority)];\r\n case 3:\r\n clientConfig = _a.sent();\r\n authClient = new HybridSpaAuthorizationCodeClient(clientConfig);\r\n this.logger.verbose(\"Auth code client created\");\r\n silentHandler = new SilentHandler(authClient, this.browserStorage, authCodeRequest, this.logger, this.config.system);\r\n // Handle auth code parameters from request\r\n return [2 /*return*/, silentHandler.handleCodeResponseFromServer({\r\n code: request.code,\r\n msgraph_host: request.msGraphHost,\r\n cloud_graph_host_name: request.cloudGraphHostName,\r\n cloud_instance_host_name: request.cloudInstanceHostName\r\n }, silentRequest.state, authClient.authority, this.networkClient, false)];\r\n case 4:\r\n e_1 = _a.sent();\r\n if (e_1 instanceof AuthError) {\r\n e_1.setCorrelationId(this.correlationId);\r\n }\r\n serverTelemetryManager.cacheFailedRequest(e_1);\r\n this.browserStorage.cleanRequestByState(silentRequest.state);\r\n throw e_1;\r\n case 5: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Currently Unsupported\r\n */\r\n SilentAuthCodeClient.prototype.logout = function () {\r\n // Synchronous so we must reject\r\n return Promise.reject(BrowserAuthError.createSilentLogoutUnsupportedError());\r\n };\r\n return SilentAuthCodeClient;\r\n}(StandardInteractionClient));\n\nexport { SilentAuthCodeClient };\n","/*! @azure/msal-browser v2.32.2 2023-01-10 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar BrowserPerformanceMeasurement = /** @class */ (function () {\r\n function BrowserPerformanceMeasurement(name, correlationId) {\r\n this.correlationId = correlationId;\r\n this.measureName = \"msal.measure.\" + name + \".\" + this.correlationId;\r\n this.startMark = \"msal.start.\" + name + \".\" + this.correlationId;\r\n this.endMark = \"msal.end.\" + name + \".\" + this.correlationId;\r\n }\r\n BrowserPerformanceMeasurement.supportsBrowserPerformance = function () {\r\n return typeof window !== \"undefined\" &&\r\n typeof window.performance !== \"undefined\" &&\r\n typeof window.performance.mark === \"function\" &&\r\n typeof window.performance.measure === \"function\" &&\r\n typeof window.performance.clearMarks === \"function\" &&\r\n typeof window.performance.clearMeasures === \"function\" &&\r\n typeof window.performance.getEntriesByName === \"function\";\r\n };\r\n BrowserPerformanceMeasurement.prototype.startMeasurement = function () {\r\n if (BrowserPerformanceMeasurement.supportsBrowserPerformance()) {\r\n try {\r\n window.performance.mark(this.startMark);\r\n }\r\n catch (e) {\r\n // Silently catch\r\n }\r\n }\r\n };\r\n BrowserPerformanceMeasurement.prototype.endMeasurement = function () {\r\n if (BrowserPerformanceMeasurement.supportsBrowserPerformance()) {\r\n try {\r\n window.performance.mark(this.endMark);\r\n window.performance.measure(this.measureName, this.startMark, this.endMark);\r\n }\r\n catch (e) {\r\n // Silently catch\r\n }\r\n }\r\n };\r\n BrowserPerformanceMeasurement.prototype.flushMeasurement = function () {\r\n if (BrowserPerformanceMeasurement.supportsBrowserPerformance()) {\r\n try {\r\n var entriesForMeasurement = window.performance.getEntriesByName(this.measureName, \"measure\");\r\n if (entriesForMeasurement.length > 0) {\r\n var durationMs = entriesForMeasurement[0].duration;\r\n window.performance.clearMeasures(this.measureName);\r\n window.performance.clearMarks(this.startMark);\r\n window.performance.clearMarks(this.endMark);\r\n return durationMs;\r\n }\r\n }\r\n catch (e) {\r\n // Silently catch and return null\r\n }\r\n }\r\n return null;\r\n };\r\n return BrowserPerformanceMeasurement;\r\n}());\n\nexport { BrowserPerformanceMeasurement };\n","/*! @azure/msal-browser v2.32.2 2023-01-10 */\n'use strict';\nimport { __extends, __assign } from '../_virtual/_tslib.js';\nimport { PerformanceClient } from '@azure/msal-common';\nimport { BrowserCrypto } from '../crypto/BrowserCrypto.js';\nimport { GuidGenerator } from '../crypto/GuidGenerator.js';\nimport { BrowserPerformanceMeasurement } from './BrowserPerformanceMeasurement.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar BrowserPerformanceClient = /** @class */ (function (_super) {\r\n __extends(BrowserPerformanceClient, _super);\r\n function BrowserPerformanceClient(clientId, authority, logger, libraryName, libraryVersion, applicationTelemetry, cryptoOptions) {\r\n var _this = _super.call(this, clientId, authority, logger, libraryName, libraryVersion, applicationTelemetry) || this;\r\n _this.browserCrypto = new BrowserCrypto(_this.logger, cryptoOptions);\r\n _this.guidGenerator = new GuidGenerator(_this.browserCrypto);\r\n return _this;\r\n }\r\n BrowserPerformanceClient.prototype.startPerformanceMeasurement = function (measureName, correlationId) {\r\n return new BrowserPerformanceMeasurement(measureName, correlationId);\r\n };\r\n BrowserPerformanceClient.prototype.generateId = function () {\r\n return this.guidGenerator.generateGuid();\r\n };\r\n BrowserPerformanceClient.prototype.getPageVisibility = function () {\r\n var _a;\r\n return ((_a = document.visibilityState) === null || _a === void 0 ? void 0 : _a.toString()) || null;\r\n };\r\n /**\r\n * Starts measuring performance for a given operation. Returns a function that should be used to end the measurement.\r\n * Also captures browser page visibilityState.\r\n *\r\n * @param {PerformanceEvents} measureName\r\n * @param {?string} [correlationId]\r\n * @returns {((event?: Partial) => PerformanceEvent| null)}\r\n */\r\n BrowserPerformanceClient.prototype.startMeasurement = function (measureName, correlationId) {\r\n var _this = this;\r\n // Capture page visibilityState and then invoke start/end measurement\r\n var startPageVisibility = this.getPageVisibility();\r\n var inProgressEvent = _super.prototype.startMeasurement.call(this, measureName, correlationId);\r\n return __assign(__assign({}, inProgressEvent), { endMeasurement: function (event) {\r\n return inProgressEvent.endMeasurement(__assign({ startPageVisibility: startPageVisibility, endPageVisibility: _this.getPageVisibility() }, event));\r\n } });\r\n };\r\n return BrowserPerformanceClient;\r\n}(PerformanceClient));\n\nexport { BrowserPerformanceClient };\n","/*! @azure/msal-browser v2.32.2 2023-01-10 */\n'use strict';\nimport { __extends, __awaiter, __generator, __assign } from '../_virtual/_tslib.js';\nimport { PerformanceEvents, Constants, ServerError, InteractionRequiredAuthError } from '@azure/msal-common';\nimport { DEFAULT_REQUEST, InteractionType, CacheLookupPolicy, ApiId, BrowserConstants } from '../utils/BrowserConstants.js';\nimport { ClientApplication } from './ClientApplication.js';\nimport { EventType } from '../event/EventType.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { NativeAuthError } from '../error/NativeAuthError.js';\nimport { NativeMessageHandler } from '../broker/nativeBroker/NativeMessageHandler.js';\nimport { BrowserUtils } from '../utils/BrowserUtils.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * The PublicClientApplication class is the object exposed by the library to perform authentication and authorization functions in Single Page Applications\r\n * to obtain JWT tokens as described in the OAuth 2.0 Authorization Code Flow with PKCE specification.\r\n */\r\nvar PublicClientApplication = /** @class */ (function (_super) {\r\n __extends(PublicClientApplication, _super);\r\n /**\r\n * @constructor\r\n * Constructor for the PublicClientApplication used to instantiate the PublicClientApplication object\r\n *\r\n * Important attributes in the Configuration object for auth are:\r\n * - clientID: the application ID of your application. You can obtain one by registering your application with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview\r\n * - authority: the authority URL for your application.\r\n * - redirect_uri: the uri of your application registered in the portal.\r\n *\r\n * In Azure AD, authority is a URL indicating the Azure active directory that MSAL uses to obtain tokens.\r\n * It is of the form https://login.microsoftonline.com/{Enter_the_Tenant_Info_Here}\r\n * If your application supports Accounts in one organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com).\r\n * If your application supports Accounts in any organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with organizations.\r\n * If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace \"Enter_the_Tenant_Info_Here\" value with common.\r\n * To restrict support to Personal Microsoft accounts only, replace \"Enter_the_Tenant_Info_Here\" value with consumers.\r\n *\r\n * In Azure B2C, authority is of the form https://{instance}/tfp/{tenant}/{policyName}/\r\n * Full B2C functionality will be available in this library in future versions.\r\n *\r\n * @param configuration object for the MSAL PublicClientApplication instance\r\n */\r\n function PublicClientApplication(configuration) {\r\n var _this = _super.call(this, configuration) || this;\r\n _this.activeSilentTokenRequests = new Map();\r\n return _this;\r\n }\r\n /**\r\n * Use when initiating the login process by redirecting the user's browser to the authorization endpoint. This function redirects the page, so\r\n * any code that follows this function will not execute.\r\n *\r\n * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current\r\n * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function.\r\n *\r\n * @param request\r\n */\r\n PublicClientApplication.prototype.loginRedirect = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var correlationId;\r\n return __generator(this, function (_a) {\r\n correlationId = this.getRequestCorrelationId(request);\r\n this.logger.verbose(\"loginRedirect called\", correlationId);\r\n return [2 /*return*/, this.acquireTokenRedirect(__assign({ correlationId: correlationId }, (request || DEFAULT_REQUEST)))];\r\n });\r\n });\r\n };\r\n /**\r\n * Use when initiating the login process via opening a popup window in the user's browser\r\n *\r\n * @param request\r\n *\r\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\r\n */\r\n PublicClientApplication.prototype.loginPopup = function (request) {\r\n var correlationId = this.getRequestCorrelationId(request);\r\n this.logger.verbose(\"loginPopup called\", correlationId);\r\n return this.acquireTokenPopup(__assign({ correlationId: correlationId }, (request || DEFAULT_REQUEST)));\r\n };\r\n /**\r\n * Silently acquire an access token for a given set of scopes. Returns currently processing promise if parallel requests are made.\r\n *\r\n * @param {@link (SilentRequest:type)}\r\n * @returns {Promise.} - a promise that is fulfilled when this function has completed, or rejected if an error was raised. Returns the {@link AuthResponse} object\r\n */\r\n PublicClientApplication.prototype.acquireTokenSilent = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var correlationId, atsMeasurement, account, thumbprint, silentRequestKey, cachedResponse, response;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n correlationId = this.getRequestCorrelationId(request);\r\n atsMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenSilent, correlationId);\r\n atsMeasurement.addStaticFields({\r\n cacheLookupPolicy: request.cacheLookupPolicy\r\n });\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Silent);\r\n this.logger.verbose(\"acquireTokenSilent called\", correlationId);\r\n account = request.account || this.getActiveAccount();\r\n if (!account) {\r\n throw BrowserAuthError.createNoAccountError();\r\n }\r\n thumbprint = {\r\n clientId: this.config.auth.clientId,\r\n authority: request.authority || Constants.EMPTY_STRING,\r\n scopes: request.scopes,\r\n homeAccountIdentifier: account.homeAccountId,\r\n claims: request.claims,\r\n authenticationScheme: request.authenticationScheme,\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n resourceRequestUri: request.resourceRequestUri,\r\n shrClaims: request.shrClaims,\r\n sshKid: request.sshKid\r\n };\r\n silentRequestKey = JSON.stringify(thumbprint);\r\n cachedResponse = this.activeSilentTokenRequests.get(silentRequestKey);\r\n if (typeof cachedResponse === \"undefined\") {\r\n this.logger.verbose(\"acquireTokenSilent called for the first time, storing active request\", correlationId);\r\n response = this.acquireTokenSilentAsync(__assign(__assign({}, request), { correlationId: correlationId }), account)\r\n .then(function (result) {\r\n _this.activeSilentTokenRequests.delete(silentRequestKey);\r\n atsMeasurement.addStaticFields({\r\n accessTokenSize: result.accessToken.length,\r\n idTokenSize: result.idToken.length\r\n });\r\n atsMeasurement.endMeasurement({\r\n success: true,\r\n fromCache: result.fromCache,\r\n isNativeBroker: result.fromNativeBroker,\r\n cacheLookupPolicy: request.cacheLookupPolicy,\r\n requestId: result.requestId,\r\n });\r\n atsMeasurement.flushMeasurement();\r\n return result;\r\n })\r\n .catch(function (error) {\r\n _this.activeSilentTokenRequests.delete(silentRequestKey);\r\n atsMeasurement.endMeasurement({\r\n errorCode: error.errorCode,\r\n subErrorCode: error.subError,\r\n success: false\r\n });\r\n atsMeasurement.flushMeasurement();\r\n throw error;\r\n });\r\n this.activeSilentTokenRequests.set(silentRequestKey, response);\r\n return [2 /*return*/, response];\r\n }\r\n else {\r\n this.logger.verbose(\"acquireTokenSilent has been called previously, returning the result from the first call\", correlationId);\r\n atsMeasurement.endMeasurement({\r\n success: true\r\n });\r\n // Discard measurements for memoized calls, as they are usually only a couple of ms and will artificially deflate metrics\r\n atsMeasurement.discardMeasurement();\r\n return [2 /*return*/, cachedResponse];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Silently acquire an access token for a given set of scopes. Will use cached token if available, otherwise will attempt to acquire a new token from the network via refresh token.\r\n * @param {@link (SilentRequest:type)}\r\n * @param {@link (AccountInfo:type)}\r\n * @returns {Promise.} - a promise that is fulfilled when this function has completed, or rejected if an error was raised. Returns the {@link AuthResponse}\r\n */\r\n PublicClientApplication.prototype.acquireTokenSilentAsync = function (request, account) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var atsAsyncMeasurement, result, silentRequest, silentCacheClient, silentRequest_1, requestWithCLP_1;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_START, InteractionType.Silent, request);\r\n atsAsyncMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenSilentAsync, request.correlationId);\r\n if (!(NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeExtensionProvider, request.authenticationScheme) && account.nativeAccountId)) return [3 /*break*/, 1];\r\n this.logger.verbose(\"acquireTokenSilent - attempting to acquire token from native platform\");\r\n silentRequest = __assign(__assign({}, request), { account: account });\r\n result = this.acquireTokenNative(silentRequest, ApiId.acquireTokenSilent_silentFlow).catch(function (e) { return __awaiter(_this, void 0, void 0, function () {\r\n var silentIframeClient;\r\n return __generator(this, function (_a) {\r\n // If native token acquisition fails for availability reasons fallback to web flow\r\n if (e instanceof NativeAuthError && e.isFatal()) {\r\n this.logger.verbose(\"acquireTokenSilent - native platform unavailable, falling back to web flow\");\r\n this.nativeExtensionProvider = undefined; // Prevent future requests from continuing to attempt \r\n silentIframeClient = this.createSilentIframeClient(request.correlationId);\r\n return [2 /*return*/, silentIframeClient.acquireToken(request)];\r\n }\r\n throw e;\r\n });\r\n }); });\r\n return [3 /*break*/, 3];\r\n case 1:\r\n this.logger.verbose(\"acquireTokenSilent - attempting to acquire token from web flow\");\r\n silentCacheClient = this.createSilentCacheClient(request.correlationId);\r\n return [4 /*yield*/, silentCacheClient.initializeSilentRequest(request, account)];\r\n case 2:\r\n silentRequest_1 = _a.sent();\r\n requestWithCLP_1 = __assign(__assign({}, request), { \r\n // set the request's CacheLookupPolicy to Default if it was not optionally passed in\r\n cacheLookupPolicy: request.cacheLookupPolicy || CacheLookupPolicy.Default });\r\n result = this.acquireTokenFromCache(silentCacheClient, silentRequest_1, requestWithCLP_1).catch(function (cacheError) {\r\n if (requestWithCLP_1.cacheLookupPolicy === CacheLookupPolicy.AccessToken) {\r\n throw cacheError;\r\n }\r\n // block the reload if it occurred inside a hidden iframe\r\n BrowserUtils.blockReloadInHiddenIframes();\r\n _this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_NETWORK_START, InteractionType.Silent, silentRequest_1);\r\n return _this.acquireTokenByRefreshToken(silentRequest_1, requestWithCLP_1).catch(function (refreshTokenError) {\r\n var isServerError = refreshTokenError instanceof ServerError;\r\n var isInteractionRequiredError = refreshTokenError instanceof InteractionRequiredAuthError;\r\n var isInvalidGrantError = (refreshTokenError.errorCode === BrowserConstants.INVALID_GRANT_ERROR);\r\n if ((!isServerError ||\r\n !isInvalidGrantError ||\r\n isInteractionRequiredError ||\r\n requestWithCLP_1.cacheLookupPolicy === CacheLookupPolicy.AccessTokenAndRefreshToken ||\r\n requestWithCLP_1.cacheLookupPolicy === CacheLookupPolicy.RefreshToken)\r\n && (requestWithCLP_1.cacheLookupPolicy !== CacheLookupPolicy.Skip)) {\r\n throw refreshTokenError;\r\n }\r\n _this.logger.verbose(\"Refresh token expired/invalid or CacheLookupPolicy is set to Skip, attempting acquire token by iframe.\", request.correlationId);\r\n return _this.acquireTokenBySilentIframe(silentRequest_1);\r\n });\r\n });\r\n _a.label = 3;\r\n case 3: return [2 /*return*/, result.then(function (response) {\r\n _this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, InteractionType.Silent, response);\r\n atsAsyncMeasurement.endMeasurement({\r\n success: true,\r\n fromCache: response.fromCache,\r\n isNativeBroker: response.fromNativeBroker,\r\n requestId: response.requestId\r\n });\r\n return response;\r\n }).catch(function (tokenRenewalError) {\r\n _this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Silent, null, tokenRenewalError);\r\n atsAsyncMeasurement.endMeasurement({\r\n errorCode: tokenRenewalError.errorCode,\r\n subErrorCode: tokenRenewalError.subError,\r\n success: false\r\n });\r\n throw tokenRenewalError;\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n return PublicClientApplication;\r\n}(ClientApplication));\n\nexport { PublicClientApplication };\n","/*! @azure/msal-browser v2.32.2 2023-01-10 */\n'use strict';\nimport { __awaiter, __generator, __assign } from '../_virtual/_tslib.js';\nimport { CryptoOps } from '../crypto/CryptoOps.js';\nimport { Constants, InteractionRequiredAuthError, PerformanceEvents, AuthError, ClientAuthError, StringUtils, PromptValue, Logger, StubPerformanceClient, DEFAULT_CRYPTO_IMPLEMENTATION } from '@azure/msal-common';\nimport { BrowserCacheManager, DEFAULT_BROWSER_CACHE_MANAGER } from '../cache/BrowserCacheManager.js';\nimport { buildConfiguration } from '../config/Configuration.js';\nimport { InteractionType, ApiId, TemporaryCacheKeys, CacheLookupPolicy, BrowserCacheLocation } from '../utils/BrowserConstants.js';\nimport { BrowserUtils } from '../utils/BrowserUtils.js';\nimport { name, version } from '../packageMetadata.js';\nimport { EventType } from '../event/EventType.js';\nimport { BrowserConfigurationAuthError } from '../error/BrowserConfigurationAuthError.js';\nimport { EventHandler } from '../event/EventHandler.js';\nimport { PopupClient } from '../interaction_client/PopupClient.js';\nimport { RedirectClient } from '../interaction_client/RedirectClient.js';\nimport { SilentIframeClient } from '../interaction_client/SilentIframeClient.js';\nimport { SilentRefreshClient } from '../interaction_client/SilentRefreshClient.js';\nimport { TokenCache } from '../cache/TokenCache.js';\nimport { NativeInteractionClient } from '../interaction_client/NativeInteractionClient.js';\nimport { NativeMessageHandler } from '../broker/nativeBroker/NativeMessageHandler.js';\nimport { NativeAuthError } from '../error/NativeAuthError.js';\nimport { SilentCacheClient } from '../interaction_client/SilentCacheClient.js';\nimport { SilentAuthCodeClient } from '../interaction_client/SilentAuthCodeClient.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { BrowserPerformanceClient } from '../telemetry/BrowserPerformanceClient.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar ClientApplication = /** @class */ (function () {\r\n /**\r\n * @constructor\r\n * Constructor for the PublicClientApplication used to instantiate the PublicClientApplication object\r\n *\r\n * Important attributes in the Configuration object for auth are:\r\n * - clientID: the application ID of your application. You can obtain one by registering your application with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview\r\n * - authority: the authority URL for your application.\r\n * - redirect_uri: the uri of your application registered in the portal.\r\n *\r\n * In Azure AD, authority is a URL indicating the Azure active directory that MSAL uses to obtain tokens.\r\n * It is of the form https://login.microsoftonline.com/{Enter_the_Tenant_Info_Here}\r\n * If your application supports Accounts in one organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com).\r\n * If your application supports Accounts in any organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with organizations.\r\n * If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace \"Enter_the_Tenant_Info_Here\" value with common.\r\n * To restrict support to Personal Microsoft accounts only, replace \"Enter_the_Tenant_Info_Here\" value with consumers.\r\n *\r\n * In Azure B2C, authority is of the form https://{instance}/tfp/{tenant}/{policyName}/\r\n * Full B2C functionality will be available in this library in future versions.\r\n *\r\n * @param configuration Object for the MSAL PublicClientApplication instance\r\n */\r\n function ClientApplication(configuration) {\r\n /*\r\n * If loaded in an environment where window is not available,\r\n * set internal flag to false so that further requests fail.\r\n * This is to support server-side rendering environments.\r\n */\r\n this.isBrowserEnvironment = typeof window !== \"undefined\";\r\n // Set the configuration.\r\n this.config = buildConfiguration(configuration, this.isBrowserEnvironment);\r\n this.initialized = false;\r\n // Initialize logger\r\n this.logger = new Logger(this.config.system.loggerOptions, name, version);\r\n // Initialize the network module class.\r\n this.networkClient = this.config.system.networkClient;\r\n // Initialize the navigation client class.\r\n this.navigationClient = this.config.system.navigationClient;\r\n // Initialize redirectResponse Map\r\n this.redirectResponse = new Map();\r\n // Initial hybrid spa map\r\n this.hybridAuthCodeResponses = new Map();\r\n // Initialize performance client\r\n this.performanceClient = this.isBrowserEnvironment ?\r\n new BrowserPerformanceClient(this.config.auth.clientId, this.config.auth.authority, this.logger, name, version, this.config.telemetry.application, this.config.system.cryptoOptions) :\r\n new StubPerformanceClient(this.config.auth.clientId, this.config.auth.authority, this.logger, name, version, this.config.telemetry.application);\r\n // Initialize the crypto class.\r\n this.browserCrypto = this.isBrowserEnvironment ? new CryptoOps(this.logger, this.performanceClient, this.config.system.cryptoOptions) : DEFAULT_CRYPTO_IMPLEMENTATION;\r\n this.eventHandler = new EventHandler(this.logger, this.browserCrypto);\r\n // Initialize the browser storage class.\r\n this.browserStorage = this.isBrowserEnvironment ?\r\n new BrowserCacheManager(this.config.auth.clientId, this.config.cache, this.browserCrypto, this.logger) :\r\n DEFAULT_BROWSER_CACHE_MANAGER(this.config.auth.clientId, this.logger);\r\n // initialize in memory storage for native flows\r\n var nativeCacheOptions = {\r\n cacheLocation: BrowserCacheLocation.MemoryStorage,\r\n storeAuthStateInCookie: false,\r\n secureCookies: false\r\n };\r\n this.nativeInternalStorage = new BrowserCacheManager(this.config.auth.clientId, nativeCacheOptions, this.browserCrypto, this.logger);\r\n // Initialize the token cache\r\n this.tokenCache = new TokenCache(this.config, this.browserStorage, this.logger, this.browserCrypto);\r\n }\r\n /**\r\n * Initializer function to perform async startup tasks such as connecting to WAM extension\r\n */\r\n ClientApplication.prototype.initialize = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _a, e_1;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n this.logger.trace(\"initialize called\");\r\n if (this.initialized) {\r\n this.logger.info(\"initialize has already been called, exiting early.\");\r\n return [2 /*return*/];\r\n }\r\n this.eventHandler.emitEvent(EventType.INITIALIZE_START);\r\n if (!this.config.system.allowNativeBroker) return [3 /*break*/, 4];\r\n _b.label = 1;\r\n case 1:\r\n _b.trys.push([1, 3, , 4]);\r\n _a = this;\r\n return [4 /*yield*/, NativeMessageHandler.createProvider(this.logger, this.config.system.nativeBrokerHandshakeTimeout)];\r\n case 2:\r\n _a.nativeExtensionProvider = _b.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n e_1 = _b.sent();\r\n this.logger.verbose(e_1);\r\n return [3 /*break*/, 4];\r\n case 4:\r\n this.initialized = true;\r\n this.eventHandler.emitEvent(EventType.INITIALIZE_END);\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n // #region Redirect Flow\r\n /**\r\n * Event handler function which allows users to fire events after the PublicClientApplication object\r\n * has loaded during redirect flows. This should be invoked on all page loads involved in redirect\r\n * auth flows.\r\n * @param hash Hash to process. Defaults to the current value of window.location.hash. Only needs to be provided explicitly if the response to be handled is not contained in the current value.\r\n * @returns Token response or null. If the return value is null, then no auth redirect was detected.\r\n */\r\n ClientApplication.prototype.handleRedirectPromise = function (hash) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var loggedInAccounts, redirectResponseKey, response, request, redirectResponse, nativeClient, correlationId, redirectClient;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n this.logger.verbose(\"handleRedirectPromise called\");\r\n // Block token acquisition before initialize has been called if native brokering is enabled\r\n BrowserUtils.blockNativeBrokerCalledBeforeInitialized(this.config.system.allowNativeBroker, this.initialized);\r\n loggedInAccounts = this.getAllAccounts();\r\n if (this.isBrowserEnvironment) {\r\n redirectResponseKey = hash || Constants.EMPTY_STRING;\r\n response = this.redirectResponse.get(redirectResponseKey);\r\n if (typeof response === \"undefined\") {\r\n this.eventHandler.emitEvent(EventType.HANDLE_REDIRECT_START, InteractionType.Redirect);\r\n this.logger.verbose(\"handleRedirectPromise has been called for the first time, storing the promise\");\r\n request = this.browserStorage.getCachedNativeRequest();\r\n redirectResponse = void 0;\r\n if (request && NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeExtensionProvider) && this.nativeExtensionProvider && !hash) {\r\n this.logger.trace(\"handleRedirectPromise - acquiring token from native platform\");\r\n nativeClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.handleRedirectPromise, this.performanceClient, this.nativeExtensionProvider, request.accountId, this.nativeInternalStorage, request.correlationId);\r\n redirectResponse = nativeClient.handleRedirectPromise();\r\n }\r\n else {\r\n this.logger.trace(\"handleRedirectPromise - acquiring token from web flow\");\r\n correlationId = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.CORRELATION_ID, true) || Constants.EMPTY_STRING;\r\n redirectClient = this.createRedirectClient(correlationId);\r\n redirectResponse = redirectClient.handleRedirectPromise(hash);\r\n }\r\n response = redirectResponse.then(function (result) {\r\n if (result) {\r\n // Emit login event if number of accounts change\r\n var isLoggingIn = loggedInAccounts.length < _this.getAllAccounts().length;\r\n if (isLoggingIn) {\r\n _this.eventHandler.emitEvent(EventType.LOGIN_SUCCESS, InteractionType.Redirect, result);\r\n _this.logger.verbose(\"handleRedirectResponse returned result, login success\");\r\n }\r\n else {\r\n _this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, InteractionType.Redirect, result);\r\n _this.logger.verbose(\"handleRedirectResponse returned result, acquire token success\");\r\n }\r\n }\r\n _this.eventHandler.emitEvent(EventType.HANDLE_REDIRECT_END, InteractionType.Redirect);\r\n return result;\r\n }).catch(function (e) {\r\n // Emit login event if there is an account\r\n if (loggedInAccounts.length > 0) {\r\n _this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Redirect, null, e);\r\n }\r\n else {\r\n _this.eventHandler.emitEvent(EventType.LOGIN_FAILURE, InteractionType.Redirect, null, e);\r\n }\r\n _this.eventHandler.emitEvent(EventType.HANDLE_REDIRECT_END, InteractionType.Redirect);\r\n throw e;\r\n });\r\n this.redirectResponse.set(redirectResponseKey, response);\r\n }\r\n else {\r\n this.logger.verbose(\"handleRedirectPromise has been called previously, returning the result from the first call\");\r\n }\r\n return [2 /*return*/, response];\r\n }\r\n this.logger.verbose(\"handleRedirectPromise returns null, not browser environment\");\r\n return [2 /*return*/, null];\r\n });\r\n });\r\n };\r\n /**\r\n * Use when you want to obtain an access_token for your API by redirecting the user's browser window to the authorization endpoint. This function redirects\r\n * the page, so any code that follows this function will not execute.\r\n *\r\n * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current\r\n * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function.\r\n *\r\n * @param request\r\n */\r\n ClientApplication.prototype.acquireTokenRedirect = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var correlationId, isLoggedIn, result, nativeClient, redirectClient;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n correlationId = this.getRequestCorrelationId(request);\r\n this.logger.verbose(\"acquireTokenRedirect called\", correlationId);\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Redirect);\r\n isLoggedIn = this.getAllAccounts().length > 0;\r\n if (isLoggedIn) {\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_START, InteractionType.Redirect, request);\r\n }\r\n else {\r\n this.eventHandler.emitEvent(EventType.LOGIN_START, InteractionType.Redirect, request);\r\n }\r\n if (this.nativeExtensionProvider && this.canUseNative(request)) {\r\n nativeClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.acquireTokenRedirect, this.performanceClient, this.nativeExtensionProvider, this.getNativeAccountId(request), this.nativeInternalStorage, request.correlationId);\r\n result = nativeClient.acquireTokenRedirect(request).catch(function (e) {\r\n if (e instanceof NativeAuthError && e.isFatal()) {\r\n _this.nativeExtensionProvider = undefined; // If extension gets uninstalled during session prevent future requests from continuing to attempt\r\n var redirectClient = _this.createRedirectClient(request.correlationId);\r\n return redirectClient.acquireToken(request);\r\n }\r\n else if (e instanceof InteractionRequiredAuthError) {\r\n _this.logger.verbose(\"acquireTokenRedirect - Resolving interaction required error thrown by native broker by falling back to web flow\");\r\n var redirectClient = _this.createRedirectClient(request.correlationId);\r\n return redirectClient.acquireToken(request);\r\n }\r\n _this.browserStorage.setInteractionInProgress(false);\r\n throw e;\r\n });\r\n }\r\n else {\r\n redirectClient = this.createRedirectClient(request.correlationId);\r\n result = redirectClient.acquireToken(request);\r\n }\r\n return [2 /*return*/, result.catch(function (e) {\r\n // If logged in, emit acquire token events\r\n if (isLoggedIn) {\r\n _this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Redirect, null, e);\r\n }\r\n else {\r\n _this.eventHandler.emitEvent(EventType.LOGIN_FAILURE, InteractionType.Redirect, null, e);\r\n }\r\n throw e;\r\n })];\r\n });\r\n });\r\n };\r\n // #endregion\r\n // #region Popup Flow\r\n /**\r\n * Use when you want to obtain an access_token for your API via opening a popup window in the user's browser\r\n *\r\n * @param request\r\n *\r\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\r\n */\r\n ClientApplication.prototype.acquireTokenPopup = function (request) {\r\n var _this = this;\r\n var correlationId = this.getRequestCorrelationId(request);\r\n var atPopupMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenPopup, correlationId);\r\n try {\r\n this.logger.verbose(\"acquireTokenPopup called\", correlationId);\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Popup);\r\n }\r\n catch (e) {\r\n // Since this function is syncronous we need to reject\r\n return Promise.reject(e);\r\n }\r\n // If logged in, emit acquire token events\r\n var loggedInAccounts = this.getAllAccounts();\r\n if (loggedInAccounts.length > 0) {\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_START, InteractionType.Popup, request);\r\n }\r\n else {\r\n this.eventHandler.emitEvent(EventType.LOGIN_START, InteractionType.Popup, request);\r\n }\r\n var result;\r\n if (this.canUseNative(request)) {\r\n result = this.acquireTokenNative(request, ApiId.acquireTokenPopup).then(function (response) {\r\n _this.browserStorage.setInteractionInProgress(false);\r\n atPopupMeasurement.endMeasurement({\r\n success: true,\r\n isNativeBroker: true,\r\n requestId: response.requestId\r\n });\r\n atPopupMeasurement.flushMeasurement();\r\n return response;\r\n }).catch(function (e) {\r\n if (e instanceof NativeAuthError && e.isFatal()) {\r\n _this.nativeExtensionProvider = undefined; // If extension gets uninstalled during session prevent future requests from continuing to attempt\r\n var popupClient = _this.createPopupClient(request.correlationId);\r\n return popupClient.acquireToken(request);\r\n }\r\n else if (e instanceof InteractionRequiredAuthError) {\r\n _this.logger.verbose(\"acquireTokenPopup - Resolving interaction required error thrown by native broker by falling back to web flow\");\r\n var popupClient = _this.createPopupClient(request.correlationId);\r\n return popupClient.acquireToken(request);\r\n }\r\n _this.browserStorage.setInteractionInProgress(false);\r\n throw e;\r\n });\r\n }\r\n else {\r\n var popupClient = this.createPopupClient(request.correlationId);\r\n result = popupClient.acquireToken(request);\r\n }\r\n return result.then(function (result) {\r\n /*\r\n * If logged in, emit acquire token events\r\n */\r\n var isLoggingIn = loggedInAccounts.length < _this.getAllAccounts().length;\r\n if (isLoggingIn) {\r\n _this.eventHandler.emitEvent(EventType.LOGIN_SUCCESS, InteractionType.Popup, result);\r\n }\r\n else {\r\n _this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, InteractionType.Popup, result);\r\n }\r\n atPopupMeasurement.addStaticFields({\r\n accessTokenSize: result.accessToken.length,\r\n idTokenSize: result.idToken.length\r\n });\r\n atPopupMeasurement.endMeasurement({\r\n success: true,\r\n requestId: result.requestId\r\n });\r\n atPopupMeasurement.flushMeasurement();\r\n return result;\r\n }).catch(function (e) {\r\n if (loggedInAccounts.length > 0) {\r\n _this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Popup, null, e);\r\n }\r\n else {\r\n _this.eventHandler.emitEvent(EventType.LOGIN_FAILURE, InteractionType.Popup, null, e);\r\n }\r\n atPopupMeasurement.endMeasurement({\r\n errorCode: e.errorCode,\r\n subErrorCode: e.subError,\r\n success: false\r\n });\r\n atPopupMeasurement.flushMeasurement();\r\n // Since this function is syncronous we need to reject\r\n return Promise.reject(e);\r\n });\r\n };\r\n // #endregion\r\n // #region Silent Flow\r\n /**\r\n * This function uses a hidden iframe to fetch an authorization code from the eSTS. There are cases where this may not work:\r\n * - Any browser using a form of Intelligent Tracking Prevention\r\n * - If there is not an established session with the service\r\n *\r\n * In these cases, the request must be done inside a popup or full frame redirect.\r\n *\r\n * For the cases where interaction is required, you cannot send a request with prompt=none.\r\n *\r\n * If your refresh token has expired, you can use this function to fetch a new set of tokens silently as long as\r\n * you session on the server still exists.\r\n * @param request {@link SsoSilentRequest}\r\n *\r\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\r\n */\r\n ClientApplication.prototype.ssoSilent = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var correlationId, validRequest, ssoSilentMeasurement, result, silentIframeClient;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n correlationId = this.getRequestCorrelationId(request);\r\n validRequest = __assign(__assign({}, request), { \r\n // will be PromptValue.NONE or PromptValue.NO_SESSION\r\n prompt: request.prompt, correlationId: correlationId });\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Silent);\r\n ssoSilentMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.SsoSilent, correlationId);\r\n this.logger.verbose(\"ssoSilent called\", correlationId);\r\n this.eventHandler.emitEvent(EventType.SSO_SILENT_START, InteractionType.Silent, validRequest);\r\n if (this.canUseNative(validRequest)) {\r\n result = this.acquireTokenNative(validRequest, ApiId.ssoSilent).catch(function (e) {\r\n // If native token acquisition fails for availability reasons fallback to standard flow\r\n if (e instanceof NativeAuthError && e.isFatal()) {\r\n _this.nativeExtensionProvider = undefined; // If extension gets uninstalled during session prevent future requests from continuing to attempt\r\n var silentIframeClient = _this.createSilentIframeClient(validRequest.correlationId);\r\n return silentIframeClient.acquireToken(validRequest);\r\n }\r\n throw e;\r\n });\r\n }\r\n else {\r\n silentIframeClient = this.createSilentIframeClient(validRequest.correlationId);\r\n result = silentIframeClient.acquireToken(validRequest);\r\n }\r\n return [2 /*return*/, result.then(function (response) {\r\n _this.eventHandler.emitEvent(EventType.SSO_SILENT_SUCCESS, InteractionType.Silent, response);\r\n ssoSilentMeasurement.addStaticFields({\r\n accessTokenSize: response.accessToken.length,\r\n idTokenSize: response.idToken.length\r\n });\r\n ssoSilentMeasurement.endMeasurement({\r\n success: true,\r\n isNativeBroker: response.fromNativeBroker,\r\n requestId: response.requestId\r\n });\r\n ssoSilentMeasurement.flushMeasurement();\r\n return response;\r\n }).catch(function (e) {\r\n _this.eventHandler.emitEvent(EventType.SSO_SILENT_FAILURE, InteractionType.Silent, null, e);\r\n ssoSilentMeasurement.endMeasurement({\r\n errorCode: e.errorCode,\r\n subErrorCode: e.subError,\r\n success: false\r\n });\r\n ssoSilentMeasurement.flushMeasurement();\r\n throw e;\r\n })];\r\n });\r\n });\r\n };\r\n /**\r\n * This function redeems an authorization code (passed as code) from the eSTS token endpoint.\r\n * This authorization code should be acquired server-side using a confidential client to acquire a spa_code.\r\n * This API is not indended for normal authorization code acquisition and redemption.\r\n *\r\n * Redemption of this authorization code will not require PKCE, as it was acquired by a confidential client.\r\n *\r\n * @param request {@link AuthorizationCodeRequest}\r\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\r\n */\r\n ClientApplication.prototype.acquireTokenByCode = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var correlationId, atbcMeasurement, hybridAuthCode_1, response;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n correlationId = this.getRequestCorrelationId(request);\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Silent);\r\n this.logger.trace(\"acquireTokenByCode called\", correlationId);\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_BY_CODE_START, InteractionType.Silent, request);\r\n atbcMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenByCode, request.correlationId);\r\n try {\r\n if (request.code) {\r\n hybridAuthCode_1 = request.code;\r\n response = this.hybridAuthCodeResponses.get(hybridAuthCode_1);\r\n if (!response) {\r\n this.logger.verbose(\"Initiating new acquireTokenByCode request\", correlationId);\r\n response = this.acquireTokenByCodeAsync(__assign(__assign({}, request), { correlationId: correlationId }))\r\n .then(function (result) {\r\n _this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_BY_CODE_SUCCESS, InteractionType.Silent, result);\r\n _this.hybridAuthCodeResponses.delete(hybridAuthCode_1);\r\n atbcMeasurement.addStaticFields({\r\n accessTokenSize: result.accessToken.length,\r\n idTokenSize: result.idToken.length\r\n });\r\n atbcMeasurement.endMeasurement({\r\n success: true,\r\n isNativeBroker: result.fromNativeBroker,\r\n requestId: result.requestId\r\n });\r\n atbcMeasurement.flushMeasurement();\r\n return result;\r\n })\r\n .catch(function (error) {\r\n _this.hybridAuthCodeResponses.delete(hybridAuthCode_1);\r\n _this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_BY_CODE_FAILURE, InteractionType.Silent, null, error);\r\n atbcMeasurement.endMeasurement({\r\n errorCode: error.errorCode,\r\n subErrorCode: error.subError,\r\n success: false\r\n });\r\n atbcMeasurement.flushMeasurement();\r\n throw error;\r\n });\r\n this.hybridAuthCodeResponses.set(hybridAuthCode_1, response);\r\n }\r\n else {\r\n this.logger.verbose(\"Existing acquireTokenByCode request found\", request.correlationId);\r\n atbcMeasurement.endMeasurement({\r\n success: true\r\n });\r\n atbcMeasurement.discardMeasurement();\r\n }\r\n return [2 /*return*/, response];\r\n }\r\n else if (request.nativeAccountId) {\r\n if (this.canUseNative(request, request.nativeAccountId)) {\r\n return [2 /*return*/, this.acquireTokenNative(request, ApiId.acquireTokenByCode, request.nativeAccountId).catch(function (e) {\r\n // If native token acquisition fails for availability reasons fallback to standard flow\r\n if (e instanceof NativeAuthError && e.isFatal()) {\r\n _this.nativeExtensionProvider = undefined; // If extension gets uninstalled during session prevent future requests from continuing to attempt\r\n }\r\n throw e;\r\n })];\r\n }\r\n else {\r\n throw BrowserAuthError.createUnableToAcquireTokenFromNativePlatformError();\r\n }\r\n }\r\n else {\r\n throw BrowserAuthError.createAuthCodeOrNativeAccountIdRequiredError();\r\n }\r\n }\r\n catch (e) {\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_BY_CODE_FAILURE, InteractionType.Silent, null, e);\r\n atbcMeasurement.endMeasurement({\r\n errorCode: e instanceof AuthError && e.errorCode || undefined,\r\n subErrorCode: e instanceof AuthError && e.subError || undefined,\r\n success: false\r\n });\r\n throw e;\r\n }\r\n return [2 /*return*/];\r\n });\r\n });\r\n };\r\n /**\r\n * Creates a SilentAuthCodeClient to redeem an authorization code.\r\n * @param request\r\n * @returns Result of the operation to redeem the authorization code\r\n */\r\n ClientApplication.prototype.acquireTokenByCodeAsync = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var silentAuthCodeClient, silentTokenResult;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.trace(\"acquireTokenByCodeAsync called\", request.correlationId);\r\n silentAuthCodeClient = this.createSilentAuthCodeClient(request.correlationId);\r\n return [4 /*yield*/, silentAuthCodeClient.acquireToken(request)];\r\n case 1:\r\n silentTokenResult = _a.sent();\r\n return [2 /*return*/, silentTokenResult];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Attempt to acquire an access token from the cache\r\n * @param silentCacheClient SilentCacheClient\r\n * @param commonRequest CommonSilentFlowRequest\r\n * @param silentRequest SilentRequest\r\n * @returns A promise that, when resolved, returns the access token\r\n */\r\n ClientApplication.prototype.acquireTokenFromCache = function (silentCacheClient, commonRequest, silentRequest) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (silentRequest.cacheLookupPolicy) {\r\n case CacheLookupPolicy.Default:\r\n case CacheLookupPolicy.AccessToken:\r\n case CacheLookupPolicy.AccessTokenAndRefreshToken:\r\n return [2 /*return*/, silentCacheClient.acquireToken(commonRequest)];\r\n default:\r\n throw ClientAuthError.createRefreshRequiredError();\r\n }\r\n return [2 /*return*/];\r\n });\r\n });\r\n };\r\n /**\r\n * Attempt to acquire an access token via a refresh token\r\n * @param commonRequest CommonSilentFlowRequest\r\n * @param silentRequest SilentRequest\r\n * @returns A promise that, when resolved, returns the access token\r\n */\r\n ClientApplication.prototype.acquireTokenByRefreshToken = function (commonRequest, silentRequest) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var silentRefreshClient;\r\n return __generator(this, function (_a) {\r\n switch (silentRequest.cacheLookupPolicy) {\r\n case CacheLookupPolicy.Default:\r\n case CacheLookupPolicy.AccessTokenAndRefreshToken:\r\n case CacheLookupPolicy.RefreshToken:\r\n case CacheLookupPolicy.RefreshTokenAndNetwork:\r\n silentRefreshClient = this.createSilentRefreshClient(commonRequest.correlationId);\r\n return [2 /*return*/, silentRefreshClient.acquireToken(commonRequest)];\r\n default:\r\n throw ClientAuthError.createRefreshRequiredError();\r\n }\r\n return [2 /*return*/];\r\n });\r\n });\r\n };\r\n /**\r\n * Attempt to acquire an access token via an iframe\r\n * @param request CommonSilentFlowRequest\r\n * @returns A promise that, when resolved, returns the access token\r\n */\r\n ClientApplication.prototype.acquireTokenBySilentIframe = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var silentIframeClient;\r\n return __generator(this, function (_a) {\r\n silentIframeClient = this.createSilentIframeClient(request.correlationId);\r\n return [2 /*return*/, silentIframeClient.acquireToken(request)];\r\n });\r\n });\r\n };\r\n // #endregion\r\n // #region Logout\r\n /**\r\n * Deprecated logout function. Use logoutRedirect or logoutPopup instead\r\n * @param logoutRequest\r\n * @deprecated\r\n */\r\n ClientApplication.prototype.logout = function (logoutRequest) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var correlationId;\r\n return __generator(this, function (_a) {\r\n correlationId = this.getRequestCorrelationId(logoutRequest);\r\n this.logger.warning(\"logout API is deprecated and will be removed in msal-browser v3.0.0. Use logoutRedirect instead.\", correlationId);\r\n return [2 /*return*/, this.logoutRedirect(__assign({ correlationId: correlationId }, logoutRequest))];\r\n });\r\n });\r\n };\r\n /**\r\n * Use to log out the current user, and redirect the user to the postLogoutRedirectUri.\r\n * Default behaviour is to redirect the user to `window.location.href`.\r\n * @param logoutRequest\r\n */\r\n ClientApplication.prototype.logoutRedirect = function (logoutRequest) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var correlationId, redirectClient;\r\n return __generator(this, function (_a) {\r\n correlationId = this.getRequestCorrelationId(logoutRequest);\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Redirect);\r\n redirectClient = this.createRedirectClient(correlationId);\r\n return [2 /*return*/, redirectClient.logout(logoutRequest)];\r\n });\r\n });\r\n };\r\n /**\r\n * Clears local cache for the current user then opens a popup window prompting the user to sign-out of the server\r\n * @param logoutRequest\r\n */\r\n ClientApplication.prototype.logoutPopup = function (logoutRequest) {\r\n try {\r\n var correlationId = this.getRequestCorrelationId(logoutRequest);\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Popup);\r\n var popupClient = this.createPopupClient(correlationId);\r\n return popupClient.logout(logoutRequest);\r\n }\r\n catch (e) {\r\n // Since this function is syncronous we need to reject\r\n return Promise.reject(e);\r\n }\r\n };\r\n // #endregion\r\n // #region Account APIs\r\n /**\r\n * Returns all accounts that MSAL currently has data for.\r\n * (the account object is created at the time of successful login)\r\n * or empty array when no accounts are found\r\n * @returns Array of account objects in cache\r\n */\r\n ClientApplication.prototype.getAllAccounts = function () {\r\n this.logger.verbose(\"getAllAccounts called\");\r\n return this.isBrowserEnvironment ? this.browserStorage.getAllAccounts() : [];\r\n };\r\n /**\r\n * Returns the signed in account matching username.\r\n * (the account object is created at the time of successful login)\r\n * or null when no matching account is found.\r\n * This API is provided for convenience but getAccountById should be used for best reliability\r\n * @param userName\r\n * @returns The account object stored in MSAL\r\n */\r\n ClientApplication.prototype.getAccountByUsername = function (userName) {\r\n var allAccounts = this.getAllAccounts();\r\n if (!StringUtils.isEmpty(userName) && allAccounts && allAccounts.length) {\r\n this.logger.verbose(\"Account matching username found, returning\");\r\n this.logger.verbosePii(\"Returning signed-in accounts matching username: \" + userName);\r\n return allAccounts.filter(function (accountObj) { return accountObj.username.toLowerCase() === userName.toLowerCase(); })[0] || null;\r\n }\r\n else {\r\n this.logger.verbose(\"getAccountByUsername: No matching account found, returning null\");\r\n return null;\r\n }\r\n };\r\n /**\r\n * Returns the signed in account matching homeAccountId.\r\n * (the account object is created at the time of successful login)\r\n * or null when no matching account is found\r\n * @param homeAccountId\r\n * @returns The account object stored in MSAL\r\n */\r\n ClientApplication.prototype.getAccountByHomeId = function (homeAccountId) {\r\n var allAccounts = this.getAllAccounts();\r\n if (!StringUtils.isEmpty(homeAccountId) && allAccounts && allAccounts.length) {\r\n this.logger.verbose(\"Account matching homeAccountId found, returning\");\r\n this.logger.verbosePii(\"Returning signed-in accounts matching homeAccountId: \" + homeAccountId);\r\n return allAccounts.filter(function (accountObj) { return accountObj.homeAccountId === homeAccountId; })[0] || null;\r\n }\r\n else {\r\n this.logger.verbose(\"getAccountByHomeId: No matching account found, returning null\");\r\n return null;\r\n }\r\n };\r\n /**\r\n * Returns the signed in account matching localAccountId.\r\n * (the account object is created at the time of successful login)\r\n * or null when no matching account is found\r\n * @param localAccountId\r\n * @returns The account object stored in MSAL\r\n */\r\n ClientApplication.prototype.getAccountByLocalId = function (localAccountId) {\r\n var allAccounts = this.getAllAccounts();\r\n if (!StringUtils.isEmpty(localAccountId) && allAccounts && allAccounts.length) {\r\n this.logger.verbose(\"Account matching localAccountId found, returning\");\r\n this.logger.verbosePii(\"Returning signed-in accounts matching localAccountId: \" + localAccountId);\r\n return allAccounts.filter(function (accountObj) { return accountObj.localAccountId === localAccountId; })[0] || null;\r\n }\r\n else {\r\n this.logger.verbose(\"getAccountByLocalId: No matching account found, returning null\");\r\n return null;\r\n }\r\n };\r\n /**\r\n * Sets the account to use as the active account. If no account is passed to the acquireToken APIs, then MSAL will use this active account.\r\n * @param account\r\n */\r\n ClientApplication.prototype.setActiveAccount = function (account) {\r\n this.browserStorage.setActiveAccount(account);\r\n };\r\n /**\r\n * Gets the currently active account\r\n */\r\n ClientApplication.prototype.getActiveAccount = function () {\r\n return this.browserStorage.getActiveAccount();\r\n };\r\n // #endregion\r\n // #region Helpers\r\n /**\r\n * Helper to validate app environment before making an auth request\r\n *\r\n * @protected\r\n * @param {InteractionType} interactionType What kind of interaction is being used\r\n * @param {boolean} [setInteractionInProgress=true] Whether to set interaction in progress temp cache flag\r\n */\r\n ClientApplication.prototype.preflightBrowserEnvironmentCheck = function (interactionType, setInteractionInProgress) {\r\n if (setInteractionInProgress === void 0) { setInteractionInProgress = true; }\r\n this.logger.verbose(\"preflightBrowserEnvironmentCheck started\");\r\n // Block request if not in browser environment\r\n BrowserUtils.blockNonBrowserEnvironment(this.isBrowserEnvironment);\r\n // Block redirects if in an iframe\r\n BrowserUtils.blockRedirectInIframe(interactionType, this.config.system.allowRedirectInIframe);\r\n // Block auth requests inside a hidden iframe\r\n BrowserUtils.blockReloadInHiddenIframes();\r\n // Block redirectUri opened in a popup from calling MSAL APIs\r\n BrowserUtils.blockAcquireTokenInPopups();\r\n // Block token acquisition before initialize has been called if native brokering is enabled\r\n BrowserUtils.blockNativeBrokerCalledBeforeInitialized(this.config.system.allowNativeBroker, this.initialized);\r\n // Block redirects if memory storage is enabled but storeAuthStateInCookie is not\r\n if (interactionType === InteractionType.Redirect &&\r\n this.config.cache.cacheLocation === BrowserCacheLocation.MemoryStorage &&\r\n !this.config.cache.storeAuthStateInCookie) {\r\n throw BrowserConfigurationAuthError.createInMemoryRedirectUnavailableError();\r\n }\r\n if (interactionType === InteractionType.Redirect || interactionType === InteractionType.Popup) {\r\n this.preflightInteractiveRequest(setInteractionInProgress);\r\n }\r\n };\r\n /**\r\n * Preflight check for interactive requests\r\n *\r\n * @protected\r\n * @param {boolean} setInteractionInProgress Whether to set interaction in progress temp cache flag\r\n */\r\n ClientApplication.prototype.preflightInteractiveRequest = function (setInteractionInProgress) {\r\n this.logger.verbose(\"preflightInteractiveRequest called, validating app environment\");\r\n // block the reload if it occurred inside a hidden iframe\r\n BrowserUtils.blockReloadInHiddenIframes();\r\n // Set interaction in progress temporary cache or throw if alread set.\r\n if (setInteractionInProgress) {\r\n this.browserStorage.setInteractionInProgress(true);\r\n }\r\n };\r\n /**\r\n * Acquire a token from native device (e.g. WAM)\r\n * @param request\r\n */\r\n ClientApplication.prototype.acquireTokenNative = function (request, apiId, accountId) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var nativeClient;\r\n return __generator(this, function (_a) {\r\n this.logger.trace(\"acquireTokenNative called\");\r\n if (!this.nativeExtensionProvider) {\r\n throw BrowserAuthError.createNativeConnectionNotEstablishedError();\r\n }\r\n nativeClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, apiId, this.performanceClient, this.nativeExtensionProvider, accountId || this.getNativeAccountId(request), this.nativeInternalStorage, request.correlationId);\r\n return [2 /*return*/, nativeClient.acquireToken(request)];\r\n });\r\n });\r\n };\r\n /**\r\n * Returns boolean indicating if this request can use the native broker\r\n * @param request\r\n */\r\n ClientApplication.prototype.canUseNative = function (request, accountId) {\r\n this.logger.trace(\"canUseNative called\");\r\n if (!NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeExtensionProvider, request.authenticationScheme)) {\r\n this.logger.trace(\"canUseNative: isNativeAvailable returned false, returning false\");\r\n return false;\r\n }\r\n if (request.prompt) {\r\n switch (request.prompt) {\r\n case PromptValue.NONE:\r\n case PromptValue.CONSENT:\r\n case PromptValue.LOGIN:\r\n this.logger.trace(\"canUseNative: prompt is compatible with native flow\");\r\n break;\r\n default:\r\n this.logger.trace(\"canUseNative: prompt = \" + request.prompt + \" is not compatible with native flow, returning false\");\r\n return false;\r\n }\r\n }\r\n if (!accountId && !this.getNativeAccountId(request)) {\r\n this.logger.trace(\"canUseNative: nativeAccountId is not available, returning false\");\r\n return false;\r\n }\r\n return true;\r\n };\r\n /**\r\n * Get the native accountId from the account\r\n * @param request\r\n * @returns\r\n */\r\n ClientApplication.prototype.getNativeAccountId = function (request) {\r\n var account = request.account || this.browserStorage.getAccountInfoByHints(request.loginHint, request.sid) || this.getActiveAccount();\r\n return account && account.nativeAccountId || \"\";\r\n };\r\n /**\r\n * Returns new instance of the Popup Interaction Client\r\n * @param correlationId\r\n */\r\n ClientApplication.prototype.createPopupClient = function (correlationId) {\r\n return new PopupClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.performanceClient, this.nativeInternalStorage, this.nativeExtensionProvider, correlationId);\r\n };\r\n /**\r\n * Returns new instance of the Redirect Interaction Client\r\n * @param correlationId\r\n */\r\n ClientApplication.prototype.createRedirectClient = function (correlationId) {\r\n return new RedirectClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.performanceClient, this.nativeInternalStorage, this.nativeExtensionProvider, correlationId);\r\n };\r\n /**\r\n * Returns new instance of the Silent Iframe Interaction Client\r\n * @param correlationId\r\n */\r\n ClientApplication.prototype.createSilentIframeClient = function (correlationId) {\r\n return new SilentIframeClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.ssoSilent, this.performanceClient, this.nativeInternalStorage, this.nativeExtensionProvider, correlationId);\r\n };\r\n /**\r\n * Returns new instance of the Silent Cache Interaction Client\r\n */\r\n ClientApplication.prototype.createSilentCacheClient = function (correlationId) {\r\n return new SilentCacheClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.performanceClient, this.nativeExtensionProvider, correlationId);\r\n };\r\n /**\r\n * Returns new instance of the Silent Refresh Interaction Client\r\n */\r\n ClientApplication.prototype.createSilentRefreshClient = function (correlationId) {\r\n return new SilentRefreshClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.performanceClient, this.nativeExtensionProvider, correlationId);\r\n };\r\n /**\r\n * Returns new instance of the Silent AuthCode Interaction Client\r\n */\r\n ClientApplication.prototype.createSilentAuthCodeClient = function (correlationId) {\r\n return new SilentAuthCodeClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.acquireTokenByCode, this.performanceClient, this.nativeExtensionProvider, correlationId);\r\n };\r\n /**\r\n * Adds event callbacks to array\r\n * @param callback\r\n */\r\n ClientApplication.prototype.addEventCallback = function (callback) {\r\n return this.eventHandler.addEventCallback(callback);\r\n };\r\n /**\r\n * Removes callback with provided id from callback array\r\n * @param callbackId\r\n */\r\n ClientApplication.prototype.removeEventCallback = function (callbackId) {\r\n this.eventHandler.removeEventCallback(callbackId);\r\n };\r\n /**\r\n * Registers a callback to receive performance events.\r\n *\r\n * @param {PerformanceCallbackFunction} callback\r\n * @returns {string}\r\n */\r\n ClientApplication.prototype.addPerformanceCallback = function (callback) {\r\n return this.performanceClient.addPerformanceCallback(callback);\r\n };\r\n /**\r\n * Removes a callback registered with addPerformanceCallback.\r\n *\r\n * @param {string} callbackId\r\n * @returns {boolean}\r\n */\r\n ClientApplication.prototype.removePerformanceCallback = function (callbackId) {\r\n return this.performanceClient.removePerformanceCallback(callbackId);\r\n };\r\n /**\r\n * Adds event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window\r\n */\r\n ClientApplication.prototype.enableAccountStorageEvents = function () {\r\n this.eventHandler.enableAccountStorageEvents();\r\n };\r\n /**\r\n * Removes event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window\r\n */\r\n ClientApplication.prototype.disableAccountStorageEvents = function () {\r\n this.eventHandler.disableAccountStorageEvents();\r\n };\r\n /**\r\n * Gets the token cache for the application.\r\n */\r\n ClientApplication.prototype.getTokenCache = function () {\r\n return this.tokenCache;\r\n };\r\n /**\r\n * Returns the logger instance\r\n */\r\n ClientApplication.prototype.getLogger = function () {\r\n return this.logger;\r\n };\r\n /**\r\n * Replaces the default logger set in configurations with new Logger with new configurations\r\n * @param logger Logger instance\r\n */\r\n ClientApplication.prototype.setLogger = function (logger) {\r\n this.logger = logger;\r\n };\r\n /**\r\n * Called by wrapper libraries (Angular & React) to set SKU and Version passed down to telemetry, logger, etc.\r\n * @param sku\r\n * @param version\r\n */\r\n ClientApplication.prototype.initializeWrapperLibrary = function (sku, version) {\r\n // Validate the SKU passed in is one we expect\r\n this.browserStorage.setWrapperMetadata(sku, version);\r\n };\r\n /**\r\n * Sets navigation client\r\n * @param navigationClient\r\n */\r\n ClientApplication.prototype.setNavigationClient = function (navigationClient) {\r\n this.navigationClient = navigationClient;\r\n };\r\n /**\r\n * Returns the configuration object\r\n */\r\n ClientApplication.prototype.getConfiguration = function () {\r\n return this.config;\r\n };\r\n /**\r\n * Generates a correlation id for a request if none is provided.\r\n *\r\n * @protected\r\n * @param {?Partial} [request]\r\n * @returns {string}\r\n */\r\n ClientApplication.prototype.getRequestCorrelationId = function (request) {\r\n if (request === null || request === void 0 ? void 0 : request.correlationId) {\r\n return request.correlationId;\r\n }\r\n if (this.isBrowserEnvironment) {\r\n return this.browserCrypto.createNewGuid();\r\n }\r\n /*\r\n * Included for fallback for non-browser environments,\r\n * and to ensure this method always returns a string.\r\n */\r\n return Constants.EMPTY_STRING;\r\n };\r\n return ClientApplication;\r\n}());\n\nexport { ClientApplication };\n","import { Component, OnDestroy, OnInit } from '@angular/core';\n\nimport { Title } from '@angular/platform-browser';\nimport { Router, NavigationEnd, ActivatedRoute } from '@angular/router';\nimport { MsalBroadcastService } from '@azure/msal-angular';\nimport { EventMessage, EventType } from '@azure/msal-browser';\nimport { Subject } from 'rxjs';\nimport { delay, filter, first, map, takeUntil } from 'rxjs/operators';\nimport { UserViewModel } from './services/api.services';\nimport { CachedAccountService } from './services/cached-account.service';\nimport { CustomizationService } from './services/customization.service';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.css']\n})\nexport class AppComponent implements OnInit, OnDestroy {\n public user?: UserViewModel;\n public loading: boolean = true;\n private readonly _destroying$ = new Subject();\n title = 'Schoolsync';\n constructor(\n private accountService: CachedAccountService,\n private msalBroadcastService: MsalBroadcastService,\n private customizationService: CustomizationService,\n public router: Router,\n private activatedRoute: ActivatedRoute,\n private titleService: Title,\n\n ) {\n this.loading = false;\n this.router.events.pipe(\n takeUntil(this._destroying$),\n filter(event => event instanceof NavigationEnd),\n map((event) => {\n //console.log('AppModule NavEnd', event, this.activatedRoute)\n\n const childRoute = this.activatedRoute.firstChild?.firstChild?.firstChild\n //console.log('Route', childRoute);\n if (childRoute && childRoute.snapshot.data && childRoute.snapshot.data['title']) {\n return childRoute.snapshot.data['title'] + ` - ${this.title}`;\n }\n return this.title;\n })\n \n ).subscribe((title: string) => {\n //console.log('Changing title to', title);\n this.titleService.setTitle(title);\n })\n }\n ngOnInit(): void {\n this.customizationService.customizations$.pipe(takeUntil(this._destroying$), first()).subscribe(data => {\n this.title = data.name;\n }); \n }\n\n ngOnDestroy(): void {\n this._destroying$.next(null);\n this._destroying$.complete();\n }\n}\n","\n \n","
\n \n
\n","import { Component, Input, OnInit } from '@angular/core';\nimport { MsalService } from '@azure/msal-angular';\nimport { AccountInfo } from '@azure/msal-browser';\nimport { Observable } from 'rxjs';\nimport { Customizations, UserViewModel } from '../services/api.services';\nimport { CustomizationService } from '../services/customization.service';\n\n@Component({\n selector: 'app-nav-menu',\n templateUrl: './nav-menu.component.html',\n styleUrls: ['./nav-menu.component.css']\n})\nexport class NavMenuComponent implements OnInit {\n public accounts?: AccountInfo[];\n public customizations$: Observable;\n constructor(private msalService: MsalService, customizationService: CustomizationService) {\n this.customizations$ = customizationService.customizations$;\n }\n ngOnInit(): void {\n this.accounts = this.msalService.instance.getAllAccounts();\n }\n @Input() user?: UserViewModel;\n isExpanded = false;\n\n collapse() {\n this.isExpanded = false;\n }\n\n toggle() {\n this.isExpanded = !this.isExpanded;\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PhotoService {\n private readonly photos: PhotoCollection = {\n archive: {\n image: '../assets/martin-adams-_OZCl4XcpRw-unsplash.jpg', attribution: 'Photo by Martin Adams on Unsplash'},\n computer: { image: '../assets/annie-spratt-vGgn0xLdy8s-unsplash.jpg', attribution: 'Photo by Annie Spratt on Unsplash' },\n paperpile: {\n image: '../assets/sharon-mccutcheon-tn57JI3CewI-unsplash.jpg', attribution: 'Photo by Sharon McCutcheon on Unsplash'\n },\n\n \n }\n constructor() { }\n\n public getPhoto(name: string): PhotoInfo {\n return this.photos[name] ?? this.photos['computer'];\n }\n}\n\n\nexport interface PhotoInfo {\n attribution: string;\n image: string;\n}\n\ntype PhotoCollection = {\n [key: string]: PhotoInfo;\n}\n","\n\n","import { Component, OnInit, Input, OnDestroy } from '@angular/core';\nimport { faCode, faTachometerAlt, faTerminal, faUsers, faUser, faKey, faIdCard, faUsersCog, faSchool } from '@fortawesome/free-solid-svg-icons'\nimport { Customizations, UserViewModel } from '../services/api.services';\nimport { environment } from '../../environments/environment';\nimport { PhotoInfo, PhotoService } from '../services/photo.service';\nimport { CustomizationService } from '../services/customization.service';\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router';\nimport { Subject } from 'rxjs';\nimport { filter, map, takeUntil } from 'rxjs/operators';\n\n@Component({\n selector: 'app-sidebar',\n templateUrl: './sidebar.component.html',\n styleUrls: ['./sidebar.component.css'],\n host: { 'class': 'col-auto col-md-3 col-xl-2 px-sm-2 px-0'}\n})\nexport class SidebarComponent implements OnInit, OnDestroy {\n @Input() user?: UserViewModel;\n\n faCode = faCode;\n faKey = faKey;\n faTachometerAlt = faTachometerAlt;\n faTerminal = faTerminal;\n faUser = faUser;\n faUsers = faUsers;\n faIdCard = faIdCard;\n faUsersCog = faUsersCog;\n faSchool = faSchool;\n\n version = environment.appVersion;\n public background: PhotoInfo;\n\n public customizations: Customizations;\n private readonly _destroying$ = new Subject();\n\n\n constructor(\n photoService: PhotoService,\n customizationService: CustomizationService,\n private router: Router,\n private activatedRoute: ActivatedRoute\n ) {\n this.background = photoService.getPhoto('computer');\n this.customizations = CustomizationService.Default();\n customizationService.customizations$\n .pipe(takeUntil(this._destroying$))\n .subscribe(c => {\n this.customizations = c;\n });\n\n this.router.events.pipe(\n takeUntil(this._destroying$),\n filter(event => event instanceof NavigationEnd),\n map((event) => {\n //console.log('Sidebar NavEnd', event, this.activatedRoute)\n\n const childRoute = this.activatedRoute.firstChild?.firstChild?.firstChild ?? this.activatedRoute.firstChild?.firstChild ?? this.activatedRoute.firstChild;\n //console.log('Sidebar route', childRoute);\n //if (childRoute && childRoute.snapshot.data && childRoute.snapshot.data['sidebar']) {\n \n //}\n return childRoute?.snapshot?.data['sidebar'] ?? 'computer';\n })\n ).subscribe((imageKey: string) => {\n //console.log('Changing background to', imageKey);\n this.background = photoService.getPhoto(imageKey);\n })\n\n }\n\n ngOnInit() {\n }\n\n ngOnDestroy(): void {\n this._destroying$.next(null);\n this._destroying$.complete();\n }\n\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { MsalBroadcastService } from '@azure/msal-angular';\nimport { EventMessage, EventType } from '@azure/msal-browser';\nimport { Subject } from 'rxjs';\nimport { delay, filter, takeUntil } from 'rxjs/operators';\nimport { AccountService, UserViewModel } from '../../services/api.services';\nimport { AppInsightsService } from '../../services/app-insights.service';\n\n@Component({\n selector: 'app-dashboard',\n templateUrl: './dashboard.component.html',\n styleUrls: ['./dashboard.component.css']\n})\nexport class DashboardComponent implements OnInit, OnDestroy {\n public user?: UserViewModel;\n public loading: boolean = true;\n private readonly _destroying$ = new Subject();\n title = 'app';\n constructor(\n private accountService: AccountService,\n private msalBroadcastService: MsalBroadcastService,\n private appInsights: AppInsightsService\n ) {\n\n }\n\n\n ngOnInit(): void {\n this.loadUser();\n this.msalBroadcastService.msalSubject$\n .pipe(\n takeUntil(this._destroying$),\n filter((msg: EventMessage) => msg.eventType === EventType.LOGIN_SUCCESS),\n delay(50)\n ).subscribe((result) => {\n console.log('Login success:', result);\n this.loadUser();\n })\n }\n\n private loadUser(): Promise {\n return this.accountService.me()\n .toPromise()\n .then((user) => {\n this.user = user;\n this.loading = false;\n console.debug('User data', user);\n this.appInsights.setUserId(user.userId, user.tenantId);\n })\n .catch((err) => {\n console.warn('User login error', err);\n this.loading = false;\n })\n }\n\n ngOnDestroy(): void {\n this._destroying$.next(null);\n this._destroying$.complete();\n }\n\n}\n"," \n
\n
\n \n
\n \n
\n
\n
\n","import { Component, OnInit } from '@angular/core';\nimport { AppInsightsService } from '../../services/app-insights.service';\n\n@Component({\n selector: 'app-fullscreen',\n templateUrl: './fullscreen.component.html',\n styleUrls: ['./fullscreen.component.css']\n})\nexport class FullscreenComponent implements OnInit {\n\n constructor(\n private appInsights: AppInsightsService\n ) { }\n\n ngOnInit(): void {\n }\n\n}\n","\n\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { Routes, RouterModule } from '@angular/router';\n\nimport { DashboardComponent } from './layouts/dashboard/dashboard.component';\nimport { FullscreenComponent } from './layouts/fullscreen/fullscreen.component';\nimport { IndexComponent } from './pages/index/index.component';\n\nconst routes: Routes = [\n {\n path: '',\n component: IndexComponent,\n pathMatch: 'full',\n },\n {\n path: '',\n component: DashboardComponent,\n children: [\n {\n path: '',\n loadChildren: () => import('./layouts/dashboard/dashboard.module').then(m => m.DashboardModule)\n },\n {\n path: 'groups',\n loadChildren: () => import('./groups/groups.module').then(m => m.GroupsModule)\n },\n {\n path: 'users',\n loadChildren: () => import('./users/users.module').then(m => m.UsersModule)\n },\n {\n path: 'sync-profiles',\n loadChildren: () => import('./sync-profiles/sync-profiles.module').then(m => m.SyncProfilesModule)\n },\n {\n path: 'admin',\n loadChildren: () => import('./admin/admin.module').then(m => m.AdminModule)\n }\n ]\n },\n {\n path: '',\n component: FullscreenComponent,\n children: [\n {\n path: '',\n loadChildren: () => import('./layouts/fullscreen/fullscreen.module').then(m => m.FullscreenModule)\n }\n ]\n },\n {\n path: 'authentication',\n component: FullscreenComponent,\n loadChildren: () => import('./authentication/authentication.module').then(m => m.AuthenticationModule)\n }\n];\n\n@NgModule({\n imports: [\n CommonModule,\n BrowserModule,\n RouterModule.forRoot(routes, {\n useHash: false,\n relativeLinkResolution: 'legacy'\n})\n ],\n exports: [\n ],\n})\nexport class AppRoutingModule { }\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { MsalBroadcastService, MsalService } from '@azure/msal-angular';\nimport { InteractionStatus } from '@azure/msal-browser';\nimport { Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\n@Component({\n selector: 'app-index',\n templateUrl: './index.component.html',\n styleUrls: ['./index.component.css']\n})\nexport class IndexComponent implements OnInit, OnDestroy {\n message?: string;\n isIframe = false;\n private readonly _destroying$ = new Subject();\n constructor(\n private msalService: MsalService,\n private msalBroadcastService: MsalBroadcastService,\n private router: Router\n ) { }\n\n ngOnDestroy(): void {\n this._destroying$.next(null);\n this._destroying$.complete();\n }\n\n ngOnInit(): void {\n this.isIframe = window !== window.parent && !window.opener;\n this.msalBroadcastService.inProgress$\n .pipe(\n filter((status: InteractionStatus) => status === InteractionStatus.None),\n takeUntil(this._destroying$)\n )\n .subscribe(() => {\n this.handleAccountStuff();\n });\n\n if (!this.isIframe) {\n this.handleAccountStuff();\n }\n }\n\n handleAccountStuff() {\n const accounts = this.msalService.instance.getAllAccounts();\n if (accounts.length === 0) {\n this.router.navigate(['/authentication/login'])\n // Show login screen\n this.message = 'No account, show login page';\n return;\n }\n\n if (accounts.length > 1) {\n const pickedAccount = this.msalService.instance.getActiveAccount();\n if (pickedAccount) {\n this.message = 'One account selected';\n this.router.navigate(['/home']);\n } else {\n this.message = 'More accounts, show account selection';\n this.router.navigate(['/authentication/switch-accounts']);\n }\n\n return;\n }\n\n this.message = 'Only one account';\n this.router.navigate(['/home']);\n }\n\n}\n","\n
\n
\n
\n
\n
\n
EducationHUB Syncservice
\n
\n

Checking account

\n
\n
\n Loading...\n
\n
\n
\n\n\n
\n
\n
\n
\n
\n","import { Injectable } from '@angular/core';\nimport { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent, HttpErrorResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { mergeMap, catchError, tap } from 'rxjs/operators';\nimport { ToastrService } from 'ngx-toastr';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ToastHttpInterceptor implements HttpInterceptor {\n constructor(private toastr: ToastrService) { }\n\n intercept(req: HttpRequest, next: HttpHandler): Observable> {\n return this.processRequest(req, next);\n }\n\n // Checks if there is an access_token available in the authorize service\n // and adds it to the request in case it's targeted at the same origin as the\n // single page application.\n private processRequest(req: HttpRequest, next: HttpHandler) {\n\n return next.handle(req).pipe(\n tap(null, null, () => {\n if (req.method === 'PATCH') {\n this.toastr.success('Update is saved in the database', ' 💾 Updated')\n } else if (req.method === 'POST') {\n this.toastr.success('We received your item', '✅ Created')\n }\n }),\n catchError(err => {\n if (err instanceof HttpErrorResponse) {\n console.error('🤯 %s Request to %s failed with %d', req.method, req.url, err.status)\n switch (err.status) {\n case 400:\n this.toastr.warning(`The data send to ${req.url} made our server ${this.randomError()}`, `Wrong data 💥`);\n break;\n case 401: // Do nothing, just not logged-in\n break;\n case 403:\n this.toastr.error('It seems like you aren\\'t allowed to execute this action', '🔐 Forbidden');\n break;\n default:\n this.toastr.error(`🤯 ${req.method} request to ${req.url} failed ❌`, `Http Error ${err.status}`);\n \n }\n }\n throw err;\n }));\n }\n private randomErrors: string[] = ['crash', 'shake', 'cry', 'hiccup']\n private randomError(): string {\n return this.randomErrors[Math.floor(Math.random() * this.randomErrors.length)];\n }\n\n}\n","import { BrowserModule, Title } from '@angular/platform-browser';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { RouterModule } from '@angular/router';\nimport { NgbAccordionModule, NgbDropdownModule, NgbModalModule, NgbCollapseModule } from '@ng-bootstrap/ng-bootstrap';\nimport { FontAwesomeModule, FaConfig, FaIconLibrary } from '@fortawesome/angular-fontawesome';\nimport { ToastrModule } from 'ngx-toastr';\nimport { BrowserCacheLocation, InteractionType, IPublicClientApplication, LogLevel, PublicClientApplication } from '@azure/msal-browser';\nimport { MsalBroadcastService, MsalGuard, MsalGuardConfiguration, MsalInterceptor, MsalInterceptorConfiguration, MsalModule, MsalRedirectComponent, MsalService, MSAL_GUARD_CONFIG, MSAL_INSTANCE, MSAL_INTERCEPTOR_CONFIG } from '@azure/msal-angular';\n\nimport { AccountService, ConnectionService, GroupService, UserSyncProfileService, UserService, GroupSyncProfileService, SchoolService, API_BASE_URL, ApplicationService, AccumulatedGroupService } from './services/api.services';\n\nimport { AppComponent } from './app.component';\nimport { NavMenuComponent } from './nav-menu/nav-menu.component';\nimport { SidebarComponent } from './sidebar/sidebar.component';\nimport { AppRoutingModule } from './app.routing';\nimport { DashboardComponent } from './layouts/dashboard/dashboard.component';\nimport { FullscreenComponent } from './layouts/fullscreen/fullscreen.component';\nimport { IndexComponent } from './pages/index/index.component';\nimport { ToastHttpInterceptor } from './services/toast.http.interceptor';\nimport { AppInsightsService } from './services/app-insights.service';\nimport { CustomizationService } from './services/customization.service';\nimport { CommonModule } from '@angular/common';\nimport { PhotoService } from './services/photo.service';\nimport { ServiceWorkerModule } from '@angular/service-worker';\nimport { environment } from '../environments/environment';\nimport { GraphService } from './services/graph.service';\n\n// #region MSAL\nconst isIE = window.navigator.userAgent.indexOf('MSIE ') > -1 || window.navigator.userAgent.indexOf('Trident/') > -1;\nexport function MSALInstanceFactory(): IPublicClientApplication {\n return new PublicClientApplication({\n auth: {\n authority: 'https://login.microsoftonline.com/organizations',\n clientId: \"f46eccda-b21f-47d3-b6e2-88b62f55d23e\",\n redirectUri: '/authentication/login'\n },\n cache: {\n cacheLocation: BrowserCacheLocation.LocalStorage,\n storeAuthStateInCookie: isIE, // set to true for IE 11\n secureCookies: true\n },\n system: {\n loggerOptions: {\n logLevel: LogLevel.Info,\n loggerCallback: (level, message, containsPii) => {\n if (level === 3) {\n console.debug(message);\n } else {\n console.log(message);\n }\n },\n piiLoggingEnabled: false\n }\n }\n });\n}\n\nexport function MSALInterceptorConfigFactory(): MsalInterceptorConfiguration {\n const protectedResourceMap = new Map>();\n protectedResourceMap.set(\"https://graph.microsoft.com/v1.0/me\", [\"User.Read\"]);\n protectedResourceMap.set(\"https://graph.microsoft.com/v1.0/users/*\", [\"User.ReadBasic.All\"]);\n protectedResourceMap.set(\"https://graph.microsoft.com/v1.0/groups/*\", [\"Group.Read.All\"]);\n protectedResourceMap.set(\"/api/Application/*\", null);\n protectedResourceMap.set(\"/api/*\", [\"api://c28ed055-57db-42bd-a64c-f7d063d8c697/act_as_user\"]);\n //protectedResourceMap.set(\"https://localhost:44378/api/admin/Tenant\", [\"api://c28ed055-57db-42bd-a64c-f7d063d8c697/act_as_user\"]);\n \n return {\n interactionType: InteractionType.Popup,\n protectedResourceMap,\n authRequest: (msalService, req, originalAuthRequest) => {\n return {\n ...originalAuthRequest,\n authority: `https://login.microsoftonline.com/${originalAuthRequest.account?.tenantId ?? 'organizations'}`\n }\n }\n //authRequest: {\n // authority: 'https://login.microsoftonline.com/organizations',\n //}\n };\n}\n\nexport function MSALGuardConfigFactory(): MsalGuardConfiguration {\n return {\n interactionType: InteractionType.Redirect,\n authRequest: {\n scopes: ['user.read'],\n //extraScopesToConsent: ['api://c28ed055-57db-42bd-a64c-f7d063d8c697/act_as_user']\n },\n loginFailedRoute: \"./authentication/login-failed\"\n };\n}\n\n// #endregion\n\n@NgModule({\n declarations: [\n AppComponent,\n DashboardComponent,\n FullscreenComponent,\n NavMenuComponent,\n SidebarComponent,\n IndexComponent,\n ],\n imports: [\n CommonModule, \n BrowserModule.withServerTransition({ appId: 'ng-cli-universal' }),\n FormsModule,\n ReactiveFormsModule,\n HttpClientModule,\n BrowserAnimationsModule,\n AppRoutingModule,\n ToastrModule.forRoot(),\n RouterModule,\n AppRoutingModule,\n FontAwesomeModule,\n NgbAccordionModule,\n NgbDropdownModule,\n NgbModalModule,\n NgbCollapseModule,\n MsalModule,\n ServiceWorkerModule.register('ngsw-worker.js', {\n enabled: environment.production,\n // Register the ServiceWorker as soon as the app is stable\n // or after 30 seconds (whichever comes first).\n registrationStrategy: 'registerWhenStable:30000'\n }),\n ],\n providers: [\n { provide: HTTP_INTERCEPTORS, useClass: ToastHttpInterceptor, multi: true },\n //{\n // provide: HTTP_INTERCEPTORS,\n // useClass: MultiTenantMsalInterceptor,\n // multi: true\n //},\n {\n provide: HTTP_INTERCEPTORS,\n useClass: MsalInterceptor,\n multi: true\n },\n {\n provide: MSAL_INSTANCE,\n useFactory: MSALInstanceFactory\n },\n {\n provide: MSAL_GUARD_CONFIG,\n useFactory: MSALGuardConfigFactory\n },\n {\n provide: MSAL_INTERCEPTOR_CONFIG,\n useFactory: MSALInterceptorConfigFactory\n },\n MsalGuard,\n MsalBroadcastService,\n MsalService,\n AppInsightsService, ApplicationService, CustomizationService, PhotoService,\n ConnectionService, AccumulatedGroupService, GroupService, GroupSyncProfileService,\n AccountService, SchoolService, UserSyncProfileService, UserService, FaConfig, FaIconLibrary,\n GraphService\n ],\n bootstrap: [AppComponent, MsalRedirectComponent]\n})\nexport class AppModule { }\n","/***************************************************************************************************\n * Load `$localize` onto the global scope - used if i18n tags appear in Angular templates.\n */\n//import '@angular/localize/init';\nimport { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nexport function getBaseUrl() {\n return document.getElementsByTagName('base')[0].href;\n}\n\nconst providers = [\n { provide: 'BASE_URL', useFactory: getBaseUrl, deps: [] }\n];\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic(providers).bootstrapModule(AppModule)\n .catch(err => console.log(err));\n\n//export { renderModule, renderModuleFactory } from '@angular/platform-server';\n","/*! @azure/msal-browser v2.32.2 2023-01-10 */\n'use strict';\nimport { EventType } from './EventType.js';\nimport { InteractionType, InteractionStatus } from '../utils/BrowserConstants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar EventMessageUtils = /** @class */ (function () {\r\n function EventMessageUtils() {\r\n }\r\n /**\r\n * Gets interaction status from event message\r\n * @param message\r\n * @param currentStatus\r\n */\r\n EventMessageUtils.getInteractionStatusFromEvent = function (message, currentStatus) {\r\n switch (message.eventType) {\r\n case EventType.LOGIN_START:\r\n return InteractionStatus.Login;\r\n case EventType.SSO_SILENT_START:\r\n return InteractionStatus.SsoSilent;\r\n case EventType.ACQUIRE_TOKEN_START:\r\n if (message.interactionType === InteractionType.Redirect || message.interactionType === InteractionType.Popup) {\r\n return InteractionStatus.AcquireToken;\r\n }\r\n break;\r\n case EventType.HANDLE_REDIRECT_START:\r\n return InteractionStatus.HandleRedirect;\r\n case EventType.LOGOUT_START:\r\n return InteractionStatus.Logout;\r\n case EventType.SSO_SILENT_SUCCESS:\r\n case EventType.SSO_SILENT_FAILURE:\r\n if (currentStatus && currentStatus !== InteractionStatus.SsoSilent) {\r\n // Prevent this event from clearing any status other than ssoSilent\r\n break;\r\n }\r\n return InteractionStatus.None;\r\n case EventType.LOGOUT_END:\r\n if (currentStatus && currentStatus !== InteractionStatus.Logout) {\r\n // Prevent this event from clearing any status other than logout\r\n break;\r\n }\r\n return InteractionStatus.None;\r\n case EventType.HANDLE_REDIRECT_END:\r\n if (currentStatus && currentStatus !== InteractionStatus.HandleRedirect) {\r\n // Prevent this event from clearing any status other than handleRedirect\r\n break;\r\n }\r\n return InteractionStatus.None;\r\n case EventType.LOGIN_SUCCESS:\r\n case EventType.LOGIN_FAILURE:\r\n case EventType.ACQUIRE_TOKEN_SUCCESS:\r\n case EventType.ACQUIRE_TOKEN_FAILURE:\r\n if (message.interactionType === InteractionType.Redirect || message.interactionType === InteractionType.Popup) {\r\n if (currentStatus && currentStatus !== InteractionStatus.Login && currentStatus !== InteractionStatus.AcquireToken) {\r\n // Prevent this event from clearing any status other than login or acquireToken\r\n break;\r\n }\r\n return InteractionStatus.None;\r\n }\r\n break;\r\n }\r\n return null;\r\n };\r\n return EventMessageUtils;\r\n}());\n\nexport { EventMessageUtils };\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) ?\n super.execute(state, delay) :\n this._execute(state, delay);\n }\n requestAsyncId(scheduler, id, delay = 0) {\n if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {\n return super.requestAsyncId(scheduler, id, delay);\n }\n return scheduler.flush(this);\n }\n}\n","import { Subscriber } from '../Subscriber';\nimport { Notification } from '../Notification';\nexport function observeOn(scheduler, delay = 0) {\n return function observeOnOperatorFunction(source) {\n return source.lift(new ObserveOnOperator(scheduler, delay));\n };\n}\nexport class ObserveOnOperator {\n constructor(scheduler, delay = 0) {\n this.scheduler = scheduler;\n this.delay = delay;\n }\n call(subscriber, source) {\n return source.subscribe(new ObserveOnSubscriber(subscriber, this.scheduler, this.delay));\n }\n}\nexport class ObserveOnSubscriber extends Subscriber {\n constructor(destination, scheduler, delay = 0) {\n super(destination);\n this.scheduler = scheduler;\n this.delay = delay;\n }\n static dispatch(arg) {\n const { notification, destination } = arg;\n notification.observe(destination);\n this.unsubscribe();\n }\n scheduleMessage(notification) {\n const destination = this.destination;\n destination.add(this.scheduler.schedule(ObserveOnSubscriber.dispatch, this.delay, new ObserveOnMessage(notification, this.destination)));\n }\n _next(value) {\n this.scheduleMessage(Notification.createNext(value));\n }\n _error(err) {\n this.scheduleMessage(Notification.createError(err));\n this.unsubscribe();\n }\n _complete() {\n this.scheduleMessage(Notification.createComplete());\n this.unsubscribe();\n }\n}\nexport class ObserveOnMessage {\n constructor(notification, destination) {\n this.notification = notification;\n this.destination = destination;\n }\n}\n","import { Subject } from './Subject';\nimport { queue } from './scheduler/queue';\nimport { Subscription } from './Subscription';\nimport { ObserveOnSubscriber } from './operators/observeOn';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { SubjectSubscription } from './SubjectSubscription';\nexport class ReplaySubject extends Subject {\n constructor(bufferSize = Number.POSITIVE_INFINITY, windowTime = Number.POSITIVE_INFINITY, scheduler) {\n super();\n this.scheduler = scheduler;\n this._events = [];\n this._infiniteTimeWindow = false;\n this._bufferSize = bufferSize < 1 ? 1 : bufferSize;\n this._windowTime = windowTime < 1 ? 1 : windowTime;\n if (windowTime === Number.POSITIVE_INFINITY) {\n this._infiniteTimeWindow = true;\n this.next = this.nextInfiniteTimeWindow;\n }\n else {\n this.next = this.nextTimeWindow;\n }\n }\n nextInfiniteTimeWindow(value) {\n if (!this.isStopped) {\n const _events = this._events;\n _events.push(value);\n if (_events.length > this._bufferSize) {\n _events.shift();\n }\n }\n super.next(value);\n }\n nextTimeWindow(value) {\n if (!this.isStopped) {\n this._events.push(new ReplayEvent(this._getNow(), value));\n this._trimBufferThenGetEvents();\n }\n super.next(value);\n }\n _subscribe(subscriber) {\n const _infiniteTimeWindow = this._infiniteTimeWindow;\n const _events = _infiniteTimeWindow ? this._events : this._trimBufferThenGetEvents();\n const scheduler = this.scheduler;\n const len = _events.length;\n let subscription;\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n else if (this.isStopped || this.hasError) {\n subscription = Subscription.EMPTY;\n }\n else {\n this.observers.push(subscriber);\n subscription = new SubjectSubscription(this, subscriber);\n }\n if (scheduler) {\n subscriber.add(subscriber = new ObserveOnSubscriber(subscriber, scheduler));\n }\n if (_infiniteTimeWindow) {\n for (let i = 0; i < len && !subscriber.closed; i++) {\n subscriber.next(_events[i]);\n }\n }\n else {\n for (let i = 0; i < len && !subscriber.closed; i++) {\n subscriber.next(_events[i].value);\n }\n }\n if (this.hasError) {\n subscriber.error(this.thrownError);\n }\n else if (this.isStopped) {\n subscriber.complete();\n }\n return subscription;\n }\n _getNow() {\n return (this.scheduler || queue).now();\n }\n _trimBufferThenGetEvents() {\n const now = this._getNow();\n const _bufferSize = this._bufferSize;\n const _windowTime = this._windowTime;\n const _events = this._events;\n const eventsCount = _events.length;\n let spliceCount = 0;\n while (spliceCount < eventsCount) {\n if ((now - _events[spliceCount].time) < _windowTime) {\n break;\n }\n spliceCount++;\n }\n if (eventsCount > _bufferSize) {\n spliceCount = Math.max(spliceCount, eventsCount - _bufferSize);\n }\n if (spliceCount > 0) {\n _events.splice(0, spliceCount);\n }\n return _events;\n }\n}\nclass ReplayEvent {\n constructor(time, value) {\n this.time = time;\n this.value = value;\n }\n}\n","import { InjectionToken, Injectable, Inject, Optional, VERSION, Component, NgModule } from '@angular/core';\nimport { Location, DOCUMENT, CommonModule } from '@angular/common';\nimport { WrapperSKU, InteractionStatus, EventMessageUtils, InteractionType, BrowserConfigurationAuthError, UrlString, BrowserUtils, StringUtils, NavigationClient } from '@azure/msal-browser';\nimport { from, ReplaySubject, Subject, BehaviorSubject, of, EMPTY } from 'rxjs';\nimport { Router } from '@angular/router';\nimport { map, concatMap, catchError, switchMap } from 'rxjs/operators';\nimport { __awaiter } from 'tslib';\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/common';\nimport * as ɵngcc2 from '@angular/router';\nconst MSAL_INSTANCE = new InjectionToken(\"MSAL_INSTANCE\");\nconst MSAL_GUARD_CONFIG = new InjectionToken(\"MSAL_GUARD_CONFIG\");\nconst MSAL_INTERCEPTOR_CONFIG = new InjectionToken(\"MSAL_INTERCEPTOR_CONFIG\");\nconst MSAL_BROADCAST_CONFIG = new InjectionToken(\"MSAL_BROADCAST_CONFIG\");\n\n/* eslint-disable header/header */\nconst name = \"@azure/msal-angular\";\nconst version = \"2.5.2\";\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nclass MsalService {\n constructor(instance, location) {\n this.instance = instance;\n this.location = location;\n const hash = this.location.path(true).split(\"#\").pop();\n if (hash) {\n this.redirectHash = `#${hash}`;\n }\n this.instance.initializeWrapperLibrary(WrapperSKU.Angular, version);\n }\n initialize() {\n return from(this.instance.initialize());\n }\n acquireTokenPopup(request) {\n return from(this.instance.acquireTokenPopup(request));\n }\n acquireTokenRedirect(request) {\n return from(this.instance.acquireTokenRedirect(request));\n }\n acquireTokenSilent(silentRequest) {\n return from(this.instance.acquireTokenSilent(silentRequest));\n }\n handleRedirectObservable(hash) {\n return from(this.instance.handleRedirectPromise(hash || this.redirectHash));\n }\n loginPopup(request) {\n return from(this.instance.loginPopup(request));\n }\n loginRedirect(request) {\n return from(this.instance.loginRedirect(request));\n }\n logout(logoutRequest) {\n return from(this.instance.logout(logoutRequest));\n }\n logoutRedirect(logoutRequest) {\n return from(this.instance.logoutRedirect(logoutRequest));\n }\n logoutPopup(logoutRequest) {\n return from(this.instance.logoutPopup(logoutRequest));\n }\n ssoSilent(request) {\n return from(this.instance.ssoSilent(request));\n }\n /**\n * Gets logger for msal-angular.\n * If no logger set, returns logger instance created with same options as msal-browser\n */\n getLogger() {\n if (!this.logger) {\n this.logger = this.instance.getLogger().clone(name, version);\n }\n return this.logger;\n }\n // Create a logger instance for msal-angular with the same options as msal-browser\n setLogger(logger) {\n this.logger = logger.clone(name, version);\n this.instance.setLogger(logger);\n }\n}\nMsalService.ɵfac = function MsalService_Factory(t) { return new (t || MsalService)(ɵngcc0.ɵɵinject(MSAL_INSTANCE), ɵngcc0.ɵɵinject(ɵngcc1.Location)); };\nMsalService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: MsalService, factory: MsalService.ɵfac });\nMsalService.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [MSAL_INSTANCE,] }] },\n { type: Location }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MsalService, [{\n type: Injectable\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [MSAL_INSTANCE]\n }] }, { type: ɵngcc1.Location }]; }, null); })();\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nclass MsalBroadcastService {\n constructor(msalInstance, authService, msalBroadcastConfig) {\n this.msalInstance = msalInstance;\n this.authService = authService;\n this.msalBroadcastConfig = msalBroadcastConfig;\n // Make _msalSubject a ReplaySubject if configured to replay past events\n if (this.msalBroadcastConfig && this.msalBroadcastConfig.eventsToReplay > 0) {\n this.authService.getLogger().verbose(`BroadcastService - replayPastEvents set on BroadcastConfig, replaying the last ${this.msalBroadcastConfig.eventsToReplay} events`);\n this._msalSubject = new ReplaySubject(this.msalBroadcastConfig.eventsToReplay);\n }\n else {\n // Defaults to _msalSubject being a Subject\n this._msalSubject = new Subject();\n }\n this.msalSubject$ = this._msalSubject.asObservable();\n // InProgress as BehaviorSubject so most recent inProgress state will be available upon subscription\n this._inProgress = new BehaviorSubject(InteractionStatus.Startup);\n this.inProgress$ = this._inProgress.asObservable();\n this.msalInstance.addEventCallback((message) => {\n this._msalSubject.next(message);\n const status = EventMessageUtils.getInteractionStatusFromEvent(message, this._inProgress.value);\n if (status !== null) {\n this.authService.getLogger().verbose(`BroadcastService - ${message.eventType} results in setting inProgress from ${this._inProgress.value} to ${status}`);\n this._inProgress.next(status);\n }\n });\n }\n}\nMsalBroadcastService.ɵfac = function MsalBroadcastService_Factory(t) { return new (t || MsalBroadcastService)(ɵngcc0.ɵɵinject(MSAL_INSTANCE), ɵngcc0.ɵɵinject(MsalService), ɵngcc0.ɵɵinject(MSAL_BROADCAST_CONFIG, 8)); };\nMsalBroadcastService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: MsalBroadcastService, factory: MsalBroadcastService.ɵfac });\nMsalBroadcastService.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [MSAL_INSTANCE,] }] },\n { type: MsalService },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [MSAL_BROADCAST_CONFIG,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MsalBroadcastService, [{\n type: Injectable\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [MSAL_INSTANCE]\n }] }, { type: MsalService }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MSAL_BROADCAST_CONFIG]\n }] }]; }, null); })();\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nclass MsalGuard {\n constructor(msalGuardConfig, msalBroadcastService, authService, location, router) {\n this.msalGuardConfig = msalGuardConfig;\n this.msalBroadcastService = msalBroadcastService;\n this.authService = authService;\n this.location = location;\n this.router = router;\n // Subscribing so events in MsalGuard will set inProgress$ observable\n this.msalBroadcastService.inProgress$.subscribe();\n }\n /**\n * Parses url string to UrlTree\n * @param url\n */\n parseUrl(url) {\n return this.router.parseUrl(url);\n }\n /**\n * Builds the absolute url for the destination page\n * @param path Relative path of requested page\n * @returns Full destination url\n */\n getDestinationUrl(path) {\n this.authService.getLogger().verbose(\"Guard - getting destination url\");\n // Absolute base url for the application (default to origin if base element not present)\n const baseElements = document.getElementsByTagName(\"base\");\n const baseUrl = this.location.normalize(baseElements.length ? baseElements[0].href : window.location.origin);\n // Path of page (including hash, if using hash routing)\n const pathUrl = this.location.prepareExternalUrl(path);\n // Hash location strategy\n if (pathUrl.startsWith(\"#\")) {\n this.authService.getLogger().verbose(\"Guard - destination by hash routing\");\n return `${baseUrl}/${pathUrl}`;\n }\n /*\n * If using path location strategy, pathUrl will include the relative portion of the base path (e.g. /base/page).\n * Since baseUrl also includes /base, can just concatentate baseUrl + path\n */\n return `${baseUrl}${path}`;\n }\n /**\n * Interactively prompt the user to login\n * @param url Path of the requested page\n */\n loginInteractively(state) {\n const authRequest = typeof this.msalGuardConfig.authRequest === \"function\"\n ? this.msalGuardConfig.authRequest(this.authService, state)\n : Object.assign({}, this.msalGuardConfig.authRequest);\n if (this.msalGuardConfig.interactionType === InteractionType.Popup) {\n this.authService.getLogger().verbose(\"Guard - logging in by popup\");\n return this.authService.loginPopup(authRequest)\n .pipe(map((response) => {\n this.authService.getLogger().verbose(\"Guard - login by popup successful, can activate, setting active account\");\n this.authService.instance.setActiveAccount(response.account);\n return true;\n }));\n }\n this.authService.getLogger().verbose(\"Guard - logging in by redirect\");\n const redirectStartPage = this.getDestinationUrl(state.url);\n return this.authService.loginRedirect(Object.assign({ redirectStartPage }, authRequest))\n .pipe(map(() => false));\n }\n /**\n * Helper which checks for the correct interaction type, prevents page with Guard to be set as reidrect, and calls handleRedirectObservable\n * @param state\n */\n activateHelper(state) {\n if (this.msalGuardConfig.interactionType !== InteractionType.Popup && this.msalGuardConfig.interactionType !== InteractionType.Redirect) {\n throw new BrowserConfigurationAuthError(\"invalid_interaction_type\", \"Invalid interaction type provided to MSAL Guard. InteractionType.Popup or InteractionType.Redirect must be provided in the MsalGuardConfiguration\");\n }\n this.authService.getLogger().verbose(\"MSAL Guard activated\");\n /*\n * If a page with MSAL Guard is set as the redirect for acquireTokenSilent,\n * short-circuit to prevent redirecting or popups.\n */\n if (typeof window !== \"undefined\") {\n if (UrlString.hashContainsKnownProperties(window.location.hash) && BrowserUtils.isInIframe() && !this.authService.instance.getConfiguration().system.allowRedirectInIframe) {\n this.authService.getLogger().warning(\"Guard - redirectUri set to page with MSAL Guard. It is recommended to not set redirectUri to a page that requires authentication.\");\n return of(false);\n }\n }\n else {\n this.authService.getLogger().info(\"Guard - window is undefined, MSAL does not support server-side token acquisition\");\n return of(true);\n }\n /**\n * If a loginFailedRoute is set in the config, set this as the loginFailedRoute\n */\n if (this.msalGuardConfig.loginFailedRoute) {\n this.loginFailedRoute = this.parseUrl(this.msalGuardConfig.loginFailedRoute);\n }\n // Capture current path before it gets changed by handleRedirectObservable\n const currentPath = this.location.path(true);\n return this.authService.handleRedirectObservable()\n .pipe(concatMap(() => {\n if (!this.authService.instance.getAllAccounts().length) {\n if (state) {\n this.authService.getLogger().verbose(\"Guard - no accounts retrieved, log in required to activate\");\n return this.loginInteractively(state);\n }\n this.authService.getLogger().verbose(\"Guard - no accounts retrieved, no state, cannot load\");\n return of(false);\n }\n this.authService.getLogger().verbose(\"Guard - at least 1 account exists, can activate or load\");\n // Prevent navigating the app to /#code= or /code=\n if (state) {\n /*\n * Path routing:\n * state.url: /#code=...\n * state.root.fragment: code=...\n */\n /*\n * Hash routing:\n * state.url: /code\n * state.root.fragment: null\n */\n const urlContainsCode = this.includesCode(state.url);\n const fragmentContainsCode = !!state.root && !!state.root.fragment && this.includesCode(`#${state.root.fragment}`);\n const hashRouting = this.location.prepareExternalUrl(state.url).indexOf(\"#\") === 0;\n // Ensure code parameter is in fragment (and not in query parameter), or that hash hash routing is used\n if (urlContainsCode && (fragmentContainsCode || hashRouting)) {\n this.authService.getLogger().info(\"Guard - Hash contains known code response, stopping navigation.\");\n // Path routing (navigate to current path without hash)\n if (currentPath.indexOf(\"#\") > -1) {\n return of(this.parseUrl(this.location.path()));\n }\n // Hash routing (navigate to root path)\n return of(this.parseUrl(\"\"));\n }\n }\n return of(true);\n }), catchError((error) => {\n this.authService.getLogger().error(\"Guard - error while logging in, unable to activate\");\n this.authService.getLogger().errorPii(`Guard - error: ${error.message}`);\n /**\n * If a loginFailedRoute is set, checks to see if Angular 10+ is used and state is passed in before returning route\n * Apps using Angular 9 will receive of(false) in canLoad interface, as it does not support UrlTree return types\n */\n if (this.loginFailedRoute && parseInt(VERSION.major, 10) > 9 && state) {\n this.authService.getLogger().verbose(\"Guard - loginFailedRoute set, redirecting\");\n return of(this.loginFailedRoute);\n }\n return of(false);\n }));\n }\n includesCode(path) {\n return (path.lastIndexOf(\"/code\") > -1 &&\n path.lastIndexOf(\"/code\") === path.length - \"/code\".length) || // path.endsWith(\"/code\")\n path.indexOf(\"#code=\") > -1 ||\n path.indexOf(\"&code=\") > -1;\n }\n canActivate(route, state) {\n this.authService.getLogger().verbose(\"Guard - canActivate\");\n return this.activateHelper(state);\n }\n canActivateChild(route, state) {\n this.authService.getLogger().verbose(\"Guard - canActivateChild\");\n return this.activateHelper(state);\n }\n canLoad() {\n this.authService.getLogger().verbose(\"Guard - canLoad\");\n // @ts-ignore\n return this.activateHelper();\n }\n}\nMsalGuard.ɵfac = function MsalGuard_Factory(t) { return new (t || MsalGuard)(ɵngcc0.ɵɵinject(MSAL_GUARD_CONFIG), ɵngcc0.ɵɵinject(MsalBroadcastService), ɵngcc0.ɵɵinject(MsalService), ɵngcc0.ɵɵinject(ɵngcc1.Location), ɵngcc0.ɵɵinject(ɵngcc2.Router)); };\nMsalGuard.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: MsalGuard, factory: MsalGuard.ɵfac });\nMsalGuard.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [MSAL_GUARD_CONFIG,] }] },\n { type: MsalBroadcastService },\n { type: MsalService },\n { type: Location },\n { type: Router }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MsalGuard, [{\n type: Injectable\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [MSAL_GUARD_CONFIG]\n }] }, { type: MsalBroadcastService }, { type: MsalService }, { type: ɵngcc1.Location }, { type: ɵngcc2.Router }]; }, null); })();\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nclass MsalInterceptor {\n constructor(msalInterceptorConfig, authService, location, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n document) {\n this.msalInterceptorConfig = msalInterceptorConfig;\n this.authService = authService;\n this.location = location;\n this._document = document;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n intercept(req, next) {\n if (this.msalInterceptorConfig.interactionType !== InteractionType.Popup && this.msalInterceptorConfig.interactionType !== InteractionType.Redirect) {\n throw new BrowserConfigurationAuthError(\"invalid_interaction_type\", \"Invalid interaction type provided to MSAL Interceptor. InteractionType.Popup, InteractionType.Redirect must be provided in the msalInterceptorConfiguration\");\n }\n this.authService.getLogger().verbose(\"MSAL Interceptor activated\");\n const scopes = this.getScopesForEndpoint(req.url, req.method);\n // If no scopes for endpoint, does not acquire token\n if (!scopes || scopes.length === 0) {\n this.authService.getLogger().verbose(\"Interceptor - no scopes for endpoint\");\n return next.handle(req);\n }\n // Sets account as active account or first account\n let account;\n if (!!this.authService.instance.getActiveAccount()) {\n this.authService.getLogger().verbose(\"Interceptor - active account selected\");\n account = this.authService.instance.getActiveAccount();\n }\n else {\n this.authService.getLogger().verbose(\"Interceptor - no active account, fallback to first account\");\n account = this.authService.instance.getAllAccounts()[0];\n }\n const authRequest = typeof this.msalInterceptorConfig.authRequest === \"function\"\n ? this.msalInterceptorConfig.authRequest(this.authService, req, { account: account })\n : Object.assign(Object.assign({}, this.msalInterceptorConfig.authRequest), { account });\n this.authService.getLogger().info(`Interceptor - ${scopes.length} scopes found for endpoint`);\n this.authService.getLogger().infoPii(`Interceptor - [${scopes}] scopes found for ${req.url}`);\n // Note: For MSA accounts, include openid scope when calling acquireTokenSilent to return idToken\n return this.authService.acquireTokenSilent(Object.assign(Object.assign({}, authRequest), { scopes, account }))\n .pipe(catchError(() => {\n this.authService.getLogger().error(\"Interceptor - acquireTokenSilent rejected with error. Invoking interaction to resolve.\");\n return this.acquireTokenInteractively(authRequest, scopes);\n }), switchMap((result) => {\n if (!result.accessToken) {\n this.authService.getLogger().error(\"Interceptor - acquireTokenSilent resolved with null access token. Known issue with B2C tenants, invoking interaction to resolve.\");\n return this.acquireTokenInteractively(authRequest, scopes);\n }\n return of(result);\n }), switchMap((result) => {\n this.authService.getLogger().verbose(\"Interceptor - setting authorization headers\");\n const headers = req.headers\n .set(\"Authorization\", `Bearer ${result.accessToken}`);\n const requestClone = req.clone({ headers });\n return next.handle(requestClone);\n }));\n }\n /**\n * Invoke interaction for the given set of scopes\n * @param authRequest Request\n * @param scopes Array of scopes for the request\n * @returns Result from the interactive request\n */\n acquireTokenInteractively(authRequest, scopes) {\n if (this.msalInterceptorConfig.interactionType === InteractionType.Popup) {\n this.authService.getLogger().verbose(\"Interceptor - error acquiring token silently, acquiring by popup\");\n return this.authService.acquireTokenPopup(Object.assign(Object.assign({}, authRequest), { scopes }));\n }\n this.authService.getLogger().verbose(\"Interceptor - error acquiring token silently, acquiring by redirect\");\n const redirectStartPage = window.location.href;\n this.authService.acquireTokenRedirect(Object.assign(Object.assign({}, authRequest), { scopes, redirectStartPage }));\n return EMPTY;\n }\n /**\n * Looks up the scopes for the given endpoint from the protectedResourceMap\n * @param endpoint Url of the request\n * @param httpMethod Http method of the request\n * @returns Array of scopes, or null if not found\n *\n */\n getScopesForEndpoint(endpoint, httpMethod) {\n this.authService.getLogger().verbose(\"Interceptor - getting scopes for endpoint\");\n // Ensures endpoints and protected resources compared are normalized\n const normalizedEndpoint = this.location.normalize(endpoint);\n const protectedResourcesArray = Array.from(this.msalInterceptorConfig.protectedResourceMap.keys());\n const matchingProtectedResources = this.matchResourcesToEndpoint(protectedResourcesArray, normalizedEndpoint);\n // Check absolute urls of resources first before checking relative to prevent incorrect matching where multiple resources have similar relative urls\n if (matchingProtectedResources.absoluteResources.length > 0) {\n return this.matchScopesToEndpoint(this.msalInterceptorConfig.protectedResourceMap, matchingProtectedResources.absoluteResources, httpMethod);\n }\n else if (matchingProtectedResources.relativeResources.length > 0) {\n return this.matchScopesToEndpoint(this.msalInterceptorConfig.protectedResourceMap, matchingProtectedResources.relativeResources, httpMethod);\n }\n return null;\n }\n /**\n * Finds resource endpoints that match request endpoint\n * @param protectedResourcesEndpoints\n * @param endpoint\n * @returns\n */\n matchResourcesToEndpoint(protectedResourcesEndpoints, endpoint) {\n const matchingResources = { absoluteResources: [], relativeResources: [] };\n protectedResourcesEndpoints.forEach(key => {\n // Normalizes and adds resource to matchingResources.absoluteResources if key matches endpoint. StringUtils.matchPattern accounts for wildcards\n const normalizedKey = this.location.normalize(key);\n if (StringUtils.matchPattern(normalizedKey, endpoint)) {\n matchingResources.absoluteResources.push(key);\n }\n // Get url components for relative urls\n const absoluteKey = this.getAbsoluteUrl(key);\n const keyComponents = new UrlString(absoluteKey).getUrlComponents();\n const absoluteEndpoint = this.getAbsoluteUrl(endpoint);\n const endpointComponents = new UrlString(absoluteEndpoint).getUrlComponents();\n // Normalized key should include query strings if applicable\n const relativeNormalizedKey = keyComponents.QueryString ? `${keyComponents.AbsolutePath}?${keyComponents.QueryString}` : this.location.normalize(keyComponents.AbsolutePath);\n // Add resource to matchingResources.relativeResources if same origin, relativeKey matches endpoint, and is not empty\n if (keyComponents.HostNameAndPort === endpointComponents.HostNameAndPort && StringUtils.matchPattern(relativeNormalizedKey, absoluteEndpoint) && relativeNormalizedKey !== \"\" && relativeNormalizedKey !== \"/*\") {\n matchingResources.relativeResources.push(key);\n }\n });\n return matchingResources;\n }\n /**\n * Transforms relative urls to absolute urls\n * @param url\n * @returns\n */\n getAbsoluteUrl(url) {\n const link = this._document.createElement(\"a\");\n link.href = url;\n return link.href;\n }\n /**\n * Finds scopes from first matching endpoint with HTTP method that matches request\n * @param protectedResourceMap Protected resource map\n * @param endpointArray Array of resources that match request endpoint\n * @param httpMethod Http method of the request\n * @returns\n */\n matchScopesToEndpoint(protectedResourceMap, endpointArray, httpMethod) {\n const allMatchedScopes = [];\n // Check each matched endpoint for matching HttpMethod and scopes\n endpointArray.forEach(matchedEndpoint => {\n const scopesForEndpoint = [];\n const methodAndScopesArray = protectedResourceMap.get(matchedEndpoint);\n // Return if resource is unprotected\n if (methodAndScopesArray === null) {\n allMatchedScopes.push(null);\n return;\n }\n methodAndScopesArray.forEach(entry => {\n // Entry is either array of scopes or ProtectedResourceScopes object\n if (typeof entry === \"string\") {\n scopesForEndpoint.push(entry);\n }\n else {\n // Ensure methods being compared are normalized\n const normalizedRequestMethod = httpMethod.toLowerCase();\n const normalizedResourceMethod = entry.httpMethod.toLowerCase();\n // Method in protectedResourceMap matches request http method\n if (normalizedResourceMethod === normalizedRequestMethod) {\n // Validate if scopes comes null to unprotect the resource in a certain http method \n if (entry.scopes === null) {\n allMatchedScopes.push(null);\n }\n else {\n entry.scopes.forEach((scope) => {\n scopesForEndpoint.push(scope);\n });\n }\n }\n }\n });\n // Only add to all scopes if scopes for endpoint and method is found\n if (scopesForEndpoint.length > 0) {\n allMatchedScopes.push(scopesForEndpoint);\n }\n });\n if (allMatchedScopes.length > 0) {\n if (allMatchedScopes.length > 1) {\n this.authService.getLogger().warning(\"Interceptor - More than 1 matching scopes for endpoint found.\");\n }\n // Returns scopes for first matching endpoint\n return allMatchedScopes[0];\n }\n return null;\n }\n}\nMsalInterceptor.ɵfac = function MsalInterceptor_Factory(t) { return new (t || MsalInterceptor)(ɵngcc0.ɵɵinject(MSAL_INTERCEPTOR_CONFIG), ɵngcc0.ɵɵinject(MsalService), ɵngcc0.ɵɵinject(ɵngcc1.Location), ɵngcc0.ɵɵinject(DOCUMENT)); };\nMsalInterceptor.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: MsalInterceptor, factory: MsalInterceptor.ɵfac });\nMsalInterceptor.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [MSAL_INTERCEPTOR_CONFIG,] }] },\n { type: MsalService },\n { type: Location },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MsalInterceptor, [{\n type: Injectable\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [MSAL_INTERCEPTOR_CONFIG]\n }] }, { type: MsalService }, { type: ɵngcc1.Location }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, null); })();\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nclass MsalRedirectComponent {\n constructor(authService) {\n this.authService = authService;\n }\n ngOnInit() {\n this.authService.getLogger().verbose(\"MsalRedirectComponent activated\");\n this.authService.initialize().pipe(concatMap(() => {\n return this.authService.handleRedirectObservable();\n })).subscribe();\n }\n}\nMsalRedirectComponent.ɵfac = function MsalRedirectComponent_Factory(t) { return new (t || MsalRedirectComponent)(ɵngcc0.ɵɵdirectiveInject(MsalService)); };\nMsalRedirectComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: MsalRedirectComponent, selectors: [[\"app-redirect\"]], decls: 0, vars: 0, template: function MsalRedirectComponent_Template(rf, ctx) { }, encapsulation: 2 });\nMsalRedirectComponent.ctorParameters = () => [\n { type: MsalService }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MsalRedirectComponent, [{\n type: Component,\n args: [{\n selector: \"app-redirect\",\n template: \"\"\n }]\n }], function () { return [{ type: MsalService }]; }, null); })();\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nclass MsalModule {\n static forRoot(msalInstance, guardConfig, interceptorConfig) {\n return {\n ngModule: MsalModule,\n providers: [\n {\n provide: MSAL_INSTANCE,\n useValue: msalInstance\n },\n {\n provide: MSAL_GUARD_CONFIG,\n useValue: guardConfig\n },\n {\n provide: MSAL_INTERCEPTOR_CONFIG,\n useValue: interceptorConfig\n },\n MsalService\n ]\n };\n }\n}\nMsalModule.ɵfac = function MsalModule_Factory(t) { return new (t || MsalModule)(); };\nMsalModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: MsalModule });\nMsalModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ providers: [\n MsalGuard,\n MsalBroadcastService\n ], imports: [CommonModule] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MsalModule, [{\n type: NgModule,\n args: [{\n declarations: [MsalRedirectComponent],\n imports: [\n CommonModule\n ],\n providers: [\n MsalGuard,\n MsalBroadcastService\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(MsalModule, { declarations: function () { return [MsalRedirectComponent]; }, imports: function () { return [CommonModule]; } }); })();\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Custom navigation used for Angular client-side navigation.\n * See performance doc for details:\n * https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-angular/docs/v2-docs/performance.md\n */\nclass MsalCustomNavigationClient extends NavigationClient {\n constructor(authService, router, location) {\n super();\n this.authService = authService;\n this.router = router;\n this.location = location;\n }\n navigateInternal(url, options) {\n const _super = Object.create(null, {\n navigateInternal: { get: () => super.navigateInternal }\n });\n return __awaiter(this, void 0, void 0, function* () {\n this.authService.getLogger().trace(\"MsalCustomNavigationClient called\");\n this.authService.getLogger().verbose(\"MsalCustomNavigationClient - navigating\");\n this.authService.getLogger().verbosePii(`MsalCustomNavigationClient - navigating to url: ${url}`);\n // Prevent hash clearing from causing an issue with Client-side navigation after redirect is handled\n if (options.noHistory) {\n return _super.navigateInternal.call(this, url, options);\n }\n else {\n // Normalizing newUrl if no query string\n const urlComponents = new UrlString(url).getUrlComponents();\n const newUrl = urlComponents.QueryString ? `${urlComponents.AbsolutePath}?${urlComponents.QueryString}` : this.location.normalize(urlComponents.AbsolutePath);\n this.router.navigateByUrl(newUrl, { replaceUrl: options.noHistory });\n }\n return Promise.resolve(options.noHistory);\n });\n }\n}\nMsalCustomNavigationClient.ɵfac = function MsalCustomNavigationClient_Factory(t) { return new (t || MsalCustomNavigationClient)(ɵngcc0.ɵɵinject(MsalService), ɵngcc0.ɵɵinject(ɵngcc2.Router), ɵngcc0.ɵɵinject(ɵngcc1.Location)); };\nMsalCustomNavigationClient.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: MsalCustomNavigationClient, factory: MsalCustomNavigationClient.ɵfac });\nMsalCustomNavigationClient.ctorParameters = () => [\n { type: MsalService },\n { type: Router },\n { type: Location }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MsalCustomNavigationClient, [{\n type: Injectable\n }], function () { return [{ type: MsalService }, { type: ɵngcc2.Router }, { type: ɵngcc1.Location }]; }, null); })();\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MSAL_BROADCAST_CONFIG, MSAL_GUARD_CONFIG, MSAL_INSTANCE, MSAL_INTERCEPTOR_CONFIG, MsalBroadcastService, MsalCustomNavigationClient, MsalGuard, MsalInterceptor, MsalModule, MsalRedirectComponent, MsalService, version };\n\n","/*! @azure/msal-browser v2.32.2 2023-01-10 */\n'use strict';\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nfunction __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nfunction __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\n\nexport { __assign, __awaiter, __extends, __generator, __read, __rest, __spread };\n","/*! @azure/msal-browser v2.32.2 2023-01-10 */\n'use strict';\nimport { __extends } from '../_virtual/_tslib.js';\nimport { StringUtils, AuthError } from '@azure/msal-common';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * BrowserAuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nvar BrowserAuthErrorMessage = {\r\n pkceNotGenerated: {\r\n code: \"pkce_not_created\",\r\n desc: \"The PKCE code challenge and verifier could not be generated.\"\r\n },\r\n cryptoDoesNotExist: {\r\n code: \"crypto_nonexistent\",\r\n desc: \"The crypto object or function is not available.\"\r\n },\r\n httpMethodNotImplementedError: {\r\n code: \"http_method_not_implemented\",\r\n desc: \"The HTTP method given has not been implemented in this library.\"\r\n },\r\n emptyNavigateUriError: {\r\n code: \"empty_navigate_uri\",\r\n desc: \"Navigation URI is empty. Please check stack trace for more info.\"\r\n },\r\n hashEmptyError: {\r\n code: \"hash_empty_error\",\r\n desc: \"Hash value cannot be processed because it is empty. Please verify that your redirectUri is not clearing the hash. For more visit: aka.ms/msaljs/browser-errors.\"\r\n },\r\n hashDoesNotContainStateError: {\r\n code: \"no_state_in_hash\",\r\n desc: \"Hash does not contain state. Please verify that the request originated from msal.\"\r\n },\r\n hashDoesNotContainKnownPropertiesError: {\r\n code: \"hash_does_not_contain_known_properties\",\r\n desc: \"Hash does not contain known properites. Please verify that your redirectUri is not changing the hash. For more visit: aka.ms/msaljs/browser-errors.\"\r\n },\r\n unableToParseStateError: {\r\n code: \"unable_to_parse_state\",\r\n desc: \"Unable to parse state. Please verify that the request originated from msal.\"\r\n },\r\n stateInteractionTypeMismatchError: {\r\n code: \"state_interaction_type_mismatch\",\r\n desc: \"Hash contains state but the interaction type does not match the caller.\"\r\n },\r\n interactionInProgress: {\r\n code: \"interaction_in_progress\",\r\n desc: \"Interaction is currently in progress. Please ensure that this interaction has been completed before calling an interactive API. For more visit: aka.ms/msaljs/browser-errors.\"\r\n },\r\n popupWindowError: {\r\n code: \"popup_window_error\",\r\n desc: \"Error opening popup window. This can happen if you are using IE or if popups are blocked in the browser.\"\r\n },\r\n emptyWindowError: {\r\n code: \"empty_window_error\",\r\n desc: \"window.open returned null or undefined window object.\"\r\n },\r\n userCancelledError: {\r\n code: \"user_cancelled\",\r\n desc: \"User cancelled the flow.\"\r\n },\r\n monitorPopupTimeoutError: {\r\n code: \"monitor_window_timeout\",\r\n desc: \"Token acquisition in popup failed due to timeout. For more visit: aka.ms/msaljs/browser-errors.\"\r\n },\r\n monitorIframeTimeoutError: {\r\n code: \"monitor_window_timeout\",\r\n desc: \"Token acquisition in iframe failed due to timeout. For more visit: aka.ms/msaljs/browser-errors.\"\r\n },\r\n redirectInIframeError: {\r\n code: \"redirect_in_iframe\",\r\n desc: \"Redirects are not supported for iframed or brokered applications. Please ensure you are using MSAL.js in a top frame of the window if using the redirect APIs, or use the popup APIs.\"\r\n },\r\n blockTokenRequestsInHiddenIframeError: {\r\n code: \"block_iframe_reload\",\r\n desc: \"Request was blocked inside an iframe because MSAL detected an authentication response. For more visit: aka.ms/msaljs/browser-errors\"\r\n },\r\n blockAcquireTokenInPopupsError: {\r\n code: \"block_nested_popups\",\r\n desc: \"Request was blocked inside a popup because MSAL detected it was running in a popup.\"\r\n },\r\n iframeClosedPrematurelyError: {\r\n code: \"iframe_closed_prematurely\",\r\n desc: \"The iframe being monitored was closed prematurely.\"\r\n },\r\n silentLogoutUnsupportedError: {\r\n code: \"silent_logout_unsupported\",\r\n desc: \"Silent logout not supported. Please call logoutRedirect or logoutPopup instead.\"\r\n },\r\n noAccountError: {\r\n code: \"no_account_error\",\r\n desc: \"No account object provided to acquireTokenSilent and no active account has been set. Please call setActiveAccount or provide an account on the request.\"\r\n },\r\n silentPromptValueError: {\r\n code: \"silent_prompt_value_error\",\r\n desc: \"The value given for the prompt value is not valid for silent requests - must be set to 'none' or 'no_session'.\"\r\n },\r\n noTokenRequestCacheError: {\r\n code: \"no_token_request_cache_error\",\r\n desc: \"No token request found in cache.\"\r\n },\r\n unableToParseTokenRequestCacheError: {\r\n code: \"unable_to_parse_token_request_cache_error\",\r\n desc: \"The cached token request could not be parsed.\"\r\n },\r\n noCachedAuthorityError: {\r\n code: \"no_cached_authority_error\",\r\n desc: \"No cached authority found.\"\r\n },\r\n authRequestNotSet: {\r\n code: \"auth_request_not_set_error\",\r\n desc: \"Auth Request not set. Please ensure initiateAuthRequest was called from the InteractionHandler\"\r\n },\r\n invalidCacheType: {\r\n code: \"invalid_cache_type\",\r\n desc: \"Invalid cache type\"\r\n },\r\n notInBrowserEnvironment: {\r\n code: \"non_browser_environment\",\r\n desc: \"Login and token requests are not supported in non-browser environments.\"\r\n },\r\n databaseNotOpen: {\r\n code: \"database_not_open\",\r\n desc: \"Database is not open!\"\r\n },\r\n noNetworkConnectivity: {\r\n code: \"no_network_connectivity\",\r\n desc: \"No network connectivity. Check your internet connection.\"\r\n },\r\n postRequestFailed: {\r\n code: \"post_request_failed\",\r\n desc: \"Network request failed: If the browser threw a CORS error, check that the redirectUri is registered in the Azure App Portal as type 'SPA'\"\r\n },\r\n getRequestFailed: {\r\n code: \"get_request_failed\",\r\n desc: \"Network request failed. Please check the network trace to determine root cause.\"\r\n },\r\n failedToParseNetworkResponse: {\r\n code: \"failed_to_parse_response\",\r\n desc: \"Failed to parse network response. Check network trace.\"\r\n },\r\n unableToLoadTokenError: {\r\n code: \"unable_to_load_token\",\r\n desc: \"Error loading token to cache.\"\r\n },\r\n signingKeyNotFoundInStorage: {\r\n code: \"crypto_key_not_found\",\r\n desc: \"Cryptographic Key or Keypair not found in browser storage.\"\r\n },\r\n authCodeRequired: {\r\n code: \"auth_code_required\",\r\n desc: \"An authorization code must be provided (as the `code` property on the request) to this flow.\"\r\n },\r\n authCodeOrNativeAccountRequired: {\r\n code: \"auth_code_or_nativeAccountId_required\",\r\n desc: \"An authorization code or nativeAccountId must be provided to this flow.\"\r\n },\r\n databaseUnavailable: {\r\n code: \"database_unavailable\",\r\n desc: \"IndexedDB, which is required for persistent cryptographic key storage, is unavailable. This may be caused by browser privacy features which block persistent storage in third-party contexts.\"\r\n },\r\n unableToAcquireTokenFromNativePlatform: {\r\n code: \"unable_to_acquire_token_from_native_platform\",\r\n desc: \"Unable to acquire token from native platform. For a list of possible reasons visit aka.ms/msaljs/browser-errors.\"\r\n },\r\n nativeHandshakeTimeout: {\r\n code: \"native_handshake_timeout\",\r\n desc: \"Timed out while attempting to establish connection to browser extension\"\r\n },\r\n nativeExtensionNotInstalled: {\r\n code: \"native_extension_not_installed\",\r\n desc: \"Native extension is not installed. If you think this is a mistake call the initialize function.\"\r\n },\r\n nativeConnectionNotEstablished: {\r\n code: \"native_connection_not_established\",\r\n desc: \"Connection to native platform has not been established. Please install a compatible browser extension and run initialize(). For more please visit aka.ms/msaljs/browser-errors.\"\r\n },\r\n nativeBrokerCalledBeforeInitialize: {\r\n code: \"native_broker_called_before_initialize\",\r\n desc: \"You must call and await the initialize function before attempting to call any other MSAL API when native brokering is enabled. For more please visit aka.ms/msaljs/browser-errors.\"\r\n },\r\n nativePromptNotSupported: {\r\n code: \"native_prompt_not_supported\",\r\n desc: \"The provided prompt is not supported by the native platform. This request should be routed to the web based flow.\"\r\n }\r\n};\r\n/**\r\n * Browser library error class thrown by the MSAL.js library for SPAs\r\n */\r\nvar BrowserAuthError = /** @class */ (function (_super) {\r\n __extends(BrowserAuthError, _super);\r\n function BrowserAuthError(errorCode, errorMessage) {\r\n var _this = _super.call(this, errorCode, errorMessage) || this;\r\n Object.setPrototypeOf(_this, BrowserAuthError.prototype);\r\n _this.name = \"BrowserAuthError\";\r\n return _this;\r\n }\r\n /**\r\n * Creates an error thrown when PKCE is not implemented.\r\n * @param errDetail\r\n */\r\n BrowserAuthError.createPkceNotGeneratedError = function (errDetail) {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.pkceNotGenerated.code, BrowserAuthErrorMessage.pkceNotGenerated.desc + \" Detail:\" + errDetail);\r\n };\r\n /**\r\n * Creates an error thrown when the crypto object is unavailable.\r\n * @param errDetail\r\n */\r\n BrowserAuthError.createCryptoNotAvailableError = function (errDetail) {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.cryptoDoesNotExist.code, BrowserAuthErrorMessage.cryptoDoesNotExist.desc + \" Detail:\" + errDetail);\r\n };\r\n /**\r\n * Creates an error thrown when an HTTP method hasn't been implemented by the browser class.\r\n * @param method\r\n */\r\n BrowserAuthError.createHttpMethodNotImplementedError = function (method) {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.httpMethodNotImplementedError.code, BrowserAuthErrorMessage.httpMethodNotImplementedError.desc + \" Given Method: \" + method);\r\n };\r\n /**\r\n * Creates an error thrown when the navigation URI is empty.\r\n */\r\n BrowserAuthError.createEmptyNavigationUriError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.emptyNavigateUriError.code, BrowserAuthErrorMessage.emptyNavigateUriError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the hash string value is unexpectedly empty.\r\n * @param hashValue\r\n */\r\n BrowserAuthError.createEmptyHashError = function (hashValue) {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.hashEmptyError.code, BrowserAuthErrorMessage.hashEmptyError.desc + \" Given Url: \" + hashValue);\r\n };\r\n /**\r\n * Creates an error thrown when the hash string value is unexpectedly empty.\r\n */\r\n BrowserAuthError.createHashDoesNotContainStateError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.hashDoesNotContainStateError.code, BrowserAuthErrorMessage.hashDoesNotContainStateError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the hash string value does not contain known properties\r\n */\r\n BrowserAuthError.createHashDoesNotContainKnownPropertiesError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.hashDoesNotContainKnownPropertiesError.code, BrowserAuthErrorMessage.hashDoesNotContainKnownPropertiesError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the hash string value is unexpectedly empty.\r\n */\r\n BrowserAuthError.createUnableToParseStateError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.unableToParseStateError.code, BrowserAuthErrorMessage.unableToParseStateError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the state value in the hash does not match the interaction type of the API attempting to consume it.\r\n */\r\n BrowserAuthError.createStateInteractionTypeMismatchError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.stateInteractionTypeMismatchError.code, BrowserAuthErrorMessage.stateInteractionTypeMismatchError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when a browser interaction (redirect or popup) is in progress.\r\n */\r\n BrowserAuthError.createInteractionInProgressError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.interactionInProgress.code, BrowserAuthErrorMessage.interactionInProgress.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the popup window could not be opened.\r\n * @param errDetail\r\n */\r\n BrowserAuthError.createPopupWindowError = function (errDetail) {\r\n var errorMessage = BrowserAuthErrorMessage.popupWindowError.desc;\r\n errorMessage = !StringUtils.isEmpty(errDetail) ? errorMessage + \" Details: \" + errDetail : errorMessage;\r\n return new BrowserAuthError(BrowserAuthErrorMessage.popupWindowError.code, errorMessage);\r\n };\r\n /**\r\n * Creates an error thrown when window.open returns an empty window object.\r\n * @param errDetail\r\n */\r\n BrowserAuthError.createEmptyWindowCreatedError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.emptyWindowError.code, BrowserAuthErrorMessage.emptyWindowError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the user closes a popup.\r\n */\r\n BrowserAuthError.createUserCancelledError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.userCancelledError.code, BrowserAuthErrorMessage.userCancelledError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when monitorPopupFromHash times out for a given popup.\r\n */\r\n BrowserAuthError.createMonitorPopupTimeoutError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.monitorPopupTimeoutError.code, BrowserAuthErrorMessage.monitorPopupTimeoutError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when monitorIframeFromHash times out for a given iframe.\r\n */\r\n BrowserAuthError.createMonitorIframeTimeoutError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.monitorIframeTimeoutError.code, BrowserAuthErrorMessage.monitorIframeTimeoutError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when navigateWindow is called inside an iframe or brokered applications.\r\n * @param windowParentCheck\r\n */\r\n BrowserAuthError.createRedirectInIframeError = function (windowParentCheck) {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.redirectInIframeError.code, BrowserAuthErrorMessage.redirectInIframeError.desc + \" (window.parent !== window) => \" + windowParentCheck);\r\n };\r\n /**\r\n * Creates an error thrown when an auth reload is done inside an iframe.\r\n */\r\n BrowserAuthError.createBlockReloadInHiddenIframeError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.blockTokenRequestsInHiddenIframeError.code, BrowserAuthErrorMessage.blockTokenRequestsInHiddenIframeError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when a popup attempts to call an acquireToken API\r\n * @returns\r\n */\r\n BrowserAuthError.createBlockAcquireTokenInPopupsError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.blockAcquireTokenInPopupsError.code, BrowserAuthErrorMessage.blockAcquireTokenInPopupsError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when an iframe is found to be closed before the timeout is reached.\r\n */\r\n BrowserAuthError.createIframeClosedPrematurelyError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.iframeClosedPrematurelyError.code, BrowserAuthErrorMessage.iframeClosedPrematurelyError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the logout API is called on any of the silent interaction clients\r\n */\r\n BrowserAuthError.createSilentLogoutUnsupportedError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.silentLogoutUnsupportedError.code, BrowserAuthErrorMessage.silentLogoutUnsupportedError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the account object is not provided in the acquireTokenSilent API.\r\n */\r\n BrowserAuthError.createNoAccountError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.noAccountError.code, BrowserAuthErrorMessage.noAccountError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when a given prompt value is invalid for silent requests.\r\n */\r\n BrowserAuthError.createSilentPromptValueError = function (givenPrompt) {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.silentPromptValueError.code, BrowserAuthErrorMessage.silentPromptValueError.desc + \" Given value: \" + givenPrompt);\r\n };\r\n /**\r\n * Creates an error thrown when the cached token request could not be retrieved from the cache\r\n */\r\n BrowserAuthError.createUnableToParseTokenRequestCacheError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.unableToParseTokenRequestCacheError.code, BrowserAuthErrorMessage.unableToParseTokenRequestCacheError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the token request could not be retrieved from the cache\r\n */\r\n BrowserAuthError.createNoTokenRequestCacheError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.noTokenRequestCacheError.code, BrowserAuthErrorMessage.noTokenRequestCacheError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when handleCodeResponse is called before initiateAuthRequest (InteractionHandler)\r\n */\r\n BrowserAuthError.createAuthRequestNotSetError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.authRequestNotSet.code, BrowserAuthErrorMessage.authRequestNotSet.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the authority could not be retrieved from the cache\r\n */\r\n BrowserAuthError.createNoCachedAuthorityError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.noCachedAuthorityError.code, BrowserAuthErrorMessage.noCachedAuthorityError.desc);\r\n };\r\n /**\r\n * Creates an error thrown if cache type is invalid.\r\n */\r\n BrowserAuthError.createInvalidCacheTypeError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.invalidCacheType.code, \"\" + BrowserAuthErrorMessage.invalidCacheType.desc);\r\n };\r\n /**\r\n * Create an error thrown when login and token requests are made from a non-browser environment\r\n */\r\n BrowserAuthError.createNonBrowserEnvironmentError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.notInBrowserEnvironment.code, BrowserAuthErrorMessage.notInBrowserEnvironment.desc);\r\n };\r\n /**\r\n * Create an error thrown when indexDB database is not open\r\n */\r\n BrowserAuthError.createDatabaseNotOpenError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.databaseNotOpen.code, BrowserAuthErrorMessage.databaseNotOpen.desc);\r\n };\r\n /**\r\n * Create an error thrown when token fetch fails due to no internet\r\n */\r\n BrowserAuthError.createNoNetworkConnectivityError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.noNetworkConnectivity.code, BrowserAuthErrorMessage.noNetworkConnectivity.desc);\r\n };\r\n /**\r\n * Create an error thrown when token fetch fails due to reasons other than internet connectivity\r\n */\r\n BrowserAuthError.createPostRequestFailedError = function (errorDesc, endpoint) {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.postRequestFailed.code, BrowserAuthErrorMessage.postRequestFailed.desc + \" | Network client threw: \" + errorDesc + \" | Attempted to reach: \" + endpoint.split(\"?\")[0]);\r\n };\r\n /**\r\n * Create an error thrown when get request fails due to reasons other than internet connectivity\r\n */\r\n BrowserAuthError.createGetRequestFailedError = function (errorDesc, endpoint) {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.getRequestFailed.code, BrowserAuthErrorMessage.getRequestFailed.desc + \" | Network client threw: \" + errorDesc + \" | Attempted to reach: \" + endpoint.split(\"?\")[0]);\r\n };\r\n /**\r\n * Create an error thrown when network client fails to parse network response\r\n */\r\n BrowserAuthError.createFailedToParseNetworkResponseError = function (endpoint) {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.failedToParseNetworkResponse.code, BrowserAuthErrorMessage.failedToParseNetworkResponse.desc + \" | Attempted to reach: \" + endpoint.split(\"?\")[0]);\r\n };\r\n /**\r\n * Create an error thrown when the necessary information is not available to sideload tokens\r\n */\r\n BrowserAuthError.createUnableToLoadTokenError = function (errorDetail) {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.unableToLoadTokenError.code, BrowserAuthErrorMessage.unableToLoadTokenError.desc + \" | \" + errorDetail);\r\n };\r\n /**\r\n * Create an error thrown when the queried cryptographic key is not found in IndexedDB\r\n */\r\n BrowserAuthError.createSigningKeyNotFoundInStorageError = function (keyId) {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.signingKeyNotFoundInStorage.code, BrowserAuthErrorMessage.signingKeyNotFoundInStorage.desc + \" | No match found for KeyId: \" + keyId);\r\n };\r\n /**\r\n * Create an error when an authorization code is required but not provided\r\n */\r\n BrowserAuthError.createAuthCodeRequiredError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.authCodeRequired.code, BrowserAuthErrorMessage.authCodeRequired.desc);\r\n };\r\n /**\r\n * Create an error when an authorization code or native account ID is required but not provided\r\n */\r\n BrowserAuthError.createAuthCodeOrNativeAccountIdRequiredError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.authCodeOrNativeAccountRequired.code, BrowserAuthErrorMessage.authCodeOrNativeAccountRequired.desc);\r\n };\r\n /**\r\n * Create an error when IndexedDB is unavailable\r\n */\r\n BrowserAuthError.createDatabaseUnavailableError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.databaseUnavailable.code, BrowserAuthErrorMessage.databaseUnavailable.desc);\r\n };\r\n /**\r\n * Create an error when native token acquisition is not possible\r\n */\r\n BrowserAuthError.createUnableToAcquireTokenFromNativePlatformError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.unableToAcquireTokenFromNativePlatform.code, BrowserAuthErrorMessage.unableToAcquireTokenFromNativePlatform.desc);\r\n };\r\n /**\r\n * Create an error thrown when Handshake with browser extension times out\r\n */\r\n BrowserAuthError.createNativeHandshakeTimeoutError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.nativeHandshakeTimeout.code, BrowserAuthErrorMessage.nativeHandshakeTimeout.desc);\r\n };\r\n /**\r\n * Create an error thrown when browser extension is not installed\r\n */\r\n BrowserAuthError.createNativeExtensionNotInstalledError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.nativeExtensionNotInstalled.code, BrowserAuthErrorMessage.nativeExtensionNotInstalled.desc);\r\n };\r\n /**\r\n * Create an error when native connection has not been established\r\n * @returns\r\n */\r\n BrowserAuthError.createNativeConnectionNotEstablishedError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.nativeConnectionNotEstablished.code, BrowserAuthErrorMessage.nativeConnectionNotEstablished.desc);\r\n };\r\n /**\r\n * Create an error thrown when the initialize function hasn't been called\r\n */\r\n BrowserAuthError.createNativeBrokerCalledBeforeInitialize = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.nativeBrokerCalledBeforeInitialize.code, BrowserAuthErrorMessage.nativeBrokerCalledBeforeInitialize.desc);\r\n };\r\n /**\r\n * Create an error thrown when requesting a token directly from the native platform with an unsupported prompt parameter e.g. select_account, login or create\r\n * These requests must go through eSTS to ensure eSTS is aware of the new account\r\n */\r\n BrowserAuthError.createNativePromptParameterNotSupportedError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.nativePromptNotSupported.code, BrowserAuthErrorMessage.nativePromptNotSupported.desc);\r\n };\r\n return BrowserAuthError;\r\n}(AuthError));\n\nexport { BrowserAuthError, BrowserAuthErrorMessage };\n","/*! @azure/msal-browser v2.32.2 2023-01-10 */\n'use strict';\nimport { __extends } from '../_virtual/_tslib.js';\nimport { AuthError } from '@azure/msal-common';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * BrowserAuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nvar BrowserConfigurationAuthErrorMessage = {\r\n redirectUriNotSet: {\r\n code: \"redirect_uri_empty\",\r\n desc: \"A redirect URI is required for all calls, and none has been set.\"\r\n },\r\n postLogoutUriNotSet: {\r\n code: \"post_logout_uri_empty\",\r\n desc: \"A post logout redirect has not been set.\"\r\n },\r\n storageNotSupportedError: {\r\n code: \"storage_not_supported\",\r\n desc: \"Given storage configuration option was not supported.\"\r\n },\r\n noRedirectCallbacksSet: {\r\n code: \"no_redirect_callbacks\",\r\n desc: \"No redirect callbacks have been set. Please call setRedirectCallbacks() with the appropriate function arguments before continuing. \" +\r\n \"More information is available here: https://github.com/AzureAD/microsoft-authentication-library-for-js/wiki/MSAL-basics.\"\r\n },\r\n invalidCallbackObject: {\r\n code: \"invalid_callback_object\",\r\n desc: \"The object passed for the callback was invalid. \" +\r\n \"More information is available here: https://github.com/AzureAD/microsoft-authentication-library-for-js/wiki/MSAL-basics.\"\r\n },\r\n stubPcaInstanceCalled: {\r\n code: \"stubbed_public_client_application_called\",\r\n desc: \"Stub instance of Public Client Application was called. If using msal-react, please ensure context is not used without a provider. For more visit: aka.ms/msaljs/browser-errors\"\r\n },\r\n inMemRedirectUnavailable: {\r\n code: \"in_mem_redirect_unavailable\",\r\n desc: \"Redirect cannot be supported. In-memory storage was selected and storeAuthStateInCookie=false, which would cause the library to be unable to handle the incoming hash. If you would like to use the redirect API, please use session/localStorage or set storeAuthStateInCookie=true.\"\r\n },\r\n entropyNotProvided: {\r\n code: \"entropy_not_provided\",\r\n desc: \"The available browser crypto interface requires entropy set via system.cryptoOptions.entropy configuration option.\"\r\n }\r\n};\r\n/**\r\n * Browser library error class thrown by the MSAL.js library for SPAs\r\n */\r\nvar BrowserConfigurationAuthError = /** @class */ (function (_super) {\r\n __extends(BrowserConfigurationAuthError, _super);\r\n function BrowserConfigurationAuthError(errorCode, errorMessage) {\r\n var _this = _super.call(this, errorCode, errorMessage) || this;\r\n _this.name = \"BrowserConfigurationAuthError\";\r\n Object.setPrototypeOf(_this, BrowserConfigurationAuthError.prototype);\r\n return _this;\r\n }\r\n /**\r\n * Creates an error thrown when the redirect uri is empty (not set by caller)\r\n */\r\n BrowserConfigurationAuthError.createRedirectUriEmptyError = function () {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.redirectUriNotSet.code, BrowserConfigurationAuthErrorMessage.redirectUriNotSet.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the post-logout redirect uri is empty (not set by caller)\r\n */\r\n BrowserConfigurationAuthError.createPostLogoutRedirectUriEmptyError = function () {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.postLogoutUriNotSet.code, BrowserConfigurationAuthErrorMessage.postLogoutUriNotSet.desc);\r\n };\r\n /**\r\n * Creates error thrown when given storage location is not supported.\r\n * @param givenStorageLocation\r\n */\r\n BrowserConfigurationAuthError.createStorageNotSupportedError = function (givenStorageLocation) {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.storageNotSupportedError.code, BrowserConfigurationAuthErrorMessage.storageNotSupportedError.desc + \" Given Location: \" + givenStorageLocation);\r\n };\r\n /**\r\n * Creates error thrown when redirect callbacks are not set before calling loginRedirect() or acquireTokenRedirect().\r\n */\r\n BrowserConfigurationAuthError.createRedirectCallbacksNotSetError = function () {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.noRedirectCallbacksSet.code, BrowserConfigurationAuthErrorMessage.noRedirectCallbacksSet.desc);\r\n };\r\n /**\r\n * Creates error thrown when the stub instance of PublicClientApplication is called.\r\n */\r\n BrowserConfigurationAuthError.createStubPcaInstanceCalledError = function () {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.stubPcaInstanceCalled.code, BrowserConfigurationAuthErrorMessage.stubPcaInstanceCalled.desc);\r\n };\r\n /*\r\n * Create an error thrown when in-memory storage is used and storeAuthStateInCookie=false.\r\n */\r\n BrowserConfigurationAuthError.createInMemoryRedirectUnavailableError = function () {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.inMemRedirectUnavailable.code, BrowserConfigurationAuthErrorMessage.inMemRedirectUnavailable.desc);\r\n };\r\n /**\r\n * Creates an error thrown when a crypto interface that requires entropy is initialized without entropy\r\n */\r\n BrowserConfigurationAuthError.createEntropyNotProvided = function () {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.entropyNotProvided.code, BrowserConfigurationAuthErrorMessage.entropyNotProvided.desc);\r\n };\r\n return BrowserConfigurationAuthError;\r\n}(AuthError));\n\nexport { BrowserConfigurationAuthError, BrowserConfigurationAuthErrorMessage };\n","/*! @azure/msal-browser v2.32.2 2023-01-10 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar EventType;\r\n(function (EventType) {\r\n EventType[\"INITIALIZE_START\"] = \"msal:initializeStart\";\r\n EventType[\"INITIALIZE_END\"] = \"msal:initializeEnd\";\r\n EventType[\"ACCOUNT_ADDED\"] = \"msal:accountAdded\";\r\n EventType[\"ACCOUNT_REMOVED\"] = \"msal:accountRemoved\";\r\n EventType[\"LOGIN_START\"] = \"msal:loginStart\";\r\n EventType[\"LOGIN_SUCCESS\"] = \"msal:loginSuccess\";\r\n EventType[\"LOGIN_FAILURE\"] = \"msal:loginFailure\";\r\n EventType[\"ACQUIRE_TOKEN_START\"] = \"msal:acquireTokenStart\";\r\n EventType[\"ACQUIRE_TOKEN_SUCCESS\"] = \"msal:acquireTokenSuccess\";\r\n EventType[\"ACQUIRE_TOKEN_FAILURE\"] = \"msal:acquireTokenFailure\";\r\n EventType[\"ACQUIRE_TOKEN_NETWORK_START\"] = \"msal:acquireTokenFromNetworkStart\";\r\n EventType[\"SSO_SILENT_START\"] = \"msal:ssoSilentStart\";\r\n EventType[\"SSO_SILENT_SUCCESS\"] = \"msal:ssoSilentSuccess\";\r\n EventType[\"SSO_SILENT_FAILURE\"] = \"msal:ssoSilentFailure\";\r\n EventType[\"ACQUIRE_TOKEN_BY_CODE_START\"] = \"msal:acquireTokenByCodeStart\";\r\n EventType[\"ACQUIRE_TOKEN_BY_CODE_SUCCESS\"] = \"msal:acquireTokenByCodeSuccess\";\r\n EventType[\"ACQUIRE_TOKEN_BY_CODE_FAILURE\"] = \"msal:acquireTokenByCodeFailure\";\r\n EventType[\"HANDLE_REDIRECT_START\"] = \"msal:handleRedirectStart\";\r\n EventType[\"HANDLE_REDIRECT_END\"] = \"msal:handleRedirectEnd\";\r\n EventType[\"POPUP_OPENED\"] = \"msal:popupOpened\";\r\n EventType[\"LOGOUT_START\"] = \"msal:logoutStart\";\r\n EventType[\"LOGOUT_SUCCESS\"] = \"msal:logoutSuccess\";\r\n EventType[\"LOGOUT_FAILURE\"] = \"msal:logoutFailure\";\r\n EventType[\"LOGOUT_END\"] = \"msal:logoutEnd\";\r\n})(EventType || (EventType = {}));\n\nexport { EventType };\n","/*! @azure/msal-browser v2.32.2 2023-01-10 */\n'use strict';\nimport { OIDC_DEFAULT_SCOPES } from '@azure/msal-common';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Constants\r\n */\r\nvar BrowserConstants = {\r\n /**\r\n * Interaction in progress cache value\r\n */\r\n INTERACTION_IN_PROGRESS_VALUE: \"interaction_in_progress\",\r\n /**\r\n * Invalid grant error code\r\n */\r\n INVALID_GRANT_ERROR: \"invalid_grant\",\r\n /**\r\n * Default popup window width\r\n */\r\n POPUP_WIDTH: 483,\r\n /**\r\n * Default popup window height\r\n */\r\n POPUP_HEIGHT: 600,\r\n /**\r\n * Name of the popup window starts with\r\n */\r\n POPUP_NAME_PREFIX: \"msal\",\r\n /**\r\n * Default popup monitor poll interval in milliseconds\r\n */\r\n DEFAULT_POLL_INTERVAL_MS: 30,\r\n /**\r\n * Msal-browser SKU\r\n */\r\n MSAL_SKU: \"msal.js.browser\",\r\n};\r\nvar NativeConstants = {\r\n CHANNEL_ID: \"53ee284d-920a-4b59-9d30-a60315b26836\",\r\n PREFERRED_EXTENSION_ID: \"ppnbnpeolgkicgegkbkbjmhlideopiji\",\r\n MATS_TELEMETRY: \"MATS\"\r\n};\r\nvar NativeExtensionMethod;\r\n(function (NativeExtensionMethod) {\r\n NativeExtensionMethod[\"HandshakeRequest\"] = \"Handshake\";\r\n NativeExtensionMethod[\"HandshakeResponse\"] = \"HandshakeResponse\";\r\n NativeExtensionMethod[\"GetToken\"] = \"GetToken\";\r\n NativeExtensionMethod[\"Response\"] = \"Response\";\r\n})(NativeExtensionMethod || (NativeExtensionMethod = {}));\r\nvar BrowserCacheLocation;\r\n(function (BrowserCacheLocation) {\r\n BrowserCacheLocation[\"LocalStorage\"] = \"localStorage\";\r\n BrowserCacheLocation[\"SessionStorage\"] = \"sessionStorage\";\r\n BrowserCacheLocation[\"MemoryStorage\"] = \"memoryStorage\";\r\n})(BrowserCacheLocation || (BrowserCacheLocation = {}));\r\n/**\r\n * HTTP Request types supported by MSAL.\r\n */\r\nvar HTTP_REQUEST_TYPE;\r\n(function (HTTP_REQUEST_TYPE) {\r\n HTTP_REQUEST_TYPE[\"GET\"] = \"GET\";\r\n HTTP_REQUEST_TYPE[\"POST\"] = \"POST\";\r\n})(HTTP_REQUEST_TYPE || (HTTP_REQUEST_TYPE = {}));\r\n/**\r\n * Temporary cache keys for MSAL, deleted after any request.\r\n */\r\nvar TemporaryCacheKeys;\r\n(function (TemporaryCacheKeys) {\r\n TemporaryCacheKeys[\"AUTHORITY\"] = \"authority\";\r\n TemporaryCacheKeys[\"ACQUIRE_TOKEN_ACCOUNT\"] = \"acquireToken.account\";\r\n TemporaryCacheKeys[\"SESSION_STATE\"] = \"session.state\";\r\n TemporaryCacheKeys[\"REQUEST_STATE\"] = \"request.state\";\r\n TemporaryCacheKeys[\"NONCE_IDTOKEN\"] = \"nonce.id_token\";\r\n TemporaryCacheKeys[\"ORIGIN_URI\"] = \"request.origin\";\r\n TemporaryCacheKeys[\"RENEW_STATUS\"] = \"token.renew.status\";\r\n TemporaryCacheKeys[\"URL_HASH\"] = \"urlHash\";\r\n TemporaryCacheKeys[\"REQUEST_PARAMS\"] = \"request.params\";\r\n TemporaryCacheKeys[\"SCOPES\"] = \"scopes\";\r\n TemporaryCacheKeys[\"INTERACTION_STATUS_KEY\"] = \"interaction.status\";\r\n TemporaryCacheKeys[\"CCS_CREDENTIAL\"] = \"ccs.credential\";\r\n TemporaryCacheKeys[\"CORRELATION_ID\"] = \"request.correlationId\";\r\n TemporaryCacheKeys[\"NATIVE_REQUEST\"] = \"request.native\";\r\n TemporaryCacheKeys[\"REDIRECT_CONTEXT\"] = \"request.redirect.context\";\r\n})(TemporaryCacheKeys || (TemporaryCacheKeys = {}));\r\n/**\r\n * Cache keys stored in-memory\r\n */\r\nvar InMemoryCacheKeys;\r\n(function (InMemoryCacheKeys) {\r\n InMemoryCacheKeys[\"WRAPPER_SKU\"] = \"wrapper.sku\";\r\n InMemoryCacheKeys[\"WRAPPER_VER\"] = \"wrapper.version\";\r\n})(InMemoryCacheKeys || (InMemoryCacheKeys = {}));\r\n/**\r\n * API Codes for Telemetry purposes.\r\n * Before adding a new code you must claim it in the MSAL Telemetry tracker as these number spaces are shared across all MSALs\r\n * 0-99 Silent Flow\r\n * 800-899 Auth Code Flow\r\n */\r\nvar ApiId;\r\n(function (ApiId) {\r\n ApiId[ApiId[\"acquireTokenRedirect\"] = 861] = \"acquireTokenRedirect\";\r\n ApiId[ApiId[\"acquireTokenPopup\"] = 862] = \"acquireTokenPopup\";\r\n ApiId[ApiId[\"ssoSilent\"] = 863] = \"ssoSilent\";\r\n ApiId[ApiId[\"acquireTokenSilent_authCode\"] = 864] = \"acquireTokenSilent_authCode\";\r\n ApiId[ApiId[\"handleRedirectPromise\"] = 865] = \"handleRedirectPromise\";\r\n ApiId[ApiId[\"acquireTokenByCode\"] = 866] = \"acquireTokenByCode\";\r\n ApiId[ApiId[\"acquireTokenSilent_silentFlow\"] = 61] = \"acquireTokenSilent_silentFlow\";\r\n ApiId[ApiId[\"logout\"] = 961] = \"logout\";\r\n ApiId[ApiId[\"logoutPopup\"] = 962] = \"logoutPopup\";\r\n})(ApiId || (ApiId = {}));\r\n/*\r\n * Interaction type of the API - used for state and telemetry\r\n */\r\nvar InteractionType;\r\n(function (InteractionType) {\r\n InteractionType[\"Redirect\"] = \"redirect\";\r\n InteractionType[\"Popup\"] = \"popup\";\r\n InteractionType[\"Silent\"] = \"silent\";\r\n InteractionType[\"None\"] = \"none\";\r\n})(InteractionType || (InteractionType = {}));\r\n/**\r\n * Types of interaction currently in progress.\r\n * Used in events in wrapper libraries to invoke functions when certain interaction is in progress or all interactions are complete.\r\n */\r\nvar InteractionStatus;\r\n(function (InteractionStatus) {\r\n /**\r\n * Initial status before interaction occurs\r\n */\r\n InteractionStatus[\"Startup\"] = \"startup\";\r\n /**\r\n * Status set when all login calls occuring\r\n */\r\n InteractionStatus[\"Login\"] = \"login\";\r\n /**\r\n * Status set when logout call occuring\r\n */\r\n InteractionStatus[\"Logout\"] = \"logout\";\r\n /**\r\n * Status set for acquireToken calls\r\n */\r\n InteractionStatus[\"AcquireToken\"] = \"acquireToken\";\r\n /**\r\n * Status set for ssoSilent calls\r\n */\r\n InteractionStatus[\"SsoSilent\"] = \"ssoSilent\";\r\n /**\r\n * Status set when handleRedirect in progress\r\n */\r\n InteractionStatus[\"HandleRedirect\"] = \"handleRedirect\";\r\n /**\r\n * Status set when interaction is complete\r\n */\r\n InteractionStatus[\"None\"] = \"none\";\r\n})(InteractionStatus || (InteractionStatus = {}));\r\nvar DEFAULT_REQUEST = {\r\n scopes: OIDC_DEFAULT_SCOPES\r\n};\r\n/**\r\n * JWK Key Format string (Type MUST be defined for window crypto APIs)\r\n */\r\nvar KEY_FORMAT_JWK = \"jwk\";\r\n// Supported wrapper SKUs\r\nvar WrapperSKU;\r\n(function (WrapperSKU) {\r\n WrapperSKU[\"React\"] = \"@azure/msal-react\";\r\n WrapperSKU[\"Angular\"] = \"@azure/msal-angular\";\r\n})(WrapperSKU || (WrapperSKU = {}));\r\n// DatabaseStorage Constants\r\nvar DB_NAME = \"msal.db\";\r\nvar DB_VERSION = 1;\r\nvar DB_TABLE_NAME = DB_NAME + \".keys\";\r\nvar CacheLookupPolicy;\r\n(function (CacheLookupPolicy) {\r\n /*\r\n * acquireTokenSilent will attempt to retrieve an access token from the cache. If the access token is expired\r\n * or cannot be found the refresh token will be used to acquire a new one. Finally, if the refresh token\r\n * is expired acquireTokenSilent will attempt to acquire new access and refresh tokens.\r\n */\r\n CacheLookupPolicy[CacheLookupPolicy[\"Default\"] = 0] = \"Default\";\r\n /*\r\n * acquireTokenSilent will only look for access tokens in the cache. It will not attempt to renew access or\r\n * refresh tokens.\r\n */\r\n CacheLookupPolicy[CacheLookupPolicy[\"AccessToken\"] = 1] = \"AccessToken\";\r\n /*\r\n * acquireTokenSilent will attempt to retrieve an access token from the cache. If the access token is expired or\r\n * cannot be found, the refresh token will be used to acquire a new one. If the refresh token is expired, it\r\n * will not be renewed and acquireTokenSilent will fail.\r\n */\r\n CacheLookupPolicy[CacheLookupPolicy[\"AccessTokenAndRefreshToken\"] = 2] = \"AccessTokenAndRefreshToken\";\r\n /*\r\n * acquireTokenSilent will not attempt to retrieve access tokens from the cache and will instead attempt to\r\n * exchange the cached refresh token for a new access token. If the refresh token is expired, it will not be\r\n * renewed and acquireTokenSilent will fail.\r\n */\r\n CacheLookupPolicy[CacheLookupPolicy[\"RefreshToken\"] = 3] = \"RefreshToken\";\r\n /*\r\n * acquireTokenSilent will not look in the cache for the access token. It will go directly to network with the\r\n * cached refresh token. If the refresh token is expired an attempt will be made to renew it. This is equivalent to\r\n * setting \"forceRefresh: true\".\r\n */\r\n CacheLookupPolicy[CacheLookupPolicy[\"RefreshTokenAndNetwork\"] = 4] = \"RefreshTokenAndNetwork\";\r\n /*\r\n * acquireTokenSilent will attempt to renew both access and refresh tokens. It will not look in the cache. This will\r\n * always fail if 3rd party cookies are blocked by the browser.\r\n */\r\n CacheLookupPolicy[CacheLookupPolicy[\"Skip\"] = 5] = \"Skip\";\r\n})(CacheLookupPolicy || (CacheLookupPolicy = {}));\n\nexport { ApiId, BrowserCacheLocation, BrowserConstants, CacheLookupPolicy, DB_NAME, DB_TABLE_NAME, DB_VERSION, DEFAULT_REQUEST, HTTP_REQUEST_TYPE, InMemoryCacheKeys, InteractionStatus, InteractionType, KEY_FORMAT_JWK, NativeConstants, NativeExtensionMethod, TemporaryCacheKeys, WrapperSKU };\n","/*! @azure/msal-browser v2.32.2 2023-01-10 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { Constants } from '@azure/msal-common';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { HTTP_REQUEST_TYPE } from '../utils/BrowserConstants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * This class implements the Fetch API for GET and POST requests. See more here: https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API\r\n */\r\nvar FetchClient = /** @class */ (function () {\r\n function FetchClient() {\r\n }\r\n /**\r\n * Fetch Client for REST endpoints - Get request\r\n * @param url\r\n * @param headers\r\n * @param body\r\n */\r\n FetchClient.prototype.sendGetRequestAsync = function (url, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response, e_1, _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n _b.trys.push([0, 2, , 3]);\r\n return [4 /*yield*/, fetch(url, {\r\n method: HTTP_REQUEST_TYPE.GET,\r\n headers: this.getFetchHeaders(options)\r\n })];\r\n case 1:\r\n response = _b.sent();\r\n return [3 /*break*/, 3];\r\n case 2:\r\n e_1 = _b.sent();\r\n if (window.navigator.onLine) {\r\n throw BrowserAuthError.createGetRequestFailedError(e_1, url);\r\n }\r\n else {\r\n throw BrowserAuthError.createNoNetworkConnectivityError();\r\n }\r\n case 3:\r\n _b.trys.push([3, 5, , 6]);\r\n _a = {\r\n headers: this.getHeaderDict(response.headers)\r\n };\r\n return [4 /*yield*/, response.json()];\r\n case 4: return [2 /*return*/, (_a.body = (_b.sent()),\r\n _a.status = response.status,\r\n _a)];\r\n case 5:\r\n _b.sent();\r\n throw BrowserAuthError.createFailedToParseNetworkResponseError(url);\r\n case 6: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Fetch Client for REST endpoints - Post request\r\n * @param url\r\n * @param headers\r\n * @param body\r\n */\r\n FetchClient.prototype.sendPostRequestAsync = function (url, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var reqBody, response, e_3, _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n reqBody = (options && options.body) || Constants.EMPTY_STRING;\r\n _b.label = 1;\r\n case 1:\r\n _b.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, fetch(url, {\r\n method: HTTP_REQUEST_TYPE.POST,\r\n headers: this.getFetchHeaders(options),\r\n body: reqBody\r\n })];\r\n case 2:\r\n response = _b.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n e_3 = _b.sent();\r\n if (window.navigator.onLine) {\r\n throw BrowserAuthError.createPostRequestFailedError(e_3, url);\r\n }\r\n else {\r\n throw BrowserAuthError.createNoNetworkConnectivityError();\r\n }\r\n case 4:\r\n _b.trys.push([4, 6, , 7]);\r\n _a = {\r\n headers: this.getHeaderDict(response.headers)\r\n };\r\n return [4 /*yield*/, response.json()];\r\n case 5: return [2 /*return*/, (_a.body = (_b.sent()),\r\n _a.status = response.status,\r\n _a)];\r\n case 6:\r\n _b.sent();\r\n throw BrowserAuthError.createFailedToParseNetworkResponseError(url);\r\n case 7: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Get Fetch API Headers object from string map\r\n * @param inputHeaders\r\n */\r\n FetchClient.prototype.getFetchHeaders = function (options) {\r\n var headers = new Headers();\r\n if (!(options && options.headers)) {\r\n return headers;\r\n }\r\n var optionsHeaders = options.headers;\r\n Object.keys(optionsHeaders).forEach(function (key) {\r\n headers.append(key, optionsHeaders[key]);\r\n });\r\n return headers;\r\n };\r\n FetchClient.prototype.getHeaderDict = function (headers) {\r\n var headerDict = {};\r\n headers.forEach(function (value, key) {\r\n headerDict[key] = value;\r\n });\r\n return headerDict;\r\n };\r\n return FetchClient;\r\n}());\n\nexport { FetchClient };\n","/*! @azure/msal-browser v2.32.2 2023-01-10 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { HTTP_REQUEST_TYPE } from '../utils/BrowserConstants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * This client implements the XMLHttpRequest class to send GET and POST requests.\r\n */\r\nvar XhrClient = /** @class */ (function () {\r\n function XhrClient() {\r\n }\r\n /**\r\n * XhrClient for REST endpoints - Get request\r\n * @param url\r\n * @param headers\r\n * @param body\r\n */\r\n XhrClient.prototype.sendGetRequestAsync = function (url, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, this.sendRequestAsync(url, HTTP_REQUEST_TYPE.GET, options)];\r\n });\r\n });\r\n };\r\n /**\r\n * XhrClient for REST endpoints - Post request\r\n * @param url\r\n * @param headers\r\n * @param body\r\n */\r\n XhrClient.prototype.sendPostRequestAsync = function (url, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, this.sendRequestAsync(url, HTTP_REQUEST_TYPE.POST, options)];\r\n });\r\n });\r\n };\r\n /**\r\n * Helper for XhrClient requests.\r\n * @param url\r\n * @param method\r\n * @param options\r\n */\r\n XhrClient.prototype.sendRequestAsync = function (url, method, options) {\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n var xhr = new XMLHttpRequest();\r\n xhr.open(method, url, /* async: */ true);\r\n _this.setXhrHeaders(xhr, options);\r\n xhr.onload = function () {\r\n if (xhr.status < 200 || xhr.status >= 300) {\r\n if (method === HTTP_REQUEST_TYPE.POST) {\r\n reject(BrowserAuthError.createPostRequestFailedError(\"Failed with status \" + xhr.status, url));\r\n }\r\n else {\r\n reject(BrowserAuthError.createGetRequestFailedError(\"Failed with status \" + xhr.status, url));\r\n }\r\n }\r\n try {\r\n var jsonResponse = JSON.parse(xhr.responseText);\r\n var networkResponse = {\r\n headers: _this.getHeaderDict(xhr),\r\n body: jsonResponse,\r\n status: xhr.status\r\n };\r\n resolve(networkResponse);\r\n }\r\n catch (e) {\r\n reject(BrowserAuthError.createFailedToParseNetworkResponseError(url));\r\n }\r\n };\r\n xhr.onerror = function () {\r\n if (window.navigator.onLine) {\r\n if (method === HTTP_REQUEST_TYPE.POST) {\r\n reject(BrowserAuthError.createPostRequestFailedError(\"Failed with status \" + xhr.status, url));\r\n }\r\n else {\r\n reject(BrowserAuthError.createGetRequestFailedError(\"Failed with status \" + xhr.status, url));\r\n }\r\n }\r\n else {\r\n reject(BrowserAuthError.createNoNetworkConnectivityError());\r\n }\r\n };\r\n if (method === HTTP_REQUEST_TYPE.POST && options && options.body) {\r\n xhr.send(options.body);\r\n }\r\n else if (method === HTTP_REQUEST_TYPE.GET) {\r\n xhr.send();\r\n }\r\n else {\r\n throw BrowserAuthError.createHttpMethodNotImplementedError(method);\r\n }\r\n });\r\n };\r\n /**\r\n * Helper to set XHR headers for request.\r\n * @param xhr\r\n * @param options\r\n */\r\n XhrClient.prototype.setXhrHeaders = function (xhr, options) {\r\n if (options && options.headers) {\r\n var headers_1 = options.headers;\r\n Object.keys(headers_1).forEach(function (key) {\r\n xhr.setRequestHeader(key, headers_1[key]);\r\n });\r\n }\r\n };\r\n /**\r\n * Gets a string map of the headers received in the response.\r\n *\r\n * Algorithm comes from https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/getAllResponseHeaders\r\n * @param xhr\r\n */\r\n XhrClient.prototype.getHeaderDict = function (xhr) {\r\n var headerString = xhr.getAllResponseHeaders();\r\n var headerArr = headerString.trim().split(/[\\r\\n]+/);\r\n var headerDict = {};\r\n headerArr.forEach(function (value) {\r\n var parts = value.split(\": \");\r\n var headerName = parts.shift();\r\n var headerVal = parts.join(\": \");\r\n if (headerName && headerVal) {\r\n headerDict[headerName] = headerVal;\r\n }\r\n });\r\n return headerDict;\r\n };\r\n return XhrClient;\r\n}());\n\nexport { XhrClient };\n","/*! @azure/msal-browser v2.32.2 2023-01-10 */\n'use strict';\nimport { Constants, UrlString } from '@azure/msal-common';\nimport { FetchClient } from '../network/FetchClient.js';\nimport { XhrClient } from '../network/XhrClient.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { BrowserConstants, InteractionType } from './BrowserConstants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Utility class for browser specific functions\r\n */\r\nvar BrowserUtils = /** @class */ (function () {\r\n function BrowserUtils() {\r\n }\r\n // #region Window Navigation and URL management\r\n /**\r\n * Clears hash from window url.\r\n */\r\n BrowserUtils.clearHash = function (contentWindow) {\r\n // Office.js sets history.replaceState to null\r\n contentWindow.location.hash = Constants.EMPTY_STRING;\r\n if (typeof contentWindow.history.replaceState === \"function\") {\r\n // Full removes \"#\" from url\r\n contentWindow.history.replaceState(null, Constants.EMPTY_STRING, \"\" + contentWindow.location.origin + contentWindow.location.pathname + contentWindow.location.search);\r\n }\r\n };\r\n /**\r\n * Replaces current hash with hash from provided url\r\n */\r\n BrowserUtils.replaceHash = function (url) {\r\n var urlParts = url.split(\"#\");\r\n urlParts.shift(); // Remove part before the hash\r\n window.location.hash = urlParts.length > 0 ? urlParts.join(\"#\") : Constants.EMPTY_STRING;\r\n };\r\n /**\r\n * Returns boolean of whether the current window is in an iframe or not.\r\n */\r\n BrowserUtils.isInIframe = function () {\r\n return window.parent !== window;\r\n };\r\n /**\r\n * Returns boolean of whether or not the current window is a popup opened by msal\r\n */\r\n BrowserUtils.isInPopup = function () {\r\n return typeof window !== \"undefined\" && !!window.opener &&\r\n window.opener !== window &&\r\n typeof window.name === \"string\" &&\r\n window.name.indexOf(BrowserConstants.POPUP_NAME_PREFIX + \".\") === 0;\r\n };\r\n // #endregion\r\n /**\r\n * Returns current window URL as redirect uri\r\n */\r\n BrowserUtils.getCurrentUri = function () {\r\n return window.location.href.split(\"?\")[0].split(\"#\")[0];\r\n };\r\n /**\r\n * Gets the homepage url for the current window location.\r\n */\r\n BrowserUtils.getHomepage = function () {\r\n var currentUrl = new UrlString(window.location.href);\r\n var urlComponents = currentUrl.getUrlComponents();\r\n return urlComponents.Protocol + \"//\" + urlComponents.HostNameAndPort + \"/\";\r\n };\r\n /**\r\n * Returns best compatible network client object.\r\n */\r\n BrowserUtils.getBrowserNetworkClient = function () {\r\n if (window.fetch && window.Headers) {\r\n return new FetchClient();\r\n }\r\n else {\r\n return new XhrClient();\r\n }\r\n };\r\n /**\r\n * Throws error if we have completed an auth and are\r\n * attempting another auth request inside an iframe.\r\n */\r\n BrowserUtils.blockReloadInHiddenIframes = function () {\r\n var isResponseHash = UrlString.hashContainsKnownProperties(window.location.hash);\r\n // return an error if called from the hidden iframe created by the msal js silent calls\r\n if (isResponseHash && BrowserUtils.isInIframe()) {\r\n throw BrowserAuthError.createBlockReloadInHiddenIframeError();\r\n }\r\n };\r\n /**\r\n * Block redirect operations in iframes unless explicitly allowed\r\n * @param interactionType Interaction type for the request\r\n * @param allowRedirectInIframe Config value to allow redirects when app is inside an iframe\r\n */\r\n BrowserUtils.blockRedirectInIframe = function (interactionType, allowRedirectInIframe) {\r\n var isIframedApp = BrowserUtils.isInIframe();\r\n if (interactionType === InteractionType.Redirect && isIframedApp && !allowRedirectInIframe) {\r\n // If we are not in top frame, we shouldn't redirect. This is also handled by the service.\r\n throw BrowserAuthError.createRedirectInIframeError(isIframedApp);\r\n }\r\n };\r\n /**\r\n * Block redirectUri loaded in popup from calling AcquireToken APIs\r\n */\r\n BrowserUtils.blockAcquireTokenInPopups = function () {\r\n // Popups opened by msal popup APIs are given a name that starts with \"msal.\"\r\n if (BrowserUtils.isInPopup()) {\r\n throw BrowserAuthError.createBlockAcquireTokenInPopupsError();\r\n }\r\n };\r\n /**\r\n * Throws error if token requests are made in non-browser environment\r\n * @param isBrowserEnvironment Flag indicating if environment is a browser.\r\n */\r\n BrowserUtils.blockNonBrowserEnvironment = function (isBrowserEnvironment) {\r\n if (!isBrowserEnvironment) {\r\n throw BrowserAuthError.createNonBrowserEnvironmentError();\r\n }\r\n };\r\n /**\r\n * Throws error if native brokering is enabled but initialize hasn't been called\r\n * @param allowNativeBroker\r\n * @param initialized\r\n */\r\n BrowserUtils.blockNativeBrokerCalledBeforeInitialized = function (allowNativeBroker, initialized) {\r\n if (allowNativeBroker && !initialized) {\r\n throw BrowserAuthError.createNativeBrokerCalledBeforeInitialize();\r\n }\r\n };\r\n /**\r\n * Returns boolean of whether current browser is an Internet Explorer or Edge browser.\r\n */\r\n BrowserUtils.detectIEOrEdge = function () {\r\n var ua = window.navigator.userAgent;\r\n var msie = ua.indexOf(\"MSIE \");\r\n var msie11 = ua.indexOf(\"Trident/\");\r\n var msedge = ua.indexOf(\"Edge/\");\r\n var isIE = msie > 0 || msie11 > 0;\r\n var isEdge = msedge > 0;\r\n return isIE || isEdge;\r\n };\r\n return BrowserUtils;\r\n}());\n\nexport { BrowserUtils };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nfunction __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\n\nexport { __assign, __awaiter, __extends, __generator, __spreadArrays };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\nimport { __extends } from '../_virtual/_tslib.js';\nimport { Constants } from '../utils/Constants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * AuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nvar AuthErrorMessage = {\r\n unexpectedError: {\r\n code: \"unexpected_error\",\r\n desc: \"Unexpected error in authentication.\"\r\n },\r\n postRequestFailed: {\r\n code: \"post_request_failed\",\r\n desc: \"Post request failed from the network, could be a 4xx/5xx or a network unavailability. Please check the exact error code for details.\"\r\n }\r\n};\r\n/**\r\n * General error class thrown by the MSAL.js library.\r\n */\r\nvar AuthError = /** @class */ (function (_super) {\r\n __extends(AuthError, _super);\r\n function AuthError(errorCode, errorMessage, suberror) {\r\n var _this = this;\r\n var errorString = errorMessage ? errorCode + \": \" + errorMessage : errorCode;\r\n _this = _super.call(this, errorString) || this;\r\n Object.setPrototypeOf(_this, AuthError.prototype);\r\n _this.errorCode = errorCode || Constants.EMPTY_STRING;\r\n _this.errorMessage = errorMessage || Constants.EMPTY_STRING;\r\n _this.subError = suberror || Constants.EMPTY_STRING;\r\n _this.name = \"AuthError\";\r\n return _this;\r\n }\r\n AuthError.prototype.setCorrelationId = function (correlationId) {\r\n this.correlationId = correlationId;\r\n };\r\n /**\r\n * Creates an error that is thrown when something unexpected happens in the library.\r\n * @param errDesc\r\n */\r\n AuthError.createUnexpectedError = function (errDesc) {\r\n return new AuthError(AuthErrorMessage.unexpectedError.code, AuthErrorMessage.unexpectedError.desc + \": \" + errDesc);\r\n };\r\n /**\r\n * Creates an error for post request failures.\r\n * @param errDesc\r\n * @returns\r\n */\r\n AuthError.createPostRequestFailed = function (errDesc) {\r\n return new AuthError(AuthErrorMessage.postRequestFailed.code, AuthErrorMessage.postRequestFailed.desc + \": \" + errDesc);\r\n };\r\n return AuthError;\r\n}(Error));\n\nexport { AuthError, AuthErrorMessage };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\nimport { __extends } from '../_virtual/_tslib.js';\nimport { AuthError } from './AuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * ClientAuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nvar ClientAuthErrorMessage = {\r\n clientInfoDecodingError: {\r\n code: \"client_info_decoding_error\",\r\n desc: \"The client info could not be parsed/decoded correctly. Please review the trace to determine the root cause.\"\r\n },\r\n clientInfoEmptyError: {\r\n code: \"client_info_empty_error\",\r\n desc: \"The client info was empty. Please review the trace to determine the root cause.\"\r\n },\r\n tokenParsingError: {\r\n code: \"token_parsing_error\",\r\n desc: \"Token cannot be parsed. Please review stack trace to determine root cause.\"\r\n },\r\n nullOrEmptyToken: {\r\n code: \"null_or_empty_token\",\r\n desc: \"The token is null or empty. Please review the trace to determine the root cause.\"\r\n },\r\n endpointResolutionError: {\r\n code: \"endpoints_resolution_error\",\r\n desc: \"Error: could not resolve endpoints. Please check network and try again.\"\r\n },\r\n networkError: {\r\n code: \"network_error\",\r\n desc: \"Network request failed. Please check network trace to determine root cause.\"\r\n },\r\n unableToGetOpenidConfigError: {\r\n code: \"openid_config_error\",\r\n desc: \"Could not retrieve endpoints. Check your authority and verify the .well-known/openid-configuration endpoint returns the required endpoints.\"\r\n },\r\n hashNotDeserialized: {\r\n code: \"hash_not_deserialized\",\r\n desc: \"The hash parameters could not be deserialized. Please review the trace to determine the root cause.\"\r\n },\r\n blankGuidGenerated: {\r\n code: \"blank_guid_generated\",\r\n desc: \"The guid generated was blank. Please review the trace to determine the root cause.\"\r\n },\r\n invalidStateError: {\r\n code: \"invalid_state\",\r\n desc: \"State was not the expected format. Please check the logs to determine whether the request was sent using ProtocolUtils.setRequestState().\"\r\n },\r\n stateMismatchError: {\r\n code: \"state_mismatch\",\r\n desc: \"State mismatch error. Please check your network. Continued requests may cause cache overflow.\"\r\n },\r\n stateNotFoundError: {\r\n code: \"state_not_found\",\r\n desc: \"State not found\"\r\n },\r\n nonceMismatchError: {\r\n code: \"nonce_mismatch\",\r\n desc: \"Nonce mismatch error. This may be caused by a race condition in concurrent requests.\"\r\n },\r\n nonceNotFoundError: {\r\n code: \"nonce_not_found\",\r\n desc: \"nonce not found\"\r\n },\r\n authTimeNotFoundError: {\r\n code: \"auth_time_not_found\",\r\n desc: \"Max Age was requested and the ID token is missing the auth_time variable.\" +\r\n \" auth_time is an optional claim and is not enabled by default - it must be enabled.\" +\r\n \" See https://aka.ms/msaljs/optional-claims for more information.\"\r\n },\r\n maxAgeTranspiredError: {\r\n code: \"max_age_transpired\",\r\n desc: \"Max Age is set to 0, or too much time has elapsed since the last end-user authentication.\"\r\n },\r\n noTokensFoundError: {\r\n code: \"no_tokens_found\",\r\n desc: \"No tokens were found for the given scopes, and no authorization code was passed to acquireToken. You must retrieve an authorization code before making a call to acquireToken().\"\r\n },\r\n multipleMatchingTokens: {\r\n code: \"multiple_matching_tokens\",\r\n desc: \"The cache contains multiple tokens satisfying the requirements. \" +\r\n \"Call AcquireToken again providing more requirements such as authority or account.\"\r\n },\r\n multipleMatchingAccounts: {\r\n code: \"multiple_matching_accounts\",\r\n desc: \"The cache contains multiple accounts satisfying the given parameters. Please pass more info to obtain the correct account\"\r\n },\r\n multipleMatchingAppMetadata: {\r\n code: \"multiple_matching_appMetadata\",\r\n desc: \"The cache contains multiple appMetadata satisfying the given parameters. Please pass more info to obtain the correct appMetadata\"\r\n },\r\n tokenRequestCannotBeMade: {\r\n code: \"request_cannot_be_made\",\r\n desc: \"Token request cannot be made without authorization code or refresh token.\"\r\n },\r\n appendEmptyScopeError: {\r\n code: \"cannot_append_empty_scope\",\r\n desc: \"Cannot append null or empty scope to ScopeSet. Please check the stack trace for more info.\"\r\n },\r\n removeEmptyScopeError: {\r\n code: \"cannot_remove_empty_scope\",\r\n desc: \"Cannot remove null or empty scope from ScopeSet. Please check the stack trace for more info.\"\r\n },\r\n appendScopeSetError: {\r\n code: \"cannot_append_scopeset\",\r\n desc: \"Cannot append ScopeSet due to error.\"\r\n },\r\n emptyInputScopeSetError: {\r\n code: \"empty_input_scopeset\",\r\n desc: \"Empty input ScopeSet cannot be processed.\"\r\n },\r\n DeviceCodePollingCancelled: {\r\n code: \"device_code_polling_cancelled\",\r\n desc: \"Caller has cancelled token endpoint polling during device code flow by setting DeviceCodeRequest.cancel = true.\"\r\n },\r\n DeviceCodeExpired: {\r\n code: \"device_code_expired\",\r\n desc: \"Device code is expired.\"\r\n },\r\n DeviceCodeUnknownError: {\r\n code: \"device_code_unknown_error\",\r\n desc: \"Device code stopped polling for unknown reasons.\"\r\n },\r\n NoAccountInSilentRequest: {\r\n code: \"no_account_in_silent_request\",\r\n desc: \"Please pass an account object, silent flow is not supported without account information\"\r\n },\r\n invalidCacheRecord: {\r\n code: \"invalid_cache_record\",\r\n desc: \"Cache record object was null or undefined.\"\r\n },\r\n invalidCacheEnvironment: {\r\n code: \"invalid_cache_environment\",\r\n desc: \"Invalid environment when attempting to create cache entry\"\r\n },\r\n noAccountFound: {\r\n code: \"no_account_found\",\r\n desc: \"No account found in cache for given key.\"\r\n },\r\n CachePluginError: {\r\n code: \"no cache plugin set on CacheManager\",\r\n desc: \"ICachePlugin needs to be set before using readFromStorage or writeFromStorage\"\r\n },\r\n noCryptoObj: {\r\n code: \"no_crypto_object\",\r\n desc: \"No crypto object detected. This is required for the following operation: \"\r\n },\r\n invalidCacheType: {\r\n code: \"invalid_cache_type\",\r\n desc: \"Invalid cache type\"\r\n },\r\n unexpectedAccountType: {\r\n code: \"unexpected_account_type\",\r\n desc: \"Unexpected account type.\"\r\n },\r\n unexpectedCredentialType: {\r\n code: \"unexpected_credential_type\",\r\n desc: \"Unexpected credential type.\"\r\n },\r\n invalidAssertion: {\r\n code: \"invalid_assertion\",\r\n desc: \"Client assertion must meet requirements described in https://tools.ietf.org/html/rfc7515\"\r\n },\r\n invalidClientCredential: {\r\n code: \"invalid_client_credential\",\r\n desc: \"Client credential (secret, certificate, or assertion) must not be empty when creating a confidential client. An application should at most have one credential\"\r\n },\r\n tokenRefreshRequired: {\r\n code: \"token_refresh_required\",\r\n desc: \"Cannot return token from cache because it must be refreshed. This may be due to one of the following reasons: forceRefresh parameter is set to true, claims have been requested, there is no cached access token or it is expired.\"\r\n },\r\n userTimeoutReached: {\r\n code: \"user_timeout_reached\",\r\n desc: \"User defined timeout for device code polling reached\",\r\n },\r\n tokenClaimsRequired: {\r\n code: \"token_claims_cnf_required_for_signedjwt\",\r\n desc: \"Cannot generate a POP jwt if the token_claims are not populated\"\r\n },\r\n noAuthorizationCodeFromServer: {\r\n code: \"authorization_code_missing_from_server_response\",\r\n desc: \"Server response does not contain an authorization code to proceed\"\r\n },\r\n noAzureRegionDetected: {\r\n code: \"no_azure_region_detected\",\r\n desc: \"No azure region was detected and no fallback was made available\"\r\n },\r\n accessTokenEntityNullError: {\r\n code: \"access_token_entity_null\",\r\n desc: \"Access token entity is null, please check logs and cache to ensure a valid access token is present.\"\r\n },\r\n bindingKeyNotRemovedError: {\r\n code: \"binding_key_not_removed\",\r\n desc: \"Could not remove the credential's binding key from storage.\"\r\n },\r\n logoutNotSupported: {\r\n code: \"end_session_endpoint_not_supported\",\r\n desc: \"Provided authority does not support logout.\"\r\n },\r\n keyIdMissing: {\r\n code: \"key_id_missing\",\r\n desc: \"A keyId value is missing from the requested bound token's cache record and is required to match the token to it's stored binding key.\"\r\n }\r\n};\r\n/**\r\n * Error thrown when there is an error in the client code running on the browser.\r\n */\r\nvar ClientAuthError = /** @class */ (function (_super) {\r\n __extends(ClientAuthError, _super);\r\n function ClientAuthError(errorCode, errorMessage) {\r\n var _this = _super.call(this, errorCode, errorMessage) || this;\r\n _this.name = \"ClientAuthError\";\r\n Object.setPrototypeOf(_this, ClientAuthError.prototype);\r\n return _this;\r\n }\r\n /**\r\n * Creates an error thrown when client info object doesn't decode correctly.\r\n * @param caughtError\r\n */\r\n ClientAuthError.createClientInfoDecodingError = function (caughtError) {\r\n return new ClientAuthError(ClientAuthErrorMessage.clientInfoDecodingError.code, ClientAuthErrorMessage.clientInfoDecodingError.desc + \" Failed with error: \" + caughtError);\r\n };\r\n /**\r\n * Creates an error thrown if the client info is empty.\r\n * @param rawClientInfo\r\n */\r\n ClientAuthError.createClientInfoEmptyError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.clientInfoEmptyError.code, \"\" + ClientAuthErrorMessage.clientInfoEmptyError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the id token extraction errors out.\r\n * @param err\r\n */\r\n ClientAuthError.createTokenParsingError = function (caughtExtractionError) {\r\n return new ClientAuthError(ClientAuthErrorMessage.tokenParsingError.code, ClientAuthErrorMessage.tokenParsingError.desc + \" Failed with error: \" + caughtExtractionError);\r\n };\r\n /**\r\n * Creates an error thrown when the id token string is null or empty.\r\n * @param invalidRawTokenString\r\n */\r\n ClientAuthError.createTokenNullOrEmptyError = function (invalidRawTokenString) {\r\n return new ClientAuthError(ClientAuthErrorMessage.nullOrEmptyToken.code, ClientAuthErrorMessage.nullOrEmptyToken.desc + \" Raw Token Value: \" + invalidRawTokenString);\r\n };\r\n /**\r\n * Creates an error thrown when the endpoint discovery doesn't complete correctly.\r\n */\r\n ClientAuthError.createEndpointDiscoveryIncompleteError = function (errDetail) {\r\n return new ClientAuthError(ClientAuthErrorMessage.endpointResolutionError.code, ClientAuthErrorMessage.endpointResolutionError.desc + \" Detail: \" + errDetail);\r\n };\r\n /**\r\n * Creates an error thrown when the fetch client throws\r\n */\r\n ClientAuthError.createNetworkError = function (endpoint, errDetail) {\r\n return new ClientAuthError(ClientAuthErrorMessage.networkError.code, ClientAuthErrorMessage.networkError.desc + \" | Fetch client threw: \" + errDetail + \" | Attempted to reach: \" + endpoint.split(\"?\")[0]);\r\n };\r\n /**\r\n * Creates an error thrown when the openid-configuration endpoint cannot be reached or does not contain the required data\r\n */\r\n ClientAuthError.createUnableToGetOpenidConfigError = function (errDetail) {\r\n return new ClientAuthError(ClientAuthErrorMessage.unableToGetOpenidConfigError.code, ClientAuthErrorMessage.unableToGetOpenidConfigError.desc + \" Attempted to retrieve endpoints from: \" + errDetail);\r\n };\r\n /**\r\n * Creates an error thrown when the hash cannot be deserialized.\r\n * @param hashParamObj\r\n */\r\n ClientAuthError.createHashNotDeserializedError = function (hashParamObj) {\r\n return new ClientAuthError(ClientAuthErrorMessage.hashNotDeserialized.code, ClientAuthErrorMessage.hashNotDeserialized.desc + \" Given Object: \" + hashParamObj);\r\n };\r\n /**\r\n * Creates an error thrown when the state cannot be parsed.\r\n * @param invalidState\r\n */\r\n ClientAuthError.createInvalidStateError = function (invalidState, errorString) {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidStateError.code, ClientAuthErrorMessage.invalidStateError.desc + \" Invalid State: \" + invalidState + \", Root Err: \" + errorString);\r\n };\r\n /**\r\n * Creates an error thrown when two states do not match.\r\n */\r\n ClientAuthError.createStateMismatchError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.stateMismatchError.code, ClientAuthErrorMessage.stateMismatchError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the state is not present\r\n * @param missingState\r\n */\r\n ClientAuthError.createStateNotFoundError = function (missingState) {\r\n return new ClientAuthError(ClientAuthErrorMessage.stateNotFoundError.code, ClientAuthErrorMessage.stateNotFoundError.desc + \": \" + missingState);\r\n };\r\n /**\r\n * Creates an error thrown when the nonce does not match.\r\n */\r\n ClientAuthError.createNonceMismatchError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.nonceMismatchError.code, ClientAuthErrorMessage.nonceMismatchError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when max_age was provided in the request, but auth_time is not in the token claims\r\n * @param missingNonce\r\n */\r\n ClientAuthError.createAuthTimeNotFoundError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.authTimeNotFoundError.code, ClientAuthErrorMessage.authTimeNotFoundError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when too much time has elapsed since the last end-user authentication\r\n */\r\n ClientAuthError.createMaxAgeTranspiredError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.maxAgeTranspiredError.code, ClientAuthErrorMessage.maxAgeTranspiredError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the mnonce is not present\r\n * @param missingNonce\r\n */\r\n ClientAuthError.createNonceNotFoundError = function (missingNonce) {\r\n return new ClientAuthError(ClientAuthErrorMessage.nonceNotFoundError.code, ClientAuthErrorMessage.nonceNotFoundError.desc + \": \" + missingNonce);\r\n };\r\n /**\r\n * Throws error when multiple tokens are in cache.\r\n */\r\n ClientAuthError.createMultipleMatchingTokensInCacheError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.multipleMatchingTokens.code, ClientAuthErrorMessage.multipleMatchingTokens.desc + \".\");\r\n };\r\n /**\r\n * Throws error when multiple accounts are in cache for the given params\r\n */\r\n ClientAuthError.createMultipleMatchingAccountsInCacheError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.multipleMatchingAccounts.code, ClientAuthErrorMessage.multipleMatchingAccounts.desc);\r\n };\r\n /**\r\n * Throws error when multiple appMetada are in cache for the given clientId.\r\n */\r\n ClientAuthError.createMultipleMatchingAppMetadataInCacheError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.multipleMatchingAppMetadata.code, ClientAuthErrorMessage.multipleMatchingAppMetadata.desc);\r\n };\r\n /**\r\n * Throws error when no auth code or refresh token is given to ServerTokenRequestParameters.\r\n */\r\n ClientAuthError.createTokenRequestCannotBeMadeError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.tokenRequestCannotBeMade.code, ClientAuthErrorMessage.tokenRequestCannotBeMade.desc);\r\n };\r\n /**\r\n * Throws error when attempting to append a null, undefined or empty scope to a set\r\n * @param givenScope\r\n */\r\n ClientAuthError.createAppendEmptyScopeToSetError = function (givenScope) {\r\n return new ClientAuthError(ClientAuthErrorMessage.appendEmptyScopeError.code, ClientAuthErrorMessage.appendEmptyScopeError.desc + \" Given Scope: \" + givenScope);\r\n };\r\n /**\r\n * Throws error when attempting to append a null, undefined or empty scope to a set\r\n * @param givenScope\r\n */\r\n ClientAuthError.createRemoveEmptyScopeFromSetError = function (givenScope) {\r\n return new ClientAuthError(ClientAuthErrorMessage.removeEmptyScopeError.code, ClientAuthErrorMessage.removeEmptyScopeError.desc + \" Given Scope: \" + givenScope);\r\n };\r\n /**\r\n * Throws error when attempting to append null or empty ScopeSet.\r\n * @param appendError\r\n */\r\n ClientAuthError.createAppendScopeSetError = function (appendError) {\r\n return new ClientAuthError(ClientAuthErrorMessage.appendScopeSetError.code, ClientAuthErrorMessage.appendScopeSetError.desc + \" Detail Error: \" + appendError);\r\n };\r\n /**\r\n * Throws error if ScopeSet is null or undefined.\r\n * @param givenScopeSet\r\n */\r\n ClientAuthError.createEmptyInputScopeSetError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.emptyInputScopeSetError.code, \"\" + ClientAuthErrorMessage.emptyInputScopeSetError.desc);\r\n };\r\n /**\r\n * Throws error if user sets CancellationToken.cancel = true during polling of token endpoint during device code flow\r\n */\r\n ClientAuthError.createDeviceCodeCancelledError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.DeviceCodePollingCancelled.code, \"\" + ClientAuthErrorMessage.DeviceCodePollingCancelled.desc);\r\n };\r\n /**\r\n * Throws error if device code is expired\r\n */\r\n ClientAuthError.createDeviceCodeExpiredError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.DeviceCodeExpired.code, \"\" + ClientAuthErrorMessage.DeviceCodeExpired.desc);\r\n };\r\n /**\r\n * Throws error if device code is expired\r\n */\r\n ClientAuthError.createDeviceCodeUnknownError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.DeviceCodeUnknownError.code, \"\" + ClientAuthErrorMessage.DeviceCodeUnknownError.desc);\r\n };\r\n /**\r\n * Throws error when silent requests are made without an account object\r\n */\r\n ClientAuthError.createNoAccountInSilentRequestError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.NoAccountInSilentRequest.code, \"\" + ClientAuthErrorMessage.NoAccountInSilentRequest.desc);\r\n };\r\n /**\r\n * Throws error when cache record is null or undefined.\r\n */\r\n ClientAuthError.createNullOrUndefinedCacheRecord = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidCacheRecord.code, ClientAuthErrorMessage.invalidCacheRecord.desc);\r\n };\r\n /**\r\n * Throws error when provided environment is not part of the CloudDiscoveryMetadata object\r\n */\r\n ClientAuthError.createInvalidCacheEnvironmentError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidCacheEnvironment.code, ClientAuthErrorMessage.invalidCacheEnvironment.desc);\r\n };\r\n /**\r\n * Throws error when account is not found in cache.\r\n */\r\n ClientAuthError.createNoAccountFoundError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.noAccountFound.code, ClientAuthErrorMessage.noAccountFound.desc);\r\n };\r\n /**\r\n * Throws error if ICachePlugin not set on CacheManager.\r\n */\r\n ClientAuthError.createCachePluginError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.CachePluginError.code, \"\" + ClientAuthErrorMessage.CachePluginError.desc);\r\n };\r\n /**\r\n * Throws error if crypto object not found.\r\n * @param operationName\r\n */\r\n ClientAuthError.createNoCryptoObjectError = function (operationName) {\r\n return new ClientAuthError(ClientAuthErrorMessage.noCryptoObj.code, \"\" + ClientAuthErrorMessage.noCryptoObj.desc + operationName);\r\n };\r\n /**\r\n * Throws error if cache type is invalid.\r\n */\r\n ClientAuthError.createInvalidCacheTypeError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidCacheType.code, \"\" + ClientAuthErrorMessage.invalidCacheType.desc);\r\n };\r\n /**\r\n * Throws error if unexpected account type.\r\n */\r\n ClientAuthError.createUnexpectedAccountTypeError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.unexpectedAccountType.code, \"\" + ClientAuthErrorMessage.unexpectedAccountType.desc);\r\n };\r\n /**\r\n * Throws error if unexpected credential type.\r\n */\r\n ClientAuthError.createUnexpectedCredentialTypeError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.unexpectedCredentialType.code, \"\" + ClientAuthErrorMessage.unexpectedCredentialType.desc);\r\n };\r\n /**\r\n * Throws error if client assertion is not valid.\r\n */\r\n ClientAuthError.createInvalidAssertionError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidAssertion.code, \"\" + ClientAuthErrorMessage.invalidAssertion.desc);\r\n };\r\n /**\r\n * Throws error if client assertion is not valid.\r\n */\r\n ClientAuthError.createInvalidCredentialError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidClientCredential.code, \"\" + ClientAuthErrorMessage.invalidClientCredential.desc);\r\n };\r\n /**\r\n * Throws error if token cannot be retrieved from cache due to refresh being required.\r\n */\r\n ClientAuthError.createRefreshRequiredError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.tokenRefreshRequired.code, ClientAuthErrorMessage.tokenRefreshRequired.desc);\r\n };\r\n /**\r\n * Throws error if the user defined timeout is reached.\r\n */\r\n ClientAuthError.createUserTimeoutReachedError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.userTimeoutReached.code, ClientAuthErrorMessage.userTimeoutReached.desc);\r\n };\r\n /*\r\n * Throws error if token claims are not populated for a signed jwt generation\r\n */\r\n ClientAuthError.createTokenClaimsRequiredError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.tokenClaimsRequired.code, ClientAuthErrorMessage.tokenClaimsRequired.desc);\r\n };\r\n /**\r\n * Throws error when the authorization code is missing from the server response\r\n */\r\n ClientAuthError.createNoAuthCodeInServerResponseError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.noAuthorizationCodeFromServer.code, ClientAuthErrorMessage.noAuthorizationCodeFromServer.desc);\r\n };\r\n ClientAuthError.createBindingKeyNotRemovedError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.bindingKeyNotRemovedError.code, ClientAuthErrorMessage.bindingKeyNotRemovedError.desc);\r\n };\r\n /**\r\n * Thrown when logout is attempted for an authority that doesnt have an end_session_endpoint\r\n */\r\n ClientAuthError.createLogoutNotSupportedError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.logoutNotSupported.code, ClientAuthErrorMessage.logoutNotSupported.desc);\r\n };\r\n /**\r\n * Create an error when kid attribute is missing from a PoP token's cache record\r\n */\r\n ClientAuthError.createKeyIdMissingError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.keyIdMissing.code, ClientAuthErrorMessage.keyIdMissing.desc);\r\n };\r\n return ClientAuthError;\r\n}(AuthError));\n\nexport { ClientAuthError, ClientAuthErrorMessage };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\nimport { __extends } from '../_virtual/_tslib.js';\nimport { ClientAuthError } from './ClientAuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * ClientConfigurationErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nvar ClientConfigurationErrorMessage = {\r\n redirectUriNotSet: {\r\n code: \"redirect_uri_empty\",\r\n desc: \"A redirect URI is required for all calls, and none has been set.\"\r\n },\r\n postLogoutUriNotSet: {\r\n code: \"post_logout_uri_empty\",\r\n desc: \"A post logout redirect has not been set.\"\r\n },\r\n claimsRequestParsingError: {\r\n code: \"claims_request_parsing_error\",\r\n desc: \"Could not parse the given claims request object.\"\r\n },\r\n authorityUriInsecure: {\r\n code: \"authority_uri_insecure\",\r\n desc: \"Authority URIs must use https. Please see here for valid authority configuration options: https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-js-initializing-client-applications#configuration-options\"\r\n },\r\n urlParseError: {\r\n code: \"url_parse_error\",\r\n desc: \"URL could not be parsed into appropriate segments.\"\r\n },\r\n urlEmptyError: {\r\n code: \"empty_url_error\",\r\n desc: \"URL was empty or null.\"\r\n },\r\n emptyScopesError: {\r\n code: \"empty_input_scopes_error\",\r\n desc: \"Scopes cannot be passed as null, undefined or empty array because they are required to obtain an access token.\"\r\n },\r\n nonArrayScopesError: {\r\n code: \"nonarray_input_scopes_error\",\r\n desc: \"Scopes cannot be passed as non-array.\"\r\n },\r\n clientIdSingleScopeError: {\r\n code: \"clientid_input_scopes_error\",\r\n desc: \"Client ID can only be provided as a single scope.\"\r\n },\r\n invalidPrompt: {\r\n code: \"invalid_prompt_value\",\r\n desc: \"Supported prompt values are 'login', 'select_account', 'consent', 'create', 'none' and 'no_session'. Please see here for valid configuration options: https://azuread.github.io/microsoft-authentication-library-for-js/ref/modules/_azure_msal_common.html#commonauthorizationurlrequest\",\r\n },\r\n invalidClaimsRequest: {\r\n code: \"invalid_claims\",\r\n desc: \"Given claims parameter must be a stringified JSON object.\"\r\n },\r\n tokenRequestEmptyError: {\r\n code: \"token_request_empty\",\r\n desc: \"Token request was empty and not found in cache.\"\r\n },\r\n logoutRequestEmptyError: {\r\n code: \"logout_request_empty\",\r\n desc: \"The logout request was null or undefined.\"\r\n },\r\n invalidCodeChallengeMethod: {\r\n code: \"invalid_code_challenge_method\",\r\n desc: \"code_challenge_method passed is invalid. Valid values are \\\"plain\\\" and \\\"S256\\\".\"\r\n },\r\n invalidCodeChallengeParams: {\r\n code: \"pkce_params_missing\",\r\n desc: \"Both params: code_challenge and code_challenge_method are to be passed if to be sent in the request\"\r\n },\r\n invalidCloudDiscoveryMetadata: {\r\n code: \"invalid_cloud_discovery_metadata\",\r\n desc: \"Invalid cloudDiscoveryMetadata provided. Must be a stringified JSON object containing tenant_discovery_endpoint and metadata fields\"\r\n },\r\n invalidAuthorityMetadata: {\r\n code: \"invalid_authority_metadata\",\r\n desc: \"Invalid authorityMetadata provided. Must by a stringified JSON object containing authorization_endpoint, token_endpoint, issuer fields.\"\r\n },\r\n untrustedAuthority: {\r\n code: \"untrusted_authority\",\r\n desc: \"The provided authority is not a trusted authority. Please include this authority in the knownAuthorities config parameter.\"\r\n },\r\n invalidAzureCloudInstance: {\r\n code: \"invalid_azure_cloud_instance\",\r\n desc: \"Invalid AzureCloudInstance provided. Please refer MSAL JS docs: aks.ms/msaljs/azure_cloud_instance for valid values\"\r\n },\r\n missingSshJwk: {\r\n code: \"missing_ssh_jwk\",\r\n desc: \"Missing sshJwk in SSH certificate request. A stringified JSON Web Key is required when using the SSH authentication scheme.\"\r\n },\r\n missingSshKid: {\r\n code: \"missing_ssh_kid\",\r\n desc: \"Missing sshKid in SSH certificate request. A string that uniquely identifies the public SSH key is required when using the SSH authentication scheme.\"\r\n },\r\n missingNonceAuthenticationHeader: {\r\n code: \"missing_nonce_authentication_header\",\r\n desc: \"Unable to find an authentication header containing server nonce. Either the Authentication-Info or WWW-Authenticate headers must be present in order to obtain a server nonce.\"\r\n },\r\n invalidAuthenticationHeader: {\r\n code: \"invalid_authentication_header\",\r\n desc: \"Invalid authentication header provided\"\r\n }\r\n};\r\n/**\r\n * Error thrown when there is an error in configuration of the MSAL.js library.\r\n */\r\nvar ClientConfigurationError = /** @class */ (function (_super) {\r\n __extends(ClientConfigurationError, _super);\r\n function ClientConfigurationError(errorCode, errorMessage) {\r\n var _this = _super.call(this, errorCode, errorMessage) || this;\r\n _this.name = \"ClientConfigurationError\";\r\n Object.setPrototypeOf(_this, ClientConfigurationError.prototype);\r\n return _this;\r\n }\r\n /**\r\n * Creates an error thrown when the redirect uri is empty (not set by caller)\r\n */\r\n ClientConfigurationError.createRedirectUriEmptyError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.redirectUriNotSet.code, ClientConfigurationErrorMessage.redirectUriNotSet.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the post-logout redirect uri is empty (not set by caller)\r\n */\r\n ClientConfigurationError.createPostLogoutRedirectUriEmptyError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.postLogoutUriNotSet.code, ClientConfigurationErrorMessage.postLogoutUriNotSet.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the claims request could not be successfully parsed\r\n */\r\n ClientConfigurationError.createClaimsRequestParsingError = function (claimsRequestParseError) {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.claimsRequestParsingError.code, ClientConfigurationErrorMessage.claimsRequestParsingError.desc + \" Given value: \" + claimsRequestParseError);\r\n };\r\n /**\r\n * Creates an error thrown if authority uri is given an insecure protocol.\r\n * @param urlString\r\n */\r\n ClientConfigurationError.createInsecureAuthorityUriError = function (urlString) {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.authorityUriInsecure.code, ClientConfigurationErrorMessage.authorityUriInsecure.desc + \" Given URI: \" + urlString);\r\n };\r\n /**\r\n * Creates an error thrown if URL string does not parse into separate segments.\r\n * @param urlString\r\n */\r\n ClientConfigurationError.createUrlParseError = function (urlParseError) {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.urlParseError.code, ClientConfigurationErrorMessage.urlParseError.desc + \" Given Error: \" + urlParseError);\r\n };\r\n /**\r\n * Creates an error thrown if URL string is empty or null.\r\n * @param urlString\r\n */\r\n ClientConfigurationError.createUrlEmptyError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.urlEmptyError.code, ClientConfigurationErrorMessage.urlEmptyError.desc);\r\n };\r\n /**\r\n * Error thrown when scopes are empty.\r\n * @param scopesValue\r\n */\r\n ClientConfigurationError.createEmptyScopesArrayError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.emptyScopesError.code, \"\" + ClientConfigurationErrorMessage.emptyScopesError.desc);\r\n };\r\n /**\r\n * Error thrown when client id scope is not provided as single scope.\r\n * @param inputScopes\r\n */\r\n ClientConfigurationError.createClientIdSingleScopeError = function (inputScopes) {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.clientIdSingleScopeError.code, ClientConfigurationErrorMessage.clientIdSingleScopeError.desc + \" Given Scopes: \" + inputScopes);\r\n };\r\n /**\r\n * Error thrown when prompt is not an allowed type.\r\n * @param promptValue\r\n */\r\n ClientConfigurationError.createInvalidPromptError = function (promptValue) {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidPrompt.code, ClientConfigurationErrorMessage.invalidPrompt.desc + \" Given value: \" + promptValue);\r\n };\r\n /**\r\n * Creates error thrown when claims parameter is not a stringified JSON object\r\n */\r\n ClientConfigurationError.createInvalidClaimsRequestError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidClaimsRequest.code, ClientConfigurationErrorMessage.invalidClaimsRequest.desc);\r\n };\r\n /**\r\n * Throws error when token request is empty and nothing cached in storage.\r\n */\r\n ClientConfigurationError.createEmptyLogoutRequestError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.logoutRequestEmptyError.code, ClientConfigurationErrorMessage.logoutRequestEmptyError.desc);\r\n };\r\n /**\r\n * Throws error when token request is empty and nothing cached in storage.\r\n */\r\n ClientConfigurationError.createEmptyTokenRequestError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.tokenRequestEmptyError.code, ClientConfigurationErrorMessage.tokenRequestEmptyError.desc);\r\n };\r\n /**\r\n * Throws error when an invalid code_challenge_method is passed by the user\r\n */\r\n ClientConfigurationError.createInvalidCodeChallengeMethodError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidCodeChallengeMethod.code, ClientConfigurationErrorMessage.invalidCodeChallengeMethod.desc);\r\n };\r\n /**\r\n * Throws error when both params: code_challenge and code_challenge_method are not passed together\r\n */\r\n ClientConfigurationError.createInvalidCodeChallengeParamsError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidCodeChallengeParams.code, ClientConfigurationErrorMessage.invalidCodeChallengeParams.desc);\r\n };\r\n /**\r\n * Throws an error when the user passes invalid cloudDiscoveryMetadata\r\n */\r\n ClientConfigurationError.createInvalidCloudDiscoveryMetadataError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidCloudDiscoveryMetadata.code, ClientConfigurationErrorMessage.invalidCloudDiscoveryMetadata.desc);\r\n };\r\n /**\r\n * Throws an error when the user passes invalid cloudDiscoveryMetadata\r\n */\r\n ClientConfigurationError.createInvalidAuthorityMetadataError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidAuthorityMetadata.code, ClientConfigurationErrorMessage.invalidAuthorityMetadata.desc);\r\n };\r\n /**\r\n * Throws error when provided authority is not a member of the trusted host list\r\n */\r\n ClientConfigurationError.createUntrustedAuthorityError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.untrustedAuthority.code, ClientConfigurationErrorMessage.untrustedAuthority.desc);\r\n };\r\n /**\r\n * Throws error when the AzureCloudInstance is set to an invalid value\r\n */\r\n ClientConfigurationError.createInvalidAzureCloudInstanceError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidAzureCloudInstance.code, ClientConfigurationErrorMessage.invalidAzureCloudInstance.desc);\r\n };\r\n /**\r\n * Throws an error when the authentication scheme is set to SSH but the SSH public key is omitted from the request\r\n */\r\n ClientConfigurationError.createMissingSshJwkError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.missingSshJwk.code, ClientConfigurationErrorMessage.missingSshJwk.desc);\r\n };\r\n /**\r\n * Throws an error when the authentication scheme is set to SSH but the SSH public key ID is omitted from the request\r\n */\r\n ClientConfigurationError.createMissingSshKidError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.missingSshKid.code, ClientConfigurationErrorMessage.missingSshKid.desc);\r\n };\r\n /**\r\n * Throws error when provided headers don't contain a header that a server nonce can be extracted from\r\n */\r\n ClientConfigurationError.createMissingNonceAuthenticationHeadersError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.missingNonceAuthenticationHeader.code, ClientConfigurationErrorMessage.missingNonceAuthenticationHeader.desc);\r\n };\r\n /**\r\n * Throws error when a provided header is invalid in any way\r\n */\r\n ClientConfigurationError.createInvalidAuthenticationHeaderError = function (invalidHeaderName, details) {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidAuthenticationHeader.code, ClientConfigurationErrorMessage.invalidAuthenticationHeader.desc + \". Invalid header: \" + invalidHeaderName + \". Details: \" + details);\r\n };\r\n return ClientConfigurationError;\r\n}(ClientAuthError));\n\nexport { ClientConfigurationError, ClientConfigurationErrorMessage };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\nimport { ClientConfigurationError } from '../error/ClientConfigurationError.js';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\nimport { StringUtils } from '../utils/StringUtils.js';\nimport { AADAuthorityConstants, Constants } from '../utils/Constants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Url object class which can perform various transformations on url strings.\r\n */\r\nvar UrlString = /** @class */ (function () {\r\n function UrlString(url) {\r\n this._urlString = url;\r\n if (StringUtils.isEmpty(this._urlString)) {\r\n // Throws error if url is empty\r\n throw ClientConfigurationError.createUrlEmptyError();\r\n }\r\n if (StringUtils.isEmpty(this.getHash())) {\r\n this._urlString = UrlString.canonicalizeUri(url);\r\n }\r\n }\r\n Object.defineProperty(UrlString.prototype, \"urlString\", {\r\n get: function () {\r\n return this._urlString;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n /**\r\n * Ensure urls are lower case and end with a / character.\r\n * @param url\r\n */\r\n UrlString.canonicalizeUri = function (url) {\r\n if (url) {\r\n var lowerCaseUrl = url.toLowerCase();\r\n if (StringUtils.endsWith(lowerCaseUrl, \"?\")) {\r\n lowerCaseUrl = lowerCaseUrl.slice(0, -1);\r\n }\r\n else if (StringUtils.endsWith(lowerCaseUrl, \"?/\")) {\r\n lowerCaseUrl = lowerCaseUrl.slice(0, -2);\r\n }\r\n if (!StringUtils.endsWith(lowerCaseUrl, \"/\")) {\r\n lowerCaseUrl += \"/\";\r\n }\r\n return lowerCaseUrl;\r\n }\r\n return url;\r\n };\r\n /**\r\n * Throws if urlString passed is not a valid authority URI string.\r\n */\r\n UrlString.prototype.validateAsUri = function () {\r\n // Attempts to parse url for uri components\r\n var components;\r\n try {\r\n components = this.getUrlComponents();\r\n }\r\n catch (e) {\r\n throw ClientConfigurationError.createUrlParseError(e);\r\n }\r\n // Throw error if URI or path segments are not parseable.\r\n if (!components.HostNameAndPort || !components.PathSegments) {\r\n throw ClientConfigurationError.createUrlParseError(\"Given url string: \" + this.urlString);\r\n }\r\n // Throw error if uri is insecure.\r\n if (!components.Protocol || components.Protocol.toLowerCase() !== \"https:\") {\r\n throw ClientConfigurationError.createInsecureAuthorityUriError(this.urlString);\r\n }\r\n };\r\n /**\r\n * Given a url and a query string return the url with provided query string appended\r\n * @param url\r\n * @param queryString\r\n */\r\n UrlString.appendQueryString = function (url, queryString) {\r\n if (StringUtils.isEmpty(queryString)) {\r\n return url;\r\n }\r\n return url.indexOf(\"?\") < 0 ? url + \"?\" + queryString : url + \"&\" + queryString;\r\n };\r\n /**\r\n * Returns a url with the hash removed\r\n * @param url\r\n */\r\n UrlString.removeHashFromUrl = function (url) {\r\n return UrlString.canonicalizeUri(url.split(\"#\")[0]);\r\n };\r\n /**\r\n * Given a url like https://a:b/common/d?e=f#g, and a tenantId, returns https://a:b/tenantId/d\r\n * @param href The url\r\n * @param tenantId The tenant id to replace\r\n */\r\n UrlString.prototype.replaceTenantPath = function (tenantId) {\r\n var urlObject = this.getUrlComponents();\r\n var pathArray = urlObject.PathSegments;\r\n if (tenantId && (pathArray.length !== 0 && (pathArray[0] === AADAuthorityConstants.COMMON || pathArray[0] === AADAuthorityConstants.ORGANIZATIONS))) {\r\n pathArray[0] = tenantId;\r\n }\r\n return UrlString.constructAuthorityUriFromObject(urlObject);\r\n };\r\n /**\r\n * Returns the anchor part(#) of the URL\r\n */\r\n UrlString.prototype.getHash = function () {\r\n return UrlString.parseHash(this.urlString);\r\n };\r\n /**\r\n * Parses out the components from a url string.\r\n * @returns An object with the various components. Please cache this value insted of calling this multiple times on the same url.\r\n */\r\n UrlString.prototype.getUrlComponents = function () {\r\n // https://gist.github.com/curtisz/11139b2cfcaef4a261e0\r\n var regEx = RegExp(\"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\\\?([^#]*))?(#(.*))?\");\r\n // If url string does not match regEx, we throw an error\r\n var match = this.urlString.match(regEx);\r\n if (!match) {\r\n throw ClientConfigurationError.createUrlParseError(\"Given url string: \" + this.urlString);\r\n }\r\n // Url component object\r\n var urlComponents = {\r\n Protocol: match[1],\r\n HostNameAndPort: match[4],\r\n AbsolutePath: match[5],\r\n QueryString: match[7]\r\n };\r\n var pathSegments = urlComponents.AbsolutePath.split(\"/\");\r\n pathSegments = pathSegments.filter(function (val) { return val && val.length > 0; }); // remove empty elements\r\n urlComponents.PathSegments = pathSegments;\r\n if (!StringUtils.isEmpty(urlComponents.QueryString) && urlComponents.QueryString.endsWith(\"/\")) {\r\n urlComponents.QueryString = urlComponents.QueryString.substring(0, urlComponents.QueryString.length - 1);\r\n }\r\n return urlComponents;\r\n };\r\n UrlString.getDomainFromUrl = function (url) {\r\n var regEx = RegExp(\"^([^:/?#]+://)?([^/?#]*)\");\r\n var match = url.match(regEx);\r\n if (!match) {\r\n throw ClientConfigurationError.createUrlParseError(\"Given url string: \" + url);\r\n }\r\n return match[2];\r\n };\r\n UrlString.getAbsoluteUrl = function (relativeUrl, baseUrl) {\r\n if (relativeUrl[0] === Constants.FORWARD_SLASH) {\r\n var url = new UrlString(baseUrl);\r\n var baseComponents = url.getUrlComponents();\r\n return baseComponents.Protocol + \"//\" + baseComponents.HostNameAndPort + relativeUrl;\r\n }\r\n return relativeUrl;\r\n };\r\n /**\r\n * Parses hash string from given string. Returns empty string if no hash symbol is found.\r\n * @param hashString\r\n */\r\n UrlString.parseHash = function (hashString) {\r\n var hashIndex1 = hashString.indexOf(\"#\");\r\n var hashIndex2 = hashString.indexOf(\"#/\");\r\n if (hashIndex2 > -1) {\r\n return hashString.substring(hashIndex2 + 2);\r\n }\r\n else if (hashIndex1 > -1) {\r\n return hashString.substring(hashIndex1 + 1);\r\n }\r\n return Constants.EMPTY_STRING;\r\n };\r\n /**\r\n * Parses query string from given string. Returns empty string if no query symbol is found.\r\n * @param queryString\r\n */\r\n UrlString.parseQueryString = function (queryString) {\r\n var queryIndex1 = queryString.indexOf(\"?\");\r\n var queryIndex2 = queryString.indexOf(\"/?\");\r\n if (queryIndex2 > -1) {\r\n return queryString.substring(queryIndex2 + 2);\r\n }\r\n else if (queryIndex1 > -1) {\r\n return queryString.substring(queryIndex1 + 1);\r\n }\r\n return Constants.EMPTY_STRING;\r\n };\r\n UrlString.constructAuthorityUriFromObject = function (urlObject) {\r\n return new UrlString(urlObject.Protocol + \"//\" + urlObject.HostNameAndPort + \"/\" + urlObject.PathSegments.join(\"/\"));\r\n };\r\n /**\r\n * Returns URL hash as server auth code response object.\r\n */\r\n UrlString.getDeserializedHash = function (hash) {\r\n // Check if given hash is empty\r\n if (StringUtils.isEmpty(hash)) {\r\n return {};\r\n }\r\n // Strip the # symbol if present\r\n var parsedHash = UrlString.parseHash(hash);\r\n // If # symbol was not present, above will return empty string, so give original hash value\r\n var deserializedHash = StringUtils.queryStringToObject(StringUtils.isEmpty(parsedHash) ? hash : parsedHash);\r\n // Check if deserialization didn't work\r\n if (!deserializedHash) {\r\n throw ClientAuthError.createHashNotDeserializedError(JSON.stringify(deserializedHash));\r\n }\r\n return deserializedHash;\r\n };\r\n /**\r\n * Returns URL query string as server auth code response object.\r\n */\r\n UrlString.getDeserializedQueryString = function (query) {\r\n // Check if given query is empty\r\n if (StringUtils.isEmpty(query)) {\r\n return {};\r\n }\r\n // Strip the ? symbol if present\r\n var parsedQueryString = UrlString.parseQueryString(query);\r\n // If ? symbol was not present, above will return empty string, so give original query value\r\n var deserializedQueryString = StringUtils.queryStringToObject(StringUtils.isEmpty(parsedQueryString) ? query : parsedQueryString);\r\n // Check if deserialization didn't work\r\n if (!deserializedQueryString) {\r\n throw ClientAuthError.createHashNotDeserializedError(JSON.stringify(deserializedQueryString));\r\n }\r\n return deserializedQueryString;\r\n };\r\n /**\r\n * Check if the hash of the URL string contains known properties\r\n */\r\n UrlString.hashContainsKnownProperties = function (hash) {\r\n if (StringUtils.isEmpty(hash) || hash.indexOf(\"=\") < 0) {\r\n // Hash doesn't contain key/value pairs\r\n return false;\r\n }\r\n var parameters = UrlString.getDeserializedHash(hash);\r\n return !!(parameters.code ||\r\n parameters.error_description ||\r\n parameters.error ||\r\n parameters.state);\r\n };\r\n return UrlString;\r\n}());\n\nexport { UrlString };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\nimport { __spreadArrays } from '../_virtual/_tslib.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar Constants = {\r\n LIBRARY_NAME: \"MSAL.JS\",\r\n SKU: \"msal.js.common\",\r\n // Prefix for all library cache entries\r\n CACHE_PREFIX: \"msal\",\r\n // default authority\r\n DEFAULT_AUTHORITY: \"https://login.microsoftonline.com/common/\",\r\n DEFAULT_AUTHORITY_HOST: \"login.microsoftonline.com\",\r\n DEFAULT_COMMON_TENANT: \"common\",\r\n // ADFS String\r\n ADFS: \"adfs\",\r\n DSTS: \"dstsv2\",\r\n // Default AAD Instance Discovery Endpoint\r\n AAD_INSTANCE_DISCOVERY_ENDPT: \"https://login.microsoftonline.com/common/discovery/instance?api-version=1.1&authorization_endpoint=\",\r\n // Resource delimiter - used for certain cache entries\r\n RESOURCE_DELIM: \"|\",\r\n // Placeholder for non-existent account ids/objects\r\n NO_ACCOUNT: \"NO_ACCOUNT\",\r\n // Claims\r\n CLAIMS: \"claims\",\r\n // Consumer UTID\r\n CONSUMER_UTID: \"9188040d-6c67-4c5b-b112-36a304b66dad\",\r\n // Default scopes\r\n OPENID_SCOPE: \"openid\",\r\n PROFILE_SCOPE: \"profile\",\r\n OFFLINE_ACCESS_SCOPE: \"offline_access\",\r\n EMAIL_SCOPE: \"email\",\r\n // Default response type for authorization code flow\r\n CODE_RESPONSE_TYPE: \"code\",\r\n CODE_GRANT_TYPE: \"authorization_code\",\r\n RT_GRANT_TYPE: \"refresh_token\",\r\n FRAGMENT_RESPONSE_MODE: \"fragment\",\r\n S256_CODE_CHALLENGE_METHOD: \"S256\",\r\n URL_FORM_CONTENT_TYPE: \"application/x-www-form-urlencoded;charset=utf-8\",\r\n AUTHORIZATION_PENDING: \"authorization_pending\",\r\n NOT_DEFINED: \"not_defined\",\r\n EMPTY_STRING: \"\",\r\n NOT_APPLICABLE: \"N/A\",\r\n FORWARD_SLASH: \"/\",\r\n IMDS_ENDPOINT: \"http://169.254.169.254/metadata/instance/compute/location\",\r\n IMDS_VERSION: \"2020-06-01\",\r\n IMDS_TIMEOUT: 2000,\r\n AZURE_REGION_AUTO_DISCOVER_FLAG: \"TryAutoDetect\",\r\n REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX: \"login.microsoft.com\",\r\n REGIONAL_AUTH_NON_MSI_QUERY_STRING: \"allowestsrnonmsi=true\",\r\n KNOWN_PUBLIC_CLOUDS: [\"login.microsoftonline.com\", \"login.windows.net\", \"login.microsoft.com\", \"sts.windows.net\"],\r\n TOKEN_RESPONSE_TYPE: \"token\",\r\n ID_TOKEN_RESPONSE_TYPE: \"id_token\",\r\n SHR_NONCE_VALIDITY: 240,\r\n INVALID_INSTANCE: \"invalid_instance\",\r\n};\r\nvar OIDC_DEFAULT_SCOPES = [\r\n Constants.OPENID_SCOPE,\r\n Constants.PROFILE_SCOPE,\r\n Constants.OFFLINE_ACCESS_SCOPE\r\n];\r\nvar OIDC_SCOPES = __spreadArrays(OIDC_DEFAULT_SCOPES, [\r\n Constants.EMAIL_SCOPE\r\n]);\r\n/**\r\n * Request header names\r\n */\r\nvar HeaderNames;\r\n(function (HeaderNames) {\r\n HeaderNames[\"CONTENT_TYPE\"] = \"Content-Type\";\r\n HeaderNames[\"RETRY_AFTER\"] = \"Retry-After\";\r\n HeaderNames[\"CCS_HEADER\"] = \"X-AnchorMailbox\";\r\n HeaderNames[\"WWWAuthenticate\"] = \"WWW-Authenticate\";\r\n HeaderNames[\"AuthenticationInfo\"] = \"Authentication-Info\";\r\n HeaderNames[\"X_MS_REQUEST_ID\"] = \"x-ms-request-id\";\r\n HeaderNames[\"X_MS_HTTP_VERSION\"] = \"x-ms-httpver\";\r\n})(HeaderNames || (HeaderNames = {}));\r\n/**\r\n * Persistent cache keys MSAL which stay while user is logged in.\r\n */\r\nvar PersistentCacheKeys;\r\n(function (PersistentCacheKeys) {\r\n PersistentCacheKeys[\"ID_TOKEN\"] = \"idtoken\";\r\n PersistentCacheKeys[\"CLIENT_INFO\"] = \"client.info\";\r\n PersistentCacheKeys[\"ADAL_ID_TOKEN\"] = \"adal.idtoken\";\r\n PersistentCacheKeys[\"ERROR\"] = \"error\";\r\n PersistentCacheKeys[\"ERROR_DESC\"] = \"error.description\";\r\n PersistentCacheKeys[\"ACTIVE_ACCOUNT\"] = \"active-account\";\r\n PersistentCacheKeys[\"ACTIVE_ACCOUNT_FILTERS\"] = \"active-account-filters\"; // new cache entry for active_account for a more robust version for browser\r\n})(PersistentCacheKeys || (PersistentCacheKeys = {}));\r\n/**\r\n * String constants related to AAD Authority\r\n */\r\nvar AADAuthorityConstants;\r\n(function (AADAuthorityConstants) {\r\n AADAuthorityConstants[\"COMMON\"] = \"common\";\r\n AADAuthorityConstants[\"ORGANIZATIONS\"] = \"organizations\";\r\n AADAuthorityConstants[\"CONSUMERS\"] = \"consumers\";\r\n})(AADAuthorityConstants || (AADAuthorityConstants = {}));\r\n/**\r\n * Keys in the hashParams sent by AAD Server\r\n */\r\nvar AADServerParamKeys;\r\n(function (AADServerParamKeys) {\r\n AADServerParamKeys[\"CLIENT_ID\"] = \"client_id\";\r\n AADServerParamKeys[\"REDIRECT_URI\"] = \"redirect_uri\";\r\n AADServerParamKeys[\"RESPONSE_TYPE\"] = \"response_type\";\r\n AADServerParamKeys[\"RESPONSE_MODE\"] = \"response_mode\";\r\n AADServerParamKeys[\"GRANT_TYPE\"] = \"grant_type\";\r\n AADServerParamKeys[\"CLAIMS\"] = \"claims\";\r\n AADServerParamKeys[\"SCOPE\"] = \"scope\";\r\n AADServerParamKeys[\"ERROR\"] = \"error\";\r\n AADServerParamKeys[\"ERROR_DESCRIPTION\"] = \"error_description\";\r\n AADServerParamKeys[\"ACCESS_TOKEN\"] = \"access_token\";\r\n AADServerParamKeys[\"ID_TOKEN\"] = \"id_token\";\r\n AADServerParamKeys[\"REFRESH_TOKEN\"] = \"refresh_token\";\r\n AADServerParamKeys[\"EXPIRES_IN\"] = \"expires_in\";\r\n AADServerParamKeys[\"STATE\"] = \"state\";\r\n AADServerParamKeys[\"NONCE\"] = \"nonce\";\r\n AADServerParamKeys[\"PROMPT\"] = \"prompt\";\r\n AADServerParamKeys[\"SESSION_STATE\"] = \"session_state\";\r\n AADServerParamKeys[\"CLIENT_INFO\"] = \"client_info\";\r\n AADServerParamKeys[\"CODE\"] = \"code\";\r\n AADServerParamKeys[\"CODE_CHALLENGE\"] = \"code_challenge\";\r\n AADServerParamKeys[\"CODE_CHALLENGE_METHOD\"] = \"code_challenge_method\";\r\n AADServerParamKeys[\"CODE_VERIFIER\"] = \"code_verifier\";\r\n AADServerParamKeys[\"CLIENT_REQUEST_ID\"] = \"client-request-id\";\r\n AADServerParamKeys[\"X_CLIENT_SKU\"] = \"x-client-SKU\";\r\n AADServerParamKeys[\"X_CLIENT_VER\"] = \"x-client-VER\";\r\n AADServerParamKeys[\"X_CLIENT_OS\"] = \"x-client-OS\";\r\n AADServerParamKeys[\"X_CLIENT_CPU\"] = \"x-client-CPU\";\r\n AADServerParamKeys[\"X_CLIENT_CURR_TELEM\"] = \"x-client-current-telemetry\";\r\n AADServerParamKeys[\"X_CLIENT_LAST_TELEM\"] = \"x-client-last-telemetry\";\r\n AADServerParamKeys[\"X_MS_LIB_CAPABILITY\"] = \"x-ms-lib-capability\";\r\n AADServerParamKeys[\"X_APP_NAME\"] = \"x-app-name\";\r\n AADServerParamKeys[\"X_APP_VER\"] = \"x-app-ver\";\r\n AADServerParamKeys[\"POST_LOGOUT_URI\"] = \"post_logout_redirect_uri\";\r\n AADServerParamKeys[\"ID_TOKEN_HINT\"] = \"id_token_hint\";\r\n AADServerParamKeys[\"DEVICE_CODE\"] = \"device_code\";\r\n AADServerParamKeys[\"CLIENT_SECRET\"] = \"client_secret\";\r\n AADServerParamKeys[\"CLIENT_ASSERTION\"] = \"client_assertion\";\r\n AADServerParamKeys[\"CLIENT_ASSERTION_TYPE\"] = \"client_assertion_type\";\r\n AADServerParamKeys[\"TOKEN_TYPE\"] = \"token_type\";\r\n AADServerParamKeys[\"REQ_CNF\"] = \"req_cnf\";\r\n AADServerParamKeys[\"OBO_ASSERTION\"] = \"assertion\";\r\n AADServerParamKeys[\"REQUESTED_TOKEN_USE\"] = \"requested_token_use\";\r\n AADServerParamKeys[\"ON_BEHALF_OF\"] = \"on_behalf_of\";\r\n AADServerParamKeys[\"FOCI\"] = \"foci\";\r\n AADServerParamKeys[\"CCS_HEADER\"] = \"X-AnchorMailbox\";\r\n AADServerParamKeys[\"RETURN_SPA_CODE\"] = \"return_spa_code\";\r\n AADServerParamKeys[\"NATIVE_BROKER\"] = \"nativebroker\";\r\n AADServerParamKeys[\"LOGOUT_HINT\"] = \"logout_hint\";\r\n})(AADServerParamKeys || (AADServerParamKeys = {}));\r\n/**\r\n * Claims request keys\r\n */\r\nvar ClaimsRequestKeys;\r\n(function (ClaimsRequestKeys) {\r\n ClaimsRequestKeys[\"ACCESS_TOKEN\"] = \"access_token\";\r\n ClaimsRequestKeys[\"XMS_CC\"] = \"xms_cc\";\r\n})(ClaimsRequestKeys || (ClaimsRequestKeys = {}));\r\n/**\r\n * we considered making this \"enum\" in the request instead of string, however it looks like the allowed list of\r\n * prompt values kept changing over past couple of years. There are some undocumented prompt values for some\r\n * internal partners too, hence the choice of generic \"string\" type instead of the \"enum\"\r\n */\r\nvar PromptValue = {\r\n LOGIN: \"login\",\r\n SELECT_ACCOUNT: \"select_account\",\r\n CONSENT: \"consent\",\r\n NONE: \"none\",\r\n CREATE: \"create\",\r\n NO_SESSION: \"no_session\"\r\n};\r\n/**\r\n * SSO Types - generated to populate hints\r\n */\r\nvar SSOTypes;\r\n(function (SSOTypes) {\r\n SSOTypes[\"ACCOUNT\"] = \"account\";\r\n SSOTypes[\"SID\"] = \"sid\";\r\n SSOTypes[\"LOGIN_HINT\"] = \"login_hint\";\r\n SSOTypes[\"ID_TOKEN\"] = \"id_token\";\r\n SSOTypes[\"DOMAIN_HINT\"] = \"domain_hint\";\r\n SSOTypes[\"ORGANIZATIONS\"] = \"organizations\";\r\n SSOTypes[\"CONSUMERS\"] = \"consumers\";\r\n SSOTypes[\"ACCOUNT_ID\"] = \"accountIdentifier\";\r\n SSOTypes[\"HOMEACCOUNT_ID\"] = \"homeAccountIdentifier\";\r\n})(SSOTypes || (SSOTypes = {}));\r\n/**\r\n * allowed values for codeVerifier\r\n */\r\nvar CodeChallengeMethodValues = {\r\n PLAIN: \"plain\",\r\n S256: \"S256\"\r\n};\r\n/**\r\n * allowed values for response_mode\r\n */\r\nvar ResponseMode;\r\n(function (ResponseMode) {\r\n ResponseMode[\"QUERY\"] = \"query\";\r\n ResponseMode[\"FRAGMENT\"] = \"fragment\";\r\n ResponseMode[\"FORM_POST\"] = \"form_post\";\r\n})(ResponseMode || (ResponseMode = {}));\r\n/**\r\n * allowed grant_type\r\n */\r\nvar GrantType;\r\n(function (GrantType) {\r\n GrantType[\"IMPLICIT_GRANT\"] = \"implicit\";\r\n GrantType[\"AUTHORIZATION_CODE_GRANT\"] = \"authorization_code\";\r\n GrantType[\"CLIENT_CREDENTIALS_GRANT\"] = \"client_credentials\";\r\n GrantType[\"RESOURCE_OWNER_PASSWORD_GRANT\"] = \"password\";\r\n GrantType[\"REFRESH_TOKEN_GRANT\"] = \"refresh_token\";\r\n GrantType[\"DEVICE_CODE_GRANT\"] = \"device_code\";\r\n GrantType[\"JWT_BEARER\"] = \"urn:ietf:params:oauth:grant-type:jwt-bearer\";\r\n})(GrantType || (GrantType = {}));\r\n/**\r\n * Account types in Cache\r\n */\r\nvar CacheAccountType;\r\n(function (CacheAccountType) {\r\n CacheAccountType[\"MSSTS_ACCOUNT_TYPE\"] = \"MSSTS\";\r\n CacheAccountType[\"ADFS_ACCOUNT_TYPE\"] = \"ADFS\";\r\n CacheAccountType[\"MSAV1_ACCOUNT_TYPE\"] = \"MSA\";\r\n CacheAccountType[\"GENERIC_ACCOUNT_TYPE\"] = \"Generic\"; // NTLM, Kerberos, FBA, Basic etc\r\n})(CacheAccountType || (CacheAccountType = {}));\r\n/**\r\n * Separators used in cache\r\n */\r\nvar Separators;\r\n(function (Separators) {\r\n Separators[\"CACHE_KEY_SEPARATOR\"] = \"-\";\r\n Separators[\"CLIENT_INFO_SEPARATOR\"] = \".\";\r\n})(Separators || (Separators = {}));\r\n/**\r\n * Credential Type stored in the cache\r\n */\r\nvar CredentialType;\r\n(function (CredentialType) {\r\n CredentialType[\"ID_TOKEN\"] = \"IdToken\";\r\n CredentialType[\"ACCESS_TOKEN\"] = \"AccessToken\";\r\n CredentialType[\"ACCESS_TOKEN_WITH_AUTH_SCHEME\"] = \"AccessToken_With_AuthScheme\";\r\n CredentialType[\"REFRESH_TOKEN\"] = \"RefreshToken\";\r\n})(CredentialType || (CredentialType = {}));\r\n/**\r\n * Credential Type stored in the cache\r\n */\r\nvar CacheSchemaType;\r\n(function (CacheSchemaType) {\r\n CacheSchemaType[\"ACCOUNT\"] = \"Account\";\r\n CacheSchemaType[\"CREDENTIAL\"] = \"Credential\";\r\n CacheSchemaType[\"ID_TOKEN\"] = \"IdToken\";\r\n CacheSchemaType[\"ACCESS_TOKEN\"] = \"AccessToken\";\r\n CacheSchemaType[\"REFRESH_TOKEN\"] = \"RefreshToken\";\r\n CacheSchemaType[\"APP_METADATA\"] = \"AppMetadata\";\r\n CacheSchemaType[\"TEMPORARY\"] = \"TempCache\";\r\n CacheSchemaType[\"TELEMETRY\"] = \"Telemetry\";\r\n CacheSchemaType[\"UNDEFINED\"] = \"Undefined\";\r\n CacheSchemaType[\"THROTTLING\"] = \"Throttling\";\r\n})(CacheSchemaType || (CacheSchemaType = {}));\r\n/**\r\n * Combine all cache types\r\n */\r\nvar CacheType;\r\n(function (CacheType) {\r\n CacheType[CacheType[\"ADFS\"] = 1001] = \"ADFS\";\r\n CacheType[CacheType[\"MSA\"] = 1002] = \"MSA\";\r\n CacheType[CacheType[\"MSSTS\"] = 1003] = \"MSSTS\";\r\n CacheType[CacheType[\"GENERIC\"] = 1004] = \"GENERIC\";\r\n CacheType[CacheType[\"ACCESS_TOKEN\"] = 2001] = \"ACCESS_TOKEN\";\r\n CacheType[CacheType[\"REFRESH_TOKEN\"] = 2002] = \"REFRESH_TOKEN\";\r\n CacheType[CacheType[\"ID_TOKEN\"] = 2003] = \"ID_TOKEN\";\r\n CacheType[CacheType[\"APP_METADATA\"] = 3001] = \"APP_METADATA\";\r\n CacheType[CacheType[\"UNDEFINED\"] = 9999] = \"UNDEFINED\";\r\n})(CacheType || (CacheType = {}));\r\n/**\r\n * More Cache related constants\r\n */\r\nvar APP_METADATA = \"appmetadata\";\r\nvar CLIENT_INFO = \"client_info\";\r\nvar THE_FAMILY_ID = \"1\";\r\nvar AUTHORITY_METADATA_CONSTANTS = {\r\n CACHE_KEY: \"authority-metadata\",\r\n REFRESH_TIME_SECONDS: 3600 * 24 // 24 Hours\r\n};\r\nvar AuthorityMetadataSource;\r\n(function (AuthorityMetadataSource) {\r\n AuthorityMetadataSource[\"CONFIG\"] = \"config\";\r\n AuthorityMetadataSource[\"CACHE\"] = \"cache\";\r\n AuthorityMetadataSource[\"NETWORK\"] = \"network\";\r\n AuthorityMetadataSource[\"HARDCODED_VALUES\"] = \"hardcoded_values\";\r\n})(AuthorityMetadataSource || (AuthorityMetadataSource = {}));\r\nvar SERVER_TELEM_CONSTANTS = {\r\n SCHEMA_VERSION: 5,\r\n MAX_CUR_HEADER_BYTES: 80,\r\n MAX_LAST_HEADER_BYTES: 330,\r\n MAX_CACHED_ERRORS: 50,\r\n CACHE_KEY: \"server-telemetry\",\r\n CATEGORY_SEPARATOR: \"|\",\r\n VALUE_SEPARATOR: \",\",\r\n OVERFLOW_TRUE: \"1\",\r\n OVERFLOW_FALSE: \"0\",\r\n UNKNOWN_ERROR: \"unknown_error\"\r\n};\r\n/**\r\n * Type of the authentication request\r\n */\r\nvar AuthenticationScheme;\r\n(function (AuthenticationScheme) {\r\n AuthenticationScheme[\"BEARER\"] = \"Bearer\";\r\n AuthenticationScheme[\"POP\"] = \"pop\";\r\n AuthenticationScheme[\"SSH\"] = \"ssh-cert\";\r\n})(AuthenticationScheme || (AuthenticationScheme = {}));\r\n/**\r\n * Constants related to throttling\r\n */\r\nvar ThrottlingConstants = {\r\n // Default time to throttle RequestThumbprint in seconds\r\n DEFAULT_THROTTLE_TIME_SECONDS: 60,\r\n // Default maximum time to throttle in seconds, overrides what the server sends back\r\n DEFAULT_MAX_THROTTLE_TIME_SECONDS: 3600,\r\n // Prefix for storing throttling entries\r\n THROTTLING_PREFIX: \"throttling\",\r\n // Value assigned to the x-ms-lib-capability header to indicate to the server the library supports throttling\r\n X_MS_LIB_CAPABILITY_VALUE: \"retry-after, h429\"\r\n};\r\nvar Errors = {\r\n INVALID_GRANT_ERROR: \"invalid_grant\",\r\n CLIENT_MISMATCH_ERROR: \"client_mismatch\",\r\n};\r\n/**\r\n * Password grant parameters\r\n */\r\nvar PasswordGrantConstants;\r\n(function (PasswordGrantConstants) {\r\n PasswordGrantConstants[\"username\"] = \"username\";\r\n PasswordGrantConstants[\"password\"] = \"password\";\r\n})(PasswordGrantConstants || (PasswordGrantConstants = {}));\r\n/**\r\n * Response codes\r\n */\r\nvar ResponseCodes;\r\n(function (ResponseCodes) {\r\n ResponseCodes[ResponseCodes[\"httpSuccess\"] = 200] = \"httpSuccess\";\r\n ResponseCodes[ResponseCodes[\"httpBadRequest\"] = 400] = \"httpBadRequest\";\r\n})(ResponseCodes || (ResponseCodes = {}));\r\n/**\r\n * Region Discovery Sources\r\n */\r\nvar RegionDiscoverySources;\r\n(function (RegionDiscoverySources) {\r\n RegionDiscoverySources[\"FAILED_AUTO_DETECTION\"] = \"1\";\r\n RegionDiscoverySources[\"INTERNAL_CACHE\"] = \"2\";\r\n RegionDiscoverySources[\"ENVIRONMENT_VARIABLE\"] = \"3\";\r\n RegionDiscoverySources[\"IMDS\"] = \"4\";\r\n})(RegionDiscoverySources || (RegionDiscoverySources = {}));\r\n/**\r\n * Region Discovery Outcomes\r\n */\r\nvar RegionDiscoveryOutcomes;\r\n(function (RegionDiscoveryOutcomes) {\r\n RegionDiscoveryOutcomes[\"CONFIGURED_MATCHES_DETECTED\"] = \"1\";\r\n RegionDiscoveryOutcomes[\"CONFIGURED_NO_AUTO_DETECTION\"] = \"2\";\r\n RegionDiscoveryOutcomes[\"CONFIGURED_NOT_DETECTED\"] = \"3\";\r\n RegionDiscoveryOutcomes[\"AUTO_DETECTION_REQUESTED_SUCCESSFUL\"] = \"4\";\r\n RegionDiscoveryOutcomes[\"AUTO_DETECTION_REQUESTED_FAILED\"] = \"5\";\r\n})(RegionDiscoveryOutcomes || (RegionDiscoveryOutcomes = {}));\r\nvar CacheOutcome;\r\n(function (CacheOutcome) {\r\n CacheOutcome[\"NO_CACHE_HIT\"] = \"0\";\r\n CacheOutcome[\"FORCE_REFRESH\"] = \"1\";\r\n CacheOutcome[\"NO_CACHED_ACCESS_TOKEN\"] = \"2\";\r\n CacheOutcome[\"CACHED_ACCESS_TOKEN_EXPIRED\"] = \"3\";\r\n CacheOutcome[\"REFRESH_CACHED_ACCESS_TOKEN\"] = \"4\";\r\n})(CacheOutcome || (CacheOutcome = {}));\r\nvar JsonTypes;\r\n(function (JsonTypes) {\r\n JsonTypes[\"Jwt\"] = \"JWT\";\r\n JsonTypes[\"Jwk\"] = \"JWK\";\r\n})(JsonTypes || (JsonTypes = {}));\r\nvar ONE_DAY_IN_MS = 86400000;\n\nexport { AADAuthorityConstants, AADServerParamKeys, APP_METADATA, AUTHORITY_METADATA_CONSTANTS, AuthenticationScheme, AuthorityMetadataSource, CLIENT_INFO, CacheAccountType, CacheOutcome, CacheSchemaType, CacheType, ClaimsRequestKeys, CodeChallengeMethodValues, Constants, CredentialType, Errors, GrantType, HeaderNames, JsonTypes, OIDC_DEFAULT_SCOPES, OIDC_SCOPES, ONE_DAY_IN_MS, PasswordGrantConstants, PersistentCacheKeys, PromptValue, RegionDiscoveryOutcomes, RegionDiscoverySources, ResponseCodes, ResponseMode, SERVER_TELEM_CONSTANTS, SSOTypes, Separators, THE_FAMILY_ID, ThrottlingConstants };\n","/*! @azure/msal-common v9.1.1 2023-01-19 */\n'use strict';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * @hidden\r\n */\r\nvar StringUtils = /** @class */ (function () {\r\n function StringUtils() {\r\n }\r\n /**\r\n * decode a JWT\r\n *\r\n * @param authToken\r\n */\r\n StringUtils.decodeAuthToken = function (authToken) {\r\n if (StringUtils.isEmpty(authToken)) {\r\n throw ClientAuthError.createTokenNullOrEmptyError(authToken);\r\n }\r\n var tokenPartsRegex = /^([^\\.\\s]*)\\.([^\\.\\s]+)\\.([^\\.\\s]*)$/;\r\n var matches = tokenPartsRegex.exec(authToken);\r\n if (!matches || matches.length < 4) {\r\n throw ClientAuthError.createTokenParsingError(\"Given token is malformed: \" + JSON.stringify(authToken));\r\n }\r\n var crackedToken = {\r\n header: matches[1],\r\n JWSPayload: matches[2],\r\n JWSSig: matches[3]\r\n };\r\n return crackedToken;\r\n };\r\n /**\r\n * Check if a string is empty.\r\n *\r\n * @param str\r\n */\r\n StringUtils.isEmpty = function (str) {\r\n return (typeof str === \"undefined\" || !str || 0 === str.length);\r\n };\r\n /**\r\n * Check if stringified object is empty\r\n * @param strObj\r\n */\r\n StringUtils.isEmptyObj = function (strObj) {\r\n if (strObj && !StringUtils.isEmpty(strObj)) {\r\n try {\r\n var obj = JSON.parse(strObj);\r\n return Object.keys(obj).length === 0;\r\n }\r\n catch (e) { }\r\n }\r\n return true;\r\n };\r\n StringUtils.startsWith = function (str, search) {\r\n return str.indexOf(search) === 0;\r\n };\r\n StringUtils.endsWith = function (str, search) {\r\n return (str.length >= search.length) && (str.lastIndexOf(search) === (str.length - search.length));\r\n };\r\n /**\r\n * Parses string into an object.\r\n *\r\n * @param query\r\n */\r\n StringUtils.queryStringToObject = function (query) {\r\n var obj = {};\r\n var params = query.split(\"&\");\r\n var decode = function (s) { return decodeURIComponent(s.replace(/\\+/g, \" \")); };\r\n params.forEach(function (pair) {\r\n if (pair.trim()) {\r\n var _a = pair.split(/=(.+)/g, 2), key = _a[0], value = _a[1]; // Split on the first occurence of the '=' character\r\n if (key && value) {\r\n obj[decode(key)] = decode(value);\r\n }\r\n }\r\n });\r\n return obj;\r\n };\r\n /**\r\n * Trims entries in an array.\r\n *\r\n * @param arr\r\n */\r\n StringUtils.trimArrayEntries = function (arr) {\r\n return arr.map(function (entry) { return entry.trim(); });\r\n };\r\n /**\r\n * Removes empty strings from array\r\n * @param arr\r\n */\r\n StringUtils.removeEmptyStringsFromArray = function (arr) {\r\n return arr.filter(function (entry) {\r\n return !StringUtils.isEmpty(entry);\r\n });\r\n };\r\n /**\r\n * Attempts to parse a string into JSON\r\n * @param str\r\n */\r\n StringUtils.jsonParseHelper = function (str) {\r\n try {\r\n return JSON.parse(str);\r\n }\r\n catch (e) {\r\n return null;\r\n }\r\n };\r\n /**\r\n * Tests if a given string matches a given pattern, with support for wildcards and queries.\r\n * @param pattern Wildcard pattern to string match. Supports \"*\" for wildcards and \"?\" for queries\r\n * @param input String to match against\r\n */\r\n StringUtils.matchPattern = function (pattern, input) {\r\n /**\r\n * Wildcard support: https://stackoverflow.com/a/3117248/4888559\r\n * Queries: replaces \"?\" in string with escaped \"\\?\" for regex test\r\n */\r\n var regex = new RegExp(pattern.replace(/\\\\/g, \"\\\\\\\\\").replace(/\\*/g, \"[^ ]*\").replace(/\\?/g, \"\\\\\\?\")); // eslint-disable-line security/detect-non-literal-regexp\r\n return regex.test(input);\r\n };\r\n return StringUtils;\r\n}());\n\nexport { StringUtils };\n","/*!\n * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n */\nvar prefix = \"fas\";\nvar faAd = {\n prefix: 'fas',\n iconName: 'ad',\n icon: [512, 512, [], \"f641\", \"M157.52 272h36.96L176 218.78 157.52 272zM352 256c-13.23 0-24 10.77-24 24s10.77 24 24 24 24-10.77 24-24-10.77-24-24-24zM464 64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM250.58 352h-16.94c-6.81 0-12.88-4.32-15.12-10.75L211.15 320h-70.29l-7.38 21.25A16 16 0 0 1 118.36 352h-16.94c-11.01 0-18.73-10.85-15.12-21.25L140 176.12A23.995 23.995 0 0 1 162.67 160h26.66A23.99 23.99 0 0 1 212 176.13l53.69 154.62c3.61 10.4-4.11 21.25-15.11 21.25zM424 336c0 8.84-7.16 16-16 16h-16c-4.85 0-9.04-2.27-11.98-5.68-8.62 3.66-18.09 5.68-28.02 5.68-39.7 0-72-32.3-72-72s32.3-72 72-72c8.46 0 16.46 1.73 24 4.42V176c0-8.84 7.16-16 16-16h16c8.84 0 16 7.16 16 16v160z\"]\n};\nvar faAddressBook = {\n prefix: 'fas',\n iconName: 'address-book',\n icon: [448, 512, [], \"f2b9\", \"M436 160c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h320c26.5 0 48-21.5 48-48v-48h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20zm-228-32c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H118.4C106 384 96 375.4 96 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z\"]\n};\nvar faAddressCard = {\n prefix: 'fas',\n iconName: 'address-card',\n icon: [576, 512, [], \"f2bb\", \"M528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-352 96c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H86.4C74 384 64 375.4 64 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2zM512 312c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-64c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-64c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faAdjust = {\n prefix: 'fas',\n iconName: 'adjust',\n icon: [512, 512, [], \"f042\", \"M8 256c0 136.966 111.033 248 248 248s248-111.034 248-248S392.966 8 256 8 8 119.033 8 256zm248 184V72c101.705 0 184 82.311 184 184 0 101.705-82.311 184-184 184z\"]\n};\nvar faAirFreshener = {\n prefix: 'fas',\n iconName: 'air-freshener',\n icon: [512, 512, [], \"f5d0\", \"M224 160H96C43 160 0 203 0 256V480C0 497.625 14.375 512 32 512H288C305.625 512 320 497.625 320 480V256C320 203 277 160 224 160ZM160 416C115.875 416 80 380.125 80 336S115.875 256 160 256S240 291.875 240 336S204.125 416 160 416ZM224 32C224 14.375 209.625 0 192 0H128C110.375 0 96 14.375 96 32V128H224V32ZM381.781 51.578C383 50.969 384 49.359 384 48C384 46.625 383 45.031 381.781 44.422L352 32L339.562 2.219C338.969 1 337.375 0 336 0S333.031 1 332.406 2.219L320 32L290.219 44.422C289 45.031 288 46.625 288 48C288 49.359 289 50.969 290.219 51.578L320 64L332.406 93.781C333.031 95 334.625 96 336 96S338.969 95 339.562 93.781L352 64L381.781 51.578ZM448 64L460.406 93.781C461.031 95 462.625 96 464 96S466.969 95 467.562 93.781L480 64L509.781 51.578C511 50.969 512 49.359 512 48C512 46.625 511 45.031 509.781 44.422L480 32L467.562 2.219C466.969 1 465.375 0 464 0S461.031 1 460.406 2.219L448 32L418.219 44.422C417 45.031 416 46.625 416 48C416 49.359 417 50.969 418.219 51.578L448 64ZM480 224L467.562 194.219C466.969 193 465.375 192 464 192S461.031 193 460.406 194.219L448 224L418.219 236.422C417 237.031 416 238.625 416 240C416 241.359 417 242.969 418.219 243.578L448 256L460.406 285.781C461.031 287 462.625 288 464 288S466.969 287 467.562 285.781L480 256L509.781 243.578C511 242.969 512 241.359 512 240C512 238.625 511 237.031 509.781 236.422L480 224ZM445.781 147.578C447 146.969 448 145.359 448 144C448 142.625 447 141.031 445.781 140.422L416 128L403.562 98.219C402.969 97 401.375 96 400 96S397.031 97 396.406 98.219L384 128L354.219 140.422C353 141.031 352 142.625 352 144C352 145.359 353 146.969 354.219 147.578L384 160L396.406 189.781C397.031 191 398.625 192 400 192S402.969 191 403.562 189.781L416 160L445.781 147.578Z\"]\n};\nvar faAlignCenter = {\n prefix: 'fas',\n iconName: 'align-center',\n icon: [448, 512, [], \"f037\", \"M432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM108.1 96h231.81A12.09 12.09 0 0 0 352 83.9V44.09A12.09 12.09 0 0 0 339.91 32H108.1A12.09 12.09 0 0 0 96 44.09V83.9A12.1 12.1 0 0 0 108.1 96zm231.81 256A12.09 12.09 0 0 0 352 339.9v-39.81A12.09 12.09 0 0 0 339.91 288H108.1A12.09 12.09 0 0 0 96 300.09v39.81a12.1 12.1 0 0 0 12.1 12.1z\"]\n};\nvar faAlignJustify = {\n prefix: 'fas',\n iconName: 'align-justify',\n icon: [448, 512, [], \"f039\", \"M432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faAlignLeft = {\n prefix: 'fas',\n iconName: 'align-left',\n icon: [448, 512, [], \"f036\", \"M12.83 352h262.34A12.82 12.82 0 0 0 288 339.17v-38.34A12.82 12.82 0 0 0 275.17 288H12.83A12.82 12.82 0 0 0 0 300.83v38.34A12.82 12.82 0 0 0 12.83 352zm0-256h262.34A12.82 12.82 0 0 0 288 83.17V44.83A12.82 12.82 0 0 0 275.17 32H12.83A12.82 12.82 0 0 0 0 44.83v38.34A12.82 12.82 0 0 0 12.83 96zM432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faAlignRight = {\n prefix: 'fas',\n iconName: 'align-right',\n icon: [448, 512, [], \"f038\", \"M16 224h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm416 192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-384H172.83A12.82 12.82 0 0 0 160 44.83v38.34A12.82 12.82 0 0 0 172.83 96h262.34A12.82 12.82 0 0 0 448 83.17V44.83A12.82 12.82 0 0 0 435.17 32zm0 256H172.83A12.82 12.82 0 0 0 160 300.83v38.34A12.82 12.82 0 0 0 172.83 352h262.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288z\"]\n};\nvar faAllergies = {\n prefix: 'fas',\n iconName: 'allergies',\n icon: [448, 512, [], \"f461\", \"M416 112c-17.6 0-32 14.4-32 32v72c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V64c0-17.6-14.4-32-32-32s-32 14.4-32 32v152c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V32c0-17.6-14.4-32-32-32s-32 14.4-32 32v184c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V64c0-17.6-14.4-32-32-32S96 46.4 96 64v241l-23.6-32.5c-13-17.9-38-21.8-55.9-8.8s-21.8 38-8.8 55.9l125.6 172.7c9 12.4 23.5 19.8 38.8 19.8h197.6c22.3 0 41.6-15.3 46.7-37l26.5-112.7c3.2-13.7 4.9-28.3 5.1-42.3V144c0-17.6-14.4-32-32-32zM176 416c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm64 128c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm64 32c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32 64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32-128c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\"]\n};\nvar faAmbulance = {\n prefix: 'fas',\n iconName: 'ambulance',\n icon: [640, 512, [], \"f0f9\", \"M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h16c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm144-248c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48zm176 248c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z\"]\n};\nvar faAmericanSignLanguageInterpreting = {\n prefix: 'fas',\n iconName: 'american-sign-language-interpreting',\n icon: [640, 512, [], \"f2a3\", \"M290.547 189.039c-20.295-10.149-44.147-11.199-64.739-3.89 42.606 0 71.208 20.475 85.578 50.576 8.576 17.899-5.148 38.071-23.617 38.071 18.429 0 32.211 20.136 23.617 38.071-14.725 30.846-46.123 50.854-80.298 50.854-.557 0-94.471-8.615-94.471-8.615l-66.406 33.347c-9.384 4.693-19.815.379-23.895-7.781L1.86 290.747c-4.167-8.615-1.111-18.897 6.946-23.621l58.072-33.069L108 159.861c6.39-57.245 34.731-109.767 79.743-146.726 11.391-9.448 28.341-7.781 37.51 3.613 9.446 11.394 7.78 28.067-3.612 37.516-12.503 10.559-23.618 22.509-32.509 35.57 21.672-14.729 46.679-24.732 74.186-28.067 14.725-1.945 28.063 8.336 29.73 23.065 1.945 14.728-8.336 28.067-23.062 29.734-16.116 1.945-31.12 7.503-44.178 15.284 26.114-5.713 58.712-3.138 88.079 11.115 13.336 6.669 18.893 22.509 12.224 35.848-6.389 13.06-22.504 18.617-35.564 12.226zm-27.229 69.472c-6.112-12.505-18.338-20.286-32.231-20.286a35.46 35.46 0 0 0-35.565 35.57c0 21.428 17.808 35.57 35.565 35.57 13.893 0 26.119-7.781 32.231-20.286 4.446-9.449 13.614-15.006 23.339-15.284-9.725-.277-18.893-5.835-23.339-15.284zm374.821-37.237c4.168 8.615 1.111 18.897-6.946 23.621l-58.071 33.069L532 352.16c-6.39 57.245-34.731 109.767-79.743 146.726-10.932 9.112-27.799 8.144-37.51-3.613-9.446-11.394-7.78-28.067 3.613-37.516 12.503-10.559 23.617-22.509 32.508-35.57-21.672 14.729-46.679 24.732-74.186 28.067-10.021 2.506-27.552-5.643-29.73-23.065-1.945-14.728 8.336-28.067 23.062-29.734 16.116-1.946 31.12-7.503 44.178-15.284-26.114 5.713-58.712 3.138-88.079-11.115-13.336-6.669-18.893-22.509-12.224-35.848 6.389-13.061 22.505-18.619 35.565-12.227 20.295 10.149 44.147 11.199 64.739 3.89-42.606 0-71.208-20.475-85.578-50.576-8.576-17.899 5.148-38.071 23.617-38.071-18.429 0-32.211-20.136-23.617-38.071 14.033-29.396 44.039-50.887 81.966-50.854l92.803 8.615 66.406-33.347c9.408-4.704 19.828-.354 23.894 7.781l44.455 88.926zm-229.227-18.618c-13.893 0-26.119 7.781-32.231 20.286-4.446 9.449-13.614 15.006-23.339 15.284 9.725.278 18.893 5.836 23.339 15.284 6.112 12.505 18.338 20.286 32.231 20.286a35.46 35.46 0 0 0 35.565-35.57c0-21.429-17.808-35.57-35.565-35.57z\"]\n};\nvar faAnchor = {\n prefix: 'fas',\n iconName: 'anchor',\n icon: [576, 512, [], \"f13d\", \"M12.971 352h32.394C67.172 454.735 181.944 512 288 512c106.229 0 220.853-57.38 242.635-160h32.394c10.691 0 16.045-12.926 8.485-20.485l-67.029-67.029c-4.686-4.686-12.284-4.686-16.971 0l-67.029 67.029c-7.56 7.56-2.206 20.485 8.485 20.485h35.146c-20.29 54.317-84.963 86.588-144.117 94.015V256h52c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-52v-5.47c37.281-13.178 63.995-48.725 64-90.518C384.005 43.772 341.605.738 289.37.01 235.723-.739 192 42.525 192 96c0 41.798 26.716 77.35 64 90.53V192h-52c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h52v190.015c-58.936-7.399-123.82-39.679-144.117-94.015h35.146c10.691 0 16.045-12.926 8.485-20.485l-67.029-67.029c-4.686-4.686-12.284-4.686-16.971 0L4.485 331.515C-3.074 339.074 2.28 352 12.971 352zM288 64c17.645 0 32 14.355 32 32s-14.355 32-32 32-32-14.355-32-32 14.355-32 32-32z\"]\n};\nvar faAngleDoubleDown = {\n prefix: 'fas',\n iconName: 'angle-double-down',\n icon: [320, 512, [], \"f103\", \"M143 256.3L7 120.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0L313 86.3c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.4 9.5-24.6 9.5-34 .1zm34 192l136-136c9.4-9.4 9.4-24.6 0-33.9l-22.6-22.6c-9.4-9.4-24.6-9.4-33.9 0L160 352.1l-96.4-96.4c-9.4-9.4-24.6-9.4-33.9 0L7 278.3c-9.4 9.4-9.4 24.6 0 33.9l136 136c9.4 9.5 24.6 9.5 34 .1z\"]\n};\nvar faAngleDoubleLeft = {\n prefix: 'fas',\n iconName: 'angle-double-left',\n icon: [448, 512, [], \"f100\", \"M223.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L319.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L393.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34zm-192 34l136 136c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9L127.9 256l96.4-96.4c9.4-9.4 9.4-24.6 0-33.9L201.7 103c-9.4-9.4-24.6-9.4-33.9 0l-136 136c-9.5 9.4-9.5 24.6-.1 34z\"]\n};\nvar faAngleDoubleRight = {\n prefix: 'fas',\n iconName: 'angle-double-right',\n icon: [448, 512, [], \"f101\", \"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34zm192-34l-136-136c-9.4-9.4-24.6-9.4-33.9 0l-22.6 22.6c-9.4 9.4-9.4 24.6 0 33.9l96.4 96.4-96.4 96.4c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l136-136c9.4-9.2 9.4-24.4 0-33.8z\"]\n};\nvar faAngleDoubleUp = {\n prefix: 'fas',\n iconName: 'angle-double-up',\n icon: [320, 512, [], \"f102\", \"M177 255.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 351.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 425.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1zm-34-192L7 199.7c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l96.4-96.4 96.4 96.4c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9l-136-136c-9.2-9.4-24.4-9.4-33.8 0z\"]\n};\nvar faAngleDown = {\n prefix: 'fas',\n iconName: 'angle-down',\n icon: [320, 512, [], \"f107\", \"M143 352.3L7 216.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.2 9.4-24.4 9.4-33.8 0z\"]\n};\nvar faAngleLeft = {\n prefix: 'fas',\n iconName: 'angle-left',\n icon: [256, 512, [], \"f104\", \"M31.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L127.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L201.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34z\"]\n};\nvar faAngleRight = {\n prefix: 'fas',\n iconName: 'angle-right',\n icon: [256, 512, [], \"f105\", \"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\"]\n};\nvar faAngleUp = {\n prefix: 'fas',\n iconName: 'angle-up',\n icon: [320, 512, [], \"f106\", \"M177 159.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 255.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 329.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1z\"]\n};\nvar faAngry = {\n prefix: 'fas',\n iconName: 'angry',\n icon: [496, 512, [], \"f556\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 240c0-9.3 4.1-17.5 10.5-23.4l-31-9.3c-8.5-2.5-13.3-11.5-10.7-19.9 2.5-8.5 11.4-13.2 19.9-10.7l80 24c8.5 2.5 13.3 11.5 10.7 19.9-2.1 6.9-8.4 11.4-15.3 11.4-.5 0-1.1-.2-1.7-.2.7 2.7 1.7 5.3 1.7 8.2 0 17.7-14.3 32-32 32S136 257.7 136 240zm168 154.2c-27.8-33.4-84.2-33.4-112.1 0-13.5 16.3-38.2-4.2-24.6-20.5 20-24 49.4-37.8 80.6-37.8s60.6 13.8 80.6 37.8c13.8 16.5-11.1 36.6-24.5 20.5zm76.6-186.9l-31 9.3c6.3 5.8 10.5 14.1 10.5 23.4 0 17.7-14.3 32-32 32s-32-14.3-32-32c0-2.9.9-5.6 1.7-8.2-.6.1-1.1.2-1.7.2-6.9 0-13.2-4.5-15.3-11.4-2.5-8.5 2.3-17.4 10.7-19.9l80-24c8.4-2.5 17.4 2.3 19.9 10.7 2.5 8.5-2.3 17.4-10.8 19.9z\"]\n};\nvar faAnkh = {\n prefix: 'fas',\n iconName: 'ankh',\n icon: [320, 512, [], \"f644\", \"M296 256h-44.62C272.46 222.01 288 181.65 288 144 288 55.63 230.69 0 160 0S32 55.63 32 144c0 37.65 15.54 78.01 36.62 112H24c-13.25 0-24 10.74-24 24v32c0 13.25 10.75 24 24 24h96v152c0 13.25 10.75 24 24 24h32c13.25 0 24-10.75 24-24V336h96c13.25 0 24-10.75 24-24v-32c0-13.26-10.75-24-24-24zM160 80c29.61 0 48 24.52 48 64 0 34.66-27.14 78.14-48 100.87-20.86-22.72-48-66.21-48-100.87 0-39.48 18.39-64 48-64z\"]\n};\nvar faAppleAlt = {\n prefix: 'fas',\n iconName: 'apple-alt',\n icon: [448, 512, [], \"f5d1\", \"M350.85 129c25.97 4.67 47.27 18.67 63.92 42 14.65 20.67 24.64 46.67 29.96 78 4.67 28.67 4.32 57.33-1 86-7.99 47.33-23.97 87-47.94 119-28.64 38.67-64.59 58-107.87 58-10.66 0-22.3-3.33-34.96-10-8.66-5.33-18.31-8-28.97-8s-20.3 2.67-28.97 8c-12.66 6.67-24.3 10-34.96 10-43.28 0-79.23-19.33-107.87-58-23.97-32-39.95-71.67-47.94-119-5.32-28.67-5.67-57.33-1-86 5.32-31.33 15.31-57.33 29.96-78 16.65-23.33 37.95-37.33 63.92-42 15.98-2.67 37.95-.33 65.92 7 23.97 6.67 44.28 14.67 60.93 24 16.65-9.33 36.96-17.33 60.93-24 27.98-7.33 49.96-9.67 65.94-7zm-54.94-41c-9.32 8.67-21.65 15-36.96 19-10.66 3.33-22.3 5-34.96 5l-14.98-1c-1.33-9.33-1.33-20 0-32 2.67-24 10.32-42.33 22.97-55 9.32-8.67 21.65-15 36.96-19 10.66-3.33 22.3-5 34.96-5l14.98 1 1 15c0 12.67-1.67 24.33-4.99 35-3.99 15.33-10.31 27.67-18.98 37z\"]\n};\nvar faArchive = {\n prefix: 'fas',\n iconName: 'archive',\n icon: [512, 512, [], \"f187\", \"M32 448c0 17.7 14.3 32 32 32h384c17.7 0 32-14.3 32-32V160H32v288zm160-212c0-6.6 5.4-12 12-12h104c6.6 0 12 5.4 12 12v8c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-8zM480 32H32C14.3 32 0 46.3 0 64v48c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16V64c0-17.7-14.3-32-32-32z\"]\n};\nvar faArchway = {\n prefix: 'fas',\n iconName: 'archway',\n icon: [576, 512, [], \"f557\", \"M560 448h-16V96H32v352H16.02c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16H176c8.84 0 16-7.16 16-16V320c0-53.02 42.98-96 96-96s96 42.98 96 96l.02 160v16c0 8.84 7.16 16 16 16H560c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm0-448H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h544c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16z\"]\n};\nvar faArrowAltCircleDown = {\n prefix: 'fas',\n iconName: 'arrow-alt-circle-down',\n icon: [512, 512, [], \"f358\", \"M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zM212 140v116h-70.9c-10.7 0-16.1 13-8.5 20.5l114.9 114.3c4.7 4.7 12.2 4.7 16.9 0l114.9-114.3c7.6-7.6 2.2-20.5-8.5-20.5H300V140c0-6.6-5.4-12-12-12h-64c-6.6 0-12 5.4-12 12z\"]\n};\nvar faArrowAltCircleLeft = {\n prefix: 'fas',\n iconName: 'arrow-alt-circle-left',\n icon: [512, 512, [], \"f359\", \"M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zm116-292H256v-70.9c0-10.7-13-16.1-20.5-8.5L121.2 247.5c-4.7 4.7-4.7 12.2 0 16.9l114.3 114.9c7.6 7.6 20.5 2.2 20.5-8.5V300h116c6.6 0 12-5.4 12-12v-64c0-6.6-5.4-12-12-12z\"]\n};\nvar faArrowAltCircleRight = {\n prefix: 'fas',\n iconName: 'arrow-alt-circle-right',\n icon: [512, 512, [], \"f35a\", \"M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zM140 300h116v70.9c0 10.7 13 16.1 20.5 8.5l114.3-114.9c4.7-4.7 4.7-12.2 0-16.9l-114.3-115c-7.6-7.6-20.5-2.2-20.5 8.5V212H140c-6.6 0-12 5.4-12 12v64c0 6.6 5.4 12 12 12z\"]\n};\nvar faArrowAltCircleUp = {\n prefix: 'fas',\n iconName: 'arrow-alt-circle-up',\n icon: [512, 512, [], \"f35b\", \"M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm292 116V256h70.9c10.7 0 16.1-13 8.5-20.5L264.5 121.2c-4.7-4.7-12.2-4.7-16.9 0l-115 114.3c-7.6 7.6-2.2 20.5 8.5 20.5H212v116c0 6.6 5.4 12 12 12h64c6.6 0 12-5.4 12-12z\"]\n};\nvar faArrowCircleDown = {\n prefix: 'fas',\n iconName: 'arrow-circle-down',\n icon: [512, 512, [], \"f0ab\", \"M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-143.6-28.9L288 302.6V120c0-13.3-10.7-24-24-24h-16c-13.3 0-24 10.7-24 24v182.6l-72.4-75.5c-9.3-9.7-24.8-9.9-34.3-.4l-10.9 11c-9.4 9.4-9.4 24.6 0 33.9L239 404.3c9.4 9.4 24.6 9.4 33.9 0l132.7-132.7c9.4-9.4 9.4-24.6 0-33.9l-10.9-11c-9.5-9.5-25-9.3-34.3.4z\"]\n};\nvar faArrowCircleLeft = {\n prefix: 'fas',\n iconName: 'arrow-circle-left',\n icon: [512, 512, [], \"f0a8\", \"M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zm28.9-143.6L209.4 288H392c13.3 0 24-10.7 24-24v-16c0-13.3-10.7-24-24-24H209.4l75.5-72.4c9.7-9.3 9.9-24.8.4-34.3l-11-10.9c-9.4-9.4-24.6-9.4-33.9 0L107.7 239c-9.4 9.4-9.4 24.6 0 33.9l132.7 132.7c9.4 9.4 24.6 9.4 33.9 0l11-10.9c9.5-9.5 9.3-25-.4-34.3z\"]\n};\nvar faArrowCircleRight = {\n prefix: 'fas',\n iconName: 'arrow-circle-right',\n icon: [512, 512, [], \"f0a9\", \"M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm-28.9 143.6l75.5 72.4H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h182.6l-75.5 72.4c-9.7 9.3-9.9 24.8-.4 34.3l11 10.9c9.4 9.4 24.6 9.4 33.9 0L404.3 273c9.4-9.4 9.4-24.6 0-33.9L271.6 106.3c-9.4-9.4-24.6-9.4-33.9 0l-11 10.9c-9.5 9.6-9.3 25.1.4 34.4z\"]\n};\nvar faArrowCircleUp = {\n prefix: 'fas',\n iconName: 'arrow-circle-up',\n icon: [512, 512, [], \"f0aa\", \"M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm143.6 28.9l72.4-75.5V392c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V209.4l72.4 75.5c9.3 9.7 24.8 9.9 34.3.4l10.9-11c9.4-9.4 9.4-24.6 0-33.9L273 107.7c-9.4-9.4-24.6-9.4-33.9 0L106.3 240.4c-9.4 9.4-9.4 24.6 0 33.9l10.9 11c9.6 9.5 25.1 9.3 34.4-.4z\"]\n};\nvar faArrowDown = {\n prefix: 'fas',\n iconName: 'arrow-down',\n icon: [448, 512, [], \"f063\", \"M413.1 222.5l22.2 22.2c9.4 9.4 9.4 24.6 0 33.9L241 473c-9.4 9.4-24.6 9.4-33.9 0L12.7 278.6c-9.4-9.4-9.4-24.6 0-33.9l22.2-22.2c9.5-9.5 25-9.3 34.3.4L184 343.4V56c0-13.3 10.7-24 24-24h32c13.3 0 24 10.7 24 24v287.4l114.8-120.5c9.3-9.8 24.8-10 34.3-.4z\"]\n};\nvar faArrowLeft = {\n prefix: 'fas',\n iconName: 'arrow-left',\n icon: [448, 512, [], \"f060\", \"M257.5 445.1l-22.2 22.2c-9.4 9.4-24.6 9.4-33.9 0L7 273c-9.4-9.4-9.4-24.6 0-33.9L201.4 44.7c9.4-9.4 24.6-9.4 33.9 0l22.2 22.2c9.5 9.5 9.3 25-.4 34.3L136.6 216H424c13.3 0 24 10.7 24 24v32c0 13.3-10.7 24-24 24H136.6l120.5 114.8c9.8 9.3 10 24.8.4 34.3z\"]\n};\nvar faArrowRight = {\n prefix: 'fas',\n iconName: 'arrow-right',\n icon: [448, 512, [], \"f061\", \"M190.5 66.9l22.2-22.2c9.4-9.4 24.6-9.4 33.9 0L441 239c9.4 9.4 9.4 24.6 0 33.9L246.6 467.3c-9.4 9.4-24.6 9.4-33.9 0l-22.2-22.2c-9.5-9.5-9.3-25 .4-34.3L311.4 296H24c-13.3 0-24-10.7-24-24v-32c0-13.3 10.7-24 24-24h287.4L190.9 101.2c-9.8-9.3-10-24.8-.4-34.3z\"]\n};\nvar faArrowUp = {\n prefix: 'fas',\n iconName: 'arrow-up',\n icon: [448, 512, [], \"f062\", \"M34.9 289.5l-22.2-22.2c-9.4-9.4-9.4-24.6 0-33.9L207 39c9.4-9.4 24.6-9.4 33.9 0l194.3 194.3c9.4 9.4 9.4 24.6 0 33.9L413 289.4c-9.5 9.5-25 9.3-34.3-.4L264 168.6V456c0 13.3-10.7 24-24 24h-32c-13.3 0-24-10.7-24-24V168.6L69.2 289.1c-9.3 9.8-24.8 10-34.3.4z\"]\n};\nvar faArrowsAlt = {\n prefix: 'fas',\n iconName: 'arrows-alt',\n icon: [512, 512, [], \"f0b2\", \"M352.201 425.775l-79.196 79.196c-9.373 9.373-24.568 9.373-33.941 0l-79.196-79.196c-15.119-15.119-4.411-40.971 16.971-40.97h51.162L228 284H127.196v51.162c0 21.382-25.851 32.09-40.971 16.971L7.029 272.937c-9.373-9.373-9.373-24.569 0-33.941L86.225 159.8c15.119-15.119 40.971-4.411 40.971 16.971V228H228V127.196h-51.23c-21.382 0-32.09-25.851-16.971-40.971l79.196-79.196c9.373-9.373 24.568-9.373 33.941 0l79.196 79.196c15.119 15.119 4.411 40.971-16.971 40.971h-51.162V228h100.804v-51.162c0-21.382 25.851-32.09 40.97-16.971l79.196 79.196c9.373 9.373 9.373 24.569 0 33.941L425.773 352.2c-15.119 15.119-40.971 4.411-40.97-16.971V284H284v100.804h51.23c21.382 0 32.09 25.851 16.971 40.971z\"]\n};\nvar faArrowsAltH = {\n prefix: 'fas',\n iconName: 'arrows-alt-h',\n icon: [512, 512, [], \"f337\", \"M377.941 169.941V216H134.059v-46.059c0-21.382-25.851-32.09-40.971-16.971L7.029 239.029c-9.373 9.373-9.373 24.568 0 33.941l86.059 86.059c15.119 15.119 40.971 4.411 40.971-16.971V296h243.882v46.059c0 21.382 25.851 32.09 40.971 16.971l86.059-86.059c9.373-9.373 9.373-24.568 0-33.941l-86.059-86.059c-15.119-15.12-40.971-4.412-40.971 16.97z\"]\n};\nvar faArrowsAltV = {\n prefix: 'fas',\n iconName: 'arrows-alt-v',\n icon: [256, 512, [], \"f338\", \"M214.059 377.941H168V134.059h46.059c21.382 0 32.09-25.851 16.971-40.971L144.971 7.029c-9.373-9.373-24.568-9.373-33.941 0L24.971 93.088c-15.119 15.119-4.411 40.971 16.971 40.971H88v243.882H41.941c-21.382 0-32.09 25.851-16.971 40.971l86.059 86.059c9.373 9.373 24.568 9.373 33.941 0l86.059-86.059c15.12-15.119 4.412-40.971-16.97-40.971z\"]\n};\nvar faAssistiveListeningSystems = {\n prefix: 'fas',\n iconName: 'assistive-listening-systems',\n icon: [512, 512, [], \"f2a2\", \"M216 260c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-44.112 35.888-80 80-80s80 35.888 80 80c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-13.234-10.767-24-24-24s-24 10.766-24 24zm24-176c-97.047 0-176 78.953-176 176 0 15.464 12.536 28 28 28s28-12.536 28-28c0-66.168 53.832-120 120-120s120 53.832 120 120c0 75.164-71.009 70.311-71.997 143.622L288 404c0 28.673-23.327 52-52 52-15.464 0-28 12.536-28 28s12.536 28 28 28c59.475 0 107.876-48.328 108-107.774.595-34.428 72-48.24 72-144.226 0-97.047-78.953-176-176-176zm-80 236c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zM32 448c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm480-187.993c0-1.518-.012-3.025-.045-4.531C510.076 140.525 436.157 38.47 327.994 1.511c-14.633-4.998-30.549 2.809-35.55 17.442-5 14.633 2.81 30.549 17.442 35.55 85.906 29.354 144.61 110.513 146.077 201.953l.003.188c.026 1.118.033 2.236.033 3.363 0 15.464 12.536 28 28 28s28.001-12.536 28.001-28zM152.971 439.029l-80-80L39.03 392.97l80 80 33.941-33.941z\"]\n};\nvar faAsterisk = {\n prefix: 'fas',\n iconName: 'asterisk',\n icon: [512, 512, [], \"f069\", \"M478.21 334.093L336 256l142.21-78.093c11.795-6.477 15.961-21.384 9.232-33.037l-19.48-33.741c-6.728-11.653-21.72-15.499-33.227-8.523L296 186.718l3.475-162.204C299.763 11.061 288.937 0 275.48 0h-38.96c-13.456 0-24.283 11.061-23.994 24.514L216 186.718 77.265 102.607c-11.506-6.976-26.499-3.13-33.227 8.523l-19.48 33.741c-6.728 11.653-2.562 26.56 9.233 33.037L176 256 33.79 334.093c-11.795 6.477-15.961 21.384-9.232 33.037l19.48 33.741c6.728 11.653 21.721 15.499 33.227 8.523L216 325.282l-3.475 162.204C212.237 500.939 223.064 512 236.52 512h38.961c13.456 0 24.283-11.061 23.995-24.514L296 325.282l138.735 84.111c11.506 6.976 26.499 3.13 33.227-8.523l19.48-33.741c6.728-11.653 2.563-26.559-9.232-33.036z\"]\n};\nvar faAt = {\n prefix: 'fas',\n iconName: 'at',\n icon: [512, 512, [], \"f1fa\", \"M256 8C118.941 8 8 118.919 8 256c0 137.059 110.919 248 248 248 48.154 0 95.342-14.14 135.408-40.223 12.005-7.815 14.625-24.288 5.552-35.372l-10.177-12.433c-7.671-9.371-21.179-11.667-31.373-5.129C325.92 429.757 291.314 440 256 440c-101.458 0-184-82.542-184-184S154.542 72 256 72c100.139 0 184 57.619 184 160 0 38.786-21.093 79.742-58.17 83.693-17.349-.454-16.91-12.857-13.476-30.024l23.433-121.11C394.653 149.75 383.308 136 368.225 136h-44.981a13.518 13.518 0 0 0-13.432 11.993l-.01.092c-14.697-17.901-40.448-21.775-59.971-21.775-74.58 0-137.831 62.234-137.831 151.46 0 65.303 36.785 105.87 96 105.87 26.984 0 57.369-15.637 74.991-38.333 9.522 34.104 40.613 34.103 70.71 34.103C462.609 379.41 504 307.798 504 232 504 95.653 394.023 8 256 8zm-21.68 304.43c-22.249 0-36.07-15.623-36.07-40.771 0-44.993 30.779-72.729 58.63-72.729 22.292 0 35.601 15.241 35.601 40.77 0 45.061-33.875 72.73-58.161 72.73z\"]\n};\nvar faAtlas = {\n prefix: 'fas',\n iconName: 'atlas',\n icon: [448, 512, [], \"f558\", \"M318.38 208h-39.09c-1.49 27.03-6.54 51.35-14.21 70.41 27.71-13.24 48.02-39.19 53.3-70.41zm0-32c-5.29-31.22-25.59-57.17-53.3-70.41 7.68 19.06 12.72 43.38 14.21 70.41h39.09zM224 97.31c-7.69 7.45-20.77 34.42-23.43 78.69h46.87c-2.67-44.26-15.75-71.24-23.44-78.69zm-41.08 8.28c-27.71 13.24-48.02 39.19-53.3 70.41h39.09c1.49-27.03 6.53-51.35 14.21-70.41zm0 172.82c-7.68-19.06-12.72-43.38-14.21-70.41h-39.09c5.28 31.22 25.59 57.17 53.3 70.41zM247.43 208h-46.87c2.66 44.26 15.74 71.24 23.43 78.69 7.7-7.45 20.78-34.43 23.44-78.69zM448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM224 64c70.69 0 128 57.31 128 128s-57.31 128-128 128S96 262.69 96 192 153.31 64 224 64zm160 384H96c-19.2 0-32-12.8-32-32s16-32 32-32h288v64z\"]\n};\nvar faAtom = {\n prefix: 'fas',\n iconName: 'atom',\n icon: [448, 512, [], \"f5d2\", \"M223.99908,224a32,32,0,1,0,32.00782,32A32.06431,32.06431,0,0,0,223.99908,224Zm214.172-96c-10.877-19.5-40.50979-50.75-116.27544-41.875C300.39168,34.875,267.63386,0,223.99908,0s-76.39066,34.875-97.89653,86.125C50.3369,77.375,20.706,108.5,9.82907,128-6.54984,157.375-5.17484,201.125,34.958,256-5.17484,310.875-6.54984,354.625,9.82907,384c29.13087,52.375,101.64652,43.625,116.27348,41.875C147.60842,477.125,180.36429,512,223.99908,512s76.3926-34.875,97.89652-86.125c14.62891,1.75,87.14456,10.5,116.27544-41.875C454.55,354.625,453.175,310.875,413.04017,256,453.175,201.125,454.55,157.375,438.171,128ZM63.33886,352c-4-7.25-.125-24.75,15.00391-48.25,6.87695,6.5,14.12891,12.875,21.88087,19.125,1.625,13.75,4,27.125,6.75,40.125C82.34472,363.875,67.09081,358.625,63.33886,352Zm36.88478-162.875c-7.752,6.25-15.00392,12.625-21.88087,19.125-15.12891-23.5-19.00392-41-15.00391-48.25,3.377-6.125,16.37891-11.5,37.88478-11.5,1.75,0,3.875.375,5.75.375C104.09864,162.25,101.84864,175.625,100.22364,189.125ZM223.99908,64c9.50195,0,22.25586,13.5,33.88282,37.25-11.252,3.75-22.50391,8-33.88282,12.875-11.377-4.875-22.62892-9.125-33.88283-12.875C201.74516,77.5,214.49712,64,223.99908,64Zm0,384c-9.502,0-22.25392-13.5-33.88283-37.25,11.25391-3.75,22.50587-8,33.88283-12.875C235.378,402.75,246.62994,407,257.8819,410.75,246.25494,434.5,233.501,448,223.99908,448Zm0-112a80,80,0,1,1,80-80A80.00023,80.00023,0,0,1,223.99908,336ZM384.6593,352c-3.625,6.625-19.00392,11.875-43.63479,11,2.752-13,5.127-26.375,6.752-40.125,7.75195-6.25,15.00391-12.625,21.87891-19.125C384.7843,327.25,388.6593,344.75,384.6593,352ZM369.65538,208.25c-6.875-6.5-14.127-12.875-21.87891-19.125-1.625-13.5-3.875-26.875-6.752-40.25,1.875,0,4.002-.375,5.752-.375,21.50391,0,34.50782,5.375,37.88283,11.5C388.6593,167.25,384.7843,184.75,369.65538,208.25Z\"]\n};\nvar faAudioDescription = {\n prefix: 'fas',\n iconName: 'audio-description',\n icon: [512, 512, [], \"f29e\", \"M162.925 238.709l8.822 30.655h-25.606l9.041-30.652c1.277-4.421 2.651-9.994 3.872-15.245 1.22 5.251 2.594 10.823 3.871 15.242zm166.474-32.099h-14.523v98.781h14.523c29.776 0 46.175-17.678 46.175-49.776 0-32.239-17.49-49.005-46.175-49.005zM512 112v288c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48zM245.459 336.139l-57.097-168A12.001 12.001 0 0 0 177 160h-35.894a12.001 12.001 0 0 0-11.362 8.139l-57.097 168C70.003 343.922 75.789 352 84.009 352h29.133a12 12 0 0 0 11.535-8.693l8.574-29.906h51.367l8.793 29.977A12 12 0 0 0 204.926 352h29.172c8.22 0 14.006-8.078 11.361-15.861zm184.701-80.525c0-58.977-37.919-95.614-98.96-95.614h-57.366c-6.627 0-12 5.373-12 12v168c0 6.627 5.373 12 12 12H331.2c61.041 0 98.96-36.933 98.96-96.386z\"]\n};\nvar faAward = {\n prefix: 'fas',\n iconName: 'award',\n icon: [384, 512, [], \"f559\", \"M97.12 362.63c-8.69-8.69-4.16-6.24-25.12-11.85-9.51-2.55-17.87-7.45-25.43-13.32L1.2 448.7c-4.39 10.77 3.81 22.47 15.43 22.03l52.69-2.01L105.56 507c8 8.44 22.04 5.81 26.43-4.96l52.05-127.62c-10.84 6.04-22.87 9.58-35.31 9.58-19.5 0-37.82-7.59-51.61-21.37zM382.8 448.7l-45.37-111.24c-7.56 5.88-15.92 10.77-25.43 13.32-21.07 5.64-16.45 3.18-25.12 11.85-13.79 13.78-32.12 21.37-51.62 21.37-12.44 0-24.47-3.55-35.31-9.58L252 502.04c4.39 10.77 18.44 13.4 26.43 4.96l36.25-38.28 52.69 2.01c11.62.44 19.82-11.27 15.43-22.03zM263 340c15.28-15.55 17.03-14.21 38.79-20.14 13.89-3.79 24.75-14.84 28.47-28.98 7.48-28.4 5.54-24.97 25.95-45.75 10.17-10.35 14.14-25.44 10.42-39.58-7.47-28.38-7.48-24.42 0-52.83 3.72-14.14-.25-29.23-10.42-39.58-20.41-20.78-18.47-17.36-25.95-45.75-3.72-14.14-14.58-25.19-28.47-28.98-27.88-7.61-24.52-5.62-44.95-26.41-10.17-10.35-25-14.4-38.89-10.61-27.87 7.6-23.98 7.61-51.9 0-13.89-3.79-28.72.25-38.89 10.61-20.41 20.78-17.05 18.8-44.94 26.41-13.89 3.79-24.75 14.84-28.47 28.98-7.47 28.39-5.54 24.97-25.95 45.75-10.17 10.35-14.15 25.44-10.42 39.58 7.47 28.36 7.48 24.4 0 52.82-3.72 14.14.25 29.23 10.42 39.59 20.41 20.78 18.47 17.35 25.95 45.75 3.72 14.14 14.58 25.19 28.47 28.98C104.6 325.96 106.27 325 121 340c13.23 13.47 33.84 15.88 49.74 5.82a39.676 39.676 0 0 1 42.53 0c15.89 10.06 36.5 7.65 49.73-5.82zM97.66 175.96c0-53.03 42.24-96.02 94.34-96.02s94.34 42.99 94.34 96.02-42.24 96.02-94.34 96.02-94.34-42.99-94.34-96.02z\"]\n};\nvar faBaby = {\n prefix: 'fas',\n iconName: 'baby',\n icon: [384, 512, [], \"f77c\", \"M192 160c44.2 0 80-35.8 80-80S236.2 0 192 0s-80 35.8-80 80 35.8 80 80 80zm-53.4 248.8l25.6-32-61.5-51.2L56.8 383c-11.4 14.2-11.7 34.4-.8 49l48 64c7.9 10.5 19.9 16 32 16 8.3 0 16.8-2.6 24-8 17.7-13.2 21.2-38.3 8-56l-29.4-39.2zm142.7-83.2l-61.5 51.2 25.6 32L216 448c-13.2 17.7-9.7 42.8 8 56 7.2 5.4 15.6 8 24 8 12.2 0 24.2-5.5 32-16l48-64c10.9-14.6 10.6-34.8-.8-49l-45.9-57.4zM376.7 145c-12.7-18.1-37.6-22.4-55.7-9.8l-40.6 28.5c-52.7 37-124.2 37-176.8 0L63 135.3C44.9 122.6 20 127 7.3 145-5.4 163.1-1 188 17 200.7l40.6 28.5c17 11.9 35.4 20.9 54.4 27.9V288h160v-30.8c19-7 37.4-16 54.4-27.9l40.6-28.5c18.1-12.8 22.4-37.7 9.7-55.8z\"]\n};\nvar faBabyCarriage = {\n prefix: 'fas',\n iconName: 'baby-carriage',\n icon: [512, 512, [], \"f77d\", \"M144.8 17c-11.3-17.8-37.2-22.8-54-9.4C35.3 51.9 0 118 0 192h256L144.8 17zM496 96h-48c-35.3 0-64 28.7-64 64v64H0c0 50.6 23 96.4 60.3 130.7C25.7 363.6 0 394.7 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-8.9-1.8-17.2-4.4-25.2 21.6 5.9 44.6 9.2 68.4 9.2s46.9-3.3 68.4-9.2c-2.7 8-4.4 16.3-4.4 25.2 0 44.2 35.8 80 80 80s80-35.8 80-80c0-37.3-25.7-68.4-60.3-77.3C425 320.4 448 274.6 448 224v-64h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM80 464c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm320-32c0 17.6-14.4 32-32 32s-32-14.4-32-32 14.4-32 32-32 32 14.4 32 32z\"]\n};\nvar faBackspace = {\n prefix: 'fas',\n iconName: 'backspace',\n icon: [640, 512, [], \"f55a\", \"M576 64H205.26A63.97 63.97 0 0 0 160 82.75L9.37 233.37c-12.5 12.5-12.5 32.76 0 45.25L160 429.25c12 12 28.28 18.75 45.25 18.75H576c35.35 0 64-28.65 64-64V128c0-35.35-28.65-64-64-64zm-84.69 254.06c6.25 6.25 6.25 16.38 0 22.63l-22.62 22.62c-6.25 6.25-16.38 6.25-22.63 0L384 301.25l-62.06 62.06c-6.25 6.25-16.38 6.25-22.63 0l-22.62-22.62c-6.25-6.25-6.25-16.38 0-22.63L338.75 256l-62.06-62.06c-6.25-6.25-6.25-16.38 0-22.63l22.62-22.62c6.25-6.25 16.38-6.25 22.63 0L384 210.75l62.06-62.06c6.25-6.25 16.38-6.25 22.63 0l22.62 22.62c6.25 6.25 6.25 16.38 0 22.63L429.25 256l62.06 62.06z\"]\n};\nvar faBackward = {\n prefix: 'fas',\n iconName: 'backward',\n icon: [512, 512, [], \"f04a\", \"M11.5 280.6l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2zm256 0l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2z\"]\n};\nvar faBacon = {\n prefix: 'fas',\n iconName: 'bacon',\n icon: [576, 512, [], \"f7e5\", \"M218.92 336.39c34.89-34.89 44.2-59.7 54.05-86 10.61-28.29 21.59-57.54 61.37-97.34s69.05-50.77 97.35-61.38c23.88-9 46.64-17.68 76.79-45.37L470.81 8.91a31 31 0 0 0-40.18-2.83c-13.64 10.1-25.15 14.39-41 20.3C247 79.52 209.26 191.29 200.65 214.1c-29.75 78.83-89.55 94.68-98.72 98.09-24.86 9.26-54.73 20.38-91.07 50.36C-3 374-3.63 395 9.07 407.61l35.76 35.51C80 410.52 107 400.15 133 390.39c26.27-9.84 51.06-19.12 85.92-54zm348-232l-35.75-35.51c-35.19 32.63-62.18 43-88.25 52.79-26.26 9.85-51.06 19.16-85.95 54s-44.19 59.69-54 86C292.33 290 281.34 319.22 241.55 359s-69 50.73-97.3 61.32c-23.86 9-46.61 17.66-76.72 45.33l37.68 37.43a31 31 0 0 0 40.18 2.82c13.6-10.06 25.09-14.34 40.94-20.24 142.2-53 180-164.1 188.94-187.69C405 219.18 464.8 203.3 474 199.86c24.87-9.27 54.74-20.4 91.11-50.41 13.89-11.4 14.52-32.45 1.82-45.05z\"]\n};\nvar faBacteria = {\n prefix: 'fas',\n iconName: 'bacteria',\n icon: [640, 512, [], \"e059\", \"M272.35,226.4A17.71,17.71,0,0,0,281.46,203l-4-9.08a121.29,121.29,0,0,1,12.36-3.08A83.34,83.34,0,0,0,323.57,177l10,9a17.76,17.76,0,1,0,23.92-26.27l-9.72-8.76a83.12,83.12,0,0,0,11.65-48.18l11.85-3.51a17.73,17.73,0,1,0-10.15-34l-11.34,3.36a84,84,0,0,0-36.38-35.57l2.84-10.85a17.8,17.8,0,0,0-34.47-8.93l-2.82,10.78a83.25,83.25,0,0,0-16.74,1.1C250.83,27,240,30.22,229.1,33.39l-3.38-9.46a17.8,17.8,0,0,0-33.56,11.89l3.49,9.8a286.74,286.74,0,0,0-43.94,23.57l-6.32-8.43a17.9,17.9,0,0,0-24.94-3.6A17.69,17.69,0,0,0,116.84,82l6.45,8.61a286.59,286.59,0,0,0-34.95,35.33l-8.82-6.42a17.84,17.84,0,0,0-24.89,3.86,17.66,17.66,0,0,0,3.88,24.77l8.88,6.47a286.6,286.6,0,0,0-23,43.91l-10.48-3.59a17.73,17.73,0,1,0-11.59,33.52L32.67,232c-2.79,10-5.79,19.84-7.52,30.22a83.16,83.16,0,0,0-.82,19l-11.58,3.43a17.73,17.73,0,1,0,10.13,34l11.27-3.33a83.51,83.51,0,0,0,36.39,35.43l-2.88,11.06a17.81,17.81,0,0,0,34.48,8.92l2.87-11c1,0,2.07.26,3.1.26a83.39,83.39,0,0,0,45.65-13.88l8.59,8.8a17.77,17.77,0,0,0,25.56-24.7l-9.14-9.37a83.41,83.41,0,0,0,12.08-31.05,119.08,119.08,0,0,1,3.87-15.53l9,4.22a17.74,17.74,0,1,0,15.15-32.09l-8.8-4.11c.67-1,1.2-2.08,1.9-3.05a119.89,119.89,0,0,1,7.87-9.41,121.73,121.73,0,0,1,11.65-11.4,119.49,119.49,0,0,1,9.94-7.82c1.12-.77,2.32-1.42,3.47-2.15l3.92,8.85a17.86,17.86,0,0,0,16.32,10.58A18.14,18.14,0,0,0,272.35,226.4ZM128,256a32,32,0,1,1,32-32A32,32,0,0,1,128,256Zm80-96a16,16,0,1,1,16-16A16,16,0,0,1,208,160Zm431.26,45.3a17.79,17.79,0,0,0-17.06-12.69,17.55,17.55,0,0,0-5.08.74l-11.27,3.33a83.61,83.61,0,0,0-36.39-35.43l2.88-11.06a17.81,17.81,0,0,0-34.48-8.91l-2.87,11c-1,0-2.07-.26-3.1-.26a83.32,83.32,0,0,0-45.65,13.89l-8.59-8.81a17.77,17.77,0,0,0-25.56,24.7l9.14,9.37a83.28,83.28,0,0,0-12.08,31.06,119.34,119.34,0,0,1-3.87,15.52l-9-4.22a17.74,17.74,0,1,0-15.15,32.09l8.8,4.11c-.67,1-1.2,2.08-1.89,3.05a117.71,117.71,0,0,1-7.94,9.47,119,119,0,0,1-11.57,11.33,121.59,121.59,0,0,1-10,7.83c-1.12.77-2.32,1.42-3.47,2.15l-3.92-8.85a17.86,17.86,0,0,0-16.32-10.58,18.14,18.14,0,0,0-7.18,1.5A17.71,17.71,0,0,0,358.54,309l4,9.08a118.71,118.71,0,0,1-12.36,3.08,83.34,83.34,0,0,0-33.77,13.9l-10-9a17.77,17.77,0,1,0-23.92,26.28l9.72,8.75a83.12,83.12,0,0,0-11.65,48.18l-11.86,3.51a17.73,17.73,0,1,0,10.16,34l11.34-3.36A84,84,0,0,0,326.61,479l-2.84,10.85a17.8,17.8,0,0,0,34.47,8.93L361.06,488a83.3,83.3,0,0,0,16.74-1.1c11.37-1.89,22.24-5.07,33.1-8.24l3.38,9.46a17.8,17.8,0,0,0,33.56-11.89l-3.49-9.79a287.66,287.66,0,0,0,43.94-23.58l6.32,8.43a17.88,17.88,0,0,0,24.93,3.6A17.67,17.67,0,0,0,523.16,430l-6.45-8.61a287.37,287.37,0,0,0,34.95-35.34l8.82,6.42a17.76,17.76,0,1,0,21-28.63l-8.88-6.46a287.17,287.17,0,0,0,23-43.92l10.48,3.59a17.73,17.73,0,1,0,11.59-33.52L607.33,280c2.79-10,5.79-19.84,7.52-30.21a83.27,83.27,0,0,0,.82-19.05l11.58-3.43A17.7,17.7,0,0,0,639.26,205.3ZM416,416a32,32,0,1,1,32-32A32,32,0,0,1,416,416Z\"]\n};\nvar faBacterium = {\n prefix: 'fas',\n iconName: 'bacterium',\n icon: [512, 512, [], \"e05a\", \"M511,102.93A23.76,23.76,0,0,0,481.47,87l-15.12,4.48a111.85,111.85,0,0,0-48.5-47.42l3.79-14.47a23.74,23.74,0,0,0-46-11.91l-3.76,14.37a111.94,111.94,0,0,0-22.33,1.47,386.74,386.74,0,0,0-44.33,10.41l-4.3-12a23.74,23.74,0,0,0-44.75,15.85l4.3,12.05a383.4,383.4,0,0,0-58.69,31.83l-8-10.63a23.85,23.85,0,0,0-33.24-4.8,23.57,23.57,0,0,0-4.83,33.09l8,10.63a386.14,386.14,0,0,0-46.7,47.44l-11-8a23.68,23.68,0,1,0-28,38.17l11.09,8.06a383.45,383.45,0,0,0-30.92,58.75l-12.93-4.43a23.65,23.65,0,1,0-15.47,44.69l13,4.48a385.81,385.81,0,0,0-9.3,40.53A111.58,111.58,0,0,0,32.44,375L17,379.56a23.64,23.64,0,0,0,13.51,45.31l15-4.44a111.49,111.49,0,0,0,48.53,47.24l-3.85,14.75a23.66,23.66,0,0,0,17,28.83,24.7,24.7,0,0,0,6,.75,23.73,23.73,0,0,0,23-17.7L140,479.67c1.37.05,2.77.35,4.13.35A111.22,111.22,0,0,0,205,461.5l11.45,11.74a23.7,23.7,0,0,0,34.08-32.93l-12.19-12.5a111,111,0,0,0,16.11-41.4,158.69,158.69,0,0,1,5.16-20.71l12,5.64a23.66,23.66,0,1,0,20.19-42.79l-11.72-5.49c.89-1.32,1.59-2.77,2.52-4.06a157.86,157.86,0,0,1,10.46-12.49,159.5,159.5,0,0,1,15.59-15.28,162.18,162.18,0,0,1,13.23-10.4c1.5-1,3.1-1.89,4.63-2.87l5.23,11.8a23.74,23.74,0,0,0,43.48-19.08l-5.36-12.11a158.87,158.87,0,0,1,16.49-4.1,111,111,0,0,0,45-18.54l13.33,12a23.69,23.69,0,1,0,31.88-35l-12.94-11.67A110.83,110.83,0,0,0,479.21,137L495,132.32A23.61,23.61,0,0,0,511,102.93ZM160,368a48,48,0,1,1,48-48A48,48,0,0,1,160,368Zm80-136a24,24,0,1,1,24-24A24,24,0,0,1,240,232Z\"]\n};\nvar faBahai = {\n prefix: 'fas',\n iconName: 'bahai',\n icon: [512, 512, [], \"f666\", \"M496.25 202.52l-110-15.44 41.82-104.34c6.67-16.64-11.6-32.18-26.59-22.63L307.44 120 273.35 12.82C270.64 4.27 263.32 0 256 0c-7.32 0-14.64 4.27-17.35 12.82l-34.09 107.19-94.04-59.89c-14.99-9.55-33.25 5.99-26.59 22.63l41.82 104.34-110 15.43c-17.54 2.46-21.68 26.27-6.03 34.67l98.16 52.66-74.48 83.54c-10.92 12.25-1.72 30.93 13.29 30.93 1.31 0 2.67-.14 4.07-.45l108.57-23.65-4.11 112.55c-.43 11.65 8.87 19.22 18.41 19.22 5.15 0 10.39-2.21 14.2-7.18l68.18-88.9 68.18 88.9c3.81 4.97 9.04 7.18 14.2 7.18 9.54 0 18.84-7.57 18.41-19.22l-4.11-112.55 108.57 23.65c17.36 3.76 29.21-17.2 17.35-30.49l-74.48-83.54 98.16-52.66c15.64-8.39 11.5-32.2-6.04-34.66zM338.51 311.68l-51.89-11.3 1.97 53.79L256 311.68l-32.59 42.49 1.96-53.79-51.89 11.3 35.6-39.93-46.92-25.17 52.57-7.38-19.99-49.87 44.95 28.62L256 166.72l16.29 51.23 44.95-28.62-19.99 49.87 52.57 7.38-46.92 25.17 35.61 39.93z\"]\n};\nvar faBalanceScale = {\n prefix: 'fas',\n iconName: 'balance-scale',\n icon: [640, 512, [], \"f24e\", \"M256 336h-.02c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0C-2.06 328.75.02 320.33.02 336H0c0 44.18 57.31 80 128 80s128-35.82 128-80zM128 176l72 144H56l72-144zm511.98 160c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0-87.12 174.26-85.04 165.84-85.04 181.51H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02zM440 320l72-144 72 144H440zm88 128H352V153.25c23.51-10.29 41.16-31.48 46.39-57.25H528c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16H383.64C369.04 12.68 346.09 0 320 0s-49.04 12.68-63.64 32H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h129.61c5.23 25.76 22.87 46.96 46.39 57.25V448H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faBalanceScaleLeft = {\n prefix: 'fas',\n iconName: 'balance-scale-left',\n icon: [640, 512, [], \"f515\", \"M528 448H352V153.25c20.42-8.94 36.1-26.22 43.38-47.47l132-44.26c8.38-2.81 12.89-11.88 10.08-20.26l-10.17-30.34C524.48 2.54 515.41-1.97 507.03.84L389.11 40.37C375.3 16.36 349.69 0 320 0c-44.18 0-80 35.82-80 80 0 3.43.59 6.71 1.01 10.03l-128.39 43.05c-8.38 2.81-12.89 11.88-10.08 20.26l10.17 30.34c2.81 8.38 11.88 12.89 20.26 10.08l142.05-47.63c4.07 2.77 8.43 5.12 12.99 7.12V496c0 8.84 7.16 16 16 16h224c8.84 0 16-7.16 16-16v-32c-.01-8.84-7.17-16-16.01-16zm111.98-144c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0-87.12 174.26-85.04 165.84-85.04 181.51H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02zM440 288l72-144 72 144H440zm-269.07-37.51c-17.65-35.29-68.19-35.36-85.87 0C-2.06 424.75.02 416.33.02 432H0c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02c0-16.18 1.34-8.73-85.05-181.51zM56 416l72-144 72 144H56z\"]\n};\nvar faBalanceScaleRight = {\n prefix: 'fas',\n iconName: 'balance-scale-right',\n icon: [640, 512, [], \"f516\", \"M96 464v32c0 8.84 7.16 16 16 16h224c8.84 0 16-7.16 16-16V153.25c4.56-2 8.92-4.35 12.99-7.12l142.05 47.63c8.38 2.81 17.45-1.71 20.26-10.08l10.17-30.34c2.81-8.38-1.71-17.45-10.08-20.26l-128.4-43.05c.42-3.32 1.01-6.6 1.01-10.03 0-44.18-35.82-80-80-80-29.69 0-55.3 16.36-69.11 40.37L132.96.83c-8.38-2.81-17.45 1.71-20.26 10.08l-10.17 30.34c-2.81 8.38 1.71 17.45 10.08 20.26l132 44.26c7.28 21.25 22.96 38.54 43.38 47.47V448H112c-8.84 0-16 7.16-16 16zM0 304c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02c0-15.67 2.08-7.25-85.05-181.51-17.68-35.36-68.22-35.29-85.87 0C-1.32 295.27.02 287.82.02 304H0zm56-16l72-144 72 144H56zm328.02 144H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02c0-15.67 2.08-7.25-85.05-181.51-17.68-35.36-68.22-35.29-85.87 0-86.38 172.78-85.04 165.33-85.04 181.51zM440 416l72-144 72 144H440z\"]\n};\nvar faBan = {\n prefix: 'fas',\n iconName: 'ban',\n icon: [512, 512, [], \"f05e\", \"M256 8C119.034 8 8 119.033 8 256s111.034 248 248 248 248-111.034 248-248S392.967 8 256 8zm130.108 117.892c65.448 65.448 70 165.481 20.677 235.637L150.47 105.216c70.204-49.356 170.226-44.735 235.638 20.676zM125.892 386.108c-65.448-65.448-70-165.481-20.677-235.637L361.53 406.784c-70.203 49.356-170.226 44.736-235.638-20.676z\"]\n};\nvar faBandAid = {\n prefix: 'fas',\n iconName: 'band-aid',\n icon: [640, 512, [], \"f462\", \"M0 160v192c0 35.3 28.7 64 64 64h96V96H64c-35.3 0-64 28.7-64 64zm576-64h-96v320h96c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64zM192 416h256V96H192v320zm176-232c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm0 96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-96-96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm0 96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24z\"]\n};\nvar faBarcode = {\n prefix: 'fas',\n iconName: 'barcode',\n icon: [512, 512, [], \"f02a\", \"M0 448V64h18v384H0zm26.857-.273V64H36v383.727h-9.143zm27.143 0V64h8.857v383.727H54zm44.857 0V64h8.857v383.727h-8.857zm36 0V64h17.714v383.727h-17.714zm44.857 0V64h8.857v383.727h-8.857zm18 0V64h8.857v383.727h-8.857zm18 0V64h8.857v383.727h-8.857zm35.715 0V64h18v383.727h-18zm44.857 0V64h18v383.727h-18zm35.999 0V64h18.001v383.727h-18.001zm36.001 0V64h18.001v383.727h-18.001zm26.857 0V64h18v383.727h-18zm45.143 0V64h26.857v383.727h-26.857zm35.714 0V64h9.143v383.727H476zm18 .273V64h18v384h-18z\"]\n};\nvar faBars = {\n prefix: 'fas',\n iconName: 'bars',\n icon: [448, 512, [], \"f0c9\", \"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"]\n};\nvar faBaseballBall = {\n prefix: 'fas',\n iconName: 'baseball-ball',\n icon: [496, 512, [], \"f433\", \"M368.5 363.9l28.8-13.9c11.1 22.9 26 43.2 44.1 60.9 34-42.5 54.5-96.3 54.5-154.9 0-58.5-20.4-112.2-54.2-154.6-17.8 17.3-32.6 37.1-43.6 59.5l-28.7-14.1c12.8-26 30-49 50.8-69C375.6 34.7 315 8 248 8 181.1 8 120.5 34.6 75.9 77.7c20.7 19.9 37.9 42.9 50.7 68.8l-28.7 14.1c-11-22.3-25.7-42.1-43.5-59.4C20.4 143.7 0 197.4 0 256c0 58.6 20.4 112.3 54.4 154.7 18.2-17.7 33.2-38 44.3-61l28.8 13.9c-12.9 26.7-30.3 50.3-51.5 70.7 44.5 43.1 105.1 69.7 172 69.7 66.8 0 127.3-26.5 171.9-69.5-21.1-20.4-38.5-43.9-51.4-70.6zm-228.3-32l-30.5-9.8c14.9-46.4 12.7-93.8-.6-134l30.4-10c15 45.6 18 99.9.7 153.8zm216.3-153.4l30.4 10c-13.2 40.1-15.5 87.5-.6 134l-30.5 9.8c-17.3-54-14.3-108.3.7-153.8z\"]\n};\nvar faBasketballBall = {\n prefix: 'fas',\n iconName: 'basketball-ball',\n icon: [496, 512, [], \"f434\", \"M212.3 10.3c-43.8 6.3-86.2 24.1-122.2 53.8l77.4 77.4c27.8-35.8 43.3-81.2 44.8-131.2zM248 222L405.9 64.1c-42.4-35-93.6-53.5-145.5-56.1-1.2 63.9-21.5 122.3-58.7 167.7L248 222zM56.1 98.1c-29.7 36-47.5 78.4-53.8 122.2 50-1.5 95.5-17 131.2-44.8L56.1 98.1zm272.2 204.2c45.3-37.1 103.7-57.4 167.7-58.7-2.6-51.9-21.1-103.1-56.1-145.5L282 256l46.3 46.3zM248 290L90.1 447.9c42.4 34.9 93.6 53.5 145.5 56.1 1.3-64 21.6-122.4 58.7-167.7L248 290zm191.9 123.9c29.7-36 47.5-78.4 53.8-122.2-50.1 1.6-95.5 17.1-131.2 44.8l77.4 77.4zM167.7 209.7C122.3 246.9 63.9 267.3 0 268.4c2.6 51.9 21.1 103.1 56.1 145.5L214 256l-46.3-46.3zm116 292c43.8-6.3 86.2-24.1 122.2-53.8l-77.4-77.4c-27.7 35.7-43.2 81.2-44.8 131.2z\"]\n};\nvar faBath = {\n prefix: 'fas',\n iconName: 'bath',\n icon: [512, 512, [], \"f2cd\", \"M32,384a95.4,95.4,0,0,0,32,71.09V496a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V480H384v16a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V455.09A95.4,95.4,0,0,0,480,384V336H32ZM496,256H80V69.25a21.26,21.26,0,0,1,36.28-15l19.27,19.26c-13.13,29.88-7.61,59.11,8.62,79.73l-.17.17A16,16,0,0,0,144,176l11.31,11.31a16,16,0,0,0,22.63,0L283.31,81.94a16,16,0,0,0,0-22.63L272,48a16,16,0,0,0-22.62,0l-.17.17c-20.62-16.23-49.83-21.75-79.73-8.62L150.22,20.28A69.25,69.25,0,0,0,32,69.25V256H16A16,16,0,0,0,0,272v16a16,16,0,0,0,16,16H496a16,16,0,0,0,16-16V272A16,16,0,0,0,496,256Z\"]\n};\nvar faBatteryEmpty = {\n prefix: 'fas',\n iconName: 'battery-empty',\n icon: [640, 512, [], \"f244\", \"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48z\"]\n};\nvar faBatteryFull = {\n prefix: 'fas',\n iconName: 'battery-full',\n icon: [640, 512, [], \"f240\", \"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-48 96H96v128h416V192z\"]\n};\nvar faBatteryHalf = {\n prefix: 'fas',\n iconName: 'battery-half',\n icon: [640, 512, [], \"f242\", \"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-240 96H96v128h224V192z\"]\n};\nvar faBatteryQuarter = {\n prefix: 'fas',\n iconName: 'battery-quarter',\n icon: [640, 512, [], \"f243\", \"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-336 96H96v128h128V192z\"]\n};\nvar faBatteryThreeQuarters = {\n prefix: 'fas',\n iconName: 'battery-three-quarters',\n icon: [640, 512, [], \"f241\", \"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-144 96H96v128h320V192z\"]\n};\nvar faBed = {\n prefix: 'fas',\n iconName: 'bed',\n icon: [640, 512, [], \"f236\", \"M176 256c44.11 0 80-35.89 80-80s-35.89-80-80-80-80 35.89-80 80 35.89 80 80 80zm352-128H304c-8.84 0-16 7.16-16 16v144H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v352c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h512v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V240c0-61.86-50.14-112-112-112z\"]\n};\nvar faBeer = {\n prefix: 'fas',\n iconName: 'beer',\n icon: [448, 512, [], \"f0fc\", \"M368 96h-48V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56v400c0 13.255 10.745 24 24 24h272c13.255 0 24-10.745 24-24v-42.11l80.606-35.977C429.396 365.063 448 336.388 448 304.86V176c0-44.112-35.888-80-80-80zm16 208.86a16.018 16.018 0 0 1-9.479 14.611L320 343.805V160h48c8.822 0 16 7.178 16 16v128.86zM208 384c-8.836 0-16-7.164-16-16V144c0-8.836 7.164-16 16-16s16 7.164 16 16v224c0 8.836-7.164 16-16 16zm-96 0c-8.836 0-16-7.164-16-16V144c0-8.836 7.164-16 16-16s16 7.164 16 16v224c0 8.836-7.164 16-16 16z\"]\n};\nvar faBell = {\n prefix: 'fas',\n iconName: 'bell',\n icon: [448, 512, [], \"f0f3\", \"M224 512c35.32 0 63.97-28.65 63.97-64H160.03c0 35.35 28.65 64 63.97 64zm215.39-149.71c-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84C118.56 68.1 64.08 130.3 64.08 208c0 102.3-36.15 133.53-55.47 154.29-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h383.8c19.12 0 32-15.6 32.1-32 .05-7.55-2.61-15.27-8.61-21.71z\"]\n};\nvar faBellSlash = {\n prefix: 'fas',\n iconName: 'bell-slash',\n icon: [640, 512, [], \"f1f6\", \"M633.82 458.1l-90.62-70.05c.19-1.38.8-2.66.8-4.06.05-7.55-2.61-15.27-8.61-21.71-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84c-40.33 8.38-74.66 31.07-97.59 62.57L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.35 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.42-6.97 4.17-17.02-2.81-22.45zM157.23 251.54c-8.61 67.96-36.41 93.33-52.62 110.75-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h241.92L157.23 251.54zM320 512c35.32 0 63.97-28.65 63.97-64H256.03c0 35.35 28.65 64 63.97 64z\"]\n};\nvar faBezierCurve = {\n prefix: 'fas',\n iconName: 'bezier-curve',\n icon: [640, 512, [], \"f55b\", \"M368 32h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zM208 88h-84.75C113.75 64.56 90.84 48 64 48 28.66 48 0 76.65 0 112s28.66 64 64 64c26.84 0 49.75-16.56 59.25-40h79.73c-55.37 32.52-95.86 87.32-109.54 152h49.4c11.3-41.61 36.77-77.21 71.04-101.56-3.7-8.08-5.88-16.99-5.88-26.44V88zm-48 232H64c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zM576 48c-26.84 0-49.75 16.56-59.25 40H432v72c0 9.45-2.19 18.36-5.88 26.44 34.27 24.35 59.74 59.95 71.04 101.56h49.4c-13.68-64.68-54.17-119.48-109.54-152h79.73c9.5 23.44 32.41 40 59.25 40 35.34 0 64-28.65 64-64s-28.66-64-64-64zm0 272h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z\"]\n};\nvar faBible = {\n prefix: 'fas',\n iconName: 'bible',\n icon: [448, 512, [], \"f647\", \"M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM144 144c0-8.84 7.16-16 16-16h48V80c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v48h48c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16h-48v112c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16V192h-48c-8.84 0-16-7.16-16-16v-32zm236.8 304H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8v64z\"]\n};\nvar faBicycle = {\n prefix: 'fas',\n iconName: 'bicycle',\n icon: [640, 512, [], \"f206\", \"M512.509 192.001c-16.373-.064-32.03 2.955-46.436 8.495l-77.68-125.153A24 24 0 0 0 368.001 64h-64c-8.837 0-16 7.163-16 16v16c0 8.837 7.163 16 16 16h50.649l14.896 24H256.002v-16c0-8.837-7.163-16-16-16h-87.459c-13.441 0-24.777 10.999-24.536 24.437.232 13.044 10.876 23.563 23.995 23.563h48.726l-29.417 47.52c-13.433-4.83-27.904-7.483-42.992-7.52C58.094 191.83.412 249.012.002 319.236-.413 390.279 57.055 448 128.002 448c59.642 0 109.758-40.793 123.967-96h52.033a24 24 0 0 0 20.406-11.367L410.37 201.77l14.938 24.067c-25.455 23.448-41.385 57.081-41.307 94.437.145 68.833 57.899 127.051 126.729 127.719 70.606.685 128.181-55.803 129.255-125.996 1.086-70.941-56.526-129.72-127.476-129.996zM186.75 265.772c9.727 10.529 16.673 23.661 19.642 38.228h-43.306l23.664-38.228zM128.002 400c-44.112 0-80-35.888-80-80s35.888-80 80-80c5.869 0 11.586.653 17.099 1.859l-45.505 73.509C89.715 331.327 101.213 352 120.002 352h81.3c-12.37 28.225-40.562 48-73.3 48zm162.63-96h-35.624c-3.96-31.756-19.556-59.894-42.383-80.026L237.371 184h127.547l-74.286 120zm217.057 95.886c-41.036-2.165-74.049-35.692-75.627-76.755-.812-21.121 6.633-40.518 19.335-55.263l44.433 71.586c4.66 7.508 14.524 9.816 22.032 5.156l13.594-8.437c7.508-4.66 9.817-14.524 5.156-22.032l-44.468-71.643a79.901 79.901 0 0 1 19.858-2.497c44.112 0 80 35.888 80 80-.001 45.54-38.252 82.316-84.313 79.885z\"]\n};\nvar faBiking = {\n prefix: 'fas',\n iconName: 'biking',\n icon: [640, 512, [], \"f84a\", \"M400 96a48 48 0 1 0-48-48 48 48 0 0 0 48 48zm-4 121a31.9 31.9 0 0 0 20 7h64a32 32 0 0 0 0-64h-52.78L356 103a31.94 31.94 0 0 0-40.81.68l-112 96a32 32 0 0 0 3.08 50.92L288 305.12V416a32 32 0 0 0 64 0V288a32 32 0 0 0-14.25-26.62l-41.36-27.57 58.25-49.92zm116 39a128 128 0 1 0 128 128 128 128 0 0 0-128-128zm0 192a64 64 0 1 1 64-64 64 64 0 0 1-64 64zM128 256a128 128 0 1 0 128 128 128 128 0 0 0-128-128zm0 192a64 64 0 1 1 64-64 64 64 0 0 1-64 64z\"]\n};\nvar faBinoculars = {\n prefix: 'fas',\n iconName: 'binoculars',\n icon: [512, 512, [], \"f1e5\", \"M416 48c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v48h96V48zM63.91 159.99C61.4 253.84 3.46 274.22 0 404v44c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32V288h32V128H95.84c-17.63 0-31.45 14.37-31.93 31.99zm384.18 0c-.48-17.62-14.3-31.99-31.93-31.99H320v160h32v160c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-44c-3.46-129.78-61.4-150.16-63.91-244.01zM176 32h-64c-8.84 0-16 7.16-16 16v48h96V48c0-8.84-7.16-16-16-16zm48 256h64V128h-64v160z\"]\n};\nvar faBiohazard = {\n prefix: 'fas',\n iconName: 'biohazard',\n icon: [576, 512, [], \"f780\", \"M287.9 112c18.6 0 36.2 3.8 52.8 9.6 13.3-10.3 23.6-24.3 29.5-40.7-25.2-10.9-53-17-82.2-17-29.1 0-56.9 6-82.1 16.9 5.9 16.4 16.2 30.4 29.5 40.7 16.5-5.7 34-9.5 52.5-9.5zM163.6 438.7c12-11.8 20.4-26.4 24.5-42.4-32.9-26.4-54.8-65.3-58.9-109.6-8.5-2.8-17.2-4.6-26.4-4.6-7.6 0-15.2 1-22.5 3.1 4.1 62.8 35.8 118 83.3 153.5zm224.2-42.6c4.1 16 12.5 30.7 24.5 42.5 47.4-35.5 79.1-90.7 83-153.5-7.2-2-14.7-3-22.2-3-9.2 0-18 1.9-26.6 4.7-4.1 44.2-26 82.9-58.7 109.3zm113.5-205c-17.6-10.4-36.3-16.6-55.3-19.9 6-17.7 10-36.4 10-56.2 0-41-14.5-80.8-41-112.2-2.5-3-6.6-3.7-10-1.8-3.3 1.9-4.8 6-3.6 9.7 4.5 13.8 6.6 26.3 6.6 38.5 0 67.8-53.8 122.9-120 122.9S168 117 168 49.2c0-12.1 2.2-24.7 6.6-38.5 1.2-3.7-.3-7.8-3.6-9.7-3.4-1.9-7.5-1.2-10 1.8C134.6 34.2 120 74 120 115c0 19.8 3.9 38.5 10 56.2-18.9 3.3-37.7 9.5-55.3 19.9-34.6 20.5-61 53.3-74.3 92.4-1.3 3.7.2 7.7 3.5 9.8 3.3 2 7.5 1.3 10-1.6 9.4-10.8 19-19.1 29.2-25.1 57.3-33.9 130.8-13.7 163.9 45 33.1 58.7 13.4 134-43.9 167.9-10.2 6.1-22 10.4-35.8 13.4-3.7.8-6.4 4.2-6.4 8.1.1 4 2.7 7.3 6.5 8 39.7 7.8 80.6.8 115.2-19.7 18-10.6 32.9-24.5 45.3-40.1 12.4 15.6 27.3 29.5 45.3 40.1 34.6 20.5 75.5 27.5 115.2 19.7 3.8-.7 6.4-4 6.5-8 0-3.9-2.6-7.3-6.4-8.1-13.9-2.9-25.6-7.3-35.8-13.4-57.3-33.9-77-109.2-43.9-167.9s106.6-78.9 163.9-45c10.2 6.1 19.8 14.3 29.2 25.1 2.5 2.9 6.7 3.6 10 1.6s4.8-6.1 3.5-9.8c-13.1-39.1-39.5-72-74.1-92.4zm-213.4 129c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z\"]\n};\nvar faBirthdayCake = {\n prefix: 'fas',\n iconName: 'birthday-cake',\n icon: [448, 512, [], \"f1fd\", \"M448 384c-28.02 0-31.26-32-74.5-32-43.43 0-46.825 32-74.75 32-27.695 0-31.454-32-74.75-32-42.842 0-47.218 32-74.5 32-28.148 0-31.202-32-74.75-32-43.547 0-46.653 32-74.75 32v-80c0-26.5 21.5-48 48-48h16V112h64v144h64V112h64v144h64V112h64v144h16c26.5 0 48 21.5 48 48v80zm0 128H0v-96c43.356 0 46.767-32 74.75-32 27.951 0 31.253 32 74.75 32 42.843 0 47.217-32 74.5-32 28.148 0 31.201 32 74.75 32 43.357 0 46.767-32 74.75-32 27.488 0 31.252 32 74.5 32v96zM96 96c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40zm128 0c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40zm128 0c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40z\"]\n};\nvar faBlender = {\n prefix: 'fas',\n iconName: 'blender',\n icon: [512, 512, [], \"f517\", \"M416 384H160c-35.35 0-64 28.65-64 64v32c0 17.67 14.33 32 32 32h320c17.67 0 32-14.33 32-32v-32c0-35.35-28.65-64-64-64zm-128 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm40-416h166.54L512 0H48C21.49 0 0 21.49 0 48v160c0 26.51 21.49 48 48 48h103.27l8.73 96h256l17.46-64H328c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h114.18l17.46-64H328c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h140.36l17.46-64H328c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8zM64 192V64h69.82l11.64 128H64z\"]\n};\nvar faBlenderPhone = {\n prefix: 'fas',\n iconName: 'blender-phone',\n icon: [576, 512, [], \"f6b6\", \"M392 64h166.54L576 0H192v352h288l17.46-64H392c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h114.18l17.46-64H392c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h140.36l17.46-64H392c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8zM158.8 335.01l-25.78-63.26c-2.78-6.81-9.8-10.99-17.24-10.26l-45.03 4.42c-17.28-46.94-17.65-99.78 0-147.72l45.03 4.42c7.43.73 14.46-3.46 17.24-10.26l25.78-63.26c3.02-7.39.2-15.85-6.68-20.07l-39.28-24.1C98.51-3.87 80.09-.5 68.95 11.97c-92.57 103.6-92 259.55 2.1 362.49 9.87 10.8 29.12 12.48 41.65 4.8l39.41-24.18c6.89-4.22 9.7-12.67 6.69-20.07zM480 384H192c-35.35 0-64 28.65-64 64v32c0 17.67 14.33 32 32 32h352c17.67 0 32-14.33 32-32v-32c0-35.35-28.65-64-64-64zm-144 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faBlind = {\n prefix: 'fas',\n iconName: 'blind',\n icon: [384, 512, [], \"f29d\", \"M380.15 510.837a8 8 0 0 1-10.989-2.687l-125.33-206.427a31.923 31.923 0 0 0 12.958-9.485l126.048 207.608a8 8 0 0 1-2.687 10.991zM142.803 314.338l-32.54 89.485 36.12 88.285c6.693 16.36 25.377 24.192 41.733 17.501 16.357-6.692 24.193-25.376 17.501-41.734l-62.814-153.537zM96 88c24.301 0 44-19.699 44-44S120.301 0 96 0 52 19.699 52 44s19.699 44 44 44zm154.837 169.128l-120-152c-4.733-5.995-11.75-9.108-18.837-9.112V96H80v.026c-7.146.003-14.217 3.161-18.944 9.24L0 183.766v95.694c0 13.455 11.011 24.791 24.464 24.536C37.505 303.748 48 293.1 48 280v-79.766l16-20.571v140.698L9.927 469.055c-6.04 16.609 2.528 34.969 19.138 41.009 16.602 6.039 34.968-2.524 41.009-19.138L136 309.638V202.441l-31.406-39.816a4 4 0 1 1 6.269-4.971l102.3 129.217c9.145 11.584 24.368 11.339 33.708 3.965 10.41-8.216 12.159-23.334 3.966-33.708z\"]\n};\nvar faBlog = {\n prefix: 'fas',\n iconName: 'blog',\n icon: [512, 512, [], \"f781\", \"M172.2 226.8c-14.6-2.9-28.2 8.9-28.2 23.8V301c0 10.2 7.1 18.4 16.7 22 18.2 6.8 31.3 24.4 31.3 45 0 26.5-21.5 48-48 48s-48-21.5-48-48V120c0-13.3-10.7-24-24-24H24c-13.3 0-24 10.7-24 24v248c0 89.5 82.1 160.2 175 140.7 54.4-11.4 98.3-55.4 109.7-109.7 17.4-82.9-37-157.2-112.5-172.2zM209 0c-9.2-.5-17 6.8-17 16v31.6c0 8.5 6.6 15.5 15 15.9 129.4 7 233.4 112 240.9 241.5.5 8.4 7.5 15 15.9 15h32.1c9.2 0 16.5-7.8 16-17C503.4 139.8 372.2 8.6 209 0zm.3 96c-9.3-.7-17.3 6.7-17.3 16.1v32.1c0 8.4 6.5 15.3 14.8 15.9 76.8 6.3 138 68.2 144.9 145.2.8 8.3 7.6 14.7 15.9 14.7h32.2c9.3 0 16.8-8 16.1-17.3-8.4-110.1-96.5-198.2-206.6-206.7z\"]\n};\nvar faBold = {\n prefix: 'fas',\n iconName: 'bold',\n icon: [384, 512, [], \"f032\", \"M333.49 238a122 122 0 0 0 27-65.21C367.87 96.49 308 32 233.42 32H34a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h31.87v288H34a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h209.32c70.8 0 134.14-51.75 141-122.4 4.74-48.45-16.39-92.06-50.83-119.6zM145.66 112h87.76a48 48 0 0 1 0 96h-87.76zm87.76 288h-87.76V288h87.76a56 56 0 0 1 0 112z\"]\n};\nvar faBolt = {\n prefix: 'fas',\n iconName: 'bolt',\n icon: [320, 512, [], \"f0e7\", \"M296 160H180.6l42.6-129.8C227.2 15 215.7 0 200 0H56C44 0 33.8 8.9 32.2 20.8l-32 240C-1.7 275.2 9.5 288 24 288h118.7L96.6 482.5c-3.6 15.2 8 29.5 23.3 29.5 8.4 0 16.4-4.4 20.8-12l176-304c9.3-15.9-2.2-36-20.7-36z\"]\n};\nvar faBomb = {\n prefix: 'fas',\n iconName: 'bomb',\n icon: [512, 512, [], \"f1e2\", \"M440.5 88.5l-52 52L415 167c9.4 9.4 9.4 24.6 0 33.9l-17.4 17.4c11.8 26.1 18.4 55.1 18.4 85.6 0 114.9-93.1 208-208 208S0 418.9 0 304 93.1 96 208 96c30.5 0 59.5 6.6 85.6 18.4L311 97c9.4-9.4 24.6-9.4 33.9 0l26.5 26.5 52-52 17.1 17zM500 60h-24c-6.6 0-12 5.4-12 12s5.4 12 12 12h24c6.6 0 12-5.4 12-12s-5.4-12-12-12zM440 0c-6.6 0-12 5.4-12 12v24c0 6.6 5.4 12 12 12s12-5.4 12-12V12c0-6.6-5.4-12-12-12zm33.9 55l17-17c4.7-4.7 4.7-12.3 0-17-4.7-4.7-12.3-4.7-17 0l-17 17c-4.7 4.7-4.7 12.3 0 17 4.8 4.7 12.4 4.7 17 0zm-67.8 0c4.7 4.7 12.3 4.7 17 0 4.7-4.7 4.7-12.3 0-17l-17-17c-4.7-4.7-12.3-4.7-17 0-4.7 4.7-4.7 12.3 0 17l17 17zm67.8 34c-4.7-4.7-12.3-4.7-17 0-4.7 4.7-4.7 12.3 0 17l17 17c4.7 4.7 12.3 4.7 17 0 4.7-4.7 4.7-12.3 0-17l-17-17zM112 272c0-35.3 28.7-64 64-64 8.8 0 16-7.2 16-16s-7.2-16-16-16c-52.9 0-96 43.1-96 96 0 8.8 7.2 16 16 16s16-7.2 16-16z\"]\n};\nvar faBone = {\n prefix: 'fas',\n iconName: 'bone',\n icon: [640, 512, [], \"f5d7\", \"M598.88 244.56c25.2-12.6 41.12-38.36 41.12-66.53v-7.64C640 129.3 606.7 96 565.61 96c-32.02 0-60.44 20.49-70.57 50.86-7.68 23.03-11.6 45.14-38.11 45.14H183.06c-27.38 0-31.58-25.54-38.11-45.14C134.83 116.49 106.4 96 74.39 96 33.3 96 0 129.3 0 170.39v7.64c0 28.17 15.92 53.93 41.12 66.53 9.43 4.71 9.43 18.17 0 22.88C15.92 280.04 0 305.8 0 333.97v7.64C0 382.7 33.3 416 74.38 416c32.02 0 60.44-20.49 70.57-50.86 7.68-23.03 11.6-45.14 38.11-45.14h273.87c27.38 0 31.58 25.54 38.11 45.14C505.17 395.51 533.6 416 565.61 416c41.08 0 74.38-33.3 74.38-74.39v-7.64c0-28.18-15.92-53.93-41.12-66.53-9.42-4.71-9.42-18.17.01-22.88z\"]\n};\nvar faBong = {\n prefix: 'fas',\n iconName: 'bong',\n icon: [448, 512, [], \"f55c\", \"M302.5 512c23.18 0 44.43-12.58 56-32.66C374.69 451.26 384 418.75 384 384c0-36.12-10.08-69.81-27.44-98.62L400 241.94l9.38 9.38c6.25 6.25 16.38 6.25 22.63 0l11.3-11.32c6.25-6.25 6.25-16.38 0-22.63l-52.69-52.69c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63l9.38 9.38-39.41 39.41c-11.56-11.37-24.53-21.33-38.65-29.51V63.74l15.97-.02c8.82-.01 15.97-7.16 15.98-15.98l.04-31.72C320 7.17 312.82-.01 303.97 0L80.03.26c-8.82.01-15.97 7.16-15.98 15.98l-.04 31.73c-.01 8.85 7.17 16.02 16.02 16.01L96 63.96v153.93C38.67 251.1 0 312.97 0 384c0 34.75 9.31 67.27 25.5 95.34C37.08 499.42 58.33 512 81.5 512h221zM120.06 259.43L144 245.56V63.91l96-.11v181.76l23.94 13.87c24.81 14.37 44.12 35.73 56.56 60.57h-257c12.45-24.84 31.75-46.2 56.56-60.57z\"]\n};\nvar faBook = {\n prefix: 'fas',\n iconName: 'book',\n icon: [448, 512, [], \"f02d\", \"M448 360V24c0-13.3-10.7-24-24-24H96C43 0 0 43 0 96v320c0 53 43 96 96 96h328c13.3 0 24-10.7 24-24v-16c0-7.5-3.5-14.3-8.9-18.7-4.2-15.4-4.2-59.3 0-74.7 5.4-4.3 8.9-11.1 8.9-18.6zM128 134c0-3.3 2.7-6 6-6h212c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H134c-3.3 0-6-2.7-6-6v-20zm0 64c0-3.3 2.7-6 6-6h212c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H134c-3.3 0-6-2.7-6-6v-20zm253.4 250H96c-17.7 0-32-14.3-32-32 0-17.6 14.4-32 32-32h285.4c-1.9 17.1-1.9 46.9 0 64z\"]\n};\nvar faBookDead = {\n prefix: 'fas',\n iconName: 'book-dead',\n icon: [448, 512, [], \"f6b7\", \"M272 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm176 222.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM240 56c44.2 0 80 28.7 80 64 0 20.9-12.7 39.2-32 50.9V184c0 8.8-7.2 16-16 16h-64c-8.8 0-16-7.2-16-16v-13.1c-19.3-11.7-32-30-32-50.9 0-35.3 35.8-64 80-64zM124.8 223.3l6.3-14.7c1.7-4.1 6.4-5.9 10.5-4.2l98.3 42.1 98.4-42.1c4.1-1.7 8.8.1 10.5 4.2l6.3 14.7c1.7 4.1-.1 8.8-4.2 10.5L280.6 264l70.3 30.1c4.1 1.7 5.9 6.4 4.2 10.5l-6.3 14.7c-1.7 4.1-6.4 5.9-10.5 4.2L240 281.4l-98.3 42.2c-4.1 1.7-8.8-.1-10.5-4.2l-6.3-14.7c-1.7-4.1.1-8.8 4.2-10.5l70.4-30.1-70.5-30.3c-4.1-1.7-5.9-6.4-4.2-10.5zm256 224.7H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8zM208 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16z\"]\n};\nvar faBookMedical = {\n prefix: 'fas',\n iconName: 'book-medical',\n icon: [448, 512, [], \"f7e6\", \"M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16q0-9.6-9.6-19.2c-3.2-16-3.2-60.8 0-73.6q9.6-4.8 9.6-19.2zM144 168a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8v48a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8zm236.8 280H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8z\"]\n};\nvar faBookOpen = {\n prefix: 'fas',\n iconName: 'book-open',\n icon: [576, 512, [], \"f518\", \"M542.22 32.05c-54.8 3.11-163.72 14.43-230.96 55.59-4.64 2.84-7.27 7.89-7.27 13.17v363.87c0 11.55 12.63 18.85 23.28 13.49 69.18-34.82 169.23-44.32 218.7-46.92 16.89-.89 30.02-14.43 30.02-30.66V62.75c.01-17.71-15.35-31.74-33.77-30.7zM264.73 87.64C197.5 46.48 88.58 35.17 33.78 32.05 15.36 31.01 0 45.04 0 62.75V400.6c0 16.24 13.13 29.78 30.02 30.66 49.49 2.6 149.59 12.11 218.77 46.95 10.62 5.35 23.21-1.94 23.21-13.46V100.63c0-5.29-2.62-10.14-7.27-12.99z\"]\n};\nvar faBookReader = {\n prefix: 'fas',\n iconName: 'book-reader',\n icon: [512, 512, [], \"f5da\", \"M352 96c0-53.02-42.98-96-96-96s-96 42.98-96 96 42.98 96 96 96 96-42.98 96-96zM233.59 241.1c-59.33-36.32-155.43-46.3-203.79-49.05C13.55 191.13 0 203.51 0 219.14v222.8c0 14.33 11.59 26.28 26.49 27.05 43.66 2.29 131.99 10.68 193.04 41.43 9.37 4.72 20.48-1.71 20.48-11.87V252.56c-.01-4.67-2.32-8.95-6.42-11.46zm248.61-49.05c-48.35 2.74-144.46 12.73-203.78 49.05-4.1 2.51-6.41 6.96-6.41 11.63v245.79c0 10.19 11.14 16.63 20.54 11.9 61.04-30.72 149.32-39.11 192.97-41.4 14.9-.78 26.49-12.73 26.49-27.06V219.14c-.01-15.63-13.56-28.01-29.81-27.09z\"]\n};\nvar faBookmark = {\n prefix: 'fas',\n iconName: 'bookmark',\n icon: [384, 512, [], \"f02e\", \"M0 512V48C0 21.49 21.49 0 48 0h288c26.51 0 48 21.49 48 48v464L192 400 0 512z\"]\n};\nvar faBorderAll = {\n prefix: 'fas',\n iconName: 'border-all',\n icon: [448, 512, [], \"f84c\", \"M416 32H32A32 32 0 0 0 0 64v384a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32V64a32 32 0 0 0-32-32zm-32 64v128H256V96zm-192 0v128H64V96zM64 416V288h128v128zm192 0V288h128v128z\"]\n};\nvar faBorderNone = {\n prefix: 'fas',\n iconName: 'border-none',\n icon: [448, 512, [], \"f850\", \"M240 224h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-288 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM240 320h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-96 288h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96-384h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM48 224H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faBorderStyle = {\n prefix: 'fas',\n iconName: 'border-style',\n icon: [448, 512, [], \"f853\", \"M240 416h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm192 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-288h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H32A32 32 0 0 0 0 64v400a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V96h368a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faBowlingBall = {\n prefix: 'fas',\n iconName: 'bowling-ball',\n icon: [496, 512, [], \"f436\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM120 192c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm64-96c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm48 144c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faBox = {\n prefix: 'fas',\n iconName: 'box',\n icon: [512, 512, [], \"f466\", \"M509.5 184.6L458.9 32.8C452.4 13.2 434.1 0 413.4 0H272v192h238.7c-.4-2.5-.4-5-1.2-7.4zM240 0H98.6c-20.7 0-39 13.2-45.5 32.8L2.5 184.6c-.8 2.4-.8 4.9-1.2 7.4H240V0zM0 224v240c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V224H0z\"]\n};\nvar faBoxOpen = {\n prefix: 'fas',\n iconName: 'box-open',\n icon: [640, 512, [], \"f49e\", \"M425.7 256c-16.9 0-32.8-9-41.4-23.4L320 126l-64.2 106.6c-8.7 14.5-24.6 23.5-41.5 23.5-4.5 0-9-.6-13.3-1.9L64 215v178c0 14.7 10 27.5 24.2 31l216.2 54.1c10.2 2.5 20.9 2.5 31 0L551.8 424c14.2-3.6 24.2-16.4 24.2-31V215l-137 39.1c-4.3 1.3-8.8 1.9-13.3 1.9zm212.6-112.2L586.8 41c-3.1-6.2-9.8-9.8-16.7-8.9L320 64l91.7 152.1c3.8 6.3 11.4 9.3 18.5 7.3l197.9-56.5c9.9-2.9 14.7-13.9 10.2-23.1zM53.2 41L1.7 143.8c-4.6 9.2.3 20.2 10.1 23l197.9 56.5c7.1 2 14.7-1 18.5-7.3L320 64 69.8 32.1c-6.9-.8-13.5 2.7-16.6 8.9z\"]\n};\nvar faBoxTissue = {\n prefix: 'fas',\n iconName: 'box-tissue',\n icon: [512, 512, [], \"e05b\", \"M383.88,287.82l64-192H338.47a70.2,70.2,0,0,1-66.59-48,70.21,70.21,0,0,0-66.6-48H63.88l64,288Zm-384,192a32,32,0,0,0,32,32h448a32,32,0,0,0,32-32v-64H-.12Zm480-256H438.94l-21.33,64h14.27a16,16,0,0,1,0,32h-352a16,16,0,1,1,0-32H95.09l-14.22-64h-49a32,32,0,0,0-32,32v128h512v-128A32,32,0,0,0,479.88,223.82Z\"]\n};\nvar faBoxes = {\n prefix: 'fas',\n iconName: 'boxes',\n icon: [576, 512, [], \"f468\", \"M560 288h-80v96l-32-21.3-32 21.3v-96h-80c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16h224c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16zm-384-64h224c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16h-80v96l-32-21.3L256 96V0h-80c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16zm64 64h-80v96l-32-21.3L96 384v-96H16c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16h224c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16z\"]\n};\nvar faBraille = {\n prefix: 'fas',\n iconName: 'braille',\n icon: [640, 512, [], \"f2a1\", \"M128 256c0 35.346-28.654 64-64 64S0 291.346 0 256s28.654-64 64-64 64 28.654 64 64zM64 384c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352C28.654 32 0 60.654 0 96s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm160 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm224 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm160 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-320c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32z\"]\n};\nvar faBrain = {\n prefix: 'fas',\n iconName: 'brain',\n icon: [576, 512, [], \"f5dc\", \"M208 0c-29.9 0-54.7 20.5-61.8 48.2-.8 0-1.4-.2-2.2-.2-35.3 0-64 28.7-64 64 0 4.8.6 9.5 1.7 14C52.5 138 32 166.6 32 200c0 12.6 3.2 24.3 8.3 34.9C16.3 248.7 0 274.3 0 304c0 33.3 20.4 61.9 49.4 73.9-.9 4.6-1.4 9.3-1.4 14.1 0 39.8 32.2 72 72 72 4.1 0 8.1-.5 12-1.2 9.6 28.5 36.2 49.2 68 49.2 39.8 0 72-32.2 72-72V64c0-35.3-28.7-64-64-64zm368 304c0-29.7-16.3-55.3-40.3-69.1 5.2-10.6 8.3-22.3 8.3-34.9 0-33.4-20.5-62-49.7-74 1-4.5 1.7-9.2 1.7-14 0-35.3-28.7-64-64-64-.8 0-1.5.2-2.2.2C422.7 20.5 397.9 0 368 0c-35.3 0-64 28.6-64 64v376c0 39.8 32.2 72 72 72 31.8 0 58.4-20.7 68-49.2 3.9.7 7.9 1.2 12 1.2 39.8 0 72-32.2 72-72 0-4.8-.5-9.5-1.4-14.1 29-12 49.4-40.6 49.4-73.9z\"]\n};\nvar faBreadSlice = {\n prefix: 'fas',\n iconName: 'bread-slice',\n icon: [576, 512, [], \"f7ec\", \"M288 0C108 0 0 93.4 0 169.14 0 199.44 24.24 224 64 224v256c0 17.67 16.12 32 36 32h376c19.88 0 36-14.33 36-32V224c39.76 0 64-24.56 64-54.86C576 93.4 468 0 288 0z\"]\n};\nvar faBriefcase = {\n prefix: 'fas',\n iconName: 'briefcase',\n icon: [512, 512, [], \"f0b1\", \"M320 336c0 8.84-7.16 16-16 16h-96c-8.84 0-16-7.16-16-16v-48H0v144c0 25.6 22.4 48 48 48h416c25.6 0 48-22.4 48-48V288H320v48zm144-208h-80V80c0-25.6-22.4-48-48-48H176c-25.6 0-48 22.4-48 48v48H48c-25.6 0-48 22.4-48 48v80h512v-80c0-25.6-22.4-48-48-48zm-144 0H192V96h128v32z\"]\n};\nvar faBriefcaseMedical = {\n prefix: 'fas',\n iconName: 'briefcase-medical',\n icon: [512, 512, [], \"f469\", \"M464 128h-80V80c0-26.5-21.5-48-48-48H176c-26.5 0-48 21.5-48 48v48H48c-26.5 0-48 21.5-48 48v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48zM192 96h128v32H192V96zm160 248c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48z\"]\n};\nvar faBroadcastTower = {\n prefix: 'fas',\n iconName: 'broadcast-tower',\n icon: [640, 512, [], \"f519\", \"M150.94 192h33.73c11.01 0 18.61-10.83 14.86-21.18-4.93-13.58-7.55-27.98-7.55-42.82s2.62-29.24 7.55-42.82C203.29 74.83 195.68 64 184.67 64h-33.73c-7.01 0-13.46 4.49-15.41 11.23C130.64 92.21 128 109.88 128 128c0 18.12 2.64 35.79 7.54 52.76 1.94 6.74 8.39 11.24 15.4 11.24zM89.92 23.34C95.56 12.72 87.97 0 75.96 0H40.63c-6.27 0-12.14 3.59-14.74 9.31C9.4 45.54 0 85.65 0 128c0 24.75 3.12 68.33 26.69 118.86 2.62 5.63 8.42 9.14 14.61 9.14h34.84c12.02 0 19.61-12.74 13.95-23.37-49.78-93.32-16.71-178.15-.17-209.29zM614.06 9.29C611.46 3.58 605.6 0 599.33 0h-35.42c-11.98 0-19.66 12.66-14.02 23.25 18.27 34.29 48.42 119.42.28 209.23-5.72 10.68 1.8 23.52 13.91 23.52h35.23c6.27 0 12.13-3.58 14.73-9.29C630.57 210.48 640 170.36 640 128s-9.42-82.48-25.94-118.71zM489.06 64h-33.73c-11.01 0-18.61 10.83-14.86 21.18 4.93 13.58 7.55 27.98 7.55 42.82s-2.62 29.24-7.55 42.82c-3.76 10.35 3.85 21.18 14.86 21.18h33.73c7.02 0 13.46-4.49 15.41-11.24 4.9-16.97 7.53-34.64 7.53-52.76 0-18.12-2.64-35.79-7.54-52.76-1.94-6.75-8.39-11.24-15.4-11.24zm-116.3 100.12c7.05-10.29 11.2-22.71 11.2-36.12 0-35.35-28.63-64-63.96-64-35.32 0-63.96 28.65-63.96 64 0 13.41 4.15 25.83 11.2 36.12l-130.5 313.41c-3.4 8.15.46 17.52 8.61 20.92l29.51 12.31c8.15 3.4 17.52-.46 20.91-8.61L244.96 384h150.07l49.2 118.15c3.4 8.16 12.76 12.01 20.91 8.61l29.51-12.31c8.15-3.4 12-12.77 8.61-20.92l-130.5-313.41zM271.62 320L320 203.81 368.38 320h-96.76z\"]\n};\nvar faBroom = {\n prefix: 'fas',\n iconName: 'broom',\n icon: [640, 512, [], \"f51a\", \"M256.47 216.77l86.73 109.18s-16.6 102.36-76.57 150.12C206.66 523.85 0 510.19 0 510.19s3.8-23.14 11-55.43l94.62-112.17c3.97-4.7-.87-11.62-6.65-9.5l-60.4 22.09c14.44-41.66 32.72-80.04 54.6-97.47 59.97-47.76 163.3-40.94 163.3-40.94zM636.53 31.03l-19.86-25c-5.49-6.9-15.52-8.05-22.41-2.56l-232.48 177.8-34.14-42.97c-5.09-6.41-15.14-5.21-18.59 2.21l-25.33 54.55 86.73 109.18 58.8-12.45c8-1.69 11.42-11.2 6.34-17.6l-34.09-42.92 232.48-177.8c6.89-5.48 8.04-15.53 2.55-22.44z\"]\n};\nvar faBrush = {\n prefix: 'fas',\n iconName: 'brush',\n icon: [384, 512, [], \"f55d\", \"M352 0H32C14.33 0 0 14.33 0 32v224h384V32c0-17.67-14.33-32-32-32zM0 320c0 35.35 28.66 64 64 64h64v64c0 35.35 28.66 64 64 64s64-28.65 64-64v-64h64c35.34 0 64-28.65 64-64v-32H0v32zm192 104c13.25 0 24 10.74 24 24 0 13.25-10.75 24-24 24s-24-10.75-24-24c0-13.26 10.75-24 24-24z\"]\n};\nvar faBug = {\n prefix: 'fas',\n iconName: 'bug',\n icon: [512, 512, [], \"f188\", \"M511.988 288.9c-.478 17.43-15.217 31.1-32.653 31.1H424v16c0 21.864-4.882 42.584-13.6 61.145l60.228 60.228c12.496 12.497 12.496 32.758 0 45.255-12.498 12.497-32.759 12.496-45.256 0l-54.736-54.736C345.886 467.965 314.351 480 280 480V236c0-6.627-5.373-12-12-12h-24c-6.627 0-12 5.373-12 12v244c-34.351 0-65.886-12.035-90.636-32.108l-54.736 54.736c-12.498 12.497-32.759 12.496-45.256 0-12.496-12.497-12.496-32.758 0-45.255l60.228-60.228C92.882 378.584 88 357.864 88 336v-16H32.666C15.23 320 .491 306.33.013 288.9-.484 270.816 14.028 256 32 256h56v-58.745l-46.628-46.628c-12.496-12.497-12.496-32.758 0-45.255 12.498-12.497 32.758-12.497 45.256 0L141.255 160h229.489l54.627-54.627c12.498-12.497 32.758-12.497 45.256 0 12.496 12.497 12.496 32.758 0 45.255L424 197.255V256h56c17.972 0 32.484 14.816 31.988 32.9zM257 0c-61.856 0-112 50.144-112 112h224C369 50.144 318.856 0 257 0z\"]\n};\nvar faBuilding = {\n prefix: 'fas',\n iconName: 'building',\n icon: [448, 512, [], \"f1ad\", \"M436 480h-20V24c0-13.255-10.745-24-24-24H56C42.745 0 32 10.745 32 24v456H12c-6.627 0-12 5.373-12 12v20h448v-20c0-6.627-5.373-12-12-12zM128 76c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12V76zm0 96c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40zm52 148h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12zm76 160h-64v-84c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v84zm64-172c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40zm0-96c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40zm0-96c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12V76c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40z\"]\n};\nvar faBullhorn = {\n prefix: 'fas',\n iconName: 'bullhorn',\n icon: [576, 512, [], \"f0a1\", \"M576 240c0-23.63-12.95-44.04-32-55.12V32.01C544 23.26 537.02 0 512 0c-7.12 0-14.19 2.38-19.98 7.02l-85.03 68.03C364.28 109.19 310.66 128 256 128H64c-35.35 0-64 28.65-64 64v96c0 35.35 28.65 64 64 64h33.7c-1.39 10.48-2.18 21.14-2.18 32 0 39.77 9.26 77.35 25.56 110.94 5.19 10.69 16.52 17.06 28.4 17.06h74.28c26.05 0 41.69-29.84 25.9-50.56-16.4-21.52-26.15-48.36-26.15-77.44 0-11.11 1.62-21.79 4.41-32H256c54.66 0 108.28 18.81 150.98 52.95l85.03 68.03a32.023 32.023 0 0 0 19.98 7.02c24.92 0 32-22.78 32-32V295.13C563.05 284.04 576 263.63 576 240zm-96 141.42l-33.05-26.44C392.95 311.78 325.12 288 256 288v-96c69.12 0 136.95-23.78 190.95-66.98L480 98.58v282.84z\"]\n};\nvar faBullseye = {\n prefix: 'fas',\n iconName: 'bullseye',\n icon: [496, 512, [], \"f140\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 432c-101.69 0-184-82.29-184-184 0-101.69 82.29-184 184-184 101.69 0 184 82.29 184 184 0 101.69-82.29 184-184 184zm0-312c-70.69 0-128 57.31-128 128s57.31 128 128 128 128-57.31 128-128-57.31-128-128-128zm0 192c-35.29 0-64-28.71-64-64s28.71-64 64-64 64 28.71 64 64-28.71 64-64 64z\"]\n};\nvar faBurn = {\n prefix: 'fas',\n iconName: 'burn',\n icon: [384, 512, [], \"f46a\", \"M192 0C79.7 101.3 0 220.9 0 300.5 0 425 79 512 192 512s192-87 192-211.5c0-79.9-80.2-199.6-192-300.5zm0 448c-56.5 0-96-39-96-94.8 0-13.5 4.6-61.5 96-161.2 91.4 99.7 96 147.7 96 161.2 0 55.8-39.5 94.8-96 94.8z\"]\n};\nvar faBus = {\n prefix: 'fas',\n iconName: 'bus',\n icon: [512, 512, [], \"f207\", \"M488 128h-8V80c0-44.8-99.2-80-224-80S32 35.2 32 80v48h-8c-13.25 0-24 10.74-24 24v80c0 13.25 10.75 24 24 24h8v160c0 17.67 14.33 32 32 32v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h192v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h6.4c16 0 25.6-12.8 25.6-25.6V256h8c13.25 0 24-10.75 24-24v-80c0-13.26-10.75-24-24-24zM112 400c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm16-112c-17.67 0-32-14.33-32-32V128c0-17.67 14.33-32 32-32h256c17.67 0 32 14.33 32 32v128c0 17.67-14.33 32-32 32H128zm272 112c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faBusAlt = {\n prefix: 'fas',\n iconName: 'bus-alt',\n icon: [512, 512, [], \"f55e\", \"M488 128h-8V80c0-44.8-99.2-80-224-80S32 35.2 32 80v48h-8c-13.25 0-24 10.74-24 24v80c0 13.25 10.75 24 24 24h8v160c0 17.67 14.33 32 32 32v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h192v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h6.4c16 0 25.6-12.8 25.6-25.6V256h8c13.25 0 24-10.75 24-24v-80c0-13.26-10.75-24-24-24zM160 72c0-4.42 3.58-8 8-8h176c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H168c-4.42 0-8-3.58-8-8V72zm-48 328c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm128-112H128c-17.67 0-32-14.33-32-32v-96c0-17.67 14.33-32 32-32h112v160zm32 0V128h112c17.67 0 32 14.33 32 32v96c0 17.67-14.33 32-32 32H272zm128 112c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faBusinessTime = {\n prefix: 'fas',\n iconName: 'business-time',\n icon: [640, 512, [], \"f64a\", \"M496 224c-79.59 0-144 64.41-144 144s64.41 144 144 144 144-64.41 144-144-64.41-144-144-144zm64 150.29c0 5.34-4.37 9.71-9.71 9.71h-60.57c-5.34 0-9.71-4.37-9.71-9.71v-76.57c0-5.34 4.37-9.71 9.71-9.71h12.57c5.34 0 9.71 4.37 9.71 9.71V352h38.29c5.34 0 9.71 4.37 9.71 9.71v12.58zM496 192c5.4 0 10.72.33 16 .81V144c0-25.6-22.4-48-48-48h-80V48c0-25.6-22.4-48-48-48H176c-25.6 0-48 22.4-48 48v48H48c-25.6 0-48 22.4-48 48v80h395.12c28.6-20.09 63.35-32 100.88-32zM320 96H192V64h128v32zm6.82 224H208c-8.84 0-16-7.16-16-16v-48H0v144c0 25.6 22.4 48 48 48h291.43C327.1 423.96 320 396.82 320 368c0-16.66 2.48-32.72 6.82-48z\"]\n};\nvar faCalculator = {\n prefix: 'fas',\n iconName: 'calculator',\n icon: [448, 512, [], \"f1ec\", \"M400 0H48C22.4 0 0 22.4 0 48v416c0 25.6 22.4 48 48 48h352c25.6 0 48-22.4 48-48V48c0-25.6-22.4-48-48-48zM128 435.2c0 6.4-6.4 12.8-12.8 12.8H76.8c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm0-128c0 6.4-6.4 12.8-12.8 12.8H76.8c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm128 128c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm0-128c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm128 128c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8V268.8c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v166.4zm0-256c0 6.4-6.4 12.8-12.8 12.8H76.8c-6.4 0-12.8-6.4-12.8-12.8V76.8C64 70.4 70.4 64 76.8 64h294.4c6.4 0 12.8 6.4 12.8 12.8v102.4z\"]\n};\nvar faCalendar = {\n prefix: 'fas',\n iconName: 'calendar',\n icon: [448, 512, [], \"f133\", \"M12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm436-44v-36c0-26.5-21.5-48-48-48h-48V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H160V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H48C21.5 64 0 85.5 0 112v36c0 6.6 5.4 12 12 12h424c6.6 0 12-5.4 12-12z\"]\n};\nvar faCalendarAlt = {\n prefix: 'fas',\n iconName: 'calendar-alt',\n icon: [448, 512, [], \"f073\", \"M0 464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V192H0v272zm320-196c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zm0 128c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zM192 268c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zm0 128c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zM64 268c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zm0 128c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v48h448v-48c0-26.5-21.5-48-48-48z\"]\n};\nvar faCalendarCheck = {\n prefix: 'fas',\n iconName: 'calendar-check',\n icon: [448, 512, [], \"f274\", \"M436 160H12c-6.627 0-12-5.373-12-12v-36c0-26.51 21.49-48 48-48h48V12c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v52h128V12c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v52h48c26.51 0 48 21.49 48 48v36c0 6.627-5.373 12-12 12zM12 192h424c6.627 0 12 5.373 12 12v260c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V204c0-6.627 5.373-12 12-12zm333.296 95.947l-28.169-28.398c-4.667-4.705-12.265-4.736-16.97-.068L194.12 364.665l-45.98-46.352c-4.667-4.705-12.266-4.736-16.971-.068l-28.397 28.17c-4.705 4.667-4.736 12.265-.068 16.97l82.601 83.269c4.667 4.705 12.265 4.736 16.97.068l142.953-141.805c4.705-4.667 4.736-12.265.068-16.97z\"]\n};\nvar faCalendarDay = {\n prefix: 'fas',\n iconName: 'calendar-day',\n icon: [448, 512, [], \"f783\", \"M0 464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V192H0v272zm64-192c0-8.8 7.2-16 16-16h96c8.8 0 16 7.2 16 16v96c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16v-96zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v48h448v-48c0-26.5-21.5-48-48-48z\"]\n};\nvar faCalendarMinus = {\n prefix: 'fas',\n iconName: 'calendar-minus',\n icon: [448, 512, [], \"f272\", \"M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm304 192c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12H132c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h184z\"]\n};\nvar faCalendarPlus = {\n prefix: 'fas',\n iconName: 'calendar-plus',\n icon: [448, 512, [], \"f271\", \"M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm316 140c0-6.6-5.4-12-12-12h-60v-60c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v60h-60c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h60v60c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-60h60c6.6 0 12-5.4 12-12v-40z\"]\n};\nvar faCalendarTimes = {\n prefix: 'fas',\n iconName: 'calendar-times',\n icon: [448, 512, [], \"f273\", \"M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm257.3 160l48.1-48.1c4.7-4.7 4.7-12.3 0-17l-28.3-28.3c-4.7-4.7-12.3-4.7-17 0L224 306.7l-48.1-48.1c-4.7-4.7-12.3-4.7-17 0l-28.3 28.3c-4.7 4.7-4.7 12.3 0 17l48.1 48.1-48.1 48.1c-4.7 4.7-4.7 12.3 0 17l28.3 28.3c4.7 4.7 12.3 4.7 17 0l48.1-48.1 48.1 48.1c4.7 4.7 12.3 4.7 17 0l28.3-28.3c4.7-4.7 4.7-12.3 0-17L269.3 352z\"]\n};\nvar faCalendarWeek = {\n prefix: 'fas',\n iconName: 'calendar-week',\n icon: [448, 512, [], \"f784\", \"M0 464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V192H0v272zm64-192c0-8.8 7.2-16 16-16h288c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16v-64zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v48h448v-48c0-26.5-21.5-48-48-48z\"]\n};\nvar faCamera = {\n prefix: 'fas',\n iconName: 'camera',\n icon: [512, 512, [], \"f030\", \"M512 144v288c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48h88l12.3-32.9c7-18.7 24.9-31.1 44.9-31.1h125.5c20 0 37.9 12.4 44.9 31.1L376 96h88c26.5 0 48 21.5 48 48zM376 288c0-66.2-53.8-120-120-120s-120 53.8-120 120 53.8 120 120 120 120-53.8 120-120zm-32 0c0 48.5-39.5 88-88 88s-88-39.5-88-88 39.5-88 88-88 88 39.5 88 88z\"]\n};\nvar faCameraRetro = {\n prefix: 'fas',\n iconName: 'camera-retro',\n icon: [512, 512, [], \"f083\", \"M48 32C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H48zm0 32h106c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H38c-3.3 0-6-2.7-6-6V80c0-8.8 7.2-16 16-16zm426 96H38c-3.3 0-6-2.7-6-6v-36c0-3.3 2.7-6 6-6h138l30.2-45.3c1.1-1.7 3-2.7 5-2.7H464c8.8 0 16 7.2 16 16v74c0 3.3-2.7 6-6 6zM256 424c-66.2 0-120-53.8-120-120s53.8-120 120-120 120 53.8 120 120-53.8 120-120 120zm0-208c-48.5 0-88 39.5-88 88s39.5 88 88 88 88-39.5 88-88-39.5-88-88-88zm-48 104c-8.8 0-16-7.2-16-16 0-35.3 28.7-64 64-64 8.8 0 16 7.2 16 16s-7.2 16-16 16c-17.6 0-32 14.4-32 32 0 8.8-7.2 16-16 16z\"]\n};\nvar faCampground = {\n prefix: 'fas',\n iconName: 'campground',\n icon: [640, 512, [], \"f6bb\", \"M624 448h-24.68L359.54 117.75l53.41-73.55c5.19-7.15 3.61-17.16-3.54-22.35l-25.9-18.79c-7.15-5.19-17.15-3.61-22.35 3.55L320 63.3 278.83 6.6c-5.19-7.15-15.2-8.74-22.35-3.55l-25.88 18.8c-7.15 5.19-8.74 15.2-3.54 22.35l53.41 73.55L40.68 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM320 288l116.36 160H203.64L320 288z\"]\n};\nvar faCandyCane = {\n prefix: 'fas',\n iconName: 'candy-cane',\n icon: [512, 512, [], \"f786\", \"M497.5 92C469.6 33.1 411.8 0 352.4 0c-27.9 0-56.2 7.3-81.8 22.6L243.1 39c-15.2 9.1-20.1 28.7-11 43.9l32.8 54.9c6 10 16.6 15.6 27.5 15.6 5.6 0 11.2-1.5 16.4-4.5l27.5-16.4c5.1-3.1 10.8-4.5 16.4-4.5 10.9 0 21.5 5.6 27.5 15.6 9.1 15.1 4.1 34.8-11 43.9L15.6 397.6c-15.2 9.1-20.1 28.7-11 43.9l32.8 54.9c6 10 16.6 15.6 27.5 15.6 5.6 0 11.2-1.5 16.4-4.5L428.6 301c71.7-42.9 104.6-133.5 68.9-209zm-177.7 13l-2.5 1.5L296.8 45c9.7-4.7 19.8-8.1 30.3-10.2l20.6 61.8c-9.8.8-19.4 3.3-27.9 8.4zM145.9 431.8l-60.5-38.5 30.8-18.3 60.5 38.5-30.8 18.3zm107.5-63.9l-60.5-38.5 30.8-18.3 60.5 38.5-30.8 18.3zM364.3 302l-60.5-38.5 30.8-18.3 60.5 38.5-30.8 18.3zm20.4-197.3l46-46c8.4 6.5 16 14.1 22.6 22.6L407.6 127c-5.7-9.3-13.7-16.9-22.9-22.3zm82.1 107.8l-59.5-19.8c3.2-5.3 5.8-10.9 7.4-17.1 1.1-4.5 1.7-9.1 1.8-13.6l60.4 20.1c-2.1 10.4-5.5 20.6-10.1 30.4z\"]\n};\nvar faCannabis = {\n prefix: 'fas',\n iconName: 'cannabis',\n icon: [512, 512, [], \"f55f\", \"M503.47 360.25c-1.56-.82-32.39-16.89-76.78-25.81 64.25-75.12 84.05-161.67 84.93-165.64 1.18-5.33-.44-10.9-4.3-14.77-3.03-3.04-7.12-4.7-11.32-4.7-1.14 0-2.29.12-3.44.38-3.88.85-86.54 19.59-160.58 79.76.01-1.46.01-2.93.01-4.4 0-118.79-59.98-213.72-62.53-217.7A15.973 15.973 0 0 0 256 0c-5.45 0-10.53 2.78-13.47 7.37-2.55 3.98-62.53 98.91-62.53 217.7 0 1.47.01 2.94.01 4.4-74.03-60.16-156.69-78.9-160.58-79.76-1.14-.25-2.29-.38-3.44-.38-4.2 0-8.29 1.66-11.32 4.7A15.986 15.986 0 0 0 .38 168.8c.88 3.97 20.68 90.52 84.93 165.64-44.39 8.92-75.21 24.99-76.78 25.81a16.003 16.003 0 0 0-.02 28.29c2.45 1.29 60.76 31.72 133.49 31.72 6.14 0 11.96-.1 17.5-.31-11.37 22.23-16.52 38.31-16.81 39.22-1.8 5.68-.29 11.89 3.91 16.11a16.019 16.019 0 0 0 16.1 3.99c1.83-.57 37.72-11.99 77.3-39.29V504c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-64.01c39.58 27.3 75.47 38.71 77.3 39.29a16.019 16.019 0 0 0 16.1-3.99c4.2-4.22 5.71-10.43 3.91-16.11-.29-.91-5.45-16.99-16.81-39.22 5.54.21 11.37.31 17.5.31 72.72 0 131.04-30.43 133.49-31.72 5.24-2.78 8.52-8.22 8.51-14.15-.01-5.94-3.29-11.39-8.53-14.15z\"]\n};\nvar faCapsules = {\n prefix: 'fas',\n iconName: 'capsules',\n icon: [576, 512, [], \"f46b\", \"M555.3 300.1L424.2 112.8C401.9 81 366.4 64 330.4 64c-22.6 0-45.5 6.7-65.5 20.7-19.7 13.8-33.7 32.8-41.5 53.8C220.5 79.2 172 32 112 32 50.1 32 0 82.1 0 144v224c0 61.9 50.1 112 112 112s112-50.1 112-112V218.9c3.3 8.6 7.3 17.1 12.8 25L368 431.2c22.2 31.8 57.7 48.8 93.8 48.8 22.7 0 45.5-6.7 65.5-20.7 51.7-36.2 64.2-107.5 28-159.2zM160 256H64V144c0-26.5 21.5-48 48-48s48 21.5 48 48v112zm194.8 44.9l-65.6-93.7c-7.7-11-10.7-24.4-8.3-37.6 2.3-13.2 9.7-24.8 20.7-32.5 8.5-6 18.5-9.1 28.8-9.1 16.5 0 31.9 8 41.3 21.5l65.6 93.7-82.5 57.7z\"]\n};\nvar faCar = {\n prefix: 'fas',\n iconName: 'car',\n icon: [512, 512, [], \"f1b9\", \"M499.99 176h-59.87l-16.64-41.6C406.38 91.63 365.57 64 319.5 64h-127c-46.06 0-86.88 27.63-103.99 70.4L71.87 176H12.01C4.2 176-1.53 183.34.37 190.91l6 24C7.7 220.25 12.5 224 18.01 224h20.07C24.65 235.73 16 252.78 16 272v48c0 16.12 6.16 30.67 16 41.93V416c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-54.07c9.84-11.25 16-25.8 16-41.93v-48c0-19.22-8.65-36.27-22.07-48H494c5.51 0 10.31-3.75 11.64-9.09l6-24c1.89-7.57-3.84-14.91-11.65-14.91zm-352.06-17.83c7.29-18.22 24.94-30.17 44.57-30.17h127c19.63 0 37.28 11.95 44.57 30.17L384 208H128l19.93-49.83zM96 319.8c-19.2 0-32-12.76-32-31.9S76.8 256 96 256s48 28.71 48 47.85-28.8 15.95-48 15.95zm320 0c-19.2 0-48 3.19-48-15.95S396.8 256 416 256s32 12.76 32 31.9-12.8 31.9-32 31.9z\"]\n};\nvar faCarAlt = {\n prefix: 'fas',\n iconName: 'car-alt',\n icon: [480, 512, [], \"f5de\", \"M438.66 212.33l-11.24-28.1-19.93-49.83C390.38 91.63 349.57 64 303.5 64h-127c-46.06 0-86.88 27.63-103.99 70.4l-19.93 49.83-11.24 28.1C17.22 221.5 0 244.66 0 272v48c0 16.12 6.16 30.67 16 41.93V416c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-54.07c9.84-11.25 16-25.8 16-41.93v-48c0-27.34-17.22-50.5-41.34-59.67zm-306.73-54.16c7.29-18.22 24.94-30.17 44.57-30.17h127c19.63 0 37.28 11.95 44.57 30.17L368 208H112l19.93-49.83zM80 319.8c-19.2 0-32-12.76-32-31.9S60.8 256 80 256s48 28.71 48 47.85-28.8 15.95-48 15.95zm320 0c-19.2 0-48 3.19-48-15.95S380.8 256 400 256s32 12.76 32 31.9-12.8 31.9-32 31.9z\"]\n};\nvar faCarBattery = {\n prefix: 'fas',\n iconName: 'car-battery',\n icon: [512, 512, [], \"f5df\", \"M480 128h-32V80c0-8.84-7.16-16-16-16h-96c-8.84 0-16 7.16-16 16v48H192V80c0-8.84-7.16-16-16-16H80c-8.84 0-16 7.16-16 16v48H32c-17.67 0-32 14.33-32 32v256c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32V160c0-17.67-14.33-32-32-32zM192 264c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16zm256 0c0 4.42-3.58 8-8 8h-40v40c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-40h-40c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h40v-40c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v40h40c4.42 0 8 3.58 8 8v16z\"]\n};\nvar faCarCrash = {\n prefix: 'fas',\n iconName: 'car-crash',\n icon: [640, 512, [], \"f5e1\", \"M143.25 220.81l-12.42 46.37c-3.01 11.25-3.63 22.89-2.41 34.39l-35.2 28.98c-6.57 5.41-16.31-.43-14.62-8.77l15.44-76.68c1.06-5.26-2.66-10.28-8-10.79l-77.86-7.55c-8.47-.82-11.23-11.83-4.14-16.54l65.15-43.3c4.46-2.97 5.38-9.15 1.98-13.29L21.46 93.22c-5.41-6.57.43-16.3 8.78-14.62l76.68 15.44c5.26 1.06 10.28-2.66 10.8-8l7.55-77.86c.82-8.48 11.83-11.23 16.55-4.14l43.3 65.14c2.97 4.46 9.15 5.38 13.29 1.98l60.4-49.71c6.57-5.41 16.3.43 14.62 8.77L262.1 86.38c-2.71 3.05-5.43 6.09-7.91 9.4l-32.15 42.97-10.71 14.32c-32.73 8.76-59.18 34.53-68.08 67.74zm494.57 132.51l-12.42 46.36c-3.13 11.68-9.38 21.61-17.55 29.36a66.876 66.876 0 0 1-8.76 7l-13.99 52.23c-1.14 4.27-3.1 8.1-5.65 11.38-7.67 9.84-20.74 14.68-33.54 11.25L515 502.62c-17.07-4.57-27.2-22.12-22.63-39.19l8.28-30.91-247.28-66.26-8.28 30.91c-4.57 17.07-22.12 27.2-39.19 22.63l-30.91-8.28c-12.8-3.43-21.7-14.16-23.42-26.51-.57-4.12-.35-8.42.79-12.68l13.99-52.23a66.62 66.62 0 0 1-4.09-10.45c-3.2-10.79-3.65-22.52-.52-34.2l12.42-46.37c5.31-19.8 19.36-34.83 36.89-42.21a64.336 64.336 0 0 1 18.49-4.72l18.13-24.23 32.15-42.97c3.45-4.61 7.19-8.9 11.2-12.84 8-7.89 17.03-14.44 26.74-19.51 4.86-2.54 9.89-4.71 15.05-6.49 10.33-3.58 21.19-5.63 32.24-6.04 11.05-.41 22.31.82 33.43 3.8l122.68 32.87c11.12 2.98 21.48 7.54 30.85 13.43a111.11 111.11 0 0 1 34.69 34.5c8.82 13.88 14.64 29.84 16.68 46.99l6.36 53.29 3.59 30.05a64.49 64.49 0 0 1 22.74 29.93c4.39 11.88 5.29 25.19 1.75 38.39zM255.58 234.34c-18.55-4.97-34.21 4.04-39.17 22.53-4.96 18.49 4.11 34.12 22.65 39.09 18.55 4.97 45.54 15.51 50.49-2.98 4.96-18.49-15.43-53.67-33.97-58.64zm290.61 28.17l-6.36-53.29c-.58-4.87-1.89-9.53-3.82-13.86-5.8-12.99-17.2-23.01-31.42-26.82l-122.68-32.87a48.008 48.008 0 0 0-50.86 17.61l-32.15 42.97 172 46.08 75.29 20.18zm18.49 54.65c-18.55-4.97-53.8 15.31-58.75 33.79-4.95 18.49 23.69 22.86 42.24 27.83 18.55 4.97 34.21-4.04 39.17-22.53 4.95-18.48-4.11-34.12-22.66-39.09z\"]\n};\nvar faCarSide = {\n prefix: 'fas',\n iconName: 'car-side',\n icon: [640, 512, [], \"f5e4\", \"M544 192h-16L419.22 56.02A64.025 64.025 0 0 0 369.24 32H155.33c-26.17 0-49.7 15.93-59.42 40.23L48 194.26C20.44 201.4 0 226.21 0 256v112c0 8.84 7.16 16 16 16h48c0 53.02 42.98 96 96 96s96-42.98 96-96h128c0 53.02 42.98 96 96 96s96-42.98 96-96h48c8.84 0 16-7.16 16-16v-80c0-53.02-42.98-96-96-96zM160 432c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48zm72-240H116.93l38.4-96H232v96zm48 0V96h89.24l76.8 96H280zm200 240c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48z\"]\n};\nvar faCaravan = {\n prefix: 'fas',\n iconName: 'caravan',\n icon: [640, 512, [], \"f8ff\", \"M416,208a16,16,0,1,0,16,16A16,16,0,0,0,416,208ZM624,320H576V160A160,160,0,0,0,416,0H64A64,64,0,0,0,0,64V320a64,64,0,0,0,64,64H96a96,96,0,0,0,192,0H624a16,16,0,0,0,16-16V336A16,16,0,0,0,624,320ZM192,432a48,48,0,1,1,48-48A48.05,48.05,0,0,1,192,432Zm64-240a32,32,0,0,1-32,32H96a32,32,0,0,1-32-32V128A32,32,0,0,1,96,96H224a32,32,0,0,1,32,32ZM448,320H320V128a32,32,0,0,1,32-32h64a32,32,0,0,1,32,32Z\"]\n};\nvar faCaretDown = {\n prefix: 'fas',\n iconName: 'caret-down',\n icon: [320, 512, [], \"f0d7\", \"M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z\"]\n};\nvar faCaretLeft = {\n prefix: 'fas',\n iconName: 'caret-left',\n icon: [192, 512, [], \"f0d9\", \"M192 127.338v257.324c0 17.818-21.543 26.741-34.142 14.142L29.196 270.142c-7.81-7.81-7.81-20.474 0-28.284l128.662-128.662c12.599-12.6 34.142-3.676 34.142 14.142z\"]\n};\nvar faCaretRight = {\n prefix: 'fas',\n iconName: 'caret-right',\n icon: [192, 512, [], \"f0da\", \"M0 384.662V127.338c0-17.818 21.543-26.741 34.142-14.142l128.662 128.662c7.81 7.81 7.81 20.474 0 28.284L34.142 398.804C21.543 411.404 0 402.48 0 384.662z\"]\n};\nvar faCaretSquareDown = {\n prefix: 'fas',\n iconName: 'caret-square-down',\n icon: [448, 512, [], \"f150\", \"M448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zM92.5 220.5l123 123c4.7 4.7 12.3 4.7 17 0l123-123c7.6-7.6 2.2-20.5-8.5-20.5H101c-10.7 0-16.1 12.9-8.5 20.5z\"]\n};\nvar faCaretSquareLeft = {\n prefix: 'fas',\n iconName: 'caret-square-left',\n icon: [448, 512, [], \"f191\", \"M400 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zM259.515 124.485l-123.03 123.03c-4.686 4.686-4.686 12.284 0 16.971l123.029 123.029c7.56 7.56 20.485 2.206 20.485-8.485V132.971c.001-10.691-12.925-16.045-20.484-8.486z\"]\n};\nvar faCaretSquareRight = {\n prefix: 'fas',\n iconName: 'caret-square-right',\n icon: [448, 512, [], \"f152\", \"M48 32h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48zm140.485 355.515l123.029-123.029c4.686-4.686 4.686-12.284 0-16.971l-123.029-123.03c-7.56-7.56-20.485-2.206-20.485 8.485v246.059c0 10.691 12.926 16.045 20.485 8.486z\"]\n};\nvar faCaretSquareUp = {\n prefix: 'fas',\n iconName: 'caret-square-up',\n icon: [448, 512, [], \"f151\", \"M0 432V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48zm355.515-140.485l-123.03-123.03c-4.686-4.686-12.284-4.686-16.971 0L92.485 291.515c-7.56 7.56-2.206 20.485 8.485 20.485h246.059c10.691 0 16.045-12.926 8.486-20.485z\"]\n};\nvar faCaretUp = {\n prefix: 'fas',\n iconName: 'caret-up',\n icon: [320, 512, [], \"f0d8\", \"M288.662 352H31.338c-17.818 0-26.741-21.543-14.142-34.142l128.662-128.662c7.81-7.81 20.474-7.81 28.284 0l128.662 128.662c12.6 12.599 3.676 34.142-14.142 34.142z\"]\n};\nvar faCarrot = {\n prefix: 'fas',\n iconName: 'carrot',\n icon: [512, 512, [], \"f787\", \"M298.2 156.6c-52.7-25.7-114.5-10.5-150.2 32.8l55.2 55.2c6.3 6.3 6.3 16.4 0 22.6-3.1 3.1-7.2 4.7-11.3 4.7s-8.2-1.6-11.3-4.7L130.4 217 2.3 479.7c-2.9 6-3.1 13.3 0 19.7 5.4 11.1 18.9 15.7 30 10.3l133.6-65.2-49.2-49.2c-6.3-6.2-6.3-16.4 0-22.6 6.3-6.2 16.4-6.2 22.6 0l57 57 102-49.8c24-11.7 44.5-31.3 57.1-57.1 30.1-61.7 4.5-136.1-57.2-166.2zm92.1-34.9C409.8 81 399.7 32.9 360 0c-50.3 41.7-52.5 107.5-7.9 151.9l8 8c44.4 44.6 110.3 42.4 151.9-7.9-32.9-39.7-81-49.8-121.7-30.3z\"]\n};\nvar faCartArrowDown = {\n prefix: 'fas',\n iconName: 'cart-arrow-down',\n icon: [576, 512, [], \"f218\", \"M504.717 320H211.572l6.545 32h268.418c15.401 0 26.816 14.301 23.403 29.319l-5.517 24.276C523.112 414.668 536 433.828 536 456c0 31.202-25.519 56.444-56.824 55.994-29.823-.429-54.35-24.631-55.155-54.447-.44-16.287 6.085-31.049 16.803-41.548H231.176C241.553 426.165 248 440.326 248 456c0 31.813-26.528 57.431-58.67 55.938-28.54-1.325-51.751-24.385-53.251-52.917-1.158-22.034 10.436-41.455 28.051-51.586L93.883 64H24C10.745 64 0 53.255 0 40V24C0 10.745 10.745 0 24 0h102.529c11.401 0 21.228 8.021 23.513 19.19L159.208 64H551.99c15.401 0 26.816 14.301 23.403 29.319l-47.273 208C525.637 312.246 515.923 320 504.717 320zM403.029 192H360v-60c0-6.627-5.373-12-12-12h-24c-6.627 0-12 5.373-12 12v60h-43.029c-10.691 0-16.045 12.926-8.485 20.485l67.029 67.029c4.686 4.686 12.284 4.686 16.971 0l67.029-67.029c7.559-7.559 2.205-20.485-8.486-20.485z\"]\n};\nvar faCartPlus = {\n prefix: 'fas',\n iconName: 'cart-plus',\n icon: [576, 512, [], \"f217\", \"M504.717 320H211.572l6.545 32h268.418c15.401 0 26.816 14.301 23.403 29.319l-5.517 24.276C523.112 414.668 536 433.828 536 456c0 31.202-25.519 56.444-56.824 55.994-29.823-.429-54.35-24.631-55.155-54.447-.44-16.287 6.085-31.049 16.803-41.548H231.176C241.553 426.165 248 440.326 248 456c0 31.813-26.528 57.431-58.67 55.938-28.54-1.325-51.751-24.385-53.251-52.917-1.158-22.034 10.436-41.455 28.051-51.586L93.883 64H24C10.745 64 0 53.255 0 40V24C0 10.745 10.745 0 24 0h102.529c11.401 0 21.228 8.021 23.513 19.19L159.208 64H551.99c15.401 0 26.816 14.301 23.403 29.319l-47.273 208C525.637 312.246 515.923 320 504.717 320zM408 168h-48v-40c0-8.837-7.163-16-16-16h-16c-8.837 0-16 7.163-16 16v40h-48c-8.837 0-16 7.163-16 16v16c0 8.837 7.163 16 16 16h48v40c0 8.837 7.163 16 16 16h16c8.837 0 16-7.163 16-16v-40h48c8.837 0 16-7.163 16-16v-16c0-8.837-7.163-16-16-16z\"]\n};\nvar faCashRegister = {\n prefix: 'fas',\n iconName: 'cash-register',\n icon: [512, 512, [], \"f788\", \"M511.1 378.8l-26.7-160c-2.6-15.4-15.9-26.7-31.6-26.7H208v-64h96c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H48c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h96v64H59.1c-15.6 0-29 11.3-31.6 26.7L.8 378.7c-.6 3.5-.9 7-.9 10.5V480c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32v-90.7c.1-3.5-.2-7-.8-10.5zM280 248c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16zm-32 64h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16zm-32-80c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16zM80 80V48h192v32H80zm40 200h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16zm16 64v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16zm216 112c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h176c4.4 0 8 3.6 8 8v16zm24-112c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16zm48-80c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16z\"]\n};\nvar faCat = {\n prefix: 'fas',\n iconName: 'cat',\n icon: [512, 512, [], \"f6be\", \"M290.59 192c-20.18 0-106.82 1.98-162.59 85.95V192c0-52.94-43.06-96-96-96-17.67 0-32 14.33-32 32s14.33 32 32 32c17.64 0 32 14.36 32 32v256c0 35.3 28.7 64 64 64h176c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-32l128-96v144c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V289.86c-10.29 2.67-20.89 4.54-32 4.54-61.81 0-113.52-44.05-125.41-102.4zM448 96h-64l-64-64v134.4c0 53.02 42.98 96 96 96s96-42.98 96-96V32l-64 64zm-72 80c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm80 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z\"]\n};\nvar faCertificate = {\n prefix: 'fas',\n iconName: 'certificate',\n icon: [512, 512, [], \"f0a3\", \"M458.622 255.92l45.985-45.005c13.708-12.977 7.316-36.039-10.664-40.339l-62.65-15.99 17.661-62.015c4.991-17.838-11.829-34.663-29.661-29.671l-61.994 17.667-15.984-62.671C337.085.197 313.765-6.276 300.99 7.228L256 53.57 211.011 7.229c-12.63-13.351-36.047-7.234-40.325 10.668l-15.984 62.671-61.995-17.667C74.87 57.907 58.056 74.738 63.046 92.572l17.661 62.015-62.65 15.99C.069 174.878-6.31 197.944 7.392 210.915l45.985 45.005-45.985 45.004c-13.708 12.977-7.316 36.039 10.664 40.339l62.65 15.99-17.661 62.015c-4.991 17.838 11.829 34.663 29.661 29.671l61.994-17.667 15.984 62.671c4.439 18.575 27.696 24.018 40.325 10.668L256 458.61l44.989 46.001c12.5 13.488 35.987 7.486 40.325-10.668l15.984-62.671 61.994 17.667c17.836 4.994 34.651-11.837 29.661-29.671l-17.661-62.015 62.65-15.99c17.987-4.302 24.366-27.367 10.664-40.339l-45.984-45.004z\"]\n};\nvar faChair = {\n prefix: 'fas',\n iconName: 'chair',\n icon: [448, 512, [], \"f6c0\", \"M112 128c0-29.5 16.2-55 40-68.9V256h48V48h48v208h48V59.1c23.8 13.9 40 39.4 40 68.9v128h48V128C384 57.3 326.7 0 256 0h-64C121.3 0 64 57.3 64 128v128h48zm334.3 213.9l-10.7-32c-4.4-13.1-16.6-21.9-30.4-21.9H42.7c-13.8 0-26 8.8-30.4 21.9l-10.7 32C-5.2 362.6 10.2 384 32 384v112c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V384h256v112c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V384c21.8 0 37.2-21.4 30.3-42.1z\"]\n};\nvar faChalkboard = {\n prefix: 'fas',\n iconName: 'chalkboard',\n icon: [640, 512, [], \"f51b\", \"M96 64h448v352h64V40c0-22.06-17.94-40-40-40H72C49.94 0 32 17.94 32 40v376h64V64zm528 384H480v-64H288v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faChalkboardTeacher = {\n prefix: 'fas',\n iconName: 'chalkboard-teacher',\n icon: [640, 512, [], \"f51c\", \"M208 352c-2.39 0-4.78.35-7.06 1.09C187.98 357.3 174.35 360 160 360c-14.35 0-27.98-2.7-40.95-6.91-2.28-.74-4.66-1.09-7.05-1.09C49.94 352-.33 402.48 0 464.62.14 490.88 21.73 512 48 512h224c26.27 0 47.86-21.12 48-47.38.33-62.14-49.94-112.62-112-112.62zm-48-32c53.02 0 96-42.98 96-96s-42.98-96-96-96-96 42.98-96 96 42.98 96 96 96zM592 0H208c-26.47 0-48 22.25-48 49.59V96c23.42 0 45.1 6.78 64 17.8V64h352v288h-64v-64H384v64h-76.24c19.1 16.69 33.12 38.73 39.69 64H592c26.47 0 48-22.25 48-49.59V49.59C640 22.25 618.47 0 592 0z\"]\n};\nvar faChargingStation = {\n prefix: 'fas',\n iconName: 'charging-station',\n icon: [576, 512, [], \"f5e7\", \"M336 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h320c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm208-320V80c0-8.84-7.16-16-16-16s-16 7.16-16 16v48h-32V80c0-8.84-7.16-16-16-16s-16 7.16-16 16v48h-16c-8.84 0-16 7.16-16 16v32c0 35.76 23.62 65.69 56 75.93v118.49c0 13.95-9.5 26.92-23.26 29.19C431.22 402.5 416 388.99 416 372v-28c0-48.6-39.4-88-88-88h-8V64c0-35.35-28.65-64-64-64H96C60.65 0 32 28.65 32 64v352h288V304h8c22.09 0 40 17.91 40 40v24.61c0 39.67 28.92 75.16 68.41 79.01C481.71 452.05 520 416.41 520 372V251.93c32.38-10.24 56-40.17 56-75.93v-32c0-8.84-7.16-16-16-16h-16zm-283.91 47.76l-93.7 139c-2.2 3.33-6.21 5.24-10.39 5.24-7.67 0-13.47-6.28-11.67-12.92L167.35 224H108c-7.25 0-12.85-5.59-11.89-11.89l16-107C112.9 99.9 117.98 96 124 96h68c7.88 0 13.62 6.54 11.6 13.21L192 160h57.7c9.24 0 15.01 8.78 10.39 15.76z\"]\n};\nvar faChartArea = {\n prefix: 'fas',\n iconName: 'chart-area',\n icon: [512, 512, [], \"f1fe\", \"M500 384c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v308h436zM372.7 159.5L288 216l-85.3-113.7c-5.1-6.8-15.5-6.3-19.9 1L96 248v104h384l-89.9-187.8c-3.2-6.5-11.4-8.7-17.4-4.7z\"]\n};\nvar faChartBar = {\n prefix: 'fas',\n iconName: 'chart-bar',\n icon: [512, 512, [], \"f080\", \"M332.8 320h38.4c6.4 0 12.8-6.4 12.8-12.8V172.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h38.4c6.4 0 12.8-6.4 12.8-12.8V76.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-288 0h38.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h38.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zM496 384H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faChartLine = {\n prefix: 'fas',\n iconName: 'chart-line',\n icon: [512, 512, [], \"f201\", \"M496 384H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM464 96H345.94c-21.38 0-32.09 25.85-16.97 40.97l32.4 32.4L288 242.75l-73.37-73.37c-12.5-12.5-32.76-12.5-45.25 0l-68.69 68.69c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0L192 237.25l73.37 73.37c12.5 12.5 32.76 12.5 45.25 0l96-96 32.4 32.4c15.12 15.12 40.97 4.41 40.97-16.97V112c.01-8.84-7.15-16-15.99-16z\"]\n};\nvar faChartPie = {\n prefix: 'fas',\n iconName: 'chart-pie',\n icon: [544, 512, [], \"f200\", \"M527.79 288H290.5l158.03 158.03c6.04 6.04 15.98 6.53 22.19.68 38.7-36.46 65.32-85.61 73.13-140.86 1.34-9.46-6.51-17.85-16.06-17.85zm-15.83-64.8C503.72 103.74 408.26 8.28 288.8.04 279.68-.59 272 7.1 272 16.24V240h223.77c9.14 0 16.82-7.68 16.19-16.8zM224 288V50.71c0-9.55-8.39-17.4-17.84-16.06C86.99 51.49-4.1 155.6.14 280.37 4.5 408.51 114.83 513.59 243.03 511.98c50.4-.63 96.97-16.87 135.26-44.03 7.9-5.6 8.42-17.23 1.57-24.08L224 288z\"]\n};\nvar faCheck = {\n prefix: 'fas',\n iconName: 'check',\n icon: [512, 512, [], \"f00c\", \"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"]\n};\nvar faCheckCircle = {\n prefix: 'fas',\n iconName: 'check-circle',\n icon: [512, 512, [], \"f058\", \"M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM227.314 387.314l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.249-16.379-6.249-22.628 0L216 308.118l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.249 16.379 6.249 22.628.001z\"]\n};\nvar faCheckDouble = {\n prefix: 'fas',\n iconName: 'check-double',\n icon: [512, 512, [], \"f560\", \"M505 174.8l-39.6-39.6c-9.4-9.4-24.6-9.4-33.9 0L192 374.7 80.6 263.2c-9.4-9.4-24.6-9.4-33.9 0L7 302.9c-9.4 9.4-9.4 24.6 0 34L175 505c9.4 9.4 24.6 9.4 33.9 0l296-296.2c9.4-9.5 9.4-24.7.1-34zm-324.3 106c6.2 6.3 16.4 6.3 22.6 0l208-208.2c6.2-6.3 6.2-16.4 0-22.6L366.1 4.7c-6.2-6.3-16.4-6.3-22.6 0L192 156.2l-55.4-55.5c-6.2-6.3-16.4-6.3-22.6 0L68.7 146c-6.2 6.3-6.2 16.4 0 22.6l112 112.2z\"]\n};\nvar faCheckSquare = {\n prefix: 'fas',\n iconName: 'check-square',\n icon: [448, 512, [], \"f14a\", \"M400 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zm-204.686-98.059l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.248-16.379-6.249-22.628 0L184 302.745l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.25 16.379 6.25 22.628.001z\"]\n};\nvar faCheese = {\n prefix: 'fas',\n iconName: 'cheese',\n icon: [512, 512, [], \"f7ef\", \"M0 288v160a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32V288zM299.83 32a32 32 0 0 0-21.13 7L0 256h512c0-119.89-94-217.8-212.17-224z\"]\n};\nvar faChess = {\n prefix: 'fas',\n iconName: 'chess',\n icon: [512, 512, [], \"f439\", \"M74 208H64a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h15.94A535.78 535.78 0 0 1 64 384h128a535.78 535.78 0 0 1-15.94-128H192a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16h-10l33.89-90.38a16 16 0 0 0-15-21.62H144V64h24a8 8 0 0 0 8-8V40a8 8 0 0 0-8-8h-24V8a8 8 0 0 0-8-8h-16a8 8 0 0 0-8 8v24H88a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h24v32H55.09a16 16 0 0 0-15 21.62zm173.16 251.58L224 448v-16a16 16 0 0 0-16-16H48a16 16 0 0 0-16 16v16L8.85 459.58A16 16 0 0 0 0 473.89V496a16 16 0 0 0 16 16h224a16 16 0 0 0 16-16v-22.11a16 16 0 0 0-8.84-14.31zm92.77-157.78l-3.29 82.2h126.72l-3.29-82.21 24.6-20.79A32 32 0 0 0 496 256.54V198a6 6 0 0 0-6-6h-26.38a6 6 0 0 0-6 6v26h-24.71v-26a6 6 0 0 0-6-6H373.1a6 6 0 0 0-6 6v26h-24.71v-26a6 6 0 0 0-6-6H310a6 6 0 0 0-6 6v58.6a32 32 0 0 0 11.36 24.4zM384 304a16 16 0 0 1 32 0v32h-32zm119.16 155.58L480 448v-16a16 16 0 0 0-16-16H336a16 16 0 0 0-16 16v16l-23.15 11.58a16 16 0 0 0-8.85 14.31V496a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-22.11a16 16 0 0 0-8.84-14.31z\"]\n};\nvar faChessBishop = {\n prefix: 'fas',\n iconName: 'chess-bishop',\n icon: [320, 512, [], \"f43a\", \"M8 287.88c0 51.64 22.14 73.83 56 84.6V416h192v-43.52c33.86-10.77 56-33 56-84.6 0-30.61-10.73-67.1-26.69-102.56L185 285.65a8 8 0 0 1-11.31 0l-11.31-11.31a8 8 0 0 1 0-11.31L270.27 155.1c-20.8-37.91-46.47-72.1-70.87-92.59C213.4 59.09 224 47.05 224 32a32 32 0 0 0-32-32h-64a32 32 0 0 0-32 32c0 15 10.6 27.09 24.6 30.51C67.81 106.8 8 214.5 8 287.88zM304 448H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faChessBoard = {\n prefix: 'fas',\n iconName: 'chess-board',\n icon: [512, 512, [], \"f43c\", \"M255.9.2h-64v64h64zM0 64.17v64h64v-64zM128 .2H64v64h64zm64 255.9v64h64v-64zM0 192.12v64h64v-64zM383.85.2h-64v64h64zm128 0h-64v64h64zM128 256.1H64v64h64zM511.8 448v-64h-64v64zm0-128v-64h-64v64zM383.85 512h64v-64h-64zm128-319.88v-64h-64v64zM128 512h64v-64h-64zM0 512h64v-64H0zm255.9 0h64v-64h-64zM0 320.07v64h64v-64zm319.88-191.92v-64h-64v64zm-64 128h64v-64h-64zm-64 128v64h64v-64zm128-64h64v-64h-64zm0-127.95h64v-64h-64zm0 191.93v64h64v-64zM64 384.05v64h64v-64zm128-255.9v-64h-64v64zm191.92 255.9h64v-64h-64zm-128-191.93v-64h-64v64zm128-127.95v64h64v-64zm-128 255.9v64h64v-64zm-64-127.95H128v64h64zm191.92 64h64v-64h-64zM128 128.15H64v64h64zm0 191.92v64h64v-64z\"]\n};\nvar faChessKing = {\n prefix: 'fas',\n iconName: 'chess-king',\n icon: [448, 512, [], \"f43f\", \"M400 448H48a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm16-288H256v-48h40a8 8 0 0 0 8-8V56a8 8 0 0 0-8-8h-40V8a8 8 0 0 0-8-8h-48a8 8 0 0 0-8 8v40h-40a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8h40v48H32a32 32 0 0 0-30.52 41.54L74.56 416h298.88l73.08-214.46A32 32 0 0 0 416 160z\"]\n};\nvar faChessKnight = {\n prefix: 'fas',\n iconName: 'chess-knight',\n icon: [384, 512, [], \"f441\", \"M19 272.47l40.63 18.06a32 32 0 0 0 24.88.47l12.78-5.12a32 32 0 0 0 18.76-20.5l9.22-30.65a24 24 0 0 1 12.55-15.65L159.94 208v50.33a48 48 0 0 1-26.53 42.94l-57.22 28.65A80 80 0 0 0 32 401.48V416h319.86V224c0-106-85.92-192-191.92-192H12A12 12 0 0 0 0 44a16.9 16.9 0 0 0 1.79 7.58L16 80l-9 9a24 24 0 0 0-7 17v137.21a32 32 0 0 0 19 29.26zM52 128a20 20 0 1 1-20 20 20 20 0 0 1 20-20zm316 320H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faChessPawn = {\n prefix: 'fas',\n iconName: 'chess-pawn',\n icon: [320, 512, [], \"f443\", \"M105.1 224H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h16v5.49c0 44-4.14 86.6-24 122.51h176c-19.89-35.91-24-78.51-24-122.51V288h16a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-25.1c29.39-18.38 49.1-50.78 49.1-88a104 104 0 0 0-208 0c0 37.22 19.71 69.62 49.1 88zM304 448H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faChessQueen = {\n prefix: 'fas',\n iconName: 'chess-queen',\n icon: [512, 512, [], \"f445\", \"M256 112a56 56 0 1 0-56-56 56 56 0 0 0 56 56zm176 336H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm72.87-263.84l-28.51-15.92c-7.44-5-16.91-2.46-22.29 4.68a47.59 47.59 0 0 1-47.23 18.23C383.7 186.86 368 164.93 368 141.4a13.4 13.4 0 0 0-13.4-13.4h-38.77c-6 0-11.61 4-12.86 9.91a48 48 0 0 1-93.94 0c-1.25-5.92-6.82-9.91-12.86-9.91H157.4a13.4 13.4 0 0 0-13.4 13.4c0 25.69-19 48.75-44.67 50.49a47.5 47.5 0 0 1-41.54-19.15c-5.28-7.09-14.73-9.45-22.09-4.54l-28.57 16a16 16 0 0 0-5.44 20.47L104.24 416h303.52l102.55-211.37a16 16 0 0 0-5.44-20.47z\"]\n};\nvar faChessRook = {\n prefix: 'fas',\n iconName: 'chess-rook',\n icon: [384, 512, [], \"f447\", \"M368 32h-56a16 16 0 0 0-16 16v48h-48V48a16 16 0 0 0-16-16h-80a16 16 0 0 0-16 16v48H88.1V48a16 16 0 0 0-16-16H16A16 16 0 0 0 0 48v176l64 32c0 48.33-1.54 95-13.21 160h282.42C321.54 351 320 303.72 320 256l64-32V48a16 16 0 0 0-16-16zM224 320h-64v-64a32 32 0 0 1 64 0zm144 128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faChevronCircleDown = {\n prefix: 'fas',\n iconName: 'chevron-circle-down',\n icon: [512, 512, [], \"f13a\", \"M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zM273 369.9l135.5-135.5c9.4-9.4 9.4-24.6 0-33.9l-17-17c-9.4-9.4-24.6-9.4-33.9 0L256 285.1 154.4 183.5c-9.4-9.4-24.6-9.4-33.9 0l-17 17c-9.4 9.4-9.4 24.6 0 33.9L239 369.9c9.4 9.4 24.6 9.4 34 0z\"]\n};\nvar faChevronCircleLeft = {\n prefix: 'fas',\n iconName: 'chevron-circle-left',\n icon: [512, 512, [], \"f137\", \"M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zM142.1 273l135.5 135.5c9.4 9.4 24.6 9.4 33.9 0l17-17c9.4-9.4 9.4-24.6 0-33.9L226.9 256l101.6-101.6c9.4-9.4 9.4-24.6 0-33.9l-17-17c-9.4-9.4-24.6-9.4-33.9 0L142.1 239c-9.4 9.4-9.4 24.6 0 34z\"]\n};\nvar faChevronCircleRight = {\n prefix: 'fas',\n iconName: 'chevron-circle-right',\n icon: [512, 512, [], \"f138\", \"M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm113.9 231L234.4 103.5c-9.4-9.4-24.6-9.4-33.9 0l-17 17c-9.4 9.4-9.4 24.6 0 33.9L285.1 256 183.5 357.6c-9.4 9.4-9.4 24.6 0 33.9l17 17c9.4 9.4 24.6 9.4 33.9 0L369.9 273c9.4-9.4 9.4-24.6 0-34z\"]\n};\nvar faChevronCircleUp = {\n prefix: 'fas',\n iconName: 'chevron-circle-up',\n icon: [512, 512, [], \"f139\", \"M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm231-113.9L103.5 277.6c-9.4 9.4-9.4 24.6 0 33.9l17 17c9.4 9.4 24.6 9.4 33.9 0L256 226.9l101.6 101.6c9.4 9.4 24.6 9.4 33.9 0l17-17c9.4-9.4 9.4-24.6 0-33.9L273 142.1c-9.4-9.4-24.6-9.4-34 0z\"]\n};\nvar faChevronDown = {\n prefix: 'fas',\n iconName: 'chevron-down',\n icon: [448, 512, [], \"f078\", \"M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z\"]\n};\nvar faChevronLeft = {\n prefix: 'fas',\n iconName: 'chevron-left',\n icon: [320, 512, [], \"f053\", \"M34.52 239.03L228.87 44.69c9.37-9.37 24.57-9.37 33.94 0l22.67 22.67c9.36 9.36 9.37 24.52.04 33.9L131.49 256l154.02 154.75c9.34 9.38 9.32 24.54-.04 33.9l-22.67 22.67c-9.37 9.37-24.57 9.37-33.94 0L34.52 272.97c-9.37-9.37-9.37-24.57 0-33.94z\"]\n};\nvar faChevronRight = {\n prefix: 'fas',\n iconName: 'chevron-right',\n icon: [320, 512, [], \"f054\", \"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"]\n};\nvar faChevronUp = {\n prefix: 'fas',\n iconName: 'chevron-up',\n icon: [448, 512, [], \"f077\", \"M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z\"]\n};\nvar faChild = {\n prefix: 'fas',\n iconName: 'child',\n icon: [384, 512, [], \"f1ae\", \"M120 72c0-39.765 32.235-72 72-72s72 32.235 72 72c0 39.764-32.235 72-72 72s-72-32.236-72-72zm254.627 1.373c-12.496-12.497-32.758-12.497-45.254 0L242.745 160H141.254L54.627 73.373c-12.496-12.497-32.758-12.497-45.254 0-12.497 12.497-12.497 32.758 0 45.255L104 213.254V480c0 17.673 14.327 32 32 32h16c17.673 0 32-14.327 32-32V368h16v112c0 17.673 14.327 32 32 32h16c17.673 0 32-14.327 32-32V213.254l94.627-94.627c12.497-12.497 12.497-32.757 0-45.254z\"]\n};\nvar faChurch = {\n prefix: 'fas',\n iconName: 'church',\n icon: [640, 512, [], \"f51d\", \"M464.46 246.68L352 179.2V128h48c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16h-48V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v48h-48c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h48v51.2l-112.46 67.48A31.997 31.997 0 0 0 160 274.12V512h96v-96c0-35.35 28.65-64 64-64s64 28.65 64 64v96h96V274.12c0-11.24-5.9-21.66-15.54-27.44zM0 395.96V496c0 8.84 7.16 16 16 16h112V320L19.39 366.54A32.024 32.024 0 0 0 0 395.96zm620.61-29.42L512 320v192h112c8.84 0 16-7.16 16-16V395.96c0-12.8-7.63-24.37-19.39-29.42z\"]\n};\nvar faCircle = {\n prefix: 'fas',\n iconName: 'circle',\n icon: [512, 512, [], \"f111\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z\"]\n};\nvar faCircleNotch = {\n prefix: 'fas',\n iconName: 'circle-notch',\n icon: [512, 512, [], \"f1ce\", \"M288 39.056v16.659c0 10.804 7.281 20.159 17.686 23.066C383.204 100.434 440 171.518 440 256c0 101.689-82.295 184-184 184-101.689 0-184-82.295-184-184 0-84.47 56.786-155.564 134.312-177.219C216.719 75.874 224 66.517 224 55.712V39.064c0-15.709-14.834-27.153-30.046-23.234C86.603 43.482 7.394 141.206 8.003 257.332c.72 137.052 111.477 246.956 248.531 246.667C393.255 503.711 504 392.788 504 256c0-115.633-79.14-212.779-186.211-240.236C302.678 11.889 288 23.456 288 39.056z\"]\n};\nvar faCity = {\n prefix: 'fas',\n iconName: 'city',\n icon: [640, 512, [], \"f64f\", \"M616 192H480V24c0-13.26-10.74-24-24-24H312c-13.26 0-24 10.74-24 24v72h-64V16c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v80h-64V16c0-8.84-7.16-16-16-16H80c-8.84 0-16 7.16-16 16v80H24c-13.26 0-24 10.74-24 24v360c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V216c0-13.26-10.75-24-24-24zM128 404c0 6.63-5.37 12-12 12H76c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12H76c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12H76c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm128 192c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm160 96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12V76c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm160 288c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40z\"]\n};\nvar faClinicMedical = {\n prefix: 'fas',\n iconName: 'clinic-medical',\n icon: [576, 512, [], \"f7f2\", \"M288 115L69.47 307.71c-1.62 1.46-3.69 2.14-5.47 3.35V496a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V311.1c-1.7-1.16-3.72-1.82-5.26-3.2zm96 261a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8v-48a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8zm186.69-139.72l-255.94-226a39.85 39.85 0 0 0-53.45 0l-256 226a16 16 0 0 0-1.21 22.6L25.5 282.7a16 16 0 0 0 22.6 1.21L277.42 81.63a16 16 0 0 1 21.17 0L527.91 283.9a16 16 0 0 0 22.6-1.21l21.4-23.82a16 16 0 0 0-1.22-22.59z\"]\n};\nvar faClipboard = {\n prefix: 'fas',\n iconName: 'clipboard',\n icon: [384, 512, [], \"f328\", \"M384 112v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h80c0-35.29 28.71-64 64-64s64 28.71 64 64h80c26.51 0 48 21.49 48 48zM192 40c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24m96 114v-20a6 6 0 0 0-6-6H102a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6h180a6 6 0 0 0 6-6z\"]\n};\nvar faClipboardCheck = {\n prefix: 'fas',\n iconName: 'clipboard-check',\n icon: [384, 512, [], \"f46c\", \"M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 40c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm121.2 231.8l-143 141.8c-4.7 4.7-12.3 4.6-17-.1l-82.6-83.3c-4.7-4.7-4.6-12.3.1-17L99.1 285c4.7-4.7 12.3-4.6 17 .1l46 46.4 106-105.2c4.7-4.7 12.3-4.6 17 .1l28.2 28.4c4.7 4.8 4.6 12.3-.1 17z\"]\n};\nvar faClipboardList = {\n prefix: 'fas',\n iconName: 'clipboard-list',\n icon: [384, 512, [], \"f46d\", \"M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM96 424c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm0-96c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm0-96c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm96-192c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm128 368c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faClock = {\n prefix: 'fas',\n iconName: 'clock',\n icon: [512, 512, [], \"f017\", \"M256,8C119,8,8,119,8,256S119,504,256,504,504,393,504,256,393,8,256,8Zm92.49,313h0l-20,25a16,16,0,0,1-22.49,2.5h0l-67-49.72a40,40,0,0,1-15-31.23V112a16,16,0,0,1,16-16h32a16,16,0,0,1,16,16V256l58,42.5A16,16,0,0,1,348.49,321Z\"]\n};\nvar faClone = {\n prefix: 'fas',\n iconName: 'clone',\n icon: [512, 512, [], \"f24d\", \"M464 0c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48H176c-26.51 0-48-21.49-48-48V48c0-26.51 21.49-48 48-48h288M176 416c-44.112 0-80-35.888-80-80V128H48c-26.51 0-48 21.49-48 48v288c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48v-48H176z\"]\n};\nvar faClosedCaptioning = {\n prefix: 'fas',\n iconName: 'closed-captioning',\n icon: [512, 512, [], \"f20a\", \"M464 64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM218.1 287.7c2.8-2.5 7.1-2.1 9.2.9l19.5 27.7c1.7 2.4 1.5 5.6-.5 7.7-53.6 56.8-172.8 32.1-172.8-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7l-17.5 30.5c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2.1 48 51.1 70.5 92.3 32.6zm190.4 0c2.8-2.5 7.1-2.1 9.2.9l19.5 27.7c1.7 2.4 1.5 5.6-.5 7.7-53.5 56.9-172.7 32.1-172.7-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7L420 222.2c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2 0 48 51 70.5 92.2 32.6z\"]\n};\nvar faCloud = {\n prefix: 'fas',\n iconName: 'cloud',\n icon: [640, 512, [], \"f0c2\", \"M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4z\"]\n};\nvar faCloudDownloadAlt = {\n prefix: 'fas',\n iconName: 'cloud-download-alt',\n icon: [640, 512, [], \"f381\", \"M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zm-132.9 88.7L299.3 420.7c-6.2 6.2-16.4 6.2-22.6 0L171.3 315.3c-10.1-10.1-2.9-27.3 11.3-27.3H248V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v112h65.4c14.2 0 21.4 17.2 11.3 27.3z\"]\n};\nvar faCloudMeatball = {\n prefix: 'fas',\n iconName: 'cloud-meatball',\n icon: [512, 512, [], \"f73b\", \"M48 352c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm416 0c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm-119 11.1c4.6-14.5 1.6-30.8-9.8-42.3-11.5-11.5-27.8-14.4-42.3-9.9-7-13.5-20.7-23-36.9-23s-29.9 9.5-36.9 23c-14.5-4.6-30.8-1.6-42.3 9.9-11.5 11.5-14.4 27.8-9.9 42.3-13.5 7-23 20.7-23 36.9s9.5 29.9 23 36.9c-4.6 14.5-1.6 30.8 9.9 42.3 8.2 8.2 18.9 12.3 29.7 12.3 4.3 0 8.5-1.1 12.6-2.5 7 13.5 20.7 23 36.9 23s29.9-9.5 36.9-23c4.1 1.3 8.3 2.5 12.6 2.5 10.8 0 21.5-4.1 29.7-12.3 11.5-11.5 14.4-27.8 9.8-42.3 13.5-7 23-20.7 23-36.9s-9.5-29.9-23-36.9zM512 224c0-53-43-96-96-96-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.1 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h43.4c3.6-8 8.4-15.4 14.8-21.8 13.5-13.5 31.5-21.1 50.8-21.3 13.5-13.2 31.7-20.9 51-20.9s37.5 7.7 51 20.9c19.3.2 37.3 7.8 50.8 21.3 6.4 6.4 11.3 13.8 14.8 21.8H416c53 0 96-43 96-96z\"]\n};\nvar faCloudMoon = {\n prefix: 'fas',\n iconName: 'cloud-moon',\n icon: [576, 512, [], \"f6c3\", \"M342.8 352.7c5.7-9.6 9.2-20.7 9.2-32.7 0-35.3-28.7-64-64-64-17.2 0-32.8 6.9-44.3 17.9-16.3-29.6-47.5-49.9-83.7-49.9-53 0-96 43-96 96 0 2 .5 3.8.6 5.7C27.1 338.8 0 374.1 0 416c0 53 43 96 96 96h240c44.2 0 80-35.8 80-80 0-41.9-32.3-75.8-73.2-79.3zm222.5-54.3c-93.1 17.7-178.5-53.7-178.5-147.7 0-54.2 29-104 76.1-130.8 7.3-4.1 5.4-15.1-2.8-16.7C448.4 1.1 436.7 0 425 0 319.1 0 233.1 85.9 233.1 192c0 8.5.7 16.8 1.8 25 5.9 4.3 11.6 8.9 16.7 14.2 11.4-4.7 23.7-7.2 36.4-7.2 52.9 0 96 43.1 96 96 0 3.6-.2 7.2-.6 10.7 23.6 10.8 42.4 29.5 53.5 52.6 54.4-3.4 103.7-29.3 137.1-70.4 5.3-6.5-.5-16.1-8.7-14.5z\"]\n};\nvar faCloudMoonRain = {\n prefix: 'fas',\n iconName: 'cloud-moon-rain',\n icon: [576, 512, [], \"f73c\", \"M350.5 225.5c-6.9-37.2-39.3-65.5-78.5-65.5-12.3 0-23.9 3-34.3 8-17.4-24.1-45.6-40-77.7-40-53 0-96 43-96 96 0 .5.2 1.1.2 1.6C27.6 232.9 0 265.2 0 304c0 44.2 35.8 80 80 80h256c44.2 0 80-35.8 80-80 0-39.2-28.2-71.7-65.5-78.5zm217.4-1.7c-70.4 13.3-135-40.3-135-110.8 0-40.6 21.9-78 57.5-98.1 5.5-3.1 4.1-11.4-2.1-12.5C479.6.8 470.7 0 461.8 0c-77.9 0-141.1 61.2-144.4 137.9 26.7 11.9 48.2 33.8 58.9 61.7 37.1 14.3 64 47.4 70.2 86.8 5.1.5 10 1.5 15.2 1.5 44.7 0 85.6-20.2 112.6-53.3 4.2-4.8-.2-12-6.4-10.8zM364.5 418.1c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8z\"]\n};\nvar faCloudRain = {\n prefix: 'fas',\n iconName: 'cloud-rain',\n icon: [512, 512, [], \"f73d\", \"M416 128c-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.1 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h320c53 0 96-43 96-96s-43-96-96-96zM88 374.2c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0zm160 0c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0zm160 0c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0z\"]\n};\nvar faCloudShowersHeavy = {\n prefix: 'fas',\n iconName: 'cloud-showers-heavy',\n icon: [512, 512, [], \"f740\", \"M183.9 370.1c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm96 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm-192 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm384 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm-96 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zM416 128c-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.2 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h320c53 0 96-43 96-96s-43-96-96-96z\"]\n};\nvar faCloudSun = {\n prefix: 'fas',\n iconName: 'cloud-sun',\n icon: [640, 512, [], \"f6c4\", \"M575.2 325.7c.2-1.9.8-3.7.8-5.6 0-35.3-28.7-64-64-64-12.6 0-24.2 3.8-34.1 10-17.6-38.8-56.5-66-101.9-66-61.8 0-112 50.1-112 112 0 3 .7 5.8.9 8.7-49.6 3.7-88.9 44.7-88.9 95.3 0 53 43 96 96 96h272c53 0 96-43 96-96 0-42.1-27.2-77.4-64.8-90.4zm-430.4-22.6c-43.7-43.7-43.7-114.7 0-158.3 43.7-43.7 114.7-43.7 158.4 0 9.7 9.7 16.9 20.9 22.3 32.7 9.8-3.7 20.1-6 30.7-7.5L386 81.1c4-11.9-7.3-23.1-19.2-19.2L279 91.2 237.5 8.4C232-2.8 216-2.8 210.4 8.4L169 91.2 81.1 61.9C69.3 58 58 69.3 61.9 81.1l29.3 87.8-82.8 41.5c-11.2 5.6-11.2 21.5 0 27.1l82.8 41.4-29.3 87.8c-4 11.9 7.3 23.1 19.2 19.2l76.1-25.3c6.1-12.4 14-23.7 23.6-33.5-13.1-5.4-25.4-13.4-36-24zm-4.8-79.2c0 40.8 29.3 74.8 67.9 82.3 8-4.7 16.3-8.8 25.2-11.7 5.4-44.3 31-82.5 67.4-105C287.3 160.4 258 140 224 140c-46.3 0-84 37.6-84 83.9z\"]\n};\nvar faCloudSunRain = {\n prefix: 'fas',\n iconName: 'cloud-sun-rain',\n icon: [576, 512, [], \"f743\", \"M510.5 225.5c-6.9-37.2-39.3-65.5-78.5-65.5-12.3 0-23.9 3-34.3 8-17.4-24.1-45.6-40-77.7-40-53 0-96 43-96 96 0 .5.2 1.1.2 1.6C187.6 233 160 265.2 160 304c0 44.2 35.8 80 80 80h256c44.2 0 80-35.8 80-80 0-39.2-28.2-71.7-65.5-78.5zm-386.4 34.4c-37.4-37.4-37.4-98.3 0-135.8 34.6-34.6 89.1-36.8 126.7-7.4 20-12.9 43.6-20.7 69.2-20.7.7 0 1.3.2 2 .2l8.9-26.7c3.4-10.2-6.3-19.8-16.5-16.4l-75.3 25.1-35.5-71c-4.8-9.6-18.5-9.6-23.3 0l-35.5 71-75.3-25.1c-10.2-3.4-19.8 6.3-16.4 16.5l25.1 75.3-71 35.5c-9.6 4.8-9.6 18.5 0 23.3l71 35.5-25.1 75.3c-3.4 10.2 6.3 19.8 16.5 16.5l59.2-19.7c-.2-2.4-.7-4.7-.7-7.2 0-12.5 2.3-24.5 6.2-35.9-3.6-2.7-7.1-5.2-10.2-8.3zm69.8-58c4.3-24.5 15.8-46.4 31.9-64-9.8-6.2-21.4-9.9-33.8-9.9-35.3 0-64 28.7-64 64 0 18.7 8.2 35.4 21.1 47.1 11.3-15.9 26.6-28.9 44.8-37.2zm330.6 216.2c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8z\"]\n};\nvar faCloudUploadAlt = {\n prefix: 'fas',\n iconName: 'cloud-upload-alt',\n icon: [640, 512, [], \"f382\", \"M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zM393.4 288H328v112c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V288h-65.4c-14.3 0-21.4-17.2-11.3-27.3l105.4-105.4c6.2-6.2 16.4-6.2 22.6 0l105.4 105.4c10.1 10.1 2.9 27.3-11.3 27.3z\"]\n};\nvar faCocktail = {\n prefix: 'fas',\n iconName: 'cocktail',\n icon: [576, 512, [], \"f561\", \"M296 464h-56V338.78l168.74-168.73c15.52-15.52 4.53-42.05-17.42-42.05H24.68c-21.95 0-32.94 26.53-17.42 42.05L176 338.78V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40zM432 0c-62.61 0-115.35 40.2-135.18 96h52.54c16.65-28.55 47.27-48 82.64-48 52.93 0 96 43.06 96 96s-43.07 96-96 96c-14.04 0-27.29-3.2-39.32-8.64l-35.26 35.26C379.23 279.92 404.59 288 432 288c79.53 0 144-64.47 144-144S511.53 0 432 0z\"]\n};\nvar faCode = {\n prefix: 'fas',\n iconName: 'code',\n icon: [640, 512, [], \"f121\", \"M278.9 511.5l-61-17.7c-6.4-1.8-10-8.5-8.2-14.9L346.2 8.7c1.8-6.4 8.5-10 14.9-8.2l61 17.7c6.4 1.8 10 8.5 8.2 14.9L293.8 503.3c-1.9 6.4-8.5 10.1-14.9 8.2zm-114-112.2l43.5-46.4c4.6-4.9 4.3-12.7-.8-17.2L117 256l90.6-79.7c5.1-4.5 5.5-12.3.8-17.2l-43.5-46.4c-4.5-4.8-12.1-5.1-17-.5L3.8 247.2c-5.1 4.7-5.1 12.8 0 17.5l144.1 135.1c4.9 4.6 12.5 4.4 17-.5zm327.2.6l144.1-135.1c5.1-4.7 5.1-12.8 0-17.5L492.1 112.1c-4.8-4.5-12.4-4.3-17 .5L431.6 159c-4.6 4.9-4.3 12.7.8 17.2L523 256l-90.6 79.7c-5.1 4.5-5.5 12.3-.8 17.2l43.5 46.4c4.5 4.9 12.1 5.1 17 .6z\"]\n};\nvar faCodeBranch = {\n prefix: 'fas',\n iconName: 'code-branch',\n icon: [384, 512, [], \"f126\", \"M384 144c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 36.4 24.3 67.1 57.5 76.8-.6 16.1-4.2 28.5-11 36.9-15.4 19.2-49.3 22.4-85.2 25.7-28.2 2.6-57.4 5.4-81.3 16.9v-144c32.5-10.2 56-40.5 56-76.3 0-44.2-35.8-80-80-80S0 35.8 0 80c0 35.8 23.5 66.1 56 76.3v199.3C23.5 365.9 0 396.2 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-34-21.2-63.1-51.2-74.6 3.1-5.2 7.8-9.8 14.9-13.4 16.2-8.2 40.4-10.4 66.1-12.8 42.2-3.9 90-8.4 118.2-43.4 14-17.4 21.1-39.8 21.6-67.9 31.6-10.8 54.4-40.7 54.4-75.9zM80 64c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16 7.2-16 16-16zm0 384c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm224-320c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16 7.2-16 16-16z\"]\n};\nvar faCoffee = {\n prefix: 'fas',\n iconName: 'coffee',\n icon: [640, 512, [], \"f0f4\", \"M192 384h192c53 0 96-43 96-96h32c70.6 0 128-57.4 128-128S582.6 32 512 32H120c-13.3 0-24 10.7-24 24v232c0 53 43 96 96 96zM512 96c35.3 0 64 28.7 64 64s-28.7 64-64 64h-32V96h32zm47.7 384H48.3c-47.6 0-61-64-36-64h583.3c25 0 11.8 64-35.9 64z\"]\n};\nvar faCog = {\n prefix: 'fas',\n iconName: 'cog',\n icon: [512, 512, [], \"f013\", \"M487.4 315.7l-42.6-24.6c4.3-23.2 4.3-47 0-70.2l42.6-24.6c4.9-2.8 7.1-8.6 5.5-14-11.1-35.6-30-67.8-54.7-94.6-3.8-4.1-10-5.1-14.8-2.3L380.8 110c-17.9-15.4-38.5-27.3-60.8-35.1V25.8c0-5.6-3.9-10.5-9.4-11.7-36.7-8.2-74.3-7.8-109.2 0-5.5 1.2-9.4 6.1-9.4 11.7V75c-22.2 7.9-42.8 19.8-60.8 35.1L88.7 85.5c-4.9-2.8-11-1.9-14.8 2.3-24.7 26.7-43.6 58.9-54.7 94.6-1.7 5.4.6 11.2 5.5 14L67.3 221c-4.3 23.2-4.3 47 0 70.2l-42.6 24.6c-4.9 2.8-7.1 8.6-5.5 14 11.1 35.6 30 67.8 54.7 94.6 3.8 4.1 10 5.1 14.8 2.3l42.6-24.6c17.9 15.4 38.5 27.3 60.8 35.1v49.2c0 5.6 3.9 10.5 9.4 11.7 36.7 8.2 74.3 7.8 109.2 0 5.5-1.2 9.4-6.1 9.4-11.7v-49.2c22.2-7.9 42.8-19.8 60.8-35.1l42.6 24.6c4.9 2.8 11 1.9 14.8-2.3 24.7-26.7 43.6-58.9 54.7-94.6 1.5-5.5-.7-11.3-5.6-14.1zM256 336c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faCogs = {\n prefix: 'fas',\n iconName: 'cogs',\n icon: [640, 512, [], \"f085\", \"M512.1 191l-8.2 14.3c-3 5.3-9.4 7.5-15.1 5.4-11.8-4.4-22.6-10.7-32.1-18.6-4.6-3.8-5.8-10.5-2.8-15.7l8.2-14.3c-6.9-8-12.3-17.3-15.9-27.4h-16.5c-6 0-11.2-4.3-12.2-10.3-2-12-2.1-24.6 0-37.1 1-6 6.2-10.4 12.2-10.4h16.5c3.6-10.1 9-19.4 15.9-27.4l-8.2-14.3c-3-5.2-1.9-11.9 2.8-15.7 9.5-7.9 20.4-14.2 32.1-18.6 5.7-2.1 12.1.1 15.1 5.4l8.2 14.3c10.5-1.9 21.2-1.9 31.7 0L552 6.3c3-5.3 9.4-7.5 15.1-5.4 11.8 4.4 22.6 10.7 32.1 18.6 4.6 3.8 5.8 10.5 2.8 15.7l-8.2 14.3c6.9 8 12.3 17.3 15.9 27.4h16.5c6 0 11.2 4.3 12.2 10.3 2 12 2.1 24.6 0 37.1-1 6-6.2 10.4-12.2 10.4h-16.5c-3.6 10.1-9 19.4-15.9 27.4l8.2 14.3c3 5.2 1.9 11.9-2.8 15.7-9.5 7.9-20.4 14.2-32.1 18.6-5.7 2.1-12.1-.1-15.1-5.4l-8.2-14.3c-10.4 1.9-21.2 1.9-31.7 0zm-10.5-58.8c38.5 29.6 82.4-14.3 52.8-52.8-38.5-29.7-82.4 14.3-52.8 52.8zM386.3 286.1l33.7 16.8c10.1 5.8 14.5 18.1 10.5 29.1-8.9 24.2-26.4 46.4-42.6 65.8-7.4 8.9-20.2 11.1-30.3 5.3l-29.1-16.8c-16 13.7-34.6 24.6-54.9 31.7v33.6c0 11.6-8.3 21.6-19.7 23.6-24.6 4.2-50.4 4.4-75.9 0-11.5-2-20-11.9-20-23.6V418c-20.3-7.2-38.9-18-54.9-31.7L74 403c-10 5.8-22.9 3.6-30.3-5.3-16.2-19.4-33.3-41.6-42.2-65.7-4-10.9.4-23.2 10.5-29.1l33.3-16.8c-3.9-20.9-3.9-42.4 0-63.4L12 205.8c-10.1-5.8-14.6-18.1-10.5-29 8.9-24.2 26-46.4 42.2-65.8 7.4-8.9 20.2-11.1 30.3-5.3l29.1 16.8c16-13.7 34.6-24.6 54.9-31.7V57.1c0-11.5 8.2-21.5 19.6-23.5 24.6-4.2 50.5-4.4 76-.1 11.5 2 20 11.9 20 23.6v33.6c20.3 7.2 38.9 18 54.9 31.7l29.1-16.8c10-5.8 22.9-3.6 30.3 5.3 16.2 19.4 33.2 41.6 42.1 65.8 4 10.9.1 23.2-10 29.1l-33.7 16.8c3.9 21 3.9 42.5 0 63.5zm-117.6 21.1c59.2-77-28.7-164.9-105.7-105.7-59.2 77 28.7 164.9 105.7 105.7zm243.4 182.7l-8.2 14.3c-3 5.3-9.4 7.5-15.1 5.4-11.8-4.4-22.6-10.7-32.1-18.6-4.6-3.8-5.8-10.5-2.8-15.7l8.2-14.3c-6.9-8-12.3-17.3-15.9-27.4h-16.5c-6 0-11.2-4.3-12.2-10.3-2-12-2.1-24.6 0-37.1 1-6 6.2-10.4 12.2-10.4h16.5c3.6-10.1 9-19.4 15.9-27.4l-8.2-14.3c-3-5.2-1.9-11.9 2.8-15.7 9.5-7.9 20.4-14.2 32.1-18.6 5.7-2.1 12.1.1 15.1 5.4l8.2 14.3c10.5-1.9 21.2-1.9 31.7 0l8.2-14.3c3-5.3 9.4-7.5 15.1-5.4 11.8 4.4 22.6 10.7 32.1 18.6 4.6 3.8 5.8 10.5 2.8 15.7l-8.2 14.3c6.9 8 12.3 17.3 15.9 27.4h16.5c6 0 11.2 4.3 12.2 10.3 2 12 2.1 24.6 0 37.1-1 6-6.2 10.4-12.2 10.4h-16.5c-3.6 10.1-9 19.4-15.9 27.4l8.2 14.3c3 5.2 1.9 11.9-2.8 15.7-9.5 7.9-20.4 14.2-32.1 18.6-5.7 2.1-12.1-.1-15.1-5.4l-8.2-14.3c-10.4 1.9-21.2 1.9-31.7 0zM501.6 431c38.5 29.6 82.4-14.3 52.8-52.8-38.5-29.6-82.4 14.3-52.8 52.8z\"]\n};\nvar faCoins = {\n prefix: 'fas',\n iconName: 'coins',\n icon: [512, 512, [], \"f51e\", \"M0 405.3V448c0 35.3 86 64 192 64s192-28.7 192-64v-42.7C342.7 434.4 267.2 448 192 448S41.3 434.4 0 405.3zM320 128c106 0 192-28.7 192-64S426 0 320 0 128 28.7 128 64s86 64 192 64zM0 300.4V352c0 35.3 86 64 192 64s192-28.7 192-64v-51.6c-41.3 34-116.9 51.6-192 51.6S41.3 334.4 0 300.4zm416 11c57.3-11.1 96-31.7 96-55.4v-42.7c-23.2 16.4-57.3 27.6-96 34.5v63.6zM192 160C86 160 0 195.8 0 240s86 80 192 80 192-35.8 192-80-86-80-192-80zm219.3 56.3c60-10.8 100.7-32 100.7-56.3v-42.7c-35.5 25.1-96.5 38.6-160.7 41.8 29.5 14.3 51.2 33.5 60 57.2z\"]\n};\nvar faColumns = {\n prefix: 'fas',\n iconName: 'columns',\n icon: [512, 512, [], \"f0db\", \"M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM224 416H64V160h160v256zm224 0H288V160h160v256z\"]\n};\nvar faComment = {\n prefix: 'fas',\n iconName: 'comment',\n icon: [512, 512, [], \"f075\", \"M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7S4.8 480 8 480c66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32z\"]\n};\nvar faCommentAlt = {\n prefix: 'fas',\n iconName: 'comment-alt',\n icon: [512, 512, [], \"f27a\", \"M448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 9.8 11.2 15.5 19.1 9.7L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64z\"]\n};\nvar faCommentDollar = {\n prefix: 'fas',\n iconName: 'comment-dollar',\n icon: [512, 512, [], \"f651\", \"M256 32C114.62 32 0 125.12 0 240c0 49.56 21.41 95.01 57.02 130.74C44.46 421.05 2.7 465.97 2.2 466.5A7.995 7.995 0 0 0 8 480c66.26 0 115.99-31.75 140.6-51.38C181.29 440.93 217.59 448 256 448c141.38 0 256-93.12 256-208S397.38 32 256 32zm24 302.44V352c0 8.84-7.16 16-16 16h-16c-8.84 0-16-7.16-16-16v-17.73c-11.42-1.35-22.28-5.19-31.78-11.46-6.22-4.11-6.82-13.11-1.55-18.38l17.52-17.52c3.74-3.74 9.31-4.24 14.11-2.03 3.18 1.46 6.66 2.22 10.26 2.22h32.78c4.66 0 8.44-3.78 8.44-8.42 0-3.75-2.52-7.08-6.12-8.11l-50.07-14.3c-22.25-6.35-40.01-24.71-42.91-47.67-4.05-32.07 19.03-59.43 49.32-63.05V128c0-8.84 7.16-16 16-16h16c8.84 0 16 7.16 16 16v17.73c11.42 1.35 22.28 5.19 31.78 11.46 6.22 4.11 6.82 13.11 1.55 18.38l-17.52 17.52c-3.74 3.74-9.31 4.24-14.11 2.03a24.516 24.516 0 0 0-10.26-2.22h-32.78c-4.66 0-8.44 3.78-8.44 8.42 0 3.75 2.52 7.08 6.12 8.11l50.07 14.3c22.25 6.36 40.01 24.71 42.91 47.67 4.05 32.06-19.03 59.42-49.32 63.04z\"]\n};\nvar faCommentDots = {\n prefix: 'fas',\n iconName: 'comment-dots',\n icon: [512, 512, [], \"f4ad\", \"M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7S4.8 480 8 480c66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32zM128 272c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faCommentMedical = {\n prefix: 'fas',\n iconName: 'comment-medical',\n icon: [512, 512, [], \"f7f5\", \"M256 32C114.62 32 0 125.12 0 240c0 49.56 21.41 95 57 130.74C44.46 421.05 2.7 466 2.2 466.5A8 8 0 0 0 8 480c66.26 0 116-31.75 140.6-51.38A304.66 304.66 0 0 0 256 448c141.39 0 256-93.12 256-208S397.39 32 256 32zm96 232a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8v-48a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8z\"]\n};\nvar faCommentSlash = {\n prefix: 'fas',\n iconName: 'comment-slash',\n icon: [640, 512, [], \"f4b3\", \"M64 240c0 49.6 21.4 95 57 130.7-12.6 50.3-54.3 95.2-54.8 95.8-2.2 2.3-2.8 5.7-1.5 8.7 1.3 2.9 4.1 4.8 7.3 4.8 66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 27.4 0 53.7-3.6 78.4-10L72.9 186.4c-5.6 17.1-8.9 35-8.9 53.6zm569.8 218.1l-114.4-88.4C554.6 334.1 576 289.2 576 240c0-114.9-114.6-208-256-208-65.1 0-124.2 20.1-169.4 52.7L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3z\"]\n};\nvar faComments = {\n prefix: 'fas',\n iconName: 'comments',\n icon: [576, 512, [], \"f086\", \"M416 192c0-88.4-93.1-160-208-160S0 103.6 0 192c0 34.3 14.1 65.9 38 92-13.4 30.2-35.5 54.2-35.8 54.5-2.2 2.3-2.8 5.7-1.5 8.7S4.8 352 8 352c36.6 0 66.9-12.3 88.7-25 32.2 15.7 70.3 25 111.3 25 114.9 0 208-71.6 208-160zm122 220c23.9-26 38-57.7 38-92 0-66.9-53.5-124.2-129.3-148.1.9 6.6 1.3 13.3 1.3 20.1 0 105.9-107.7 192-240 192-10.8 0-21.3-.8-31.7-1.9C207.8 439.6 281.8 480 368 480c41 0 79.1-9.2 111.3-25 21.8 12.7 52.1 25 88.7 25 3.2 0 6.1-1.9 7.3-4.8 1.3-2.9.7-6.3-1.5-8.7-.3-.3-22.4-24.2-35.8-54.5z\"]\n};\nvar faCommentsDollar = {\n prefix: 'fas',\n iconName: 'comments-dollar',\n icon: [576, 512, [], \"f653\", \"M416 192c0-88.37-93.12-160-208-160S0 103.63 0 192c0 34.27 14.13 65.95 37.97 91.98C24.61 314.22 2.52 338.16 2.2 338.5A7.995 7.995 0 0 0 8 352c36.58 0 66.93-12.25 88.73-24.98C128.93 342.76 167.02 352 208 352c114.88 0 208-71.63 208-160zm-224 96v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V96c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07V288c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm346.01 123.99C561.87 385.96 576 354.27 576 320c0-66.94-53.49-124.2-129.33-148.07.86 6.6 1.33 13.29 1.33 20.07 0 105.87-107.66 192-240 192-10.78 0-21.32-.77-31.73-1.88C207.8 439.63 281.77 480 368 480c40.98 0 79.07-9.24 111.27-24.98C501.07 467.75 531.42 480 568 480c3.2 0 6.09-1.91 7.34-4.84 1.27-2.94.66-6.34-1.55-8.67-.31-.33-22.42-24.24-35.78-54.5z\"]\n};\nvar faCompactDisc = {\n prefix: 'fas',\n iconName: 'compact-disc',\n icon: [496, 512, [], \"f51f\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM88 256H56c0-105.9 86.1-192 192-192v32c-88.2 0-160 71.8-160 160zm160 96c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96zm0-128c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z\"]\n};\nvar faCompass = {\n prefix: 'fas',\n iconName: 'compass',\n icon: [496, 512, [], \"f14e\", \"M225.38 233.37c-12.5 12.5-12.5 32.76 0 45.25 12.49 12.5 32.76 12.5 45.25 0 12.5-12.5 12.5-32.76 0-45.25-12.5-12.49-32.76-12.49-45.25 0zM248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm126.14 148.05L308.17 300.4a31.938 31.938 0 0 1-15.77 15.77l-144.34 65.97c-16.65 7.61-33.81-9.55-26.2-26.2l65.98-144.35a31.938 31.938 0 0 1 15.77-15.77l144.34-65.97c16.65-7.6 33.8 9.55 26.19 26.2z\"]\n};\nvar faCompress = {\n prefix: 'fas',\n iconName: 'compress',\n icon: [448, 512, [], \"f066\", \"M436 192H312c-13.3 0-24-10.7-24-24V44c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v84h84c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12zm-276-24V44c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v84H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h124c13.3 0 24-10.7 24-24zm0 300V344c0-13.3-10.7-24-24-24H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h84v84c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm192 0v-84h84c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12H312c-13.3 0-24 10.7-24 24v124c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12z\"]\n};\nvar faCompressAlt = {\n prefix: 'fas',\n iconName: 'compress-alt',\n icon: [448, 512, [], \"f422\", \"M4.686 427.314L104 328l-32.922-31.029C55.958 281.851 66.666 256 88.048 256h112C213.303 256 224 266.745 224 280v112c0 21.382-25.803 32.09-40.922 16.971L152 376l-99.314 99.314c-6.248 6.248-16.379 6.248-22.627 0L4.686 449.941c-6.248-6.248-6.248-16.379 0-22.627zM443.314 84.686L344 184l32.922 31.029c15.12 15.12 4.412 40.971-16.97 40.971h-112C234.697 256 224 245.255 224 232V120c0-21.382 25.803-32.09 40.922-16.971L296 136l99.314-99.314c6.248-6.248 16.379-6.248 22.627 0l25.373 25.373c6.248 6.248 6.248 16.379 0 22.627z\"]\n};\nvar faCompressArrowsAlt = {\n prefix: 'fas',\n iconName: 'compress-arrows-alt',\n icon: [512, 512, [], \"f78c\", \"M200 288H88c-21.4 0-32.1 25.8-17 41l32.9 31-99.2 99.3c-6.2 6.2-6.2 16.4 0 22.6l25.4 25.4c6.2 6.2 16.4 6.2 22.6 0L152 408l31.1 33c15.1 15.1 40.9 4.4 40.9-17V312c0-13.3-10.7-24-24-24zm112-64h112c21.4 0 32.1-25.9 17-41l-33-31 99.3-99.3c6.2-6.2 6.2-16.4 0-22.6L481.9 4.7c-6.2-6.2-16.4-6.2-22.6 0L360 104l-31.1-33C313.8 55.9 288 66.6 288 88v112c0 13.3 10.7 24 24 24zm96 136l33-31.1c15.1-15.1 4.4-40.9-17-40.9H312c-13.3 0-24 10.7-24 24v112c0 21.4 25.9 32.1 41 17l31-32.9 99.3 99.3c6.2 6.2 16.4 6.2 22.6 0l25.4-25.4c6.2-6.2 6.2-16.4 0-22.6L408 360zM183 71.1L152 104 52.7 4.7c-6.2-6.2-16.4-6.2-22.6 0L4.7 30.1c-6.2 6.2-6.2 16.4 0 22.6L104 152l-33 31.1C55.9 198.2 66.6 224 88 224h112c13.3 0 24-10.7 24-24V88c0-21.3-25.9-32-41-16.9z\"]\n};\nvar faConciergeBell = {\n prefix: 'fas',\n iconName: 'concierge-bell',\n icon: [512, 512, [], \"f562\", \"M288 130.54V112h16c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16h-96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h16v18.54C115.49 146.11 32 239.18 32 352h448c0-112.82-83.49-205.89-192-221.46zM496 384H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faCookie = {\n prefix: 'fas',\n iconName: 'cookie',\n icon: [512, 512, [], \"f563\", \"M510.37 254.79l-12.08-76.26a132.493 132.493 0 0 0-37.16-72.95l-54.76-54.75c-19.73-19.72-45.18-32.7-72.71-37.05l-76.7-12.15c-27.51-4.36-55.69.11-80.52 12.76L107.32 49.6a132.25 132.25 0 0 0-57.79 57.8l-35.1 68.88a132.602 132.602 0 0 0-12.82 80.94l12.08 76.27a132.493 132.493 0 0 0 37.16 72.95l54.76 54.75a132.087 132.087 0 0 0 72.71 37.05l76.7 12.14c27.51 4.36 55.69-.11 80.52-12.75l69.12-35.21a132.302 132.302 0 0 0 57.79-57.8l35.1-68.87c12.71-24.96 17.2-53.3 12.82-80.96zM176 368c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm32-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm160 128c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faCookieBite = {\n prefix: 'fas',\n iconName: 'cookie-bite',\n icon: [512, 512, [], \"f564\", \"M510.52 255.82c-69.97-.85-126.47-57.69-126.47-127.86-70.17 0-127-56.49-127.86-126.45-27.26-4.14-55.13.3-79.72 12.82l-69.13 35.22a132.221 132.221 0 0 0-57.79 57.81l-35.1 68.88a132.645 132.645 0 0 0-12.82 80.95l12.08 76.27a132.521 132.521 0 0 0 37.16 72.96l54.77 54.76a132.036 132.036 0 0 0 72.71 37.06l76.71 12.15c27.51 4.36 55.7-.11 80.53-12.76l69.13-35.21a132.273 132.273 0 0 0 57.79-57.81l35.1-68.88c12.56-24.64 17.01-52.58 12.91-79.91zM176 368c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm32-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm160 128c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faCopy = {\n prefix: 'fas',\n iconName: 'copy',\n icon: [448, 512, [], \"f0c5\", \"M320 448v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V120c0-13.255 10.745-24 24-24h72v296c0 30.879 25.121 56 56 56h168zm0-344V0H152c-13.255 0-24 10.745-24 24v368c0 13.255 10.745 24 24 24h272c13.255 0 24-10.745 24-24V128H344c-13.2 0-24-10.8-24-24zm120.971-31.029L375.029 7.029A24 24 0 0 0 358.059 0H352v96h96v-6.059a24 24 0 0 0-7.029-16.97z\"]\n};\nvar faCopyright = {\n prefix: 'fas',\n iconName: 'copyright',\n icon: [512, 512, [], \"f1f9\", \"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm117.134 346.753c-1.592 1.867-39.776 45.731-109.851 45.731-84.692 0-144.484-63.26-144.484-145.567 0-81.303 62.004-143.401 143.762-143.401 66.957 0 101.965 37.315 103.422 38.904a12 12 0 0 1 1.238 14.623l-22.38 34.655c-4.049 6.267-12.774 7.351-18.234 2.295-.233-.214-26.529-23.88-61.88-23.88-46.116 0-73.916 33.575-73.916 76.082 0 39.602 25.514 79.692 74.277 79.692 38.697 0 65.28-28.338 65.544-28.625 5.132-5.565 14.059-5.033 18.508 1.053l24.547 33.572a12.001 12.001 0 0 1-.553 14.866z\"]\n};\nvar faCouch = {\n prefix: 'fas',\n iconName: 'couch',\n icon: [640, 512, [], \"f4b8\", \"M160 224v64h320v-64c0-35.3 28.7-64 64-64h32c0-53-43-96-96-96H160c-53 0-96 43-96 96h32c35.3 0 64 28.7 64 64zm416-32h-32c-17.7 0-32 14.3-32 32v96H128v-96c0-17.7-14.3-32-32-32H64c-35.3 0-64 28.7-64 64 0 23.6 13 44 32 55.1V432c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-16h384v16c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V311.1c19-11.1 32-31.5 32-55.1 0-35.3-28.7-64-64-64z\"]\n};\nvar faCreditCard = {\n prefix: 'fas',\n iconName: 'credit-card',\n icon: [576, 512, [], \"f09d\", \"M0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V256H0v176zm192-68c0-6.6 5.4-12 12-12h136c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-40zm-128 0c0-6.6 5.4-12 12-12h72c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zM576 80v48H0V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48z\"]\n};\nvar faCrop = {\n prefix: 'fas',\n iconName: 'crop',\n icon: [512, 512, [], \"f125\", \"M488 352h-40V109.25l59.31-59.31c6.25-6.25 6.25-16.38 0-22.63L484.69 4.69c-6.25-6.25-16.38-6.25-22.63 0L402.75 64H192v96h114.75L160 306.75V24c0-13.26-10.75-24-24-24H88C74.75 0 64 10.74 64 24v40H24C10.75 64 0 74.74 0 88v48c0 13.25 10.75 24 24 24h40v264c0 13.25 10.75 24 24 24h232v-96H205.25L352 205.25V488c0 13.25 10.75 24 24 24h48c13.25 0 24-10.75 24-24v-40h40c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z\"]\n};\nvar faCropAlt = {\n prefix: 'fas',\n iconName: 'crop-alt',\n icon: [512, 512, [], \"f565\", \"M488 352h-40V96c0-17.67-14.33-32-32-32H192v96h160v328c0 13.25 10.75 24 24 24h48c13.25 0 24-10.75 24-24v-40h40c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24zM160 24c0-13.26-10.75-24-24-24H88C74.75 0 64 10.74 64 24v40H24C10.75 64 0 74.74 0 88v48c0 13.25 10.75 24 24 24h40v256c0 17.67 14.33 32 32 32h224v-96H160V24z\"]\n};\nvar faCross = {\n prefix: 'fas',\n iconName: 'cross',\n icon: [384, 512, [], \"f654\", \"M352 128h-96V32c0-17.67-14.33-32-32-32h-64c-17.67 0-32 14.33-32 32v96H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h96v224c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V256h96c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z\"]\n};\nvar faCrosshairs = {\n prefix: 'fas',\n iconName: 'crosshairs',\n icon: [512, 512, [], \"f05b\", \"M500 224h-30.364C455.724 130.325 381.675 56.276 288 42.364V12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v30.364C130.325 56.276 56.276 130.325 42.364 224H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h30.364C56.276 381.675 130.325 455.724 224 469.636V500c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-30.364C381.675 455.724 455.724 381.675 469.636 288H500c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zM288 404.634V364c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40.634C165.826 392.232 119.783 346.243 107.366 288H148c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40.634C119.768 165.826 165.757 119.783 224 107.366V148c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40.634C346.174 119.768 392.217 165.757 404.634 224H364c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40.634C392.232 346.174 346.243 392.217 288 404.634zM288 256c0 17.673-14.327 32-32 32s-32-14.327-32-32c0-17.673 14.327-32 32-32s32 14.327 32 32z\"]\n};\nvar faCrow = {\n prefix: 'fas',\n iconName: 'crow',\n icon: [640, 512, [], \"f520\", \"M544 32h-16.36C513.04 12.68 490.09 0 464 0c-44.18 0-80 35.82-80 80v20.98L12.09 393.57A30.216 30.216 0 0 0 0 417.74c0 22.46 23.64 37.07 43.73 27.03L165.27 384h96.49l44.41 120.1c2.27 6.23 9.15 9.44 15.38 7.17l22.55-8.21c6.23-2.27 9.44-9.15 7.17-15.38L312.94 384H352c1.91 0 3.76-.23 5.66-.29l44.51 120.38c2.27 6.23 9.15 9.44 15.38 7.17l22.55-8.21c6.23-2.27 9.44-9.15 7.17-15.38l-41.24-111.53C485.74 352.8 544 279.26 544 192v-80l96-16c0-35.35-42.98-64-96-64zm-80 72c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"]\n};\nvar faCrown = {\n prefix: 'fas',\n iconName: 'crown',\n icon: [640, 512, [], \"f521\", \"M528 448H112c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h416c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm64-320c-26.5 0-48 21.5-48 48 0 7.1 1.6 13.7 4.4 19.8L476 239.2c-15.4 9.2-35.3 4-44.2-11.6L350.3 85C361 76.2 368 63 368 48c0-26.5-21.5-48-48-48s-48 21.5-48 48c0 15 7 28.2 17.7 37l-81.5 142.6c-8.9 15.6-28.9 20.8-44.2 11.6l-72.3-43.4c2.7-6 4.4-12.7 4.4-19.8 0-26.5-21.5-48-48-48S0 149.5 0 176s21.5 48 48 48c2.6 0 5.2-.4 7.7-.8L128 416h384l72.3-192.8c2.5.4 5.1.8 7.7.8 26.5 0 48-21.5 48-48s-21.5-48-48-48z\"]\n};\nvar faCrutch = {\n prefix: 'fas',\n iconName: 'crutch',\n icon: [512, 512, [], \"f7f7\", \"M507.31 185.71l-181-181a16 16 0 0 0-22.62 0L281 27.31a16 16 0 0 0 0 22.63l181 181a16 16 0 0 0 22.63 0l22.62-22.63a16 16 0 0 0 .06-22.6zm-179.54 66.41l-67.89-67.89 55.1-55.1-45.25-45.25-109.67 109.67a96.08 96.08 0 0 0-25.67 46.29L106.65 360.1l-102 102a16 16 0 0 0 0 22.63l22.62 22.62a16 16 0 0 0 22.63 0l102-102 120.25-27.75a95.88 95.88 0 0 0 46.29-25.65l109.68-109.68L382.87 197zm-54.57 54.57a32 32 0 0 1-15.45 8.54l-79.3 18.32 18.3-79.3a32.22 32.22 0 0 1 8.56-15.45l9.31-9.31 67.89 67.89z\"]\n};\nvar faCube = {\n prefix: 'fas',\n iconName: 'cube',\n icon: [512, 512, [], \"f1b2\", \"M239.1 6.3l-208 78c-18.7 7-31.1 25-31.1 45v225.1c0 18.2 10.3 34.8 26.5 42.9l208 104c13.5 6.8 29.4 6.8 42.9 0l208-104c16.3-8.1 26.5-24.8 26.5-42.9V129.3c0-20-12.4-37.9-31.1-44.9l-208-78C262 2.2 250 2.2 239.1 6.3zM256 68.4l192 72v1.1l-192 78-192-78v-1.1l192-72zm32 356V275.5l160-65v133.9l-160 80z\"]\n};\nvar faCubes = {\n prefix: 'fas',\n iconName: 'cubes',\n icon: [512, 512, [], \"f1b3\", \"M488.6 250.2L392 214V105.5c0-15-9.3-28.4-23.4-33.7l-100-37.5c-8.1-3.1-17.1-3.1-25.3 0l-100 37.5c-14.1 5.3-23.4 18.7-23.4 33.7V214l-96.6 36.2C9.3 255.5 0 268.9 0 283.9V394c0 13.6 7.7 26.1 19.9 32.2l100 50c10.1 5.1 22.1 5.1 32.2 0l103.9-52 103.9 52c10.1 5.1 22.1 5.1 32.2 0l100-50c12.2-6.1 19.9-18.6 19.9-32.2V283.9c0-15-9.3-28.4-23.4-33.7zM358 214.8l-85 31.9v-68.2l85-37v73.3zM154 104.1l102-38.2 102 38.2v.6l-102 41.4-102-41.4v-.6zm84 291.1l-85 42.5v-79.1l85-38.8v75.4zm0-112l-102 41.4-102-41.4v-.6l102-38.2 102 38.2v.6zm240 112l-85 42.5v-79.1l85-38.8v75.4zm0-112l-102 41.4-102-41.4v-.6l102-38.2 102 38.2v.6z\"]\n};\nvar faCut = {\n prefix: 'fas',\n iconName: 'cut',\n icon: [448, 512, [], \"f0c4\", \"M278.06 256L444.48 89.57c4.69-4.69 4.69-12.29 0-16.97-32.8-32.8-85.99-32.8-118.79 0L210.18 188.12l-24.86-24.86c4.31-10.92 6.68-22.81 6.68-35.26 0-53.02-42.98-96-96-96S0 74.98 0 128s42.98 96 96 96c4.54 0 8.99-.32 13.36-.93L142.29 256l-32.93 32.93c-4.37-.61-8.83-.93-13.36-.93-53.02 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96c0-12.45-2.37-24.34-6.68-35.26l24.86-24.86L325.69 439.4c32.8 32.8 85.99 32.8 118.79 0 4.69-4.68 4.69-12.28 0-16.97L278.06 256zM96 160c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32zm0 256c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32z\"]\n};\nvar faDatabase = {\n prefix: 'fas',\n iconName: 'database',\n icon: [448, 512, [], \"f1c0\", \"M448 73.143v45.714C448 159.143 347.667 192 224 192S0 159.143 0 118.857V73.143C0 32.857 100.333 0 224 0s224 32.857 224 73.143zM448 176v102.857C448 319.143 347.667 352 224 352S0 319.143 0 278.857V176c48.125 33.143 136.208 48.572 224 48.572S399.874 209.143 448 176zm0 160v102.857C448 479.143 347.667 512 224 512S0 479.143 0 438.857V336c48.125 33.143 136.208 48.572 224 48.572S399.874 369.143 448 336z\"]\n};\nvar faDeaf = {\n prefix: 'fas',\n iconName: 'deaf',\n icon: [512, 512, [], \"f2a4\", \"M216 260c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-44.112 35.888-80 80-80s80 35.888 80 80c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-13.234-10.767-24-24-24s-24 10.766-24 24zm24-176c-97.047 0-176 78.953-176 176 0 15.464 12.536 28 28 28s28-12.536 28-28c0-66.168 53.832-120 120-120s120 53.832 120 120c0 75.164-71.009 70.311-71.997 143.622L288 404c0 28.673-23.327 52-52 52-15.464 0-28 12.536-28 28s12.536 28 28 28c59.475 0 107.876-48.328 108-107.774.595-34.428 72-48.24 72-144.226 0-97.047-78.953-176-176-176zm268.485-52.201L480.2 3.515c-4.687-4.686-12.284-4.686-16.971 0L376.2 90.544c-4.686 4.686-4.686 12.284 0 16.971l28.285 28.285c4.686 4.686 12.284 4.686 16.97 0l87.03-87.029c4.687-4.688 4.687-12.286 0-16.972zM168.97 314.745c-4.686-4.686-12.284-4.686-16.97 0L3.515 463.23c-4.686 4.686-4.686 12.284 0 16.971L31.8 508.485c4.687 4.686 12.284 4.686 16.971 0L197.256 360c4.686-4.686 4.686-12.284 0-16.971l-28.286-28.284z\"]\n};\nvar faDemocrat = {\n prefix: 'fas',\n iconName: 'democrat',\n icon: [640, 512, [], \"f747\", \"M637.3 256.9l-19.6-29.4c-28.2-42.3-75.3-67.5-126.1-67.5H256l-81.2-81.2c20.1-20.1 22.6-51.1 7.5-73.9-3.4-5.2-10.8-5.9-15.2-1.5l-41.8 41.8L82.4 2.4c-3.6-3.6-9.6-3-12.4 1.2-12.3 18.6-10.3 44 6.1 60.4 3.3 3.3 7.3 5.3 11.3 7.5-2.2 1.7-4.7 3.1-6.4 5.4L6.4 176.2c-7.3 9.7-8.4 22.7-3 33.5l14.3 28.6c5.4 10.8 16.5 17.7 28.6 17.7h31c8.5 0 16.6-3.4 22.6-9.4L138 212l54 108h352v-77.8c16.2 12.2 18.3 17.6 40.1 50.3 4.9 7.4 14.8 9.3 22.2 4.4l26.6-17.7c7.3-5 9.3-14.9 4.4-22.3zm-341.1-13.6l-16.5 16.1 3.9 22.7c.7 4.1-3.6 7.2-7.2 5.3L256 276.7l-20.4 10.7c-3.6 1.9-7.9-1.2-7.2-5.3l3.9-22.7-16.5-16.1c-3-2.9-1.3-7.9 2.8-8.5l22.8-3.3 10.2-20.7c1.8-3.7 7.1-3.7 9 0l10.2 20.7 22.8 3.3c4 .6 5.6 5.6 2.6 8.5zm112 0l-16.5 16.1 3.9 22.7c.7 4.1-3.6 7.2-7.2 5.3L368 276.7l-20.4 10.7c-3.6 1.9-7.9-1.2-7.2-5.3l3.9-22.7-16.5-16.1c-3-2.9-1.3-7.9 2.8-8.5l22.8-3.3 10.2-20.7c1.8-3.7 7.1-3.7 9 0l10.2 20.7 22.8 3.3c4 .6 5.6 5.6 2.6 8.5zm112 0l-16.5 16.1 3.9 22.7c.7 4.1-3.6 7.2-7.2 5.3L480 276.7l-20.4 10.7c-3.6 1.9-7.9-1.2-7.2-5.3l3.9-22.7-16.5-16.1c-3-2.9-1.3-7.9 2.8-8.5l22.8-3.3 10.2-20.7c1.8-3.7 7.1-3.7 9 0l10.2 20.7 22.8 3.3c4 .6 5.6 5.6 2.6 8.5zM192 496c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-80h160v80c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V352H192v144z\"]\n};\nvar faDesktop = {\n prefix: 'fas',\n iconName: 'desktop',\n icon: [576, 512, [], \"f108\", \"M528 0H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h192l-16 48h-72c-13.3 0-24 10.7-24 24s10.7 24 24 24h272c13.3 0 24-10.7 24-24s-10.7-24-24-24h-72l-16-48h192c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-16 352H64V64h448v288z\"]\n};\nvar faDharmachakra = {\n prefix: 'fas',\n iconName: 'dharmachakra',\n icon: [512, 512, [], \"f655\", \"M495 225.06l-17.22 1.08c-5.27-39.49-20.79-75.64-43.86-105.84l12.95-11.43c6.92-6.11 7.25-16.79.73-23.31L426.44 64.4c-6.53-6.53-17.21-6.19-23.31.73L391.7 78.07c-30.2-23.06-66.35-38.58-105.83-43.86L286.94 17c.58-9.21-6.74-17-15.97-17h-29.94c-9.23 0-16.54 7.79-15.97 17l1.08 17.22c-39.49 5.27-75.64 20.79-105.83 43.86l-11.43-12.95c-6.11-6.92-16.79-7.25-23.31-.73L64.4 85.56c-6.53 6.53-6.19 17.21.73 23.31l12.95 11.43c-23.06 30.2-38.58 66.35-43.86 105.84L17 225.06c-9.21-.58-17 6.74-17 15.97v29.94c0 9.23 7.79 16.54 17 15.97l17.22-1.08c5.27 39.49 20.79 75.64 43.86 105.83l-12.95 11.43c-6.92 6.11-7.25 16.79-.73 23.31l21.17 21.17c6.53 6.53 17.21 6.19 23.31-.73l11.43-12.95c30.2 23.06 66.35 38.58 105.84 43.86L225.06 495c-.58 9.21 6.74 17 15.97 17h29.94c9.23 0 16.54-7.79 15.97-17l-1.08-17.22c39.49-5.27 75.64-20.79 105.84-43.86l11.43 12.95c6.11 6.92 16.79 7.25 23.31.73l21.17-21.17c6.53-6.53 6.19-17.21-.73-23.31l-12.95-11.43c23.06-30.2 38.58-66.35 43.86-105.83l17.22 1.08c9.21.58 17-6.74 17-15.97v-29.94c-.01-9.23-7.8-16.54-17.01-15.97zM281.84 98.61c24.81 4.07 47.63 13.66 67.23 27.78l-42.62 48.29c-8.73-5.44-18.32-9.54-28.62-11.95l4.01-64.12zm-51.68 0l4.01 64.12c-10.29 2.41-19.89 6.52-28.62 11.95l-42.62-48.29c19.6-14.12 42.42-23.71 67.23-27.78zm-103.77 64.33l48.3 42.61c-5.44 8.73-9.54 18.33-11.96 28.62l-64.12-4.01c4.07-24.81 13.66-47.62 27.78-67.22zm-27.78 118.9l64.12-4.01c2.41 10.29 6.52 19.89 11.95 28.62l-48.29 42.62c-14.12-19.6-23.71-42.42-27.78-67.23zm131.55 131.55c-24.81-4.07-47.63-13.66-67.23-27.78l42.61-48.3c8.73 5.44 18.33 9.54 28.62 11.96l-4 64.12zM256 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm25.84 125.39l-4.01-64.12c10.29-2.41 19.89-6.52 28.62-11.96l42.61 48.3c-19.6 14.12-42.41 23.71-67.22 27.78zm103.77-64.33l-48.29-42.62c5.44-8.73 9.54-18.32 11.95-28.62l64.12 4.01c-4.07 24.82-13.66 47.64-27.78 67.23zm-36.34-114.89c-2.41-10.29-6.52-19.89-11.96-28.62l48.3-42.61c14.12 19.6 23.71 42.42 27.78 67.23l-64.12 4z\"]\n};\nvar faDiagnoses = {\n prefix: 'fas',\n iconName: 'diagnoses',\n icon: [640, 512, [], \"f470\", \"M496 256c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm-176-80c48.5 0 88-39.5 88-88S368.5 0 320 0s-88 39.5-88 88 39.5 88 88 88zM59.8 364c10.2 15.3 29.3 17.8 42.9 9.8 16.2-9.6 56.2-31.7 105.3-48.6V416h224v-90.7c49.1 16.8 89.1 39 105.3 48.6 13.6 8 32.7 5.3 42.9-9.8l17.8-26.7c8.8-13.2 7.6-34.6-10-45.1-11.9-7.1-29.7-17-51.1-27.4-28.1 46.1-99.4 17.8-87.7-35.1C409.3 217.2 365.1 208 320 208c-57 0-112.9 14.5-160 32.2-.2 40.2-47.6 63.3-79.2 36-11.2 6-21.3 11.6-28.7 16-17.6 10.5-18.8 31.8-10 45.1L59.8 364zM368 344c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-96-96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-160 8c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm512 192H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z\"]\n};\nvar faDice = {\n prefix: 'fas',\n iconName: 'dice',\n icon: [640, 512, [], \"f522\", \"M592 192H473.26c12.69 29.59 7.12 65.2-17 89.32L320 417.58V464c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48V240c0-26.51-21.49-48-48-48zM480 376c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm-46.37-186.7L258.7 14.37c-19.16-19.16-50.23-19.16-69.39 0L14.37 189.3c-19.16 19.16-19.16 50.23 0 69.39L189.3 433.63c19.16 19.16 50.23 19.16 69.39 0L433.63 258.7c19.16-19.17 19.16-50.24 0-69.4zM96 248c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm128 128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm0-128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm0-128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm128 128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"]\n};\nvar faDiceD20 = {\n prefix: 'fas',\n iconName: 'dice-d20',\n icon: [480, 512, [], \"f6cf\", \"M106.75 215.06L1.2 370.95c-3.08 5 .1 11.5 5.93 12.14l208.26 22.07-108.64-190.1zM7.41 315.43L82.7 193.08 6.06 147.1c-2.67-1.6-6.06.32-6.06 3.43v162.81c0 4.03 5.29 5.53 7.41 2.09zM18.25 423.6l194.4 87.66c5.3 2.45 11.35-1.43 11.35-7.26v-65.67l-203.55-22.3c-4.45-.5-6.23 5.59-2.2 7.57zm81.22-257.78L179.4 22.88c4.34-7.06-3.59-15.25-10.78-11.14L17.81 110.35c-2.47 1.62-2.39 5.26.13 6.78l81.53 48.69zM240 176h109.21L253.63 7.62C250.5 2.54 245.25 0 240 0s-10.5 2.54-13.63 7.62L130.79 176H240zm233.94-28.9l-76.64 45.99 75.29 122.35c2.11 3.44 7.41 1.94 7.41-2.1V150.53c0-3.11-3.39-5.03-6.06-3.43zm-93.41 18.72l81.53-48.7c2.53-1.52 2.6-5.16.13-6.78l-150.81-98.6c-7.19-4.11-15.12 4.08-10.78 11.14l79.93 142.94zm79.02 250.21L256 438.32v65.67c0 5.84 6.05 9.71 11.35 7.26l194.4-87.66c4.03-1.97 2.25-8.06-2.2-7.56zm-86.3-200.97l-108.63 190.1 208.26-22.07c5.83-.65 9.01-7.14 5.93-12.14L373.25 215.06zM240 208H139.57L240 383.75 340.43 208H240z\"]\n};\nvar faDiceD6 = {\n prefix: 'fas',\n iconName: 'dice-d6',\n icon: [448, 512, [], \"f6d1\", \"M422.19 109.95L256.21 9.07c-19.91-12.1-44.52-12.1-64.43 0L25.81 109.95c-5.32 3.23-5.29 11.27.06 14.46L224 242.55l198.14-118.14c5.35-3.19 5.38-11.22.05-14.46zm13.84 44.63L240 271.46v223.82c0 12.88 13.39 20.91 24.05 14.43l152.16-92.48c19.68-11.96 31.79-33.94 31.79-57.7v-197.7c0-6.41-6.64-10.43-11.97-7.25zM0 161.83v197.7c0 23.77 12.11 45.74 31.79 57.7l152.16 92.47c10.67 6.48 24.05-1.54 24.05-14.43V271.46L11.97 154.58C6.64 151.4 0 155.42 0 161.83z\"]\n};\nvar faDiceFive = {\n prefix: 'fas',\n iconName: 'dice-five',\n icon: [448, 512, [], \"f523\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDiceFour = {\n prefix: 'fas',\n iconName: 'dice-four',\n icon: [448, 512, [], \"f524\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDiceOne = {\n prefix: 'fas',\n iconName: 'dice-one',\n icon: [448, 512, [], \"f525\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM224 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDiceSix = {\n prefix: 'fas',\n iconName: 'dice-six',\n icon: [448, 512, [], \"f526\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDiceThree = {\n prefix: 'fas',\n iconName: 'dice-three',\n icon: [448, 512, [], \"f527\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDiceTwo = {\n prefix: 'fas',\n iconName: 'dice-two',\n icon: [448, 512, [], \"f528\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDigitalTachograph = {\n prefix: 'fas',\n iconName: 'digital-tachograph',\n icon: [640, 512, [], \"f566\", \"M608 96H32c-17.67 0-32 14.33-32 32v256c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V128c0-17.67-14.33-32-32-32zM304 352c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-8c0-4.42 3.58-8 8-8h224c4.42 0 8 3.58 8 8v8zM72 288v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H80c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm40-64c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-48c0-8.84 7.16-16 16-16h208c8.84 0 16 7.16 16 16v48zm272 128c0 4.42-3.58 8-8 8H344c-4.42 0-8-3.58-8-8v-8c0-4.42 3.58-8 8-8h224c4.42 0 8 3.58 8 8v8z\"]\n};\nvar faDirections = {\n prefix: 'fas',\n iconName: 'directions',\n icon: [512, 512, [], \"f5eb\", \"M502.61 233.32L278.68 9.39c-12.52-12.52-32.83-12.52-45.36 0L9.39 233.32c-12.52 12.53-12.52 32.83 0 45.36l223.93 223.93c12.52 12.53 32.83 12.53 45.36 0l223.93-223.93c12.52-12.53 12.52-32.83 0-45.36zm-100.98 12.56l-84.21 77.73c-5.12 4.73-13.43 1.1-13.43-5.88V264h-96v64c0 4.42-3.58 8-8 8h-32c-4.42 0-8-3.58-8-8v-80c0-17.67 14.33-32 32-32h112v-53.73c0-6.97 8.3-10.61 13.43-5.88l84.21 77.73c3.43 3.17 3.43 8.59 0 11.76z\"]\n};\nvar faDisease = {\n prefix: 'fas',\n iconName: 'disease',\n icon: [512, 512, [], \"f7fa\", \"M472.29 195.9l-67.06-23c-19.28-6.6-33.54-20.92-38.14-38.31l-16-60.45c-11.58-43.77-76.57-57.13-110-22.62L195 99.24c-13.26 13.71-33.54 20.93-54.2 19.31l-71.9-5.62c-52-4.07-86.93 44.89-59 82.84l38.54 52.42c11.08 15.07 12.82 33.86 4.64 50.24l-28.43 57C4 396.67 47.46 440.29 98.11 429.23l70-15.28c20.11-4.39 41.45 0 57.07 11.73l54.32 40.83c39.32 29.56 101 7.57 104.45-37.22l4.7-61.86c1.35-17.8 12.8-33.87 30.63-43l62-31.74c44.84-22.96 39.55-80.17-8.99-96.79zM160 256a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm128 96a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm16-128a16 16 0 1 1 16-16 16 16 0 0 1-16 16z\"]\n};\nvar faDivide = {\n prefix: 'fas',\n iconName: 'divide',\n icon: [448, 512, [], \"f529\", \"M224 352c-35.35 0-64 28.65-64 64s28.65 64 64 64 64-28.65 64-64-28.65-64-64-64zm0-192c35.35 0 64-28.65 64-64s-28.65-64-64-64-64 28.65-64 64 28.65 64 64 64zm192 48H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"]\n};\nvar faDizzy = {\n prefix: 'fas',\n iconName: 'dizzy',\n icon: [496, 512, [], \"f567\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-96 206.6l-28.7 28.7c-14.8 14.8-37.8-7.5-22.6-22.6l28.7-28.7-28.7-28.7c-15-15 7.7-37.6 22.6-22.6l28.7 28.7 28.7-28.7c15-15 37.6 7.7 22.6 22.6L174.6 192l28.7 28.7c15.2 15.2-7.9 37.4-22.6 22.6L152 214.6zM248 416c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm147.3-195.3c15.2 15.2-7.9 37.4-22.6 22.6L344 214.6l-28.7 28.7c-14.8 14.8-37.8-7.5-22.6-22.6l28.7-28.7-28.7-28.7c-15-15 7.7-37.6 22.6-22.6l28.7 28.7 28.7-28.7c15-15 37.6 7.7 22.6 22.6L366.6 192l28.7 28.7z\"]\n};\nvar faDna = {\n prefix: 'fas',\n iconName: 'dna',\n icon: [448, 512, [], \"f471\", \"M.1 494.1c-1.1 9.5 6.3 17.8 15.9 17.8l32.3.1c8.1 0 14.9-5.9 16-13.9.7-4.9 1.8-11.1 3.4-18.1H380c1.6 6.9 2.9 13.2 3.5 18.1 1.1 8 7.9 14 16 13.9l32.3-.1c9.6 0 17.1-8.3 15.9-17.8-4.6-37.9-25.6-129-118.9-207.7-17.6 12.4-37.1 24.2-58.5 35.4 6.2 4.6 11.4 9.4 17 14.2H159.7c21.3-18.1 47-35.6 78.7-51.4C410.5 199.1 442.1 65.8 447.9 17.9 449 8.4 441.6.1 432 .1L399.6 0c-8.1 0-14.9 5.9-16 13.9-.7 4.9-1.8 11.1-3.4 18.1H67.8c-1.6-7-2.7-13.1-3.4-18.1-1.1-8-7.9-14-16-13.9L16.1.1C6.5.1-1 8.4.1 17.9 5.3 60.8 31.4 171.8 160 256 31.5 340.2 5.3 451.2.1 494.1zM224 219.6c-25.1-13.7-46.4-28.4-64.3-43.6h128.5c-17.8 15.2-39.1 30-64.2 43.6zM355.1 96c-5.8 10.4-12.8 21.1-21 32H114c-8.3-10.9-15.3-21.6-21-32h262.1zM92.9 416c5.8-10.4 12.8-21.1 21-32h219.4c8.3 10.9 15.4 21.6 21.2 32H92.9z\"]\n};\nvar faDog = {\n prefix: 'fas',\n iconName: 'dog',\n icon: [576, 512, [], \"f6d3\", \"M298.06,224,448,277.55V496a16,16,0,0,1-16,16H368a16,16,0,0,1-16-16V384H192V496a16,16,0,0,1-16,16H112a16,16,0,0,1-16-16V282.09C58.84,268.84,32,233.66,32,192a32,32,0,0,1,64,0,32.06,32.06,0,0,0,32,32ZM544,112v32a64,64,0,0,1-64,64H448v35.58L320,197.87V48c0-14.25,17.22-21.39,27.31-11.31L374.59,64h53.63c10.91,0,23.75,7.92,28.62,17.69L464,96h64A16,16,0,0,1,544,112Zm-112,0a16,16,0,1,0-16,16A16,16,0,0,0,432,112Z\"]\n};\nvar faDollarSign = {\n prefix: 'fas',\n iconName: 'dollar-sign',\n icon: [288, 512, [], \"f155\", \"M209.2 233.4l-108-31.6C88.7 198.2 80 186.5 80 173.5c0-16.3 13.2-29.5 29.5-29.5h66.3c12.2 0 24.2 3.7 34.2 10.5 6.1 4.1 14.3 3.1 19.5-2l34.8-34c7.1-6.9 6.1-18.4-1.8-24.5C238 74.8 207.4 64.1 176 64V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48h-2.5C45.8 64-5.4 118.7.5 183.6c4.2 46.1 39.4 83.6 83.8 96.6l102.5 30c12.5 3.7 21.2 15.3 21.2 28.3 0 16.3-13.2 29.5-29.5 29.5h-66.3C100 368 88 364.3 78 357.5c-6.1-4.1-14.3-3.1-19.5 2l-34.8 34c-7.1 6.9-6.1 18.4 1.8 24.5 24.5 19.2 55.1 29.9 86.5 30v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-48.2c46.6-.9 90.3-28.6 105.7-72.7 21.5-61.6-14.6-124.8-72.5-141.7z\"]\n};\nvar faDolly = {\n prefix: 'fas',\n iconName: 'dolly',\n icon: [576, 512, [], \"f472\", \"M294.2 277.7c18 5 34.7 13.4 49.5 24.7l161.5-53.8c8.4-2.8 12.9-11.9 10.1-20.2L454.9 47.2c-2.8-8.4-11.9-12.9-20.2-10.1l-61.1 20.4 33.1 99.4L346 177l-33.1-99.4-61.6 20.5c-8.4 2.8-12.9 11.9-10.1 20.2l53 159.4zm281 48.7L565 296c-2.8-8.4-11.9-12.9-20.2-10.1l-213.5 71.2c-17.2-22-43.6-36.4-73.5-37L158.4 21.9C154 8.8 141.8 0 128 0H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h88.9l92.2 276.7c-26.1 20.4-41.7 53.6-36 90.5 6.1 39.4 37.9 72.3 77.3 79.2 60.2 10.7 112.3-34.8 113.4-92.6l213.3-71.2c8.3-2.8 12.9-11.8 10.1-20.2zM256 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z\"]\n};\nvar faDollyFlatbed = {\n prefix: 'fas',\n iconName: 'dolly-flatbed',\n icon: [640, 512, [], \"f474\", \"M208 320h384c8.8 0 16-7.2 16-16V48c0-8.8-7.2-16-16-16H448v128l-48-32-48 32V32H208c-8.8 0-16 7.2-16 16v256c0 8.8 7.2 16 16 16zm416 64H128V16c0-8.8-7.2-16-16-16H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h48v368c0 8.8 7.2 16 16 16h82.9c-1.8 5-2.9 10.4-2.9 16 0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1.2-11-2.9-16H451c-1.8 5-2.9 10.4-2.9 16 0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1.2-11-2.9-16H624c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z\"]\n};\nvar faDonate = {\n prefix: 'fas',\n iconName: 'donate',\n icon: [512, 512, [], \"f4b9\", \"M256 416c114.9 0 208-93.1 208-208S370.9 0 256 0 48 93.1 48 208s93.1 208 208 208zM233.8 97.4V80.6c0-9.2 7.4-16.6 16.6-16.6h11.1c9.2 0 16.6 7.4 16.6 16.6v17c15.5.8 30.5 6.1 43 15.4 5.6 4.1 6.2 12.3 1.2 17.1L306 145.6c-3.8 3.7-9.5 3.8-14 1-5.4-3.4-11.4-5.1-17.8-5.1h-38.9c-9 0-16.3 8.2-16.3 18.3 0 8.2 5 15.5 12.1 17.6l62.3 18.7c25.7 7.7 43.7 32.4 43.7 60.1 0 34-26.4 61.5-59.1 62.4v16.8c0 9.2-7.4 16.6-16.6 16.6h-11.1c-9.2 0-16.6-7.4-16.6-16.6v-17c-15.5-.8-30.5-6.1-43-15.4-5.6-4.1-6.2-12.3-1.2-17.1l16.3-15.5c3.8-3.7 9.5-3.8 14-1 5.4 3.4 11.4 5.1 17.8 5.1h38.9c9 0 16.3-8.2 16.3-18.3 0-8.2-5-15.5-12.1-17.6l-62.3-18.7c-25.7-7.7-43.7-32.4-43.7-60.1.1-34 26.4-61.5 59.1-62.4zM480 352h-32.5c-19.6 26-44.6 47.7-73 64h63.8c5.3 0 9.6 3.6 9.6 8v16c0 4.4-4.3 8-9.6 8H73.6c-5.3 0-9.6-3.6-9.6-8v-16c0-4.4 4.3-8 9.6-8h63.8c-28.4-16.3-53.3-38-73-64H32c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32v-96c0-17.7-14.3-32-32-32z\"]\n};\nvar faDoorClosed = {\n prefix: 'fas',\n iconName: 'door-closed',\n icon: [640, 512, [], \"f52a\", \"M624 448H512V50.8C512 22.78 490.47 0 464 0H175.99c-26.47 0-48 22.78-48 50.8V448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM415.99 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32c.01 17.67-14.32 32-32 32z\"]\n};\nvar faDoorOpen = {\n prefix: 'fas',\n iconName: 'door-open',\n icon: [640, 512, [], \"f52b\", \"M624 448h-80V113.45C544 86.19 522.47 64 496 64H384v64h96v384h144c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM312.24 1.01l-192 49.74C105.99 54.44 96 67.7 96 82.92V448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h336V33.18c0-21.58-19.56-37.41-39.76-32.17zM264 288c-13.25 0-24-14.33-24-32s10.75-32 24-32 24 14.33 24 32-10.75 32-24 32z\"]\n};\nvar faDotCircle = {\n prefix: 'fas',\n iconName: 'dot-circle',\n icon: [512, 512, [], \"f192\", \"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm80 248c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80z\"]\n};\nvar faDove = {\n prefix: 'fas',\n iconName: 'dove',\n icon: [512, 512, [], \"f4ba\", \"M288 167.2v-28.1c-28.2-36.3-47.1-79.3-54.1-125.2-2.1-13.5-19-18.8-27.8-8.3-21.1 24.9-37.7 54.1-48.9 86.5 34.2 38.3 80 64.6 130.8 75.1zM400 64c-44.2 0-80 35.9-80 80.1v59.4C215.6 197.3 127 133 87 41.8c-5.5-12.5-23.2-13.2-29-.9C41.4 76 32 115.2 32 156.6c0 70.8 34.1 136.9 85.1 185.9 13.2 12.7 26.1 23.2 38.9 32.8l-143.9 36C1.4 414-3.4 426.4 2.6 435.7 20 462.6 63 508.2 155.8 512c8 .3 16-2.6 22.1-7.9l65.2-56.1H320c88.4 0 160-71.5 160-159.9V128l32-64H400zm0 96.1c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\"]\n};\nvar faDownload = {\n prefix: 'fas',\n iconName: 'download',\n icon: [512, 512, [], \"f019\", \"M216 0h80c13.3 0 24 10.7 24 24v168h87.7c17.8 0 26.7 21.5 14.1 34.1L269.7 378.3c-7.5 7.5-19.8 7.5-27.3 0L90.1 226.1c-12.6-12.6-3.7-34.1 14.1-34.1H192V24c0-13.3 10.7-24 24-24zm296 376v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h146.7l49 49c20.1 20.1 52.5 20.1 72.6 0l49-49H488c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z\"]\n};\nvar faDraftingCompass = {\n prefix: 'fas',\n iconName: 'drafting-compass',\n icon: [512, 512, [], \"f568\", \"M457.01 344.42c-25.05 20.33-52.63 37.18-82.54 49.05l54.38 94.19 53.95 23.04c9.81 4.19 20.89-2.21 22.17-12.8l7.02-58.25-54.98-95.23zm42.49-94.56c4.86-7.67 1.89-17.99-6.05-22.39l-28.07-15.57c-7.48-4.15-16.61-1.46-21.26 5.72C403.01 281.15 332.25 320 256 320c-23.93 0-47.23-4.25-69.41-11.53l67.36-116.68c.7.02 1.34.21 2.04.21s1.35-.19 2.04-.21l51.09 88.5c31.23-8.96 59.56-25.75 82.61-48.92l-51.79-89.71C347.39 128.03 352 112.63 352 96c0-53.02-42.98-96-96-96s-96 42.98-96 96c0 16.63 4.61 32.03 12.05 45.66l-68.3 118.31c-12.55-11.61-23.96-24.59-33.68-39-4.79-7.1-13.97-9.62-21.38-5.33l-27.75 16.07c-7.85 4.54-10.63 14.9-5.64 22.47 15.57 23.64 34.69 44.21 55.98 62.02L0 439.66l7.02 58.25c1.28 10.59 12.36 16.99 22.17 12.8l53.95-23.04 70.8-122.63C186.13 377.28 220.62 384 256 384c99.05 0 190.88-51.01 243.5-134.14zM256 64c17.67 0 32 14.33 32 32s-14.33 32-32 32-32-14.33-32-32 14.33-32 32-32z\"]\n};\nvar faDragon = {\n prefix: 'fas',\n iconName: 'dragon',\n icon: [640, 512, [], \"f6d5\", \"M18.32 255.78L192 223.96l-91.28 68.69c-10.08 10.08-2.94 27.31 11.31 27.31h222.7c-9.44-26.4-14.73-54.47-14.73-83.38v-42.27l-119.73-87.6c-23.82-15.88-55.29-14.01-77.06 4.59L5.81 227.64c-12.38 10.33-3.45 30.42 12.51 28.14zm556.87 34.1l-100.66-50.31A47.992 47.992 0 0 1 448 196.65v-36.69h64l28.09 22.63c6 6 14.14 9.37 22.63 9.37h30.97a32 32 0 0 0 28.62-17.69l14.31-28.62a32.005 32.005 0 0 0-3.02-33.51l-74.53-99.38C553.02 4.7 543.54 0 533.47 0H296.02c-7.13 0-10.7 8.57-5.66 13.61L352 63.96 292.42 88.8c-5.9 2.95-5.9 11.36 0 14.31L352 127.96v108.62c0 72.08 36.03 139.39 96 179.38-195.59 6.81-344.56 41.01-434.1 60.91C5.78 478.67 0 485.88 0 494.2 0 504 7.95 512 17.76 512h499.08c63.29.01 119.61-47.56 122.99-110.76 2.52-47.28-22.73-90.4-64.64-111.36zM489.18 66.25l45.65 11.41c-2.75 10.91-12.47 18.89-24.13 18.26-12.96-.71-25.85-12.53-21.52-29.67z\"]\n};\nvar faDrawPolygon = {\n prefix: 'fas',\n iconName: 'draw-polygon',\n icon: [448, 512, [], \"f5ee\", \"M384 352c-.35 0-.67.1-1.02.1l-39.2-65.32c5.07-9.17 8.22-19.56 8.22-30.78s-3.14-21.61-8.22-30.78l39.2-65.32c.35.01.67.1 1.02.1 35.35 0 64-28.65 64-64s-28.65-64-64-64c-23.63 0-44.04 12.95-55.12 32H119.12C108.04 44.95 87.63 32 64 32 28.65 32 0 60.65 0 96c0 23.63 12.95 44.04 32 55.12v209.75C12.95 371.96 0 392.37 0 416c0 35.35 28.65 64 64 64 23.63 0 44.04-12.95 55.12-32h209.75c11.09 19.05 31.49 32 55.12 32 35.35 0 64-28.65 64-64 .01-35.35-28.64-64-63.99-64zm-288 8.88V151.12A63.825 63.825 0 0 0 119.12 128h208.36l-38.46 64.1c-.35-.01-.67-.1-1.02-.1-35.35 0-64 28.65-64 64s28.65 64 64 64c.35 0 .67-.1 1.02-.1l38.46 64.1H119.12A63.748 63.748 0 0 0 96 360.88zM272 256c0-8.82 7.18-16 16-16s16 7.18 16 16-7.18 16-16 16-16-7.18-16-16zM400 96c0 8.82-7.18 16-16 16s-16-7.18-16-16 7.18-16 16-16 16 7.18 16 16zM64 80c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16zM48 416c0-8.82 7.18-16 16-16s16 7.18 16 16-7.18 16-16 16-16-7.18-16-16zm336 16c-8.82 0-16-7.18-16-16s7.18-16 16-16 16 7.18 16 16-7.18 16-16 16z\"]\n};\nvar faDrum = {\n prefix: 'fas',\n iconName: 'drum',\n icon: [512, 512, [], \"f569\", \"M431.34 122.05l73.53-47.42a16 16 0 0 0 4.44-22.19l-8.87-13.31a16 16 0 0 0-22.19-4.44l-110.06 71C318.43 96.91 271.22 96 256 96 219.55 96 0 100.55 0 208.15v160.23c0 30.27 27.5 57.68 72 77.86v-101.9a24 24 0 1 1 48 0v118.93c33.05 9.11 71.07 15.06 112 16.73V376.39a24 24 0 1 1 48 0V480c40.93-1.67 78.95-7.62 112-16.73V344.34a24 24 0 1 1 48 0v101.9c44.5-20.18 72-47.59 72-77.86V208.15c0-43.32-35.76-69.76-80.66-86.1zM256 272.24c-114.88 0-208-28.69-208-64.09s93.12-64.08 208-64.08c17.15 0 33.73.71 49.68 1.91l-72.81 47a16 16 0 0 0-4.43 22.19l8.87 13.31a16 16 0 0 0 22.19 4.44l118.64-76.52C430.09 168 464 186.84 464 208.15c0 35.4-93.13 64.09-208 64.09z\"]\n};\nvar faDrumSteelpan = {\n prefix: 'fas',\n iconName: 'drum-steelpan',\n icon: [576, 512, [], \"f56a\", \"M288 32C128.94 32 0 89.31 0 160v192c0 70.69 128.94 128 288 128s288-57.31 288-128V160c0-70.69-128.94-128-288-128zm-82.99 158.36c-4.45 16.61-14.54 30.57-28.31 40.48C100.23 217.46 48 190.78 48 160c0-30.16 50.11-56.39 124.04-70.03l25.6 44.34c9.86 17.09 12.48 36.99 7.37 56.05zM288 240c-21.08 0-41.41-1-60.89-2.7 8.06-26.13 32.15-45.3 60.89-45.3s52.83 19.17 60.89 45.3C329.41 239 309.08 240 288 240zm64-144c0 35.29-28.71 64-64 64s-64-28.71-64-64V82.96c20.4-1.88 41.8-2.96 64-2.96s43.6 1.08 64 2.96V96zm46.93 134.9c-13.81-9.91-23.94-23.9-28.4-40.54-5.11-19.06-2.49-38.96 7.38-56.04l25.65-44.42C477.72 103.5 528 129.79 528 160c0 30.83-52.4 57.54-129.07 70.9z\"]\n};\nvar faDrumstickBite = {\n prefix: 'fas',\n iconName: 'drumstick-bite',\n icon: [512, 512, [], \"f6d7\", \"M462.8 49.57a169.44 169.44 0 0 0-239.5 0C187.82 85 160.13 128 160.13 192v85.83l-40.62 40.59c-9.7 9.69-24 11.07-36.78 6a60.33 60.33 0 0 0-65 98.72C33 438.39 54.24 442.7 73.85 438.21c-4.5 19.6-.18 40.83 15.1 56.1a60.35 60.35 0 0 0 98.8-65c-5.09-12.73-3.72-27 6-36.75L234.36 352h85.89a187.87 187.87 0 0 0 61.89-10c-39.64-43.89-39.83-110.23 1.05-151.07 34.38-34.36 86.76-39.46 128.74-16.8 1.3-44.96-14.81-90.28-49.13-124.56z\"]\n};\nvar faDumbbell = {\n prefix: 'fas',\n iconName: 'dumbbell',\n icon: [640, 512, [], \"f44b\", \"M104 96H56c-13.3 0-24 10.7-24 24v104H8c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h24v104c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V120c0-13.3-10.7-24-24-24zm528 128h-24V120c0-13.3-10.7-24-24-24h-48c-13.3 0-24 10.7-24 24v272c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V288h24c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM456 32h-48c-13.3 0-24 10.7-24 24v168H256V56c0-13.3-10.7-24-24-24h-48c-13.3 0-24 10.7-24 24v400c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V288h128v168c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24z\"]\n};\nvar faDumpster = {\n prefix: 'fas',\n iconName: 'dumpster',\n icon: [576, 512, [], \"f793\", \"M560 160c10.4 0 18-9.8 15.5-19.9l-24-96C549.7 37 543.3 32 536 32h-98.9l25.6 128H560zM272 32H171.5l-25.6 128H272V32zm132.5 0H304v128h126.1L404.5 32zM16 160h97.3l25.6-128H40c-7.3 0-13.7 5-15.5 12.1l-24 96C-2 150.2 5.6 160 16 160zm544 64h-20l4-32H32l4 32H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h28l20 160v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h320v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16l20-160h28c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z\"]\n};\nvar faDumpsterFire = {\n prefix: 'fas',\n iconName: 'dumpster-fire',\n icon: [640, 512, [], \"f794\", \"M418.7 104.1l.2-.2-14.4-72H304v128h60.8c16.2-19.3 34.2-38.2 53.9-55.8zM272 32H171.5l-25.6 128H272V32zm189.3 72.1c18.2 16.3 35.5 33.7 51.1 51.5 5.7-5.6 11.4-11.1 17.3-16.3l21.3-19 21.3 19c1.1.9 2.1 2.1 3.1 3.1-.1-.8.2-1.5 0-2.3l-24-96C549.7 37 543.3 32 536 32h-98.9l12.3 61.5 11.9 10.6zM16 160h97.3l25.6-128H40c-7.3 0-13.7 5-15.5 12.1l-24 96C-2 150.2 5.6 160 16 160zm324.6 32H32l4 32H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h28l20 160v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h208.8c-30.2-33.7-48.8-77.9-48.8-126.4 0-35.9 19.9-82.9 52.6-129.6zm210.5-28.8c-14.9 13.3-28.3 27.2-40.2 41.2-19.5-25.8-43.6-52-71-76.4-70.2 62.7-120 144.3-120 193.6 0 87.5 71.6 158.4 160 158.4s160-70.9 160-158.4c.1-36.6-37-112.2-88.8-158.4zm-18.6 229.4c-14.7 10.7-32.9 17-52.5 17-49 0-88.9-33.5-88.9-88 0-27.1 16.5-51 49.4-91.9 4.7 5.6 67.1 88.1 67.1 88.1l39.8-47c2.8 4.8 5.4 9.5 7.7 14 18.6 36.7 10.8 83.6-22.6 107.8z\"]\n};\nvar faDungeon = {\n prefix: 'fas',\n iconName: 'dungeon',\n icon: [512, 512, [], \"f6d9\", \"M128.73 195.32l-82.81-51.76c-8.04-5.02-18.99-2.17-22.93 6.45A254.19 254.19 0 0 0 .54 239.28C-.05 248.37 7.59 256 16.69 256h97.13c7.96 0 14.08-6.25 15.01-14.16 1.09-9.33 3.24-18.33 6.24-26.94 2.56-7.34.25-15.46-6.34-19.58zM319.03 8C298.86 2.82 277.77 0 256 0s-42.86 2.82-63.03 8c-9.17 2.35-13.91 12.6-10.39 21.39l37.47 104.03A16.003 16.003 0 0 0 235.1 144h41.8c6.75 0 12.77-4.23 15.05-10.58l37.47-104.03c3.52-8.79-1.22-19.03-10.39-21.39zM112 288H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm0 128H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm77.31-283.67l-36.32-90.8c-3.53-8.83-14.13-12.99-22.42-8.31a257.308 257.308 0 0 0-71.61 59.89c-6.06 7.32-3.85 18.48 4.22 23.52l82.93 51.83c6.51 4.07 14.66 2.62 20.11-2.79 5.18-5.15 10.79-9.85 16.79-14.05 6.28-4.41 9.15-12.17 6.3-19.29zM398.18 256h97.13c9.1 0 16.74-7.63 16.15-16.72a254.135 254.135 0 0 0-22.45-89.27c-3.94-8.62-14.89-11.47-22.93-6.45l-82.81 51.76c-6.59 4.12-8.9 12.24-6.34 19.58 3.01 8.61 5.15 17.62 6.24 26.94.93 7.91 7.05 14.16 15.01 14.16zm54.85-162.89a257.308 257.308 0 0 0-71.61-59.89c-8.28-4.68-18.88-.52-22.42 8.31l-36.32 90.8c-2.85 7.12.02 14.88 6.3 19.28 6 4.2 11.61 8.9 16.79 14.05 5.44 5.41 13.6 6.86 20.11 2.79l82.93-51.83c8.07-5.03 10.29-16.19 4.22-23.51zM496 288h-96c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm0 128h-96c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zM240 177.62V472c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V177.62c-5.23-.89-10.52-1.62-16-1.62s-10.77.73-16 1.62zm-64 41.51V472c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V189.36c-12.78 7.45-23.84 17.47-32 29.77zm128-29.77V472c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V219.13c-8.16-12.3-19.22-22.32-32-29.77z\"]\n};\nvar faEdit = {\n prefix: 'fas',\n iconName: 'edit',\n icon: [576, 512, [], \"f044\", \"M402.6 83.2l90.2 90.2c3.8 3.8 3.8 10 0 13.8L274.4 405.6l-92.8 10.3c-12.4 1.4-22.9-9.1-21.5-21.5l10.3-92.8L388.8 83.2c3.8-3.8 10-3.8 13.8 0zm162-22.9l-48.8-48.8c-15.2-15.2-39.9-15.2-55.2 0l-35.4 35.4c-3.8 3.8-3.8 10 0 13.8l90.2 90.2c3.8 3.8 10 3.8 13.8 0l35.4-35.4c15.2-15.3 15.2-40 0-55.2zM384 346.2V448H64V128h229.8c3.2 0 6.2-1.3 8.5-3.5l40-40c7.6-7.6 2.2-20.5-8.5-20.5H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V306.2c0-10.7-12.9-16-20.5-8.5l-40 40c-2.2 2.3-3.5 5.3-3.5 8.5z\"]\n};\nvar faEgg = {\n prefix: 'fas',\n iconName: 'egg',\n icon: [384, 512, [], \"f7fb\", \"M192 0C86 0 0 214 0 320s86 192 192 192 192-86 192-192S298 0 192 0z\"]\n};\nvar faEject = {\n prefix: 'fas',\n iconName: 'eject',\n icon: [448, 512, [], \"f052\", \"M448 384v64c0 17.673-14.327 32-32 32H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h384c17.673 0 32 14.327 32 32zM48.053 320h351.886c41.651 0 63.581-49.674 35.383-80.435L259.383 47.558c-19.014-20.743-51.751-20.744-70.767 0L12.67 239.565C-15.475 270.268 6.324 320 48.053 320z\"]\n};\nvar faEllipsisH = {\n prefix: 'fas',\n iconName: 'ellipsis-h',\n icon: [512, 512, [], \"f141\", \"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"]\n};\nvar faEllipsisV = {\n prefix: 'fas',\n iconName: 'ellipsis-v',\n icon: [192, 512, [], \"f142\", \"M96 184c39.8 0 72 32.2 72 72s-32.2 72-72 72-72-32.2-72-72 32.2-72 72-72zM24 80c0 39.8 32.2 72 72 72s72-32.2 72-72S135.8 8 96 8 24 40.2 24 80zm0 352c0 39.8 32.2 72 72 72s72-32.2 72-72-32.2-72-72-72-72 32.2-72 72z\"]\n};\nvar faEnvelope = {\n prefix: 'fas',\n iconName: 'envelope',\n icon: [512, 512, [], \"f0e0\", \"M502.3 190.8c3.9-3.1 9.7-.2 9.7 4.7V400c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V195.6c0-5 5.7-7.8 9.7-4.7 22.4 17.4 52.1 39.5 154.1 113.6 21.1 15.4 56.7 47.8 92.2 47.6 35.7.3 72-32.8 92.3-47.6 102-74.1 131.6-96.3 154-113.7zM256 320c23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7 5.8-4.5 9.2-11.5 9.2-18.9v-19c0-26.5-21.5-48-48-48H48C21.5 64 0 85.5 0 112v19c0 7.4 3.4 14.3 9.2 18.9 30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4z\"]\n};\nvar faEnvelopeOpen = {\n prefix: 'fas',\n iconName: 'envelope-open',\n icon: [512, 512, [], \"f2b6\", \"M512 464c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V200.724a48 48 0 0 1 18.387-37.776c24.913-19.529 45.501-35.365 164.2-121.511C199.412 29.17 232.797-.347 256 .003c23.198-.354 56.596 29.172 73.413 41.433 118.687 86.137 139.303 101.995 164.2 121.512A48 48 0 0 1 512 200.724V464zm-65.666-196.605c-2.563-3.728-7.7-4.595-11.339-1.907-22.845 16.873-55.462 40.705-105.582 77.079-16.825 12.266-50.21 41.781-73.413 41.43-23.211.344-56.559-29.143-73.413-41.43-50.114-36.37-82.734-60.204-105.582-77.079-3.639-2.688-8.776-1.821-11.339 1.907l-9.072 13.196a7.998 7.998 0 0 0 1.839 10.967c22.887 16.899 55.454 40.69 105.303 76.868 20.274 14.781 56.524 47.813 92.264 47.573 35.724.242 71.961-32.771 92.263-47.573 49.85-36.179 82.418-59.97 105.303-76.868a7.998 7.998 0 0 0 1.839-10.967l-9.071-13.196z\"]\n};\nvar faEnvelopeOpenText = {\n prefix: 'fas',\n iconName: 'envelope-open-text',\n icon: [512, 512, [], \"f658\", \"M176 216h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16zm-16 80c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16zm96 121.13c-16.42 0-32.84-5.06-46.86-15.19L0 250.86V464c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V250.86L302.86 401.94c-14.02 10.12-30.44 15.19-46.86 15.19zm237.61-254.18c-8.85-6.94-17.24-13.47-29.61-22.81V96c0-26.51-21.49-48-48-48h-77.55c-3.04-2.2-5.87-4.26-9.04-6.56C312.6 29.17 279.2-.35 256 0c-23.2-.35-56.59 29.17-73.41 41.44-3.17 2.3-6 4.36-9.04 6.56H96c-26.51 0-48 21.49-48 48v44.14c-12.37 9.33-20.76 15.87-29.61 22.81A47.995 47.995 0 0 0 0 200.72v10.65l96 69.35V96h320v184.72l96-69.35v-10.65c0-14.74-6.78-28.67-18.39-37.77z\"]\n};\nvar faEnvelopeSquare = {\n prefix: 'fas',\n iconName: 'envelope-square',\n icon: [448, 512, [], \"f199\", \"M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM178.117 262.104C87.429 196.287 88.353 196.121 64 177.167V152c0-13.255 10.745-24 24-24h272c13.255 0 24 10.745 24 24v25.167c-24.371 18.969-23.434 19.124-114.117 84.938-10.5 7.655-31.392 26.12-45.883 25.894-14.503.218-35.367-18.227-45.883-25.895zM384 217.775V360c0 13.255-10.745 24-24 24H88c-13.255 0-24-10.745-24-24V217.775c13.958 10.794 33.329 25.236 95.303 70.214 14.162 10.341 37.975 32.145 64.694 32.01 26.887.134 51.037-22.041 64.72-32.025 61.958-44.965 81.325-59.406 95.283-70.199z\"]\n};\nvar faEquals = {\n prefix: 'fas',\n iconName: 'equals',\n icon: [448, 512, [], \"f52c\", \"M416 304H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32zm0-192H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"]\n};\nvar faEraser = {\n prefix: 'fas',\n iconName: 'eraser',\n icon: [512, 512, [], \"f12d\", \"M497.941 273.941c18.745-18.745 18.745-49.137 0-67.882l-160-160c-18.745-18.745-49.136-18.746-67.883 0l-256 256c-18.745 18.745-18.745 49.137 0 67.882l96 96A48.004 48.004 0 0 0 144 480h356c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12H355.883l142.058-142.059zm-302.627-62.627l137.373 137.373L265.373 416H150.628l-80-80 124.686-124.686z\"]\n};\nvar faEthernet = {\n prefix: 'fas',\n iconName: 'ethernet',\n icon: [512, 512, [], \"f796\", \"M496 192h-48v-48c0-8.8-7.2-16-16-16h-48V80c0-8.8-7.2-16-16-16H144c-8.8 0-16 7.2-16 16v48H80c-8.8 0-16 7.2-16 16v48H16c-8.8 0-16 7.2-16 16v224c0 8.8 7.2 16 16 16h80V320h32v128h64V320h32v128h64V320h32v128h64V320h32v128h80c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16z\"]\n};\nvar faEuroSign = {\n prefix: 'fas',\n iconName: 'euro-sign',\n icon: [320, 512, [], \"f153\", \"M310.706 413.765c-1.314-6.63-7.835-10.872-14.424-9.369-10.692 2.439-27.422 5.413-45.426 5.413-56.763 0-101.929-34.79-121.461-85.449h113.689a12 12 0 0 0 11.708-9.369l6.373-28.36c1.686-7.502-4.019-14.631-11.708-14.631H115.22c-1.21-14.328-1.414-28.287.137-42.245H261.95a12 12 0 0 0 11.723-9.434l6.512-29.755c1.638-7.484-4.061-14.566-11.723-14.566H130.184c20.633-44.991 62.69-75.03 117.619-75.03 14.486 0 28.564 2.25 37.851 4.145 6.216 1.268 12.347-2.498 14.002-8.623l11.991-44.368c1.822-6.741-2.465-13.616-9.326-14.917C290.217 34.912 270.71 32 249.635 32 152.451 32 74.03 92.252 45.075 176H12c-6.627 0-12 5.373-12 12v29.755c0 6.627 5.373 12 12 12h21.569c-1.009 13.607-1.181 29.287-.181 42.245H12c-6.627 0-12 5.373-12 12v28.36c0 6.627 5.373 12 12 12h30.114C67.139 414.692 145.264 480 249.635 480c26.301 0 48.562-4.544 61.101-7.788 6.167-1.595 10.027-7.708 8.788-13.957l-8.818-44.49z\"]\n};\nvar faExchangeAlt = {\n prefix: 'fas',\n iconName: 'exchange-alt',\n icon: [512, 512, [], \"f362\", \"M0 168v-16c0-13.255 10.745-24 24-24h360V80c0-21.367 25.899-32.042 40.971-16.971l80 80c9.372 9.373 9.372 24.569 0 33.941l-80 80C409.956 271.982 384 261.456 384 240v-48H24c-13.255 0-24-10.745-24-24zm488 152H128v-48c0-21.314-25.862-32.08-40.971-16.971l-80 80c-9.372 9.373-9.372 24.569 0 33.941l80 80C102.057 463.997 128 453.437 128 432v-48h360c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24z\"]\n};\nvar faExclamation = {\n prefix: 'fas',\n iconName: 'exclamation',\n icon: [192, 512, [], \"f12a\", \"M176 432c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80zM25.26 25.199l13.6 272C39.499 309.972 50.041 320 62.83 320h66.34c12.789 0 23.331-10.028 23.97-22.801l13.6-272C167.425 11.49 156.496 0 142.77 0H49.23C35.504 0 24.575 11.49 25.26 25.199z\"]\n};\nvar faExclamationCircle = {\n prefix: 'fas',\n iconName: 'exclamation-circle',\n icon: [512, 512, [], \"f06a\", \"M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zm-248 50c-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\"]\n};\nvar faExclamationTriangle = {\n prefix: 'fas',\n iconName: 'exclamation-triangle',\n icon: [576, 512, [], \"f071\", \"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\"]\n};\nvar faExpand = {\n prefix: 'fas',\n iconName: 'expand',\n icon: [448, 512, [], \"f065\", \"M0 180V56c0-13.3 10.7-24 24-24h124c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H64v84c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12zM288 44v40c0 6.6 5.4 12 12 12h84v84c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12V56c0-13.3-10.7-24-24-24H300c-6.6 0-12 5.4-12 12zm148 276h-40c-6.6 0-12 5.4-12 12v84h-84c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h124c13.3 0 24-10.7 24-24V332c0-6.6-5.4-12-12-12zM160 468v-40c0-6.6-5.4-12-12-12H64v-84c0-6.6-5.4-12-12-12H12c-6.6 0-12 5.4-12 12v124c0 13.3 10.7 24 24 24h124c6.6 0 12-5.4 12-12z\"]\n};\nvar faExpandAlt = {\n prefix: 'fas',\n iconName: 'expand-alt',\n icon: [448, 512, [], \"f424\", \"M212.686 315.314L120 408l32.922 31.029c15.12 15.12 4.412 40.971-16.97 40.971h-112C10.697 480 0 469.255 0 456V344c0-21.382 25.803-32.09 40.922-16.971L72 360l92.686-92.686c6.248-6.248 16.379-6.248 22.627 0l25.373 25.373c6.249 6.248 6.249 16.378 0 22.627zm22.628-118.628L328 104l-32.922-31.029C279.958 57.851 290.666 32 312.048 32h112C437.303 32 448 42.745 448 56v112c0 21.382-25.803 32.09-40.922 16.971L376 152l-92.686 92.686c-6.248 6.248-16.379 6.248-22.627 0l-25.373-25.373c-6.249-6.248-6.249-16.378 0-22.627z\"]\n};\nvar faExpandArrowsAlt = {\n prefix: 'fas',\n iconName: 'expand-arrows-alt',\n icon: [448, 512, [], \"f31e\", \"M448 344v112a23.94 23.94 0 0 1-24 24H312c-21.39 0-32.09-25.9-17-41l36.2-36.2L224 295.6 116.77 402.9 153 439c15.09 15.1 4.39 41-17 41H24a23.94 23.94 0 0 1-24-24V344c0-21.4 25.89-32.1 41-17l36.19 36.2L184.46 256 77.18 148.7 41 185c-15.1 15.1-41 4.4-41-17V56a23.94 23.94 0 0 1 24-24h112c21.39 0 32.09 25.9 17 41l-36.2 36.2L224 216.4l107.23-107.3L295 73c-15.09-15.1-4.39-41 17-41h112a23.94 23.94 0 0 1 24 24v112c0 21.4-25.89 32.1-41 17l-36.19-36.2L263.54 256l107.28 107.3L407 327.1c15.1-15.2 41-4.5 41 16.9z\"]\n};\nvar faExternalLinkAlt = {\n prefix: 'fas',\n iconName: 'external-link-alt',\n icon: [512, 512, [], \"f35d\", \"M432,320H400a16,16,0,0,0-16,16V448H64V128H208a16,16,0,0,0,16-16V80a16,16,0,0,0-16-16H48A48,48,0,0,0,0,112V464a48,48,0,0,0,48,48H400a48,48,0,0,0,48-48V336A16,16,0,0,0,432,320ZM488,0h-128c-21.37,0-32.05,25.91-17,41l35.73,35.73L135,320.37a24,24,0,0,0,0,34L157.67,377a24,24,0,0,0,34,0L435.28,133.32,471,169c15,15,41,4.5,41-17V24A24,24,0,0,0,488,0Z\"]\n};\nvar faExternalLinkSquareAlt = {\n prefix: 'fas',\n iconName: 'external-link-square-alt',\n icon: [448, 512, [], \"f360\", \"M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zm-88 16H248.029c-21.313 0-32.08 25.861-16.971 40.971l31.984 31.987L67.515 364.485c-4.686 4.686-4.686 12.284 0 16.971l31.029 31.029c4.687 4.686 12.285 4.686 16.971 0l195.526-195.526 31.988 31.991C358.058 263.977 384 253.425 384 231.979V120c0-13.255-10.745-24-24-24z\"]\n};\nvar faEye = {\n prefix: 'fas',\n iconName: 'eye',\n icon: [576, 512, [], \"f06e\", \"M572.52 241.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400a144 144 0 1 1 144-144 143.93 143.93 0 0 1-144 144zm0-240a95.31 95.31 0 0 0-25.31 3.79 47.85 47.85 0 0 1-66.9 66.9A95.78 95.78 0 1 0 288 160z\"]\n};\nvar faEyeDropper = {\n prefix: 'fas',\n iconName: 'eye-dropper',\n icon: [512, 512, [], \"f1fb\", \"M50.75 333.25c-12 12-18.75 28.28-18.75 45.26V424L0 480l32 32 56-32h45.49c16.97 0 33.25-6.74 45.25-18.74l126.64-126.62-128-128L50.75 333.25zM483.88 28.12c-37.47-37.5-98.28-37.5-135.75 0l-77.09 77.09-13.1-13.1c-9.44-9.44-24.65-9.31-33.94 0l-40.97 40.97c-9.37 9.37-9.37 24.57 0 33.94l161.94 161.94c9.44 9.44 24.65 9.31 33.94 0L419.88 288c9.37-9.37 9.37-24.57 0-33.94l-13.1-13.1 77.09-77.09c37.51-37.48 37.51-98.26.01-135.75z\"]\n};\nvar faEyeSlash = {\n prefix: 'fas',\n iconName: 'eye-slash',\n icon: [640, 512, [], \"f070\", \"M320 400c-75.85 0-137.25-58.71-142.9-133.11L72.2 185.82c-13.79 17.3-26.48 35.59-36.72 55.59a32.35 32.35 0 0 0 0 29.19C89.71 376.41 197.07 448 320 448c26.91 0 52.87-4 77.89-10.46L346 397.39a144.13 144.13 0 0 1-26 2.61zm313.82 58.1l-110.55-85.44a331.25 331.25 0 0 0 81.25-102.07 32.35 32.35 0 0 0 0-29.19C550.29 135.59 442.93 64 320 64a308.15 308.15 0 0 0-147.32 37.7L45.46 3.37A16 16 0 0 0 23 6.18L3.37 31.45A16 16 0 0 0 6.18 53.9l588.36 454.73a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45zm-183.72-142l-39.3-30.38A94.75 94.75 0 0 0 416 256a94.76 94.76 0 0 0-121.31-92.21A47.65 47.65 0 0 1 304 192a46.64 46.64 0 0 1-1.54 10l-73.61-56.89A142.31 142.31 0 0 1 320 112a143.92 143.92 0 0 1 144 144c0 21.63-5.29 41.79-13.9 60.11z\"]\n};\nvar faFan = {\n prefix: 'fas',\n iconName: 'fan',\n icon: [512, 512, [], \"f863\", \"M352.57 128c-28.09 0-54.09 4.52-77.06 12.86l12.41-123.11C289 7.31 279.81-1.18 269.33.13 189.63 10.13 128 77.64 128 159.43c0 28.09 4.52 54.09 12.86 77.06L17.75 224.08C7.31 223-1.18 232.19.13 242.67c10 79.7 77.51 141.33 159.3 141.33 28.09 0 54.09-4.52 77.06-12.86l-12.41 123.11c-1.05 10.43 8.11 18.93 18.59 17.62 79.7-10 141.33-77.51 141.33-159.3 0-28.09-4.52-54.09-12.86-77.06l123.11 12.41c10.44 1.05 18.93-8.11 17.62-18.59-10-79.7-77.51-141.33-159.3-141.33zM256 288a32 32 0 1 1 32-32 32 32 0 0 1-32 32z\"]\n};\nvar faFastBackward = {\n prefix: 'fas',\n iconName: 'fast-backward',\n icon: [512, 512, [], \"f049\", \"M0 436V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v151.9L235.5 71.4C256.1 54.3 288 68.6 288 96v131.9L459.5 71.4C480.1 54.3 512 68.6 512 96v320c0 27.4-31.9 41.7-52.5 24.6L288 285.3V416c0 27.4-31.9 41.7-52.5 24.6L64 285.3V436c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12z\"]\n};\nvar faFastForward = {\n prefix: 'fas',\n iconName: 'fast-forward',\n icon: [512, 512, [], \"f050\", \"M512 76v360c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12V284.1L276.5 440.6c-20.6 17.2-52.5 2.8-52.5-24.6V284.1L52.5 440.6C31.9 457.8 0 443.4 0 416V96c0-27.4 31.9-41.7 52.5-24.6L224 226.8V96c0-27.4 31.9-41.7 52.5-24.6L448 226.8V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12z\"]\n};\nvar faFaucet = {\n prefix: 'fas',\n iconName: 'faucet',\n icon: [512, 512, [], \"e005\", \"M352,256H313.39c-15.71-13.44-35.46-23.07-57.39-28V180.44l-32-3.38-32,3.38V228c-21.93,5-41.68,14.6-57.39,28H16A16,16,0,0,0,0,272v96a16,16,0,0,0,16,16h92.79C129.38,421.73,173,448,224,448s94.62-26.27,115.21-64H352a32,32,0,0,1,32,32,32,32,0,0,0,32,32h64a32,32,0,0,0,32-32A160,160,0,0,0,352,256ZM81.59,159.91l142.41-15,142.41,15c9.42,1,17.59-6.81,17.59-16.8V112.89c0-10-8.17-17.8-17.59-16.81L256,107.74V80a16,16,0,0,0-16-16H208a16,16,0,0,0-16,16v27.74L81.59,96.08C72.17,95.09,64,102.9,64,112.89v30.22C64,153.1,72.17,160.91,81.59,159.91Z\"]\n};\nvar faFax = {\n prefix: 'fas',\n iconName: 'fax',\n icon: [512, 512, [], \"f1ac\", \"M480 160V77.25a32 32 0 0 0-9.38-22.63L425.37 9.37A32 32 0 0 0 402.75 0H160a32 32 0 0 0-32 32v448a32 32 0 0 0 32 32h320a32 32 0 0 0 32-32V192a32 32 0 0 0-32-32zM288 432a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm0-128a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm128 128a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm0-128a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm0-112H192V64h160v48a16 16 0 0 0 16 16h48zM64 128H32a32 32 0 0 0-32 32v320a32 32 0 0 0 32 32h32a32 32 0 0 0 32-32V160a32 32 0 0 0-32-32z\"]\n};\nvar faFeather = {\n prefix: 'fas',\n iconName: 'feather',\n icon: [512, 512, [], \"f52d\", \"M467.14 44.84c-62.55-62.48-161.67-64.78-252.28 25.73-78.61 78.52-60.98 60.92-85.75 85.66-60.46 60.39-70.39 150.83-63.64 211.17l178.44-178.25c6.26-6.25 16.4-6.25 22.65 0s6.25 16.38 0 22.63L7.04 471.03c-9.38 9.37-9.38 24.57 0 33.94 9.38 9.37 24.6 9.37 33.98 0l66.1-66.03C159.42 454.65 279 457.11 353.95 384h-98.19l147.57-49.14c49.99-49.93 36.38-36.18 46.31-46.86h-97.78l131.54-43.8c45.44-74.46 34.31-148.84-16.26-199.36z\"]\n};\nvar faFeatherAlt = {\n prefix: 'fas',\n iconName: 'feather-alt',\n icon: [512, 512, [], \"f56b\", \"M512 0C460.22 3.56 96.44 38.2 71.01 287.61c-3.09 26.66-4.84 53.44-5.99 80.24l178.87-178.69c6.25-6.25 16.4-6.25 22.65 0s6.25 16.38 0 22.63L7.04 471.03c-9.38 9.37-9.38 24.57 0 33.94 9.38 9.37 24.59 9.37 33.98 0l57.13-57.07c42.09-.14 84.15-2.53 125.96-7.36 53.48-5.44 97.02-26.47 132.58-56.54H255.74l146.79-48.88c11.25-14.89 21.37-30.71 30.45-47.12h-81.14l106.54-53.21C500.29 132.86 510.19 26.26 512 0z\"]\n};\nvar faFemale = {\n prefix: 'fas',\n iconName: 'female',\n icon: [256, 512, [], \"f182\", \"M128 0c35.346 0 64 28.654 64 64s-28.654 64-64 64c-35.346 0-64-28.654-64-64S92.654 0 128 0m119.283 354.179l-48-192A24 24 0 0 0 176 144h-11.36c-22.711 10.443-49.59 10.894-73.28 0H80a24 24 0 0 0-23.283 18.179l-48 192C4.935 369.305 16.383 384 32 384h56v104c0 13.255 10.745 24 24 24h32c13.255 0 24-10.745 24-24V384h56c15.591 0 27.071-14.671 23.283-29.821z\"]\n};\nvar faFighterJet = {\n prefix: 'fas',\n iconName: 'fighter-jet',\n icon: [640, 512, [], \"f0fb\", \"M544 224l-128-16-48-16h-24L227.158 44h39.509C278.333 44 288 41.375 288 38s-9.667-6-21.333-6H152v12h16v164h-48l-66.667-80H18.667L8 138.667V208h8v16h48v2.666l-64 8v42.667l64 8V288H16v16H8v69.333L18.667 384h34.667L120 304h48v164h-16v12h114.667c11.667 0 21.333-2.625 21.333-6s-9.667-6-21.333-6h-39.509L344 320h24l48-16 128-16c96-21.333 96-26.583 96-32 0-5.417 0-10.667-96-32z\"]\n};\nvar faFile = {\n prefix: 'fas',\n iconName: 'file',\n icon: [384, 512, [], \"f15b\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm160-14.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFileAlt = {\n prefix: 'fas',\n iconName: 'file-alt',\n icon: [384, 512, [], \"f15c\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm64 236c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12v8zm0-64c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12v8zm0-72v8c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm96-114.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFileArchive = {\n prefix: 'fas',\n iconName: 'file-archive',\n icon: [384, 512, [], \"f1c6\", \"M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zM128.4 336c-17.9 0-32.4 12.1-32.4 27 0 15 14.6 27 32.5 27s32.4-12.1 32.4-27-14.6-27-32.5-27zM224 136V0h-63.6v32h-32V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM95.9 32h32v32h-32zm32.3 384c-33.2 0-58-30.4-51.4-62.9L96.4 256v-32h32v-32h-32v-32h32v-32h-32V96h32V64h32v32h-32v32h32v32h-32v32h32v32h-32v32h22.1c5.7 0 10.7 4.1 11.8 9.7l17.3 87.7c6.4 32.4-18.4 62.6-51.4 62.6z\"]\n};\nvar faFileAudio = {\n prefix: 'fas',\n iconName: 'file-audio',\n icon: [384, 512, [], \"f1c7\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm-64 268c0 10.7-12.9 16-20.5 8.5L104 376H76c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h28l35.5-36.5c7.6-7.6 20.5-2.2 20.5 8.5v136zm33.2-47.6c9.1-9.3 9.1-24.1 0-33.4-22.1-22.8 12.2-56.2 34.4-33.5 27.2 27.9 27.2 72.4 0 100.4-21.8 22.3-56.9-10.4-34.4-33.5zm86-117.1c54.4 55.9 54.4 144.8 0 200.8-21.8 22.4-57-10.3-34.4-33.5 36.2-37.2 36.3-96.5 0-133.8-22.1-22.8 12.3-56.3 34.4-33.5zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFileCode = {\n prefix: 'fas',\n iconName: 'file-code',\n icon: [384, 512, [], \"f1c9\", \"M384 121.941V128H256V0h6.059c6.365 0 12.47 2.529 16.971 7.029l97.941 97.941A24.005 24.005 0 0 1 384 121.941zM248 160c-13.2 0-24-10.8-24-24V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248zM123.206 400.505a5.4 5.4 0 0 1-7.633.246l-64.866-60.812a5.4 5.4 0 0 1 0-7.879l64.866-60.812a5.4 5.4 0 0 1 7.633.246l19.579 20.885a5.4 5.4 0 0 1-.372 7.747L101.65 336l40.763 35.874a5.4 5.4 0 0 1 .372 7.747l-19.579 20.884zm51.295 50.479l-27.453-7.97a5.402 5.402 0 0 1-3.681-6.692l61.44-211.626a5.402 5.402 0 0 1 6.692-3.681l27.452 7.97a5.4 5.4 0 0 1 3.68 6.692l-61.44 211.626a5.397 5.397 0 0 1-6.69 3.681zm160.792-111.045l-64.866 60.812a5.4 5.4 0 0 1-7.633-.246l-19.58-20.885a5.4 5.4 0 0 1 .372-7.747L284.35 336l-40.763-35.874a5.4 5.4 0 0 1-.372-7.747l19.58-20.885a5.4 5.4 0 0 1 7.633-.246l64.866 60.812a5.4 5.4 0 0 1-.001 7.879z\"]\n};\nvar faFileContract = {\n prefix: 'fas',\n iconName: 'file-contract',\n icon: [384, 512, [], \"f56c\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 64c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm192.81 248H304c8.84 0 16 7.16 16 16s-7.16 16-16 16h-47.19c-16.45 0-31.27-9.14-38.64-23.86-2.95-5.92-8.09-6.52-10.17-6.52s-7.22.59-10.02 6.19l-7.67 15.34a15.986 15.986 0 0 1-14.31 8.84c-.38 0-.75-.02-1.14-.05-6.45-.45-12-4.75-14.03-10.89L144 354.59l-10.61 31.88c-5.89 17.66-22.38 29.53-41 29.53H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h12.39c4.83 0 9.11-3.08 10.64-7.66l18.19-54.64c3.3-9.81 12.44-16.41 22.78-16.41s19.48 6.59 22.77 16.41l13.88 41.64c19.77-16.19 54.05-9.7 66 14.16 2.02 4.06 5.96 6.5 10.16 6.5zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFileCsv = {\n prefix: 'fas',\n iconName: 'file-csv',\n icon: [384, 512, [], \"f6dd\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm-96 144c0 4.42-3.58 8-8 8h-8c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h8c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-8c-26.51 0-48-21.49-48-48v-32c0-26.51 21.49-48 48-48h8c4.42 0 8 3.58 8 8v16zm44.27 104H160c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h12.27c5.95 0 10.41-3.5 10.41-6.62 0-1.3-.75-2.66-2.12-3.84l-21.89-18.77c-8.47-7.22-13.33-17.48-13.33-28.14 0-21.3 19.02-38.62 42.41-38.62H200c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-12.27c-5.95 0-10.41 3.5-10.41 6.62 0 1.3.75 2.66 2.12 3.84l21.89 18.77c8.47 7.22 13.33 17.48 13.33 28.14.01 21.29-19 38.62-42.39 38.62zM256 264v20.8c0 20.27 5.7 40.17 16 56.88 10.3-16.7 16-36.61 16-56.88V264c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v20.8c0 35.48-12.88 68.89-36.28 94.09-3.02 3.25-7.27 5.11-11.72 5.11s-8.7-1.86-11.72-5.11c-23.4-25.2-36.28-58.61-36.28-94.09V264c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8zm121-159L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFileDownload = {\n prefix: 'fas',\n iconName: 'file-download',\n icon: [384, 512, [], \"f56d\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm76.45 211.36l-96.42 95.7c-6.65 6.61-17.39 6.61-24.04 0l-96.42-95.7C73.42 337.29 80.54 320 94.82 320H160v-80c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v80h65.18c14.28 0 21.4 17.29 11.27 27.36zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFileExcel = {\n prefix: 'fas',\n iconName: 'file-excel',\n icon: [384, 512, [], \"f1c3\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm60.1 106.5L224 336l60.1 93.5c5.1 8-.6 18.5-10.1 18.5h-34.9c-4.4 0-8.5-2.4-10.6-6.3C208.9 405.5 192 373 192 373c-6.4 14.8-10 20-36.6 68.8-2.1 3.9-6.1 6.3-10.5 6.3H110c-9.5 0-15.2-10.5-10.1-18.5l60.3-93.5-60.3-93.5c-5.2-8 .6-18.5 10.1-18.5h34.8c4.4 0 8.5 2.4 10.6 6.3 26.1 48.8 20 33.6 36.6 68.5 0 0 6.1-11.7 36.6-68.5 2.1-3.9 6.2-6.3 10.6-6.3H274c9.5-.1 15.2 10.4 10.1 18.4zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFileExport = {\n prefix: 'fas',\n iconName: 'file-export',\n icon: [576, 512, [], \"f56e\", \"M384 121.9c0-6.3-2.5-12.4-7-16.9L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128zM571 308l-95.7-96.4c-10.1-10.1-27.4-3-27.4 11.3V288h-64v64h64v65.2c0 14.3 17.3 21.4 27.4 11.3L571 332c6.6-6.6 6.6-17.4 0-24zm-379 28v-32c0-8.8 7.2-16 16-16h176V160H248c-13.2 0-24-10.8-24-24V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V352H208c-8.8 0-16-7.2-16-16z\"]\n};\nvar faFileImage = {\n prefix: 'fas',\n iconName: 'file-image',\n icon: [384, 512, [], \"f1c5\", \"M384 121.941V128H256V0h6.059a24 24 0 0 1 16.97 7.029l97.941 97.941a24.002 24.002 0 0 1 7.03 16.971zM248 160c-13.2 0-24-10.8-24-24V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248zm-135.455 16c26.51 0 48 21.49 48 48s-21.49 48-48 48-48-21.49-48-48 21.491-48 48-48zm208 240h-256l.485-48.485L104.545 328c4.686-4.686 11.799-4.201 16.485.485L160.545 368 264.06 264.485c4.686-4.686 12.284-4.686 16.971 0L320.545 304v112z\"]\n};\nvar faFileImport = {\n prefix: 'fas',\n iconName: 'file-import',\n icon: [512, 512, [], \"f56f\", \"M16 288c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h112v-64zm489-183L407.1 7c-4.5-4.5-10.6-7-17-7H384v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H152c-13.3 0-24 10.7-24 24v264h128v-65.2c0-14.3 17.3-21.4 27.4-11.3L379 308c6.6 6.7 6.6 17.4 0 24l-95.7 96.4c-10.1 10.1-27.4 3-27.4-11.3V352H128v136c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H376c-13.2 0-24-10.8-24-24z\"]\n};\nvar faFileInvoice = {\n prefix: 'fas',\n iconName: 'file-invoice',\n icon: [384, 512, [], \"f570\", \"M288 256H96v64h192v-64zm89-151L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 64c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm256 304c0 4.42-3.58 8-8 8h-80c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16zm0-200v96c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-96c0-8.84 7.16-16 16-16h224c8.84 0 16 7.16 16 16z\"]\n};\nvar faFileInvoiceDollar = {\n prefix: 'fas',\n iconName: 'file-invoice-dollar',\n icon: [384, 512, [], \"f571\", \"M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 80v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8zm144 263.88V440c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-24.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V232c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v24.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07z\"]\n};\nvar faFileMedical = {\n prefix: 'fas',\n iconName: 'file-medical',\n icon: [384, 512, [], \"f477\", \"M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm64 160v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8z\"]\n};\nvar faFileMedicalAlt = {\n prefix: 'fas',\n iconName: 'file-medical-alt',\n icon: [448, 512, [], \"f478\", \"M288 136V0H88C74.7 0 64 10.7 64 24v232H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h140.9c3 0 5.8 1.7 7.2 4.4l19.9 39.8 56.8-113.7c2.9-5.9 11.4-5.9 14.3 0l34.7 69.5H352c8.8 0 16 7.2 16 16s-7.2 16-16 16h-89.9L240 275.8l-56.8 113.7c-2.9 5.9-11.4 5.9-14.3 0L134.1 320H64v168c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H312c-13.2 0-24-10.8-24-24zm153-31L343.1 7c-4.5-4.5-10.6-7-17-7H320v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFilePdf = {\n prefix: 'fas',\n iconName: 'file-pdf',\n icon: [384, 512, [], \"f1c1\", \"M181.9 256.1c-5-16-4.9-46.9-2-46.9 8.4 0 7.6 36.9 2 46.9zm-1.7 47.2c-7.7 20.2-17.3 43.3-28.4 62.7 18.3-7 39-17.2 62.9-21.9-12.7-9.6-24.9-23.4-34.5-40.8zM86.1 428.1c0 .8 13.2-5.4 34.9-40.2-6.7 6.3-29.1 24.5-34.9 40.2zM248 160h136v328c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V24C0 10.7 10.7 0 24 0h200v136c0 13.2 10.8 24 24 24zm-8 171.8c-20-12.2-33.3-29-42.7-53.8 4.5-18.5 11.6-46.6 6.2-64.2-4.7-29.4-42.4-26.5-47.8-6.8-5 18.3-.4 44.1 8.1 77-11.6 27.6-28.7 64.6-40.8 85.8-.1 0-.1.1-.2.1-27.1 13.9-73.6 44.5-54.5 68 5.6 6.9 16 10 21.5 10 17.9 0 35.7-18 61.1-61.8 25.8-8.5 54.1-19.1 79-23.2 21.7 11.8 47.1 19.5 64 19.5 29.2 0 31.2-32 19.7-43.4-13.9-13.6-54.3-9.7-73.6-7.2zM377 105L279 7c-4.5-4.5-10.6-7-17-7h-6v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-74.1 255.3c4.1-2.7-2.5-11.9-42.8-9 37.1 15.8 42.8 9 42.8 9z\"]\n};\nvar faFilePowerpoint = {\n prefix: 'fas',\n iconName: 'file-powerpoint',\n icon: [384, 512, [], \"f1c4\", \"M193.7 271.2c8.8 0 15.5 2.7 20.3 8.1 9.6 10.9 9.8 32.7-.2 44.1-4.9 5.6-11.9 8.5-21.1 8.5h-26.9v-60.7h27.9zM377 105L279 7c-4.5-4.5-10.6-7-17-7h-6v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm53 165.2c0 90.3-88.8 77.6-111.1 77.6V436c0 6.6-5.4 12-12 12h-30.8c-6.6 0-12-5.4-12-12V236.2c0-6.6 5.4-12 12-12h81c44.5 0 72.9 32.8 72.9 77z\"]\n};\nvar faFilePrescription = {\n prefix: 'fas',\n iconName: 'file-prescription',\n icon: [384, 512, [], \"f572\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm68.53 179.48l11.31 11.31c6.25 6.25 6.25 16.38 0 22.63l-29.9 29.9L304 409.38c6.25 6.25 6.25 16.38 0 22.63l-11.31 11.31c-6.25 6.25-16.38 6.25-22.63 0L240 413.25l-30.06 30.06c-6.25 6.25-16.38 6.25-22.63 0L176 432c-6.25-6.25-6.25-16.38 0-22.63l30.06-30.06L146.74 320H128v48c0 8.84-7.16 16-16 16H96c-8.84 0-16-7.16-16-16V208c0-8.84 7.16-16 16-16h80c35.35 0 64 28.65 64 64 0 24.22-13.62 45.05-33.46 55.92L240 345.38l29.9-29.9c6.25-6.25 16.38-6.25 22.63 0zM176 272h-48v-32h48c8.82 0 16 7.18 16 16s-7.18 16-16 16zm208-150.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFileSignature = {\n prefix: 'fas',\n iconName: 'file-signature',\n icon: [576, 512, [], \"f573\", \"M218.17 424.14c-2.95-5.92-8.09-6.52-10.17-6.52s-7.22.59-10.02 6.19l-7.67 15.34c-6.37 12.78-25.03 11.37-29.48-2.09L144 386.59l-10.61 31.88c-5.89 17.66-22.38 29.53-41 29.53H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h12.39c4.83 0 9.11-3.08 10.64-7.66l18.19-54.64c3.3-9.81 12.44-16.41 22.78-16.41s19.48 6.59 22.77 16.41l13.88 41.64c19.75-16.19 54.06-9.7 66 14.16 1.89 3.78 5.49 5.95 9.36 6.26v-82.12l128-127.09V160H248c-13.2 0-24-10.8-24-24V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24v-40l-128-.11c-16.12-.31-30.58-9.28-37.83-23.75zM384 121.9c0-6.3-2.5-12.4-7-16.9L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1zm-96 225.06V416h68.99l161.68-162.78-67.88-67.88L288 346.96zm280.54-179.63l-31.87-31.87c-9.94-9.94-26.07-9.94-36.01 0l-27.25 27.25 67.88 67.88 27.25-27.25c9.95-9.94 9.95-26.07 0-36.01z\"]\n};\nvar faFileUpload = {\n prefix: 'fas',\n iconName: 'file-upload',\n icon: [384, 512, [], \"f574\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm65.18 216.01H224v80c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-80H94.82c-14.28 0-21.41-17.29-11.27-27.36l96.42-95.7c6.65-6.61 17.39-6.61 24.04 0l96.42 95.7c10.15 10.07 3.03 27.36-11.25 27.36zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFileVideo = {\n prefix: 'fas',\n iconName: 'file-video',\n icon: [384, 512, [], \"f1c8\", \"M384 121.941V128H256V0h6.059c6.365 0 12.47 2.529 16.971 7.029l97.941 97.941A24.005 24.005 0 0 1 384 121.941zM224 136V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248c-13.2 0-24-10.8-24-24zm96 144.016v111.963c0 21.445-25.943 31.998-40.971 16.971L224 353.941V392c0 13.255-10.745 24-24 24H88c-13.255 0-24-10.745-24-24V280c0-13.255 10.745-24 24-24h112c13.255 0 24 10.745 24 24v38.059l55.029-55.013c15.011-15.01 40.971-4.491 40.971 16.97z\"]\n};\nvar faFileWord = {\n prefix: 'fas',\n iconName: 'file-word',\n icon: [384, 512, [], \"f1c2\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm57.1 120H305c7.7 0 13.4 7.1 11.7 14.7l-38 168c-1.2 5.5-6.1 9.3-11.7 9.3h-38c-5.5 0-10.3-3.8-11.6-9.1-25.8-103.5-20.8-81.2-25.6-110.5h-.5c-1.1 14.3-2.4 17.4-25.6 110.5-1.3 5.3-6.1 9.1-11.6 9.1H117c-5.6 0-10.5-3.9-11.7-9.4l-37.8-168c-1.7-7.5 4-14.6 11.7-14.6h24.5c5.7 0 10.7 4 11.8 9.7 15.6 78 20.1 109.5 21 122.2 1.6-10.2 7.3-32.7 29.4-122.7 1.3-5.4 6.1-9.1 11.7-9.1h29.1c5.6 0 10.4 3.8 11.7 9.2 24 100.4 28.8 124 29.6 129.4-.2-11.2-2.6-17.8 21.6-129.2 1-5.6 5.9-9.5 11.5-9.5zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFill = {\n prefix: 'fas',\n iconName: 'fill',\n icon: [512, 512, [], \"f575\", \"M502.63 217.06L294.94 9.37C288.69 3.12 280.5 0 272.31 0s-16.38 3.12-22.62 9.37l-81.58 81.58L81.93 4.77c-6.24-6.25-16.38-6.25-22.62 0L36.69 27.38c-6.24 6.25-6.24 16.38 0 22.63l86.19 86.18-94.76 94.76c-37.49 37.49-37.49 98.26 0 135.75l117.19 117.19c18.75 18.74 43.31 28.12 67.87 28.12 24.57 0 49.13-9.37 67.88-28.12l221.57-221.57c12.49-12.5 12.49-32.76 0-45.26zm-116.22 70.97H65.93c1.36-3.84 3.57-7.98 7.43-11.83l13.15-13.15 81.61-81.61 58.61 58.6c12.49 12.49 32.75 12.49 45.24 0 12.49-12.49 12.49-32.75 0-45.24l-58.61-58.6 58.95-58.95 162.45 162.44-48.35 48.34z\"]\n};\nvar faFillDrip = {\n prefix: 'fas',\n iconName: 'fill-drip',\n icon: [576, 512, [], \"f576\", \"M512 320s-64 92.65-64 128c0 35.35 28.66 64 64 64s64-28.65 64-64-64-128-64-128zm-9.37-102.94L294.94 9.37C288.69 3.12 280.5 0 272.31 0s-16.38 3.12-22.62 9.37l-81.58 81.58L81.93 4.76c-6.25-6.25-16.38-6.25-22.62 0L36.69 27.38c-6.24 6.25-6.24 16.38 0 22.62l86.19 86.18-94.76 94.76c-37.49 37.48-37.49 98.26 0 135.75l117.19 117.19c18.74 18.74 43.31 28.12 67.87 28.12 24.57 0 49.13-9.37 67.87-28.12l221.57-221.57c12.5-12.5 12.5-32.75.01-45.25zm-116.22 70.97H65.93c1.36-3.84 3.57-7.98 7.43-11.83l13.15-13.15 81.61-81.61 58.6 58.6c12.49 12.49 32.75 12.49 45.24 0s12.49-32.75 0-45.24l-58.6-58.6 58.95-58.95 162.44 162.44-48.34 48.34z\"]\n};\nvar faFilm = {\n prefix: 'fas',\n iconName: 'film',\n icon: [512, 512, [], \"f008\", \"M488 64h-8v20c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12V64H96v20c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12V64h-8C10.7 64 0 74.7 0 88v336c0 13.3 10.7 24 24 24h8v-20c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v20h320v-20c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v20h8c13.3 0 24-10.7 24-24V88c0-13.3-10.7-24-24-24zM96 372c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm272 208c0 6.6-5.4 12-12 12H156c-6.6 0-12-5.4-12-12v-96c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v96zm0-168c0 6.6-5.4 12-12 12H156c-6.6 0-12-5.4-12-12v-96c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v96zm112 152c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40z\"]\n};\nvar faFilter = {\n prefix: 'fas',\n iconName: 'filter',\n icon: [512, 512, [], \"f0b0\", \"M487.976 0H24.028C2.71 0-8.047 25.866 7.058 40.971L192 225.941V432c0 7.831 3.821 15.17 10.237 19.662l80 55.98C298.02 518.69 320 507.493 320 487.98V225.941l184.947-184.97C520.021 25.896 509.338 0 487.976 0z\"]\n};\nvar faFingerprint = {\n prefix: 'fas',\n iconName: 'fingerprint',\n icon: [512, 512, [], \"f577\", \"M256.12 245.96c-13.25 0-24 10.74-24 24 1.14 72.25-8.14 141.9-27.7 211.55-2.73 9.72 2.15 30.49 23.12 30.49 10.48 0 20.11-6.92 23.09-17.52 13.53-47.91 31.04-125.41 29.48-224.52.01-13.25-10.73-24-23.99-24zm-.86-81.73C194 164.16 151.25 211.3 152.1 265.32c.75 47.94-3.75 95.91-13.37 142.55-2.69 12.98 5.67 25.69 18.64 28.36 13.05 2.67 25.67-5.66 28.36-18.64 10.34-50.09 15.17-101.58 14.37-153.02-.41-25.95 19.92-52.49 54.45-52.34 31.31.47 57.15 25.34 57.62 55.47.77 48.05-2.81 96.33-10.61 143.55-2.17 13.06 6.69 25.42 19.76 27.58 19.97 3.33 26.81-15.1 27.58-19.77 8.28-50.03 12.06-101.21 11.27-152.11-.88-55.8-47.94-101.88-104.91-102.72zm-110.69-19.78c-10.3-8.34-25.37-6.8-33.76 3.48-25.62 31.5-39.39 71.28-38.75 112 .59 37.58-2.47 75.27-9.11 112.05-2.34 13.05 6.31 25.53 19.36 27.89 20.11 3.5 27.07-14.81 27.89-19.36 7.19-39.84 10.5-80.66 9.86-121.33-.47-29.88 9.2-57.88 28-80.97 8.35-10.28 6.79-25.39-3.49-33.76zm109.47-62.33c-15.41-.41-30.87 1.44-45.78 4.97-12.89 3.06-20.87 15.98-17.83 28.89 3.06 12.89 16 20.83 28.89 17.83 11.05-2.61 22.47-3.77 34-3.69 75.43 1.13 137.73 61.5 138.88 134.58.59 37.88-1.28 76.11-5.58 113.63-1.5 13.17 7.95 25.08 21.11 26.58 16.72 1.95 25.51-11.88 26.58-21.11a929.06 929.06 0 0 0 5.89-119.85c-1.56-98.75-85.07-180.33-186.16-181.83zm252.07 121.45c-2.86-12.92-15.51-21.2-28.61-18.27-12.94 2.86-21.12 15.66-18.26 28.61 4.71 21.41 4.91 37.41 4.7 61.6-.11 13.27 10.55 24.09 23.8 24.2h.2c13.17 0 23.89-10.61 24-23.8.18-22.18.4-44.11-5.83-72.34zm-40.12-90.72C417.29 43.46 337.6 1.29 252.81.02 183.02-.82 118.47 24.91 70.46 72.94 24.09 119.37-.9 181.04.14 246.65l-.12 21.47c-.39 13.25 10.03 24.31 23.28 24.69.23.02.48.02.72.02 12.92 0 23.59-10.3 23.97-23.3l.16-23.64c-.83-52.5 19.16-101.86 56.28-139 38.76-38.8 91.34-59.67 147.68-58.86 69.45 1.03 134.73 35.56 174.62 92.39 7.61 10.86 22.56 13.45 33.42 5.86 10.84-7.62 13.46-22.59 5.84-33.43z\"]\n};\nvar faFire = {\n prefix: 'fas',\n iconName: 'fire',\n icon: [384, 512, [], \"f06d\", \"M216 23.86c0-23.8-30.65-32.77-44.15-13.04C48 191.85 224 200 224 288c0 35.63-29.11 64.46-64.85 63.99-35.17-.45-63.15-29.77-63.15-64.94v-85.51c0-21.7-26.47-32.23-41.43-16.5C27.8 213.16 0 261.33 0 320c0 105.87 86.13 192 192 192s192-86.13 192-192c0-170.29-168-193-168-296.14z\"]\n};\nvar faFireAlt = {\n prefix: 'fas',\n iconName: 'fire-alt',\n icon: [448, 512, [], \"f7e4\", \"M323.56 51.2c-20.8 19.3-39.58 39.59-56.22 59.97C240.08 73.62 206.28 35.53 168 0 69.74 91.17 0 209.96 0 281.6 0 408.85 100.29 512 224 512s224-103.15 224-230.4c0-53.27-51.98-163.14-124.44-230.4zm-19.47 340.65C282.43 407.01 255.72 416 226.86 416 154.71 416 96 368.26 96 290.75c0-38.61 24.31-72.63 72.79-130.75 6.93 7.98 98.83 125.34 98.83 125.34l58.63-66.88c4.14 6.85 7.91 13.55 11.27 19.97 27.35 52.19 15.81 118.97-33.43 153.42z\"]\n};\nvar faFireExtinguisher = {\n prefix: 'fas',\n iconName: 'fire-extinguisher',\n icon: [448, 512, [], \"f134\", \"M434.027 26.329l-168 28C254.693 56.218 256 67.8 256 72h-58.332C208.353 36.108 181.446 0 144 0c-39.435 0-66.368 39.676-52.228 76.203-52.039 13.051-75.381 54.213-90.049 90.884-4.923 12.307 1.063 26.274 13.37 31.197 12.317 4.926 26.279-1.075 31.196-13.37C75.058 112.99 106.964 120 168 120v27.076c-41.543 10.862-72 49.235-72 94.129V488c0 13.255 10.745 24 24 24h144c13.255 0 24-10.745 24-24V240c0-44.731-30.596-82.312-72-92.97V120h40c0 2.974-1.703 15.716 10.027 17.671l168 28C441.342 166.89 448 161.25 448 153.834V38.166c0-7.416-6.658-13.056-13.973-11.837zM144 72c-8.822 0-16-7.178-16-16s7.178-16 16-16 16 7.178 16 16-7.178 16-16 16z\"]\n};\nvar faFirstAid = {\n prefix: 'fas',\n iconName: 'first-aid',\n icon: [576, 512, [], \"f479\", \"M0 80v352c0 26.5 21.5 48 48 48h48V32H48C21.5 32 0 53.5 0 80zm128 400h320V32H128v448zm64-248c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48zM528 32h-48v448h48c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z\"]\n};\nvar faFish = {\n prefix: 'fas',\n iconName: 'fish',\n icon: [576, 512, [], \"f578\", \"M327.1 96c-89.97 0-168.54 54.77-212.27 101.63L27.5 131.58c-12.13-9.18-30.24.6-27.14 14.66L24.54 256 .35 365.77c-3.1 14.06 15.01 23.83 27.14 14.66l87.33-66.05C158.55 361.23 237.13 416 327.1 416 464.56 416 576 288 576 256S464.56 96 327.1 96zm87.43 184c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24 13.26 0 24 10.74 24 24 0 13.25-10.75 24-24 24z\"]\n};\nvar faFistRaised = {\n prefix: 'fas',\n iconName: 'fist-raised',\n icon: [384, 512, [], \"f6de\", \"M255.98 160V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v146.93c5.02-1.78 10.34-2.93 15.97-2.93h48.03zm128 95.99c-.01-35.34-28.66-63.99-63.99-63.99H207.85c-8.78 0-15.9 7.07-15.9 15.85v.56c0 26.27 21.3 47.59 47.57 47.59h35.26c9.68 0 13.2 3.58 13.2 8v16.2c0 4.29-3.59 7.78-7.88 8-44.52 2.28-64.16 24.71-96.05 72.55l-6.31 9.47a7.994 7.994 0 0 1-11.09 2.22l-13.31-8.88a7.994 7.994 0 0 1-2.22-11.09l6.31-9.47c15.73-23.6 30.2-43.26 47.31-58.08-17.27-5.51-31.4-18.12-38.87-34.45-6.59 3.41-13.96 5.52-21.87 5.52h-32c-12.34 0-23.49-4.81-32-12.48C71.48 251.19 60.33 256 48 256H16c-5.64 0-10.97-1.15-16-2.95v77.93c0 33.95 13.48 66.5 37.49 90.51L63.99 448v64h255.98v-63.96l35.91-35.92A96.035 96.035 0 0 0 384 344.21l-.02-88.22zm-32.01-90.09V48c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v112h32c11.28 0 21.94 2.31 32 5.9zM16 224h32c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v128c0 8.84 7.16 16 16 16zm95.99 0h32c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v160c0 8.84 7.16 16 16 16z\"]\n};\nvar faFlag = {\n prefix: 'fas',\n iconName: 'flag',\n icon: [512, 512, [], \"f024\", \"M349.565 98.783C295.978 98.783 251.721 64 184.348 64c-24.955 0-47.309 4.384-68.045 12.013a55.947 55.947 0 0 0 3.586-23.562C118.117 24.015 94.806 1.206 66.338.048 34.345-1.254 8 24.296 8 56c0 19.026 9.497 35.825 24 45.945V488c0 13.255 10.745 24 24 24h16c13.255 0 24-10.745 24-24v-94.4c28.311-12.064 63.582-22.122 114.435-22.122 53.588 0 97.844 34.783 165.217 34.783 48.169 0 86.667-16.294 122.505-40.858C506.84 359.452 512 349.571 512 339.045v-243.1c0-23.393-24.269-38.87-45.485-29.016-34.338 15.948-76.454 31.854-116.95 31.854z\"]\n};\nvar faFlagCheckered = {\n prefix: 'fas',\n iconName: 'flag-checkered',\n icon: [512, 512, [], \"f11e\", \"M243.2 189.9V258c26.1 5.9 49.3 15.6 73.6 22.3v-68.2c-26-5.8-49.4-15.5-73.6-22.2zm223.3-123c-34.3 15.9-76.5 31.9-117 31.9C296 98.8 251.7 64 184.3 64c-25 0-47.3 4.4-68 12 2.8-7.3 4.1-15.2 3.6-23.6C118.1 24 94.8 1.2 66.3 0 34.3-1.3 8 24.3 8 56c0 19 9.5 35.8 24 45.9V488c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24v-94.4c28.3-12.1 63.6-22.1 114.4-22.1 53.6 0 97.8 34.8 165.2 34.8 48.2 0 86.7-16.3 122.5-40.9 8.7-6 13.8-15.8 13.8-26.4V95.9c.1-23.3-24.2-38.8-45.4-29zM169.6 325.5c-25.8 2.7-50 8.2-73.6 16.6v-70.5c26.2-9.3 47.5-15 73.6-17.4zM464 191c-23.6 9.8-46.3 19.5-73.6 23.9V286c24.8-3.4 51.4-11.8 73.6-26v70.5c-25.1 16.1-48.5 24.7-73.6 27.1V286c-27 3.7-47.9 1.5-73.6-5.6v67.4c-23.9-7.4-47.3-16.7-73.6-21.3V258c-19.7-4.4-40.8-6.8-73.6-3.8v-70c-22.4 3.1-44.6 10.2-73.6 20.9v-70.5c33.2-12.2 50.1-19.8 73.6-22v71.6c27-3.7 48.4-1.3 73.6 5.7v-67.4c23.7 7.4 47.2 16.7 73.6 21.3v68.4c23.7 5.3 47.6 6.9 73.6 2.7V143c27-4.8 52.3-13.6 73.6-22.5z\"]\n};\nvar faFlagUsa = {\n prefix: 'fas',\n iconName: 'flag-usa',\n icon: [512, 512, [], \"f74d\", \"M32 0C14.3 0 0 14.3 0 32v464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V32C64 14.3 49.7 0 32 0zm267.9 303.6c-57.2-15.1-111.7-28.8-203.9 11.1V384c185.7-92.2 221.7 53.3 397.5-23.1 11.4-5 18.5-16.5 18.5-28.8v-36c-43.6 17.3-80.2 24.1-112.1 24.1-37.4-.1-68.9-8.4-100-16.6zm0-96c-57.2-15.1-111.7-28.8-203.9 11.1v61.5c94.8-37.6 154.6-22.7 212.1-7.6 57.2 15.1 111.7 28.8 203.9-11.1V200c-43.6 17.3-80.2 24.1-112.1 24.1-37.4 0-68.9-8.3-100-16.5zm9.5-125.9c51.8 15.6 97.4 29 202.6-20.1V30.8c0-25.1-26.8-38.1-49.4-26.6C291.3 91.5 305.4-62.2 96 32.4v151.9c94.8-37.5 154.6-22.7 212.1-7.6 57.2 15 111.7 28.7 203.9-11.1V96.7c-53.6 23.5-93.3 31.4-126.1 31.4s-59-7.8-85.7-15.9c-4-1.2-8.1-2.4-12.1-3.5V75.5c7.2 2 14.3 4.1 21.3 6.2zM160 128.1c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16-7.2 16-16 16zm0-55.8c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16c0 8.8-7.2 16-16 16zm64 47.9c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16c0 8.8-7.2 16-16 16zm0-55.9c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16c0 8.8-7.2 16-16 16z\"]\n};\nvar faFlask = {\n prefix: 'fas',\n iconName: 'flask',\n icon: [448, 512, [], \"f0c3\", \"M437.2 403.5L320 215V64h8c13.3 0 24-10.7 24-24V24c0-13.3-10.7-24-24-24H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h8v151L10.8 403.5C-18.5 450.6 15.3 512 70.9 512h306.2c55.7 0 89.4-61.5 60.1-108.5zM137.9 320l48.2-77.6c3.7-5.2 5.8-11.6 5.8-18.4V64h64v160c0 6.9 2.2 13.2 5.8 18.4l48.2 77.6h-172z\"]\n};\nvar faFlushed = {\n prefix: 'fas',\n iconName: 'flushed',\n icon: [496, 512, [], \"f579\", \"M344 200c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm-192 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM80 224c0-39.8 32.2-72 72-72s72 32.2 72 72-32.2 72-72 72-72-32.2-72-72zm232 176H184c-21.2 0-21.2-32 0-32h128c21.2 0 21.2 32 0 32zm32-104c-39.8 0-72-32.2-72-72s32.2-72 72-72 72 32.2 72 72-32.2 72-72 72z\"]\n};\nvar faFolder = {\n prefix: 'fas',\n iconName: 'folder',\n icon: [512, 512, [], \"f07b\", \"M464 128H272l-64-64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48z\"]\n};\nvar faFolderMinus = {\n prefix: 'fas',\n iconName: 'folder-minus',\n icon: [512, 512, [], \"f65d\", \"M464 128H272l-64-64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zm-96 168c0 8.84-7.16 16-16 16H160c-8.84 0-16-7.16-16-16v-16c0-8.84 7.16-16 16-16h192c8.84 0 16 7.16 16 16v16z\"]\n};\nvar faFolderOpen = {\n prefix: 'fas',\n iconName: 'folder-open',\n icon: [576, 512, [], \"f07c\", \"M572.694 292.093L500.27 416.248A63.997 63.997 0 0 1 444.989 448H45.025c-18.523 0-30.064-20.093-20.731-36.093l72.424-124.155A64 64 0 0 1 152 256h399.964c18.523 0 30.064 20.093 20.73 36.093zM152 224h328v-48c0-26.51-21.49-48-48-48H272l-64-64H48C21.49 64 0 85.49 0 112v278.046l69.077-118.418C86.214 242.25 117.989 224 152 224z\"]\n};\nvar faFolderPlus = {\n prefix: 'fas',\n iconName: 'folder-plus',\n icon: [512, 512, [], \"f65e\", \"M464,128H272L208,64H48A48,48,0,0,0,0,112V400a48,48,0,0,0,48,48H464a48,48,0,0,0,48-48V176A48,48,0,0,0,464,128ZM359.5,296a16,16,0,0,1-16,16h-64v64a16,16,0,0,1-16,16h-16a16,16,0,0,1-16-16V312h-64a16,16,0,0,1-16-16V280a16,16,0,0,1,16-16h64V200a16,16,0,0,1,16-16h16a16,16,0,0,1,16,16v64h64a16,16,0,0,1,16,16Z\"]\n};\nvar faFont = {\n prefix: 'fas',\n iconName: 'font',\n icon: [448, 512, [], \"f031\", \"M432 416h-23.41L277.88 53.69A32 32 0 0 0 247.58 32h-47.16a32 32 0 0 0-30.3 21.69L39.41 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-19.58l23.3-64h152.56l23.3 64H304a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM176.85 272L224 142.51 271.15 272z\"]\n};\nvar faFontAwesomeLogoFull = {\n prefix: 'fas',\n iconName: 'font-awesome-logo-full',\n icon: [3992, 512, [\"Font Awesome\"], \"f4e6\", \"M454.6 0H57.4C25.9 0 0 25.9 0 57.4v397.3C0 486.1 25.9 512 57.4 512h397.3c31.4 0 57.4-25.9 57.4-57.4V57.4C512 25.9 486.1 0 454.6 0zm-58.9 324.9c0 4.8-4.1 6.9-8.9 8.9-19.2 8.1-39.7 15.7-61.5 15.7-40.5 0-68.7-44.8-163.2 2.5v51.8c0 30.3-45.7 30.2-45.7 0v-250c-9-7-15-17.9-15-30.3 0-21 17.1-38.2 38.2-38.2 21 0 38.2 17.1 38.2 38.2 0 12.2-5.8 23.2-14.9 30.2v21c37.1-12 65.5-34.4 146.1-3.4 26.6 11.4 68.7-15.7 76.5-15.7 5.5 0 10.3 4.1 10.3 8.9v160.4zm432.9-174.2h-137v70.1H825c39.8 0 40.4 62.2 0 62.2H691.6v105.6c0 45.5-70.7 46.4-70.7 0V128.3c0-22 18-39.8 39.8-39.8h167.8c39.6 0 40.5 62.2.1 62.2zm191.1 23.4c-169.3 0-169.1 252.4 0 252.4 169.9 0 169.9-252.4 0-252.4zm0 196.1c-81.6 0-82.1-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm372.4 53.4c-17.5 0-31.4-13.9-31.4-31.4v-117c0-62.4-72.6-52.5-99.1-16.4v133.4c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c43.3-51.6 162.4-60.4 162.4 39.3v141.5c.3 30.4-31.5 31.4-31.7 31.4zm179.7 2.9c-44.3 0-68.3-22.9-68.3-65.8V235.2H1488c-35.6 0-36.7-55.3 0-55.3h15.5v-37.3c0-41.3 63.8-42.1 63.8 0v37.5h24.9c35.4 0 35.7 55.3 0 55.3h-24.9v108.5c0 29.6 26.1 26.3 27.4 26.3 31.4 0 52.6 56.3-22.9 56.3zM1992 123c-19.5-50.2-95.5-50-114.5 0-107.3 275.7-99.5 252.7-99.5 262.8 0 42.8 58.3 51.2 72.1 14.4l13.5-35.9H2006l13 35.9c14.2 37.7 72.1 27.2 72.1-14.4 0-10.1 5.3 6.8-99.1-262.8zm-108.9 179.1l51.7-142.9 51.8 142.9h-103.5zm591.3-85.6l-53.7 176.3c-12.4 41.2-72 41-84 0l-42.3-135.9-42.3 135.9c-12.4 40.9-72 41.2-84.5 0l-54.2-176.3c-12.5-39.4 49.8-56.1 60.2-16.9L2213 342l45.3-139.5c10.9-32.7 59.6-34.7 71.2 0l45.3 139.5 39.3-142.4c10.3-38.3 72.6-23.8 60.3 16.9zm275.4 75.1c0-42.4-33.9-117.5-119.5-117.5-73.2 0-124.4 56.3-124.4 126 0 77.2 55.3 126.4 128.5 126.4 31.7 0 93-11.5 93-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-109 8.4-115.9-43.8h148.3c16.3 0 29.3-13.4 29.3-28.9zM2571 277.7c9.5-73.4 113.9-68.6 118.6 0H2571zm316.7 148.8c-31.4 0-81.6-10.5-96.6-31.9-12.4-17 2.5-39.8 21.8-39.8 16.3 0 36.8 22.9 77.7 22.9 27.4 0 40.4-11 40.4-25.8 0-39.8-142.9-7.4-142.9-102 0-40.4 35.3-75.7 98.6-75.7 31.4 0 74.1 9.9 87.6 29.4 10.8 14.8-1.4 36.2-20.9 36.2-15.1 0-26.7-17.3-66.2-17.3-22.9 0-37.8 10.5-37.8 23.8 0 35.9 142.4 6 142.4 103.1-.1 43.7-37.4 77.1-104.1 77.1zm266.8-252.4c-169.3 0-169.1 252.4 0 252.4 170.1 0 169.6-252.4 0-252.4zm0 196.1c-81.8 0-82-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm476.9 22V268.7c0-53.8-61.4-45.8-85.7-10.5v134c0 41.3-63.8 42.1-63.8 0V268.7c0-52.1-59.5-47.4-85.7-10.1v133.6c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c9.9-14.4 41.8-37.3 78.6-37.3 35.3 0 57.7 16.4 66.7 43.8 13.9-21.8 45.8-43.8 82.6-43.8 44.3 0 70.7 23.4 70.7 72.7v145.3c.5 17.3-13.5 31.4-31.9 31.4 3.5.1-31.3 1.1-31.3-31.3zM3992 291.6c0-42.4-32.4-117.5-117.9-117.5-73.2 0-127.5 56.3-127.5 126 0 77.2 58.3 126.4 131.6 126.4 31.7 0 91.5-11.5 91.5-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-110.5 8.4-117.5-43.8h149.8c16.3 0 29.1-13.4 29.3-28.9zm-180.5-13.9c9.7-74.4 115.9-68.3 120.1 0h-120.1z\"]\n};\nvar faFootballBall = {\n prefix: 'fas',\n iconName: 'football-ball',\n icon: [496, 512, [], \"f44e\", \"M481.5 60.3c-4.8-18.2-19.1-32.5-37.3-37.4C420.3 16.5 383 8.9 339.4 8L496 164.8c-.8-43.5-8.2-80.6-14.5-104.5zm-467 391.4c4.8 18.2 19.1 32.5 37.3 37.4 23.9 6.4 61.2 14 104.8 14.9L0 347.2c.8 43.5 8.2 80.6 14.5 104.5zM4.2 283.4L220.4 500c132.5-19.4 248.8-118.7 271.5-271.4L275.6 12C143.1 31.4 26.8 130.7 4.2 283.4zm317.3-123.6c3.1-3.1 8.2-3.1 11.3 0l11.3 11.3c3.1 3.1 3.1 8.2 0 11.3l-28.3 28.3 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-28.3-28.3-22.6 22.7 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L248 278.6l-22.6 22.6 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-28.3-28.3-28.3 28.3c-3.1 3.1-8.2 3.1-11.3 0l-11.3-11.3c-3.1-3.1-3.1-8.2 0-11.3l28.3-28.3-28.3-28.2c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 22.6-22.6-28.3-28.3c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 22.6-22.6-28.3-28.3c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 28.3-28.5z\"]\n};\nvar faForward = {\n prefix: 'fas',\n iconName: 'forward',\n icon: [512, 512, [], \"f04e\", \"M500.5 231.4l-192-160C287.9 54.3 256 68.6 256 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2zm-256 0l-192-160C31.9 54.3 0 68.6 0 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2z\"]\n};\nvar faFrog = {\n prefix: 'fas',\n iconName: 'frog',\n icon: [576, 512, [], \"f52e\", \"M446.53 97.43C439.67 60.23 407.19 32 368 32c-39.23 0-71.72 28.29-78.54 65.54C126.75 112.96-.5 250.12 0 416.98.11 451.9 29.08 480 64 480h304c8.84 0 16-7.16 16-16 0-17.67-14.33-32-32-32h-79.49l35.8-48.33c24.14-36.23 10.35-88.28-33.71-106.6-23.89-9.93-51.55-4.65-72.24 10.88l-32.76 24.59c-7.06 5.31-17.09 3.91-22.41-3.19-5.3-7.08-3.88-17.11 3.19-22.41l34.78-26.09c36.84-27.66 88.28-27.62 125.13 0 10.87 8.15 45.87 39.06 40.8 93.21L469.62 480H560c8.84 0 16-7.16 16-16 0-17.67-14.33-32-32-32h-53.63l-98.52-104.68 154.44-86.65A58.16 58.16 0 0 0 576 189.94c0-21.4-11.72-40.95-30.48-51.23-40.56-22.22-98.99-41.28-98.99-41.28zM368 136c-13.26 0-24-10.75-24-24 0-13.26 10.74-24 24-24 13.25 0 24 10.74 24 24 0 13.25-10.75 24-24 24z\"]\n};\nvar faFrown = {\n prefix: 'fas',\n iconName: 'frown',\n icon: [496, 512, [], \"f119\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm170.2 218.2C315.8 367.4 282.9 352 248 352s-67.8 15.4-90.2 42.2c-13.5 16.3-38.1-4.2-24.6-20.5C161.7 339.6 203.6 320 248 320s86.3 19.6 114.7 53.8c13.6 16.2-11 36.7-24.5 20.4z\"]\n};\nvar faFrownOpen = {\n prefix: 'fas',\n iconName: 'frown-open',\n icon: [496, 512, [], \"f57a\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 208c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm187.3 183.3c-31.2-9.6-59.4-15.3-75.3-15.3s-44.1 5.7-75.3 15.3c-11.5 3.5-22.5-6.3-20.5-18.1 7-40 60.1-61.2 95.8-61.2s88.8 21.3 95.8 61.2c2 11.9-9.1 21.6-20.5 18.1zM328 240c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faFunnelDollar = {\n prefix: 'fas',\n iconName: 'funnel-dollar',\n icon: [640, 512, [], \"f662\", \"M433.46 165.94l101.2-111.87C554.61 34.12 540.48 0 512.26 0H31.74C3.52 0-10.61 34.12 9.34 54.07L192 256v155.92c0 12.59 5.93 24.44 16 32l79.99 60c20.86 15.64 48.47 6.97 59.22-13.57C310.8 455.38 288 406.35 288 352c0-89.79 62.05-165.17 145.46-186.06zM480 192c-88.37 0-160 71.63-160 160s71.63 160 160 160 160-71.63 160-160-71.63-160-160-160zm16 239.88V448c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V256c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.04 44.44-42.67 45.07z\"]\n};\nvar faFutbol = {\n prefix: 'fas',\n iconName: 'futbol',\n icon: [512, 512, [], \"f1e3\", \"M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zm-48 0l-.003-.282-26.064 22.741-62.679-58.5 16.454-84.355 34.303 3.072c-24.889-34.216-60.004-60.089-100.709-73.141l13.651 31.939L256 139l-74.953-41.525 13.651-31.939c-40.631 13.028-75.78 38.87-100.709 73.141l34.565-3.073 16.192 84.355-62.678 58.5-26.064-22.741-.003.282c0 43.015 13.497 83.952 38.472 117.991l7.704-33.897 85.138 10.447 36.301 77.826-29.902 17.786c40.202 13.122 84.29 13.148 124.572 0l-29.902-17.786 36.301-77.826 85.138-10.447 7.704 33.897C442.503 339.952 456 299.015 456 256zm-248.102 69.571l-29.894-91.312L256 177.732l77.996 56.527-29.622 91.312h-96.476z\"]\n};\nvar faGamepad = {\n prefix: 'fas',\n iconName: 'gamepad',\n icon: [640, 512, [], \"f11b\", \"M480.07 96H160a160 160 0 1 0 114.24 272h91.52A160 160 0 1 0 480.07 96zM248 268a12 12 0 0 1-12 12h-52v52a12 12 0 0 1-12 12h-24a12 12 0 0 1-12-12v-52H84a12 12 0 0 1-12-12v-24a12 12 0 0 1 12-12h52v-52a12 12 0 0 1 12-12h24a12 12 0 0 1 12 12v52h52a12 12 0 0 1 12 12zm216 76a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm64-96a40 40 0 1 1 40-40 40 40 0 0 1-40 40z\"]\n};\nvar faGasPump = {\n prefix: 'fas',\n iconName: 'gas-pump',\n icon: [512, 512, [], \"f52f\", \"M336 448H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h320c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm157.2-340.7l-81-81c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-6.2 6.2-6.2 16.4 0 22.6L416 97.9V160c0 28.1 20.9 51.3 48 55.2V376c0 13.2-10.8 24-24 24s-24-10.8-24-24v-32c0-48.6-39.4-88-88-88h-8V64c0-35.3-28.7-64-64-64H96C60.7 0 32 28.7 32 64v352h288V304h8c22.1 0 40 17.9 40 40v27.8c0 37.7 27 72 64.5 75.9 43 4.3 79.5-29.5 79.5-71.7V152.6c0-17-6.8-33.3-18.8-45.3zM256 192H96V64h160v128z\"]\n};\nvar faGavel = {\n prefix: 'fas',\n iconName: 'gavel',\n icon: [512, 512, [], \"f0e3\", \"M504.971 199.362l-22.627-22.627c-9.373-9.373-24.569-9.373-33.941 0l-5.657 5.657L329.608 69.255l5.657-5.657c9.373-9.373 9.373-24.569 0-33.941L312.638 7.029c-9.373-9.373-24.569-9.373-33.941 0L154.246 131.48c-9.373 9.373-9.373 24.569 0 33.941l22.627 22.627c9.373 9.373 24.569 9.373 33.941 0l5.657-5.657 39.598 39.598-81.04 81.04-5.657-5.657c-12.497-12.497-32.758-12.497-45.255 0L9.373 412.118c-12.497 12.497-12.497 32.758 0 45.255l45.255 45.255c12.497 12.497 32.758 12.497 45.255 0l114.745-114.745c12.497-12.497 12.497-32.758 0-45.255l-5.657-5.657 81.04-81.04 39.598 39.598-5.657 5.657c-9.373 9.373-9.373 24.569 0 33.941l22.627 22.627c9.373 9.373 24.569 9.373 33.941 0l124.451-124.451c9.372-9.372 9.372-24.568 0-33.941z\"]\n};\nvar faGem = {\n prefix: 'fas',\n iconName: 'gem',\n icon: [576, 512, [], \"f3a5\", \"M485.5 0L576 160H474.9L405.7 0h79.8zm-128 0l69.2 160H149.3L218.5 0h139zm-267 0h79.8l-69.2 160H0L90.5 0zM0 192h100.7l123 251.7c1.5 3.1-2.7 5.9-5 3.3L0 192zm148.2 0h279.6l-137 318.2c-1 2.4-4.5 2.4-5.5 0L148.2 192zm204.1 251.7l123-251.7H576L357.3 446.9c-2.3 2.7-6.5-.1-5-3.2z\"]\n};\nvar faGenderless = {\n prefix: 'fas',\n iconName: 'genderless',\n icon: [288, 512, [], \"f22d\", \"M144 176c44.1 0 80 35.9 80 80s-35.9 80-80 80-80-35.9-80-80 35.9-80 80-80m0-64C64.5 112 0 176.5 0 256s64.5 144 144 144 144-64.5 144-144-64.5-144-144-144z\"]\n};\nvar faGhost = {\n prefix: 'fas',\n iconName: 'ghost',\n icon: [384, 512, [], \"f6e2\", \"M186.1.09C81.01 3.24 0 94.92 0 200.05v263.92c0 14.26 17.23 21.39 27.31 11.31l24.92-18.53c6.66-4.95 16-3.99 21.51 2.21l42.95 48.35c6.25 6.25 16.38 6.25 22.63 0l40.72-45.85c6.37-7.17 17.56-7.17 23.92 0l40.72 45.85c6.25 6.25 16.38 6.25 22.63 0l42.95-48.35c5.51-6.2 14.85-7.17 21.51-2.21l24.92 18.53c10.08 10.08 27.31 2.94 27.31-11.31V192C384 84 294.83-3.17 186.1.09zM128 224c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm128 0c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faGift = {\n prefix: 'fas',\n iconName: 'gift',\n icon: [512, 512, [], \"f06b\", \"M32 448c0 17.7 14.3 32 32 32h160V320H32v128zm256 32h160c17.7 0 32-14.3 32-32V320H288v160zm192-320h-42.1c6.2-12.1 10.1-25.5 10.1-40 0-48.5-39.5-88-88-88-41.6 0-68.5 21.3-103 68.3-34.5-47-61.4-68.3-103-68.3-48.5 0-88 39.5-88 88 0 14.5 3.8 27.9 10.1 40H32c-17.7 0-32 14.3-32 32v80c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-80c0-17.7-14.3-32-32-32zm-326.1 0c-22.1 0-40-17.9-40-40s17.9-40 40-40c19.9 0 34.6 3.3 86.1 80h-86.1zm206.1 0h-86.1c51.4-76.5 65.7-80 86.1-80 22.1 0 40 17.9 40 40s-17.9 40-40 40z\"]\n};\nvar faGifts = {\n prefix: 'fas',\n iconName: 'gifts',\n icon: [640, 512, [], \"f79c\", \"M240.6 194.1c1.9-30.8 17.3-61.2 44-79.8C279.4 103.5 268.7 96 256 96h-29.4l30.7-22c7.2-5.1 8.9-15.1 3.7-22.3l-9.3-13c-5.1-7.2-15.1-8.9-22.3-3.7l-32 22.9 11.5-30.6c3.1-8.3-1.1-17.5-9.4-20.6l-15-5.6c-8.3-3.1-17.5 1.1-20.6 9.4l-19.9 53-19.9-53.1C121 2.1 111.8-2.1 103.5 1l-15 5.6C80.2 9.7 76 19 79.2 27.2l11.5 30.6L58.6 35c-7.2-5.1-17.2-3.5-22.3 3.7l-9.3 13c-5.1 7.2-3.5 17.2 3.7 22.3l30.7 22H32c-17.7 0-32 14.3-32 32v352c0 17.7 14.3 32 32 32h168.9c-5.5-9.5-8.9-20.3-8.9-32V256c0-29.9 20.8-55 48.6-61.9zM224 480c0 17.7 14.3 32 32 32h160V384H224v96zm224 32h160c17.7 0 32-14.3 32-32v-96H448v128zm160-288h-20.4c2.6-7.6 4.4-15.5 4.4-23.8 0-35.5-27-72.2-72.1-72.2-48.1 0-75.9 47.7-87.9 75.3-12.1-27.6-39.9-75.3-87.9-75.3-45.1 0-72.1 36.7-72.1 72.2 0 8.3 1.7 16.2 4.4 23.8H256c-17.7 0-32 14.3-32 32v96h192V224h15.3l.7-.2.7.2H448v128h192v-96c0-17.7-14.3-32-32-32zm-272 0c-2.7-1.4-5.1-3-7.2-4.8-7.3-6.4-8.8-13.8-8.8-19 0-9.7 6.4-24.2 24.1-24.2 18.7 0 35.6 27.4 44.5 48H336zm199.2-4.8c-2.1 1.8-4.5 3.4-7.2 4.8h-52.6c8.8-20.3 25.8-48 44.5-48 17.7 0 24.1 14.5 24.1 24.2 0 5.2-1.5 12.6-8.8 19z\"]\n};\nvar faGlassCheers = {\n prefix: 'fas',\n iconName: 'glass-cheers',\n icon: [640, 512, [], \"f79f\", \"M639.4 433.6c-8.4-20.4-31.8-30.1-52.2-21.6l-22.1 9.2-38.7-101.9c47.9-35 64.8-100.3 34.5-152.8L474.3 16c-8-13.9-25.1-19.7-40-13.6L320 49.8 205.7 2.4c-14.9-6.2-32-.3-40 13.6L79.1 166.5C48.9 219 65.7 284.3 113.6 319.2L74.9 421.1l-22.1-9.2c-20.4-8.5-43.7 1.2-52.2 21.6-1.7 4.1.2 8.8 4.3 10.5l162.3 67.4c4.1 1.7 8.7-.2 10.4-4.3 8.4-20.4-1.2-43.8-21.6-52.3l-22.1-9.2L173.3 342c4.4.5 8.8 1.3 13.1 1.3 51.7 0 99.4-33.1 113.4-85.3l20.2-75.4 20.2 75.4c14 52.2 61.7 85.3 113.4 85.3 4.3 0 8.7-.8 13.1-1.3L506 445.6l-22.1 9.2c-20.4 8.5-30.1 31.9-21.6 52.3 1.7 4.1 6.4 6 10.4 4.3L635.1 444c4-1.7 6-6.3 4.3-10.4zM275.9 162.1l-112.1-46.5 36.5-63.4 94.5 39.2-18.9 70.7zm88.2 0l-18.9-70.7 94.5-39.2 36.5 63.4-112.1 46.5z\"]\n};\nvar faGlassMartini = {\n prefix: 'fas',\n iconName: 'glass-martini',\n icon: [512, 512, [], \"f000\", \"M502.05 57.6C523.3 36.34 508.25 0 478.2 0H33.8C3.75 0-11.3 36.34 9.95 57.6L224 271.64V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40h-56V271.64L502.05 57.6z\"]\n};\nvar faGlassMartiniAlt = {\n prefix: 'fas',\n iconName: 'glass-martini-alt',\n icon: [512, 512, [], \"f57b\", \"M502.05 57.6C523.3 36.34 508.25 0 478.2 0H33.8C3.75 0-11.3 36.34 9.95 57.6L224 271.64V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40h-56V271.64L502.05 57.6zM443.77 48l-48 48H116.24l-48-48h375.53z\"]\n};\nvar faGlassWhiskey = {\n prefix: 'fas',\n iconName: 'glass-whiskey',\n icon: [512, 512, [], \"f7a0\", \"M480 32H32C12.5 32-2.4 49.2.3 68.5l56 356.5c4.5 31.5 31.5 54.9 63.4 54.9h273c31.8 0 58.9-23.4 63.4-54.9l55.6-356.5C514.4 49.2 499.5 32 480 32zm-37.4 64l-30 192h-313L69.4 96h373.2z\"]\n};\nvar faGlasses = {\n prefix: 'fas',\n iconName: 'glasses',\n icon: [576, 512, [], \"f530\", \"M574.1 280.37L528.75 98.66c-5.91-23.7-21.59-44.05-43-55.81-21.44-11.73-46.97-14.11-70.19-6.33l-15.25 5.08c-8.39 2.79-12.92 11.86-10.12 20.24l5.06 15.18c2.79 8.38 11.85 12.91 20.23 10.12l13.18-4.39c10.87-3.62 23-3.57 33.16 1.73 10.29 5.37 17.57 14.56 20.37 25.82l38.46 153.82c-22.19-6.81-49.79-12.46-81.2-12.46-34.77 0-73.98 7.02-114.85 26.74h-73.18c-40.87-19.74-80.08-26.75-114.86-26.75-31.42 0-59.02 5.65-81.21 12.46l38.46-153.83c2.79-11.25 10.09-20.45 20.38-25.81 10.16-5.3 22.28-5.35 33.15-1.73l13.17 4.39c8.38 2.79 17.44-1.74 20.23-10.12l5.06-15.18c2.8-8.38-1.73-17.45-10.12-20.24l-15.25-5.08c-23.22-7.78-48.75-5.41-70.19 6.33-21.41 11.77-37.09 32.11-43 55.8L1.9 280.37A64.218 64.218 0 0 0 0 295.86v70.25C0 429.01 51.58 480 115.2 480h37.12c60.28 0 110.37-45.94 114.88-105.37l2.93-38.63h35.75l2.93 38.63C313.31 434.06 363.4 480 423.68 480h37.12c63.62 0 115.2-50.99 115.2-113.88v-70.25c0-5.23-.64-10.43-1.9-15.5zm-370.72 89.42c-1.97 25.91-24.4 46.21-51.06 46.21H115.2C86.97 416 64 393.62 64 366.11v-37.54c18.12-6.49 43.42-12.92 72.58-12.92 23.86 0 47.26 4.33 69.93 12.92l-3.13 41.22zM512 366.12c0 27.51-22.97 49.88-51.2 49.88h-37.12c-26.67 0-49.1-20.3-51.06-46.21l-3.13-41.22c22.67-8.59 46.08-12.92 69.95-12.92 29.12 0 54.43 6.44 72.55 12.93v37.54z\"]\n};\nvar faGlobe = {\n prefix: 'fas',\n iconName: 'globe',\n icon: [496, 512, [], \"f0ac\", \"M336.5 160C322 70.7 287.8 8 248 8s-74 62.7-88.5 152h177zM152 256c0 22.2 1.2 43.5 3.3 64h185.3c2.1-20.5 3.3-41.8 3.3-64s-1.2-43.5-3.3-64H155.3c-2.1 20.5-3.3 41.8-3.3 64zm324.7-96c-28.6-67.9-86.5-120.4-158-141.6 24.4 33.8 41.2 84.7 50 141.6h108zM177.2 18.4C105.8 39.6 47.8 92.1 19.3 160h108c8.7-56.9 25.5-107.8 49.9-141.6zM487.4 192H372.7c2.1 21 3.3 42.5 3.3 64s-1.2 43-3.3 64h114.6c5.5-20.5 8.6-41.8 8.6-64s-3.1-43.5-8.5-64zM120 256c0-21.5 1.2-43 3.3-64H8.6C3.2 212.5 0 233.8 0 256s3.2 43.5 8.6 64h114.6c-2-21-3.2-42.5-3.2-64zm39.5 96c14.5 89.3 48.7 152 88.5 152s74-62.7 88.5-152h-177zm159.3 141.6c71.4-21.2 129.4-73.7 158-141.6h-108c-8.8 56.9-25.6 107.8-50 141.6zM19.3 352c28.6 67.9 86.5 120.4 158 141.6-24.4-33.8-41.2-84.7-50-141.6h-108z\"]\n};\nvar faGlobeAfrica = {\n prefix: 'fas',\n iconName: 'globe-africa',\n icon: [496, 512, [], \"f57c\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm160 215.5v6.93c0 5.87-3.32 11.24-8.57 13.86l-15.39 7.7a15.485 15.485 0 0 1-15.53-.97l-18.21-12.14a15.52 15.52 0 0 0-13.5-1.81l-2.65.88c-9.7 3.23-13.66 14.79-7.99 23.3l13.24 19.86c2.87 4.31 7.71 6.9 12.89 6.9h8.21c8.56 0 15.5 6.94 15.5 15.5v11.34c0 3.35-1.09 6.62-3.1 9.3l-18.74 24.98c-1.42 1.9-2.39 4.1-2.83 6.43l-4.3 22.83c-.62 3.29-2.29 6.29-4.76 8.56a159.608 159.608 0 0 0-25 29.16l-13.03 19.55a27.756 27.756 0 0 1-23.09 12.36c-10.51 0-20.12-5.94-24.82-15.34a78.902 78.902 0 0 1-8.33-35.29V367.5c0-8.56-6.94-15.5-15.5-15.5h-25.88c-14.49 0-28.38-5.76-38.63-16a54.659 54.659 0 0 1-16-38.63v-14.06c0-17.19 8.1-33.38 21.85-43.7l27.58-20.69a54.663 54.663 0 0 1 32.78-10.93h.89c8.48 0 16.85 1.97 24.43 5.77l14.72 7.36c3.68 1.84 7.93 2.14 11.83.84l47.31-15.77c6.33-2.11 10.6-8.03 10.6-14.7 0-8.56-6.94-15.5-15.5-15.5h-10.09c-4.11 0-8.05-1.63-10.96-4.54l-6.92-6.92a15.493 15.493 0 0 0-10.96-4.54H199.5c-8.56 0-15.5-6.94-15.5-15.5v-4.4c0-7.11 4.84-13.31 11.74-15.04l14.45-3.61c3.74-.94 7-3.23 9.14-6.44l8.08-12.11c2.87-4.31 7.71-6.9 12.89-6.9h24.21c8.56 0 15.5-6.94 15.5-15.5v-21.7C359.23 71.63 422.86 131.02 441.93 208H423.5c-8.56 0-15.5 6.94-15.5 15.5z\"]\n};\nvar faGlobeAmericas = {\n prefix: 'fas',\n iconName: 'globe-americas',\n icon: [496, 512, [], \"f57d\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm82.29 357.6c-3.9 3.88-7.99 7.95-11.31 11.28-2.99 3-5.1 6.7-6.17 10.71-1.51 5.66-2.73 11.38-4.77 16.87l-17.39 46.85c-13.76 3-28 4.69-42.65 4.69v-27.38c1.69-12.62-7.64-36.26-22.63-51.25-6-6-9.37-14.14-9.37-22.63v-32.01c0-11.64-6.27-22.34-16.46-27.97-14.37-7.95-34.81-19.06-48.81-26.11-11.48-5.78-22.1-13.14-31.65-21.75l-.8-.72a114.792 114.792 0 0 1-18.06-20.74c-9.38-13.77-24.66-36.42-34.59-51.14 20.47-45.5 57.36-82.04 103.2-101.89l24.01 12.01C203.48 89.74 216 82.01 216 70.11v-11.3c7.99-1.29 16.12-2.11 24.39-2.42l28.3 28.3c6.25 6.25 6.25 16.38 0 22.63L264 112l-10.34 10.34c-3.12 3.12-3.12 8.19 0 11.31l4.69 4.69c3.12 3.12 3.12 8.19 0 11.31l-8 8a8.008 8.008 0 0 1-5.66 2.34h-8.99c-2.08 0-4.08.81-5.58 2.27l-9.92 9.65a8.008 8.008 0 0 0-1.58 9.31l15.59 31.19c2.66 5.32-1.21 11.58-7.15 11.58h-5.64c-1.93 0-3.79-.7-5.24-1.96l-9.28-8.06a16.017 16.017 0 0 0-15.55-3.1l-31.17 10.39a11.95 11.95 0 0 0-8.17 11.34c0 4.53 2.56 8.66 6.61 10.69l11.08 5.54c9.41 4.71 19.79 7.16 30.31 7.16s22.59 27.29 32 32h66.75c8.49 0 16.62 3.37 22.63 9.37l13.69 13.69a30.503 30.503 0 0 1 8.93 21.57 46.536 46.536 0 0 1-13.72 32.98zM417 274.25c-5.79-1.45-10.84-5-14.15-9.97l-17.98-26.97a23.97 23.97 0 0 1 0-26.62l19.59-29.38c2.32-3.47 5.5-6.29 9.24-8.15l12.98-6.49C440.2 193.59 448 223.87 448 256c0 8.67-.74 17.16-1.82 25.54L417 274.25z\"]\n};\nvar faGlobeAsia = {\n prefix: 'fas',\n iconName: 'globe-asia',\n icon: [496, 512, [], \"f57e\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm-11.34 240.23c-2.89 4.82-8.1 7.77-13.72 7.77h-.31c-4.24 0-8.31 1.69-11.31 4.69l-5.66 5.66c-3.12 3.12-3.12 8.19 0 11.31l5.66 5.66c3 3 4.69 7.07 4.69 11.31V304c0 8.84-7.16 16-16 16h-6.11c-6.06 0-11.6-3.42-14.31-8.85l-22.62-45.23c-2.44-4.88-8.95-5.94-12.81-2.08l-19.47 19.46c-3 3-7.07 4.69-11.31 4.69H50.81C49.12 277.55 48 266.92 48 256c0-110.28 89.72-200 200-200 21.51 0 42.2 3.51 61.63 9.82l-50.16 38.53c-5.11 3.41-4.63 11.06.86 13.81l10.83 5.41c5.42 2.71 8.84 8.25 8.84 14.31V216c0 4.42-3.58 8-8 8h-3.06c-3.03 0-5.8-1.71-7.15-4.42-1.56-3.12-5.96-3.29-7.76-.3l-17.37 28.95zM408 358.43c0 4.24-1.69 8.31-4.69 11.31l-9.57 9.57c-3 3-7.07 4.69-11.31 4.69h-15.16c-4.24 0-8.31-1.69-11.31-4.69l-13.01-13.01a26.767 26.767 0 0 0-25.42-7.04l-21.27 5.32c-1.27.32-2.57.48-3.88.48h-10.34c-4.24 0-8.31-1.69-11.31-4.69l-11.91-11.91a8.008 8.008 0 0 1-2.34-5.66v-10.2c0-3.27 1.99-6.21 5.03-7.43l39.34-15.74c1.98-.79 3.86-1.82 5.59-3.05l23.71-16.89a7.978 7.978 0 0 1 4.64-1.48h12.09c3.23 0 6.15 1.94 7.39 4.93l5.35 12.85a4 4 0 0 0 3.69 2.46h3.8c1.78 0 3.35-1.18 3.84-2.88l4.2-14.47c.5-1.71 2.06-2.88 3.84-2.88h6.06c2.21 0 4 1.79 4 4v12.93c0 2.12.84 4.16 2.34 5.66l11.91 11.91c3 3 4.69 7.07 4.69 11.31v24.6z\"]\n};\nvar faGlobeEurope = {\n prefix: 'fas',\n iconName: 'globe-europe',\n icon: [496, 512, [], \"f7a2\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm200 248c0 22.5-3.9 44.2-10.8 64.4h-20.3c-4.3 0-8.4-1.7-11.4-4.8l-32-32.6c-4.5-4.6-4.5-12.1.1-16.7l12.5-12.5v-8.7c0-3-1.2-5.9-3.3-8l-9.4-9.4c-2.1-2.1-5-3.3-8-3.3h-16c-6.2 0-11.3-5.1-11.3-11.3 0-3 1.2-5.9 3.3-8l9.4-9.4c2.1-2.1 5-3.3 8-3.3h32c6.2 0 11.3-5.1 11.3-11.3v-9.4c0-6.2-5.1-11.3-11.3-11.3h-36.7c-8.8 0-16 7.2-16 16v4.5c0 6.9-4.4 13-10.9 15.2l-31.6 10.5c-3.3 1.1-5.5 4.1-5.5 7.6v2.2c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8s-3.6-8-8-8H247c-3 0-5.8 1.7-7.2 4.4l-9.4 18.7c-2.7 5.4-8.2 8.8-14.3 8.8H194c-8.8 0-16-7.2-16-16V199c0-4.2 1.7-8.3 4.7-11.3l20.1-20.1c4.6-4.6 7.2-10.9 7.2-17.5 0-3.4 2.2-6.5 5.5-7.6l40-13.3c1.7-.6 3.2-1.5 4.4-2.7l26.8-26.8c2.1-2.1 3.3-5 3.3-8 0-6.2-5.1-11.3-11.3-11.3H258l-16 16v8c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8v-20c0-2.5 1.2-4.9 3.2-6.4l28.9-21.7c1.9-.1 3.8-.3 5.7-.3C358.3 56 448 145.7 448 256zM130.1 149.1c0-3 1.2-5.9 3.3-8l25.4-25.4c2.1-2.1 5-3.3 8-3.3 6.2 0 11.3 5.1 11.3 11.3v16c0 3-1.2 5.9-3.3 8l-9.4 9.4c-2.1 2.1-5 3.3-8 3.3h-16c-6.2 0-11.3-5.1-11.3-11.3zm128 306.4v-7.1c0-8.8-7.2-16-16-16h-20.2c-10.8 0-26.7-5.3-35.4-11.8l-22.2-16.7c-11.5-8.6-18.2-22.1-18.2-36.4v-23.9c0-16 8.4-30.8 22.1-39l42.9-25.7c7.1-4.2 15.2-6.5 23.4-6.5h31.2c10.9 0 21.4 3.9 29.6 10.9l43.2 37.1h18.3c8.5 0 16.6 3.4 22.6 9.4l17.3 17.3c3.4 3.4 8.1 5.3 12.9 5.3H423c-32.4 58.9-93.8 99.5-164.9 103.1z\"]\n};\nvar faGolfBall = {\n prefix: 'fas',\n iconName: 'golf-ball',\n icon: [416, 512, [], \"f450\", \"M96 416h224c0 17.7-14.3 32-32 32h-16c-17.7 0-32 14.3-32 32v20c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-20c0-17.7-14.3-32-32-32h-16c-17.7 0-32-14.3-32-32zm320-208c0 74.2-39 139.2-97.5 176h-221C39 347.2 0 282.2 0 208 0 93.1 93.1 0 208 0s208 93.1 208 208zm-180.1 43.9c18.3 0 33.1-14.8 33.1-33.1 0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1zm49.1 46.9c0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1 18.3 0 33.1-14.9 33.1-33.1zm64-64c0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1 18.3 0 33.1-14.9 33.1-33.1z\"]\n};\nvar faGopuram = {\n prefix: 'fas',\n iconName: 'gopuram',\n icon: [512, 512, [], \"f664\", \"M496 352h-16V240c0-8.8-7.2-16-16-16h-16v-80c0-8.8-7.2-16-16-16h-16V16c0-8.8-7.2-16-16-16s-16 7.2-16 16v16h-64V16c0-8.8-7.2-16-16-16s-16 7.2-16 16v16h-64V16c0-8.8-7.2-16-16-16s-16 7.2-16 16v16h-64V16c0-8.8-7.2-16-16-16S96 7.2 96 16v112H80c-8.8 0-16 7.2-16 16v80H48c-8.8 0-16 7.2-16 16v112H16c-8.8 0-16 7.2-16 16v128c0 8.8 7.2 16 16 16h80V352h32V224h32v-96h32v96h-32v128h-32v160h80v-80c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16v80h80V352h-32V224h-32v-96h32v96h32v128h32v160h80c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16zM232 176c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v48h-48zm56 176h-64v-64c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16z\"]\n};\nvar faGraduationCap = {\n prefix: 'fas',\n iconName: 'graduation-cap',\n icon: [640, 512, [], \"f19d\", \"M622.34 153.2L343.4 67.5c-15.2-4.67-31.6-4.67-46.79 0L17.66 153.2c-23.54 7.23-23.54 38.36 0 45.59l48.63 14.94c-10.67 13.19-17.23 29.28-17.88 46.9C38.78 266.15 32 276.11 32 288c0 10.78 5.68 19.85 13.86 25.65L20.33 428.53C18.11 438.52 25.71 448 35.94 448h56.11c10.24 0 17.84-9.48 15.62-19.47L82.14 313.65C90.32 307.85 96 298.78 96 288c0-11.57-6.47-21.25-15.66-26.87.76-15.02 8.44-28.3 20.69-36.72L296.6 284.5c9.06 2.78 26.44 6.25 46.79 0l278.95-85.7c23.55-7.24 23.55-38.36 0-45.6zM352.79 315.09c-28.53 8.76-52.84 3.92-65.59 0l-145.02-44.55L128 384c0 35.35 85.96 64 192 64s192-28.65 192-64l-14.18-113.47-145.03 44.56z\"]\n};\nvar faGreaterThan = {\n prefix: 'fas',\n iconName: 'greater-than',\n icon: [384, 512, [], \"f531\", \"M365.52 209.85L59.22 67.01c-16.06-7.49-35.15-.54-42.64 15.52L3.01 111.61c-7.49 16.06-.54 35.15 15.52 42.64L236.96 256.1 18.49 357.99C2.47 365.46-4.46 384.5 3.01 400.52l13.52 29C24 445.54 43.04 452.47 59.06 445l306.47-142.91a32.003 32.003 0 0 0 18.48-29v-34.23c-.01-12.45-7.21-23.76-18.49-29.01z\"]\n};\nvar faGreaterThanEqual = {\n prefix: 'fas',\n iconName: 'greater-than-equal',\n icon: [448, 512, [], \"f532\", \"M55.22 107.69l175.56 68.09-175.44 68.05c-18.39 6.03-27.88 24.39-21.2 41l12.09 30.08c6.68 16.61 26.99 25.19 45.38 19.15L393.02 214.2c13.77-4.52 22.98-16.61 22.98-30.17v-15.96c0-13.56-9.21-25.65-22.98-30.17L91.3 17.92c-18.29-6-38.51 2.53-45.15 19.06L34.12 66.9c-6.64 16.53 2.81 34.79 21.1 40.79zM424 400H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h400c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z\"]\n};\nvar faGrimace = {\n prefix: 'fas',\n iconName: 'grimace',\n icon: [496, 512, [], \"f57f\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM144 400h-8c-17.7 0-32-14.3-32-32v-8h40v40zm0-56h-40v-8c0-17.7 14.3-32 32-32h8v40zm-8-136c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm72 192h-48v-40h48v40zm0-56h-48v-40h48v40zm64 56h-48v-40h48v40zm0-56h-48v-40h48v40zm64 56h-48v-40h48v40zm0-56h-48v-40h48v40zm-8-104c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm64 128c0 17.7-14.3 32-32 32h-8v-40h40v8zm0-24h-40v-40h8c17.7 0 32 14.3 32 32v8z\"]\n};\nvar faGrin = {\n prefix: 'fas',\n iconName: 'grin',\n icon: [496, 512, [], \"f580\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm80 256c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.3-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinAlt = {\n prefix: 'fas',\n iconName: 'grin-alt',\n icon: [496, 512, [], \"f581\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm63.7 128.7c7.6-11.4 24.7-11.7 32.7 0 12.4 18.4 15.1 36.9 15.7 55.3-.5 18.4-3.3 36.9-15.7 55.3-7.6 11.4-24.7 11.7-32.7 0-12.4-18.4-15.1-36.9-15.7-55.3.5-18.4 3.3-36.9 15.7-55.3zm-160 0c7.6-11.4 24.7-11.7 32.7 0 12.4 18.4 15.1 36.9 15.7 55.3-.5 18.4-3.3 36.9-15.7 55.3-7.6 11.4-24.7 11.7-32.7 0-12.4-18.4-15.1-36.9-15.7-55.3.5-18.4 3.3-36.9 15.7-55.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinBeam = {\n prefix: 'fas',\n iconName: 'grin-beam',\n icon: [496, 512, [], \"f582\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 144c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.9 9.4-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinBeamSweat = {\n prefix: 'fas',\n iconName: 'grin-beam-sweat',\n icon: [504, 512, [], \"f583\", \"M456 128c26.5 0 48-21 48-47 0-20-28.5-60.4-41.6-77.8-3.2-4.3-9.6-4.3-12.8 0C436.5 20.6 408 61 408 81c0 26 21.5 47 48 47zm0 32c-44.1 0-80-35.4-80-79 0-4.4.3-14.2 8.1-32.2C345 23.1 298.3 8 248 8 111 8 0 119 0 256s111 248 248 248 248-111 248-248c0-35.1-7.4-68.4-20.5-98.6-6.3 1.5-12.7 2.6-19.5 2.6zm-128-8c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.2 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinHearts = {\n prefix: 'fas',\n iconName: 'grin-hearts',\n icon: [496, 512, [], \"f584\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM90.4 183.6c6.7-17.6 26.7-26.7 44.9-21.9l7.1 1.9 2-7.1c5-18.1 22.8-30.9 41.5-27.9 21.4 3.4 34.4 24.2 28.8 44.5L195.3 243c-1.2 4.5-5.9 7.2-10.5 6l-70.2-18.2c-20.4-5.4-31.9-27-24.2-47.2zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.2-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.6 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3zm133.4-201.3l-70.2 18.2c-4.5 1.2-9.2-1.5-10.5-6L281.3 173c-5.6-20.3 7.4-41.1 28.8-44.5 18.6-3 36.4 9.8 41.5 27.9l2 7.1 7.1-1.9c18.2-4.7 38.2 4.3 44.9 21.9 7.7 20.3-3.8 41.9-24.2 47.2z\"]\n};\nvar faGrinSquint = {\n prefix: 'fas',\n iconName: 'grin-squint',\n icon: [496, 512, [], \"f585\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 189.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 208l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.9 9.4-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.2 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinSquintTears = {\n prefix: 'fas',\n iconName: 'grin-squint-tears',\n icon: [512, 512, [], \"f586\", \"M409.6 111.9c22.6-3.2 73.5-12 88.3-26.8 19.2-19.2 18.9-50.6-.7-70.2S446-5 426.9 14.2c-14.8 14.8-23.5 65.7-26.8 88.3-.8 5.5 3.9 10.2 9.5 9.4zM102.4 400.1c-22.6 3.2-73.5 12-88.3 26.8-19.1 19.1-18.8 50.6.8 70.2s51 19.9 70.2.7c14.8-14.8 23.5-65.7 26.8-88.3.8-5.5-3.9-10.2-9.5-9.4zm311.7-256.5c-33 3.9-48.6-25.1-45.7-45.7 3.4-24 7.4-42.1 11.5-56.5C285.1-13.4 161.8-.5 80.6 80.6-.5 161.7-13.4 285 41.4 379.9c14.4-4.1 32.4-8 56.5-11.5 33.2-3.9 48.6 25.2 45.7 45.7-3.4 24-7.4 42.1-11.5 56.5 94.8 54.8 218.1 41.9 299.3-39.2s94-204.4 39.2-299.3c-14.4 4.1-32.5 8-56.5 11.5zM255.7 106c3.3-13.2 22.4-11.5 23.6 1.8l4.8 52.3 52.3 4.8c13.4 1.2 14.9 20.3 1.8 23.6l-90.5 22.6c-8.9 2.2-16.7-5.9-14.5-14.5l22.5-90.6zm-90.9 230.3L160 284l-52.3-4.8c-13.4-1.2-14.9-20.3-1.8-23.6l90.5-22.6c8.8-2.2 16.7 5.8 14.5 14.5L188.3 338c-3.1 13.2-22.2 11.7-23.5-1.7zm215.7 44.2c-29.3 29.3-75.7 50.4-116.7 50.4-18.9 0-36.6-4.5-51-14.7-9.8-6.9-8.7-21.8 2-27.2 28.3-14.6 63.9-42.4 97.8-76.3s61.7-69.6 76.3-97.8c5.4-10.5 20.2-11.9 27.3-2 32.3 45.3 7.1 124.7-35.7 167.6z\"]\n};\nvar faGrinStars = {\n prefix: 'fas',\n iconName: 'grin-stars',\n icon: [496, 512, [], \"f587\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM94.6 168.9l34.9-5 15.5-31.6c2.9-5.8 11-5.8 13.9 0l15.5 31.6 34.9 5c6.2 1 8.9 8.6 4.3 13.2l-25.4 24.6 6 34.9c1 6.2-5.3 11-11 7.9L152 233.3l-31.3 16.3c-5.7 3.1-12-1.7-11-7.9l6-34.9-25.4-24.6c-4.6-4.7-1.9-12.3 4.3-13.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3zm157.7-249.9l-25.4 24.6 6 34.9c1 6.2-5.3 11-11 7.9L344 233.3l-31.3 16.3c-5.7 3.1-12-1.7-11-7.9l6-34.9-25.4-24.6c-4.5-4.6-1.9-12.2 4.3-13.2l34.9-5 15.5-31.6c2.9-5.8 11-5.8 13.9 0l15.5 31.6 34.9 5c6.3.9 9 8.5 4.4 13.1z\"]\n};\nvar faGrinTears = {\n prefix: 'fas',\n iconName: 'grin-tears',\n icon: [640, 512, [], \"f588\", \"M102.4 256.1c-22.6 3.2-73.5 12-88.3 26.8-19.1 19.1-18.8 50.6.8 70.2s51 19.9 70.2.7c14.8-14.8 23.5-65.7 26.8-88.3.8-5.5-3.9-10.2-9.5-9.4zm523.4 26.8c-14.8-14.8-65.7-23.5-88.3-26.8-5.5-.8-10.3 3.9-9.5 9.5 3.2 22.6 12 73.5 26.8 88.3 19.2 19.2 50.6 18.9 70.2-.7s20-51.2.8-70.3zm-129.4-12.8c-3.8-26.6 19.1-49.5 45.7-45.7 8.9 1.3 16.8 2.7 24.3 4.1C552.7 104.5 447.7 8 320 8S87.3 104.5 73.6 228.5c7.5-1.4 15.4-2.8 24.3-4.1 33.2-3.9 48.6 25.3 45.7 45.7-11.8 82.3-29.9 100.4-35.8 106.4-.9.9-2 1.6-3 2.5 42.7 74.6 123 125 215.2 125s172.5-50.4 215.2-125.1c-1-.9-2.1-1.5-3-2.5-5.9-5.9-24-24-35.8-106.3zM400 152c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.7 9.2-21.6 20.7-17.9C227.1 330.5 272 336 320 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinTongue = {\n prefix: 'fas',\n iconName: 'grin-tongue',\n icon: [496, 512, [], \"f589\", \"M248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.6 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-34.9 134.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3z\"]\n};\nvar faGrinTongueSquint = {\n prefix: 'fas',\n iconName: 'grin-tongue-squint',\n icon: [496, 512, [], \"f58a\", \"M293.1 374.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3zM248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.2-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-33.8 210.3l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.7 4.7 7.7 15.9 0 20.6zm163 30c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.8-4.7-7.8-15.9 0-20.6l80-48c11.7-6.9 23.9 7.7 15.4 18L343.6 208l33.6 40.3z\"]\n};\nvar faGrinTongueWink = {\n prefix: 'fas',\n iconName: 'grin-tongue-wink',\n icon: [496, 512, [], \"f58b\", \"M344 184c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zM248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-56 225l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L112 233c-8.5 7.4-21.6.3-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S208 197 212 222.2c1.6 11.1-11.6 18.2-20 10.8zm152 39c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm-50.9 102.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3z\"]\n};\nvar faGrinWink = {\n prefix: 'fas',\n iconName: 'grin-wink',\n icon: [496, 512, [], \"f58c\", \"M0 256c0 137 111 248 248 248s248-111 248-248S385 8 248 8 0 119 0 256zm200-48c0 17.7-14.3 32-32 32s-32-14.3-32-32 14.3-32 32-32 32 14.3 32 32zm168 25l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L288 233c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S384 197 388 222.2c1.6 11-11.5 18.2-20 10.8zm-243.1 87.8C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.3-3.7 22.6 6 20.7 17.9-9.2 55-83.2 93.3-143.8 93.3s-134.5-38.3-143.8-93.3c-2-11.9 9.3-21.6 20.7-17.9z\"]\n};\nvar faGripHorizontal = {\n prefix: 'fas',\n iconName: 'grip-horizontal',\n icon: [448, 512, [], \"f58d\", \"M96 288H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zM96 96H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z\"]\n};\nvar faGripLines = {\n prefix: 'fas',\n iconName: 'grip-lines',\n icon: [512, 512, [], \"f7a4\", \"M496 288H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-128H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z\"]\n};\nvar faGripLinesVertical = {\n prefix: 'fas',\n iconName: 'grip-lines-vertical',\n icon: [256, 512, [], \"f7a5\", \"M96 496V16c0-8.8-7.2-16-16-16H48c-8.8 0-16 7.2-16 16v480c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16zm128 0V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v480c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16z\"]\n};\nvar faGripVertical = {\n prefix: 'fas',\n iconName: 'grip-vertical',\n icon: [320, 512, [], \"f58e\", \"M96 32H32C14.33 32 0 46.33 0 64v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zm0 160H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm0 160H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zM288 32h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zm0 160h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm0 160h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z\"]\n};\nvar faGuitar = {\n prefix: 'fas',\n iconName: 'guitar',\n icon: [512, 512, [], \"f7a6\", \"M502.63 39L473 9.37a32 32 0 0 0-45.26 0L381.46 55.7a35.14 35.14 0 0 0-8.53 13.79L360.77 106l-76.26 76.26c-12.16-8.76-25.5-15.74-40.1-19.14-33.45-7.78-67-.88-89.88 22a82.45 82.45 0 0 0-20.24 33.47c-6 18.56-23.21 32.69-42.15 34.46-23.7 2.27-45.73 11.45-62.61 28.44C-16.11 327-7.9 409 47.58 464.45S185 528 230.56 482.52c17-16.88 26.16-38.9 28.45-62.71 1.76-18.85 15.89-36.13 34.43-42.14a82.6 82.6 0 0 0 33.48-20.25c22.87-22.88 29.74-56.36 22-89.75-3.39-14.64-10.37-28-19.16-40.2L406 151.23l36.48-12.16a35.14 35.14 0 0 0 13.79-8.53l46.33-46.32a32 32 0 0 0 .03-45.22zM208 352a48 48 0 1 1 48-48 48 48 0 0 1-48 48z\"]\n};\nvar faHSquare = {\n prefix: 'fas',\n iconName: 'h-square',\n icon: [448, 512, [], \"f0fd\", \"M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zm-112 48h-32c-8.837 0-16 7.163-16 16v80H160v-80c0-8.837-7.163-16-16-16h-32c-8.837 0-16 7.163-16 16v224c0 8.837 7.163 16 16 16h32c8.837 0 16-7.163 16-16v-80h128v80c0 8.837 7.163 16 16 16h32c8.837 0 16-7.163 16-16V144c0-8.837-7.163-16-16-16z\"]\n};\nvar faHamburger = {\n prefix: 'fas',\n iconName: 'hamburger',\n icon: [512, 512, [], \"f805\", \"M464 256H48a48 48 0 0 0 0 96h416a48 48 0 0 0 0-96zm16 128H32a16 16 0 0 0-16 16v16a64 64 0 0 0 64 64h352a64 64 0 0 0 64-64v-16a16 16 0 0 0-16-16zM58.64 224h394.72c34.57 0 54.62-43.9 34.82-75.88C448 83.2 359.55 32.1 256 32c-103.54.1-192 51.2-232.18 116.11C4 180.09 24.07 224 58.64 224zM384 112a16 16 0 1 1-16 16 16 16 0 0 1 16-16zM256 80a16 16 0 1 1-16 16 16 16 0 0 1 16-16zm-128 32a16 16 0 1 1-16 16 16 16 0 0 1 16-16z\"]\n};\nvar faHammer = {\n prefix: 'fas',\n iconName: 'hammer',\n icon: [576, 512, [], \"f6e3\", \"M571.31 193.94l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31-28.9-28.9c5.63-21.31.36-44.9-16.35-61.61l-45.25-45.25c-62.48-62.48-163.79-62.48-226.28 0l90.51 45.25v18.75c0 16.97 6.74 33.25 18.75 45.25l49.14 49.14c16.71 16.71 40.3 21.98 61.61 16.35l28.9 28.9-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l90.51-90.51c6.23-6.24 6.23-16.37-.02-22.62zm-286.72-15.2c-3.7-3.7-6.84-7.79-9.85-11.95L19.64 404.96c-25.57 23.88-26.26 64.19-1.53 88.93s65.05 24.05 88.93-1.53l238.13-255.07c-3.96-2.91-7.9-5.87-11.44-9.41l-49.14-49.14z\"]\n};\nvar faHamsa = {\n prefix: 'fas',\n iconName: 'hamsa',\n icon: [512, 512, [], \"f665\", \"M509.34 307.25C504.28 295.56 492.75 288 480 288h-64V80c0-22-18-40-40-40s-40 18-40 40v134c0 5.52-4.48 10-10 10h-20c-5.52 0-10-4.48-10-10V40c0-22-18-40-40-40s-40 18-40 40v174c0 5.52-4.48 10-10 10h-20c-5.52 0-10-4.48-10-10V80c0-22-18-40-40-40S96 58 96 80v208H32c-12.75 0-24.28 7.56-29.34 19.25a31.966 31.966 0 0 0 5.94 34.58l102.69 110.03C146.97 490.08 199.69 512 256 512s109.03-21.92 144.72-60.14L503.4 341.83a31.966 31.966 0 0 0 5.94-34.58zM256 416c-53.02 0-96-64-96-64s42.98-64 96-64 96 64 96 64-42.98 64-96 64zm0-96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z\"]\n};\nvar faHandHolding = {\n prefix: 'fas',\n iconName: 'hand-holding',\n icon: [576, 512, [], \"f4bd\", \"M565.3 328.1c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z\"]\n};\nvar faHandHoldingHeart = {\n prefix: 'fas',\n iconName: 'hand-holding-heart',\n icon: [576, 512, [], \"f4be\", \"M275.3 250.5c7 7.4 18.4 7.4 25.5 0l108.9-114.2c31.6-33.2 29.8-88.2-5.6-118.8-30.8-26.7-76.7-21.9-104.9 7.7L288 36.9l-11.1-11.6C248.7-4.4 202.8-9.2 172 17.5c-35.3 30.6-37.2 85.6-5.6 118.8l108.9 114.2zm290 77.6c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z\"]\n};\nvar faHandHoldingMedical = {\n prefix: 'fas',\n iconName: 'hand-holding-medical',\n icon: [576, 512, [], \"e05c\", \"M159.88,175.82h64v64a16,16,0,0,0,16,16h64a16,16,0,0,0,16-16v-64h64a16,16,0,0,0,16-16v-64a16,16,0,0,0-16-16h-64v-64a16,16,0,0,0-16-16h-64a16,16,0,0,0-16,16v64h-64a16,16,0,0,0-16,16v64A16,16,0,0,0,159.88,175.82ZM568.07,336.13a39.91,39.91,0,0,0-55.93-8.47L392.47,415.84H271.86a16,16,0,0,1,0-32H350.1c16,0,30.75-10.87,33.37-26.61a32.06,32.06,0,0,0-31.62-37.38h-160a117.7,117.7,0,0,0-74.12,26.25l-46.5,37.74H15.87a16.11,16.11,0,0,0-16,16v96a16.11,16.11,0,0,0,16,16h347a104.8,104.8,0,0,0,61.7-20.27L559.6,392A40,40,0,0,0,568.07,336.13Z\"]\n};\nvar faHandHoldingUsd = {\n prefix: 'fas',\n iconName: 'hand-holding-usd',\n icon: [576, 512, [], \"f4c0\", \"M271.06,144.3l54.27,14.3a8.59,8.59,0,0,1,6.63,8.1c0,4.6-4.09,8.4-9.12,8.4h-35.6a30,30,0,0,1-11.19-2.2c-5.24-2.2-11.28-1.7-15.3,2l-19,17.5a11.68,11.68,0,0,0-2.25,2.66,11.42,11.42,0,0,0,3.88,15.74,83.77,83.77,0,0,0,34.51,11.5V240c0,8.8,7.83,16,17.37,16h17.37c9.55,0,17.38-7.2,17.38-16V222.4c32.93-3.6,57.84-31,53.5-63-3.15-23-22.46-41.3-46.56-47.7L282.68,97.4a8.59,8.59,0,0,1-6.63-8.1c0-4.6,4.09-8.4,9.12-8.4h35.6A30,30,0,0,1,332,83.1c5.23,2.2,11.28,1.7,15.3-2l19-17.5A11.31,11.31,0,0,0,368.47,61a11.43,11.43,0,0,0-3.84-15.78,83.82,83.82,0,0,0-34.52-11.5V16c0-8.8-7.82-16-17.37-16H295.37C285.82,0,278,7.2,278,16V33.6c-32.89,3.6-57.85,31-53.51,63C227.63,119.6,247,137.9,271.06,144.3ZM565.27,328.1c-11.8-10.7-30.2-10-42.6,0L430.27,402a63.64,63.64,0,0,1-40,14H272a16,16,0,0,1,0-32h78.29c15.9,0,30.71-10.9,33.25-26.6a31.2,31.2,0,0,0,.46-5.46A32,32,0,0,0,352,320H192a117.66,117.66,0,0,0-74.1,26.29L71.4,384H16A16,16,0,0,0,0,400v96a16,16,0,0,0,16,16H372.77a64,64,0,0,0,40-14L564,377a32,32,0,0,0,1.28-48.9Z\"]\n};\nvar faHandHoldingWater = {\n prefix: 'fas',\n iconName: 'hand-holding-water',\n icon: [576, 512, [], \"f4c1\", \"M288 256c53 0 96-42.1 96-94 0-40-57.1-120.7-83.2-155.6-6.4-8.5-19.2-8.5-25.6 0C249.1 41.3 192 122 192 162c0 51.9 43 94 96 94zm277.3 72.1c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z\"]\n};\nvar faHandLizard = {\n prefix: 'fas',\n iconName: 'hand-lizard',\n icon: [576, 512, [], \"f258\", \"M384 480h192V363.778a95.998 95.998 0 0 0-14.833-51.263L398.127 54.368A48 48 0 0 0 357.544 32H24C10.745 32 0 42.745 0 56v16c0 30.928 25.072 56 56 56h229.981c12.844 0 21.556 13.067 16.615 24.923l-21.41 51.385A32 32 0 0 1 251.648 224H128c-35.346 0-64 28.654-64 64v8c0 13.255 10.745 24 24 24h147.406a47.995 47.995 0 0 1 25.692 7.455l111.748 70.811A24.001 24.001 0 0 1 384 418.539V480z\"]\n};\nvar faHandMiddleFinger = {\n prefix: 'fas',\n iconName: 'hand-middle-finger',\n icon: [512, 512, [], \"f806\", \"M479.93 317.12a37.33 37.33 0 0 0-28.28-36.19L416 272v-49.59c0-11.44-9.69-21.29-23.15-23.54l-38.4-6.4C336.63 189.5 320 200.86 320 216v32a8 8 0 0 1-16 0V50c0-26.28-20.25-49.2-46.52-50A48 48 0 0 0 208 48v200a8 8 0 0 1-16 0v-32c0-15.15-16.63-26.51-34.45-23.54l-30.68 5.12c-18 3-30.87 16.12-30.87 31.38V376a8 8 0 0 1-16 0v-76l-27.36 15A37.34 37.34 0 0 0 32 348.4v73.47a37.31 37.31 0 0 0 10.93 26.39l30.93 30.93A112 112 0 0 0 153.05 512h215A112 112 0 0 0 480 400z\"]\n};\nvar faHandPaper = {\n prefix: 'fas',\n iconName: 'hand-paper',\n icon: [448, 512, [], \"f256\", \"M408.781 128.007C386.356 127.578 368 146.36 368 168.79V256h-8V79.79c0-22.43-18.356-41.212-40.781-40.783C297.488 39.423 280 57.169 280 79v177h-8V40.79C272 18.36 253.644-.422 231.219.007 209.488.423 192 18.169 192 40v216h-8V80.79c0-22.43-18.356-41.212-40.781-40.783C121.488 40.423 104 58.169 104 80v235.992l-31.648-43.519c-12.993-17.866-38.009-21.817-55.877-8.823-17.865 12.994-21.815 38.01-8.822 55.877l125.601 172.705A48 48 0 0 0 172.073 512h197.59c22.274 0 41.622-15.324 46.724-37.006l26.508-112.66a192.011 192.011 0 0 0 5.104-43.975V168c.001-21.831-17.487-39.577-39.218-39.993z\"]\n};\nvar faHandPeace = {\n prefix: 'fas',\n iconName: 'hand-peace',\n icon: [448, 512, [], \"f25b\", \"M408 216c-22.092 0-40 17.909-40 40h-8v-32c0-22.091-17.908-40-40-40s-40 17.909-40 40v32h-8V48c0-26.51-21.49-48-48-48s-48 21.49-48 48v208h-13.572L92.688 78.449C82.994 53.774 55.134 41.63 30.461 51.324 5.787 61.017-6.356 88.877 3.337 113.551l74.765 190.342-31.09 24.872c-15.381 12.306-19.515 33.978-9.741 51.081l64 112A39.998 39.998 0 0 0 136 512h240c18.562 0 34.686-12.77 38.937-30.838l32-136A39.97 39.97 0 0 0 448 336v-80c0-22.091-17.908-40-40-40z\"]\n};\nvar faHandPointDown = {\n prefix: 'fas',\n iconName: 'hand-point-down',\n icon: [384, 512, [], \"f0a7\", \"M91.826 467.2V317.966c-8.248 5.841-16.558 10.57-24.918 14.153C35.098 345.752-.014 322.222 0 288c.008-18.616 10.897-32.203 29.092-40 28.286-12.122 64.329-78.648 77.323-107.534 7.956-17.857 25.479-28.453 43.845-28.464l.001-.002h171.526c11.812 0 21.897 8.596 23.703 20.269 7.25 46.837 38.483 61.76 38.315 123.731-.007 2.724.195 13.254.195 16 0 50.654-22.122 81.574-71.263 72.6-9.297 18.597-39.486 30.738-62.315 16.45-21.177 24.645-53.896 22.639-70.944 6.299V467.2c0 24.15-20.201 44.8-43.826 44.8-23.283 0-43.826-21.35-43.826-44.8zM112 72V24c0-13.255 10.745-24 24-24h192c13.255 0 24 10.745 24 24v48c0 13.255-10.745 24-24 24H136c-13.255 0-24-10.745-24-24zm212-24c0-11.046-8.954-20-20-20s-20 8.954-20 20 8.954 20 20 20 20-8.954 20-20z\"]\n};\nvar faHandPointLeft = {\n prefix: 'fas',\n iconName: 'hand-point-left',\n icon: [512, 512, [], \"f0a5\", \"M44.8 155.826h149.234c-5.841-8.248-10.57-16.558-14.153-24.918C166.248 99.098 189.778 63.986 224 64c18.616.008 32.203 10.897 40 29.092 12.122 28.286 78.648 64.329 107.534 77.323 17.857 7.956 28.453 25.479 28.464 43.845l.002.001v171.526c0 11.812-8.596 21.897-20.269 23.703-46.837 7.25-61.76 38.483-123.731 38.315-2.724-.007-13.254.195-16 .195-50.654 0-81.574-22.122-72.6-71.263-18.597-9.297-30.738-39.486-16.45-62.315-24.645-21.177-22.639-53.896-6.299-70.944H44.8c-24.15 0-44.8-20.201-44.8-43.826 0-23.283 21.35-43.826 44.8-43.826zM440 176h48c13.255 0 24 10.745 24 24v192c0 13.255-10.745 24-24 24h-48c-13.255 0-24-10.745-24-24V200c0-13.255 10.745-24 24-24zm24 212c11.046 0 20-8.954 20-20s-8.954-20-20-20-20 8.954-20 20 8.954 20 20 20z\"]\n};\nvar faHandPointRight = {\n prefix: 'fas',\n iconName: 'hand-point-right',\n icon: [512, 512, [], \"f0a4\", \"M512 199.652c0 23.625-20.65 43.826-44.8 43.826h-99.851c16.34 17.048 18.346 49.766-6.299 70.944 14.288 22.829 2.147 53.017-16.45 62.315C353.574 425.878 322.654 448 272 448c-2.746 0-13.276-.203-16-.195-61.971.168-76.894-31.065-123.731-38.315C120.596 407.683 112 397.599 112 385.786V214.261l.002-.001c.011-18.366 10.607-35.889 28.464-43.845 28.886-12.994 95.413-49.038 107.534-77.323 7.797-18.194 21.384-29.084 40-29.092 34.222-.014 57.752 35.098 44.119 66.908-3.583 8.359-8.312 16.67-14.153 24.918H467.2c23.45 0 44.8 20.543 44.8 43.826zM96 200v192c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V200c0-13.255 10.745-24 24-24h48c13.255 0 24 10.745 24 24zM68 368c0-11.046-8.954-20-20-20s-20 8.954-20 20 8.954 20 20 20 20-8.954 20-20z\"]\n};\nvar faHandPointUp = {\n prefix: 'fas',\n iconName: 'hand-point-up',\n icon: [384, 512, [], \"f0a6\", \"M135.652 0c23.625 0 43.826 20.65 43.826 44.8v99.851c17.048-16.34 49.766-18.346 70.944 6.299 22.829-14.288 53.017-2.147 62.315 16.45C361.878 158.426 384 189.346 384 240c0 2.746-.203 13.276-.195 16 .168 61.971-31.065 76.894-38.315 123.731C343.683 391.404 333.599 400 321.786 400H150.261l-.001-.002c-18.366-.011-35.889-10.607-43.845-28.464C93.421 342.648 57.377 276.122 29.092 264 10.897 256.203.008 242.616 0 224c-.014-34.222 35.098-57.752 66.908-44.119 8.359 3.583 16.67 8.312 24.918 14.153V44.8c0-23.45 20.543-44.8 43.826-44.8zM136 416h192c13.255 0 24 10.745 24 24v48c0 13.255-10.745 24-24 24H136c-13.255 0-24-10.745-24-24v-48c0-13.255 10.745-24 24-24zm168 28c-11.046 0-20 8.954-20 20s8.954 20 20 20 20-8.954 20-20-8.954-20-20-20z\"]\n};\nvar faHandPointer = {\n prefix: 'fas',\n iconName: 'hand-pointer',\n icon: [448, 512, [], \"f25a\", \"M448 240v96c0 3.084-.356 6.159-1.063 9.162l-32 136C410.686 499.23 394.562 512 376 512H168a40.004 40.004 0 0 1-32.35-16.473l-127.997-176c-12.993-17.866-9.043-42.883 8.822-55.876 17.867-12.994 42.884-9.043 55.877 8.823L104 315.992V40c0-22.091 17.908-40 40-40s40 17.909 40 40v200h8v-40c0-22.091 17.908-40 40-40s40 17.909 40 40v40h8v-24c0-22.091 17.908-40 40-40s40 17.909 40 40v24h8c0-22.091 17.908-40 40-40s40 17.909 40 40zm-256 80h-8v96h8v-96zm88 0h-8v96h8v-96zm88 0h-8v96h8v-96z\"]\n};\nvar faHandRock = {\n prefix: 'fas',\n iconName: 'hand-rock',\n icon: [512, 512, [], \"f255\", \"M464.8 80c-26.9-.4-48.8 21.2-48.8 48h-8V96.8c0-26.3-20.9-48.3-47.2-48.8-26.9-.4-48.8 21.2-48.8 48v32h-8V80.8c0-26.3-20.9-48.3-47.2-48.8-26.9-.4-48.8 21.2-48.8 48v48h-8V96.8c0-26.3-20.9-48.3-47.2-48.8-26.9-.4-48.8 21.2-48.8 48v136l-8-7.1v-48.1c0-26.3-20.9-48.3-47.2-48.8C21.9 127.6 0 149.2 0 176v66.4c0 27.4 11.7 53.5 32.2 71.8l111.7 99.3c10.2 9.1 16.1 22.2 16.1 35.9v6.7c0 13.3 10.7 24 24 24h240c13.3 0 24-10.7 24-24v-2.9c0-12.8 2.6-25.5 7.5-37.3l49-116.3c5-11.8 7.5-24.5 7.5-37.3V128.8c0-26.3-20.9-48.4-47.2-48.8z\"]\n};\nvar faHandScissors = {\n prefix: 'fas',\n iconName: 'hand-scissors',\n icon: [512, 512, [], \"f257\", \"M216 440c0-22.092 17.909-40 40-40v-8h-32c-22.091 0-40-17.908-40-40s17.909-40 40-40h32v-8H48c-26.51 0-48-21.49-48-48s21.49-48 48-48h208v-13.572l-177.551-69.74c-24.674-9.694-36.818-37.555-27.125-62.228 9.693-24.674 37.554-36.817 62.228-27.124l190.342 74.765 24.872-31.09c12.306-15.381 33.978-19.515 51.081-9.741l112 64A40.002 40.002 0 0 1 512 168v240c0 18.562-12.77 34.686-30.838 38.937l-136 32A39.982 39.982 0 0 1 336 480h-80c-22.091 0-40-17.908-40-40z\"]\n};\nvar faHandSparkles = {\n prefix: 'fas',\n iconName: 'hand-sparkles',\n icon: [640, 512, [], \"e05d\", \"M106.66,170.64l.09,0,49.55-20.65a7.32,7.32,0,0,0,3.68-6h0a7.29,7.29,0,0,0-3.68-6l-49.57-20.67-.07,0L86,67.68a6.66,6.66,0,0,0-11.92,0l-20.7,49.63-.05,0L3.7,138A7.29,7.29,0,0,0,0,144H0a7.32,7.32,0,0,0,3.68,6L53.27,170.6l.07,0L74,220.26a6.65,6.65,0,0,0,11.92,0l20.69-49.62ZM471.38,467.41l-1-.42-1-.5a38.67,38.67,0,0,1,0-69.14l1-.49,1-.43,37.49-15.63,15.63-37.48.41-1,.47-.95c3.85-7.74,10.58-13.63,18.35-17.34,0-1.33.25-2.69.27-4V144a32,32,0,0,0-64,0v72a8,8,0,0,1-8,8H456a8,8,0,0,1-8-8V64a32,32,0,0,0-64,0V216a8,8,0,0,1-8,8H360a8,8,0,0,1-8-8V32a32,32,0,0,0-64,0V216a8,8,0,0,1-8,8H264a8,8,0,0,1-8-8V64a32,32,0,0,0-64,0v241l-23.59-32.49a40,40,0,0,0-64.71,47.09L229.3,492.21A48.07,48.07,0,0,0,268.09,512H465.7c19.24,0,35.65-11.73,43.24-28.79l-.07-.17ZM349.79,339.52,320,351.93l-12.42,29.78a4,4,0,0,1-7.15,0L288,351.93l-29.79-12.41a4,4,0,0,1,0-7.16L288,319.94l12.42-29.78a4,4,0,0,1,7.15,0L320,319.94l29.79,12.42a4,4,0,0,1,0,7.16ZM640,431.91a7.28,7.28,0,0,0-3.68-6l-49.57-20.67-.07,0L566,355.63a6.66,6.66,0,0,0-11.92,0l-20.7,49.63-.05,0L483.7,426a7.28,7.28,0,0,0-3.68,6h0a7.29,7.29,0,0,0,3.68,5.95l49.57,20.67.07,0L554,508.21a6.65,6.65,0,0,0,11.92,0l20.69-49.62h0l.09,0,49.55-20.66a7.29,7.29,0,0,0,3.68-5.95h0Z\"]\n};\nvar faHandSpock = {\n prefix: 'fas',\n iconName: 'hand-spock',\n icon: [512, 512, [], \"f259\", \"M510.9005,145.27027,442.604,432.09391A103.99507,103.99507,0,0,1,341.43745,512H214.074a135.96968,135.96968,0,0,1-93.18489-36.95291L12.59072,373.12723a39.992,39.992,0,0,1,54.8122-58.24988l60.59342,57.02528v0a283.24849,283.24849,0,0,0-11.6703-80.46734L73.63726,147.36011a40.00575,40.00575,0,1,1,76.71833-22.7187l37.15458,125.39477a8.33113,8.33113,0,0,0,16.05656-4.4414L153.26183,49.95406A39.99638,39.99638,0,1,1,230.73015,30.0166l56.09491,218.15825a10.42047,10.42047,0,0,0,20.30018-.501L344.80766,63.96966a40.052,40.052,0,0,1,51.30245-30.0893c19.86073,6.2998,30.86262,27.67378,26.67564,48.08487l-33.83869,164.966a7.55172,7.55172,0,0,0,14.74406,3.2666l29.3973-123.45874a39.99414,39.99414,0,1,1,77.81208,18.53121Z\"]\n};\nvar faHands = {\n prefix: 'fas',\n iconName: 'hands',\n icon: [640, 512, [], \"f4c2\", \"M204.8 230.4c-10.6-14.1-30.7-17-44.8-6.4-14.1 10.6-17 30.7-6.4 44.8l38.1 50.8c4.8 6.4 4.1 15.3-1.5 20.9l-12.8 12.8c-6.7 6.7-17.6 6.2-23.6-1.1L64 244.4V96c0-17.7-14.3-32-32-32S0 78.3 0 96v218.4c0 10.9 3.7 21.5 10.5 30l104.1 134.3c5 6.5 8.4 13.9 10.4 21.7 1.8 6.9 8.1 11.6 15.3 11.6H272c8.8 0 16-7.2 16-16V384c0-27.7-9-54.6-25.6-76.8l-57.6-76.8zM608 64c-17.7 0-32 14.3-32 32v148.4l-89.8 107.8c-6 7.2-17 7.7-23.6 1.1l-12.8-12.8c-5.6-5.6-6.3-14.5-1.5-20.9l38.1-50.8c10.6-14.1 7.7-34.2-6.4-44.8-14.1-10.6-34.2-7.7-44.8 6.4l-57.6 76.8C361 329.4 352 356.3 352 384v112c0 8.8 7.2 16 16 16h131.7c7.1 0 13.5-4.7 15.3-11.6 2-7.8 5.4-15.2 10.4-21.7l104.1-134.3c6.8-8.5 10.5-19.1 10.5-30V96c0-17.7-14.3-32-32-32z\"]\n};\nvar faHandsHelping = {\n prefix: 'fas',\n iconName: 'hands-helping',\n icon: [640, 512, [], \"f4c4\", \"M488 192H336v56c0 39.7-32.3 72-72 72s-72-32.3-72-72V126.4l-64.9 39C107.8 176.9 96 197.8 96 220.2v47.3l-80 46.2C.7 322.5-4.6 342.1 4.3 357.4l80 138.6c8.8 15.3 28.4 20.5 43.7 11.7L231.4 448H368c35.3 0 64-28.7 64-64h16c17.7 0 32-14.3 32-32v-64h8c13.3 0 24-10.7 24-24v-48c0-13.3-10.7-24-24-24zm147.7-37.4L555.7 16C546.9.7 527.3-4.5 512 4.3L408.6 64H306.4c-12 0-23.7 3.4-33.9 9.7L239 94.6c-9.4 5.8-15 16.1-15 27.1V248c0 22.1 17.9 40 40 40s40-17.9 40-40v-88h184c30.9 0 56 25.1 56 56v28.5l80-46.2c15.3-8.9 20.5-28.4 11.7-43.7z\"]\n};\nvar faHandsWash = {\n prefix: 'fas',\n iconName: 'hands-wash',\n icon: [576, 512, [], \"e05e\", \"M496,224a48,48,0,1,0-48-48A48,48,0,0,0,496,224ZM311.47,178.45A56.77,56.77,0,0,1,328,176a56,56,0,0,1,19,3.49l15.35-48.61A24,24,0,0,0,342,99.74c-11.53-1.35-22.21,6.44-25.71,17.51l-20.9,66.17ZM93.65,386.33c.8-.19,1.54-.54,2.35-.71V359.93a156,156,0,0,1,107.06-148l73.7-22.76L310.92,81.05a24,24,0,0,0-20.33-31.11c-11.53-1.34-22.22,6.45-25.72,17.52L231.42,173.88a8,8,0,0,1-15.26-4.83L259.53,31.26A24,24,0,0,0,239.2.15C227.67-1.19,217,6.6,213.49,17.66L165.56,169.37a8,8,0,1,1-15.26-4.82l38.56-122a24,24,0,0,0-20.33-31.11C157,10,146.32,17.83,142.82,28.9l-60,189.85L80.76,168.7A24,24,0,0,0,56.9,144.55c-13.23-.05-24.72,10.54-24.9,23.86V281.14A123.69,123.69,0,0,0,93.65,386.33ZM519.1,336H360a8,8,0,0,1,0-16H488a24,24,0,0,0,23.54-28.76C509.35,279.84,498.71,272,487.1,272H288l47.09-17.06a24,24,0,0,0-14.18-45.88L213.19,242.31A123.88,123.88,0,0,0,128,360v25.65a79.78,79.78,0,0,1,58,108.63A118.9,118.9,0,0,0,248,512H456a24,24,0,0,0,23.54-28.76C477.35,471.84,466.71,464,455.1,464H360a8,8,0,0,1,0-16H488a24,24,0,0,0,23.54-28.76C509.35,407.84,498.71,400,487.1,400H360a8,8,0,0,1,0-16H520a24,24,0,0,0,23.54-28.76C541.35,343.84,530.71,336,519.1,336ZM416,64a32,32,0,1,0-32-32A32,32,0,0,0,416,64ZM112,416a48,48,0,1,0,48,48A48,48,0,0,0,112,416Z\"]\n};\nvar faHandshake = {\n prefix: 'fas',\n iconName: 'handshake',\n icon: [640, 512, [], \"f2b5\", \"M434.7 64h-85.9c-8 0-15.7 3-21.6 8.4l-98.3 90c-.1.1-.2.3-.3.4-16.6 15.6-16.3 40.5-2.1 56 12.7 13.9 39.4 17.6 56.1 2.7.1-.1.3-.1.4-.2l79.9-73.2c6.5-5.9 16.7-5.5 22.6 1 6 6.5 5.5 16.6-1 22.6l-26.1 23.9L504 313.8c2.9 2.4 5.5 5 7.9 7.7V128l-54.6-54.6c-5.9-6-14.1-9.4-22.6-9.4zM544 128.2v223.9c0 17.7 14.3 32 32 32h64V128.2h-96zm48 223.9c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zM0 384h64c17.7 0 32-14.3 32-32V128.2H0V384zm48-63.9c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16c0-8.9 7.2-16 16-16zm435.9 18.6L334.6 217.5l-30 27.5c-29.7 27.1-75.2 24.5-101.7-4.4-26.9-29.4-24.8-74.9 4.4-101.7L289.1 64h-83.8c-8.5 0-16.6 3.4-22.6 9.4L128 128v223.9h18.3l90.5 81.9c27.4 22.3 67.7 18.1 90-9.3l.2-.2 17.9 15.5c15.9 13 39.4 10.5 52.3-5.4l31.4-38.6 5.4 4.4c13.7 11.1 33.9 9.1 45-4.7l9.5-11.7c11.2-13.8 9.1-33.9-4.6-45.1z\"]\n};\nvar faHandshakeAltSlash = {\n prefix: 'fas',\n iconName: 'handshake-alt-slash',\n icon: [640, 512, [], \"e05f\", \"M358.59,195.6,504.2,313.8a63.4,63.4,0,0,1,22.21,37.91H624a16.05,16.05,0,0,0,16-16V143.91A16,16,0,0,0,624,128H512L457.41,73.41A32,32,0,0,0,434.8,64H348.91a32,32,0,0,0-21.61,8.41l-88.12,80.68-25.69-19.85L289.09,64H205.3a32,32,0,0,0-22.6,9.41l-20.34,20.3L45.47,3.38A16,16,0,0,0,23,6.19L3.38,31.46A16,16,0,0,0,6.19,53.91L594.54,508.63A16,16,0,0,0,617,505.82l19.64-25.27a16,16,0,0,0-2.81-22.45L303.4,202.72l32.69-29.92,27-24.7a16,16,0,0,1,21.61,23.61ZM16,128A16.05,16.05,0,0,0,0,144V335.91a16,16,0,0,0,16,16H146.3l90.5,81.89a64,64,0,0,0,90-9.3l.2-.2,17.91,15.5a37.16,37.16,0,0,0,52.29-5.39l8.8-10.82L23.56,128Z\"]\n};\nvar faHandshakeSlash = {\n prefix: 'fas',\n iconName: 'handshake-slash',\n icon: [640, 512, [], \"e060\", \"M0,128.21V384H64a32,32,0,0,0,32-32V184L23.83,128.21ZM48,320.1a16,16,0,1,1-16,16A16,16,0,0,1,48,320.1Zm80,31.81h18.3l90.5,81.89a64,64,0,0,0,90-9.3l.2-.2,17.91,15.5a37.16,37.16,0,0,0,52.29-5.39l8.8-10.82L128,208.72Zm416-223.7V352.1a32,32,0,0,0,32,32h64V128.21ZM592,352.1a16,16,0,1,1,16-16A16,16,0,0,1,592,352.1ZM303.33,202.67l59.58-54.57a16,16,0,0,1,21.59,23.61L358.41,195.6,504,313.8a73.08,73.08,0,0,1,7.91,7.7V128L457.3,73.41A31.76,31.76,0,0,0,434.7,64H348.8a31.93,31.93,0,0,0-21.6,8.41l-88.07,80.64-25.64-19.81L289.09,64H205.3a32,32,0,0,0-22.6,9.41L162.36,93.72,45.47,3.38A16,16,0,0,0,23,6.19L3.38,31.46A16,16,0,0,0,6.19,53.91L594.53,508.63A16,16,0,0,0,617,505.82l19.65-25.27a16,16,0,0,0-2.82-22.45Z\"]\n};\nvar faHanukiah = {\n prefix: 'fas',\n iconName: 'hanukiah',\n icon: [640, 512, [], \"f6e6\", \"M232 160c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm-64 0c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm224 0c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm64 0c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm88 8c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v120h32V168zm-440-8c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm520 0h-32c-8.84 0-16 7.16-16 16v112c0 17.67-14.33 32-32 32H352V128c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v192H96c-17.67 0-32-14.33-32-32V176c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v112c0 53.02 42.98 96 96 96h192v64H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H352v-64h192c53.02 0 96-42.98 96-96V176c0-8.84-7.16-16-16-16zm-16-32c13.25 0 24-11.94 24-26.67S608 48 608 48s-24 38.61-24 53.33S594.75 128 608 128zm-576 0c13.25 0 24-11.94 24-26.67S32 48 32 48 8 86.61 8 101.33 18.75 128 32 128zm288-48c13.25 0 24-11.94 24-26.67S320 0 320 0s-24 38.61-24 53.33S306.75 80 320 80zm-208 48c13.25 0 24-11.94 24-26.67S112 48 112 48s-24 38.61-24 53.33S98.75 128 112 128zm64 0c13.25 0 24-11.94 24-26.67S176 48 176 48s-24 38.61-24 53.33S162.75 128 176 128zm64 0c13.25 0 24-11.94 24-26.67S240 48 240 48s-24 38.61-24 53.33S226.75 128 240 128zm160 0c13.25 0 24-11.94 24-26.67S400 48 400 48s-24 38.61-24 53.33S386.75 128 400 128zm64 0c13.25 0 24-11.94 24-26.67S464 48 464 48s-24 38.61-24 53.33S450.75 128 464 128zm64 0c13.25 0 24-11.94 24-26.67S528 48 528 48s-24 38.61-24 53.33S514.75 128 528 128z\"]\n};\nvar faHardHat = {\n prefix: 'fas',\n iconName: 'hard-hat',\n icon: [512, 512, [], \"f807\", \"M480 288c0-80.25-49.28-148.92-119.19-177.62L320 192V80a16 16 0 0 0-16-16h-96a16 16 0 0 0-16 16v112l-40.81-81.62C81.28 139.08 32 207.75 32 288v64h448zm16 96H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h480a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faHashtag = {\n prefix: 'fas',\n iconName: 'hashtag',\n icon: [448, 512, [], \"f292\", \"M440.667 182.109l7.143-40c1.313-7.355-4.342-14.109-11.813-14.109h-74.81l14.623-81.891C377.123 38.754 371.468 32 363.997 32h-40.632a12 12 0 0 0-11.813 9.891L296.175 128H197.54l14.623-81.891C213.477 38.754 207.822 32 200.35 32h-40.632a12 12 0 0 0-11.813 9.891L132.528 128H53.432a12 12 0 0 0-11.813 9.891l-7.143 40C33.163 185.246 38.818 192 46.289 192h74.81L98.242 320H19.146a12 12 0 0 0-11.813 9.891l-7.143 40C-1.123 377.246 4.532 384 12.003 384h74.81L72.19 465.891C70.877 473.246 76.532 480 84.003 480h40.632a12 12 0 0 0 11.813-9.891L151.826 384h98.634l-14.623 81.891C234.523 473.246 240.178 480 247.65 480h40.632a12 12 0 0 0 11.813-9.891L315.472 384h79.096a12 12 0 0 0 11.813-9.891l7.143-40c1.313-7.355-4.342-14.109-11.813-14.109h-74.81l22.857-128h79.096a12 12 0 0 0 11.813-9.891zM261.889 320h-98.634l22.857-128h98.634l-22.857 128z\"]\n};\nvar faHatCowboy = {\n prefix: 'fas',\n iconName: 'hat-cowboy',\n icon: [640, 512, [], \"f8c0\", \"M490 296.9C480.51 239.51 450.51 64 392.3 64c-14 0-26.49 5.93-37 14a58.21 58.21 0 0 1-70.58 0c-10.51-8-23-14-37-14-58.2 0-88.2 175.47-97.71 232.88C188.81 309.47 243.73 320 320 320s131.23-10.51 170-23.1zm142.9-37.18a16 16 0 0 0-19.75 1.5c-1 .9-101.27 90.78-293.16 90.78-190.82 0-292.22-89.94-293.24-90.84A16 16 0 0 0 1 278.53C1.73 280.55 78.32 480 320 480s318.27-199.45 319-201.47a16 16 0 0 0-6.09-18.81z\"]\n};\nvar faHatCowboySide = {\n prefix: 'fas',\n iconName: 'hat-cowboy-side',\n icon: [640, 512, [], \"f8c1\", \"M260.8 291.06c-28.63-22.94-62-35.06-96.4-35.06C87 256 21.47 318.72 1.43 412.06c-3.55 16.6-.43 33.83 8.57 47.3C18.75 472.47 31.83 480 45.88 480H592c-103.21 0-155-37.07-233.19-104.46zm234.65-18.29L468.4 116.2A64 64 0 0 0 392 64.41L200.85 105a64 64 0 0 0-50.35 55.79L143.61 226c6.9-.83 13.7-2 20.79-2 41.79 0 82 14.55 117.29 42.82l98 84.48C450.76 412.54 494.9 448 592 448a48 48 0 0 0 48-48c0-25.39-29.6-119.33-144.55-127.23z\"]\n};\nvar faHatWizard = {\n prefix: 'fas',\n iconName: 'hat-wizard',\n icon: [512, 512, [], \"f6e8\", \"M496 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-304-64l-64-32 64-32 32-64 32 64 64 32-64 32-16 32h208l-86.41-201.63a63.955 63.955 0 0 1-1.89-45.45L416 0 228.42 107.19a127.989 127.989 0 0 0-53.46 59.15L64 416h144l-16-32zm64-224l16-32 16 32 32 16-32 16-16 32-16-32-32-16 32-16z\"]\n};\nvar faHdd = {\n prefix: 'fas',\n iconName: 'hdd',\n icon: [576, 512, [], \"f0a0\", \"M576 304v96c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48v-96c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48zm-48-80a79.557 79.557 0 0 1 30.777 6.165L462.25 85.374A48.003 48.003 0 0 0 422.311 64H153.689a48 48 0 0 0-39.938 21.374L17.223 230.165A79.557 79.557 0 0 1 48 224h480zm-48 96c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm-96 0c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32z\"]\n};\nvar faHeadSideCough = {\n prefix: 'fas',\n iconName: 'head-side-cough',\n icon: [640, 512, [], \"e061\", \"M616,304a24,24,0,1,0-24-24A24,24,0,0,0,616,304ZM552,416a24,24,0,1,0,24,24A24,24,0,0,0,552,416Zm-64-56a24,24,0,1,0,24,24A24,24,0,0,0,488,360ZM616,464a24,24,0,1,0,24,24A24,24,0,0,0,616,464Zm0-104a24,24,0,1,0,24,24A24,24,0,0,0,616,360Zm-64-40a24,24,0,1,0,24,24A24,24,0,0,0,552,320Zm-74.78-45c-21-47.12-48.5-151.75-73.12-186.75A208.13,208.13,0,0,0,234.1,0H192C86,0,0,86,0,192c0,56.75,24.75,107.62,64,142.88V512H288V480h64a64,64,0,0,0,64-64H320a32,32,0,0,1,0-64h96V320h32A32,32,0,0,0,477.22,275ZM288,224a32,32,0,1,1,32-32A32.07,32.07,0,0,1,288,224Z\"]\n};\nvar faHeadSideCoughSlash = {\n prefix: 'fas',\n iconName: 'head-side-cough-slash',\n icon: [640, 512, [], \"e062\", \"M454.11,319.21c19.56-3.81,31.62-25,23.11-44.21-21-47.12-48.5-151.75-73.12-186.75A208.13,208.13,0,0,0,234.1,0H192A190.64,190.64,0,0,0,84.18,33.3L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.46A16,16,0,0,0,6.18,53.91L594.53,508.63A16,16,0,0,0,617,505.82l19.64-25.27a16,16,0,0,0-2.81-22.45ZM313.39,210.45,263.61,172c5.88-7.14,14.43-12,24.36-12a32.06,32.06,0,0,1,32,32C320,199,317.24,205.17,313.39,210.45ZM616,304a24,24,0,1,0-24-24A24,24,0,0,0,616,304Zm-64,64a24,24,0,1,0-24-24A24,24,0,0,0,552,368ZM288,384a32,32,0,0,1,32-32h19.54L20.73,105.59A190.86,190.86,0,0,0,0,192c0,56.75,24.75,107.62,64,142.88V512H288V480h64a64,64,0,0,0,64-64H320A32,32,0,0,1,288,384Zm328-24a24,24,0,1,0,24,24A24,24,0,0,0,616,360Z\"]\n};\nvar faHeadSideMask = {\n prefix: 'fas',\n iconName: 'head-side-mask',\n icon: [512, 512, [], \"e063\", \"M.15,184.42C-2.17,244.21,23,298.06,64,334.88V512H224V316.51L3.67,156.25A182.28,182.28,0,0,0,.15,184.42ZM509.22,275c-21-47.12-48.5-151.75-73.12-186.75A208.11,208.11,0,0,0,266.11,0H200C117,0,42.48,50.57,13.25,123.65L239.21,288H511.76A31.35,31.35,0,0,0,509.22,275ZM320,224a32,32,0,1,1,32-32A32.07,32.07,0,0,1,320,224Zm16,144H496l16-48H256V512H401.88a64,64,0,0,0,60.71-43.76L464,464H336a16,16,0,0,1,0-32H474.67l10.67-32H336a16,16,0,0,1,0-32Z\"]\n};\nvar faHeadSideVirus = {\n prefix: 'fas',\n iconName: 'head-side-virus',\n icon: [512, 512, [], \"e064\", \"M272,240a16,16,0,1,0,16,16A16,16,0,0,0,272,240Zm-64-64a16,16,0,1,0,16,16A16,16,0,0,0,208,176Zm301.2,99c-20.93-47.12-48.43-151.73-73.07-186.75A207.9,207.9,0,0,0,266.09,0H192C86,0,0,86,0,192A191.23,191.23,0,0,0,64,334.81V512H320V448h64a64,64,0,0,0,64-64V320H480A32,32,0,0,0,509.2,275ZM368,240H355.88c-28.51,0-42.79,34.47-22.63,54.63l8.58,8.57a16,16,0,1,1-22.63,22.63l-8.57-8.58C290.47,297.09,256,311.37,256,339.88V352a16,16,0,0,1-32,0V339.88c0-28.51-34.47-42.79-54.63-22.63l-8.57,8.58a16,16,0,0,1-22.63-22.63l8.58-8.57c20.16-20.16,5.88-54.63-22.63-54.63H112a16,16,0,0,1,0-32h12.12c28.51,0,42.79-34.47,22.63-54.63l-8.58-8.57a16,16,0,0,1,22.63-22.63l8.57,8.58c20.16,20.16,54.63,5.88,54.63-22.63V96a16,16,0,0,1,32,0v12.12c0,28.51,34.47,42.79,54.63,22.63l8.57-8.58a16,16,0,0,1,22.63,22.63l-8.58,8.57C313.09,173.53,327.37,208,355.88,208H368a16,16,0,0,1,0,32Z\"]\n};\nvar faHeading = {\n prefix: 'fas',\n iconName: 'heading',\n icon: [512, 512, [], \"f1dc\", \"M448 96v320h32a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H320a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32V288H160v128h32a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32V96H32a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h160a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16h-32v128h192V96h-32a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h160a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16z\"]\n};\nvar faHeadphones = {\n prefix: 'fas',\n iconName: 'headphones',\n icon: [512, 512, [], \"f025\", \"M256 32C114.52 32 0 146.496 0 288v48a32 32 0 0 0 17.689 28.622l14.383 7.191C34.083 431.903 83.421 480 144 480h24c13.255 0 24-10.745 24-24V280c0-13.255-10.745-24-24-24h-24c-31.342 0-59.671 12.879-80 33.627V288c0-105.869 86.131-192 192-192s192 86.131 192 192v1.627C427.671 268.879 399.342 256 368 256h-24c-13.255 0-24 10.745-24 24v176c0 13.255 10.745 24 24 24h24c60.579 0 109.917-48.098 111.928-108.187l14.382-7.191A32 32 0 0 0 512 336v-48c0-141.479-114.496-256-256-256z\"]\n};\nvar faHeadphonesAlt = {\n prefix: 'fas',\n iconName: 'headphones-alt',\n icon: [512, 512, [], \"f58f\", \"M160 288h-16c-35.35 0-64 28.7-64 64.12v63.76c0 35.41 28.65 64.12 64 64.12h16c17.67 0 32-14.36 32-32.06V320.06c0-17.71-14.33-32.06-32-32.06zm208 0h-16c-17.67 0-32 14.35-32 32.06v127.88c0 17.7 14.33 32.06 32 32.06h16c35.35 0 64-28.71 64-64.12v-63.76c0-35.41-28.65-64.12-64-64.12zM256 32C112.91 32 4.57 151.13 0 288v112c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V288c0-114.67 93.33-207.8 208-207.82 114.67.02 208 93.15 208 207.82v112c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V288C507.43 151.13 399.09 32 256 32z\"]\n};\nvar faHeadset = {\n prefix: 'fas',\n iconName: 'headset',\n icon: [512, 512, [], \"f590\", \"M192 208c0-17.67-14.33-32-32-32h-16c-35.35 0-64 28.65-64 64v48c0 35.35 28.65 64 64 64h16c17.67 0 32-14.33 32-32V208zm176 144c35.35 0 64-28.65 64-64v-48c0-35.35-28.65-64-64-64h-16c-17.67 0-32 14.33-32 32v112c0 17.67 14.33 32 32 32h16zM256 0C113.18 0 4.58 118.83 0 256v16c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-16c0-114.69 93.31-208 208-208s208 93.31 208 208h-.12c.08 2.43.12 165.72.12 165.72 0 23.35-18.93 42.28-42.28 42.28H320c0-26.51-21.49-48-48-48h-32c-26.51 0-48 21.49-48 48s21.49 48 48 48h181.72c49.86 0 90.28-40.42 90.28-90.28V256C507.42 118.83 398.82 0 256 0z\"]\n};\nvar faHeart = {\n prefix: 'fas',\n iconName: 'heart',\n icon: [512, 512, [], \"f004\", \"M462.3 62.6C407.5 15.9 326 24.3 275.7 76.2L256 96.5l-19.7-20.3C186.1 24.3 104.5 15.9 49.7 62.6c-62.8 53.6-66.1 149.8-9.9 207.9l193.5 199.8c12.5 12.9 32.8 12.9 45.3 0l193.5-199.8c56.3-58.1 53-154.3-9.8-207.9z\"]\n};\nvar faHeartBroken = {\n prefix: 'fas',\n iconName: 'heart-broken',\n icon: [512, 512, [], \"f7a9\", \"M473.7 73.8l-2.4-2.5c-46-47-118-51.7-169.6-14.8L336 159.9l-96 64 48 128-144-144 96-64-28.6-86.5C159.7 19.6 87 24 40.7 71.4l-2.4 2.4C-10.4 123.6-12.5 202.9 31 256l212.1 218.6c7.1 7.3 18.6 7.3 25.7 0L481 255.9c43.5-53 41.4-132.3-7.3-182.1z\"]\n};\nvar faHeartbeat = {\n prefix: 'fas',\n iconName: 'heartbeat',\n icon: [512, 512, [], \"f21e\", \"M320.2 243.8l-49.7 99.4c-6 12.1-23.4 11.7-28.9-.6l-56.9-126.3-30 71.7H60.6l182.5 186.5c7.1 7.3 18.6 7.3 25.7 0L451.4 288H342.3l-22.1-44.2zM473.7 73.9l-2.4-2.5c-51.5-52.6-135.8-52.6-187.4 0L256 100l-27.9-28.5c-51.5-52.7-135.9-52.7-187.4 0l-2.4 2.4C-10.4 123.7-12.5 203 31 256h102.4l35.9-86.2c5.4-12.9 23.6-13.2 29.4-.4l58.2 129.3 49-97.9c5.9-11.8 22.7-11.8 28.6 0l27.6 55.2H481c43.5-53 41.4-132.3-7.3-182.1z\"]\n};\nvar faHelicopter = {\n prefix: 'fas',\n iconName: 'helicopter',\n icon: [640, 512, [], \"f533\", \"M304 384h272c17.67 0 32-14.33 32-32 0-123.71-100.29-224-224-224V64h176c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16H144c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h176v64H112L68.8 70.4C65.78 66.37 61.03 64 56 64H16.01C5.6 64-2.04 73.78.49 83.88L32 192l160 64 86.4 115.2A31.992 31.992 0 0 0 304 384zm112-188.49C478.55 208.3 528.03 257.44 540.79 320H416V195.51zm219.37 263.3l-22.15-22.2c-6.25-6.26-16.24-6.1-22.64.01-7.09 6.77-13.84 11.25-24.64 11.25H240c-8.84 0-16 7.18-16 16.03v32.06c0 8.85 7.16 16.03 16 16.03h325.94c14.88 0 35.3-.47 68.45-29.52 7.02-6.14 7.57-17.05.98-23.66z\"]\n};\nvar faHighlighter = {\n prefix: 'fas',\n iconName: 'highlighter',\n icon: [544, 512, [], \"f591\", \"M0 479.98L99.92 512l35.45-35.45-67.04-67.04L0 479.98zm124.61-240.01a36.592 36.592 0 0 0-10.79 38.1l13.05 42.83-50.93 50.94 96.23 96.23 50.86-50.86 42.74 13.08c13.73 4.2 28.65-.01 38.15-10.78l35.55-41.64-173.34-173.34-41.52 35.44zm403.31-160.7l-63.2-63.2c-20.49-20.49-53.38-21.52-75.12-2.35L190.55 183.68l169.77 169.78L530.27 154.4c19.18-21.74 18.15-54.63-2.35-75.13z\"]\n};\nvar faHiking = {\n prefix: 'fas',\n iconName: 'hiking',\n icon: [384, 512, [], \"f6ec\", \"M80.95 472.23c-4.28 17.16 6.14 34.53 23.28 38.81 2.61.66 5.22.95 7.8.95 14.33 0 27.37-9.7 31.02-24.23l25.24-100.97-52.78-52.78-34.56 138.22zm14.89-196.12L137 117c2.19-8.42-3.14-16.95-11.92-19.06-43.88-10.52-88.35 15.07-99.32 57.17L.49 253.24c-2.19 8.42 3.14 16.95 11.92 19.06l63.56 15.25c8.79 2.1 17.68-3.02 19.87-11.44zM368 160h-16c-8.84 0-16 7.16-16 16v16h-34.75l-46.78-46.78C243.38 134.11 228.61 128 212.91 128c-27.02 0-50.47 18.3-57.03 44.52l-26.92 107.72a32.012 32.012 0 0 0 8.42 30.39L224 397.25V480c0 17.67 14.33 32 32 32s32-14.33 32-32v-82.75c0-17.09-6.66-33.16-18.75-45.25l-46.82-46.82c.15-.5.49-.89.62-1.41l19.89-79.57 22.43 22.43c6 6 14.14 9.38 22.62 9.38h48v240c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V176c.01-8.84-7.15-16-15.99-16zM240 96c26.51 0 48-21.49 48-48S266.51 0 240 0s-48 21.49-48 48 21.49 48 48 48z\"]\n};\nvar faHippo = {\n prefix: 'fas',\n iconName: 'hippo',\n icon: [640, 512, [], \"f6ed\", \"M581.12 96.2c-27.67-.15-52.5 17.58-76.6 26.62C489.98 88.27 455.83 64 416 64c-11.28 0-21.95 2.3-32 5.88V56c0-13.26-10.75-24-24-24h-16c-13.25 0-24 10.74-24 24v48.98C286.01 79.58 241.24 64 192 64 85.96 64 0 135.64 0 224v240c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16v-70.79C128.35 407.57 166.72 416 208 416s79.65-8.43 112-22.79V464c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16V288h128v32c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-32c17.67 0 32-14.33 32-32v-92.02c0-34.09-24.79-67.59-58.88-67.78zM448 176c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z\"]\n};\nvar faHistory = {\n prefix: 'fas',\n iconName: 'history',\n icon: [512, 512, [], \"f1da\", \"M504 255.531c.253 136.64-111.18 248.372-247.82 248.468-59.015.042-113.223-20.53-155.822-54.911-11.077-8.94-11.905-25.541-1.839-35.607l11.267-11.267c8.609-8.609 22.353-9.551 31.891-1.984C173.062 425.135 212.781 440 256 440c101.705 0 184-82.311 184-184 0-101.705-82.311-184-184-184-48.814 0-93.149 18.969-126.068 49.932l50.754 50.754c10.08 10.08 2.941 27.314-11.313 27.314H24c-8.837 0-16-7.163-16-16V38.627c0-14.254 17.234-21.393 27.314-11.314l49.372 49.372C129.209 34.136 189.552 8 256 8c136.81 0 247.747 110.78 248 247.531zm-180.912 78.784l9.823-12.63c8.138-10.463 6.253-25.542-4.21-33.679L288 256.349V152c0-13.255-10.745-24-24-24h-16c-13.255 0-24 10.745-24 24v135.651l65.409 50.874c10.463 8.137 25.541 6.253 33.679-4.21z\"]\n};\nvar faHockeyPuck = {\n prefix: 'fas',\n iconName: 'hockey-puck',\n icon: [512, 512, [], \"f453\", \"M0 160c0-53 114.6-96 256-96s256 43 256 96-114.6 96-256 96S0 213 0 160zm0 82.2V352c0 53 114.6 96 256 96s256-43 256-96V242.2c-113.4 82.3-398.5 82.4-512 0z\"]\n};\nvar faHollyBerry = {\n prefix: 'fas',\n iconName: 'holly-berry',\n icon: [448, 512, [], \"f7aa\", \"M144 192c26.5 0 48-21.5 48-48s-21.5-48-48-48-48 21.5-48 48 21.5 48 48 48zm112-48c0 26.5 21.5 48 48 48s48-21.5 48-48-21.5-48-48-48-48 21.5-48 48zm-32-48c26.5 0 48-21.5 48-48S250.5 0 224 0s-48 21.5-48 48 21.5 48 48 48zm-16.2 139.1c.1-12.4-13.1-20.1-23.8-13.7-34.3 20.3-71.4 32.7-108.7 36.2-9.7.9-15.6 11.3-11.6 20.2 6.2 13.9 11.1 28.6 14.7 43.8 3.6 15.2-5.3 30.6-20.2 35.1-14.9 4.5-30.1 7.6-45.3 9.1-9.7 1-15.7 11.3-11.7 20.2 15 32.8 22.9 69.5 23 107.7.1 14.4 15.2 23.1 27.6 16 33.2-19 68.9-30.5 104.8-33.9 9.7-.9 15.6-11.3 11.6-20.2-6.2-13.9-11.1-28.6-14.7-43.8-3.6-15.2 5.3-30.6 20.2-35.1 14.9-4.5 30.1-7.6 45.3-9.1 9.7-1 15.7-11.3 11.7-20.2-15.5-34.2-23.3-72.5-22.9-112.3zM435 365.6c-15.2-1.6-30.3-4.7-45.3-9.1-14.9-4.5-23.8-19.9-20.2-35.1 3.6-15.2 8.5-29.8 14.7-43.8 4-8.9-1.9-19.3-11.6-20.2-37.3-3.5-74.4-15.9-108.7-36.2-10.7-6.3-23.9 1.4-23.8 13.7 0 1.6-.2 3.2-.2 4.9.2 33.3 7 65.7 19.9 94 5.7 12.4 5.2 26.6-.6 38.9 4.9 1.2 9.9 2.2 14.8 3.7 14.9 4.5 23.8 19.9 20.2 35.1-3.6 15.2-8.5 29.8-14.7 43.8-4 8.9 1.9 19.3 11.6 20.2 35.9 3.4 71.6 14.9 104.8 33.9 12.5 7.1 27.6-1.6 27.6-16 .2-38.2 8-75 23-107.7 4.3-8.7-1.8-19.1-11.5-20.1z\"]\n};\nvar faHome = {\n prefix: 'fas',\n iconName: 'home',\n icon: [576, 512, [], \"f015\", \"M280.37 148.26L96 300.11V464a16 16 0 0 0 16 16l112.06-.29a16 16 0 0 0 15.92-16V368a16 16 0 0 1 16-16h64a16 16 0 0 1 16 16v95.64a16 16 0 0 0 16 16.05L464 480a16 16 0 0 0 16-16V300L295.67 148.26a12.19 12.19 0 0 0-15.3 0zM571.6 251.47L488 182.56V44.05a12 12 0 0 0-12-12h-56a12 12 0 0 0-12 12v72.61L318.47 43a48 48 0 0 0-61 0L4.34 251.47a12 12 0 0 0-1.6 16.9l25.5 31A12 12 0 0 0 45.15 301l235.22-193.74a12.19 12.19 0 0 1 15.3 0L530.9 301a12 12 0 0 0 16.9-1.6l25.5-31a12 12 0 0 0-1.7-16.93z\"]\n};\nvar faHorse = {\n prefix: 'fas',\n iconName: 'horse',\n icon: [576, 512, [], \"f6f0\", \"M575.92 76.6c-.01-8.13-3.02-15.87-8.58-21.8-3.78-4.03-8.58-9.12-13.69-14.5 11.06-6.84 19.5-17.49 22.18-30.66C576.85 4.68 572.96 0 567.9 0H447.92c-70.69 0-128 57.31-128 128H160c-28.84 0-54.4 12.98-72 33.11V160c-48.53 0-88 39.47-88 88v56c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-56c0-13.22 6.87-24.39 16.78-31.68-.21 2.58-.78 5.05-.78 7.68 0 27.64 11.84 52.36 30.54 69.88l-25.72 68.6a63.945 63.945 0 0 0-2.16 37.99l24.85 99.41A15.982 15.982 0 0 0 107.02 512h65.96c10.41 0 18.05-9.78 15.52-19.88l-26.31-105.26 23.84-63.59L320 345.6V496c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16V318.22c19.74-20.19 32-47.75 32-78.22 0-.22-.07-.42-.08-.64V136.89l16 7.11 18.9 37.7c7.45 14.87 25.05 21.55 40.49 15.37l32.55-13.02a31.997 31.997 0 0 0 20.12-29.74l-.06-77.71zm-64 19.4c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z\"]\n};\nvar faHorseHead = {\n prefix: 'fas',\n iconName: 'horse-head',\n icon: [512, 512, [], \"f7ab\", \"M509.8 332.5l-69.9-164.3c-14.9-41.2-50.4-71-93-79.2 18-10.6 46.3-35.9 34.2-82.3-1.3-5-7.1-7.9-12-6.1L166.9 76.3C35.9 123.4 0 238.9 0 398.8V480c0 17.7 14.3 32 32 32h236.2c23.8 0 39.3-25 28.6-46.3L256 384v-.7c-45.6-3.5-84.6-30.7-104.3-69.6-1.6-3.1-.9-6.9 1.6-9.3l12.1-12.1c3.9-3.9 10.6-2.7 12.9 2.4 14.8 33.7 48.2 57.4 87.4 57.4 17.2 0 33-5.1 46.8-13.2l46 63.9c6 8.4 15.7 13.3 26 13.3h50.3c8.5 0 16.6-3.4 22.6-9.4l45.3-39.8c8.9-9.1 11.7-22.6 7.1-34.4zM328 224c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24z\"]\n};\nvar faHospital = {\n prefix: 'fas',\n iconName: 'hospital',\n icon: [448, 512, [], \"f0f8\", \"M448 492v20H0v-20c0-6.627 5.373-12 12-12h20V120c0-13.255 10.745-24 24-24h88V24c0-13.255 10.745-24 24-24h112c13.255 0 24 10.745 24 24v72h88c13.255 0 24 10.745 24 24v360h20c6.627 0 12 5.373 12 12zM308 192h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zm-168 64h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12zm104 128h-40c-6.627 0-12 5.373-12 12v84h64v-84c0-6.627-5.373-12-12-12zm64-96h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zm-116 12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40zM182 96h26v26a6 6 0 0 0 6 6h20a6 6 0 0 0 6-6V96h26a6 6 0 0 0 6-6V70a6 6 0 0 0-6-6h-26V38a6 6 0 0 0-6-6h-20a6 6 0 0 0-6 6v26h-26a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6z\"]\n};\nvar faHospitalAlt = {\n prefix: 'fas',\n iconName: 'hospital-alt',\n icon: [576, 512, [], \"f47d\", \"M544 96H416V32c0-17.7-14.3-32-32-32H192c-17.7 0-32 14.3-32 32v64H32c-17.7 0-32 14.3-32 32v368c0 8.8 7.2 16 16 16h544c8.8 0 16-7.2 16-16V128c0-17.7-14.3-32-32-32zM160 436c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm160 128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm16-170c0 3.3-2.7 6-6 6h-26v26c0 3.3-2.7 6-6 6h-20c-3.3 0-6-2.7-6-6v-26h-26c-3.3 0-6-2.7-6-6v-20c0-3.3 2.7-6 6-6h26V86c0-3.3 2.7-6 6-6h20c3.3 0 6 2.7 6 6v26h26c3.3 0 6 2.7 6 6v20zm144 298c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40z\"]\n};\nvar faHospitalSymbol = {\n prefix: 'fas',\n iconName: 'hospital-symbol',\n icon: [512, 512, [], \"f47e\", \"M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256 256-114.6 256-256S397.4 0 256 0zm112 376c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-88h-96v88c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V136c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v88h96v-88c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v240z\"]\n};\nvar faHospitalUser = {\n prefix: 'fas',\n iconName: 'hospital-user',\n icon: [640, 512, [], \"f80d\", \"M480 320a96 96 0 1 0-96-96 96 96 0 0 0 96 96zm48 32a22.88 22.88 0 0 0-7.06 1.09 124.76 124.76 0 0 1-81.89 0A22.82 22.82 0 0 0 432 352a112 112 0 0 0-112 112.62c.14 26.26 21.73 47.38 48 47.38h224c26.27 0 47.86-21.12 48-47.38A112 112 0 0 0 528 352zm-198.09 10.45A145.19 145.19 0 0 1 352 344.62V128a32 32 0 0 0-32-32h-32V32a32 32 0 0 0-32-32H96a32 32 0 0 0-32 32v64H32a32 32 0 0 0-32 32v368a16 16 0 0 0 16 16h288.31A78.62 78.62 0 0 1 288 464.79a143.06 143.06 0 0 1 41.91-102.34zM144 404a12 12 0 0 1-12 12H92a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm0-128a12 12 0 0 1-12 12H92a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm48-122a6 6 0 0 1-6 6h-20a6 6 0 0 1-6-6v-26h-26a6 6 0 0 1-6-6v-20a6 6 0 0 1 6-6h26V70a6 6 0 0 1 6-6h20a6 6 0 0 1 6 6v26h26a6 6 0 0 1 6 6v20a6 6 0 0 1-6 6h-26zm80 250a12 12 0 0 1-12 12h-40a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm0-128a12 12 0 0 1-12 12h-40a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12z\"]\n};\nvar faHotTub = {\n prefix: 'fas',\n iconName: 'hot-tub',\n icon: [512, 512, [], \"f593\", \"M414.21 177.65c1.02 8.21 7.75 14.35 15.75 14.35h16.12c9.51 0 17.08-8.57 16-18.35-4.34-39.11-22.4-74.53-50.13-97.16-17.37-14.17-28.82-36.75-31.98-62.15C378.96 6.14 372.22 0 364.23 0h-16.12c-9.51 0-17.09 8.57-16 18.35 4.34 39.11 22.4 74.53 50.13 97.16 17.36 14.17 28.82 36.75 31.97 62.14zm-108 0c1.02 8.21 7.75 14.35 15.75 14.35h16.12c9.51 0 17.08-8.57 16-18.35-4.34-39.11-22.4-74.53-50.13-97.16-17.37-14.17-28.82-36.75-31.98-62.15C270.96 6.14 264.22 0 256.23 0h-16.12c-9.51 0-17.09 8.57-16 18.35 4.34 39.11 22.4 74.53 50.13 97.16 17.36 14.17 28.82 36.75 31.97 62.14zM480 256H256l-110.93-83.2a63.99 63.99 0 0 0-38.4-12.8H64c-35.35 0-64 28.65-64 64v224c0 35.35 28.65 64 64 64h384c35.35 0 64-28.65 64-64V288c0-17.67-14.33-32-32-32zM128 440c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zM64 128c35.35 0 64-28.65 64-64S99.35 0 64 0 0 28.65 0 64s28.65 64 64 64z\"]\n};\nvar faHotdog = {\n prefix: 'fas',\n iconName: 'hotdog',\n icon: [512, 512, [], \"f80f\", \"M488.56 23.44a80 80 0 0 0-113.12 0l-352 352a80 80 0 1 0 113.12 113.12l352-352a80 80 0 0 0 0-113.12zm-49.93 95.19c-19.6 19.59-37.52 22.67-51.93 25.14C373.76 146 364.4 147.6 352 160s-14 21.76-16.23 34.71c-2.48 14.4-5.55 32.33-25.15 51.92s-37.52 22.67-51.92 25.15C245.75 274 236.4 275.6 224 288s-14 21.75-16.23 34.7c-2.47 14.4-5.54 32.33-25.14 51.92s-37.53 22.68-51.93 25.15C117.76 402 108.4 403.6 96 416a16 16 0 0 1-22.63-22.63c19.6-19.59 37.52-22.67 51.92-25.14 13-2.22 22.3-3.82 34.71-16.23s14-21.75 16.22-34.7c2.48-14.4 5.55-32.33 25.15-51.92s37.52-22.67 51.92-25.14c13-2.22 22.3-3.83 34.7-16.23s14-21.76 16.24-34.71c2.47-14.4 5.54-32.33 25.14-51.92s37.52-22.68 51.92-25.15C394.24 110 403.59 108.41 416 96a16 16 0 0 1 22.63 22.63zM31.44 322.18L322.18 31.44l-11.54-11.55c-25-25-63.85-26.66-86.79-3.72L16.17 223.85c-22.94 22.94-21.27 61.79 3.72 86.78zm449.12-132.36L189.82 480.56l11.54 11.55c25 25 63.85 26.66 86.79 3.72l207.68-207.68c22.94-22.94 21.27-61.79-3.72-86.79z\"]\n};\nvar faHotel = {\n prefix: 'fas',\n iconName: 'hotel',\n icon: [576, 512, [], \"f594\", \"M560 64c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h15.98v384H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h240v-80c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v80h240c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-16V64h16zm-304 44.8c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zm0 96c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zm-128-96c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zM179.2 256h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8zM192 384c0-53.02 42.98-96 96-96s96 42.98 96 96H192zm256-140.8c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm0-96c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4z\"]\n};\nvar faHourglass = {\n prefix: 'fas',\n iconName: 'hourglass',\n icon: [384, 512, [], \"f254\", \"M360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64z\"]\n};\nvar faHourglassEnd = {\n prefix: 'fas',\n iconName: 'hourglass-end',\n icon: [384, 512, [], \"f253\", \"M360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64zM192 208c-57.787 0-104-66.518-104-144h208c0 77.945-46.51 144-104 144z\"]\n};\nvar faHourglassHalf = {\n prefix: 'fas',\n iconName: 'hourglass-half',\n icon: [384, 512, [], \"f252\", \"M360 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24zm-75.078 384H99.08c17.059-46.797 52.096-80 92.92-80 40.821 0 75.862 33.196 92.922 80zm.019-256H99.078C91.988 108.548 88 86.748 88 64h208c0 22.805-3.987 44.587-11.059 64z\"]\n};\nvar faHourglassStart = {\n prefix: 'fas',\n iconName: 'hourglass-start',\n icon: [384, 512, [], \"f251\", \"M360 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24zm-64 448H88c0-77.458 46.204-144 104-144 57.786 0 104 66.517 104 144z\"]\n};\nvar faHouseDamage = {\n prefix: 'fas',\n iconName: 'house-damage',\n icon: [576, 512, [], \"f6f1\", \"M288 114.96L69.47 307.71c-1.62 1.46-3.69 2.14-5.47 3.35V496c0 8.84 7.16 16 16 16h149.23L192 439.19l104.11-64-60.16-119.22L384 392.75l-104.11 64L319.81 512H496c8.84 0 16-7.16 16-16V311.1c-1.7-1.16-3.72-1.82-5.26-3.2L288 114.96zm282.69 121.32L512 184.45V48c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v51.69L314.75 10.31C307.12 3.45 297.56.01 288 0s-19.1 3.41-26.7 10.27L5.31 236.28c-6.57 5.91-7.12 16.02-1.21 22.6l21.4 23.82c5.9 6.57 16.02 7.12 22.6 1.21L277.42 81.63c6.05-5.33 15.12-5.33 21.17 0L527.91 283.9c6.57 5.9 16.69 5.36 22.6-1.21l21.4-23.82c5.9-6.57 5.36-16.69-1.22-22.59z\"]\n};\nvar faHouseUser = {\n prefix: 'fas',\n iconName: 'house-user',\n icon: [576, 512, [], \"e065\", \"M570.69,236.27,512,184.44V48a16,16,0,0,0-16-16H432a16,16,0,0,0-16,16V99.67L314.78,10.3C308.5,4.61,296.53,0,288,0s-20.46,4.61-26.74,10.3l-256,226A18.27,18.27,0,0,0,0,248.2a18.64,18.64,0,0,0,4.09,10.71L25.5,282.7a21.14,21.14,0,0,0,12,5.3,21.67,21.67,0,0,0,10.69-4.11l15.9-14V480a32,32,0,0,0,32,32H480a32,32,0,0,0,32-32V269.88l15.91,14A21.94,21.94,0,0,0,538.63,288a20.89,20.89,0,0,0,11.87-5.31l21.41-23.81A21.64,21.64,0,0,0,576,248.19,21,21,0,0,0,570.69,236.27ZM288,176a64,64,0,1,1-64,64A64,64,0,0,1,288,176ZM400,448H176a16,16,0,0,1-16-16,96,96,0,0,1,96-96h64a96,96,0,0,1,96,96A16,16,0,0,1,400,448Z\"]\n};\nvar faHryvnia = {\n prefix: 'fas',\n iconName: 'hryvnia',\n icon: [384, 512, [], \"f6f2\", \"M368 240c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-41.86c13.41-28.63 13.74-63.33-4.13-94.05C303.34 49.84 267.1 32 229.96 32h-78.82c-24.32 0-47.86 8.53-66.54 24.09L72.83 65.9c-10.18 8.49-11.56 23.62-3.07 33.8l20.49 24.59c8.49 10.19 23.62 11.56 33.81 3.07l11.73-9.78c4.32-3.6 9.77-5.57 15.39-5.57h83.62c11.69 0 21.2 9.52 21.2 21.2 0 5.91-2.48 11.58-6.81 15.58L219.7 176H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h134.37l-34.67 32H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h41.86c-13.41 28.63-13.74 63.33 4.13 94.05C80.66 462.15 116.9 480 154.04 480h78.82c24.32 0 47.86-8.53 66.54-24.09l11.77-9.81c10.18-8.49 11.56-23.62 3.07-33.8l-20.49-24.59c-8.49-10.19-23.62-11.56-33.81-3.07l-11.75 9.8a23.992 23.992 0 0 1-15.36 5.56H149.2c-11.69 0-21.2-9.52-21.2-21.2 0-5.91 2.48-11.58 6.81-15.58L164.3 336H368c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H233.63l34.67-32H368z\"]\n};\nvar faICursor = {\n prefix: 'fas',\n iconName: 'i-cursor',\n icon: [256, 512, [], \"f246\", \"M256 52.048V12.065C256 5.496 250.726.148 244.158.066 211.621-.344 166.469.011 128 37.959 90.266.736 46.979-.114 11.913.114 5.318.157 0 5.519 0 12.114v39.645c0 6.687 5.458 12.078 12.145 11.998C38.111 63.447 96 67.243 96 112.182V224H60c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h36v112c0 44.932-56.075 48.031-83.95 47.959C5.404 447.942 0 453.306 0 459.952v39.983c0 6.569 5.274 11.917 11.842 11.999 32.537.409 77.689.054 116.158-37.894 37.734 37.223 81.021 38.073 116.087 37.845 6.595-.043 11.913-5.405 11.913-12V460.24c0-6.687-5.458-12.078-12.145-11.998C217.889 448.553 160 444.939 160 400V288h36c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-36V112.182c0-44.932 56.075-48.213 83.95-48.142 6.646.018 12.05-5.346 12.05-11.992z\"]\n};\nvar faIceCream = {\n prefix: 'fas',\n iconName: 'ice-cream',\n icon: [448, 512, [], \"f810\", \"M368 160h-.94a144 144 0 1 0-286.12 0H80a48 48 0 0 0 0 96h288a48 48 0 0 0 0-96zM195.38 493.69a31.52 31.52 0 0 0 57.24 0L352 288H96z\"]\n};\nvar faIcicles = {\n prefix: 'fas',\n iconName: 'icicles',\n icon: [512, 512, [], \"f7ad\", \"M511.4 37.9C515.1 18.2 500 0 480 0H32C10.6 0-4.8 20.7 1.4 41.2l87.1 273.4c2.5 7.2 12.7 7.2 15.1 0L140 190.5l44.2 187.3c1.9 8.3 13.7 8.3 15.6 0l46.5-196.9 34.1 133.4c2.3 7.6 13 7.6 15.3 0l45.8-172.5 66.7 363.8c1.7 8.6 14 8.6 15.7 0l87.5-467.7z\"]\n};\nvar faIcons = {\n prefix: 'fas',\n iconName: 'icons',\n icon: [512, 512, [], \"f86d\", \"M116.65 219.35a15.68 15.68 0 0 0 22.65 0l96.75-99.83c28.15-29 26.5-77.1-4.91-103.88C203.75-7.7 163-3.5 137.86 22.44L128 32.58l-9.85-10.14C93.05-3.5 52.25-7.7 24.86 15.64c-31.41 26.78-33 74.85-5 103.88zm143.92 100.49h-48l-7.08-14.24a27.39 27.39 0 0 0-25.66-17.78h-71.71a27.39 27.39 0 0 0-25.66 17.78l-7 14.24h-48A27.45 27.45 0 0 0 0 347.3v137.25A27.44 27.44 0 0 0 27.43 512h233.14A27.45 27.45 0 0 0 288 484.55V347.3a27.45 27.45 0 0 0-27.43-27.46zM144 468a52 52 0 1 1 52-52 52 52 0 0 1-52 52zm355.4-115.9h-60.58l22.36-50.75c2.1-6.65-3.93-13.21-12.18-13.21h-75.59c-6.3 0-11.66 3.9-12.5 9.1l-16.8 106.93c-1 6.3 4.88 11.89 12.5 11.89h62.31l-24.2 83c-1.89 6.65 4.2 12.9 12.23 12.9a13.26 13.26 0 0 0 10.92-5.25l92.4-138.91c4.88-6.91-1.16-15.7-10.87-15.7zM478.08.33L329.51 23.17C314.87 25.42 304 38.92 304 54.83V161.6a83.25 83.25 0 0 0-16-1.7c-35.35 0-64 21.48-64 48s28.65 48 64 48c35.2 0 63.73-21.32 64-47.66V99.66l112-17.22v47.18a83.25 83.25 0 0 0-16-1.7c-35.35 0-64 21.48-64 48s28.65 48 64 48c35.2 0 63.73-21.32 64-47.66V32c0-19.48-16-34.42-33.92-31.67z\"]\n};\nvar faIdBadge = {\n prefix: 'fas',\n iconName: 'id-badge',\n icon: [384, 512, [], \"f2c1\", \"M336 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM144 32h96c8.8 0 16 7.2 16 16s-7.2 16-16 16h-96c-8.8 0-16-7.2-16-16s7.2-16 16-16zm48 128c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H102.4C90 416 80 407.4 80 396.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z\"]\n};\nvar faIdCard = {\n prefix: 'fas',\n iconName: 'id-card',\n icon: [576, 512, [], \"f2c2\", \"M528 32H48C21.5 32 0 53.5 0 80v16h576V80c0-26.5-21.5-48-48-48zM0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V128H0v304zm352-232c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zm0 64c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zm0 64c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zM176 192c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zM67.1 396.2C75.5 370.5 99.6 352 128 352h8.2c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h8.2c28.4 0 52.5 18.5 60.9 44.2 3.2 9.9-5.2 19.8-15.6 19.8H82.7c-10.4 0-18.8-10-15.6-19.8z\"]\n};\nvar faIdCardAlt = {\n prefix: 'fas',\n iconName: 'id-card-alt',\n icon: [576, 512, [], \"f47f\", \"M528 64H384v96H192V64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM288 224c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm93.3 224H194.7c-10.4 0-18.8-10-15.6-19.8 8.3-25.6 32.4-44.2 60.9-44.2h8.2c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h8.2c28.4 0 52.5 18.5 60.9 44.2 3.2 9.8-5.2 19.8-15.6 19.8zM352 32c0-17.7-14.3-32-32-32h-64c-17.7 0-32 14.3-32 32v96h128V32z\"]\n};\nvar faIgloo = {\n prefix: 'fas',\n iconName: 'igloo',\n icon: [576, 512, [], \"f7ae\", \"M320 33.9c-10.5-1.2-21.2-1.9-32-1.9-99.8 0-187.8 50.8-239.4 128H320V33.9zM96 192H30.3C11.1 230.6 0 274 0 320h96V192zM352 39.4V160h175.4C487.2 99.9 424.8 55.9 352 39.4zM480 320h96c0-46-11.1-89.4-30.3-128H480v128zm-64 64v96h128c17.7 0 32-14.3 32-32v-96H411.5c2.6 10.3 4.5 20.9 4.5 32zm32-192H128v128h49.8c22.2-38.1 63-64 110.2-64s88 25.9 110.2 64H448V192zM0 448c0 17.7 14.3 32 32 32h128v-96c0-11.1 1.9-21.7 4.5-32H0v96zm288-160c-53 0-96 43-96 96v96h192v-96c0-53-43-96-96-96z\"]\n};\nvar faImage = {\n prefix: 'fas',\n iconName: 'image',\n icon: [512, 512, [], \"f03e\", \"M464 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM112 120c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56zM64 384h384V272l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L208 320l-55.515-55.515c-4.686-4.686-12.284-4.686-16.971 0L64 336v48z\"]\n};\nvar faImages = {\n prefix: 'fas',\n iconName: 'images',\n icon: [576, 512, [], \"f302\", \"M480 416v16c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V176c0-26.51 21.49-48 48-48h16v208c0 44.112 35.888 80 80 80h336zm96-80V80c0-26.51-21.49-48-48-48H144c-26.51 0-48 21.49-48 48v256c0 26.51 21.49 48 48 48h384c26.51 0 48-21.49 48-48zM256 128c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48 48 21.49 48 48zm-96 144l55.515-55.515c4.686-4.686 12.284-4.686 16.971 0L272 256l135.515-135.515c4.686-4.686 12.284-4.686 16.971 0L512 208v112H160v-48z\"]\n};\nvar faInbox = {\n prefix: 'fas',\n iconName: 'inbox',\n icon: [576, 512, [], \"f01c\", \"M567.938 243.908L462.25 85.374A48.003 48.003 0 0 0 422.311 64H153.689a48 48 0 0 0-39.938 21.374L8.062 243.908A47.994 47.994 0 0 0 0 270.533V400c0 26.51 21.49 48 48 48h480c26.51 0 48-21.49 48-48V270.533a47.994 47.994 0 0 0-8.062-26.625zM162.252 128h251.497l85.333 128H376l-32 64H232l-32-64H76.918l85.334-128z\"]\n};\nvar faIndent = {\n prefix: 'fas',\n iconName: 'indent',\n icon: [448, 512, [], \"f03c\", \"M27.31 363.3l96-96a16 16 0 0 0 0-22.62l-96-96C17.27 138.66 0 145.78 0 160v192c0 14.31 17.33 21.3 27.31 11.3zM432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-128H204.83A12.82 12.82 0 0 0 192 300.83v38.34A12.82 12.82 0 0 0 204.83 352h230.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288zm0-128H204.83A12.82 12.82 0 0 0 192 172.83v38.34A12.82 12.82 0 0 0 204.83 224h230.34A12.82 12.82 0 0 0 448 211.17v-38.34A12.82 12.82 0 0 0 435.17 160zM432 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faIndustry = {\n prefix: 'fas',\n iconName: 'industry',\n icon: [512, 512, [], \"f275\", \"M475.115 163.781L336 252.309v-68.28c0-18.916-20.931-30.399-36.885-20.248L160 252.309V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56v400c0 13.255 10.745 24 24 24h464c13.255 0 24-10.745 24-24V184.029c0-18.917-20.931-30.399-36.885-20.248z\"]\n};\nvar faInfinity = {\n prefix: 'fas',\n iconName: 'infinity',\n icon: [640, 512, [], \"f534\", \"M471.1 96C405 96 353.3 137.3 320 174.6 286.7 137.3 235 96 168.9 96 75.8 96 0 167.8 0 256s75.8 160 168.9 160c66.1 0 117.8-41.3 151.1-78.6 33.3 37.3 85 78.6 151.1 78.6 93.1 0 168.9-71.8 168.9-160S564.2 96 471.1 96zM168.9 320c-40.2 0-72.9-28.7-72.9-64s32.7-64 72.9-64c38.2 0 73.4 36.1 94 64-20.4 27.6-55.9 64-94 64zm302.2 0c-38.2 0-73.4-36.1-94-64 20.4-27.6 55.9-64 94-64 40.2 0 72.9 28.7 72.9 64s-32.7 64-72.9 64z\"]\n};\nvar faInfo = {\n prefix: 'fas',\n iconName: 'info',\n icon: [192, 512, [], \"f129\", \"M20 424.229h20V279.771H20c-11.046 0-20-8.954-20-20V212c0-11.046 8.954-20 20-20h112c11.046 0 20 8.954 20 20v212.229h20c11.046 0 20 8.954 20 20V492c0 11.046-8.954 20-20 20H20c-11.046 0-20-8.954-20-20v-47.771c0-11.046 8.954-20 20-20zM96 0C56.235 0 24 32.235 24 72s32.235 72 72 72 72-32.235 72-72S135.764 0 96 0z\"]\n};\nvar faInfoCircle = {\n prefix: 'fas',\n iconName: 'info-circle',\n icon: [512, 512, [], \"f05a\", \"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"]\n};\nvar faItalic = {\n prefix: 'fas',\n iconName: 'italic',\n icon: [320, 512, [], \"f033\", \"M320 48v32a16 16 0 0 1-16 16h-62.76l-80 320H208a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h62.76l80-320H112a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h192a16 16 0 0 1 16 16z\"]\n};\nvar faJedi = {\n prefix: 'fas',\n iconName: 'jedi',\n icon: [576, 512, [], \"f669\", \"M535.95308,352c-42.64069,94.17188-137.64086,160-247.9848,160q-6.39844,0-12.84377-.29688C171.15558,506.9375,81.26481,442.23438,40.01474,352H79.93668L21.3272,293.40625a264.82522,264.82522,0,0,1-5.10938-39.42187,273.6653,273.6653,0,0,1,.5-29.98438H63.93665L22.546,182.625A269.79782,269.79782,0,0,1,130.51489,20.54688a16.06393,16.06393,0,0,1,9.28127-3,16.36332,16.36332,0,0,1,13.5,7.25,16.02739,16.02739,0,0,1,1.625,15.09374,138.387,138.387,0,0,0-9.84376,51.26563c0,45.10937,21.04691,86.57813,57.71884,113.73437a16.29989,16.29989,0,0,1,1.20313,25.39063c-26.54692,23.98437-41.17194,56.5-41.17194,91.57813,0,60.03124,42.95319,110.28124,99.89079,121.92187l2.5-65.26563L238.062,397a8.33911,8.33911,0,0,1-10-.75,8.025,8.025,0,0,1-1.39063-9.9375l20.125-33.76562-42.06257-8.73438a7.9898,7.9898,0,0,1,0-15.65625l42.06257-8.71875-20.10941-33.73438a7.99122,7.99122,0,0,1,11.35939-10.71874L268.437,295.64062,279.95265,7.67188a7.97138,7.97138,0,0,1,8-7.67188h.04687a8.02064,8.02064,0,0,1,7.95314,7.70312L307.48394,295.625l30.39068-20.67188a8.08327,8.08327,0,0,1,10,.8125,7.99866,7.99866,0,0,1,1.39062,9.90626L329.12461,319.4375l42.07819,8.73438a7.99373,7.99373,0,0,1,0,15.65624l-42.07819,8.71876,20.1094,33.73437a7.97791,7.97791,0,0,1-1.32812,9.92187A8.25739,8.25739,0,0,1,337.87462,397L310.7027,378.53125l2.5,65.34375c48.48446-9.40625,87.57828-48.15625,97.31267-96.5A123.52652,123.52652,0,0,0,371.9528,230.29688a16.30634,16.30634,0,0,1,1.20313-25.42188c36.65631-27.17188,57.6876-68.60938,57.6876-113.73438a138.01689,138.01689,0,0,0-9.85939-51.3125,15.98132,15.98132,0,0,1,1.60937-15.09374,16.36914,16.36914,0,0,1,13.5-7.23438,16.02453,16.02453,0,0,1,9.25,2.98438A271.26947,271.26947,0,0,1,553.25,182.76562L511.99992,224h46.9532C559.3125,229.76562,560,235.45312,560,241.26562a270.092,270.092,0,0,1-5.125,51.85938L495.98427,352Z\"]\n};\nvar faJoint = {\n prefix: 'fas',\n iconName: 'joint',\n icon: [640, 512, [], \"f595\", \"M444.34 181.1c22.38 15.68 35.66 41.16 35.66 68.59V280c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-30.31c0-43.24-21.01-83.41-56.34-108.06C463.85 125.02 448 99.34 448 70.31V8c0-4.42-3.58-8-8-8h-48c-4.42 0-8 3.58-8 8v66.4c0 43.69 24.56 81.63 60.34 106.7zM194.97 358.98C126.03 370.07 59.69 394.69 0 432c83.65 52.28 180.3 80 278.94 80h88.57L254.79 380.49c-14.74-17.2-37.45-25.11-59.82-21.51zM553.28 87.09c-5.67-3.8-9.28-9.96-9.28-16.78V8c0-4.42-3.58-8-8-8h-48c-4.42 0-8 3.58-8 8v62.31c0 22.02 10.17 43.41 28.64 55.39C550.79 153.04 576 199.54 576 249.69V280c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-30.31c0-65.44-32.41-126.19-86.72-162.6zM360.89 352.05c-34.4.06-86.81.15-88.21.17l117.8 137.43A63.987 63.987 0 0 0 439.07 512h88.45L409.57 374.4a63.955 63.955 0 0 0-48.68-22.35zM616 352H432l117.99 137.65A63.987 63.987 0 0 0 598.58 512H616c13.25 0 24-10.75 24-24V376c0-13.26-10.75-24-24-24z\"]\n};\nvar faJournalWhills = {\n prefix: 'fas',\n iconName: 'journal-whills',\n icon: [448, 512, [], \"f66a\", \"M438.40625,377.59375c-3.20313,12.8125-3.20313,57.60937,0,73.60937Q447.9922,460.78907,448,470.40625v16c0,16-12.79688,25.59375-25.59375,25.59375H96c-54.40625,0-96-41.59375-96-96V96C0,41.59375,41.59375,0,96,0H422.40625C438.40625,0,448,9.59375,448,25.59375v332.8125Q448,372.79688,438.40625,377.59375ZM380.79688,384H96c-16,0-32,12.79688-32,32s12.79688,32,32,32H380.79688ZM128.01562,176.01562c0,.51563.14063.98438.14063,1.5l37.10937,32.46876A7.99954,7.99954,0,0,1,160,224h-.01562a9.17678,9.17678,0,0,1-5.25-1.98438L131.14062,201.375C142.6875,250.95312,186.90625,288,240,288s97.3125-37.04688,108.875-86.625l-23.59375,20.64062a8.02516,8.02516,0,0,1-5.26563,1.96876H320a9.14641,9.14641,0,0,1-6.01562-2.71876A9.26508,9.26508,0,0,1,312,216a9.097,9.097,0,0,1,2.73438-6.01562l37.10937-32.46876c.01563-.53124.15625-1,.15625-1.51562,0-11.04688-2.09375-21.51562-5.06251-31.59375l-21.26562,21.25a8.00467,8.00467,0,0,1-11.32812-11.3125l26.42187-26.40625a111.81517,111.81517,0,0,0-46.35937-49.26562,63.02336,63.02336,0,0,1-14.0625,82.64062A55.83846,55.83846,0,0,1,251.625,254.73438l-1.42188-34.28126,12.67188,8.625a3.967,3.967,0,0,0,2.25.6875,3.98059,3.98059,0,0,0,3.43749-6.03124l-8.53124-14.3125,17.90625-3.71876a4.00647,4.00647,0,0,0,0-7.84374l-17.90625-3.71876,8.53124-14.3125a3.98059,3.98059,0,0,0-3.43749-6.03124,4.726,4.726,0,0,0-2.25.67187L248.6875,184.125,244,71.82812a4.00386,4.00386,0,0,0-8,0l-4.625,110.8125-12-8.15624a4.003,4.003,0,0,0-5.68751,5.35937l8.53126,14.3125L204.3125,197.875a3.99686,3.99686,0,0,0,0,7.82812l17.90625,3.73438-8.53126,14.29688a4.72469,4.72469,0,0,0-.56249,2.04687,4.59547,4.59547,0,0,0,1.25,2.90625,4.01059,4.01059,0,0,0,2.75,1.09375,4.09016,4.09016,0,0,0,2.25-.6875l10.35937-7.04687L228.375,254.76562a55.86414,55.86414,0,0,1-28.71875-93.45312,63.01119,63.01119,0,0,1-14.04688-82.65625,111.93158,111.93158,0,0,0-46.375,49.26563l26.42187,26.42187a7.99917,7.99917,0,0,1-11.3125,11.3125l-21.26563-21.26563C130.09375,154.48438,128,164.95312,128.01562,176.01562Z\"]\n};\nvar faKaaba = {\n prefix: 'fas',\n iconName: 'kaaba',\n icon: [576, 512, [], \"f66b\", \"M554.12 83.51L318.36 4.93a95.962 95.962 0 0 0-60.71 0L21.88 83.51A32.006 32.006 0 0 0 0 113.87v49.01l265.02-79.51c15.03-4.5 30.92-4.5 45.98 0l265 79.51v-49.01c0-13.77-8.81-26-21.88-30.36zm-279.9 30.52L0 196.3v228.38c0 15 10.42 27.98 25.06 31.24l242.12 53.8a95.937 95.937 0 0 0 41.65 0l242.12-53.8c14.64-3.25 25.06-16.24 25.06-31.24V196.29l-274.2-82.26c-9.04-2.72-18.59-2.72-27.59 0zM128 230.11c0 3.61-2.41 6.77-5.89 7.72l-80 21.82C37.02 261.03 32 257.2 32 251.93v-16.58c0-3.61 2.41-6.77 5.89-7.72l80-21.82c5.09-1.39 10.11 2.44 10.11 7.72v16.58zm144-39.28c0 3.61-2.41 6.77-5.89 7.72l-96 26.18c-5.09 1.39-10.11-2.44-10.11-7.72v-16.58c0-3.61 2.41-6.77 5.89-7.72l96-26.18c5.09-1.39 10.11 2.44 10.11 7.72v16.58zm176 22.7c0-5.28 5.02-9.11 10.11-7.72l80 21.82c3.48.95 5.89 4.11 5.89 7.72v16.58c0 5.28-5.02 9.11-10.11 7.72l-80-21.82a7.997 7.997 0 0 1-5.89-7.72v-16.58zm-144-39.27c0-5.28 5.02-9.11 10.11-7.72l96 26.18c3.48.95 5.89 4.11 5.89 7.72v16.58c0 5.28-5.02 9.11-10.11 7.72l-96-26.18a7.997 7.997 0 0 1-5.89-7.72v-16.58z\"]\n};\nvar faKey = {\n prefix: 'fas',\n iconName: 'key',\n icon: [512, 512, [], \"f084\", \"M512 176.001C512 273.203 433.202 352 336 352c-11.22 0-22.19-1.062-32.827-3.069l-24.012 27.014A23.999 23.999 0 0 1 261.223 384H224v40c0 13.255-10.745 24-24 24h-40v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24v-78.059c0-6.365 2.529-12.47 7.029-16.971l161.802-161.802C163.108 213.814 160 195.271 160 176 160 78.798 238.797.001 335.999 0 433.488-.001 512 78.511 512 176.001zM336 128c0 26.51 21.49 48 48 48s48-21.49 48-48-21.49-48-48-48-48 21.49-48 48z\"]\n};\nvar faKeyboard = {\n prefix: 'fas',\n iconName: 'keyboard',\n icon: [576, 512, [], \"f11c\", \"M528 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM128 180v-40c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm288 0v-40c0-6.627-5.373-12-12-12H172c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h232c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12z\"]\n};\nvar faKhanda = {\n prefix: 'fas',\n iconName: 'khanda',\n icon: [512, 512, [], \"f66d\", \"M415.81 66c-6.37-3.5-14.37-2.33-19.36 3.02a15.974 15.974 0 0 0-1.91 19.52c16.49 26.16 25.2 56.39 25.2 87.41-.19 53.25-26.77 102.69-71.27 132.41l-76.63 53.35v-20.1l44.05-36.09c3.92-4.2 5-10.09 2.81-15.28L310.85 273c33.84-19.26 56.94-55.25 56.94-96.99 0-40.79-22.02-76.13-54.59-95.71l5.22-11.44c2.34-5.53.93-11.83-3.57-16.04L255.86 0l-58.99 52.81c-4.5 4.21-5.9 10.51-3.57 16.04l5.22 11.44c-32.57 19.58-54.59 54.93-54.59 95.72 0 41.75 23.09 77.73 56.94 96.99l-7.85 17.24c-2.19 5.18-1.1 11.07 2.81 15.28l44.05 36.09v19.9l-76.59-53.33C119.02 278.62 92.44 229.19 92.26 176c0-31.08 8.71-61.31 25.2-87.47 3.87-6.16 2.4-13.77-2.59-19.08-5-5.34-13.68-6.2-20.02-2.7C16.32 109.6-22.3 205.3 13.36 295.99c7.07 17.99 17.89 34.38 30.46 49.06l55.97 65.36c4.87 5.69 13.04 7.24 19.65 3.72l79.35-42.23L228 392.23l-47.08 32.78c-1.67-.37-3.23-1.01-5.01-1.01-13.25 0-23.99 10.74-23.99 24 0 13.25 10.74 24 23.99 24 12.1 0 21.69-9.11 23.33-20.76l40.63-28.28v29.95c-9.39 5.57-15.99 15.38-15.99 27.1 0 17.67 14.32 32 31.98 32s31.98-14.33 31.98-32c0-11.71-6.61-21.52-15.99-27.1v-30.15l40.91 28.48C314.41 462.89 324 472 336.09 472c13.25 0 23.99-10.75 23.99-24 0-13.26-10.74-24-23.99-24-1.78 0-3.34.64-5.01 1.01L284 392.23l29.21-20.34 79.35 42.23c6.61 3.52 14.78 1.97 19.65-3.71l52.51-61.31c18.87-22.02 34-47.5 41.25-75.59 21.62-83.66-16.45-167.27-90.16-207.51zm-95.99 110c0 22.3-11.49 41.92-28.83 53.38l-5.65-12.41c-8.75-24.52-8.75-51.04 0-75.56l7.83-17.18c16.07 11.65 26.65 30.45 26.65 51.77zm-127.93 0c0-21.32 10.58-40.12 26.66-51.76l7.83 17.18c8.75 24.52 8.75 51.03 0 75.56l-5.65 12.41c-17.34-11.46-28.84-31.09-28.84-53.39z\"]\n};\nvar faKiss = {\n prefix: 'fas',\n iconName: 'kiss',\n icon: [496, 512, [], \"f596\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm136 156c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-6.1-12.2 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.6-3.6-4.8-16.5 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C290.6 368.7 304 383 304 396zm24-156c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faKissBeam = {\n prefix: 'fas',\n iconName: 'kiss-beam',\n icon: [496, 512, [], \"f597\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-39 219.9l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.5 8.5-10.9 12-15.1 4.5zM304 396c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-6.1-12.2 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.6-3.6-4.8-16.5 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C290.6 368.7 304 383 304 396zm65-168.1l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.5 8.5-10.9 12-15.1 4.5z\"]\n};\nvar faKissWinkHeart = {\n prefix: 'fas',\n iconName: 'kiss-wink-heart',\n icon: [504, 512, [], \"f598\", \"M501.1 402.5c-8-20.8-31.5-31.5-53.1-25.9l-8.4 2.2-2.3-8.4c-5.9-21.4-27-36.5-49-33-25.2 4-40.6 28.6-34 52.6l22.9 82.6c1.5 5.3 7 8.5 12.4 7.1l83-21.5c24.1-6.3 37.7-31.8 28.5-55.7zm-177.6-4c-5.6-20.3-2.3-42 9-59.7 29.7-46.3 98.7-45.5 127.8 4.3 6.4.1 12.6 1.4 18.6 2.9 10.9-27.9 17.1-58.2 17.1-90C496 119 385 8 248 8S0 119 0 256s111 248 248 248c35.4 0 68.9-7.5 99.4-20.9-.3-.7-23.9-84.6-23.9-84.6zM168 240c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm120 156c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-5.7-12.3 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.8-3.7-4.6-16.6 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C274.6 368.7 288 383 288 396zm16-179c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S400 181 404 206.2c1.7 11.1-11.3 18.3-19.8 10.8l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L304 217z\"]\n};\nvar faKiwiBird = {\n prefix: 'fas',\n iconName: 'kiwi-bird',\n icon: [576, 512, [], \"f535\", \"M575.81 217.98C572.64 157.41 518.28 112 457.63 112h-9.37c-52.82 0-104.25-16.25-147.74-46.24-41.99-28.96-96.04-41.62-153.21-28.7C129.3 41.12-.08 78.24 0 224c.04 70.95 38.68 132.8 95.99 166.01V464c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-54.26c15.36 3.96 31.4 6.26 48 6.26 5.44 0 10.68-.73 16-1.18V464c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-59.43c14.24-5.06 27.88-11.39 40.34-19.51C342.07 355.25 393.86 336 448.46 336c25.48 0 16.01-.31 23.05-.78l74.41 136.44c2.86 5.23 8.3 8.34 14.05 8.34 1.31 0 2.64-.16 3.95-.5 7.09-1.8 12.05-8.19 12.05-15.5 0 0 .14-240.24-.16-246.02zM463.97 248c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm80 153.25l-39.86-73.08c15.12-5.83 28.73-14.6 39.86-25.98v99.06z\"]\n};\nvar faLandmark = {\n prefix: 'fas',\n iconName: 'landmark',\n icon: [512, 512, [], \"f66f\", \"M501.62 92.11L267.24 2.04a31.958 31.958 0 0 0-22.47 0L10.38 92.11A16.001 16.001 0 0 0 0 107.09V144c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-36.91c0-6.67-4.14-12.64-10.38-14.98zM64 192v160H48c-8.84 0-16 7.16-16 16v48h448v-48c0-8.84-7.16-16-16-16h-16V192h-64v160h-96V192h-64v160h-96V192H64zm432 256H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faLanguage = {\n prefix: 'fas',\n iconName: 'language',\n icon: [640, 512, [], \"f1ab\", \"M152.1 236.2c-3.5-12.1-7.8-33.2-7.8-33.2h-.5s-4.3 21.1-7.8 33.2l-11.1 37.5H163zM616 96H336v320h280c13.3 0 24-10.7 24-24V120c0-13.3-10.7-24-24-24zm-24 120c0 6.6-5.4 12-12 12h-11.4c-6.9 23.6-21.7 47.4-42.7 69.9 8.4 6.4 17.1 12.5 26.1 18 5.5 3.4 7.3 10.5 4.1 16.2l-7.9 13.9c-3.4 5.9-10.9 7.8-16.7 4.3-12.6-7.8-24.5-16.1-35.4-24.9-10.9 8.7-22.7 17.1-35.4 24.9-5.8 3.5-13.3 1.6-16.7-4.3l-7.9-13.9c-3.2-5.6-1.4-12.8 4.2-16.2 9.3-5.7 18-11.7 26.1-18-7.9-8.4-14.9-17-21-25.7-4-5.7-2.2-13.6 3.7-17.1l6.5-3.9 7.3-4.3c5.4-3.2 12.4-1.7 16 3.4 5 7 10.8 14 17.4 20.9 13.5-14.2 23.8-28.9 30-43.2H412c-6.6 0-12-5.4-12-12v-16c0-6.6 5.4-12 12-12h64v-16c0-6.6 5.4-12 12-12h16c6.6 0 12 5.4 12 12v16h64c6.6 0 12 5.4 12 12zM0 120v272c0 13.3 10.7 24 24 24h280V96H24c-13.3 0-24 10.7-24 24zm58.9 216.1L116.4 167c1.7-4.9 6.2-8.1 11.4-8.1h32.5c5.1 0 9.7 3.3 11.4 8.1l57.5 169.1c2.6 7.8-3.1 15.9-11.4 15.9h-22.9a12 12 0 0 1-11.5-8.6l-9.4-31.9h-60.2l-9.1 31.8c-1.5 5.1-6.2 8.7-11.5 8.7H70.3c-8.2 0-14-8.1-11.4-15.9z\"]\n};\nvar faLaptop = {\n prefix: 'fas',\n iconName: 'laptop',\n icon: [640, 512, [], \"f109\", \"M624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33.02-17.47-32.77-32H16c-8.8 0-16 7.2-16 16v16c0 35.2 28.8 64 64 64h512c35.2 0 64-28.8 64-64v-16c0-8.8-7.2-16-16-16zM576 48c0-26.4-21.6-48-48-48H112C85.6 0 64 21.6 64 48v336h512V48zm-64 272H128V64h384v256z\"]\n};\nvar faLaptopCode = {\n prefix: 'fas',\n iconName: 'laptop-code',\n icon: [640, 512, [], \"f5fc\", \"M255.03 261.65c6.25 6.25 16.38 6.25 22.63 0l11.31-11.31c6.25-6.25 6.25-16.38 0-22.63L253.25 192l35.71-35.72c6.25-6.25 6.25-16.38 0-22.63l-11.31-11.31c-6.25-6.25-16.38-6.25-22.63 0l-58.34 58.34c-6.25 6.25-6.25 16.38 0 22.63l58.35 58.34zm96.01-11.3l11.31 11.31c6.25 6.25 16.38 6.25 22.63 0l58.34-58.34c6.25-6.25 6.25-16.38 0-22.63l-58.34-58.34c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63L386.75 192l-35.71 35.72c-6.25 6.25-6.25 16.38 0 22.63zM624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33.02-17.47-32.77-32H16c-8.8 0-16 7.2-16 16v16c0 35.2 28.8 64 64 64h512c35.2 0 64-28.8 64-64v-16c0-8.8-7.2-16-16-16zM576 48c0-26.4-21.6-48-48-48H112C85.6 0 64 21.6 64 48v336h512V48zm-64 272H128V64h384v256z\"]\n};\nvar faLaptopHouse = {\n prefix: 'fas',\n iconName: 'laptop-house',\n icon: [640, 512, [], \"e066\", \"M272,288H208a16,16,0,0,1-16-16V208a16,16,0,0,1,16-16h64a16,16,0,0,1,16,16v37.12C299.11,232.24,315,224,332.8,224H469.74l6.65-7.53A16.51,16.51,0,0,0,480,207a16.31,16.31,0,0,0-4.75-10.61L416,144V48a16,16,0,0,0-16-16H368a16,16,0,0,0-16,16V87.3L263.5,8.92C258,4,247.45,0,240.05,0s-17.93,4-23.47,8.92L4.78,196.42A16.15,16.15,0,0,0,0,207a16.4,16.4,0,0,0,3.55,9.39L22.34,237.7A16.22,16.22,0,0,0,33,242.48,16.51,16.51,0,0,0,42.34,239L64,219.88V384a32,32,0,0,0,32,32H272ZM629.33,448H592V288c0-17.67-12.89-32-28.8-32H332.8c-15.91,0-28.8,14.33-28.8,32V448H266.67A10.67,10.67,0,0,0,256,458.67v10.66A42.82,42.82,0,0,0,298.6,512H597.4A42.82,42.82,0,0,0,640,469.33V458.67A10.67,10.67,0,0,0,629.33,448ZM544,448H352V304H544Z\"]\n};\nvar faLaptopMedical = {\n prefix: 'fas',\n iconName: 'laptop-medical',\n icon: [640, 512, [], \"f812\", \"M232 224h56v56a8 8 0 0 0 8 8h48a8 8 0 0 0 8-8v-56h56a8 8 0 0 0 8-8v-48a8 8 0 0 0-8-8h-56v-56a8 8 0 0 0-8-8h-48a8 8 0 0 0-8 8v56h-56a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8zM576 48a48.14 48.14 0 0 0-48-48H112a48.14 48.14 0 0 0-48 48v336h512zm-64 272H128V64h384zm112 96H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33-17.47-32.77-32H16a16 16 0 0 0-16 16v16a64.19 64.19 0 0 0 64 64h512a64.19 64.19 0 0 0 64-64v-16a16 16 0 0 0-16-16z\"]\n};\nvar faLaugh = {\n prefix: 'fas',\n iconName: 'laugh',\n icon: [496, 512, [], \"f599\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 152c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm88 272h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18-8.9 71-69.5 126-142.9 126z\"]\n};\nvar faLaughBeam = {\n prefix: 'fas',\n iconName: 'laugh-beam',\n icon: [496, 512, [], \"f59a\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm24 199.4c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.8 4.1-15.1-4.5zm-160 0c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.3 7.4-15.8 4-15.1-4.5zM398.9 306C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z\"]\n};\nvar faLaughSquint = {\n prefix: 'fas',\n iconName: 'laugh-squint',\n icon: [496, 512, [], \"f59b\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 161.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 180l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM398.9 306C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z\"]\n};\nvar faLaughWink = {\n prefix: 'fas',\n iconName: 'laugh-wink',\n icon: [496, 512, [], \"f59c\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm20.1 198.1c4-25.2 34.2-42.1 59.9-42.1s55.9 16.9 59.9 42.1c1.7 11.1-11.4 18.3-19.8 10.8l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L288 217c-8.4 7.4-21.6.3-19.9-10.9zM168 160c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm230.9 146C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z\"]\n};\nvar faLayerGroup = {\n prefix: 'fas',\n iconName: 'layer-group',\n icon: [512, 512, [], \"f5fd\", \"M12.41 148.02l232.94 105.67c6.8 3.09 14.49 3.09 21.29 0l232.94-105.67c16.55-7.51 16.55-32.52 0-40.03L266.65 2.31a25.607 25.607 0 0 0-21.29 0L12.41 107.98c-16.55 7.51-16.55 32.53 0 40.04zm487.18 88.28l-58.09-26.33-161.64 73.27c-7.56 3.43-15.59 5.17-23.86 5.17s-16.29-1.74-23.86-5.17L70.51 209.97l-58.1 26.33c-16.55 7.5-16.55 32.5 0 40l232.94 105.59c6.8 3.08 14.49 3.08 21.29 0L499.59 276.3c16.55-7.5 16.55-32.5 0-40zm0 127.8l-57.87-26.23-161.86 73.37c-7.56 3.43-15.59 5.17-23.86 5.17s-16.29-1.74-23.86-5.17L70.29 337.87 12.41 364.1c-16.55 7.5-16.55 32.5 0 40l232.94 105.59c6.8 3.08 14.49 3.08 21.29 0L499.59 404.1c16.55-7.5 16.55-32.5 0-40z\"]\n};\nvar faLeaf = {\n prefix: 'fas',\n iconName: 'leaf',\n icon: [576, 512, [], \"f06c\", \"M546.2 9.7c-5.6-12.5-21.6-13-28.3-1.2C486.9 62.4 431.4 96 368 96h-80C182 96 96 182 96 288c0 7 .8 13.7 1.5 20.5C161.3 262.8 253.4 224 384 224c8.8 0 16 7.2 16 16s-7.2 16-16 16C132.6 256 26 410.1 2.4 468c-6.6 16.3 1.2 34.9 17.5 41.6 16.4 6.8 35-1.1 41.8-17.3 1.5-3.6 20.9-47.9 71.9-90.6 32.4 43.9 94 85.8 174.9 77.2C465.5 467.5 576 326.7 576 154.3c0-50.2-10.8-102.2-29.8-144.6z\"]\n};\nvar faLemon = {\n prefix: 'fas',\n iconName: 'lemon',\n icon: [512, 512, [], \"f094\", \"M489.038 22.963C465.944-.13 434.648-5.93 413.947 6.129c-58.906 34.312-181.25-53.077-321.073 86.746S40.441 355.041 6.129 413.945c-12.059 20.702-6.26 51.999 16.833 75.093 23.095 23.095 54.392 28.891 75.095 16.832 58.901-34.31 181.246 53.079 321.068-86.743S471.56 156.96 505.871 98.056c12.059-20.702 6.261-51.999-16.833-75.093zM243.881 95.522c-58.189 14.547-133.808 90.155-148.358 148.358-1.817 7.27-8.342 12.124-15.511 12.124-1.284 0-2.59-.156-3.893-.481-8.572-2.144-13.784-10.83-11.642-19.403C81.901 166.427 166.316 81.93 236.119 64.478c8.575-2.143 17.261 3.069 19.403 11.642s-3.069 17.259-11.641 19.402z\"]\n};\nvar faLessThan = {\n prefix: 'fas',\n iconName: 'less-than',\n icon: [384, 512, [], \"f536\", \"M365.46 357.74L147.04 255.89l218.47-101.88c16.02-7.47 22.95-26.51 15.48-42.53l-13.52-29C360 66.46 340.96 59.53 324.94 67L18.48 209.91a32.014 32.014 0 0 0-18.48 29v34.24c0 12.44 7.21 23.75 18.48 29l306.31 142.83c16.06 7.49 35.15.54 42.64-15.52l13.56-29.08c7.49-16.06.54-35.15-15.53-42.64z\"]\n};\nvar faLessThanEqual = {\n prefix: 'fas',\n iconName: 'less-than-equal',\n icon: [448, 512, [], \"f537\", \"M54.98 214.2l301.41 119.87c18.39 6.03 38.71-2.54 45.38-19.15l12.09-30.08c6.68-16.61-2.82-34.97-21.21-41l-175.44-68.05 175.56-68.09c18.29-6 27.74-24.27 21.1-40.79l-12.03-29.92c-6.64-16.53-26.86-25.06-45.15-19.06L54.98 137.89C41.21 142.41 32 154.5 32 168.07v15.96c0 13.56 9.21 25.65 22.98 30.17zM424 400H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h400c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z\"]\n};\nvar faLevelDownAlt = {\n prefix: 'fas',\n iconName: 'level-down-alt',\n icon: [320, 512, [], \"f3be\", \"M313.553 392.331L209.587 504.334c-9.485 10.214-25.676 10.229-35.174 0L70.438 392.331C56.232 377.031 67.062 352 88.025 352H152V80H68.024a11.996 11.996 0 0 1-8.485-3.515l-56-56C-4.021 12.926 1.333 0 12.024 0H208c13.255 0 24 10.745 24 24v328h63.966c20.878 0 31.851 24.969 17.587 40.331z\"]\n};\nvar faLevelUpAlt = {\n prefix: 'fas',\n iconName: 'level-up-alt',\n icon: [320, 512, [], \"f3bf\", \"M313.553 119.669L209.587 7.666c-9.485-10.214-25.676-10.229-35.174 0L70.438 119.669C56.232 134.969 67.062 160 88.025 160H152v272H68.024a11.996 11.996 0 0 0-8.485 3.515l-56 56C-4.021 499.074 1.333 512 12.024 512H208c13.255 0 24-10.745 24-24V160h63.966c20.878 0 31.851-24.969 17.587-40.331z\"]\n};\nvar faLifeRing = {\n prefix: 'fas',\n iconName: 'life-ring',\n icon: [512, 512, [], \"f1cd\", \"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm173.696 119.559l-63.399 63.399c-10.987-18.559-26.67-34.252-45.255-45.255l63.399-63.399a218.396 218.396 0 0 1 45.255 45.255zM256 352c-53.019 0-96-42.981-96-96s42.981-96 96-96 96 42.981 96 96-42.981 96-96 96zM127.559 82.304l63.399 63.399c-18.559 10.987-34.252 26.67-45.255 45.255l-63.399-63.399a218.372 218.372 0 0 1 45.255-45.255zM82.304 384.441l63.399-63.399c10.987 18.559 26.67 34.252 45.255 45.255l-63.399 63.399a218.396 218.396 0 0 1-45.255-45.255zm302.137 45.255l-63.399-63.399c18.559-10.987 34.252-26.67 45.255-45.255l63.399 63.399a218.403 218.403 0 0 1-45.255 45.255z\"]\n};\nvar faLightbulb = {\n prefix: 'fas',\n iconName: 'lightbulb',\n icon: [352, 512, [], \"f0eb\", \"M96.06 454.35c.01 6.29 1.87 12.45 5.36 17.69l17.09 25.69a31.99 31.99 0 0 0 26.64 14.28h61.71a31.99 31.99 0 0 0 26.64-14.28l17.09-25.69a31.989 31.989 0 0 0 5.36-17.69l.04-38.35H96.01l.05 38.35zM0 176c0 44.37 16.45 84.85 43.56 115.78 16.52 18.85 42.36 58.23 52.21 91.45.04.26.07.52.11.78h160.24c.04-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45C335.55 260.85 352 220.37 352 176 352 78.61 272.91-.3 175.45 0 73.44.31 0 82.97 0 176zm176-80c-44.11 0-80 35.89-80 80 0 8.84-7.16 16-16 16s-16-7.16-16-16c0-61.76 50.24-112 112-112 8.84 0 16 7.16 16 16s-7.16 16-16 16z\"]\n};\nvar faLink = {\n prefix: 'fas',\n iconName: 'link',\n icon: [512, 512, [], \"f0c1\", \"M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 0 1-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0 1 20.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0 0 20.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 0 0-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z\"]\n};\nvar faLiraSign = {\n prefix: 'fas',\n iconName: 'lira-sign',\n icon: [384, 512, [], \"f195\", \"M371.994 256h-48.019C317.64 256 312 260.912 312 267.246 312 368 230.179 416 144 416V256.781l134.603-29.912A12 12 0 0 0 288 215.155v-40.976c0-7.677-7.109-13.38-14.603-11.714L144 191.219V160.78l134.603-29.912A12 12 0 0 0 288 119.154V78.179c0-7.677-7.109-13.38-14.603-11.714L144 95.219V44c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v68.997L9.397 125.131A12 12 0 0 0 0 136.845v40.976c0 7.677 7.109 13.38 14.603 11.714L64 178.558v30.439L9.397 221.131A12 12 0 0 0 0 232.845v40.976c0 7.677 7.109 13.38 14.603 11.714L64 274.558V468c0 6.627 5.373 12 12 12h79.583c134.091 0 223.255-77.834 228.408-211.592.261-6.782-5.211-12.408-11.997-12.408z\"]\n};\nvar faList = {\n prefix: 'fas',\n iconName: 'list',\n icon: [512, 512, [], \"f03a\", \"M80 368H16a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-64a16 16 0 0 0-16-16zm0-320H16A16 16 0 0 0 0 64v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16V64a16 16 0 0 0-16-16zm0 160H16a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-64a16 16 0 0 0-16-16zm416 176H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faListAlt = {\n prefix: 'fas',\n iconName: 'list-alt',\n icon: [512, 512, [], \"f022\", \"M464 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zM128 120c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm0 96c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm0 96c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm288-136v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12zm0 96v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12zm0 96v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12z\"]\n};\nvar faListOl = {\n prefix: 'fas',\n iconName: 'list-ol',\n icon: [512, 512, [], \"f0cb\", \"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"]\n};\nvar faListUl = {\n prefix: 'fas',\n iconName: 'list-ul',\n icon: [512, 512, [], \"f0ca\", \"M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm448 16H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faLocationArrow = {\n prefix: 'fas',\n iconName: 'location-arrow',\n icon: [512, 512, [], \"f124\", \"M444.52 3.52L28.74 195.42c-47.97 22.39-31.98 92.75 19.19 92.75h175.91v175.91c0 51.17 70.36 67.17 92.75 19.19l191.9-415.78c15.99-38.39-25.59-79.97-63.97-63.97z\"]\n};\nvar faLock = {\n prefix: 'fas',\n iconName: 'lock',\n icon: [448, 512, [], \"f023\", \"M400 224h-24v-72C376 68.2 307.8 0 224 0S72 68.2 72 152v72H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48zm-104 0H152v-72c0-39.7 32.3-72 72-72s72 32.3 72 72v72z\"]\n};\nvar faLockOpen = {\n prefix: 'fas',\n iconName: 'lock-open',\n icon: [576, 512, [], \"f3c1\", \"M423.5 0C339.5.3 272 69.5 272 153.5V224H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48h-48v-71.1c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v80c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-80C576 68 507.5-.3 423.5 0z\"]\n};\nvar faLongArrowAltDown = {\n prefix: 'fas',\n iconName: 'long-arrow-alt-down',\n icon: [256, 512, [], \"f309\", \"M168 345.941V44c0-6.627-5.373-12-12-12h-56c-6.627 0-12 5.373-12 12v301.941H41.941c-21.382 0-32.09 25.851-16.971 40.971l86.059 86.059c9.373 9.373 24.569 9.373 33.941 0l86.059-86.059c15.119-15.119 4.411-40.971-16.971-40.971H168z\"]\n};\nvar faLongArrowAltLeft = {\n prefix: 'fas',\n iconName: 'long-arrow-alt-left',\n icon: [448, 512, [], \"f30a\", \"M134.059 296H436c6.627 0 12-5.373 12-12v-56c0-6.627-5.373-12-12-12H134.059v-46.059c0-21.382-25.851-32.09-40.971-16.971L7.029 239.029c-9.373 9.373-9.373 24.569 0 33.941l86.059 86.059c15.119 15.119 40.971 4.411 40.971-16.971V296z\"]\n};\nvar faLongArrowAltRight = {\n prefix: 'fas',\n iconName: 'long-arrow-alt-right',\n icon: [448, 512, [], \"f30b\", \"M313.941 216H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12h301.941v46.059c0 21.382 25.851 32.09 40.971 16.971l86.059-86.059c9.373-9.373 9.373-24.569 0-33.941l-86.059-86.059c-15.119-15.119-40.971-4.411-40.971 16.971V216z\"]\n};\nvar faLongArrowAltUp = {\n prefix: 'fas',\n iconName: 'long-arrow-alt-up',\n icon: [256, 512, [], \"f30c\", \"M88 166.059V468c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12V166.059h46.059c21.382 0 32.09-25.851 16.971-40.971l-86.059-86.059c-9.373-9.373-24.569-9.373-33.941 0l-86.059 86.059c-15.119 15.119-4.411 40.971 16.971 40.971H88z\"]\n};\nvar faLowVision = {\n prefix: 'fas',\n iconName: 'low-vision',\n icon: [576, 512, [], \"f2a8\", \"M569.344 231.631C512.96 135.949 407.81 72 288 72c-28.468 0-56.102 3.619-82.451 10.409L152.778 10.24c-7.601-10.858-22.564-13.5-33.423-5.9l-13.114 9.178c-10.86 7.601-13.502 22.566-5.9 33.426l43.131 58.395C89.449 131.73 40.228 174.683 6.682 231.581c-.01.017-.023.033-.034.05-8.765 14.875-8.964 33.528 0 48.739 38.5 65.332 99.742 115.862 172.859 141.349L55.316 244.302A272.194 272.194 0 0 1 83.61 208.39l119.4 170.58h.01l40.63 58.04a330.055 330.055 0 0 0 78.94 1.17l-189.98-271.4a277.628 277.628 0 0 1 38.777-21.563l251.836 356.544c7.601 10.858 22.564 13.499 33.423 5.9l13.114-9.178c10.86-7.601 13.502-22.567 5.9-33.426l-43.12-58.377-.007-.009c57.161-27.978 104.835-72.04 136.81-126.301a47.938 47.938 0 0 0 .001-48.739zM390.026 345.94l-19.066-27.23c24.682-32.567 27.711-76.353 8.8-111.68v.03c0 23.65-19.17 42.82-42.82 42.82-23.828 0-42.82-19.349-42.82-42.82 0-23.65 19.17-42.82 42.82-42.82h.03c-24.75-13.249-53.522-15.643-79.51-7.68l-19.068-27.237C253.758 123.306 270.488 120 288 120c75.162 0 136 60.826 136 136 0 34.504-12.833 65.975-33.974 89.94z\"]\n};\nvar faLuggageCart = {\n prefix: 'fas',\n iconName: 'luggage-cart',\n icon: [640, 512, [], \"f59d\", \"M224 320h32V96h-32c-17.67 0-32 14.33-32 32v160c0 17.67 14.33 32 32 32zm352-32V128c0-17.67-14.33-32-32-32h-32v224h32c17.67 0 32-14.33 32-32zm48 96H128V16c0-8.84-7.16-16-16-16H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h48v368c0 8.84 7.16 16 16 16h82.94c-1.79 5.03-2.94 10.36-2.94 16 0 26.51 21.49 48 48 48s48-21.49 48-48c0-5.64-1.15-10.97-2.94-16h197.88c-1.79 5.03-2.94 10.36-2.94 16 0 26.51 21.49 48 48 48s48-21.49 48-48c0-5.64-1.15-10.97-2.94-16H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM480 96V48c0-26.51-21.49-48-48-48h-96c-26.51 0-48 21.49-48 48v272h192V96zm-48 0h-96V48h96v48z\"]\n};\nvar faLungs = {\n prefix: 'fas',\n iconName: 'lungs',\n icon: [640, 512, [], \"f604\", \"M636.11 390.15C614.44 308.85 580.07 231 534.1 159.13 511.98 124.56 498.03 96 454.05 96 415.36 96 384 125.42 384 161.71v60.11l-32.88-21.92a15.996 15.996 0 0 1-7.12-13.31V16c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v170.59c0 5.35-2.67 10.34-7.12 13.31L256 221.82v-60.11C256 125.42 224.64 96 185.95 96c-43.98 0-57.93 28.56-80.05 63.13C59.93 231 25.56 308.85 3.89 390.15 1.3 399.84 0 409.79 0 419.78c0 61.23 62.48 105.44 125.24 88.62l59.5-15.95c42.18-11.3 71.26-47.47 71.26-88.62v-87.49l-85.84 57.23a7.992 7.992 0 0 1-11.09-2.22l-8.88-13.31a7.992 7.992 0 0 1 2.22-11.09L320 235.23l167.59 111.72a7.994 7.994 0 0 1 2.22 11.09l-8.88 13.31a7.994 7.994 0 0 1-11.09 2.22L384 316.34v87.49c0 41.15 29.08 77.31 71.26 88.62l59.5 15.95C577.52 525.22 640 481.01 640 419.78c0-9.99-1.3-19.94-3.89-29.63z\"]\n};\nvar faLungsVirus = {\n prefix: 'fas',\n iconName: 'lungs-virus',\n icon: [640, 512, [], \"e067\", \"M344,150.68V16A16,16,0,0,0,328,0H312a16,16,0,0,0-16,16V150.68a46.45,46.45,0,0,1,48,0ZM195.54,444.46a48.06,48.06,0,0,1,0-67.88l8.58-8.58H192a48,48,0,0,1,0-96h12.12l-8.58-8.57a48,48,0,0,1,60.46-74V161.75C256,125.38,224.62,96,186,96c-44,0-58,28.5-80.12,63.13a819.52,819.52,0,0,0-102,231A113.16,113.16,0,0,0,0,419.75C0,481,62.5,525.26,125.25,508.38l59.5-15.87a98.51,98.51,0,0,0,52.5-34.75,46.49,46.49,0,0,1-41.71-13.3Zm226.29-22.63a16,16,0,0,0,0-22.62l-8.58-8.58C393.09,370.47,407.37,336,435.88,336H448a16,16,0,0,0,0-32H435.88c-28.51,0-42.79-34.47-22.63-54.62l8.58-8.58a16,16,0,0,0-22.63-22.63l-8.57,8.58C370.47,246.91,336,232.63,336,204.12V192a16,16,0,0,0-32,0v12.12c0,28.51-34.47,42.79-54.63,22.63l-8.57-8.58a16,16,0,0,0-22.63,22.63l8.58,8.58c20.16,20.15,5.88,54.62-22.63,54.62H192a16,16,0,0,0,0,32h12.12c28.51,0,42.79,34.47,22.63,54.63l-8.58,8.58a16,16,0,1,0,22.63,22.62l8.57-8.57C269.53,393.1,304,407.38,304,435.88V448a16,16,0,0,0,32,0V435.88c0-28.5,34.47-42.78,54.63-22.62l8.57,8.57a16,16,0,0,0,22.63,0ZM288,304a16,16,0,1,1,16-16A16,16,0,0,1,288,304Zm64,64a16,16,0,1,1,16-16A16,16,0,0,1,352,368Zm284.12,22.13a819.52,819.52,0,0,0-102-231C512,124.5,498,96,454,96c-38.62,0-70,29.38-70,65.75v27.72a48,48,0,0,1,60.46,74L435.88,272H448a48,48,0,0,1,0,96H435.88l8.58,8.58a47.7,47.7,0,0,1-41.71,81.18,98.51,98.51,0,0,0,52.5,34.75l59.5,15.87C577.5,525.26,640,481,640,419.75A113.16,113.16,0,0,0,636.12,390.13Z\"]\n};\nvar faMagic = {\n prefix: 'fas',\n iconName: 'magic',\n icon: [512, 512, [], \"f0d0\", \"M224 96l16-32 32-16-32-16-16-32-16 32-32 16 32 16 16 32zM80 160l26.66-53.33L160 80l-53.34-26.67L80 0 53.34 53.33 0 80l53.34 26.67L80 160zm352 128l-26.66 53.33L352 368l53.34 26.67L432 448l26.66-53.33L512 368l-53.34-26.67L432 288zm70.62-193.77L417.77 9.38C411.53 3.12 403.34 0 395.15 0c-8.19 0-16.38 3.12-22.63 9.38L9.38 372.52c-12.5 12.5-12.5 32.76 0 45.25l84.85 84.85c6.25 6.25 14.44 9.37 22.62 9.37 8.19 0 16.38-3.12 22.63-9.37l363.14-363.15c12.5-12.48 12.5-32.75 0-45.24zM359.45 203.46l-50.91-50.91 86.6-86.6 50.91 50.91-86.6 86.6z\"]\n};\nvar faMagnet = {\n prefix: 'fas',\n iconName: 'magnet',\n icon: [512, 512, [], \"f076\", \"M164.07 148.1H12a12 12 0 0 1-12-12v-80a36 36 0 0 1 36-36h104a36 36 0 0 1 36 36v80a11.89 11.89 0 0 1-11.93 12zm347.93-12V56a36 36 0 0 0-36-36H372a36 36 0 0 0-36 36v80a12 12 0 0 0 12 12h152a11.89 11.89 0 0 0 12-11.9zm-164 44a12 12 0 0 0-12 12v52c0 128.1-160 127.9-160 0v-52a12 12 0 0 0-12-12H12.1a12 12 0 0 0-12 12.1c.1 21.4.6 40.3 0 53.3 0 150.6 136.17 246.6 256.75 246.6s255-96 255-246.7c-.6-12.8-.2-33 0-53.2a12 12 0 0 0-12-12.1z\"]\n};\nvar faMailBulk = {\n prefix: 'fas',\n iconName: 'mail-bulk',\n icon: [576, 512, [], \"f674\", \"M160 448c-25.6 0-51.2-22.4-64-32-64-44.8-83.2-60.8-96-70.4V480c0 17.67 14.33 32 32 32h256c17.67 0 32-14.33 32-32V345.6c-12.8 9.6-32 25.6-96 70.4-12.8 9.6-38.4 32-64 32zm128-192H32c-17.67 0-32 14.33-32 32v16c25.6 19.2 22.4 19.2 115.2 86.4 9.6 6.4 28.8 25.6 44.8 25.6s35.2-19.2 44.8-22.4c92.8-67.2 89.6-67.2 115.2-86.4V288c0-17.67-14.33-32-32-32zm256-96H224c-17.67 0-32 14.33-32 32v32h96c33.21 0 60.59 25.42 63.71 57.82l.29-.22V416h192c17.67 0 32-14.33 32-32V192c0-17.67-14.33-32-32-32zm-32 128h-64v-64h64v64zm-352-96c0-35.29 28.71-64 64-64h224V32c0-17.67-14.33-32-32-32H96C78.33 0 64 14.33 64 32v192h96v-32z\"]\n};\nvar faMale = {\n prefix: 'fas',\n iconName: 'male',\n icon: [192, 512, [], \"f183\", \"M96 0c35.346 0 64 28.654 64 64s-28.654 64-64 64-64-28.654-64-64S60.654 0 96 0m48 144h-11.36c-22.711 10.443-49.59 10.894-73.28 0H48c-26.51 0-48 21.49-48 48v136c0 13.255 10.745 24 24 24h16v136c0 13.255 10.745 24 24 24h64c13.255 0 24-10.745 24-24V352h16c13.255 0 24-10.745 24-24V192c0-26.51-21.49-48-48-48z\"]\n};\nvar faMap = {\n prefix: 'fas',\n iconName: 'map',\n icon: [576, 512, [], \"f279\", \"M0 117.66v346.32c0 11.32 11.43 19.06 21.94 14.86L160 416V32L20.12 87.95A32.006 32.006 0 0 0 0 117.66zM192 416l192 64V96L192 32v384zM554.06 33.16L416 96v384l139.88-55.95A31.996 31.996 0 0 0 576 394.34V48.02c0-11.32-11.43-19.06-21.94-14.86z\"]\n};\nvar faMapMarked = {\n prefix: 'fas',\n iconName: 'map-marked',\n icon: [576, 512, [], \"f59f\", \"M288 0c-69.59 0-126 56.41-126 126 0 56.26 82.35 158.8 113.9 196.02 6.39 7.54 17.82 7.54 24.2 0C331.65 284.8 414 182.26 414 126 414 56.41 357.59 0 288 0zM20.12 215.95A32.006 32.006 0 0 0 0 245.66v250.32c0 11.32 11.43 19.06 21.94 14.86L160 448V214.92c-8.84-15.98-16.07-31.54-21.25-46.42L20.12 215.95zM288 359.67c-14.07 0-27.38-6.18-36.51-16.96-19.66-23.2-40.57-49.62-59.49-76.72v182l192 64V266c-18.92 27.09-39.82 53.52-59.49 76.72-9.13 10.77-22.44 16.95-36.51 16.95zm266.06-198.51L416 224v288l139.88-55.95A31.996 31.996 0 0 0 576 426.34V176.02c0-11.32-11.43-19.06-21.94-14.86z\"]\n};\nvar faMapMarkedAlt = {\n prefix: 'fas',\n iconName: 'map-marked-alt',\n icon: [576, 512, [], \"f5a0\", \"M288 0c-69.59 0-126 56.41-126 126 0 56.26 82.35 158.8 113.9 196.02 6.39 7.54 17.82 7.54 24.2 0C331.65 284.8 414 182.26 414 126 414 56.41 357.59 0 288 0zm0 168c-23.2 0-42-18.8-42-42s18.8-42 42-42 42 18.8 42 42-18.8 42-42 42zM20.12 215.95A32.006 32.006 0 0 0 0 245.66v250.32c0 11.32 11.43 19.06 21.94 14.86L160 448V214.92c-8.84-15.98-16.07-31.54-21.25-46.42L20.12 215.95zM288 359.67c-14.07 0-27.38-6.18-36.51-16.96-19.66-23.2-40.57-49.62-59.49-76.72v182l192 64V266c-18.92 27.09-39.82 53.52-59.49 76.72-9.13 10.77-22.44 16.95-36.51 16.95zm266.06-198.51L416 224v288l139.88-55.95A31.996 31.996 0 0 0 576 426.34V176.02c0-11.32-11.43-19.06-21.94-14.86z\"]\n};\nvar faMapMarker = {\n prefix: 'fas',\n iconName: 'map-marker',\n icon: [384, 512, [], \"f041\", \"M172.268 501.67C26.97 291.031 0 269.413 0 192 0 85.961 85.961 0 192 0s192 85.961 192 192c0 77.413-26.97 99.031-172.268 309.67-9.535 13.774-29.93 13.773-39.464 0z\"]\n};\nvar faMapMarkerAlt = {\n prefix: 'fas',\n iconName: 'map-marker-alt',\n icon: [384, 512, [], \"f3c5\", \"M172.268 501.67C26.97 291.031 0 269.413 0 192 0 85.961 85.961 0 192 0s192 85.961 192 192c0 77.413-26.97 99.031-172.268 309.67-9.535 13.774-29.93 13.773-39.464 0zM192 272c44.183 0 80-35.817 80-80s-35.817-80-80-80-80 35.817-80 80 35.817 80 80 80z\"]\n};\nvar faMapPin = {\n prefix: 'fas',\n iconName: 'map-pin',\n icon: [288, 512, [], \"f276\", \"M112 316.94v156.69l22.02 33.02c4.75 7.12 15.22 7.12 19.97 0L176 473.63V316.94c-10.39 1.92-21.06 3.06-32 3.06s-21.61-1.14-32-3.06zM144 0C64.47 0 0 64.47 0 144s64.47 144 144 144 144-64.47 144-144S223.53 0 144 0zm0 76c-37.5 0-68 30.5-68 68 0 6.62-5.38 12-12 12s-12-5.38-12-12c0-50.73 41.28-92 92-92 6.62 0 12 5.38 12 12s-5.38 12-12 12z\"]\n};\nvar faMapSigns = {\n prefix: 'fas',\n iconName: 'map-signs',\n icon: [512, 512, [], \"f277\", \"M507.31 84.69L464 41.37c-6-6-14.14-9.37-22.63-9.37H288V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v16H56c-13.25 0-24 10.75-24 24v80c0 13.25 10.75 24 24 24h385.37c8.49 0 16.62-3.37 22.63-9.37l43.31-43.31c6.25-6.26 6.25-16.38 0-22.63zM224 496c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V384h-64v112zm232-272H288v-32h-64v32H70.63c-8.49 0-16.62 3.37-22.63 9.37L4.69 276.69c-6.25 6.25-6.25 16.38 0 22.63L48 342.63c6 6 14.14 9.37 22.63 9.37H456c13.25 0 24-10.75 24-24v-80c0-13.25-10.75-24-24-24z\"]\n};\nvar faMarker = {\n prefix: 'fas',\n iconName: 'marker',\n icon: [512, 512, [], \"f5a1\", \"M93.95 290.03A327.038 327.038 0 0 0 .17 485.11l-.03.23c-1.7 15.28 11.21 28.2 26.49 26.51a327.02 327.02 0 0 0 195.34-93.8l75.4-75.4-128.02-128.02-75.4 75.4zM485.49 26.51c-35.35-35.35-92.67-35.35-128.02 0l-21.76 21.76-36.56-36.55c-15.62-15.62-40.95-15.62-56.56 0L138.47 115.84c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0l87.15-87.15 19.59 19.59L191.98 192 320 320.02l165.49-165.49c35.35-35.35 35.35-92.66 0-128.02z\"]\n};\nvar faMars = {\n prefix: 'fas',\n iconName: 'mars',\n icon: [384, 512, [], \"f222\", \"M372 64h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7c-22.2-14-48.5-22.1-76.7-22.1C64.5 160 0 224.5 0 304s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V76c0-6.6-5.4-12-12-12zM144 384c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faMarsDouble = {\n prefix: 'fas',\n iconName: 'mars-double',\n icon: [512, 512, [], \"f227\", \"M340 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7C198.5 72.1 172.2 64 144 64 64.5 64 0 128.5 0 208s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.5 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12V12c0-6.6-5.4-12-12-12zM144 288c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80zm356-128.1h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7c-18.2-11.4-39-18.9-61.5-21.3-2.1 21.8-8.2 43.3-18.4 63.3 1.1 0 2.2-.1 3.2-.1 44.1 0 80 35.9 80 80s-35.9 80-80 80-80-35.9-80-80c0-1.1 0-2.2.1-3.2-20 10.2-41.5 16.4-63.3 18.4C168.4 455.6 229.6 512 304 512c79.5 0 144-64.5 144-144 0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.4 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12v-79c0-6.7-5.4-12.1-12-12.1z\"]\n};\nvar faMarsStroke = {\n prefix: 'fas',\n iconName: 'mars-stroke',\n icon: [384, 512, [], \"f229\", \"M372 64h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-17.5 17.5-14.1-14.1c-4.7-4.7-12.3-4.7-17 0L224.5 133c-4.7 4.7-4.7 12.3 0 17l14.1 14.1-18 18c-22.2-14-48.5-22.1-76.7-22.1C64.5 160 0 224.5 0 304s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l18-18 14.1 14.1c4.7 4.7 12.3 4.7 17 0l28.3-28.3c4.7-4.7 4.7-12.3 0-17L329.2 164l17.5-17.5 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V76c-.1-6.6-5.5-12-12.1-12zM144 384c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faMarsStrokeH = {\n prefix: 'fas',\n iconName: 'mars-stroke-h',\n icon: [480, 512, [], \"f22b\", \"M476.2 247.5l-55.9-55.9c-7.6-7.6-20.5-2.2-20.5 8.5V224H376v-20c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v20h-27.6c-5.8-25.6-18.7-49.9-38.6-69.8C189.6 98 98.4 98 42.2 154.2c-56.2 56.2-56.2 147.4 0 203.6 56.2 56.2 147.4 56.2 203.6 0 19.9-19.9 32.8-44.2 38.6-69.8H312v20c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-20h23.9v23.9c0 10.7 12.9 16 20.5 8.5l55.9-55.9c4.6-4.7 4.6-12.3-.1-17zm-275.6 65.1c-31.2 31.2-81.9 31.2-113.1 0-31.2-31.2-31.2-81.9 0-113.1 31.2-31.2 81.9-31.2 113.1 0 31.2 31.1 31.2 81.9 0 113.1z\"]\n};\nvar faMarsStrokeV = {\n prefix: 'fas',\n iconName: 'mars-stroke-v',\n icon: [288, 512, [], \"f22a\", \"M245.8 234.2c-19.9-19.9-44.2-32.8-69.8-38.6v-25.4h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20V81.4h23.9c10.7 0 16-12.9 8.5-20.5L152.5 5.1c-4.7-4.7-12.3-4.7-17 0L79.6 61c-7.6 7.6-2.2 20.5 8.5 20.5H112v24.7H92c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h20v25.4c-25.6 5.8-49.9 18.7-69.8 38.6-56.2 56.2-56.2 147.4 0 203.6 56.2 56.2 147.4 56.2 203.6 0 56.3-56.2 56.3-147.4 0-203.6zm-45.2 158.4c-31.2 31.2-81.9 31.2-113.1 0-31.2-31.2-31.2-81.9 0-113.1 31.2-31.2 81.9-31.2 113.1 0 31.2 31.1 31.2 81.9 0 113.1z\"]\n};\nvar faMask = {\n prefix: 'fas',\n iconName: 'mask',\n icon: [640, 512, [], \"f6fa\", \"M320.67 64c-442.6 0-357.57 384-158.46 384 39.9 0 77.47-20.69 101.42-55.86l25.73-37.79c15.66-22.99 46.97-22.99 62.63 0l25.73 37.79C401.66 427.31 439.23 448 479.13 448c189.86 0 290.63-384-158.46-384zM184 308.36c-41.06 0-67.76-25.66-80.08-41.05-5.23-6.53-5.23-16.09 0-22.63 12.32-15.4 39.01-41.05 80.08-41.05s67.76 25.66 80.08 41.05c5.23 6.53 5.23 16.09 0 22.63-12.32 15.4-39.02 41.05-80.08 41.05zm272 0c-41.06 0-67.76-25.66-80.08-41.05-5.23-6.53-5.23-16.09 0-22.63 12.32-15.4 39.01-41.05 80.08-41.05s67.76 25.66 80.08 41.05c5.23 6.53 5.23 16.09 0 22.63-12.32 15.4-39.02 41.05-80.08 41.05z\"]\n};\nvar faMedal = {\n prefix: 'fas',\n iconName: 'medal',\n icon: [512, 512, [], \"f5a2\", \"M223.75 130.75L154.62 15.54A31.997 31.997 0 0 0 127.18 0H16.03C3.08 0-4.5 14.57 2.92 25.18l111.27 158.96c29.72-27.77 67.52-46.83 109.56-53.39zM495.97 0H384.82c-11.24 0-21.66 5.9-27.44 15.54l-69.13 115.21c42.04 6.56 79.84 25.62 109.56 53.38L509.08 25.18C516.5 14.57 508.92 0 495.97 0zM256 160c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm92.52 157.26l-37.93 36.96 8.97 52.22c1.6 9.36-8.26 16.51-16.65 12.09L256 393.88l-46.9 24.65c-8.4 4.45-18.25-2.74-16.65-12.09l8.97-52.22-37.93-36.96c-6.82-6.64-3.05-18.23 6.35-19.59l52.43-7.64 23.43-47.52c2.11-4.28 6.19-6.39 10.28-6.39 4.11 0 8.22 2.14 10.33 6.39l23.43 47.52 52.43 7.64c9.4 1.36 13.17 12.95 6.35 19.59z\"]\n};\nvar faMedkit = {\n prefix: 'fas',\n iconName: 'medkit',\n icon: [512, 512, [], \"f0fa\", \"M96 480h320V128h-32V80c0-26.51-21.49-48-48-48H176c-26.51 0-48 21.49-48 48v48H96v352zm96-384h128v32H192V96zm320 80v256c0 26.51-21.49 48-48 48h-16V128h16c26.51 0 48 21.49 48 48zM64 480H48c-26.51 0-48-21.49-48-48V176c0-26.51 21.49-48 48-48h16v352zm288-208v32c0 8.837-7.163 16-16 16h-48v48c0 8.837-7.163 16-16 16h-32c-8.837 0-16-7.163-16-16v-48h-48c-8.837 0-16-7.163-16-16v-32c0-8.837 7.163-16 16-16h48v-48c0-8.837 7.163-16 16-16h32c8.837 0 16 7.163 16 16v48h48c8.837 0 16 7.163 16 16z\"]\n};\nvar faMeh = {\n prefix: 'fas',\n iconName: 'meh',\n icon: [496, 512, [], \"f11a\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm176 192H152c-21.2 0-21.2-32 0-32h192c21.2 0 21.2 32 0 32zm-16-128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faMehBlank = {\n prefix: 'fas',\n iconName: 'meh-blank',\n icon: [496, 512, [], \"f5a4\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faMehRollingEyes = {\n prefix: 'fas',\n iconName: 'meh-rolling-eyes',\n icon: [496, 512, [], \"f5a5\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM88 224c0-24.3 13.7-45.2 33.6-56-.7 2.6-1.6 5.2-1.6 8 0 17.7 14.3 32 32 32s32-14.3 32-32c0-2.8-.9-5.4-1.6-8 19.9 10.8 33.6 31.7 33.6 56 0 35.3-28.7 64-64 64s-64-28.7-64-64zm224 176H184c-21.2 0-21.2-32 0-32h128c21.2 0 21.2 32 0 32zm32-112c-35.3 0-64-28.7-64-64 0-24.3 13.7-45.2 33.6-56-.7 2.6-1.6 5.2-1.6 8 0 17.7 14.3 32 32 32s32-14.3 32-32c0-2.8-.9-5.4-1.6-8 19.9 10.8 33.6 31.7 33.6 56 0 35.3-28.7 64-64 64z\"]\n};\nvar faMemory = {\n prefix: 'fas',\n iconName: 'memory',\n icon: [640, 512, [], \"f538\", \"M640 130.94V96c0-17.67-14.33-32-32-32H32C14.33 64 0 78.33 0 96v34.94c18.6 6.61 32 24.19 32 45.06s-13.4 38.45-32 45.06V320h640v-98.94c-18.6-6.61-32-24.19-32-45.06s13.4-38.45 32-45.06zM224 256h-64V128h64v128zm128 0h-64V128h64v128zm128 0h-64V128h64v128zM0 448h64v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h64v-96H0v96z\"]\n};\nvar faMenorah = {\n prefix: 'fas',\n iconName: 'menorah',\n icon: [640, 512, [], \"f676\", \"M144 128h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm96 0h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm192 0h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm96 0h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm80-32c17.67 0 32-14.33 32-32S608 0 608 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S512 0 512 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S416 0 416 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S320 0 320 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S224 0 224 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S128 0 128 0 96 46.33 96 64s14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S32 0 32 0 0 46.33 0 64s14.33 32 32 32zm544 192c0 17.67-14.33 32-32 32H352V144c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v176H96c-17.67 0-32-14.33-32-32V144c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v144c0 53.02 42.98 96 96 96h192v64H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H352v-64h192c53.02 0 96-42.98 96-96V144c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v144z\"]\n};\nvar faMercury = {\n prefix: 'fas',\n iconName: 'mercury',\n icon: [288, 512, [], \"f223\", \"M288 208c0-44.2-19.9-83.7-51.2-110.1 2.5-1.8 4.9-3.8 7.2-5.8 24.7-21.2 39.8-48.8 43.2-78.8.9-7.1-4.7-13.3-11.9-13.3h-40.5C229 0 224.1 4.1 223 9.8c-2.4 12.5-9.6 24.3-20.7 33.8C187 56.8 166.3 64 144 64s-43-7.2-58.4-20.4C74.5 34.1 67.4 22.3 64.9 9.8 63.8 4.1 58.9 0 53.2 0H12.7C5.5 0-.1 6.2.8 13.3 4.2 43.4 19.2 71 44 92.2c2.3 2 4.7 3.9 7.2 5.8C19.9 124.3 0 163.8 0 208c0 68.5 47.9 125.9 112 140.4V400H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80z\"]\n};\nvar faMeteor = {\n prefix: 'fas',\n iconName: 'meteor',\n icon: [512, 512, [], \"f753\", \"M511.328,20.8027c-11.60759,38.70264-34.30724,111.70173-61.30311,187.70077,6.99893,2.09372,13.4042,4,18.60653,5.59368a16.06158,16.06158,0,0,1,9.49854,22.906c-22.106,42.29635-82.69047,152.795-142.47819,214.40356-.99984,1.09373-1.99969,2.5-2.99954,3.49995A194.83046,194.83046,0,1,1,57.085,179.41009c.99985-1,2.40588-2,3.49947-3,61.59994-59.90549,171.97367-120.40473,214.37343-142.4982a16.058,16.058,0,0,1,22.90274,9.49988c1.59351,5.09368,3.49947,11.5936,5.5929,18.59351C379.34818,35.00565,452.43074,12.30281,491.12794.70921A16.18325,16.18325,0,0,1,511.328,20.8027ZM319.951,320.00207A127.98041,127.98041,0,1,0,191.97061,448.00046,127.97573,127.97573,0,0,0,319.951,320.00207Zm-127.98041-31.9996a31.9951,31.9951,0,1,1-31.9951-31.9996A31.959,31.959,0,0,1,191.97061,288.00247Zm31.9951,79.999a15.99755,15.99755,0,1,1-15.99755-15.9998A16.04975,16.04975,0,0,1,223.96571,368.00147Z\"]\n};\nvar faMicrochip = {\n prefix: 'fas',\n iconName: 'microchip',\n icon: [512, 512, [], \"f2db\", \"M416 48v416c0 26.51-21.49 48-48 48H144c-26.51 0-48-21.49-48-48V48c0-26.51 21.49-48 48-48h224c26.51 0 48 21.49 48 48zm96 58v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42V88h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zM30 376h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6z\"]\n};\nvar faMicrophone = {\n prefix: 'fas',\n iconName: 'microphone',\n icon: [352, 512, [], \"f130\", \"M176 352c53.02 0 96-42.98 96-96V96c0-53.02-42.98-96-96-96S80 42.98 80 96v160c0 53.02 42.98 96 96 96zm160-160h-16c-8.84 0-16 7.16-16 16v48c0 74.8-64.49 134.82-140.79 127.38C96.71 376.89 48 317.11 48 250.3V208c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v40.16c0 89.64 63.97 169.55 152 181.69V464H96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16h-56v-33.77C285.71 418.47 352 344.9 352 256v-48c0-8.84-7.16-16-16-16z\"]\n};\nvar faMicrophoneAlt = {\n prefix: 'fas',\n iconName: 'microphone-alt',\n icon: [352, 512, [], \"f3c9\", \"M336 192h-16c-8.84 0-16 7.16-16 16v48c0 74.8-64.49 134.82-140.79 127.38C96.71 376.89 48 317.11 48 250.3V208c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v40.16c0 89.64 63.97 169.55 152 181.69V464H96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16h-56v-33.77C285.71 418.47 352 344.9 352 256v-48c0-8.84-7.16-16-16-16zM176 352c53.02 0 96-42.98 96-96h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272c0-53.02-42.98-96-96-96S80 42.98 80 96v160c0 53.02 42.98 96 96 96z\"]\n};\nvar faMicrophoneAltSlash = {\n prefix: 'fas',\n iconName: 'microphone-alt-slash',\n icon: [640, 512, [], \"f539\", \"M633.82 458.1L476.26 336.33C488.74 312.21 496 284.98 496 256v-48c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v48c0 17.92-3.96 34.8-10.72 50.2l-26.55-20.52c3.1-9.4 5.28-19.22 5.28-29.67h-43.67l-41.4-32H416v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H416v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H416c0-53.02-42.98-96-96-96s-96 42.98-96 96v45.36L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM400 464h-56v-33.78c11.71-1.62 23.1-4.28 33.96-8.08l-50.4-38.96c-6.71.4-13.41.87-20.35.2-55.85-5.45-98.74-48.63-111.18-101.85L144 241.31v6.85c0 89.64 63.97 169.55 152 181.69V464h-56c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16z\"]\n};\nvar faMicrophoneSlash = {\n prefix: 'fas',\n iconName: 'microphone-slash',\n icon: [640, 512, [], \"f131\", \"M633.82 458.1l-157.8-121.96C488.61 312.13 496 285.01 496 256v-48c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v48c0 17.92-3.96 34.8-10.72 50.2l-26.55-20.52c3.1-9.4 5.28-19.22 5.28-29.67V96c0-53.02-42.98-96-96-96s-96 42.98-96 96v45.36L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM400 464h-56v-33.77c11.66-1.6 22.85-4.54 33.67-8.31l-50.11-38.73c-6.71.4-13.41.87-20.35.2-55.85-5.45-98.74-48.63-111.18-101.85L144 241.31v6.85c0 89.64 63.97 169.55 152 181.69V464h-56c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16z\"]\n};\nvar faMicroscope = {\n prefix: 'fas',\n iconName: 'microscope',\n icon: [512, 512, [], \"f610\", \"M160 320h12v16c0 8.84 7.16 16 16 16h40c8.84 0 16-7.16 16-16v-16h12c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32V16c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v16c-17.67 0-32 14.33-32 32v224c0 17.67 14.33 32 32 32zm304 128h-1.29C493.24 413.99 512 369.2 512 320c0-105.88-86.12-192-192-192v64c70.58 0 128 57.42 128 128s-57.42 128-128 128H48c-26.51 0-48 21.49-48 48 0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16 0-26.51-21.49-48-48-48zm-360-32h208c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8H104c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8z\"]\n};\nvar faMinus = {\n prefix: 'fas',\n iconName: 'minus',\n icon: [448, 512, [], \"f068\", \"M416 208H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"]\n};\nvar faMinusCircle = {\n prefix: 'fas',\n iconName: 'minus-circle',\n icon: [512, 512, [], \"f056\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zM124 296c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h264c6.6 0 12 5.4 12 12v56c0 6.6-5.4 12-12 12H124z\"]\n};\nvar faMinusSquare = {\n prefix: 'fas',\n iconName: 'minus-square',\n icon: [448, 512, [], \"f146\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM92 296c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h264c6.6 0 12 5.4 12 12v56c0 6.6-5.4 12-12 12H92z\"]\n};\nvar faMitten = {\n prefix: 'fas',\n iconName: 'mitten',\n icon: [448, 512, [], \"f7b5\", \"M368 416H48c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h320c8.8 0 16-7.2 16-16v-64c0-8.8-7.2-16-16-16zm57-209.1c-27.2-22.6-67.5-19-90.1 8.2l-20.9 25-29.6-128.4c-18-77.5-95.4-125.9-172.8-108C34.2 21.6-14.2 98.9 3.7 176.4L51.6 384h309l72.5-87c22.7-27.2 19-67.5-8.1-90.1z\"]\n};\nvar faMobile = {\n prefix: 'fas',\n iconName: 'mobile',\n icon: [320, 512, [], \"f10b\", \"M272 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h224c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM160 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faMobileAlt = {\n prefix: 'fas',\n iconName: 'mobile-alt',\n icon: [320, 512, [], \"f3cd\", \"M272 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h224c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM160 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm112-108c0 6.6-5.4 12-12 12H60c-6.6 0-12-5.4-12-12V60c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v312z\"]\n};\nvar faMoneyBill = {\n prefix: 'fas',\n iconName: 'money-bill',\n icon: [640, 512, [], \"f0d6\", \"M608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM48 400v-64c35.35 0 64 28.65 64 64H48zm0-224v-64h64c0 35.35-28.65 64-64 64zm272 176c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96zm272 48h-64c0-35.35 28.65-64 64-64v64zm0-224c-35.35 0-64-28.65-64-64h64v64z\"]\n};\nvar faMoneyBillAlt = {\n prefix: 'fas',\n iconName: 'money-bill-alt',\n icon: [640, 512, [], \"f3d1\", \"M352 288h-16v-88c0-4.42-3.58-8-8-8h-13.58c-4.74 0-9.37 1.4-13.31 4.03l-15.33 10.22a7.994 7.994 0 0 0-2.22 11.09l8.88 13.31a7.994 7.994 0 0 0 11.09 2.22l.47-.31V288h-16c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8h64c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8zM608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM48 400v-64c35.35 0 64 28.65 64 64H48zm0-224v-64h64c0 35.35-28.65 64-64 64zm272 192c-53.02 0-96-50.15-96-112 0-61.86 42.98-112 96-112s96 50.14 96 112c0 61.87-43 112-96 112zm272 32h-64c0-35.35 28.65-64 64-64v64zm0-224c-35.35 0-64-28.65-64-64h64v64z\"]\n};\nvar faMoneyBillWave = {\n prefix: 'fas',\n iconName: 'money-bill-wave',\n icon: [640, 512, [], \"f53a\", \"M621.16 54.46C582.37 38.19 543.55 32 504.75 32c-123.17-.01-246.33 62.34-369.5 62.34-30.89 0-61.76-3.92-92.65-13.72-3.47-1.1-6.95-1.62-10.35-1.62C15.04 79 0 92.32 0 110.81v317.26c0 12.63 7.23 24.6 18.84 29.46C57.63 473.81 96.45 480 135.25 480c123.17 0 246.34-62.35 369.51-62.35 30.89 0 61.76 3.92 92.65 13.72 3.47 1.1 6.95 1.62 10.35 1.62 17.21 0 32.25-13.32 32.25-31.81V83.93c-.01-12.64-7.24-24.6-18.85-29.47zM48 132.22c20.12 5.04 41.12 7.57 62.72 8.93C104.84 170.54 79 192.69 48 192.69v-60.47zm0 285v-47.78c34.37 0 62.18 27.27 63.71 61.4-22.53-1.81-43.59-6.31-63.71-13.62zM320 352c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96zm272 27.78c-17.52-4.39-35.71-6.85-54.32-8.44 5.87-26.08 27.5-45.88 54.32-49.28v57.72zm0-236.11c-30.89-3.91-54.86-29.7-55.81-61.55 19.54 2.17 38.09 6.23 55.81 12.66v48.89z\"]\n};\nvar faMoneyBillWaveAlt = {\n prefix: 'fas',\n iconName: 'money-bill-wave-alt',\n icon: [640, 512, [], \"f53b\", \"M621.16 54.46C582.37 38.19 543.55 32 504.75 32c-123.17-.01-246.33 62.34-369.5 62.34-30.89 0-61.76-3.92-92.65-13.72-3.47-1.1-6.95-1.62-10.35-1.62C15.04 79 0 92.32 0 110.81v317.26c0 12.63 7.23 24.6 18.84 29.46C57.63 473.81 96.45 480 135.25 480c123.17 0 246.34-62.35 369.51-62.35 30.89 0 61.76 3.92 92.65 13.72 3.47 1.1 6.95 1.62 10.35 1.62 17.21 0 32.25-13.32 32.25-31.81V83.93c-.01-12.64-7.24-24.6-18.85-29.47zM320 352c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96z\"]\n};\nvar faMoneyCheck = {\n prefix: 'fas',\n iconName: 'money-check',\n icon: [640, 512, [], \"f53c\", \"M0 448c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V128H0v320zm448-208c0-8.84 7.16-16 16-16h96c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16h-96c-8.84 0-16-7.16-16-16v-32zm0 120c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H456c-4.42 0-8-3.58-8-8v-16zM64 264c0-4.42 3.58-8 8-8h304c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm0 96c0-4.42 3.58-8 8-8h176c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zM624 32H16C7.16 32 0 39.16 0 48v48h640V48c0-8.84-7.16-16-16-16z\"]\n};\nvar faMoneyCheckAlt = {\n prefix: 'fas',\n iconName: 'money-check-alt',\n icon: [640, 512, [], \"f53d\", \"M608 32H32C14.33 32 0 46.33 0 64v384c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zM176 327.88V344c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V152c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07zM416 312c0 4.42-3.58 8-8 8H296c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16zm160 0c0 4.42-3.58 8-8 8h-80c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16zm0-96c0 4.42-3.58 8-8 8H296c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h272c4.42 0 8 3.58 8 8v16z\"]\n};\nvar faMonument = {\n prefix: 'fas',\n iconName: 'monument',\n icon: [384, 512, [], \"f5a6\", \"M368 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h352c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-78.86-347.26a31.97 31.97 0 0 0-9.21-19.44L203.31 4.69c-6.25-6.25-16.38-6.25-22.63 0l-76.6 76.61a31.97 31.97 0 0 0-9.21 19.44L64 416h256l-30.86-315.26zM240 307.2c0 6.4-6.4 12.8-12.8 12.8h-70.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h70.4c6.4 0 12.8 6.4 12.8 12.8v38.4z\"]\n};\nvar faMoon = {\n prefix: 'fas',\n iconName: 'moon',\n icon: [512, 512, [], \"f186\", \"M283.211 512c78.962 0 151.079-35.925 198.857-94.792 7.068-8.708-.639-21.43-11.562-19.35-124.203 23.654-238.262-71.576-238.262-196.954 0-72.222 38.662-138.635 101.498-174.394 9.686-5.512 7.25-20.197-3.756-22.23A258.156 258.156 0 0 0 283.211 0c-141.309 0-256 114.511-256 256 0 141.309 114.511 256 256 256z\"]\n};\nvar faMortarPestle = {\n prefix: 'fas',\n iconName: 'mortar-pestle',\n icon: [512, 512, [], \"f5a7\", \"M501.54 60.91c17.22-17.22 12.51-46.25-9.27-57.14a35.696 35.696 0 0 0-37.37 3.37L251.09 160h151.37l99.08-99.09zM496 192H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c0 80.98 50.2 150.11 121.13 178.32-12.76 16.87-21.72 36.8-24.95 58.69-1.46 9.92 6.04 18.98 16.07 18.98h223.5c10.03 0 17.53-9.06 16.07-18.98-3.22-21.89-12.18-41.82-24.95-58.69C429.8 406.11 480 336.98 480 256h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faMosque = {\n prefix: 'fas',\n iconName: 'mosque',\n icon: [640, 512, [], \"f678\", \"M0 480c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V160H0v320zm579.16-192c17.86-17.39 28.84-37.34 28.84-58.91 0-52.86-41.79-93.79-87.92-122.9-41.94-26.47-80.63-57.77-111.96-96.22L400 0l-8.12 9.97c-31.33 38.45-70.01 69.76-111.96 96.22C233.79 135.3 192 176.23 192 229.09c0 21.57 10.98 41.52 28.84 58.91h358.32zM608 320H192c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h32v-64c0-17.67 14.33-32 32-32s32 14.33 32 32v64h64v-72c0-48 48-72 48-72s48 24 48 72v72h64v-64c0-17.67 14.33-32 32-32s32 14.33 32 32v64h32c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32zM64 0S0 32 0 96v32h128V96c0-64-64-96-64-96z\"]\n};\nvar faMotorcycle = {\n prefix: 'fas',\n iconName: 'motorcycle',\n icon: [640, 512, [], \"f21c\", \"M512.9 192c-14.9-.1-29.1 2.3-42.4 6.9L437.6 144H520c13.3 0 24-10.7 24-24V88c0-13.3-10.7-24-24-24h-45.3c-6.8 0-13.3 2.9-17.8 7.9l-37.5 41.7-22.8-38C392.2 68.4 384.4 64 376 64h-80c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h66.4l19.2 32H227.9c-17.7-23.1-44.9-40-99.9-40H72.5C59 104 47.7 115 48 128.5c.2 13 10.9 23.5 24 23.5h56c24.5 0 38.7 10.9 47.8 24.8l-11.3 20.5c-13-3.9-26.9-5.7-41.3-5.2C55.9 194.5 1.6 249.6 0 317c-1.6 72.1 56.3 131 128 131 59.6 0 109.7-40.8 124-96h84.2c13.7 0 24.6-11.4 24-25.1-2.1-47.1 17.5-93.7 56.2-125l12.5 20.8c-27.6 23.7-45.1 58.9-44.8 98.2.5 69.6 57.2 126.5 126.8 127.1 71.6.7 129.8-57.5 129.2-129.1-.7-69.6-57.6-126.4-127.2-126.9zM128 400c-44.1 0-80-35.9-80-80s35.9-80 80-80c4.2 0 8.4.3 12.5 1L99 316.4c-8.8 16 2.8 35.6 21 35.6h81.3c-12.4 28.2-40.6 48-73.3 48zm463.9-75.6c-2.2 40.6-35 73.4-75.5 75.5-46.1 2.5-84.4-34.3-84.4-79.9 0-21.4 8.4-40.8 22.1-55.1l49.4 82.4c4.5 7.6 14.4 10 22 5.5l13.7-8.2c7.6-4.5 10-14.4 5.5-22l-48.6-80.9c5.2-1.1 10.5-1.6 15.9-1.6 45.6-.1 82.3 38.2 79.9 84.3z\"]\n};\nvar faMountain = {\n prefix: 'fas',\n iconName: 'mountain',\n icon: [640, 512, [], \"f6fc\", \"M634.92 462.7l-288-448C341.03 5.54 330.89 0 320 0s-21.03 5.54-26.92 14.7l-288 448a32.001 32.001 0 0 0-1.17 32.64A32.004 32.004 0 0 0 32 512h576c11.71 0 22.48-6.39 28.09-16.67a31.983 31.983 0 0 0-1.17-32.63zM320 91.18L405.39 224H320l-64 64-38.06-38.06L320 91.18z\"]\n};\nvar faMouse = {\n prefix: 'fas',\n iconName: 'mouse',\n icon: [384, 512, [], \"f8cc\", \"M0 352a160 160 0 0 0 160 160h64a160 160 0 0 0 160-160V224H0zM176 0h-16A160 160 0 0 0 0 160v32h176zm48 0h-16v192h176v-32A160 160 0 0 0 224 0z\"]\n};\nvar faMousePointer = {\n prefix: 'fas',\n iconName: 'mouse-pointer',\n icon: [320, 512, [], \"f245\", \"M302.189 329.126H196.105l55.831 135.993c3.889 9.428-.555 19.999-9.444 23.999l-49.165 21.427c-9.165 4-19.443-.571-23.332-9.714l-53.053-129.136-86.664 89.138C18.729 472.71 0 463.554 0 447.977V18.299C0 1.899 19.921-6.096 30.277 5.443l284.412 292.542c11.472 11.179 3.007 31.141-12.5 31.141z\"]\n};\nvar faMugHot = {\n prefix: 'fas',\n iconName: 'mug-hot',\n icon: [512, 512, [], \"f7b6\", \"M127.1 146.5c1.3 7.7 8 13.5 16 13.5h16.5c9.8 0 17.6-8.5 16.3-18-3.8-28.2-16.4-54.2-36.6-74.7-14.4-14.7-23.6-33.3-26.4-53.5C111.8 5.9 105 0 96.8 0H80.4C70.6 0 63 8.5 64.1 18c3.9 31.9 18 61.3 40.6 84.4 12 12.2 19.7 27.5 22.4 44.1zm112 0c1.3 7.7 8 13.5 16 13.5h16.5c9.8 0 17.6-8.5 16.3-18-3.8-28.2-16.4-54.2-36.6-74.7-14.4-14.7-23.6-33.3-26.4-53.5C223.8 5.9 217 0 208.8 0h-16.4c-9.8 0-17.5 8.5-16.3 18 3.9 31.9 18 61.3 40.6 84.4 12 12.2 19.7 27.5 22.4 44.1zM400 192H32c-17.7 0-32 14.3-32 32v192c0 53 43 96 96 96h192c53 0 96-43 96-96h16c61.8 0 112-50.2 112-112s-50.2-112-112-112zm0 160h-16v-96h16c26.5 0 48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faMusic = {\n prefix: 'fas',\n iconName: 'music',\n icon: [512, 512, [], \"f001\", \"M470.38 1.51L150.41 96A32 32 0 0 0 128 126.51v261.41A139 139 0 0 0 96 384c-53 0-96 28.66-96 64s43 64 96 64 96-28.66 96-64V214.32l256-75v184.61a138.4 138.4 0 0 0-32-3.93c-53 0-96 28.66-96 64s43 64 96 64 96-28.65 96-64V32a32 32 0 0 0-41.62-30.49z\"]\n};\nvar faNetworkWired = {\n prefix: 'fas',\n iconName: 'network-wired',\n icon: [640, 512, [], \"f6ff\", \"M640 264v-16c0-8.84-7.16-16-16-16H344v-40h72c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32H224c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h72v40H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h104v40H64c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h160c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32h-56v-40h304v40h-56c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h160c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32h-56v-40h104c8.84 0 16-7.16 16-16zM256 128V64h128v64H256zm-64 320H96v-64h96v64zm352 0h-96v-64h96v64z\"]\n};\nvar faNeuter = {\n prefix: 'fas',\n iconName: 'neuter',\n icon: [288, 512, [], \"f22c\", \"M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V468c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12V316.4c64.1-14.5 112-71.9 112-140.4zm-144 80c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faNewspaper = {\n prefix: 'fas',\n iconName: 'newspaper',\n icon: [576, 512, [], \"f1ea\", \"M552 64H88c-13.255 0-24 10.745-24 24v8H24c-13.255 0-24 10.745-24 24v272c0 30.928 25.072 56 56 56h472c26.51 0 48-21.49 48-48V88c0-13.255-10.745-24-24-24zM56 400a8 8 0 0 1-8-8V144h16v248a8 8 0 0 1-8 8zm236-16H140c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm208 0H348c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm-208-96H140c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm208 0H348c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm0-96H140c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h360c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12z\"]\n};\nvar faNotEqual = {\n prefix: 'fas',\n iconName: 'not-equal',\n icon: [448, 512, [], \"f53e\", \"M416 208c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32h-23.88l51.87-66.81c5.37-7.02 4.04-17.06-2.97-22.43L415.61 3.3c-7.02-5.38-17.06-4.04-22.44 2.97L311.09 112H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h204.56l-74.53 96H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h55.49l-51.87 66.81c-5.37 7.01-4.04 17.05 2.97 22.43L64 508.7c7.02 5.38 17.06 4.04 22.43-2.97L168.52 400H416c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32H243.05l74.53-96H416z\"]\n};\nvar faNotesMedical = {\n prefix: 'fas',\n iconName: 'notes-medical',\n icon: [384, 512, [], \"f481\", \"M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 40c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm96 304c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48zm0-192c0 4.4-3.6 8-8 8H104c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h176c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faObjectGroup = {\n prefix: 'fas',\n iconName: 'object-group',\n icon: [512, 512, [], \"f247\", \"M480 128V96h20c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v20H64V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v40c0 6.627 5.373 12 12 12h20v320H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-20h384v20c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-20V128zM96 276V140c0-6.627 5.373-12 12-12h168c6.627 0 12 5.373 12 12v136c0 6.627-5.373 12-12 12H108c-6.627 0-12-5.373-12-12zm320 96c0 6.627-5.373 12-12 12H236c-6.627 0-12-5.373-12-12v-52h72c13.255 0 24-10.745 24-24v-72h84c6.627 0 12 5.373 12 12v136z\"]\n};\nvar faObjectUngroup = {\n prefix: 'fas',\n iconName: 'object-ungroup',\n icon: [576, 512, [], \"f248\", \"M64 320v26a6 6 0 0 1-6 6H6a6 6 0 0 1-6-6v-52a6 6 0 0 1 6-6h26V96H6a6 6 0 0 1-6-6V38a6 6 0 0 1 6-6h52a6 6 0 0 1 6 6v26h288V38a6 6 0 0 1 6-6h52a6 6 0 0 1 6 6v52a6 6 0 0 1-6 6h-26v192h26a6 6 0 0 1 6 6v52a6 6 0 0 1-6 6h-52a6 6 0 0 1-6-6v-26H64zm480-64v-32h26a6 6 0 0 0 6-6v-52a6 6 0 0 0-6-6h-52a6 6 0 0 0-6 6v26H408v72h8c13.255 0 24 10.745 24 24v64c0 13.255-10.745 24-24 24h-64c-13.255 0-24-10.745-24-24v-8H192v72h-26a6 6 0 0 0-6 6v52a6 6 0 0 0 6 6h52a6 6 0 0 0 6-6v-26h288v26a6 6 0 0 0 6 6h52a6 6 0 0 0 6-6v-52a6 6 0 0 0-6-6h-26V256z\"]\n};\nvar faOilCan = {\n prefix: 'fas',\n iconName: 'oil-can',\n icon: [640, 512, [], \"f613\", \"M629.8 160.31L416 224l-50.49-25.24a64.07 64.07 0 0 0-28.62-6.76H280v-48h56c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h56v48h-56L37.72 166.86a31.9 31.9 0 0 0-5.79-.53C14.67 166.33 0 180.36 0 198.34v94.95c0 15.46 11.06 28.72 26.28 31.48L96 337.46V384c0 17.67 14.33 32 32 32h274.63c8.55 0 16.75-3.42 22.76-9.51l212.26-214.75c1.5-1.5 2.34-3.54 2.34-5.66V168c.01-5.31-5.08-9.15-10.19-7.69zM96 288.67l-48-8.73v-62.43l48 8.73v62.43zm453.33 84.66c0 23.56 19.1 42.67 42.67 42.67s42.67-19.1 42.67-42.67S592 288 592 288s-42.67 61.77-42.67 85.33z\"]\n};\nvar faOm = {\n prefix: 'fas',\n iconName: 'om',\n icon: [512, 512, [], \"f679\", \"M360.6 60.94a10.43 10.43 0 0 0 14.76 0l21.57-21.56a10.43 10.43 0 0 0 0-14.76L375.35 3.06c-4.08-4.07-10.68-4.07-14.76 0l-21.57 21.56a10.43 10.43 0 0 0 0 14.76l21.58 21.56zM412.11 192c-26.69 0-51.77 10.39-70.64 29.25l-24.25 24.25c-6.78 6.77-15.78 10.5-25.38 10.5H245c10.54-22.1 14.17-48.11 7.73-75.23-10.1-42.55-46.36-76.11-89.52-83.19-36.15-5.93-70.9 5.04-96.01 28.78-7.36 6.96-6.97 18.85 1.12 24.93l26.15 19.63c5.72 4.3 13.66 4.32 19.2-.21 8.45-6.9 19.02-10.71 30.27-10.71 26.47 0 48.01 21.53 48.01 48s-21.54 48-48.01 48h-31.9c-11.96 0-19.74 12.58-14.39 23.28l16.09 32.17c2.53 5.06 7.6 8.1 13.17 8.55h33.03c35.3 0 64.01 28.7 64.01 64s-28.71 64-64.01 64c-96.02 0-122.35-54.02-145.15-92.03-4.53-7.55-14.77-3.58-14.79 5.22C-.09 416 41.13 512 159.94 512c70.59 0 128.02-57.42 128.02-128 0-23.42-6.78-45.1-17.81-64h21.69c26.69 0 51.77-10.39 70.64-29.25l24.25-24.25c6.78-6.77 15.78-10.5 25.38-10.5 19.78 0 35.88 16.09 35.88 35.88V392c0 13.23-18.77 24-32.01 24-39.4 0-66.67-24.24-81.82-42.89-4.77-5.87-14.2-2.54-14.2 5.02V416s0 64 96.02 64c48.54 0 96.02-39.47 96.02-88V291.88c0-55.08-44.8-99.88-99.89-99.88zm42.18-124.73c-85.55 65.12-169.05 2.75-172.58.05-6.02-4.62-14.44-4.38-20.14.55-5.74 4.92-7.27 13.17-3.66 19.8 1.61 2.95 40.37 72.34 118.8 72.34 79.92 0 98.78-31.36 101.75-37.66 1.02-2.12 1.53-4.47 1.53-6.83V80c0-13.22-15.14-20.69-25.7-12.73z\"]\n};\nvar faOtter = {\n prefix: 'fas',\n iconName: 'otter',\n icon: [640, 512, [], \"f700\", \"M608 32h-32l-13.25-13.25A63.97 63.97 0 0 0 517.49 0H497c-11.14 0-22.08 2.91-31.75 8.43L312 96h-56C149.96 96 64 181.96 64 288v1.61c0 32.75-16 62.14-39.56 84.89-18.19 17.58-28.1 43.68-23.19 71.8 6.76 38.8 42.9 65.7 82.28 65.7H192c17.67 0 32-14.33 32-32s-14.33-32-32-32H80c-8.83 0-16-7.17-16-16s7.17-16 16-16h224c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-64l149.49-80.5L448 416h80c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-28.22l-55.11-110.21L521.14 192H544c53.02 0 96-42.98 96-96V64c0-17.67-14.33-32-32-32zm-96 16c8.84 0 16 7.16 16 16s-7.16 16-16 16-16-7.16-16-16 7.16-16 16-16zm32 96h-34.96L407.2 198.84l-13.77-27.55L512 112h77.05c-6.62 18.58-24.22 32-45.05 32z\"]\n};\nvar faOutdent = {\n prefix: 'fas',\n iconName: 'outdent',\n icon: [448, 512, [], \"f03b\", \"M100.69 363.29c10 10 27.31 2.93 27.31-11.31V160c0-14.32-17.33-21.31-27.31-11.31l-96 96a16 16 0 0 0 0 22.62zM432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-128H204.83A12.82 12.82 0 0 0 192 300.83v38.34A12.82 12.82 0 0 0 204.83 352h230.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288zm0-128H204.83A12.82 12.82 0 0 0 192 172.83v38.34A12.82 12.82 0 0 0 204.83 224h230.34A12.82 12.82 0 0 0 448 211.17v-38.34A12.82 12.82 0 0 0 435.17 160zM432 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faPager = {\n prefix: 'fas',\n iconName: 'pager',\n icon: [512, 512, [], \"f815\", \"M448 64H64a64 64 0 0 0-64 64v256a64 64 0 0 0 64 64h384a64 64 0 0 0 64-64V128a64 64 0 0 0-64-64zM160 368H80a16 16 0 0 1-16-16v-16a16 16 0 0 1 16-16h80zm128-16a16 16 0 0 1-16 16h-80v-48h80a16 16 0 0 1 16 16zm160-128a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32v-64a32 32 0 0 1 32-32h320a32 32 0 0 1 32 32z\"]\n};\nvar faPaintBrush = {\n prefix: 'fas',\n iconName: 'paint-brush',\n icon: [512, 512, [], \"f1fc\", \"M167.02 309.34c-40.12 2.58-76.53 17.86-97.19 72.3-2.35 6.21-8 9.98-14.59 9.98-11.11 0-45.46-27.67-55.25-34.35C0 439.62 37.93 512 128 512c75.86 0 128-43.77 128-120.19 0-3.11-.65-6.08-.97-9.13l-88.01-73.34zM457.89 0c-15.16 0-29.37 6.71-40.21 16.45C213.27 199.05 192 203.34 192 257.09c0 13.7 3.25 26.76 8.73 38.7l63.82 53.18c7.21 1.8 14.64 3.03 22.39 3.03 62.11 0 98.11-45.47 211.16-256.46 7.38-14.35 13.9-29.85 13.9-45.99C512 20.64 486 0 457.89 0z\"]\n};\nvar faPaintRoller = {\n prefix: 'fas',\n iconName: 'paint-roller',\n icon: [512, 512, [], \"f5aa\", \"M416 128V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v96c0 17.67 14.33 32 32 32h352c17.67 0 32-14.33 32-32zm32-64v128c0 17.67-14.33 32-32 32H256c-35.35 0-64 28.65-64 64v32c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32v-32h160c53.02 0 96-42.98 96-96v-64c0-35.35-28.65-64-64-64z\"]\n};\nvar faPalette = {\n prefix: 'fas',\n iconName: 'palette',\n icon: [512, 512, [], \"f53f\", \"M204.3 5C104.9 24.4 24.8 104.3 5.2 203.4c-37 187 131.7 326.4 258.8 306.7 41.2-6.4 61.4-54.6 42.5-91.7-23.1-45.4 9.9-98.4 60.9-98.4h79.7c35.8 0 64.8-29.6 64.9-65.3C511.5 97.1 368.1-26.9 204.3 5zM96 320c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm32-128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128-64c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 64c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faPallet = {\n prefix: 'fas',\n iconName: 'pallet',\n icon: [640, 512, [], \"f482\", \"M144 256h352c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H384v128l-64-32-64 32V0H144c-8.8 0-16 7.2-16 16v224c0 8.8 7.2 16 16 16zm480 128c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v64H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16h-48v-64h48zm-336 64H128v-64h160v64zm224 0H352v-64h160v64z\"]\n};\nvar faPaperPlane = {\n prefix: 'fas',\n iconName: 'paper-plane',\n icon: [512, 512, [], \"f1d8\", \"M476 3.2L12.5 270.6c-18.1 10.4-15.8 35.6 2.2 43.2L121 358.4l287.3-253.2c5.5-4.9 13.3 2.6 8.6 8.3L176 407v80.5c0 23.6 28.5 32.9 42.5 15.8L282 426l124.6 52.2c14.2 6 30.4-2.9 33-18.2l72-432C515 7.8 493.3-6.8 476 3.2z\"]\n};\nvar faPaperclip = {\n prefix: 'fas',\n iconName: 'paperclip',\n icon: [448, 512, [], \"f0c6\", \"M43.246 466.142c-58.43-60.289-57.341-157.511 1.386-217.581L254.392 34c44.316-45.332 116.351-45.336 160.671 0 43.89 44.894 43.943 117.329 0 162.276L232.214 383.128c-29.855 30.537-78.633 30.111-107.982-.998-28.275-29.97-27.368-77.473 1.452-106.953l143.743-146.835c6.182-6.314 16.312-6.422 22.626-.241l22.861 22.379c6.315 6.182 6.422 16.312.241 22.626L171.427 319.927c-4.932 5.045-5.236 13.428-.648 18.292 4.372 4.634 11.245 4.711 15.688.165l182.849-186.851c19.613-20.062 19.613-52.725-.011-72.798-19.189-19.627-49.957-19.637-69.154 0L90.39 293.295c-34.763 35.56-35.299 93.12-1.191 128.313 34.01 35.093 88.985 35.137 123.058.286l172.06-175.999c6.177-6.319 16.307-6.433 22.626-.256l22.877 22.364c6.319 6.177 6.434 16.307.256 22.626l-172.06 175.998c-59.576 60.938-155.943 60.216-214.77-.485z\"]\n};\nvar faParachuteBox = {\n prefix: 'fas',\n iconName: 'parachute-box',\n icon: [512, 512, [], \"f4cd\", \"M511.9 175c-9.1-75.6-78.4-132.4-158.3-158.7C390 55.7 416 116.9 416 192h28.1L327.5 321.5c-2.5-.6-4.8-1.5-7.5-1.5h-48V192h112C384 76.8 315.1 0 256 0S128 76.8 128 192h112v128h-48c-2.7 0-5 .9-7.5 1.5L67.9 192H96c0-75.1 26-136.3 62.4-175.7C78.5 42.7 9.2 99.5.1 175c-1.1 9.1 6.8 17 16 17h8.7l136.7 151.9c-.7 2.6-1.6 5.2-1.6 8.1v128c0 17.7 14.3 32 32 32h128c17.7 0 32-14.3 32-32V352c0-2.9-.9-5.4-1.6-8.1L487.1 192h8.7c9.3 0 17.2-7.8 16.1-17z\"]\n};\nvar faParagraph = {\n prefix: 'fas',\n iconName: 'paragraph',\n icon: [448, 512, [], \"f1dd\", \"M448 48v32a16 16 0 0 1-16 16h-48v368a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V96h-32v368a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V352h-32a160 160 0 0 1 0-320h240a16 16 0 0 1 16 16z\"]\n};\nvar faParking = {\n prefix: 'fas',\n iconName: 'parking',\n icon: [448, 512, [], \"f540\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM240 320h-48v48c0 8.8-7.2 16-16 16h-32c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16h96c52.9 0 96 43.1 96 96s-43.1 96-96 96zm0-128h-48v64h48c17.6 0 32-14.4 32-32s-14.4-32-32-32z\"]\n};\nvar faPassport = {\n prefix: 'fas',\n iconName: 'passport',\n icon: [448, 512, [], \"f5ab\", \"M129.62 176h39.09c1.49-27.03 6.54-51.35 14.21-70.41-27.71 13.24-48.02 39.19-53.3 70.41zm0 32c5.29 31.22 25.59 57.17 53.3 70.41-7.68-19.06-12.72-43.38-14.21-70.41h-39.09zM224 286.69c7.69-7.45 20.77-34.42 23.43-78.69h-46.87c2.67 44.26 15.75 71.24 23.44 78.69zM200.57 176h46.87c-2.66-44.26-15.74-71.24-23.43-78.69-7.7 7.45-20.78 34.43-23.44 78.69zm64.51 102.41c27.71-13.24 48.02-39.19 53.3-70.41h-39.09c-1.49 27.03-6.53 51.35-14.21 70.41zM416 0H64C28.65 0 0 28.65 0 64v384c0 35.35 28.65 64 64 64h352c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32zm-80 416H112c-8.8 0-16-7.2-16-16s7.2-16 16-16h224c8.8 0 16 7.2 16 16s-7.2 16-16 16zm-112-96c-70.69 0-128-57.31-128-128S153.31 64 224 64s128 57.31 128 128-57.31 128-128 128zm41.08-214.41c7.68 19.06 12.72 43.38 14.21 70.41h39.09c-5.28-31.22-25.59-57.17-53.3-70.41z\"]\n};\nvar faPastafarianism = {\n prefix: 'fas',\n iconName: 'pastafarianism',\n icon: [640, 512, [], \"f67b\", \"M624.54 347.67c-32.7-12.52-57.36 4.25-75.37 16.45-17.06 11.53-23.25 14.42-31.41 11.36-8.12-3.09-10.83-9.38-15.89-29.38-3.33-13.15-7.44-29.32-17.95-42.65 2.24-2.91 4.43-5.79 6.38-8.57C500.47 304.45 513.71 312 532 312c33.95 0 50.87-25.78 62.06-42.83 10.59-16.14 15-21.17 21.94-21.17 13.25 0 24-10.75 24-24s-10.75-24-24-24c-33.95 0-50.87 25.78-62.06 42.83-10.6 16.14-15 21.17-21.94 21.17-17.31 0-37.48-61.43-97.26-101.91l17.25-34.5C485.43 125.5 512 97.98 512 64c0-35.35-28.65-64-64-64s-64 28.65-64 64c0 13.02 3.94 25.1 10.62 35.21l-18.15 36.3c-16.98-4.6-35.6-7.51-56.46-7.51s-39.49 2.91-56.46 7.51l-18.15-36.3C252.06 89.1 256 77.02 256 64c0-35.35-28.65-64-64-64s-64 28.65-64 64c0 33.98 26.56 61.5 60.02 63.6l17.25 34.5C145.68 202.44 125.15 264 108 264c-6.94 0-11.34-5.03-21.94-21.17C74.88 225.78 57.96 200 24 200c-13.25 0-24 10.75-24 24s10.75 24 24 24c6.94 0 11.34 5.03 21.94 21.17C57.13 286.22 74.05 312 108 312c18.29 0 31.53-7.55 41.7-17.11 1.95 2.79 4.14 5.66 6.38 8.57-10.51 13.33-14.62 29.5-17.95 42.65-5.06 20-7.77 26.28-15.89 29.38-8.11 3.06-14.33.17-31.41-11.36-18.03-12.2-42.72-28.92-75.37-16.45-12.39 4.72-18.59 18.58-13.87 30.97 4.72 12.41 18.61 18.61 30.97 13.88 8.16-3.09 14.34-.19 31.39 11.36 13.55 9.16 30.83 20.86 52.42 20.84 7.17 0 14.83-1.28 22.97-4.39 32.66-12.44 39.98-41.33 45.33-62.44 2.21-8.72 3.99-14.49 5.95-18.87 16.62 13.61 36.95 25.88 61.64 34.17-9.96 37-32.18 90.8-60.26 90.8-13.25 0-24 10.75-24 24s10.75 24 24 24c66.74 0 97.05-88.63 107.42-129.14 6.69.6 13.42 1.14 20.58 1.14s13.89-.54 20.58-1.14C350.95 423.37 381.26 512 448 512c13.25 0 24-10.75 24-24s-10.75-24-24-24c-27.94 0-50.21-53.81-60.22-90.81 24.69-8.29 45-20.56 61.62-34.16 1.96 4.38 3.74 10.15 5.95 18.87 5.34 21.11 12.67 50 45.33 62.44 8.14 3.11 15.8 4.39 22.97 4.39 21.59 0 38.87-11.69 52.42-20.84 17.05-11.55 23.28-14.45 31.39-11.36 12.39 4.75 26.27-1.47 30.97-13.88 4.71-12.4-1.49-26.26-13.89-30.98zM448 48c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16zm-256 0c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16z\"]\n};\nvar faPaste = {\n prefix: 'fas',\n iconName: 'paste',\n icon: [448, 512, [], \"f0ea\", \"M128 184c0-30.879 25.122-56 56-56h136V56c0-13.255-10.745-24-24-24h-80.61C204.306 12.89 183.637 0 160 0s-44.306 12.89-55.39 32H24C10.745 32 0 42.745 0 56v336c0 13.255 10.745 24 24 24h104V184zm32-144c13.255 0 24 10.745 24 24s-10.745 24-24 24-24-10.745-24-24 10.745-24 24-24zm184 248h104v200c0 13.255-10.745 24-24 24H184c-13.255 0-24-10.745-24-24V184c0-13.255 10.745-24 24-24h136v104c0 13.2 10.8 24 24 24zm104-38.059V256h-96v-96h6.059a24 24 0 0 1 16.97 7.029l65.941 65.941a24.002 24.002 0 0 1 7.03 16.971z\"]\n};\nvar faPause = {\n prefix: 'fas',\n iconName: 'pause',\n icon: [448, 512, [], \"f04c\", \"M144 479H48c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48v352c0 26.5-21.5 48-48 48zm304-48V79c0-26.5-21.5-48-48-48h-96c-26.5 0-48 21.5-48 48v352c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48z\"]\n};\nvar faPauseCircle = {\n prefix: 'fas',\n iconName: 'pause-circle',\n icon: [512, 512, [], \"f28b\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm-16 328c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v160zm112 0c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v160z\"]\n};\nvar faPaw = {\n prefix: 'fas',\n iconName: 'paw',\n icon: [512, 512, [], \"f1b0\", \"M256 224c-79.41 0-192 122.76-192 200.25 0 34.9 26.81 55.75 71.74 55.75 48.84 0 81.09-25.08 120.26-25.08 39.51 0 71.85 25.08 120.26 25.08 44.93 0 71.74-20.85 71.74-55.75C448 346.76 335.41 224 256 224zm-147.28-12.61c-10.4-34.65-42.44-57.09-71.56-50.13-29.12 6.96-44.29 40.69-33.89 75.34 10.4 34.65 42.44 57.09 71.56 50.13 29.12-6.96 44.29-40.69 33.89-75.34zm84.72-20.78c30.94-8.14 46.42-49.94 34.58-93.36s-46.52-72.01-77.46-63.87-46.42 49.94-34.58 93.36c11.84 43.42 46.53 72.02 77.46 63.87zm281.39-29.34c-29.12-6.96-61.15 15.48-71.56 50.13-10.4 34.65 4.77 68.38 33.89 75.34 29.12 6.96 61.15-15.48 71.56-50.13 10.4-34.65-4.77-68.38-33.89-75.34zm-156.27 29.34c30.94 8.14 65.62-20.45 77.46-63.87 11.84-43.42-3.64-85.21-34.58-93.36s-65.62 20.45-77.46 63.87c-11.84 43.42 3.64 85.22 34.58 93.36z\"]\n};\nvar faPeace = {\n prefix: 'fas',\n iconName: 'peace',\n icon: [496, 512, [], \"f67c\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm184 248c0 31.93-8.2 61.97-22.57 88.17L280 240.63V74.97c86.23 15.21 152 90.5 152 181.03zM216 437.03c-33.86-5.97-64.49-21.2-89.29-43.02L216 322.57v114.46zm64-114.46L369.29 394c-24.8 21.82-55.43 37.05-89.29 43.02V322.57zm-64-247.6v165.66L86.57 344.17C72.2 317.97 64 287.93 64 256c0-90.53 65.77-165.82 152-181.03z\"]\n};\nvar faPen = {\n prefix: 'fas',\n iconName: 'pen',\n icon: [512, 512, [], \"f304\", \"M290.74 93.24l128.02 128.02-277.99 277.99-114.14 12.6C11.35 513.54-1.56 500.62.14 485.34l12.7-114.22 277.9-277.88zm207.2-19.06l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.76 18.75-49.16 0-67.91z\"]\n};\nvar faPenAlt = {\n prefix: 'fas',\n iconName: 'pen-alt',\n icon: [512, 512, [], \"f305\", \"M497.94 74.17l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.75 18.75-49.15 0-67.91zm-246.8-20.53c-15.62-15.62-40.94-15.62-56.56 0L75.8 172.43c-6.25 6.25-6.25 16.38 0 22.62l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l101.82-101.82 22.63 22.62L93.95 290.03A327.038 327.038 0 0 0 .17 485.11l-.03.23c-1.7 15.28 11.21 28.2 26.49 26.51a327.02 327.02 0 0 0 195.34-93.8l196.79-196.79-82.77-82.77-84.85-84.85z\"]\n};\nvar faPenFancy = {\n prefix: 'fas',\n iconName: 'pen-fancy',\n icon: [512, 512, [], \"f5ac\", \"M79.18 282.94a32.005 32.005 0 0 0-20.24 20.24L0 480l4.69 4.69 92.89-92.89c-.66-2.56-1.57-5.03-1.57-7.8 0-17.67 14.33-32 32-32s32 14.33 32 32-14.33 32-32 32c-2.77 0-5.24-.91-7.8-1.57l-92.89 92.89L32 512l176.82-58.94a31.983 31.983 0 0 0 20.24-20.24l33.07-84.07-98.88-98.88-84.07 33.07zM369.25 28.32L186.14 227.81l97.85 97.85 199.49-183.11C568.4 67.48 443.73-55.94 369.25 28.32z\"]\n};\nvar faPenNib = {\n prefix: 'fas',\n iconName: 'pen-nib',\n icon: [512, 512, [], \"f5ad\", \"M136.6 138.79a64.003 64.003 0 0 0-43.31 41.35L0 460l14.69 14.69L164.8 324.58c-2.99-6.26-4.8-13.18-4.8-20.58 0-26.51 21.49-48 48-48s48 21.49 48 48-21.49 48-48 48c-7.4 0-14.32-1.81-20.58-4.8L37.31 497.31 52 512l279.86-93.29a64.003 64.003 0 0 0 41.35-43.31L416 224 288 96l-151.4 42.79zm361.34-64.62l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.75 18.75-49.15 0-67.91z\"]\n};\nvar faPenSquare = {\n prefix: 'fas',\n iconName: 'pen-square',\n icon: [448, 512, [], \"f14b\", \"M400 480H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48v352c0 26.5-21.5 48-48 48zM238.1 177.9L102.4 313.6l-6.3 57.1c-.8 7.6 5.6 14.1 13.3 13.3l57.1-6.3L302.2 242c2.3-2.3 2.3-6.1 0-8.5L246.7 178c-2.5-2.4-6.3-2.4-8.6-.1zM345 165.1L314.9 135c-9.4-9.4-24.6-9.4-33.9 0l-23.1 23.1c-2.3 2.3-2.3 6.1 0 8.5l55.5 55.5c2.3 2.3 6.1 2.3 8.5 0L345 199c9.3-9.3 9.3-24.5 0-33.9z\"]\n};\nvar faPencilAlt = {\n prefix: 'fas',\n iconName: 'pencil-alt',\n icon: [512, 512, [], \"f303\", \"M497.9 142.1l-46.1 46.1c-4.7 4.7-12.3 4.7-17 0l-111-111c-4.7-4.7-4.7-12.3 0-17l46.1-46.1c18.7-18.7 49.1-18.7 67.9 0l60.1 60.1c18.8 18.7 18.8 49.1 0 67.9zM284.2 99.8L21.6 362.4.4 483.9c-2.9 16.4 11.4 30.6 27.8 27.8l121.5-21.3 262.6-262.6c4.7-4.7 4.7-12.3 0-17l-111-111c-4.8-4.7-12.4-4.7-17.1 0zM124.1 339.9c-5.5-5.5-5.5-14.3 0-19.8l154-154c5.5-5.5 14.3-5.5 19.8 0s5.5 14.3 0 19.8l-154 154c-5.5 5.5-14.3 5.5-19.8 0zM88 424h48v36.3l-64.5 11.3-31.1-31.1L51.7 376H88v48z\"]\n};\nvar faPencilRuler = {\n prefix: 'fas',\n iconName: 'pencil-ruler',\n icon: [512, 512, [], \"f5ae\", \"M109.46 244.04l134.58-134.56-44.12-44.12-61.68 61.68a7.919 7.919 0 0 1-11.21 0l-11.21-11.21c-3.1-3.1-3.1-8.12 0-11.21l61.68-61.68-33.64-33.65C131.47-3.1 111.39-3.1 99 9.29L9.29 99c-12.38 12.39-12.39 32.47 0 44.86l100.17 100.18zm388.47-116.8c18.76-18.76 18.75-49.17 0-67.93l-45.25-45.25c-18.76-18.76-49.18-18.76-67.95 0l-46.02 46.01 113.2 113.2 46.02-46.03zM316.08 82.71l-297 296.96L.32 487.11c-2.53 14.49 10.09 27.11 24.59 24.56l107.45-18.84L429.28 195.9 316.08 82.71zm186.63 285.43l-33.64-33.64-61.68 61.68c-3.1 3.1-8.12 3.1-11.21 0l-11.21-11.21c-3.09-3.1-3.09-8.12 0-11.21l61.68-61.68-44.14-44.14L267.93 402.5l100.21 100.2c12.39 12.39 32.47 12.39 44.86 0l89.71-89.7c12.39-12.39 12.39-32.47 0-44.86z\"]\n};\nvar faPeopleArrows = {\n prefix: 'fas',\n iconName: 'people-arrows',\n icon: [576, 512, [], \"e068\", \"M96,128A64,64,0,1,0,32,64,64,64,0,0,0,96,128Zm0,176.08a44.11,44.11,0,0,1,13.64-32L181.77,204c1.65-1.55,3.77-2.31,5.61-3.57A63.91,63.91,0,0,0,128,160H64A64,64,0,0,0,0,224v96a32,32,0,0,0,32,32V480a32,32,0,0,0,32,32h64a32,32,0,0,0,32-32V383.61l-50.36-47.53A44.08,44.08,0,0,1,96,304.08ZM480,128a64,64,0,1,0-64-64A64,64,0,0,0,480,128Zm32,32H448a63.91,63.91,0,0,0-59.38,40.42c1.84,1.27,4,2,5.62,3.59l72.12,68.06a44.37,44.37,0,0,1,0,64L416,383.62V480a32,32,0,0,0,32,32h64a32,32,0,0,0,32-32V352a32,32,0,0,0,32-32V224A64,64,0,0,0,512,160ZM444.4,295.34l-72.12-68.06A12,12,0,0,0,352,236v36H224V236a12,12,0,0,0-20.28-8.73L131.6,295.34a12.4,12.4,0,0,0,0,17.47l72.12,68.07A12,12,0,0,0,224,372.14V336H352v36.14a12,12,0,0,0,20.28,8.74l72.12-68.07A12.4,12.4,0,0,0,444.4,295.34Z\"]\n};\nvar faPeopleCarry = {\n prefix: 'fas',\n iconName: 'people-carry',\n icon: [640, 512, [], \"f4ce\", \"M128 96c26.5 0 48-21.5 48-48S154.5 0 128 0 80 21.5 80 48s21.5 48 48 48zm384 0c26.5 0 48-21.5 48-48S538.5 0 512 0s-48 21.5-48 48 21.5 48 48 48zm125.7 372.1l-44-110-41.1 46.4-2 18.2 27.7 69.2c5 12.5 17 20.1 29.7 20.1 4 0 8-.7 11.9-2.3 16.4-6.6 24.4-25.2 17.8-41.6zm-34.2-209.8L585 178.1c-4.6-20-18.6-36.8-37.5-44.9-18.5-8-39-6.7-56.1 3.3-22.7 13.4-39.7 34.5-48.1 59.4L432 229.8 416 240v-96c0-8.8-7.2-16-16-16H240c-8.8 0-16 7.2-16 16v96l-16.1-10.2-11.3-33.9c-8.3-25-25.4-46-48.1-59.4-17.2-10-37.6-11.3-56.1-3.3-18.9 8.1-32.9 24.9-37.5 44.9l-18.4 80.2c-4.6 20 .7 41.2 14.4 56.7l67.2 75.9 10.1 92.6C130 499.8 143.8 512 160 512c1.2 0 2.3-.1 3.5-.2 17.6-1.9 30.2-17.7 28.3-35.3l-10.1-92.8c-1.5-13-6.9-25.1-15.6-35l-43.3-49 17.6-70.3 6.8 20.4c4.1 12.5 11.9 23.4 24.5 32.6l51.1 32.5c4.6 2.9 12.1 4.6 17.2 5h160c5.1-.4 12.6-2.1 17.2-5l51.1-32.5c12.6-9.2 20.4-20 24.5-32.6l6.8-20.4 17.6 70.3-43.3 49c-8.7 9.9-14.1 22-15.6 35l-10.1 92.8c-1.9 17.6 10.8 33.4 28.3 35.3 1.2.1 2.3.2 3.5.2 16.1 0 30-12.1 31.8-28.5l10.1-92.6 67.2-75.9c13.6-15.5 19-36.7 14.4-56.7zM46.3 358.1l-44 110c-6.6 16.4 1.4 35 17.8 41.6 16.8 6.6 35.1-1.7 41.6-17.8l27.7-69.2-2-18.2-41.1-46.4z\"]\n};\nvar faPepperHot = {\n prefix: 'fas',\n iconName: 'pepper-hot',\n icon: [512, 512, [], \"f816\", \"M330.67 263.12V173.4l-52.75-24.22C219.44 218.76 197.58 400 56 400a56 56 0 0 0 0 112c212.64 0 370.65-122.87 419.18-210.34l-37.05-38.54zm131.09-128.37C493.92 74.91 477.18 26.48 458.62 3a8 8 0 0 0-11.93-.59l-22.9 23a8.06 8.06 0 0 0-.89 10.23c6.86 10.36 17.05 35.1-1.4 72.32A142.85 142.85 0 0 0 364.34 96c-28 0-54 8.54-76.34 22.59l74.67 34.29v78.24h89.09L506.44 288c3.26-12.62 5.56-25.63 5.56-39.31a154 154 0 0 0-50.24-113.94z\"]\n};\nvar faPercent = {\n prefix: 'fas',\n iconName: 'percent',\n icon: [448, 512, [], \"f295\", \"M112 224c61.9 0 112-50.1 112-112S173.9 0 112 0 0 50.1 0 112s50.1 112 112 112zm0-160c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48 21.5-48 48-48zm224 224c-61.9 0-112 50.1-112 112s50.1 112 112 112 112-50.1 112-112-50.1-112-112-112zm0 160c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zM392.3.2l31.6-.1c19.4-.1 30.9 21.8 19.7 37.8L77.4 501.6a23.95 23.95 0 0 1-19.6 10.2l-33.4.1c-19.5 0-30.9-21.9-19.7-37.8l368-463.7C377.2 4 384.5.2 392.3.2z\"]\n};\nvar faPercentage = {\n prefix: 'fas',\n iconName: 'percentage',\n icon: [384, 512, [], \"f541\", \"M109.25 173.25c24.99-24.99 24.99-65.52 0-90.51-24.99-24.99-65.52-24.99-90.51 0-24.99 24.99-24.99 65.52 0 90.51 25 25 65.52 25 90.51 0zm256 165.49c-24.99-24.99-65.52-24.99-90.51 0-24.99 24.99-24.99 65.52 0 90.51 24.99 24.99 65.52 24.99 90.51 0 25-24.99 25-65.51 0-90.51zm-1.94-231.43l-22.62-22.62c-12.5-12.5-32.76-12.5-45.25 0L20.69 359.44c-12.5 12.5-12.5 32.76 0 45.25l22.62 22.62c12.5 12.5 32.76 12.5 45.25 0l274.75-274.75c12.5-12.49 12.5-32.75 0-45.25z\"]\n};\nvar faPersonBooth = {\n prefix: 'fas',\n iconName: 'person-booth',\n icon: [576, 512, [], \"f756\", \"M192 496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320h-64v176zm32-272h-50.9l-45.2-45.3C115.8 166.6 99.7 160 82.7 160H64c-17.1 0-33.2 6.7-45.3 18.8C6.7 190.9 0 207 0 224.1L.2 320 0 480c0 17.7 14.3 32 31.9 32 17.6 0 32-14.3 32-32l.1-100.7c.9.5 1.6 1.3 2.5 1.7l29.1 43v56c0 17.7 14.3 32 32 32s32-14.3 32-32v-56.5c0-9.9-2.3-19.8-6.7-28.6l-41.2-61.3V253l20.9 20.9c9.1 9.1 21.1 14.1 33.9 14.1H224c17.7 0 32-14.3 32-32s-14.3-32-32-32zM64 128c26.5 0 48-21.5 48-48S90.5 32 64 32 16 53.5 16 80s21.5 48 48 48zm224-96l31.5 223.1-30.9 154.6c-4.3 21.6 13 38.3 31.4 38.3 15.2 0 28-9.1 32.3-30.4.9 16.9 14.6 30.4 31.7 30.4 17.7 0 32-14.3 32-32 0 17.7 14.3 32 32 32s32-14.3 32-32V0H288v32zm-96 0v160h64V0h-32c-17.7 0-32 14.3-32 32zM544 0h-32v496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V32c0-17.7-14.3-32-32-32z\"]\n};\nvar faPhone = {\n prefix: 'fas',\n iconName: 'phone',\n icon: [512, 512, [], \"f095\", \"M493.4 24.6l-104-24c-11.3-2.6-22.9 3.3-27.5 13.9l-48 112c-4.2 9.8-1.4 21.3 6.9 28l60.6 49.6c-36 76.7-98.9 140.5-177.2 177.2l-49.6-60.6c-6.8-8.3-18.2-11.1-28-6.9l-112 48C3.9 366.5-2 378.1.6 389.4l24 104C27.1 504.2 36.7 512 48 512c256.1 0 464-207.5 464-464 0-11.2-7.7-20.9-18.6-23.4z\"]\n};\nvar faPhoneAlt = {\n prefix: 'fas',\n iconName: 'phone-alt',\n icon: [512, 512, [], \"f879\", \"M497.39 361.8l-112-48a24 24 0 0 0-28 6.9l-49.6 60.6A370.66 370.66 0 0 1 130.6 204.11l60.6-49.6a23.94 23.94 0 0 0 6.9-28l-48-112A24.16 24.16 0 0 0 122.6.61l-104 24A24 24 0 0 0 0 48c0 256.5 207.9 464 464 464a24 24 0 0 0 23.4-18.6l24-104a24.29 24.29 0 0 0-14.01-27.6z\"]\n};\nvar faPhoneSlash = {\n prefix: 'fas',\n iconName: 'phone-slash',\n icon: [640, 512, [], \"f3dd\", \"M268.2 381.4l-49.6-60.6c-6.8-8.3-18.2-11.1-28-6.9l-112 48c-10.7 4.6-16.5 16.1-13.9 27.5l24 104c2.5 10.8 12.1 18.6 23.4 18.6 100.7 0 193.7-32.4 269.7-86.9l-80-61.8c-10.9 6.5-22.1 12.7-33.6 18.1zm365.6 76.7L475.1 335.5C537.9 256.4 576 156.9 576 48c0-11.2-7.7-20.9-18.6-23.4l-104-24c-11.3-2.6-22.9 3.3-27.5 13.9l-48 112c-4.2 9.8-1.4 21.3 6.9 28l60.6 49.6c-12.2 26.1-27.9 50.3-46 72.8L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3z\"]\n};\nvar faPhoneSquare = {\n prefix: 'fas',\n iconName: 'phone-square',\n icon: [448, 512, [], \"f098\", \"M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM94 416c-7.033 0-13.057-4.873-14.616-11.627l-14.998-65a15 15 0 0 1 8.707-17.16l69.998-29.999a15 15 0 0 1 17.518 4.289l30.997 37.885c48.944-22.963 88.297-62.858 110.781-110.78l-37.886-30.997a15.001 15.001 0 0 1-4.289-17.518l30-69.998a15 15 0 0 1 17.16-8.707l65 14.998A14.997 14.997 0 0 1 384 126c0 160.292-129.945 290-290 290z\"]\n};\nvar faPhoneSquareAlt = {\n prefix: 'fas',\n iconName: 'phone-square-alt',\n icon: [448, 512, [], \"f87b\", \"M400 32H48A48 48 0 0 0 0 80v352a48 48 0 0 0 48 48h352a48 48 0 0 0 48-48V80a48 48 0 0 0-48-48zm-16.39 307.37l-15 65A15 15 0 0 1 354 416C194 416 64 286.29 64 126a15.7 15.7 0 0 1 11.63-14.61l65-15A18.23 18.23 0 0 1 144 96a16.27 16.27 0 0 1 13.79 9.09l30 70A17.9 17.9 0 0 1 189 181a17 17 0 0 1-5.5 11.61l-37.89 31a231.91 231.91 0 0 0 110.78 110.78l31-37.89A17 17 0 0 1 299 291a17.85 17.85 0 0 1 5.91 1.21l70 30A16.25 16.25 0 0 1 384 336a17.41 17.41 0 0 1-.39 3.37z\"]\n};\nvar faPhoneVolume = {\n prefix: 'fas',\n iconName: 'phone-volume',\n icon: [384, 512, [], \"f2a0\", \"M97.333 506.966c-129.874-129.874-129.681-340.252 0-469.933 5.698-5.698 14.527-6.632 21.263-2.422l64.817 40.513a17.187 17.187 0 0 1 6.849 20.958l-32.408 81.021a17.188 17.188 0 0 1-17.669 10.719l-55.81-5.58c-21.051 58.261-20.612 122.471 0 179.515l55.811-5.581a17.188 17.188 0 0 1 17.669 10.719l32.408 81.022a17.188 17.188 0 0 1-6.849 20.958l-64.817 40.513a17.19 17.19 0 0 1-21.264-2.422zM247.126 95.473c11.832 20.047 11.832 45.008 0 65.055-3.95 6.693-13.108 7.959-18.718 2.581l-5.975-5.726c-3.911-3.748-4.793-9.622-2.261-14.41a32.063 32.063 0 0 0 0-29.945c-2.533-4.788-1.65-10.662 2.261-14.41l5.975-5.726c5.61-5.378 14.768-4.112 18.718 2.581zm91.787-91.187c60.14 71.604 60.092 175.882 0 247.428-4.474 5.327-12.53 5.746-17.552.933l-5.798-5.557c-4.56-4.371-4.977-11.529-.93-16.379 49.687-59.538 49.646-145.933 0-205.422-4.047-4.85-3.631-12.008.93-16.379l5.798-5.557c5.022-4.813 13.078-4.394 17.552.933zm-45.972 44.941c36.05 46.322 36.108 111.149 0 157.546-4.39 5.641-12.697 6.251-17.856 1.304l-5.818-5.579c-4.4-4.219-4.998-11.095-1.285-15.931 26.536-34.564 26.534-82.572 0-117.134-3.713-4.836-3.115-11.711 1.285-15.931l5.818-5.579c5.159-4.947 13.466-4.337 17.856 1.304z\"]\n};\nvar faPhotoVideo = {\n prefix: 'fas',\n iconName: 'photo-video',\n icon: [640, 512, [], \"f87c\", \"M608 0H160a32 32 0 0 0-32 32v96h160V64h192v320h128a32 32 0 0 0 32-32V32a32 32 0 0 0-32-32zM232 103a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9V73a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm352 208a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9v-30a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm0-104a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9v-30a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm0-104a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9V73a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm-168 57H32a32 32 0 0 0-32 32v288a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32V192a32 32 0 0 0-32-32zM96 224a32 32 0 1 1-32 32 32 32 0 0 1 32-32zm288 224H64v-32l64-64 32 32 128-128 96 96z\"]\n};\nvar faPiggyBank = {\n prefix: 'fas',\n iconName: 'piggy-bank',\n icon: [576, 512, [], \"f4d3\", \"M560 224h-29.5c-8.8-20-21.6-37.7-37.4-52.5L512 96h-32c-29.4 0-55.4 13.5-73 34.3-7.6-1.1-15.1-2.3-23-2.3H256c-77.4 0-141.9 55-156.8 128H56c-14.8 0-26.5-13.5-23.5-28.8C34.7 215.8 45.4 208 57 208h1c3.3 0 6-2.7 6-6v-20c0-3.3-2.7-6-6-6-28.5 0-53.9 20.4-57.5 48.6C-3.9 258.8 22.7 288 56 288h40c0 52.2 25.4 98.1 64 127.3V496c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-48h128v48c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-80.7c11.8-8.9 22.3-19.4 31.3-31.3H560c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16zm-128 64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zM256 96h128c5.4 0 10.7.4 15.9.8 0-.3.1-.5.1-.8 0-53-43-96-96-96s-96 43-96 96c0 2.1.5 4.1.6 6.2 15.2-3.9 31-6.2 47.4-6.2z\"]\n};\nvar faPills = {\n prefix: 'fas',\n iconName: 'pills',\n icon: [576, 512, [], \"f484\", \"M112 32C50.1 32 0 82.1 0 144v224c0 61.9 50.1 112 112 112s112-50.1 112-112V144c0-61.9-50.1-112-112-112zm48 224H64V144c0-26.5 21.5-48 48-48s48 21.5 48 48v112zm139.7-29.7c-3.5-3.5-9.4-3.1-12.3.8-45.3 62.5-40.4 150.1 15.9 206.4 56.3 56.3 143.9 61.2 206.4 15.9 4-2.9 4.3-8.8.8-12.3L299.7 226.3zm229.8-19c-56.3-56.3-143.9-61.2-206.4-15.9-4 2.9-4.3 8.8-.8 12.3l210.8 210.8c3.5 3.5 9.4 3.1 12.3-.8 45.3-62.6 40.5-150.1-15.9-206.4z\"]\n};\nvar faPizzaSlice = {\n prefix: 'fas',\n iconName: 'pizza-slice',\n icon: [512, 512, [], \"f818\", \"M158.87.15c-16.16-1.52-31.2 8.42-35.33 24.12l-14.81 56.27c187.62 5.49 314.54 130.61 322.48 317l56.94-15.78c15.72-4.36 25.49-19.68 23.62-35.9C490.89 165.08 340.78 17.32 158.87.15zm-58.47 112L.55 491.64a16.21 16.21 0 0 0 20 19.75l379-105.1c-4.27-174.89-123.08-292.14-299.15-294.1zM128 416a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm48-152a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm104 104a32 32 0 1 1 32-32 32 32 0 0 1-32 32z\"]\n};\nvar faPlaceOfWorship = {\n prefix: 'fas',\n iconName: 'place-of-worship',\n icon: [640, 512, [], \"f67f\", \"M620.61 366.55L512 320v192h112c8.84 0 16-7.16 16-16V395.96a32 32 0 0 0-19.39-29.41zM0 395.96V496c0 8.84 7.16 16 16 16h112V320L19.39 366.55A32 32 0 0 0 0 395.96zm464.46-149.28L416 217.6V102.63c0-8.49-3.37-16.62-9.38-22.63L331.31 4.69c-6.25-6.25-16.38-6.25-22.62 0L233.38 80c-6 6-9.38 14.14-9.38 22.63V217.6l-48.46 29.08A31.997 31.997 0 0 0 160 274.12V512h96v-96c0-35.35 28.66-64 64-64s64 28.65 64 64v96h96V274.12c0-11.24-5.9-21.66-15.54-27.44z\"]\n};\nvar faPlane = {\n prefix: 'fas',\n iconName: 'plane',\n icon: [576, 512, [], \"f072\", \"M480 192H365.71L260.61 8.06A16.014 16.014 0 0 0 246.71 0h-65.5c-10.63 0-18.3 10.17-15.38 20.39L214.86 192H112l-43.2-57.6c-3.02-4.03-7.77-6.4-12.8-6.4H16.01C5.6 128-2.04 137.78.49 147.88L32 256 .49 364.12C-2.04 374.22 5.6 384 16.01 384H56c5.04 0 9.78-2.37 12.8-6.4L112 320h102.86l-49.03 171.6c-2.92 10.22 4.75 20.4 15.38 20.4h65.5c5.74 0 11.04-3.08 13.89-8.06L365.71 320H480c35.35 0 96-28.65 96-64s-60.65-64-96-64z\"]\n};\nvar faPlaneArrival = {\n prefix: 'fas',\n iconName: 'plane-arrival',\n icon: [640, 512, [], \"f5af\", \"M624 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM44.81 205.66l88.74 80a62.607 62.607 0 0 0 25.47 13.93l287.6 78.35c26.48 7.21 54.56 8.72 81 1.36 29.67-8.27 43.44-21.21 47.25-35.71 3.83-14.5-1.73-32.71-23.37-54.96-19.28-19.82-44.35-32.79-70.83-40l-97.51-26.56L282.8 30.22c-1.51-5.81-5.95-10.35-11.66-11.91L206.05.58c-10.56-2.88-20.9 5.32-20.71 16.44l47.92 164.21-102.2-27.84-27.59-67.88c-1.93-4.89-6.01-8.57-11.02-9.93L52.72 64.75c-10.34-2.82-20.53 5-20.72 15.88l.23 101.78c.19 8.91 6.03 17.34 12.58 23.25z\"]\n};\nvar faPlaneDeparture = {\n prefix: 'fas',\n iconName: 'plane-departure',\n icon: [640, 512, [], \"f5b0\", \"M624 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM80.55 341.27c6.28 6.84 15.1 10.72 24.33 10.71l130.54-.18a65.62 65.62 0 0 0 29.64-7.12l290.96-147.65c26.74-13.57 50.71-32.94 67.02-58.31 18.31-28.48 20.3-49.09 13.07-63.65-7.21-14.57-24.74-25.27-58.25-27.45-29.85-1.94-59.54 5.92-86.28 19.48l-98.51 49.99-218.7-82.06a17.799 17.799 0 0 0-18-1.11L90.62 67.29c-10.67 5.41-13.25 19.65-5.17 28.53l156.22 98.1-103.21 52.38-72.35-36.47a17.804 17.804 0 0 0-16.07.02L9.91 230.22c-10.44 5.3-13.19 19.12-5.57 28.08l76.21 82.97z\"]\n};\nvar faPlaneSlash = {\n prefix: 'fas',\n iconName: 'plane-slash',\n icon: [640, 512, [], \"e069\", \"M32.48,147.88,64,256,32.48,364.13A16,16,0,0,0,48,384H88a16,16,0,0,0,12.8-6.41L144,320H246.85l-49,171.59A16,16,0,0,0,213.2,512h65.5a16,16,0,0,0,13.89-8.06l66.6-116.54L34.35,136.34A15.47,15.47,0,0,0,32.48,147.88ZM633.82,458.09,455.14,320H512c35.34,0,96-28.66,96-64s-60.66-64-96-64H397.7L292.61,8.06C290.06,3.61,283.84,0,278.71,0H213.2a16,16,0,0,0-15.38,20.39l36.94,129.29L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.45A16,16,0,0,0,6.18,53.91L594.54,508.63A16,16,0,0,0,617,505.81l19.64-25.26A16,16,0,0,0,633.82,458.09Z\"]\n};\nvar faPlay = {\n prefix: 'fas',\n iconName: 'play',\n icon: [448, 512, [], \"f04b\", \"M424.4 214.7L72.4 6.6C43.8-10.3 0 6.1 0 47.9V464c0 37.5 40.7 60.1 72.4 41.3l352-208c31.4-18.5 31.5-64.1 0-82.6z\"]\n};\nvar faPlayCircle = {\n prefix: 'fas',\n iconName: 'play-circle',\n icon: [512, 512, [], \"f144\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm115.7 272l-176 101c-15.8 8.8-35.7-2.5-35.7-21V152c0-18.4 19.8-29.8 35.7-21l176 107c16.4 9.2 16.4 32.9 0 42z\"]\n};\nvar faPlug = {\n prefix: 'fas',\n iconName: 'plug',\n icon: [384, 512, [], \"f1e6\", \"M320,32a32,32,0,0,0-64,0v96h64Zm48,128H16A16,16,0,0,0,0,176v32a16,16,0,0,0,16,16H32v32A160.07,160.07,0,0,0,160,412.8V512h64V412.8A160.07,160.07,0,0,0,352,256V224h16a16,16,0,0,0,16-16V176A16,16,0,0,0,368,160ZM128,32a32,32,0,0,0-64,0v96h64Z\"]\n};\nvar faPlus = {\n prefix: 'fas',\n iconName: 'plus',\n icon: [448, 512, [], \"f067\", \"M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"]\n};\nvar faPlusCircle = {\n prefix: 'fas',\n iconName: 'plus-circle',\n icon: [512, 512, [], \"f055\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm144 276c0 6.6-5.4 12-12 12h-92v92c0 6.6-5.4 12-12 12h-56c-6.6 0-12-5.4-12-12v-92h-92c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h92v-92c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v92h92c6.6 0 12 5.4 12 12v56z\"]\n};\nvar faPlusSquare = {\n prefix: 'fas',\n iconName: 'plus-square',\n icon: [448, 512, [], \"f0fe\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-32 252c0 6.6-5.4 12-12 12h-92v92c0 6.6-5.4 12-12 12h-56c-6.6 0-12-5.4-12-12v-92H92c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h92v-92c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v92h92c6.6 0 12 5.4 12 12v56z\"]\n};\nvar faPodcast = {\n prefix: 'fas',\n iconName: 'podcast',\n icon: [448, 512, [], \"f2ce\", \"M267.429 488.563C262.286 507.573 242.858 512 224 512c-18.857 0-38.286-4.427-43.428-23.437C172.927 460.134 160 388.898 160 355.75c0-35.156 31.142-43.75 64-43.75s64 8.594 64 43.75c0 32.949-12.871 104.179-20.571 132.813zM156.867 288.554c-18.693-18.308-29.958-44.173-28.784-72.599 2.054-49.724 42.395-89.956 92.124-91.881C274.862 121.958 320 165.807 320 220c0 26.827-11.064 51.116-28.866 68.552-2.675 2.62-2.401 6.986.628 9.187 9.312 6.765 16.46 15.343 21.234 25.363 1.741 3.654 6.497 4.66 9.449 1.891 28.826-27.043 46.553-65.783 45.511-108.565-1.855-76.206-63.595-138.208-139.793-140.369C146.869 73.753 80 139.215 80 220c0 41.361 17.532 78.7 45.55 104.989 2.953 2.771 7.711 1.77 9.453-1.887 4.774-10.021 11.923-18.598 21.235-25.363 3.029-2.2 3.304-6.566.629-9.185zM224 0C100.204 0 0 100.185 0 224c0 89.992 52.602 165.647 125.739 201.408 4.333 2.118 9.267-1.544 8.535-6.31-2.382-15.512-4.342-30.946-5.406-44.339-.146-1.836-1.149-3.486-2.678-4.512-47.4-31.806-78.564-86.016-78.187-147.347.592-96.237 79.29-174.648 175.529-174.899C320.793 47.747 400 126.797 400 224c0 61.932-32.158 116.49-80.65 147.867-.999 14.037-3.069 30.588-5.624 47.23-.732 4.767 4.203 8.429 8.535 6.31C395.227 389.727 448 314.187 448 224 448 100.205 347.815 0 224 0zm0 160c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64z\"]\n};\nvar faPoll = {\n prefix: 'fas',\n iconName: 'poll',\n icon: [448, 512, [], \"f681\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM160 368c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16V240c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v128zm96 0c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16V144c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v224zm96 0c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-64c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v64z\"]\n};\nvar faPollH = {\n prefix: 'fas',\n iconName: 'poll-h',\n icon: [448, 512, [], \"f682\", \"M448 432V80c0-26.5-21.5-48-48-48H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48zM112 192c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h128c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16H112zm0 96c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h224c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16H112zm0 96c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16h-64z\"]\n};\nvar faPoo = {\n prefix: 'fas',\n iconName: 'poo',\n icon: [512, 512, [], \"f2fe\", \"M451.4 369.1C468.7 356 480 335.4 480 312c0-39.8-32.2-72-72-72h-14.1c13.4-11.7 22.1-28.8 22.1-48 0-35.3-28.7-64-64-64h-5.9c3.6-10.1 5.9-20.7 5.9-32 0-53-43-96-96-96-5.2 0-10.2.7-15.1 1.5C250.3 14.6 256 30.6 256 48c0 44.2-35.8 80-80 80h-16c-35.3 0-64 28.7-64 64 0 19.2 8.7 36.3 22.1 48H104c-39.8 0-72 32.2-72 72 0 23.4 11.3 44 28.6 57.1C26.3 374.6 0 404.1 0 440c0 39.8 32.2 72 72 72h368c39.8 0 72-32.2 72-72 0-35.9-26.3-65.4-60.6-70.9zM192 256c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm159.5 139C341 422.9 293 448 256 448s-85-25.1-95.5-53c-2-5.3 2-11 7.8-11h175.4c5.8 0 9.8 5.7 7.8 11zM320 320c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faPooStorm = {\n prefix: 'fas',\n iconName: 'poo-storm',\n icon: [448, 512, [], \"f75a\", \"M308 336h-57.7l17.3-64.9c2-7.6-3.7-15.1-11.6-15.1h-68c-6 0-11.1 4.5-11.9 10.4l-16 120c-1 7.2 4.6 13.6 11.9 13.6h59.3l-23 97.2c-1.8 7.6 4 14.8 11.7 14.8 4.2 0 8.2-2.2 10.4-6l88-152c4.6-8-1.2-18-10.4-18zm66.4-111.3c5.9-9.6 9.6-20.6 9.6-32.7 0-35.3-28.7-64-64-64h-5.9c3.6-10.1 5.9-20.7 5.9-32 0-53-43-96-96-96-5.2 0-10.2.7-15.1 1.5C218.3 14.6 224 30.6 224 48c0 44.2-35.8 80-80 80h-16c-35.3 0-64 28.7-64 64 0 12.1 3.7 23.1 9.6 32.7C32.6 228 0 262.2 0 304c0 44 36 80 80 80h48.3c.1-.6 0-1.2 0-1.8l16-120c3-21.8 21.7-38.2 43.7-38.2h68c13.8 0 26.5 6.3 34.9 17.2s11.2 24.8 7.6 38.1l-6.6 24.7h16c15.7 0 30.3 8.4 38.1 22 7.8 13.6 7.8 30.5 0 44l-8.1 14h30c44 0 80-36 80-80 .1-41.8-32.5-76-73.5-79.3z\"]\n};\nvar faPoop = {\n prefix: 'fas',\n iconName: 'poop',\n icon: [512, 512, [], \"f619\", \"M451.36 369.14C468.66 355.99 480 335.41 480 312c0-39.77-32.24-72-72-72h-14.07c13.42-11.73 22.07-28.78 22.07-48 0-35.35-28.65-64-64-64h-5.88c3.57-10.05 5.88-20.72 5.88-32 0-53.02-42.98-96-96-96-5.17 0-10.15.74-15.11 1.52C250.31 14.64 256 30.62 256 48c0 44.18-35.82 80-80 80h-16c-35.35 0-64 28.65-64 64 0 19.22 8.65 36.27 22.07 48H104c-39.76 0-72 32.23-72 72 0 23.41 11.34 43.99 28.64 57.14C26.31 374.62 0 404.12 0 440c0 39.76 32.24 72 72 72h368c39.76 0 72-32.24 72-72 0-35.88-26.31-65.38-60.64-70.86z\"]\n};\nvar faPortrait = {\n prefix: 'fas',\n iconName: 'portrait',\n icon: [384, 512, [], \"f3e0\", \"M336 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM192 128c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H102.4C90 384 80 375.4 80 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z\"]\n};\nvar faPoundSign = {\n prefix: 'fas',\n iconName: 'pound-sign',\n icon: [320, 512, [], \"f154\", \"M308 352h-45.495c-6.627 0-12 5.373-12 12v50.848H128V288h84c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-84v-63.556c0-32.266 24.562-57.086 61.792-57.086 23.658 0 45.878 11.505 57.652 18.849 5.151 3.213 11.888 2.051 15.688-2.685l28.493-35.513c4.233-5.276 3.279-13.005-2.119-17.081C273.124 54.56 236.576 32 187.931 32 106.026 32 48 84.742 48 157.961V224H20c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h28v128H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h296c6.627 0 12-5.373 12-12V364c0-6.627-5.373-12-12-12z\"]\n};\nvar faPowerOff = {\n prefix: 'fas',\n iconName: 'power-off',\n icon: [512, 512, [], \"f011\", \"M400 54.1c63 45 104 118.6 104 201.9 0 136.8-110.8 247.7-247.5 248C120 504.3 8.2 393 8 256.4 7.9 173.1 48.9 99.3 111.8 54.2c11.7-8.3 28-4.8 35 7.7L162.6 90c5.9 10.5 3.1 23.8-6.6 31-41.5 30.8-68 79.6-68 134.9-.1 92.3 74.5 168.1 168 168.1 91.6 0 168.6-74.2 168-169.1-.3-51.8-24.7-101.8-68.1-134-9.7-7.2-12.4-20.5-6.5-30.9l15.8-28.1c7-12.4 23.2-16.1 34.8-7.8zM296 264V24c0-13.3-10.7-24-24-24h-32c-13.3 0-24 10.7-24 24v240c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24z\"]\n};\nvar faPray = {\n prefix: 'fas',\n iconName: 'pray',\n icon: [384, 512, [], \"f683\", \"M256 128c35.35 0 64-28.65 64-64S291.35 0 256 0s-64 28.65-64 64 28.65 64 64 64zm-30.63 169.75c14.06 16.72 39 19.09 55.97 5.22l88-72.02c17.09-13.98 19.59-39.19 5.62-56.28-13.97-17.11-39.19-19.59-56.31-5.62l-57.44 47-38.91-46.31c-15.44-18.39-39.22-27.92-64-25.33-24.19 2.48-45.25 16.27-56.37 36.92l-49.37 92.03c-23.4 43.64-8.69 96.37 34.19 123.75L131.56 432H40c-22.09 0-40 17.91-40 40s17.91 40 40 40h208c34.08 0 53.77-42.79 28.28-68.28L166.42 333.86l34.8-64.87 24.15 28.76z\"]\n};\nvar faPrayingHands = {\n prefix: 'fas',\n iconName: 'praying-hands',\n icon: [640, 512, [], \"f684\", \"M272 191.91c-17.6 0-32 14.4-32 32v80c0 8.84-7.16 16-16 16s-16-7.16-16-16v-76.55c0-17.39 4.72-34.47 13.69-49.39l77.75-129.59c9.09-15.16 4.19-34.81-10.97-43.91-14.45-8.67-32.72-4.3-42.3 9.21-.2.23-.62.21-.79.48l-117.26 175.9C117.56 205.9 112 224.31 112 243.29v80.23l-90.12 30.04A31.974 31.974 0 0 0 0 383.91v96c0 10.82 8.52 32 32 32 2.69 0 5.41-.34 8.06-1.03l179.19-46.62C269.16 449.99 304 403.8 304 351.91v-128c0-17.6-14.4-32-32-32zm346.12 161.73L528 323.6v-80.23c0-18.98-5.56-37.39-16.12-53.23L394.62 14.25c-.18-.27-.59-.24-.79-.48-9.58-13.51-27.85-17.88-42.3-9.21-15.16 9.09-20.06 28.75-10.97 43.91l77.75 129.59c8.97 14.92 13.69 32 13.69 49.39V304c0 8.84-7.16 16-16 16s-16-7.16-16-16v-80c0-17.6-14.4-32-32-32s-32 14.4-32 32v128c0 51.89 34.84 98.08 84.75 112.34l179.19 46.62c2.66.69 5.38 1.03 8.06 1.03 23.48 0 32-21.18 32-32v-96c0-13.77-8.81-25.99-21.88-30.35z\"]\n};\nvar faPrescription = {\n prefix: 'fas',\n iconName: 'prescription',\n icon: [384, 512, [], \"f5b1\", \"M301.26 352l78.06-78.06c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0L256 306.74l-83.96-83.96C219.31 216.8 256 176.89 256 128c0-53.02-42.98-96-96-96H16C7.16 32 0 39.16 0 48v256c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-80h18.75l128 128-78.06 78.06c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0L256 397.25l78.06 78.06c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63L301.26 352zM64 96h96c17.64 0 32 14.36 32 32s-14.36 32-32 32H64V96z\"]\n};\nvar faPrescriptionBottle = {\n prefix: 'fas',\n iconName: 'prescription-bottle',\n icon: [384, 512, [], \"f485\", \"M32 192h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64c0 17.6 14.4 32 32 32h256c17.6 0 32-14.4 32-32V128H32v64zM360 0H24C10.8 0 0 10.8 0 24v48c0 13.2 10.8 24 24 24h336c13.2 0 24-10.8 24-24V24c0-13.2-10.8-24-24-24z\"]\n};\nvar faPrescriptionBottleAlt = {\n prefix: 'fas',\n iconName: 'prescription-bottle-alt',\n icon: [384, 512, [], \"f486\", \"M360 0H24C10.8 0 0 10.8 0 24v48c0 13.2 10.8 24 24 24h336c13.2 0 24-10.8 24-24V24c0-13.2-10.8-24-24-24zM32 480c0 17.6 14.4 32 32 32h256c17.6 0 32-14.4 32-32V128H32v352zm64-184c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48z\"]\n};\nvar faPrint = {\n prefix: 'fas',\n iconName: 'print',\n icon: [512, 512, [], \"f02f\", \"M448 192V77.25c0-8.49-3.37-16.62-9.37-22.63L393.37 9.37c-6-6-14.14-9.37-22.63-9.37H96C78.33 0 64 14.33 64 32v160c-35.35 0-64 28.65-64 64v112c0 8.84 7.16 16 16 16h48v96c0 17.67 14.33 32 32 32h320c17.67 0 32-14.33 32-32v-96h48c8.84 0 16-7.16 16-16V256c0-35.35-28.65-64-64-64zm-64 256H128v-96h256v96zm0-224H128V64h192v48c0 8.84 7.16 16 16 16h48v96zm48 72c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"]\n};\nvar faProcedures = {\n prefix: 'fas',\n iconName: 'procedures',\n icon: [640, 512, [], \"f487\", \"M528 224H272c-8.8 0-16 7.2-16 16v144H64V144c0-8.8-7.2-16-16-16H16c-8.8 0-16 7.2-16 16v352c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-48h512v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V336c0-61.9-50.1-112-112-112zM136 96h126.1l27.6 55.2c5.9 11.8 22.7 11.8 28.6 0L368 51.8 390.1 96H512c8.8 0 16-7.2 16-16s-7.2-16-16-16H409.9L382.3 8.8C376.4-3 359.6-3 353.7 8.8L304 108.2l-19.9-39.8c-1.4-2.7-4.1-4.4-7.2-4.4H136c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm24 256c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64z\"]\n};\nvar faProjectDiagram = {\n prefix: 'fas',\n iconName: 'project-diagram',\n icon: [640, 512, [], \"f542\", \"M384 320H256c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h128c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32zM192 32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v128c0 17.67 14.33 32 32 32h95.72l73.16 128.04C211.98 300.98 232.4 288 256 288h.28L192 175.51V128h224V64H192V32zM608 0H480c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h128c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32z\"]\n};\nvar faPumpMedical = {\n prefix: 'fas',\n iconName: 'pump-medical',\n icon: [384, 512, [], \"e06a\", \"M235.51,159.82H84.24A64,64,0,0,0,20.51,218L.14,442a64,64,0,0,0,63.74,69.8h192A64,64,0,0,0,319.61,442L299.24,218A64,64,0,0,0,235.51,159.82Zm4.37,173.33a13.35,13.35,0,0,1-13.34,13.34h-40v40a13.33,13.33,0,0,1-13.33,13.33H146.54a13.33,13.33,0,0,1-13.33-13.33v-40h-40a13.34,13.34,0,0,1-13.33-13.34V306.49a13.33,13.33,0,0,1,13.33-13.34h40v-40a13.33,13.33,0,0,1,13.33-13.33h26.67a13.33,13.33,0,0,1,13.33,13.33v40h40a13.34,13.34,0,0,1,13.34,13.34ZM379.19,93.88,335.87,50.56a64,64,0,0,0-45.24-18.74H223.88a32,32,0,0,0-32-32h-64a32,32,0,0,0-32,32v96h128v-32h66.75l43.31,43.31a16,16,0,0,0,22.63,0l22.62-22.62A16,16,0,0,0,379.19,93.88Z\"]\n};\nvar faPumpSoap = {\n prefix: 'fas',\n iconName: 'pump-soap',\n icon: [384, 512, [], \"e06b\", \"M235.63,160H84.37a64,64,0,0,0-63.74,58.21L.27,442.21A64,64,0,0,0,64,512H256a64,64,0,0,0,63.74-69.79l-20.36-224A64,64,0,0,0,235.63,160ZM160,416c-33.12,0-60-26.33-60-58.75,0-25,35.7-75.47,52-97.27A10,10,0,0,1,168,260c16.33,21.8,52,72.27,52,97.27C220,389.67,193.12,416,160,416ZM379.31,94.06,336,50.74A64,64,0,0,0,290.75,32H224A32,32,0,0,0,192,0H128A32,32,0,0,0,96,32v96H224V96h66.75l43.31,43.31a16,16,0,0,0,22.63,0l22.62-22.62A16,16,0,0,0,379.31,94.06Z\"]\n};\nvar faPuzzlePiece = {\n prefix: 'fas',\n iconName: 'puzzle-piece',\n icon: [576, 512, [], \"f12e\", \"M519.442 288.651c-41.519 0-59.5 31.593-82.058 31.593C377.409 320.244 432 144 432 144s-196.288 80-196.288-3.297c0-35.827 36.288-46.25 36.288-85.985C272 19.216 243.885 0 210.539 0c-34.654 0-66.366 18.891-66.366 56.346 0 41.364 31.711 59.277 31.711 81.75C175.885 207.719 0 166.758 0 166.758v333.237s178.635 41.047 178.635-28.662c0-22.473-40-40.107-40-81.471 0-37.456 29.25-56.346 63.577-56.346 33.673 0 61.788 19.216 61.788 54.717 0 39.735-36.288 50.158-36.288 85.985 0 60.803 129.675 25.73 181.23 25.73 0 0-34.725-120.101 25.827-120.101 35.962 0 46.423 36.152 86.308 36.152C556.712 416 576 387.99 576 354.443c0-34.199-18.962-65.792-56.558-65.792z\"]\n};\nvar faQrcode = {\n prefix: 'fas',\n iconName: 'qrcode',\n icon: [448, 512, [], \"f029\", \"M0 224h192V32H0v192zM64 96h64v64H64V96zm192-64v192h192V32H256zm128 128h-64V96h64v64zM0 480h192V288H0v192zm64-128h64v64H64v-64zm352-64h32v128h-96v-32h-32v96h-64V288h96v32h64v-32zm0 160h32v32h-32v-32zm-64 0h32v32h-32v-32z\"]\n};\nvar faQuestion = {\n prefix: 'fas',\n iconName: 'question',\n icon: [384, 512, [], \"f128\", \"M202.021 0C122.202 0 70.503 32.703 29.914 91.026c-7.363 10.58-5.093 25.086 5.178 32.874l43.138 32.709c10.373 7.865 25.132 6.026 33.253-4.148 25.049-31.381 43.63-49.449 82.757-49.449 30.764 0 68.816 19.799 68.816 49.631 0 22.552-18.617 34.134-48.993 51.164-35.423 19.86-82.299 44.576-82.299 106.405V320c0 13.255 10.745 24 24 24h72.471c13.255 0 24-10.745 24-24v-5.773c0-42.86 125.268-44.645 125.268-160.627C377.504 66.256 286.902 0 202.021 0zM192 373.459c-38.196 0-69.271 31.075-69.271 69.271 0 38.195 31.075 69.27 69.271 69.27s69.271-31.075 69.271-69.271-31.075-69.27-69.271-69.27z\"]\n};\nvar faQuestionCircle = {\n prefix: 'fas',\n iconName: 'question-circle',\n icon: [512, 512, [], \"f059\", \"M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zM262.655 90c-54.497 0-89.255 22.957-116.549 63.758-3.536 5.286-2.353 12.415 2.715 16.258l34.699 26.31c5.205 3.947 12.621 3.008 16.665-2.122 17.864-22.658 30.113-35.797 57.303-35.797 20.429 0 45.698 13.148 45.698 32.958 0 14.976-12.363 22.667-32.534 33.976C247.128 238.528 216 254.941 216 296v4c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12v-1.333c0-28.462 83.186-29.647 83.186-106.667 0-58.002-60.165-102-116.531-102zM256 338c-25.365 0-46 20.635-46 46 0 25.364 20.635 46 46 46s46-20.636 46-46c0-25.365-20.635-46-46-46z\"]\n};\nvar faQuidditch = {\n prefix: 'fas',\n iconName: 'quidditch',\n icon: [640, 512, [], \"f458\", \"M256.5 216.8L343.2 326s-16.6 102.4-76.6 150.1C206.7 523.8 0 510.2 0 510.2s3.8-23.1 11-55.4l94.6-112.2c4-4.7-.9-11.6-6.6-9.5l-60.4 22.1c14.4-41.7 32.7-80 54.6-97.5 59.9-47.8 163.3-40.9 163.3-40.9zm238 135c-44 0-79.8 35.8-79.8 79.9 0 44.1 35.7 79.9 79.8 79.9 44.1 0 79.8-35.8 79.8-79.9 0-44.2-35.8-79.9-79.8-79.9zM636.5 31L616.7 6c-5.5-6.9-15.5-8-22.4-2.6L361.8 181.3l-34.1-43c-5.1-6.4-15.1-5.2-18.6 2.2l-25.3 54.6 86.7 109.2 58.8-12.4c8-1.7 11.4-11.2 6.3-17.6l-34.1-42.9L634 53.5c6.9-5.5 8-15.6 2.5-22.5z\"]\n};\nvar faQuoteLeft = {\n prefix: 'fas',\n iconName: 'quote-left',\n icon: [512, 512, [], \"f10d\", \"M464 256h-80v-64c0-35.3 28.7-64 64-64h8c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24h-8c-88.4 0-160 71.6-160 160v240c0 26.5 21.5 48 48 48h128c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48zm-288 0H96v-64c0-35.3 28.7-64 64-64h8c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24h-8C71.6 32 0 103.6 0 192v240c0 26.5 21.5 48 48 48h128c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48z\"]\n};\nvar faQuoteRight = {\n prefix: 'fas',\n iconName: 'quote-right',\n icon: [512, 512, [], \"f10e\", \"M464 32H336c-26.5 0-48 21.5-48 48v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48zm-288 0H48C21.5 32 0 53.5 0 80v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48z\"]\n};\nvar faQuran = {\n prefix: 'fas',\n iconName: 'quran',\n icon: [448, 512, [], \"f687\", \"M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM301.08 145.82c.6-1.21 1.76-1.82 2.92-1.82s2.32.61 2.92 1.82l11.18 22.65 25 3.63c2.67.39 3.74 3.67 1.81 5.56l-18.09 17.63 4.27 24.89c.36 2.11-1.31 3.82-3.21 3.82-.5 0-1.02-.12-1.52-.38L304 211.87l-22.36 11.75c-.5.26-1.02.38-1.52.38-1.9 0-3.57-1.71-3.21-3.82l4.27-24.89-18.09-17.63c-1.94-1.89-.87-5.17 1.81-5.56l24.99-3.63 11.19-22.65zm-57.89-69.01c13.67 0 27.26 2.49 40.38 7.41a6.775 6.775 0 1 1-2.38 13.12c-.67 0-3.09-.21-4.13-.21-52.31 0-94.86 42.55-94.86 94.86 0 52.3 42.55 94.86 94.86 94.86 1.03 0 3.48-.21 4.13-.21 3.93 0 6.8 3.14 6.8 6.78 0 2.98-1.94 5.51-4.62 6.42-13.07 4.87-26.59 7.34-40.19 7.34C179.67 307.19 128 255.51 128 192c0-63.52 51.67-115.19 115.19-115.19zM380.8 448H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8v64z\"]\n};\nvar faRadiation = {\n prefix: 'fas',\n iconName: 'radiation',\n icon: [496, 512, [], \"f7b9\", \"M328.2 255.8h151.6c9.1 0 16.8-7.7 16.2-16.8-5.1-75.8-44.4-142.2-102.5-184.2-7.4-5.3-17.9-2.9-22.7 4.8L290.4 188c22.6 14.3 37.8 39.2 37.8 67.8zm-37.8 67.7c-12.3 7.7-26.8 12.4-42.4 12.4-15.6 0-30-4.7-42.4-12.4L125.2 452c-4.8 7.7-2.4 18.1 5.6 22.4C165.7 493.2 205.6 504 248 504s82.3-10.8 117.2-29.6c8-4.3 10.4-14.8 5.6-22.4l-80.4-128.5zM248 303.8c26.5 0 48-21.5 48-48s-21.5-48-48-48-48 21.5-48 48 21.5 48 48 48zm-231.8-48h151.6c0-28.6 15.2-53.5 37.8-67.7L125.2 59.7c-4.8-7.7-15.3-10.2-22.7-4.8C44.4 96.9 5.1 163.3 0 239.1c-.6 9 7.1 16.7 16.2 16.7z\"]\n};\nvar faRadiationAlt = {\n prefix: 'fas',\n iconName: 'radiation-alt',\n icon: [496, 512, [], \"f7ba\", \"M312 256h79.1c9.2 0 16.9-7.7 16-16.8-4.6-43.6-27-81.8-59.5-107.8-7.6-6.1-18.8-4.5-24 3.8L281.9 202c18 11.2 30.1 31.2 30.1 54zm-97.8 54.1L172.4 377c-4.9 7.8-2.4 18.4 5.8 22.5 21.1 10.4 44.7 16.5 69.8 16.5s48.7-6.1 69.9-16.5c8.2-4.1 10.6-14.7 5.8-22.5l-41.8-66.9c-9.8 6.2-21.4 9.9-33.8 9.9s-24.1-3.7-33.9-9.9zM104.9 256H184c0-22.8 12.1-42.8 30.2-54.1l-41.7-66.8c-5.2-8.3-16.4-9.9-24-3.8-32.6 26-54.9 64.2-59.5 107.8-1.1 9.2 6.7 16.9 15.9 16.9zM248 504c137 0 248-111 248-248S385 8 248 8 0 119 0 256s111 248 248 248zm0-432c101.5 0 184 82.5 184 184s-82.5 184-184 184S64 357.5 64 256 146.5 72 248 72zm0 216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32z\"]\n};\nvar faRainbow = {\n prefix: 'fas',\n iconName: 'rainbow',\n icon: [576, 512, [], \"f75b\", \"M268.3 32.7C115.4 42.9 0 176.9 0 330.2V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320C64 186.8 180.9 80.3 317.5 97.9 430.4 112.4 512 214 512 327.8V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-165.3-140-298.6-307.7-287.3zm-5.6 96.9C166 142 96 229.1 96 326.7V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-74.8 64.5-134.8 140.8-127.4 66.5 6.5 115.2 66.2 115.2 133.1V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-114.2-100.2-205.4-217.3-190.4zm6.2 96.3c-45.6 8.9-76.9 51.5-76.9 97.9V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-17.6 14.3-32 32-32s32 14.4 32 32v144c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-59.2-53.8-106-115.1-94.1z\"]\n};\nvar faRandom = {\n prefix: 'fas',\n iconName: 'random',\n icon: [512, 512, [], \"f074\", \"M504.971 359.029c9.373 9.373 9.373 24.569 0 33.941l-80 79.984c-15.01 15.01-40.971 4.49-40.971-16.971V416h-58.785a12.004 12.004 0 0 1-8.773-3.812l-70.556-75.596 53.333-57.143L352 336h32v-39.981c0-21.438 25.943-31.998 40.971-16.971l80 79.981zM12 176h84l52.781 56.551 53.333-57.143-70.556-75.596A11.999 11.999 0 0 0 122.785 96H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12zm372 0v39.984c0 21.46 25.961 31.98 40.971 16.971l80-79.984c9.373-9.373 9.373-24.569 0-33.941l-80-79.981C409.943 24.021 384 34.582 384 56.019V96h-58.785a12.004 12.004 0 0 0-8.773 3.812L96 336H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12h110.785c3.326 0 6.503-1.381 8.773-3.812L352 176h32z\"]\n};\nvar faReceipt = {\n prefix: 'fas',\n iconName: 'receipt',\n icon: [384, 512, [], \"f543\", \"M358.4 3.2L320 48 265.6 3.2a15.9 15.9 0 0 0-19.2 0L192 48 137.6 3.2a15.9 15.9 0 0 0-19.2 0L64 48 25.6 3.2C15-4.7 0 2.8 0 16v480c0 13.2 15 20.7 25.6 12.8L64 464l54.4 44.8a15.9 15.9 0 0 0 19.2 0L192 464l54.4 44.8a15.9 15.9 0 0 0 19.2 0L320 464l38.4 44.8c10.5 7.9 25.6.4 25.6-12.8V16c0-13.2-15-20.7-25.6-12.8zM320 360c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faRecordVinyl = {\n prefix: 'fas',\n iconName: 'record-vinyl',\n icon: [512, 512, [], \"f8d9\", \"M256 152a104 104 0 1 0 104 104 104 104 0 0 0-104-104zm0 128a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm0-272C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 376a128 128 0 1 1 128-128 128 128 0 0 1-128 128z\"]\n};\nvar faRecycle = {\n prefix: 'fas',\n iconName: 'recycle',\n icon: [512, 512, [], \"f1b8\", \"M184.561 261.903c3.232 13.997-12.123 24.635-24.068 17.168l-40.736-25.455-50.867 81.402C55.606 356.273 70.96 384 96.012 384H148c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12H96.115c-75.334 0-121.302-83.048-81.408-146.88l50.822-81.388-40.725-25.448c-12.081-7.547-8.966-25.961 4.879-29.158l110.237-25.45c8.611-1.988 17.201 3.381 19.189 11.99l25.452 110.237zm98.561-182.915l41.289 66.076-40.74 25.457c-12.051 7.528-9 25.953 4.879 29.158l110.237 25.45c8.672 1.999 17.215-3.438 19.189-11.99l25.45-110.237c3.197-13.844-11.99-24.719-24.068-17.168l-40.687 25.424-41.263-66.082c-37.521-60.033-125.209-60.171-162.816 0l-17.963 28.766c-3.51 5.62-1.8 13.021 3.82 16.533l33.919 21.195c5.62 3.512 13.024 1.803 16.536-3.817l17.961-28.743c12.712-20.341 41.973-19.676 54.257-.022zM497.288 301.12l-27.515-44.065c-3.511-5.623-10.916-7.334-16.538-3.821l-33.861 21.159c-5.62 3.512-7.33 10.915-3.818 16.536l27.564 44.112c13.257 21.211-2.057 48.96-27.136 48.96H320V336.02c0-14.213-17.242-21.383-27.313-11.313l-80 79.981c-6.249 6.248-6.249 16.379 0 22.627l80 79.989C302.689 517.308 320 510.3 320 495.989V448h95.88c75.274 0 121.335-82.997 81.408-146.88z\"]\n};\nvar faRedo = {\n prefix: 'fas',\n iconName: 'redo',\n icon: [512, 512, [], \"f01e\", \"M500.33 0h-47.41a12 12 0 0 0-12 12.57l4 82.76A247.42 247.42 0 0 0 256 8C119.34 8 7.9 119.53 8 256.19 8.1 393.07 119.1 504 256 504a247.1 247.1 0 0 0 166.18-63.91 12 12 0 0 0 .48-17.43l-34-34a12 12 0 0 0-16.38-.55A176 176 0 1 1 402.1 157.8l-101.53-4.87a12 12 0 0 0-12.57 12v47.41a12 12 0 0 0 12 12h200.33a12 12 0 0 0 12-12V12a12 12 0 0 0-12-12z\"]\n};\nvar faRedoAlt = {\n prefix: 'fas',\n iconName: 'redo-alt',\n icon: [512, 512, [], \"f2f9\", \"M256.455 8c66.269.119 126.437 26.233 170.859 68.685l35.715-35.715C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.75c-30.864-28.899-70.801-44.907-113.23-45.273-92.398-.798-170.283 73.977-169.484 169.442C88.764 348.009 162.184 424 256 424c41.127 0 79.997-14.678 110.629-41.556 4.743-4.161 11.906-3.908 16.368.553l39.662 39.662c4.872 4.872 4.631 12.815-.482 17.433C378.202 479.813 319.926 504 256 504 119.034 504 8.001 392.967 8 256.002 7.999 119.193 119.646 7.755 256.455 8z\"]\n};\nvar faRegistered = {\n prefix: 'fas',\n iconName: 'registered',\n icon: [512, 512, [], \"f25d\", \"M285.363 207.475c0 18.6-9.831 28.431-28.431 28.431h-29.876v-56.14h23.378c28.668 0 34.929 8.773 34.929 27.709zM504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM363.411 360.414c-46.729-84.825-43.299-78.636-44.702-80.98 23.432-15.172 37.945-42.979 37.945-74.486 0-54.244-31.5-89.252-105.498-89.252h-70.667c-13.255 0-24 10.745-24 24V372c0 13.255 10.745 24 24 24h22.567c13.255 0 24-10.745 24-24v-71.663h25.556l44.129 82.937a24.001 24.001 0 0 0 21.188 12.727h24.464c18.261-.001 29.829-19.591 21.018-35.587z\"]\n};\nvar faRemoveFormat = {\n prefix: 'fas',\n iconName: 'remove-format',\n icon: [640, 512, [], \"f87d\", \"M336 416h-11.17l9.26-27.77L267 336.4 240.49 416H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm297.82 42.1L377 259.59 426.17 112H544v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16H176a16 16 0 0 0-16 16v43.9L45.46 3.38A16 16 0 0 0 23 6.19L3.37 31.46a16 16 0 0 0 2.81 22.45l588.36 454.72a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45zM309.91 207.76L224 141.36V112h117.83z\"]\n};\nvar faReply = {\n prefix: 'fas',\n iconName: 'reply',\n icon: [512, 512, [], \"f3e5\", \"M8.309 189.836L184.313 37.851C199.719 24.546 224 35.347 224 56.015v80.053c160.629 1.839 288 34.032 288 186.258 0 61.441-39.581 122.309-83.333 154.132-13.653 9.931-33.111-2.533-28.077-18.631 45.344-145.012-21.507-183.51-176.59-185.742V360c0 20.7-24.3 31.453-39.687 18.164l-176.004-152c-11.071-9.562-11.086-26.753 0-36.328z\"]\n};\nvar faReplyAll = {\n prefix: 'fas',\n iconName: 'reply-all',\n icon: [576, 512, [], \"f122\", \"M136.309 189.836L312.313 37.851C327.72 24.546 352 35.348 352 56.015v82.763c129.182 10.231 224 52.212 224 183.548 0 61.441-39.582 122.309-83.333 154.132-13.653 9.931-33.111-2.533-28.077-18.631 38.512-123.162-3.922-169.482-112.59-182.015v84.175c0 20.701-24.3 31.453-39.687 18.164L136.309 226.164c-11.071-9.561-11.086-26.753 0-36.328zm-128 36.328L184.313 378.15C199.7 391.439 224 380.687 224 359.986v-15.818l-108.606-93.785A55.96 55.96 0 0 1 96 207.998a55.953 55.953 0 0 1 19.393-42.38L224 71.832V56.015c0-20.667-24.28-31.469-39.687-18.164L8.309 189.836c-11.086 9.575-11.071 26.767 0 36.328z\"]\n};\nvar faRepublican = {\n prefix: 'fas',\n iconName: 'republican',\n icon: [640, 512, [], \"f75e\", \"M544 192c0-88.4-71.6-160-160-160H160C71.6 32 0 103.6 0 192v64h544v-64zm-367.7-21.6l-19.8 19.3 4.7 27.3c.8 4.9-4.3 8.6-8.7 6.3L128 210.4l-24.5 12.9c-4.3 2.3-9.5-1.4-8.7-6.3l4.7-27.3-19.8-19.3c-3.6-3.5-1.6-9.5 3.3-10.2l27.4-4 12.2-24.8c2.2-4.5 8.6-4.4 10.7 0l12.2 24.8 27.4 4c5 .7 6.9 6.7 3.4 10.2zm144 0l-19.8 19.3 4.7 27.3c.8 4.9-4.3 8.6-8.7 6.3L272 210.4l-24.5 12.9c-4.3 2.3-9.5-1.4-8.7-6.3l4.7-27.3-19.8-19.3c-3.6-3.5-1.6-9.5 3.3-10.2l27.4-4 12.2-24.8c2.2-4.5 8.6-4.4 10.7 0l12.2 24.8 27.4 4c5 .7 6.9 6.7 3.4 10.2zm144 0l-19.8 19.3 4.7 27.3c.8 4.9-4.3 8.6-8.7 6.3L416 210.4l-24.5 12.9c-4.3 2.3-9.5-1.4-8.7-6.3l4.7-27.3-19.8-19.3c-3.6-3.5-1.6-9.5 3.3-10.2l27.4-4 12.2-24.8c2.2-4.5 8.6-4.4 10.7 0l12.2 24.8 27.4 4c5 .7 6.9 6.7 3.4 10.2zM624 320h-32c-8.8 0-16 7.2-16 16v64c0 8.8-7.2 16-16 16s-16-7.2-16-16V288H0v176c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16v-80h192v80c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16V352h32v43.3c0 41.8 30 80.1 71.6 84.3 47.8 4.9 88.4-32.7 88.4-79.6v-64c0-8.8-7.2-16-16-16z\"]\n};\nvar faRestroom = {\n prefix: 'fas',\n iconName: 'restroom',\n icon: [640, 512, [], \"f7bd\", \"M128 128c35.3 0 64-28.7 64-64S163.3 0 128 0 64 28.7 64 64s28.7 64 64 64zm384 0c35.3 0 64-28.7 64-64S547.3 0 512 0s-64 28.7-64 64 28.7 64 64 64zm127.3 226.5l-45.6-185.8c-3.3-13.5-15.5-23-29.8-24.2-15 9.7-32.8 15.5-52 15.5-19.2 0-37-5.8-52-15.5-14.3 1.2-26.5 10.7-29.8 24.2l-45.6 185.8C381 369.6 393 384 409.2 384H464v104c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V384h54.8c16.2 0 28.2-14.4 24.5-29.5zM336 0h-32c-8.8 0-16 7.2-16 16v480c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16zM180.1 144.4c-15 9.8-32.9 15.6-52.1 15.6-19.2 0-37.1-5.8-52.1-15.6C51.3 146.5 32 166.9 32 192v136c0 13.3 10.7 24 24 24h8v136c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V352h8c13.3 0 24-10.7 24-24V192c0-25.1-19.3-45.5-43.9-47.6z\"]\n};\nvar faRetweet = {\n prefix: 'fas',\n iconName: 'retweet',\n icon: [640, 512, [], \"f079\", \"M629.657 343.598L528.971 444.284c-9.373 9.372-24.568 9.372-33.941 0L394.343 343.598c-9.373-9.373-9.373-24.569 0-33.941l10.823-10.823c9.562-9.562 25.133-9.34 34.419.492L480 342.118V160H292.451a24.005 24.005 0 0 1-16.971-7.029l-16-16C244.361 121.851 255.069 96 276.451 96H520c13.255 0 24 10.745 24 24v222.118l40.416-42.792c9.285-9.831 24.856-10.054 34.419-.492l10.823 10.823c9.372 9.372 9.372 24.569-.001 33.941zm-265.138 15.431A23.999 23.999 0 0 0 347.548 352H160V169.881l40.416 42.792c9.286 9.831 24.856 10.054 34.419.491l10.822-10.822c9.373-9.373 9.373-24.569 0-33.941L144.971 67.716c-9.373-9.373-24.569-9.373-33.941 0L10.343 168.402c-9.373 9.373-9.373 24.569 0 33.941l10.822 10.822c9.562 9.562 25.133 9.34 34.419-.491L96 169.881V392c0 13.255 10.745 24 24 24h243.549c21.382 0 32.09-25.851 16.971-40.971l-16.001-16z\"]\n};\nvar faRibbon = {\n prefix: 'fas',\n iconName: 'ribbon',\n icon: [448, 512, [], \"f4d6\", \"M6.1 444.3c-9.6 10.8-7.5 27.6 4.5 35.7l68.8 27.9c9.9 6.7 23.3 5 31.3-3.8l91.8-101.9-79.2-87.9-117.2 130zm435.8 0s-292-324.6-295.4-330.1c15.4-8.4 40.2-17.9 77.5-17.9s62.1 9.5 77.5 17.9c-3.3 5.6-56 64.6-56 64.6l79.1 87.7 34.2-38c28.7-31.9 33.3-78.6 11.4-115.5l-43.7-73.5c-4.3-7.2-9.9-13.3-16.8-18-40.7-27.6-127.4-29.7-171.4 0-6.9 4.7-12.5 10.8-16.8 18l-43.6 73.2c-1.5 2.5-37.1 62.2 11.5 116L337.5 504c8 8.9 21.4 10.5 31.3 3.8l68.8-27.9c11.9-8 14-24.8 4.3-35.6z\"]\n};\nvar faRing = {\n prefix: 'fas',\n iconName: 'ring',\n icon: [512, 512, [], \"f70b\", \"M256 64C110.06 64 0 125.91 0 208v98.13C0 384.48 114.62 448 256 448s256-63.52 256-141.87V208c0-82.09-110.06-144-256-144zm0 64c106.04 0 192 35.82 192 80 0 9.26-3.97 18.12-10.91 26.39C392.15 208.21 328.23 192 256 192s-136.15 16.21-181.09 42.39C67.97 226.12 64 217.26 64 208c0-44.18 85.96-80 192-80zM120.43 264.64C155.04 249.93 201.64 240 256 240s100.96 9.93 135.57 24.64C356.84 279.07 308.93 288 256 288s-100.84-8.93-135.57-23.36z\"]\n};\nvar faRoad = {\n prefix: 'fas',\n iconName: 'road',\n icon: [576, 512, [], \"f018\", \"M573.19 402.67l-139.79-320C428.43 71.29 417.6 64 405.68 64h-97.59l2.45 23.16c.5 4.72-3.21 8.84-7.96 8.84h-29.16c-4.75 0-8.46-4.12-7.96-8.84L267.91 64h-97.59c-11.93 0-22.76 7.29-27.73 18.67L2.8 402.67C-6.45 423.86 8.31 448 30.54 448h196.84l10.31-97.68c.86-8.14 7.72-14.32 15.91-14.32h68.8c8.19 0 15.05 6.18 15.91 14.32L348.62 448h196.84c22.23 0 36.99-24.14 27.73-45.33zM260.4 135.16a8 8 0 0 1 7.96-7.16h39.29c4.09 0 7.53 3.09 7.96 7.16l4.6 43.58c.75 7.09-4.81 13.26-11.93 13.26h-40.54c-7.13 0-12.68-6.17-11.93-13.26l4.59-43.58zM315.64 304h-55.29c-9.5 0-16.91-8.23-15.91-17.68l5.07-48c.86-8.14 7.72-14.32 15.91-14.32h45.15c8.19 0 15.05 6.18 15.91 14.32l5.07 48c1 9.45-6.41 17.68-15.91 17.68z\"]\n};\nvar faRobot = {\n prefix: 'fas',\n iconName: 'robot',\n icon: [640, 512, [], \"f544\", \"M32,224H64V416H32A31.96166,31.96166,0,0,1,0,384V256A31.96166,31.96166,0,0,1,32,224Zm512-48V448a64.06328,64.06328,0,0,1-64,64H160a64.06328,64.06328,0,0,1-64-64V176a79.974,79.974,0,0,1,80-80H288V32a32,32,0,0,1,64,0V96H464A79.974,79.974,0,0,1,544,176ZM264,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,264,256Zm-8,128H192v32h64Zm96,0H288v32h64ZM456,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,456,256Zm-8,128H384v32h64ZM640,256V384a31.96166,31.96166,0,0,1-32,32H576V224h32A31.96166,31.96166,0,0,1,640,256Z\"]\n};\nvar faRocket = {\n prefix: 'fas',\n iconName: 'rocket',\n icon: [512, 512, [], \"f135\", \"M505.12019,19.09375c-1.18945-5.53125-6.65819-11-12.207-12.1875C460.716,0,435.507,0,410.40747,0,307.17523,0,245.26909,55.20312,199.05238,128H94.83772c-16.34763.01562-35.55658,11.875-42.88664,26.48438L2.51562,253.29688A28.4,28.4,0,0,0,0,264a24.00867,24.00867,0,0,0,24.00582,24H127.81618l-22.47457,22.46875c-11.36521,11.36133-12.99607,32.25781,0,45.25L156.24582,406.625c11.15623,11.1875,32.15619,13.15625,45.27726,0l22.47457-22.46875V488a24.00867,24.00867,0,0,0,24.00581,24,28.55934,28.55934,0,0,0,10.707-2.51562l98.72834-49.39063c14.62888-7.29687,26.50776-26.5,26.50776-42.85937V312.79688c72.59753-46.3125,128.03493-108.40626,128.03493-211.09376C512.07526,76.5,512.07526,51.29688,505.12019,19.09375ZM384.04033,168A40,40,0,1,1,424.05,128,40.02322,40.02322,0,0,1,384.04033,168Z\"]\n};\nvar faRoute = {\n prefix: 'fas',\n iconName: 'route',\n icon: [512, 512, [], \"f4d7\", \"M416 320h-96c-17.6 0-32-14.4-32-32s14.4-32 32-32h96s96-107 96-160-43-96-96-96-96 43-96 96c0 25.5 22.2 63.4 45.3 96H320c-52.9 0-96 43.1-96 96s43.1 96 96 96h96c17.6 0 32 14.4 32 32s-14.4 32-32 32H185.5c-16 24.8-33.8 47.7-47.3 64H416c52.9 0 96-43.1 96-96s-43.1-96-96-96zm0-256c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zM96 256c-53 0-96 43-96 96s96 160 96 160 96-107 96-160-43-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faRss = {\n prefix: 'fas',\n iconName: 'rss',\n icon: [448, 512, [], \"f09e\", \"M128.081 415.959c0 35.369-28.672 64.041-64.041 64.041S0 451.328 0 415.959s28.672-64.041 64.041-64.041 64.04 28.673 64.04 64.041zm175.66 47.25c-8.354-154.6-132.185-278.587-286.95-286.95C7.656 175.765 0 183.105 0 192.253v48.069c0 8.415 6.49 15.472 14.887 16.018 111.832 7.284 201.473 96.702 208.772 208.772.547 8.397 7.604 14.887 16.018 14.887h48.069c9.149.001 16.489-7.655 15.995-16.79zm144.249.288C439.596 229.677 251.465 40.445 16.503 32.01 7.473 31.686 0 38.981 0 48.016v48.068c0 8.625 6.835 15.645 15.453 15.999 191.179 7.839 344.627 161.316 352.465 352.465.353 8.618 7.373 15.453 15.999 15.453h48.068c9.034-.001 16.329-7.474 16.005-16.504z\"]\n};\nvar faRssSquare = {\n prefix: 'fas',\n iconName: 'rss-square',\n icon: [448, 512, [], \"f143\", \"M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM112 416c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm157.533 0h-34.335c-6.011 0-11.051-4.636-11.442-10.634-5.214-80.05-69.243-143.92-149.123-149.123-5.997-.39-10.633-5.431-10.633-11.441v-34.335c0-6.535 5.468-11.777 11.994-11.425 110.546 5.974 198.997 94.536 204.964 204.964.352 6.526-4.89 11.994-11.425 11.994zm103.027 0h-34.334c-6.161 0-11.175-4.882-11.427-11.038-5.598-136.535-115.204-246.161-251.76-251.76C68.882 152.949 64 147.935 64 141.774V107.44c0-6.454 5.338-11.664 11.787-11.432 167.83 6.025 302.21 141.191 308.205 308.205.232 6.449-4.978 11.787-11.432 11.787z\"]\n};\nvar faRubleSign = {\n prefix: 'fas',\n iconName: 'ruble-sign',\n icon: [384, 512, [], \"f158\", \"M239.36 320C324.48 320 384 260.542 384 175.071S324.48 32 239.36 32H76c-6.627 0-12 5.373-12 12v206.632H12c-6.627 0-12 5.373-12 12V308c0 6.627 5.373 12 12 12h52v32H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h52v52c0 6.627 5.373 12 12 12h58.56c6.627 0 12-5.373 12-12v-52H308c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12H146.56v-32h92.8zm-92.8-219.252h78.72c46.72 0 74.88 29.11 74.88 74.323 0 45.832-28.16 75.561-76.16 75.561h-77.44V100.748z\"]\n};\nvar faRuler = {\n prefix: 'fas',\n iconName: 'ruler',\n icon: [640, 512, [], \"f545\", \"M635.7 167.2L556.1 31.7c-8.8-15-28.3-20.1-43.5-11.5l-69 39.1L503.3 161c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L416 75l-55.2 31.3 27.9 47.4c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L333.2 122 278 153.3 337.8 255c2.2 3.7.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9l-59.7-101.7-55.2 31.3 27.9 47.4c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9l-27.9-47.5-55.2 31.3 59.7 101.7c2.2 3.7.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L84.9 262.9l-69 39.1C.7 310.7-4.6 329.8 4.2 344.8l79.6 135.6c8.8 15 28.3 20.1 43.5 11.5L624.1 210c15.2-8.6 20.4-27.8 11.6-42.8z\"]\n};\nvar faRulerCombined = {\n prefix: 'fas',\n iconName: 'ruler-combined',\n icon: [512, 512, [], \"f546\", \"M160 288h-56c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h56v-64h-56c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h56V96h-56c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8h56V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v448c0 2.77.91 5.24 1.57 7.8L160 329.38V288zm320 64h-32v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-64v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-64v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-41.37L24.2 510.43c2.56.66 5.04 1.57 7.8 1.57h448c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z\"]\n};\nvar faRulerHorizontal = {\n prefix: 'fas',\n iconName: 'ruler-horizontal',\n icon: [576, 512, [], \"f547\", \"M544 128h-48v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8H88c-4.42 0-8-3.58-8-8v-88H32c-17.67 0-32 14.33-32 32v192c0 17.67 14.33 32 32 32h512c17.67 0 32-14.33 32-32V160c0-17.67-14.33-32-32-32z\"]\n};\nvar faRulerVertical = {\n prefix: 'fas',\n iconName: 'ruler-vertical',\n icon: [256, 512, [], \"f548\", \"M168 416c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v448c0 17.67 14.33 32 32 32h192c17.67 0 32-14.33 32-32v-64h-88z\"]\n};\nvar faRunning = {\n prefix: 'fas',\n iconName: 'running',\n icon: [416, 512, [], \"f70c\", \"M272 96c26.51 0 48-21.49 48-48S298.51 0 272 0s-48 21.49-48 48 21.49 48 48 48zM113.69 317.47l-14.8 34.52H32c-17.67 0-32 14.33-32 32s14.33 32 32 32h77.45c19.25 0 36.58-11.44 44.11-29.09l8.79-20.52-10.67-6.3c-17.32-10.23-30.06-25.37-37.99-42.61zM384 223.99h-44.03l-26.06-53.25c-12.5-25.55-35.45-44.23-61.78-50.94l-71.08-21.14c-28.3-6.8-57.77-.55-80.84 17.14l-39.67 30.41c-14.03 10.75-16.69 30.83-5.92 44.86s30.84 16.66 44.86 5.92l39.69-30.41c7.67-5.89 17.44-8 25.27-6.14l14.7 4.37-37.46 87.39c-12.62 29.48-1.31 64.01 26.3 80.31l84.98 50.17-27.47 87.73c-5.28 16.86 4.11 34.81 20.97 40.09 3.19 1 6.41 1.48 9.58 1.48 13.61 0 26.23-8.77 30.52-22.45l31.64-101.06c5.91-20.77-2.89-43.08-21.64-54.39l-61.24-36.14 31.31-78.28 20.27 41.43c8 16.34 24.92 26.89 43.11 26.89H384c17.67 0 32-14.33 32-32s-14.33-31.99-32-31.99z\"]\n};\nvar faRupeeSign = {\n prefix: 'fas',\n iconName: 'rupee-sign',\n icon: [320, 512, [], \"f156\", \"M308 96c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v44.748c0 6.627 5.373 12 12 12h85.28c27.308 0 48.261 9.958 60.97 27.252H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h158.757c-6.217 36.086-32.961 58.632-74.757 58.632H12c-6.627 0-12 5.373-12 12v53.012c0 3.349 1.4 6.546 3.861 8.818l165.052 152.356a12.001 12.001 0 0 0 8.139 3.182h82.562c10.924 0 16.166-13.408 8.139-20.818L116.871 319.906c76.499-2.34 131.144-53.395 138.318-127.906H308c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-58.69c-3.486-11.541-8.28-22.246-14.252-32H308z\"]\n};\nvar faSadCry = {\n prefix: 'fas',\n iconName: 'sad-cry',\n icon: [496, 512, [], \"f5b3\", \"M248 8C111 8 0 119 0 256c0 90.1 48.2 168.7 120 212.1V288c0-8.8 7.2-16 16-16s16 7.2 16 16v196.7c29.5 12.4 62 19.3 96 19.3s66.5-6.9 96-19.3V288c0-8.8 7.2-16 16-16s16 7.2 16 16v180.1C447.8 424.7 496 346 496 256 496 119 385 8 248 8zm-65.5 216.5c-14.8-13.2-46.2-13.2-61 0L112 233c-3.8 3.3-9.3 4-13.7 1.6-4.4-2.4-6.9-7.4-6.1-12.4 4-25.2 34.2-42.1 59.9-42.1S208 197 212 222.2c.8 5-1.7 10-6.1 12.4-5.8 3.1-11.2.7-13.7-1.6l-9.7-8.5zM248 416c-26.5 0-48-28.7-48-64s21.5-64 48-64 48 28.7 48 64-21.5 64-48 64zm149.8-181.5c-5.8 3.1-11.2.7-13.7-1.6l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L304 233c-3.8 3.3-9.3 4-13.7 1.6-4.4-2.4-6.9-7.4-6.1-12.4 4-25.2 34.2-42.1 59.9-42.1S400 197 404 222.2c.6 4.9-1.8 9.9-6.2 12.3z\"]\n};\nvar faSadTear = {\n prefix: 'fas',\n iconName: 'sad-tear',\n icon: [496, 512, [], \"f5b4\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zM152 416c-26.5 0-48-21-48-47 0-20 28.5-60.4 41.6-77.8 3.2-4.3 9.6-4.3 12.8 0C171.5 308.6 200 349 200 369c0 26-21.5 47-48 47zm16-176c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm170.2 154.2C315.8 367.4 282.9 352 248 352c-21.2 0-21.2-32 0-32 44.4 0 86.3 19.6 114.7 53.8 13.8 16.4-11.2 36.5-24.5 20.4z\"]\n};\nvar faSatellite = {\n prefix: 'fas',\n iconName: 'satellite',\n icon: [512, 512, [], \"f7bf\", \"M502.60969,310.04206l-96.70393,96.71625a31.88151,31.88151,0,0,1-45.00765,0L280.572,326.34115l-9.89231,9.90759a190.56343,190.56343,0,0,1-5.40716,168.52287c-4.50077,8.50115-16.39342,9.59505-23.20707,2.79725L134.54715,400.05428l-17.7999,17.79929c.70324,2.60972,1.60965,5.00067,1.60965,7.79793a32.00544,32.00544,0,1,1-32.00544-32.00434c2.79735,0,5.18838.90637,7.7982,1.60959l17.7999-17.79929L4.43129,269.94287c-6.798-6.81342-5.70409-18.6119,2.79735-23.20627a190.58161,190.58161,0,0,1,168.52864-5.407l9.79854-9.79821-80.31053-80.41716a32.002,32.002,0,0,1,0-45.09987L201.96474,9.29814A31.62639,31.62639,0,0,1,224.46868,0a31.99951,31.99951,0,0,1,22.59759,9.29814l80.32615,80.30777,47.805-47.89713a33.6075,33.6075,0,0,1,47.50808,0l47.50807,47.50645a33.63308,33.63308,0,0,1,0,47.50644l-47.805,47.89713L502.71908,265.036A31.78938,31.78938,0,0,1,502.60969,310.04206ZM219.56159,197.433l73.82505-73.82252-68.918-68.9-73.80942,73.80689Zm237.74352,90.106-68.90233-68.9156-73.825,73.82252,68.918,68.9Z\"]\n};\nvar faSatelliteDish = {\n prefix: 'fas',\n iconName: 'satellite-dish',\n icon: [512, 512, [], \"f7c0\", \"M305.44954,462.59c7.39157,7.29792,6.18829,20.09661-3.00038,25.00356-77.713,41.80281-176.72559,29.9105-242.34331-35.7082C-5.49624,386.28227-17.404,287.362,24.41381,209.554c4.89125-9.095,17.68975-10.29834,25.00318-3.00043L166.22872,323.36708l27.39411-27.39452c-.68759-2.60974-1.594-5.00071-1.594-7.81361a32.00407,32.00407,0,1,1,32.00407,32.00455c-2.79723,0-5.20378-.89075-7.79786-1.594l-27.40974,27.41015ZM511.9758,303.06732a16.10336,16.10336,0,0,1-16.002,17.00242H463.86031a15.96956,15.96956,0,0,1-15.89265-15.00213C440.46671,175.5492,336.45348,70.53427,207.03078,63.53328a15.84486,15.84486,0,0,1-15.00191-15.90852V16.02652A16.09389,16.09389,0,0,1,209.031.02425C372.25491,8.61922,503.47472,139.841,511.9758,303.06732Zm-96.01221-.29692a16.21093,16.21093,0,0,1-16.11142,17.29934H367.645a16.06862,16.06862,0,0,1-15.89265-14.70522c-6.90712-77.01094-68.118-138.91037-144.92467-145.22376a15.94,15.94,0,0,1-14.79876-15.89289V112.13393a16.134,16.134,0,0,1,17.29908-16.096C319.45132,104.5391,407.55627,192.64538,415.96359,302.7704Z\"]\n};\nvar faSave = {\n prefix: 'fas',\n iconName: 'save',\n icon: [448, 512, [], \"f0c7\", \"M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM224 416c-35.346 0-64-28.654-64-64 0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64zm96-304.52V212c0 6.627-5.373 12-12 12H76c-6.627 0-12-5.373-12-12V108c0-6.627 5.373-12 12-12h228.52c3.183 0 6.235 1.264 8.485 3.515l3.48 3.48A11.996 11.996 0 0 1 320 111.48z\"]\n};\nvar faSchool = {\n prefix: 'fas',\n iconName: 'school',\n icon: [640, 512, [], \"f549\", \"M0 224v272c0 8.84 7.16 16 16 16h80V192H32c-17.67 0-32 14.33-32 32zm360-48h-24v-40c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v64c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8zm137.75-63.96l-160-106.67a32.02 32.02 0 0 0-35.5 0l-160 106.67A32.002 32.002 0 0 0 128 138.66V512h128V368c0-8.84 7.16-16 16-16h96c8.84 0 16 7.16 16 16v144h128V138.67c0-10.7-5.35-20.7-14.25-26.63zM320 256c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zm288-64h-64v320h80c8.84 0 16-7.16 16-16V224c0-17.67-14.33-32-32-32z\"]\n};\nvar faScrewdriver = {\n prefix: 'fas',\n iconName: 'screwdriver',\n icon: [512, 512, [], \"f54a\", \"M448 0L320 96v62.06l-83.03 83.03c6.79 4.25 13.27 9.06 19.07 14.87 5.8 5.8 10.62 12.28 14.87 19.07L353.94 192H416l96-128-64-64zM128 278.59L10.92 395.67c-14.55 14.55-14.55 38.15 0 52.71l52.7 52.7c14.56 14.56 38.15 14.56 52.71 0L233.41 384c29.11-29.11 29.11-76.3 0-105.41s-76.3-29.11-105.41 0z\"]\n};\nvar faScroll = {\n prefix: 'fas',\n iconName: 'scroll',\n icon: [640, 512, [], \"f70e\", \"M48 0C21.53 0 0 21.53 0 48v64c0 8.84 7.16 16 16 16h80V48C96 21.53 74.47 0 48 0zm208 412.57V352h288V96c0-52.94-43.06-96-96-96H111.59C121.74 13.41 128 29.92 128 48v368c0 38.87 34.65 69.65 74.75 63.12C234.22 474 256 444.46 256 412.57zM288 384v32c0 52.93-43.06 96-96 96h336c61.86 0 112-50.14 112-112 0-8.84-7.16-16-16-16H288z\"]\n};\nvar faSdCard = {\n prefix: 'fas',\n iconName: 'sd-card',\n icon: [384, 512, [], \"f7c2\", \"M320 0H128L0 128v320c0 35.3 28.7 64 64 64h256c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zM160 160h-48V64h48v96zm80 0h-48V64h48v96zm80 0h-48V64h48v96z\"]\n};\nvar faSearch = {\n prefix: 'fas',\n iconName: 'search',\n icon: [512, 512, [], \"f002\", \"M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z\"]\n};\nvar faSearchDollar = {\n prefix: 'fas',\n iconName: 'search-dollar',\n icon: [512, 512, [], \"f688\", \"M505.04 442.66l-99.71-99.69c-4.5-4.5-10.6-7-17-7h-16.3c27.6-35.3 44-79.69 44-127.99C416.03 93.09 322.92 0 208.02 0S0 93.09 0 207.98s93.11 207.98 208.02 207.98c48.3 0 92.71-16.4 128.01-44v16.3c0 6.4 2.5 12.5 7 17l99.71 99.69c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.59.1-33.99zm-297.02-90.7c-79.54 0-144-64.34-144-143.98 0-79.53 64.35-143.98 144-143.98 79.54 0 144 64.34 144 143.98 0 79.53-64.35 143.98-144 143.98zm27.11-152.54l-45.01-13.5c-5.16-1.55-8.77-6.78-8.77-12.73 0-7.27 5.3-13.19 11.8-13.19h28.11c4.56 0 8.96 1.29 12.82 3.72 3.24 2.03 7.36 1.91 10.13-.73l11.75-11.21c3.53-3.37 3.33-9.21-.57-12.14-9.1-6.83-20.08-10.77-31.37-11.35V112c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v16.12c-23.63.63-42.68 20.55-42.68 45.07 0 19.97 12.99 37.81 31.58 43.39l45.01 13.5c5.16 1.55 8.77 6.78 8.77 12.73 0 7.27-5.3 13.19-11.8 13.19h-28.1c-4.56 0-8.96-1.29-12.82-3.72-3.24-2.03-7.36-1.91-10.13.73l-11.75 11.21c-3.53 3.37-3.33 9.21.57 12.14 9.1 6.83 20.08 10.77 31.37 11.35V304c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-16.12c23.63-.63 42.68-20.54 42.68-45.07 0-19.97-12.99-37.81-31.59-43.39z\"]\n};\nvar faSearchLocation = {\n prefix: 'fas',\n iconName: 'search-location',\n icon: [512, 512, [], \"f689\", \"M505.04 442.66l-99.71-99.69c-4.5-4.5-10.6-7-17-7h-16.3c27.6-35.3 44-79.69 44-127.99C416.03 93.09 322.92 0 208.02 0S0 93.09 0 207.98s93.11 207.98 208.02 207.98c48.3 0 92.71-16.4 128.01-44v16.3c0 6.4 2.5 12.5 7 17l99.71 99.69c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.59.1-33.99zm-297.02-90.7c-79.54 0-144-64.34-144-143.98 0-79.53 64.35-143.98 144-143.98 79.54 0 144 64.34 144 143.98 0 79.53-64.35 143.98-144 143.98zm.02-239.96c-40.78 0-73.84 33.05-73.84 73.83 0 32.96 48.26 93.05 66.75 114.86a9.24 9.24 0 0 0 14.18 0c18.49-21.81 66.75-81.89 66.75-114.86 0-40.78-33.06-73.83-73.84-73.83zm0 96c-13.26 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"]\n};\nvar faSearchMinus = {\n prefix: 'fas',\n iconName: 'search-minus',\n icon: [512, 512, [], \"f010\", \"M304 192v32c0 6.6-5.4 12-12 12H124c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm201 284.7L476.7 505c-9.4 9.4-24.6 9.4-33.9 0L343 405.3c-4.5-4.5-7-10.6-7-17V372c-35.3 27.6-79.7 44-128 44C93.1 416 0 322.9 0 208S93.1 0 208 0s208 93.1 208 208c0 48.3-16.4 92.7-44 128h16.3c6.4 0 12.5 2.5 17 7l99.7 99.7c9.3 9.4 9.3 24.6 0 34zM344 208c0-75.2-60.8-136-136-136S72 132.8 72 208s60.8 136 136 136 136-60.8 136-136z\"]\n};\nvar faSearchPlus = {\n prefix: 'fas',\n iconName: 'search-plus',\n icon: [512, 512, [], \"f00e\", \"M304 192v32c0 6.6-5.4 12-12 12h-56v56c0 6.6-5.4 12-12 12h-32c-6.6 0-12-5.4-12-12v-56h-56c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h56v-56c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v56h56c6.6 0 12 5.4 12 12zm201 284.7L476.7 505c-9.4 9.4-24.6 9.4-33.9 0L343 405.3c-4.5-4.5-7-10.6-7-17V372c-35.3 27.6-79.7 44-128 44C93.1 416 0 322.9 0 208S93.1 0 208 0s208 93.1 208 208c0 48.3-16.4 92.7-44 128h16.3c6.4 0 12.5 2.5 17 7l99.7 99.7c9.3 9.4 9.3 24.6 0 34zM344 208c0-75.2-60.8-136-136-136S72 132.8 72 208s60.8 136 136 136 136-60.8 136-136z\"]\n};\nvar faSeedling = {\n prefix: 'fas',\n iconName: 'seedling',\n icon: [512, 512, [], \"f4d8\", \"M64 96H0c0 123.7 100.3 224 224 224v144c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320C288 196.3 187.7 96 64 96zm384-64c-84.2 0-157.4 46.5-195.7 115.2 27.7 30.2 48.2 66.9 59 107.6C424 243.1 512 147.9 512 32h-64z\"]\n};\nvar faServer = {\n prefix: 'fas',\n iconName: 'server',\n icon: [512, 512, [], \"f233\", \"M480 160H32c-17.673 0-32-14.327-32-32V64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm112 248H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm112 248H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24z\"]\n};\nvar faShapes = {\n prefix: 'fas',\n iconName: 'shapes',\n icon: [512, 512, [], \"f61f\", \"M128,256A128,128,0,1,0,256,384,128,128,0,0,0,128,256Zm379-54.86L400.07,18.29a37.26,37.26,0,0,0-64.14,0L229,201.14C214.76,225.52,232.58,256,261.09,256H474.91C503.42,256,521.24,225.52,507,201.14ZM480,288H320a32,32,0,0,0-32,32V480a32,32,0,0,0,32,32H480a32,32,0,0,0,32-32V320A32,32,0,0,0,480,288Z\"]\n};\nvar faShare = {\n prefix: 'fas',\n iconName: 'share',\n icon: [512, 512, [], \"f064\", \"M503.691 189.836L327.687 37.851C312.281 24.546 288 35.347 288 56.015v80.053C127.371 137.907 0 170.1 0 322.326c0 61.441 39.581 122.309 83.333 154.132 13.653 9.931 33.111-2.533 28.077-18.631C66.066 312.814 132.917 274.316 288 272.085V360c0 20.7 24.3 31.453 39.687 18.164l176.004-152c11.071-9.562 11.086-26.753 0-36.328z\"]\n};\nvar faShareAlt = {\n prefix: 'fas',\n iconName: 'share-alt',\n icon: [448, 512, [], \"f1e0\", \"M352 320c-22.608 0-43.387 7.819-59.79 20.895l-102.486-64.054a96.551 96.551 0 0 0 0-41.683l102.486-64.054C308.613 184.181 329.392 192 352 192c53.019 0 96-42.981 96-96S405.019 0 352 0s-96 42.981-96 96c0 7.158.79 14.13 2.276 20.841L155.79 180.895C139.387 167.819 118.608 160 96 160c-53.019 0-96 42.981-96 96s42.981 96 96 96c22.608 0 43.387-7.819 59.79-20.895l102.486 64.054A96.301 96.301 0 0 0 256 416c0 53.019 42.981 96 96 96s96-42.981 96-96-42.981-96-96-96z\"]\n};\nvar faShareAltSquare = {\n prefix: 'fas',\n iconName: 'share-alt-square',\n icon: [448, 512, [], \"f1e1\", \"M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zM304 296c-14.562 0-27.823 5.561-37.783 14.671l-67.958-40.775a56.339 56.339 0 0 0 0-27.793l67.958-40.775C276.177 210.439 289.438 216 304 216c30.928 0 56-25.072 56-56s-25.072-56-56-56-56 25.072-56 56c0 4.797.605 9.453 1.74 13.897l-67.958 40.775C171.823 205.561 158.562 200 144 200c-30.928 0-56 25.072-56 56s25.072 56 56 56c14.562 0 27.823-5.561 37.783-14.671l67.958 40.775a56.088 56.088 0 0 0-1.74 13.897c0 30.928 25.072 56 56 56s56-25.072 56-56C360 321.072 334.928 296 304 296z\"]\n};\nvar faShareSquare = {\n prefix: 'fas',\n iconName: 'share-square',\n icon: [576, 512, [], \"f14d\", \"M568.482 177.448L424.479 313.433C409.3 327.768 384 317.14 384 295.985v-71.963c-144.575.97-205.566 35.113-164.775 171.353 4.483 14.973-12.846 26.567-25.006 17.33C155.252 383.105 120 326.488 120 269.339c0-143.937 117.599-172.5 264-173.312V24.012c0-21.174 25.317-31.768 40.479-17.448l144.003 135.988c10.02 9.463 10.028 25.425 0 34.896zM384 379.128V448H64V128h50.916a11.99 11.99 0 0 0 8.648-3.693c14.953-15.568 32.237-27.89 51.014-37.676C185.708 80.83 181.584 64 169.033 64H48C21.49 64 0 85.49 0 112v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48v-88.806c0-8.288-8.197-14.066-16.011-11.302a71.83 71.83 0 0 1-34.189 3.377c-7.27-1.046-13.8 4.514-13.8 11.859z\"]\n};\nvar faShekelSign = {\n prefix: 'fas',\n iconName: 'shekel-sign',\n icon: [448, 512, [], \"f20b\", \"M248 168v168c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V168c0-75.11-60.89-136-136-136H24C10.75 32 0 42.74 0 56v408c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V112h112c30.93 0 56 25.07 56 56zM432 32h-48c-8.84 0-16 7.16-16 16v296c0 30.93-25.07 56-56 56H200V176c0-8.84-7.16-16-16-16h-48c-8.84 0-16 7.16-16 16v280c0 13.25 10.75 24 24 24h168c75.11 0 136-60.89 136-136V48c0-8.84-7.16-16-16-16z\"]\n};\nvar faShieldAlt = {\n prefix: 'fas',\n iconName: 'shield-alt',\n icon: [512, 512, [], \"f3ed\", \"M466.5 83.7l-192-80a48.15 48.15 0 0 0-36.9 0l-192 80C27.7 91.1 16 108.6 16 128c0 198.5 114.5 335.7 221.5 380.3 11.8 4.9 25.1 4.9 36.9 0C360.1 472.6 496 349.3 496 128c0-19.4-11.7-36.9-29.5-44.3zM256.1 446.3l-.1-381 175.9 73.3c-3.3 151.4-82.1 261.1-175.8 307.7z\"]\n};\nvar faShieldVirus = {\n prefix: 'fas',\n iconName: 'shield-virus',\n icon: [512, 512, [], \"e06c\", \"M224,192a16,16,0,1,0,16,16A16,16,0,0,0,224,192ZM466.5,83.68l-192-80A57.4,57.4,0,0,0,256.05,0a57.4,57.4,0,0,0-18.46,3.67l-192,80A47.93,47.93,0,0,0,16,128C16,326.5,130.5,463.72,237.5,508.32a48.09,48.09,0,0,0,36.91,0C360.09,472.61,496,349.3,496,128A48,48,0,0,0,466.5,83.68ZM384,256H371.88c-28.51,0-42.79,34.47-22.63,54.63l8.58,8.57a16,16,0,1,1-22.63,22.63l-8.57-8.58C306.47,313.09,272,327.37,272,355.88V368a16,16,0,0,1-32,0V355.88c0-28.51-34.47-42.79-54.63-22.63l-8.57,8.58a16,16,0,0,1-22.63-22.63l8.58-8.57c20.16-20.16,5.88-54.63-22.63-54.63H128a16,16,0,0,1,0-32h12.12c28.51,0,42.79-34.47,22.63-54.63l-8.58-8.57a16,16,0,0,1,22.63-22.63l8.57,8.58c20.16,20.16,54.63,5.88,54.63-22.63V112a16,16,0,0,1,32,0v12.12c0,28.51,34.47,42.79,54.63,22.63l8.57-8.58a16,16,0,0,1,22.63,22.63l-8.58,8.57C329.09,189.53,343.37,224,371.88,224H384a16,16,0,0,1,0,32Zm-96,0a16,16,0,1,0,16,16A16,16,0,0,0,288,256Z\"]\n};\nvar faShip = {\n prefix: 'fas',\n iconName: 'ship',\n icon: [640, 512, [], \"f21a\", \"M496.616 372.639l70.012-70.012c16.899-16.9 9.942-45.771-12.836-53.092L512 236.102V96c0-17.673-14.327-32-32-32h-64V24c0-13.255-10.745-24-24-24H248c-13.255 0-24 10.745-24 24v40h-64c-17.673 0-32 14.327-32 32v140.102l-41.792 13.433c-22.753 7.313-29.754 36.173-12.836 53.092l70.012 70.012C125.828 416.287 85.587 448 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24 61.023 0 107.499-20.61 143.258-59.396C181.677 487.432 216.021 512 256 512h128c39.979 0 74.323-24.568 88.742-59.396C508.495 491.384 554.968 512 616 512c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24-60.817 0-101.542-31.001-119.384-75.361zM192 128h256v87.531l-118.208-37.995a31.995 31.995 0 0 0-19.584 0L192 215.531V128z\"]\n};\nvar faShippingFast = {\n prefix: 'fas',\n iconName: 'shipping-fast',\n icon: [640, 512, [], \"f48b\", \"M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H112C85.5 0 64 21.5 64 48v48H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h272c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H40c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h208c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h208c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H64v128c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm320 0c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z\"]\n};\nvar faShoePrints = {\n prefix: 'fas',\n iconName: 'shoe-prints',\n icon: [640, 512, [], \"f54b\", \"M192 160h32V32h-32c-35.35 0-64 28.65-64 64s28.65 64 64 64zM0 416c0 35.35 28.65 64 64 64h32V352H64c-35.35 0-64 28.65-64 64zm337.46-128c-34.91 0-76.16 13.12-104.73 32-24.79 16.38-44.52 32-104.73 32v128l57.53 15.97c26.21 7.28 53.01 13.12 80.31 15.05 32.69 2.31 65.6.67 97.58-6.2C472.9 481.3 512 429.22 512 384c0-64-84.18-96-174.54-96zM491.42 7.19C459.44.32 426.53-1.33 393.84.99c-27.3 1.93-54.1 7.77-80.31 15.04L256 32v128c60.2 0 79.94 15.62 104.73 32 28.57 18.88 69.82 32 104.73 32C555.82 224 640 192 640 128c0-45.22-39.1-97.3-148.58-120.81z\"]\n};\nvar faShoppingBag = {\n prefix: 'fas',\n iconName: 'shopping-bag',\n icon: [448, 512, [], \"f290\", \"M352 160v-32C352 57.42 294.579 0 224 0 153.42 0 96 57.42 96 128v32H0v272c0 44.183 35.817 80 80 80h288c44.183 0 80-35.817 80-80V160h-96zm-192-32c0-35.29 28.71-64 64-64s64 28.71 64 64v32H160v-32zm160 120c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24zm-192 0c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24z\"]\n};\nvar faShoppingBasket = {\n prefix: 'fas',\n iconName: 'shopping-basket',\n icon: [576, 512, [], \"f291\", \"M576 216v16c0 13.255-10.745 24-24 24h-8l-26.113 182.788C514.509 462.435 494.257 480 470.37 480H105.63c-23.887 0-44.139-17.565-47.518-41.212L32 256h-8c-13.255 0-24-10.745-24-24v-16c0-13.255 10.745-24 24-24h67.341l106.78-146.821c10.395-14.292 30.407-17.453 44.701-7.058 14.293 10.395 17.453 30.408 7.058 44.701L170.477 192h235.046L326.12 82.821c-10.395-14.292-7.234-34.306 7.059-44.701 14.291-10.395 34.306-7.235 44.701 7.058L484.659 192H552c13.255 0 24 10.745 24 24zM312 392V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24zm112 0V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24zm-224 0V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24z\"]\n};\nvar faShoppingCart = {\n prefix: 'fas',\n iconName: 'shopping-cart',\n icon: [576, 512, [], \"f07a\", \"M528.12 301.319l47.273-208C578.806 78.301 567.391 64 551.99 64H159.208l-9.166-44.81C147.758 8.021 137.93 0 126.529 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24h69.883l70.248 343.435C147.325 417.1 136 435.222 136 456c0 30.928 25.072 56 56 56s56-25.072 56-56c0-15.674-6.447-29.835-16.824-40h209.647C430.447 426.165 424 440.326 424 456c0 30.928 25.072 56 56 56s56-25.072 56-56c0-22.172-12.888-41.332-31.579-50.405l5.517-24.276c3.413-15.018-8.002-29.319-23.403-29.319H218.117l-6.545-32h293.145c11.206 0 20.92-7.754 23.403-18.681z\"]\n};\nvar faShower = {\n prefix: 'fas',\n iconName: 'shower',\n icon: [512, 512, [], \"f2cc\", \"M304,320a16,16,0,1,0,16,16A16,16,0,0,0,304,320Zm32-96a16,16,0,1,0,16,16A16,16,0,0,0,336,224Zm32,64a16,16,0,1,0-16-16A16,16,0,0,0,368,288Zm-32,32a16,16,0,1,0-16-16A16,16,0,0,0,336,320Zm-32-64a16,16,0,1,0,16,16A16,16,0,0,0,304,256Zm128-32a16,16,0,1,0-16-16A16,16,0,0,0,432,224Zm-48,16a16,16,0,1,0,16-16A16,16,0,0,0,384,240Zm-16-48a16,16,0,1,0,16,16A16,16,0,0,0,368,192Zm96,32a16,16,0,1,0,16,16A16,16,0,0,0,464,224Zm32-32a16,16,0,1,0,16,16A16,16,0,0,0,496,192Zm-64,64a16,16,0,1,0,16,16A16,16,0,0,0,432,256Zm-32,32a16,16,0,1,0,16,16A16,16,0,0,0,400,288Zm-64,64a16,16,0,1,0,16,16A16,16,0,0,0,336,352Zm-32,32a16,16,0,1,0,16,16A16,16,0,0,0,304,384Zm64-64a16,16,0,1,0,16,16A16,16,0,0,0,368,320Zm21.65-218.35-11.3-11.31a16,16,0,0,0-22.63,0L350.05,96A111.19,111.19,0,0,0,272,64c-19.24,0-37.08,5.3-52.9,13.85l-10-10A121.72,121.72,0,0,0,123.44,32C55.49,31.5,0,92.91,0,160.85V464a16,16,0,0,0,16,16H48a16,16,0,0,0,16-16V158.4c0-30.15,21-58.2,51-61.93a58.38,58.38,0,0,1,48.93,16.67l10,10C165.3,138.92,160,156.76,160,176a111.23,111.23,0,0,0,32,78.05l-5.66,5.67a16,16,0,0,0,0,22.62l11.3,11.31a16,16,0,0,0,22.63,0L389.65,124.28A16,16,0,0,0,389.65,101.65Z\"]\n};\nvar faShuttleVan = {\n prefix: 'fas',\n iconName: 'shuttle-van',\n icon: [640, 512, [], \"f5b6\", \"M628.88 210.65L494.39 49.27A48.01 48.01 0 0 0 457.52 32H32C14.33 32 0 46.33 0 64v288c0 17.67 14.33 32 32 32h32c0 53.02 42.98 96 96 96s96-42.98 96-96h128c0 53.02 42.98 96 96 96s96-42.98 96-96h32c17.67 0 32-14.33 32-32V241.38c0-11.23-3.94-22.1-11.12-30.73zM64 192V96h96v96H64zm96 240c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm160-240h-96V96h96v96zm160 240c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm-96-240V96h66.02l80 96H384z\"]\n};\nvar faSign = {\n prefix: 'fas',\n iconName: 'sign',\n icon: [512, 512, [], \"f4d9\", \"M496 64H128V16c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16v48H16C7.2 64 0 71.2 0 80v32c0 8.8 7.2 16 16 16h48v368c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V128h368c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16zM160 384h320V160H160v224z\"]\n};\nvar faSignInAlt = {\n prefix: 'fas',\n iconName: 'sign-in-alt',\n icon: [512, 512, [], \"f2f6\", \"M416 448h-84c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h84c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32h-84c-6.6 0-12-5.4-12-12V76c0-6.6 5.4-12 12-12h84c53 0 96 43 96 96v192c0 53-43 96-96 96zm-47-201L201 79c-15-15-41-4.5-41 17v96H24c-13.3 0-24 10.7-24 24v96c0 13.3 10.7 24 24 24h136v96c0 21.5 26 32 41 17l168-168c9.3-9.4 9.3-24.6 0-34z\"]\n};\nvar faSignLanguage = {\n prefix: 'fas',\n iconName: 'sign-language',\n icon: [448, 512, [], \"f2a7\", \"M91.434 483.987c-.307-16.018 13.109-29.129 29.13-29.129h62.293v-5.714H56.993c-16.021 0-29.437-13.111-29.13-29.129C28.16 404.491 40.835 392 56.428 392h126.429v-5.714H29.136c-16.021 0-29.437-13.111-29.13-29.129.297-15.522 12.973-28.013 28.566-28.013h154.286v-5.714H57.707c-16.021 0-29.437-13.111-29.13-29.129.297-15.522 12.973-28.013 28.566-28.013h168.566l-31.085-22.606c-12.762-9.281-15.583-27.149-6.302-39.912 9.281-12.761 27.15-15.582 39.912-6.302l123.361 89.715a34.287 34.287 0 0 1 14.12 27.728v141.136c0 15.91-10.946 29.73-26.433 33.374l-80.471 18.934a137.16 137.16 0 0 1-31.411 3.646H120c-15.593-.001-28.269-12.492-28.566-28.014zm73.249-225.701h36.423l-11.187-8.136c-18.579-13.511-20.313-40.887-3.17-56.536l-13.004-16.7c-9.843-12.641-28.43-15.171-40.88-5.088-12.065 9.771-14.133 27.447-4.553 39.75l36.371 46.71zm283.298-2.103l-5.003-152.452c-.518-15.771-13.722-28.136-29.493-27.619-15.773.518-28.137 13.722-27.619 29.493l1.262 38.415L283.565 11.019c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l76.889 98.745-4.509 3.511-94.79-121.734c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l94.443 121.288-4.509 3.511-77.675-99.754c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l52.053 66.849c12.497-8.257 29.055-8.285 41.69.904l123.36 89.714c10.904 7.93 17.415 20.715 17.415 34.198v16.999l61.064-47.549a34.285 34.285 0 0 0 13.202-28.177z\"]\n};\nvar faSignOutAlt = {\n prefix: 'fas',\n iconName: 'sign-out-alt',\n icon: [512, 512, [], \"f2f5\", \"M497 273L329 441c-15 15-41 4.5-41-17v-96H152c-13.3 0-24-10.7-24-24v-96c0-13.3 10.7-24 24-24h136V88c0-21.4 25.9-32 41-17l168 168c9.3 9.4 9.3 24.6 0 34zM192 436v-40c0-6.6-5.4-12-12-12H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h84c6.6 0 12-5.4 12-12V76c0-6.6-5.4-12-12-12H96c-53 0-96 43-96 96v192c0 53 43 96 96 96h84c6.6 0 12-5.4 12-12z\"]\n};\nvar faSignal = {\n prefix: 'fas',\n iconName: 'signal',\n icon: [640, 512, [], \"f012\", \"M216 288h-48c-8.84 0-16 7.16-16 16v192c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V304c0-8.84-7.16-16-16-16zM88 384H40c-8.84 0-16 7.16-16 16v96c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16v-96c0-8.84-7.16-16-16-16zm256-192h-48c-8.84 0-16 7.16-16 16v288c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V208c0-8.84-7.16-16-16-16zm128-96h-48c-8.84 0-16 7.16-16 16v384c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V112c0-8.84-7.16-16-16-16zM600 0h-48c-8.84 0-16 7.16-16 16v480c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16z\"]\n};\nvar faSignature = {\n prefix: 'fas',\n iconName: 'signature',\n icon: [640, 512, [], \"f5b7\", \"M623.2 192c-51.8 3.5-125.7 54.7-163.1 71.5-29.1 13.1-54.2 24.4-76.1 24.4-22.6 0-26-16.2-21.3-51.9 1.1-8 11.7-79.2-42.7-76.1-25.1 1.5-64.3 24.8-169.5 126L192 182.2c30.4-75.9-53.2-151.5-129.7-102.8L7.4 116.3C0 121-2.2 130.9 2.5 138.4l17.2 27c4.7 7.5 14.6 9.7 22.1 4.9l58-38.9c18.4-11.7 40.7 7.2 32.7 27.1L34.3 404.1C27.5 421 37 448 64 448c8.3 0 16.5-3.2 22.6-9.4 42.2-42.2 154.7-150.7 211.2-195.8-2.2 28.5-2.1 58.9 20.6 83.8 15.3 16.8 37.3 25.3 65.5 25.3 35.6 0 68-14.6 102.3-30 33-14.8 99-62.6 138.4-65.8 8.5-.7 15.2-7.3 15.2-15.8v-32.1c.2-9.1-7.5-16.8-16.6-16.2z\"]\n};\nvar faSimCard = {\n prefix: 'fas',\n iconName: 'sim-card',\n icon: [384, 512, [], \"f7c4\", \"M0 64v384c0 35.3 28.7 64 64 64h256c35.3 0 64-28.7 64-64V128L256 0H64C28.7 0 0 28.7 0 64zm224 192h-64v-64h64v64zm96 0h-64v-64h32c17.7 0 32 14.3 32 32v32zm-64 128h64v32c0 17.7-14.3 32-32 32h-32v-64zm-96 0h64v64h-64v-64zm-96 0h64v64H96c-17.7 0-32-14.3-32-32v-32zm0-96h256v64H64v-64zm0-64c0-17.7 14.3-32 32-32h32v64H64v-32z\"]\n};\nvar faSink = {\n prefix: 'fas',\n iconName: 'sink',\n icon: [512, 512, [], \"e06d\", \"M32,416a96,96,0,0,0,96,96H384a96,96,0,0,0,96-96V384H32ZM496,288H400V256h64a16,16,0,0,0,16-16V224a16,16,0,0,0-16-16H384a32,32,0,0,0-32,32v48H288V96a32,32,0,0,1,64,0v16a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V96A96.16,96.16,0,0,0,300.87,1.86C255.29,10.71,224,53.36,224,99.79V288H160V240a32,32,0,0,0-32-32H48a16,16,0,0,0-16,16v16a16,16,0,0,0,16,16h64v32H16A16,16,0,0,0,0,304v32a16,16,0,0,0,16,16H496a16,16,0,0,0,16-16V304A16,16,0,0,0,496,288Z\"]\n};\nvar faSitemap = {\n prefix: 'fas',\n iconName: 'sitemap',\n icon: [640, 512, [], \"f0e8\", \"M128 352H32c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zm-24-80h192v48h48v-48h192v48h48v-57.59c0-21.17-17.23-38.41-38.41-38.41H344v-64h40c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32H256c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h40v64H94.41C73.23 224 56 241.23 56 262.41V320h48v-48zm264 80h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zm240 0h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z\"]\n};\nvar faSkating = {\n prefix: 'fas',\n iconName: 'skating',\n icon: [448, 512, [], \"f7c5\", \"M400 0c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm0 448c-8.8 0-16 7.2-16 16s-7.2 16-16 16h-96c-8.8 0-16 7.2-16 16s7.2 16 16 16h96c26.5 0 48-21.5 48-48 0-8.8-7.2-16-16-16zm-282.2 8.6c-6.2 6.2-16.4 6.3-22.6 0l-67.9-67.9c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l67.9 67.9c9.4 9.4 21.7 14 34 14s24.6-4.7 33.9-14c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.3-22.7 0zm56.1-179.8l-93.7 93.7c-12.5 12.5-12.5 32.8 0 45.2 6.2 6.2 14.4 9.4 22.6 9.4s16.4-3.1 22.6-9.4l91.9-91.9-30.2-30.2c-5-5-9.4-10.7-13.2-16.8zM128 160h105.5l-20.1 17.2c-13.5 11.5-21.6 28.4-22.3 46.1-.7 17.8 6.1 35.2 18.7 47.7l78.2 78.2V432c0 17.7 14.3 32 32 32s32-14.3 32-32v-89.4c0-12.6-5.1-25-14.1-33.9l-61-61c.5-.4 1.2-.6 1.7-1.1l82.3-82.3c11.5-11.5 14.9-28.6 8.7-43.6-6.2-15-20.7-24.7-37-24.7H128c-17.7 0-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faSkiing = {\n prefix: 'fas',\n iconName: 'skiing',\n icon: [512, 512, [], \"f7c9\", \"M432 96c26.5 0 48-21.5 48-48S458.5 0 432 0s-48 21.5-48 48 21.5 48 48 48zm73 356.1c-9.4-9.4-24.6-9.4-33.9 0-12.1 12.1-30.5 15.4-45.1 8.7l-135.8-70.2 49.2-73.8c12.7-19 10.2-44.5-6-60.6L293 215.7l-107-53.1c-2.9 19.9 3.4 40 17.7 54.4l75.1 75.2-45.9 68.8L35 258.7c-11.7-6-26.2-1.5-32.3 10.3-6.1 11.8-1.5 26.3 10.3 32.3l391.9 202.5c11.9 5.5 24.5 8.1 37.1 8.1 23.2 0 46-9 63-26 9.3-9.3 9.3-24.5 0-33.8zM120 91.6l-11.5 22.5c14.4 7.3 31.2 4.9 42.8-4.8l47.2 23.4c-.1.1-.1.2-.2.3l114.5 56.8 32.4-13 6.4 19.1c4 12.1 12.6 22 24 27.7l58.1 29c15.9 7.9 35 1.5 42.9-14.3 7.9-15.8 1.5-35-14.3-42.9l-52.1-26.1-17.1-51.2c-8.1-24.2-40.9-56.6-84.5-39.2l-81.2 32.5-62.5-31c.3-14.5-7.2-28.6-20.9-35.6l-11.1 21.7h-.2l-34.4-7c-1.8-.4-3.7.2-5 1.7-1.9 2.2-1.7 5.5.5 7.4l26.2 23z\"]\n};\nvar faSkiingNordic = {\n prefix: 'fas',\n iconName: 'skiing-nordic',\n icon: [576, 512, [], \"f7ca\", \"M336 96c26.5 0 48-21.5 48-48S362.5 0 336 0s-48 21.5-48 48 21.5 48 48 48zm216 320c-13.2 0-24 10.7-24 24 0 13.2-10.8 24-24 24h-69.5L460 285.6c11.7-4.7 20.1-16.2 20.1-29.6 0-17.7-14.3-32-32-32h-44L378 170.8c-12.5-25.5-35.5-44.2-61.8-50.9L245 98.7c-28.3-6.8-57.8-.5-80.8 17.1l-39.7 30.4c-14 10.7-16.7 30.8-5.9 44.9.7.9 1.7 1.3 2.4 2.1L66.9 464H24c-13.2 0-24 10.7-24 24s10.8 24 24 24h480c39.7 0 72-32.3 72-72 0-13.2-10.8-24-24-24zm-260.5 48h-96.9l43.1-91-22-13c-12.1-7.2-21.9-16.9-29.5-27.8L123.7 464H99.5l52.3-261.4c4.1-1 8.1-2.9 11.7-5.6l39.7-30.4c7.7-5.9 17.4-8 25.3-6.1l14.7 4.4-37.5 87.4c-12.6 29.5-1.3 64 26.3 80.3l85 50.2-25.5 81.2zm110.6 0h-43.6l23.6-75.5c5.9-20.8-2.9-43.1-21.6-54.4L299.3 298l31.3-78.3 20.3 41.4c8 16.3 24.9 26.9 43.1 26.9h33.3l-25.2 176z\"]\n};\nvar faSkull = {\n prefix: 'fas',\n iconName: 'skull',\n icon: [512, 512, [], \"f54c\", \"M256 0C114.6 0 0 100.3 0 224c0 70.1 36.9 132.6 94.5 173.7 9.6 6.9 15.2 18.1 13.5 29.9l-9.4 66.2c-1.4 9.6 6 18.2 15.7 18.2H192v-56c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v56h64v-56c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v56h77.7c9.7 0 17.1-8.6 15.7-18.2l-9.4-66.2c-1.7-11.7 3.8-23 13.5-29.9C475.1 356.6 512 294.1 512 224 512 100.3 397.4 0 256 0zm-96 320c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm192 0c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64z\"]\n};\nvar faSkullCrossbones = {\n prefix: 'fas',\n iconName: 'skull-crossbones',\n icon: [448, 512, [], \"f714\", \"M439.15 453.06L297.17 384l141.99-69.06c7.9-3.95 11.11-13.56 7.15-21.46L432 264.85c-3.95-7.9-13.56-11.11-21.47-7.16L224 348.41 37.47 257.69c-7.9-3.95-17.51-.75-21.47 7.16L1.69 293.48c-3.95 7.9-.75 17.51 7.15 21.46L150.83 384 8.85 453.06c-7.9 3.95-11.11 13.56-7.15 21.47l14.31 28.63c3.95 7.9 13.56 11.11 21.47 7.15L224 419.59l186.53 90.72c7.9 3.95 17.51.75 21.47-7.15l14.31-28.63c3.95-7.91.74-17.52-7.16-21.47zM150 237.28l-5.48 25.87c-2.67 12.62 5.42 24.85 16.45 24.85h126.08c11.03 0 19.12-12.23 16.45-24.85l-5.5-25.87c41.78-22.41 70-62.75 70-109.28C368 57.31 303.53 0 224 0S80 57.31 80 128c0 46.53 28.22 86.87 70 109.28zM280 112c17.65 0 32 14.35 32 32s-14.35 32-32 32-32-14.35-32-32 14.35-32 32-32zm-112 0c17.65 0 32 14.35 32 32s-14.35 32-32 32-32-14.35-32-32 14.35-32 32-32z\"]\n};\nvar faSlash = {\n prefix: 'fas',\n iconName: 'slash',\n icon: [640, 512, [], \"f715\", \"M594.53 508.63L6.18 53.9c-6.97-5.42-8.23-15.47-2.81-22.45L23.01 6.18C28.43-.8 38.49-2.06 45.47 3.37L633.82 458.1c6.97 5.42 8.23 15.47 2.81 22.45l-19.64 25.27c-5.42 6.98-15.48 8.23-22.46 2.81z\"]\n};\nvar faSleigh = {\n prefix: 'fas',\n iconName: 'sleigh',\n icon: [640, 512, [], \"f7cc\", \"M612.7 350.7l-9.3-7.4c-6.9-5.5-17-4.4-22.5 2.5l-10 12.5c-5.5 6.9-4.4 17 2.5 22.5l9.3 7.4c5.9 4.7 9.2 11.7 9.2 19.2 0 13.6-11 24.6-24.6 24.6H48c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h516c39 0 73.7-29.3 75.9-68.3 1.4-23.8-8.7-46.3-27.2-61zM32 224c0 59.6 40.9 109.2 96 123.5V400h64v-48h192v48h64v-48c53 0 96-43 96-96v-96c17.7 0 32-14.3 32-32s-14.3-32-32-32h-96v64c0 35.3-28.7 64-64 64h-20.7c-65.8 0-125.9-37.2-155.3-96-29.4-58.8-89.6-96-155.3-96H32C14.3 32 0 46.3 0 64s14.3 32 32 32v128z\"]\n};\nvar faSlidersH = {\n prefix: 'fas',\n iconName: 'sliders-h',\n icon: [512, 512, [], \"f1de\", \"M496 384H160v-16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h80v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h336c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-160h-80v-16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h336v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h80c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-160H288V48c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16C7.2 64 0 71.2 0 80v32c0 8.8 7.2 16 16 16h208v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h208c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16z\"]\n};\nvar faSmile = {\n prefix: 'fas',\n iconName: 'smile',\n icon: [496, 512, [], \"f118\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm194.8 170.2C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.6-16.3 11-36.7 24.6-20.5 22.4 26.9 55.2 42.2 90.2 42.2s67.8-15.4 90.2-42.2c13.4-16.2 38.1 4.2 24.6 20.5z\"]\n};\nvar faSmileBeam = {\n prefix: 'fas',\n iconName: 'smile-beam',\n icon: [496, 512, [], \"f5b8\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM112 223.4c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.3 7.4-15.8 4-15.1-4.5zm250.8 122.8C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.5-16.3 11-36.7 24.6-20.5 22.4 26.9 55.2 42.2 90.2 42.2s67.8-15.4 90.2-42.2c13.6-16.2 38.1 4.3 24.6 20.5zm6.2-118.3l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.6 8.6-11 11.9-15.1 4.5z\"]\n};\nvar faSmileWink = {\n prefix: 'fas',\n iconName: 'smile-wink',\n icon: [496, 512, [], \"f4da\", \"M0 256c0 137 111 248 248 248s248-111 248-248S385 8 248 8 0 119 0 256zm200-48c0 17.7-14.3 32-32 32s-32-14.3-32-32 14.3-32 32-32 32 14.3 32 32zm158.5 16.5c-14.8-13.2-46.2-13.2-61 0L288 233c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S384 197 388 222.2c1.7 11.1-11.4 18.3-19.8 10.8l-9.7-8.5zM157.8 325.8C180.2 352.7 213 368 248 368s67.8-15.4 90.2-42.2c13.6-16.2 38.1 4.2 24.6 20.5C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.5-16.3 11.2-36.7 24.6-20.4z\"]\n};\nvar faSmog = {\n prefix: 'fas',\n iconName: 'smog',\n icon: [640, 512, [], \"f75f\", \"M624 368H80c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h544c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm-480 96H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h128c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm416 0H224c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h336c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zM144 288h156.1c22.5 19.7 51.6 32 83.9 32s61.3-12.3 83.9-32H528c61.9 0 112-50.1 112-112S589.9 64 528 64c-18 0-34.7 4.6-49.7 12.1C454 31 406.8 0 352 0c-41 0-77.8 17.3-104 44.8C221.8 17.3 185 0 144 0 64.5 0 0 64.5 0 144s64.5 144 144 144z\"]\n};\nvar faSmoking = {\n prefix: 'fas',\n iconName: 'smoking',\n icon: [640, 512, [], \"f48d\", \"M632 352h-48c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8zM553.3 87.1c-5.7-3.8-9.3-10-9.3-16.8V8c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v62.3c0 22 10.2 43.4 28.6 55.4 42.2 27.3 67.4 73.8 67.4 124V280c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-30.3c0-65.5-32.4-126.2-86.7-162.6zM432 352H48c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48h384c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16zm-32 112H224v-64h176v64zm87.7-322.4C463.8 125 448 99.3 448 70.3V8c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v66.4c0 43.7 24.6 81.6 60.3 106.7 22.4 15.7 35.7 41.2 35.7 68.6V280c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-30.3c0-43.3-21-83.4-56.3-108.1zM536 352h-48c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8z\"]\n};\nvar faSmokingBan = {\n prefix: 'fas',\n iconName: 'smoking-ban',\n icon: [512, 512, [], \"f54d\", \"M96 304c0 8.8 7.2 16 16 16h117.5l-96-96H112c-8.8 0-16 7.2-16 16v64zM256 0C114.6 0 0 114.6 0 256s114.6 256 256 256 256-114.6 256-256S397.4 0 256 0zm0 448c-105.9 0-192-86.1-192-192 0-41.4 13.3-79.7 35.7-111.1l267.4 267.4C335.7 434.7 297.4 448 256 448zm45.2-192H384v32h-50.8l-32-32zm111.1 111.1L365.2 320H400c8.8 0 16-7.2 16-16v-64c0-8.8-7.2-16-16-16H269.2L144.9 99.7C176.3 77.3 214.6 64 256 64c105.9 0 192 86.1 192 192 0 41.4-13.3 79.7-35.7 111.1zM320.6 128c-15.6 0-28.6-11.2-31.4-25.9-.7-3.6-4-6.1-7.7-6.1h-16.2c-5 0-8.7 4.5-8 9.4 4.6 30.9 31.2 54.6 63.3 54.6 15.6 0 28.6 11.2 31.4 25.9.7 3.6 4 6.1 7.7 6.1h16.2c5 0 8.7-4.5 8-9.4-4.6-30.9-31.2-54.6-63.3-54.6z\"]\n};\nvar faSms = {\n prefix: 'fas',\n iconName: 'sms',\n icon: [512, 512, [], \"f7cd\", \"M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7 1.3 3 4.1 4.8 7.3 4.8 66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32zM128.2 304H116c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h12.3c6 0 10.4-3.5 10.4-6.6 0-1.3-.8-2.7-2.1-3.8l-21.9-18.8c-8.5-7.2-13.3-17.5-13.3-28.1 0-21.3 19-38.6 42.4-38.6H156c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8h-12.3c-6 0-10.4 3.5-10.4 6.6 0 1.3.8 2.7 2.1 3.8l21.9 18.8c8.5 7.2 13.3 17.5 13.3 28.1.1 21.3-19 38.6-42.4 38.6zm191.8-8c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8v-68.2l-24.8 55.8c-2.9 5.9-11.4 5.9-14.3 0L224 227.8V296c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V192c0-8.8 7.2-16 16-16h16c6.1 0 11.6 3.4 14.3 8.8l17.7 35.4 17.7-35.4c2.7-5.4 8.3-8.8 14.3-8.8h16c8.8 0 16 7.2 16 16v104zm48.3 8H356c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h12.3c6 0 10.4-3.5 10.4-6.6 0-1.3-.8-2.7-2.1-3.8l-21.9-18.8c-8.5-7.2-13.3-17.5-13.3-28.1 0-21.3 19-38.6 42.4-38.6H396c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8h-12.3c-6 0-10.4 3.5-10.4 6.6 0 1.3.8 2.7 2.1 3.8l21.9 18.8c8.5 7.2 13.3 17.5 13.3 28.1.1 21.3-18.9 38.6-42.3 38.6z\"]\n};\nvar faSnowboarding = {\n prefix: 'fas',\n iconName: 'snowboarding',\n icon: [512, 512, [], \"f7ce\", \"M432 96c26.5 0 48-21.5 48-48S458.5 0 432 0s-48 21.5-48 48 21.5 48 48 48zm28.8 153.6c5.8 4.3 12.5 6.4 19.2 6.4 9.7 0 19.3-4.4 25.6-12.8 10.6-14.1 7.8-34.2-6.4-44.8l-111.4-83.5c-13.8-10.3-29.1-18.4-45.4-23.8l-63.7-21.2-26.1-52.1C244.7 2 225.5-4.4 209.7 3.5c-15.8 7.9-22.2 27.1-14.3 42.9l29.1 58.1c5.7 11.4 15.6 19.9 27.7 24l16.4 5.5-41.2 20.6c-21.8 10.9-35.4 32.8-35.4 57.2v53.1l-74.1 24.7c-16.8 5.6-25.8 23.7-20.2 40.5 1.7 5.2 4.9 9.4 8.7 12.9l-38.7-14.1c-9.7-3.5-17.4-10.6-21.8-20-5.6-12-19.9-17.2-31.9-11.6s-17.2 19.9-11.6 31.9c9.8 21 27.1 36.9 48.9 44.8l364.8 132.7c9.7 3.5 19.7 5.3 29.7 5.3 12.5 0 24.9-2.7 36.5-8.2 12-5.6 17.2-19.9 11.6-31.9S474 454.7 462 460.3c-9.3 4.4-19.8 4.8-29.5 1.3l-90.8-33.1c8.7-4.1 15.6-11.8 17.8-21.9l21.9-102c3.9-18.2-3.2-37.2-18.1-48.4l-52-39 66-30.5 83.5 62.9zm-144.4 51.7l-19.7 92c-1.5 7.1-.1 13.9 2.8 20l-169.4-61.6c2.7-.2 5.4-.4 8-1.3l85-28.4c19.6-6.5 32.8-24.8 32.8-45.5V256l60.5 45.3z\"]\n};\nvar faSnowflake = {\n prefix: 'fas',\n iconName: 'snowflake',\n icon: [448, 512, [], \"f2dc\", \"M440.3 345.2l-33.8-19.5 26-7c8.2-2.2 13.1-10.7 10.9-18.9l-4-14.9c-2.2-8.2-10.7-13.1-18.9-10.9l-70.8 19-63.9-37 63.8-36.9 70.8 19c8.2 2.2 16.7-2.7 18.9-10.9l4-14.9c2.2-8.2-2.7-16.7-10.9-18.9l-26-7 33.8-19.5c7.4-4.3 9.9-13.7 5.7-21.1L430.4 119c-4.3-7.4-13.7-9.9-21.1-5.7l-33.8 19.5 7-26c2.2-8.2-2.7-16.7-10.9-18.9l-14.9-4c-8.2-2.2-16.7 2.7-18.9 10.9l-19 70.8-62.8 36.2v-77.5l53.7-53.7c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0L256 56.4V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v40.4l-19.7-19.7c-6.2-6.2-16.4-6.2-22.6 0L138.3 48c-6.3 6.2-6.3 16.4 0 22.6l53.7 53.7v77.5l-62.8-36.2-19-70.8c-2.2-8.2-10.7-13.1-18.9-10.9l-14.9 4c-8.2 2.2-13.1 10.7-10.9 18.9l7 26-33.8-19.5c-7.4-4.3-16.8-1.7-21.1 5.7L2.1 145.7c-4.3 7.4-1.7 16.8 5.7 21.1l33.8 19.5-26 7c-8.3 2.2-13.2 10.7-11 19l4 14.9c2.2 8.2 10.7 13.1 18.9 10.9l70.8-19 63.8 36.9-63.8 36.9-70.8-19c-8.2-2.2-16.7 2.7-18.9 10.9l-4 14.9c-2.2 8.2 2.7 16.7 10.9 18.9l26 7-33.8 19.6c-7.4 4.3-9.9 13.7-5.7 21.1l15.5 26.8c4.3 7.4 13.7 9.9 21.1 5.7l33.8-19.5-7 26c-2.2 8.2 2.7 16.7 10.9 18.9l14.9 4c8.2 2.2 16.7-2.7 18.9-10.9l19-70.8 62.8-36.2v77.5l-53.7 53.7c-6.3 6.2-6.3 16.4 0 22.6l11.3 11.3c6.2 6.2 16.4 6.2 22.6 0l19.7-19.7V496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-40.4l19.7 19.7c6.2 6.2 16.4 6.2 22.6 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6L256 387.7v-77.5l62.8 36.2 19 70.8c2.2 8.2 10.7 13.1 18.9 10.9l14.9-4c8.2-2.2 13.1-10.7 10.9-18.9l-7-26 33.8 19.5c7.4 4.3 16.8 1.7 21.1-5.7l15.5-26.8c4.3-7.3 1.8-16.8-5.6-21z\"]\n};\nvar faSnowman = {\n prefix: 'fas',\n iconName: 'snowman',\n icon: [512, 512, [], \"f7d0\", \"M510.9 152.3l-5.9-14.5c-3.3-8-12.6-11.9-20.8-8.7L456 140.6v-29c0-8.6-7.2-15.6-16-15.6h-16c-8.8 0-16 7-16 15.6v46.9c0 .5.3 1 .3 1.5l-56.4 23c-5.9-10-13.3-18.9-22-26.6 13.6-16.6 22-37.4 22-60.5 0-53-43-96-96-96s-96 43-96 96c0 23.1 8.5 43.9 22 60.5-8.7 7.7-16 16.6-22 26.6l-56.4-23c.1-.5.3-1 .3-1.5v-46.9C104 103 96.8 96 88 96H72c-8.8 0-16 7-16 15.6v29l-28.1-11.5c-8.2-3.2-17.5.7-20.8 8.7l-5.9 14.5c-3.3 8 .7 17.1 8.9 20.3l135.2 55.2c-.4 4-1.2 8-1.2 12.2 0 10.1 1.7 19.6 4.2 28.9C120.9 296.4 104 334.2 104 376c0 54 28.4 100.9 70.8 127.8 9.3 5.9 20.3 8.2 31.3 8.2h99.2c13.3 0 26.3-4.1 37.2-11.7 46.5-32.3 74.4-89.4 62.9-152.6-5.5-30.2-20.5-57.6-41.6-79 2.5-9.2 4.2-18.7 4.2-28.7 0-4.2-.8-8.1-1.2-12.2L502 172.6c8.1-3.1 12.1-12.2 8.9-20.3zM224 96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32 272c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-88s-16-23.2-16-32 7.2-16 16-16 16 7.2 16 16-16 32-16 32zm32-56c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\"]\n};\nvar faSnowplow = {\n prefix: 'fas',\n iconName: 'snowplow',\n icon: [640, 512, [], \"f7d2\", \"M120 376c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm238.6 49.4c-14.5-14.5-22.6-34.1-22.6-54.6V269.2c0-20.5 8.1-40.1 22.6-54.6l36.7-36.7c6.2-6.2 6.2-16.4 0-22.6l-22.6-22.6c-6.2-6.2-16.4-6.2-22.6 0l-36.7 36.7c-26.5 26.5-41.4 62.4-41.4 99.9V288h-64v-50.9c0-8.7-1.8-17.2-5.2-25.2L364.5 29.1C356.9 11.4 339.6 0 320.3 0H176c-26.5 0-48 21.5-48 48v112h-16c-26.5 0-48 21.5-48 48v91.2C26.3 317.2 0 355.4 0 400c0 61.9 50.1 112 112 112h256c61.9 0 112-50.1 112-112 0-17.3-4.2-33.4-11.2-48H512v18.7c0 37.5 14.9 73.4 41.4 99.9l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0l22.6-22.6c6.2-6.2 6.2-16.4 0-22.6l-36.7-36.7zM192 64h117.8l68.6 160H256l-64-64V64zm176 384H112c-26.5 0-48-21.5-48-48s21.5-48 48-48h256c26.5 0 48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faSoap = {\n prefix: 'fas',\n iconName: 'soap',\n icon: [512, 512, [], \"e06e\", \"M416,192a95.42,95.42,0,0,1-30.94,70.21A95.8,95.8,0,0,1,352,448H160a96,96,0,0,1,0-192h88.91A95.3,95.3,0,0,1,224,192H96A96,96,0,0,0,0,288V416a96,96,0,0,0,96,96H416a96,96,0,0,0,96-96V288A96,96,0,0,0,416,192Zm-96,64a64,64,0,1,0-64-64A64,64,0,0,0,320,256ZM208,96a48,48,0,1,0-48-48A48,48,0,0,0,208,96ZM384,64a32,32,0,1,0-32-32A32,32,0,0,0,384,64ZM160,288a64,64,0,0,0,0,128H352a64,64,0,0,0,0-128Z\"]\n};\nvar faSocks = {\n prefix: 'fas',\n iconName: 'socks',\n icon: [512, 512, [], \"f696\", \"M214.66 311.01L288 256V96H128v176l-86.65 64.61c-39.4 29.56-53.86 84.42-29.21 127.06C30.39 495.25 63.27 512 96.08 512c20.03 0 40.25-6.25 57.52-19.2l21.86-16.39c-29.85-55.38-13.54-125.84 39.2-165.4zM288 32c0-11.05 3.07-21.3 8.02-30.38C293.4.92 290.85 0 288 0H160c-17.67 0-32 14.33-32 32v32h160V32zM480 0H352c-17.67 0-32 14.33-32 32v32h192V32c0-17.67-14.33-32-32-32zM320 272l-86.13 64.61c-39.4 29.56-53.86 84.42-29.21 127.06 18.25 31.58 50.61 48.33 83.42 48.33 20.03 0 40.25-6.25 57.52-19.2l115.2-86.4A127.997 127.997 0 0 0 512 304V96H320v176z\"]\n};\nvar faSolarPanel = {\n prefix: 'fas',\n iconName: 'solar-panel',\n icon: [640, 512, [], \"f5ba\", \"M431.98 448.01l-47.97.05V416h-128v32.21l-47.98.05c-8.82.01-15.97 7.16-15.98 15.99l-.05 31.73c-.01 8.85 7.17 16.03 16.02 16.02l223.96-.26c8.82-.01 15.97-7.16 15.98-15.98l.04-31.73c.01-8.85-7.17-16.03-16.02-16.02zM585.2 26.74C582.58 11.31 568.99 0 553.06 0H86.93C71 0 57.41 11.31 54.79 26.74-3.32 369.16.04 348.08.03 352c-.03 17.32 14.29 32 32.6 32h574.74c18.23 0 32.51-14.56 32.59-31.79.02-4.08 3.35 16.95-54.76-325.47zM259.83 64h120.33l9.77 96H250.06l9.77-96zm-75.17 256H71.09L90.1 208h105.97l-11.41 112zm16.29-160H98.24l16.29-96h96.19l-9.77 96zm32.82 160l11.4-112h149.65l11.4 112H233.77zm195.5-256h96.19l16.29 96H439.04l-9.77-96zm26.06 256l-11.4-112H549.9l19.01 112H455.33z\"]\n};\nvar faSort = {\n prefix: 'fas',\n iconName: 'sort',\n icon: [320, 512, [], \"f0dc\", \"M41 288h238c21.4 0 32.1 25.9 17 41L177 448c-9.4 9.4-24.6 9.4-33.9 0L24 329c-15.1-15.1-4.4-41 17-41zm255-105L177 64c-9.4-9.4-24.6-9.4-33.9 0L24 183c-15.1 15.1-4.4 41 17 41h238c21.4 0 32.1-25.9 17-41z\"]\n};\nvar faSortAlphaDown = {\n prefix: 'fas',\n iconName: 'sort-alpha-down',\n icon: [448, 512, [], \"f15d\", \"M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm240-64H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 446.37V464a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 321.63V304a16 16 0 0 0-16-16zm31.06-85.38l-59.27-160A16 16 0 0 0 372.72 32h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 224h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 224H432a16 16 0 0 0 15.06-21.38zM335.61 144L352 96l16.39 48z\"]\n};\nvar faSortAlphaDownAlt = {\n prefix: 'fas',\n iconName: 'sort-alpha-down-alt',\n icon: [448, 512, [], \"f881\", \"M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm112-128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 65.63V48a16 16 0 0 0-16-16H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 190.37V208a16 16 0 0 0 16 16zm159.06 234.62l-59.27-160A16 16 0 0 0 372.72 288h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 480h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 480H432a16 16 0 0 0 15.06-21.38zM335.61 400L352 352l16.39 48z\"]\n};\nvar faSortAlphaUp = {\n prefix: 'fas',\n iconName: 'sort-alpha-up',\n icon: [448, 512, [], \"f15e\", \"M16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160zm400 128H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 446.37V464a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 321.63V304a16 16 0 0 0-16-16zm31.06-85.38l-59.27-160A16 16 0 0 0 372.72 32h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 224h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 224H432a16 16 0 0 0 15.06-21.38zM335.61 144L352 96l16.39 48z\"]\n};\nvar faSortAlphaUpAlt = {\n prefix: 'fas',\n iconName: 'sort-alpha-up-alt',\n icon: [448, 512, [], \"f882\", \"M16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160zm272 64h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 65.63V48a16 16 0 0 0-16-16H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 190.37V208a16 16 0 0 0 16 16zm159.06 234.62l-59.27-160A16 16 0 0 0 372.72 288h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 480h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 480H432a16 16 0 0 0 15.06-21.38zM335.61 400L352 352l16.39 48z\"]\n};\nvar faSortAmountDown = {\n prefix: 'fas',\n iconName: 'sort-amount-down',\n icon: [512, 512, [], \"f160\", \"M304 416h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-128-64h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.37 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm256-192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-64 128H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM496 32H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faSortAmountDownAlt = {\n prefix: 'fas',\n iconName: 'sort-amount-down-alt',\n icon: [512, 512, [], \"f884\", \"M240 96h64a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm0 128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm256 192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-256-64h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm-64 0h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.37 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352z\"]\n};\nvar faSortAmountUp = {\n prefix: 'fas',\n iconName: 'sort-amount-up',\n icon: [512, 512, [], \"f161\", \"M304 416h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.77 160 16 160zm416 0H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-64 128H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM496 32H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faSortAmountUpAlt = {\n prefix: 'fas',\n iconName: 'sort-amount-up-alt',\n icon: [512, 512, [], \"f885\", \"M240 96h64a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm0 128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm256 192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-256-64h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zM16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.39-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160z\"]\n};\nvar faSortDown = {\n prefix: 'fas',\n iconName: 'sort-down',\n icon: [320, 512, [], \"f0dd\", \"M41 288h238c21.4 0 32.1 25.9 17 41L177 448c-9.4 9.4-24.6 9.4-33.9 0L24 329c-15.1-15.1-4.4-41 17-41z\"]\n};\nvar faSortNumericDown = {\n prefix: 'fas',\n iconName: 'sort-numeric-down',\n icon: [448, 512, [], \"f162\", \"M304 96h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-16V48a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 96zm26.15 162.91a79 79 0 0 0-55 54.17c-14.25 51.05 21.21 97.77 68.85 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.76 86.25-61.61 86.25-132V336c-.02-51.21-48.4-91.34-101.85-77.09zM352 356a20 20 0 1 1 20-20 20 20 0 0 1-20 20zm-176-4h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352z\"]\n};\nvar faSortNumericDownAlt = {\n prefix: 'fas',\n iconName: 'sort-numeric-down-alt',\n icon: [448, 512, [], \"f886\", \"M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm224 64h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 352h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM330.17 34.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.77 86.25-61.61 86.25-132V112c-.02-51.21-48.4-91.34-101.85-77.09zM352 132a20 20 0 1 1 20-20 20 20 0 0 1-20 20z\"]\n};\nvar faSortNumericUp = {\n prefix: 'fas',\n iconName: 'sort-numeric-up',\n icon: [448, 512, [], \"f163\", \"M330.17 258.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.76 86.25-61.61 86.25-132V336c-.02-51.21-48.4-91.34-101.85-77.09zM352 356a20 20 0 1 1 20-20 20 20 0 0 1-20 20zM304 96h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-16V48a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 96zM107.31 36.69a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31z\"]\n};\nvar faSortNumericUpAlt = {\n prefix: 'fas',\n iconName: 'sort-numeric-up-alt',\n icon: [448, 512, [], \"f887\", \"M107.31 36.69a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31zM400 416h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 352h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM330.17 34.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.77 86.25-61.61 86.25-132V112c-.02-51.21-48.4-91.34-101.85-77.09zM352 132a20 20 0 1 1 20-20 20 20 0 0 1-20 20z\"]\n};\nvar faSortUp = {\n prefix: 'fas',\n iconName: 'sort-up',\n icon: [320, 512, [], \"f0de\", \"M279 224H41c-21.4 0-32.1-25.9-17-41L143 64c9.4-9.4 24.6-9.4 33.9 0l119 119c15.2 15.1 4.5 41-16.9 41z\"]\n};\nvar faSpa = {\n prefix: 'fas',\n iconName: 'spa',\n icon: [576, 512, [], \"f5bb\", \"M568.25 192c-29.04.13-135.01 6.16-213.84 83-33.12 29.63-53.36 63.3-66.41 94.86-13.05-31.56-33.29-65.23-66.41-94.86-78.83-76.84-184.8-82.87-213.84-83-4.41-.02-7.79 3.4-7.75 7.82.23 27.92 7.14 126.14 88.77 199.3C172.79 480.94 256 480 288 480s115.19.95 199.23-80.88c81.64-73.17 88.54-171.38 88.77-199.3.04-4.42-3.34-7.84-7.75-7.82zM287.98 302.6c12.82-18.85 27.6-35.78 44.09-50.52 19.09-18.61 39.58-33.3 60.26-45.18-16.44-70.5-51.72-133.05-96.73-172.22-4.11-3.58-11.02-3.58-15.14 0-44.99 39.14-80.27 101.63-96.74 172.07 20.37 11.7 40.5 26.14 59.22 44.39a282.768 282.768 0 0 1 45.04 51.46z\"]\n};\nvar faSpaceShuttle = {\n prefix: 'fas',\n iconName: 'space-shuttle',\n icon: [640, 512, [], \"f197\", \"M592.604 208.244C559.735 192.836 515.777 184 472 184H186.327c-4.952-6.555-10.585-11.978-16.72-16H376C229.157 137.747 219.403 32 96.003 32H96v128H80V32c-26.51 0-48 28.654-48 64v64c-23.197 0-32 10.032-32 24v40c0 13.983 8.819 24 32 24v16c-23.197 0-32 10.032-32 24v40c0 13.983 8.819 24 32 24v64c0 35.346 21.49 64 48 64V352h16v128h.003c123.4 0 133.154-105.747 279.997-136H169.606c6.135-4.022 11.768-9.445 16.72-16H472c43.777 0 87.735-8.836 120.604-24.244C622.282 289.845 640 271.992 640 256s-17.718-33.845-47.396-47.756zM488 296a8 8 0 0 1-8-8v-64a8 8 0 0 1 8-8c31.909 0 31.942 80 0 80z\"]\n};\nvar faSpellCheck = {\n prefix: 'fas',\n iconName: 'spell-check',\n icon: [576, 512, [], \"f891\", \"M272 256h91.36c43.2 0 82-32.2 84.51-75.34a79.82 79.82 0 0 0-25.26-63.07 79.81 79.81 0 0 0 9.06-44.91C427.9 30.57 389.3 0 347 0h-75a16 16 0 0 0-16 16v224a16 16 0 0 0 16 16zm40-200h40a24 24 0 0 1 0 48h-40zm0 96h56a24 24 0 0 1 0 48h-56zM155.12 22.25A32 32 0 0 0 124.64 0H99.36a32 32 0 0 0-30.48 22.25L.59 235.73A16 16 0 0 0 16 256h24.93a16 16 0 0 0 15.42-11.73L68.29 208h87.42l11.94 36.27A16 16 0 0 0 183.07 256H208a16 16 0 0 0 15.42-20.27zM89.37 144L112 75.3l22.63 68.7zm482 132.48l-45.21-45.3a15.88 15.88 0 0 0-22.59 0l-151.5 151.5-55.41-55.5a15.88 15.88 0 0 0-22.59 0l-45.3 45.3a16 16 0 0 0 0 22.59l112 112.21a15.89 15.89 0 0 0 22.6 0l208-208.21a16 16 0 0 0-.02-22.59z\"]\n};\nvar faSpider = {\n prefix: 'fas',\n iconName: 'spider',\n icon: [576, 512, [], \"f717\", \"M151.17 167.35L177.1 176h4.67l5.22-26.12c.72-3.58 1.8-7.58 3.21-11.79l-20.29-40.58 23.8-71.39c2.79-8.38-1.73-17.44-10.12-20.24L168.42.82c-8.38-2.8-17.45 1.73-20.24 10.12l-25.89 77.68a32.04 32.04 0 0 0 1.73 24.43l27.15 54.3zm422.14 182.03l-52.75-79.12a32.002 32.002 0 0 0-26.62-14.25H416l68.99-24.36a32.03 32.03 0 0 0 16.51-12.61l53.6-80.41c4.9-7.35 2.91-17.29-4.44-22.19l-13.31-8.88c-7.35-4.9-17.29-2.91-22.19 4.44l-50.56 75.83L404.1 208H368l-10.37-51.85C355.44 145.18 340.26 96 288 96c-52.26 0-67.44 49.18-69.63 60.15L208 208h-36.1l-60.49-20.17L60.84 112c-4.9-7.35-14.83-9.34-22.19-4.44l-13.31 8.88c-7.35 4.9-9.34 14.83-4.44 22.19l53.6 80.41a32.03 32.03 0 0 0 16.51 12.61L160 256H82.06a32.02 32.02 0 0 0-26.63 14.25L2.69 349.38c-4.9 7.35-2.92 17.29 4.44 22.19l13.31 8.88c7.35 4.9 17.29 2.91 22.19-4.44l48-72h47.06l-60.83 97.33A31.988 31.988 0 0 0 72 418.3V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-73.11l74.08-118.53c-1.01 14.05-2.08 28.11-2.08 42.21C192 399.64 232.76 448 288 448s96-48.36 96-101.43c0-14.1-1.08-28.16-2.08-42.21L456 422.89V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-77.71c0-6-1.69-11.88-4.86-16.96L438.31 304h47.06l48 72c4.9 7.35 14.84 9.34 22.19 4.44l13.31-8.88c7.36-4.9 9.34-14.83 4.44-22.18zM406.09 97.51l-20.29 40.58c1.41 4.21 2.49 8.21 3.21 11.79l5.22 26.12h4.67l25.93-8.65 27.15-54.3a31.995 31.995 0 0 0 1.73-24.43l-25.89-77.68C425.03 2.56 415.96-1.98 407.58.82l-15.17 5.06c-8.38 2.8-12.91 11.86-10.12 20.24l23.8 71.39z\"]\n};\nvar faSpinner = {\n prefix: 'fas',\n iconName: 'spinner',\n icon: [512, 512, [], \"f110\", \"M304 48c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48 48 21.49 48 48zm-48 368c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm208-208c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zM96 256c0-26.51-21.49-48-48-48S0 229.49 0 256s21.49 48 48 48 48-21.49 48-48zm12.922 99.078c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.491-48-48-48zm294.156 0c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.49-48-48-48zM108.922 60.922c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.491-48-48-48z\"]\n};\nvar faSplotch = {\n prefix: 'fas',\n iconName: 'splotch',\n icon: [512, 512, [], \"f5bc\", \"M472.29 195.89l-67.06-22.95c-19.28-6.6-33.54-20.92-38.14-38.3L351.1 74.19c-11.58-43.77-76.57-57.13-109.98-22.62l-46.14 47.67c-13.26 13.71-33.54 20.93-54.2 19.31l-71.88-5.62c-52.05-4.07-86.93 44.88-59.03 82.83l38.54 52.42c11.08 15.07 12.82 33.86 4.64 50.24L24.62 355.4c-20.59 41.25 22.84 84.87 73.49 73.81l69.96-15.28c20.11-4.39 41.45 0 57.07 11.73l54.32 40.83c39.32 29.56 101.04 7.57 104.45-37.22l4.7-61.86c1.35-17.79 12.8-33.86 30.63-42.99l62-31.74c44.88-22.96 39.59-80.17-8.95-96.79z\"]\n};\nvar faSprayCan = {\n prefix: 'fas',\n iconName: 'spray-can',\n icon: [512, 512, [], \"f5bd\", \"M224 32c0-17.67-14.33-32-32-32h-64c-17.67 0-32 14.33-32 32v96h128V32zm256 96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm-256 32H96c-53.02 0-96 42.98-96 96v224c0 17.67 14.33 32 32 32h256c17.67 0 32-14.33 32-32V256c0-53.02-42.98-96-96-96zm-64 256c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zM480 96c17.67 0 32-14.33 32-32s-14.33-32-32-32-32 14.33-32 32 14.33 32 32 32zm-96 32c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm-96-96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm96 0c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm96 192c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z\"]\n};\nvar faSquare = {\n prefix: 'fas',\n iconName: 'square',\n icon: [448, 512, [], \"f0c8\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z\"]\n};\nvar faSquareFull = {\n prefix: 'fas',\n iconName: 'square-full',\n icon: [512, 512, [], \"f45c\", \"M512 512H0V0h512v512z\"]\n};\nvar faSquareRootAlt = {\n prefix: 'fas',\n iconName: 'square-root-alt',\n icon: [576, 512, [], \"f698\", \"M571.31 251.31l-22.62-22.62c-6.25-6.25-16.38-6.25-22.63 0L480 274.75l-46.06-46.06c-6.25-6.25-16.38-6.25-22.63 0l-22.62 22.62c-6.25 6.25-6.25 16.38 0 22.63L434.75 320l-46.06 46.06c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0L480 365.25l46.06 46.06c6.25 6.25 16.38 6.25 22.63 0l22.62-22.62c6.25-6.25 6.25-16.38 0-22.63L525.25 320l46.06-46.06c6.25-6.25 6.25-16.38 0-22.63zM552 0H307.65c-14.54 0-27.26 9.8-30.95 23.87l-84.79 322.8-58.41-106.1A32.008 32.008 0 0 0 105.47 224H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h43.62l88.88 163.73C168.99 503.5 186.3 512 204.94 512c17.27 0 44.44-9 54.28-41.48L357.03 96H552c13.25 0 24-10.75 24-24V24c0-13.26-10.75-24-24-24z\"]\n};\nvar faStamp = {\n prefix: 'fas',\n iconName: 'stamp',\n icon: [512, 512, [], \"f5bf\", \"M32 512h448v-64H32v64zm384-256h-66.56c-16.26 0-29.44-13.18-29.44-29.44v-9.46c0-27.37 8.88-53.41 21.46-77.72 9.11-17.61 12.9-38.39 9.05-60.42-6.77-38.78-38.47-70.7-77.26-77.45C212.62-9.04 160 37.33 160 96c0 14.16 3.12 27.54 8.69 39.58C182.02 164.43 192 194.7 192 226.49v.07c0 16.26-13.18 29.44-29.44 29.44H96c-53.02 0-96 42.98-96 96v32c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32v-32c0-53.02-42.98-96-96-96z\"]\n};\nvar faStar = {\n prefix: 'fas',\n iconName: 'star',\n icon: [576, 512, [], \"f005\", \"M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z\"]\n};\nvar faStarAndCrescent = {\n prefix: 'fas',\n iconName: 'star-and-crescent',\n icon: [512, 512, [], \"f699\", \"M340.47 466.36c-1.45 0-6.89.46-9.18.46-116.25 0-210.82-94.57-210.82-210.82S215.04 45.18 331.29 45.18c2.32 0 7.7.46 9.18.46 7.13 0 13.33-5.03 14.75-12.07 1.46-7.25-2.55-14.49-9.47-17.09C316.58 5.54 286.39 0 256 0 114.84 0 0 114.84 0 256s114.84 256 256 256c30.23 0 60.28-5.49 89.32-16.32 5.96-2.02 10.28-7.64 10.28-14.26 0-8.09-6.39-15.06-15.13-15.06zm162.99-252.5l-76.38-11.1-34.16-69.21c-1.83-3.7-5.38-5.55-8.93-5.55s-7.1 1.85-8.93 5.55l-34.16 69.21-76.38 11.1c-8.17 1.18-11.43 11.22-5.52 16.99l55.27 53.87-13.05 76.07c-1.11 6.44 4.01 11.66 9.81 11.66 1.53 0 3.11-.36 4.64-1.17L384 335.37l68.31 35.91c1.53.8 3.11 1.17 4.64 1.17 5.8 0 10.92-5.23 9.81-11.66l-13.05-76.07 55.27-53.87c5.91-5.77 2.65-15.81-5.52-16.99z\"]\n};\nvar faStarHalf = {\n prefix: 'fas',\n iconName: 'star-half',\n icon: [576, 512, [], \"f089\", \"M288 0c-11.4 0-22.8 5.9-28.7 17.8L194 150.2 47.9 171.4c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.1 23 46 46.4 33.7L288 439.6V0z\"]\n};\nvar faStarHalfAlt = {\n prefix: 'fas',\n iconName: 'star-half-alt',\n icon: [536, 512, [], \"f5c0\", \"M508.55 171.51L362.18 150.2 296.77 17.81C290.89 5.98 279.42 0 267.95 0c-11.4 0-22.79 5.9-28.69 17.81l-65.43 132.38-146.38 21.29c-26.25 3.8-36.77 36.09-17.74 54.59l105.89 103-25.06 145.48C86.98 495.33 103.57 512 122.15 512c4.93 0 10-1.17 14.87-3.75l130.95-68.68 130.94 68.7c4.86 2.55 9.92 3.71 14.83 3.71 18.6 0 35.22-16.61 31.66-37.4l-25.03-145.49 105.91-102.98c19.04-18.5 8.52-50.8-17.73-54.6zm-121.74 123.2l-18.12 17.62 4.28 24.88 19.52 113.45-102.13-53.59-22.38-11.74.03-317.19 51.03 103.29 11.18 22.63 25.01 3.64 114.23 16.63-82.65 80.38z\"]\n};\nvar faStarOfDavid = {\n prefix: 'fas',\n iconName: 'star-of-david',\n icon: [464, 512, [], \"f69a\", \"M405.68 256l53.21-89.39C473.3 142.4 455.48 112 426.88 112H319.96l-55.95-93.98C256.86 6.01 244.43 0 232 0s-24.86 6.01-32.01 18.02L144.04 112H37.11c-28.6 0-46.42 30.4-32.01 54.61L58.32 256 5.1 345.39C-9.31 369.6 8.51 400 37.11 400h106.93l55.95 93.98C207.14 505.99 219.57 512 232 512s24.86-6.01 32.01-18.02L319.96 400h106.93c28.6 0 46.42-30.4 32.01-54.61L405.68 256zm-12.78-88l-19.8 33.26L353.3 168h39.6zm-52.39 88l-52.39 88H175.88l-52.39-88 52.38-88h112.25l52.39 88zM232 73.72L254.79 112h-45.57L232 73.72zM71.1 168h39.6l-19.8 33.26L71.1 168zm0 176l19.8-33.26L110.7 344H71.1zM232 438.28L209.21 400h45.57L232 438.28zM353.29 344l19.8-33.26L392.9 344h-39.61z\"]\n};\nvar faStarOfLife = {\n prefix: 'fas',\n iconName: 'star-of-life',\n icon: [480, 512, [], \"f621\", \"M471.99 334.43L336.06 256l135.93-78.43c7.66-4.42 10.28-14.2 5.86-21.86l-32.02-55.43c-4.42-7.65-14.21-10.28-21.87-5.86l-135.93 78.43V16c0-8.84-7.17-16-16.01-16h-64.04c-8.84 0-16.01 7.16-16.01 16v156.86L56.04 94.43c-7.66-4.42-17.45-1.79-21.87 5.86L2.15 155.71c-4.42 7.65-1.8 17.44 5.86 21.86L143.94 256 8.01 334.43c-7.66 4.42-10.28 14.21-5.86 21.86l32.02 55.43c4.42 7.65 14.21 10.27 21.87 5.86l135.93-78.43V496c0 8.84 7.17 16 16.01 16h64.04c8.84 0 16.01-7.16 16.01-16V339.14l135.93 78.43c7.66 4.42 17.45 1.8 21.87-5.86l32.02-55.43c4.42-7.65 1.8-17.43-5.86-21.85z\"]\n};\nvar faStepBackward = {\n prefix: 'fas',\n iconName: 'step-backward',\n icon: [448, 512, [], \"f048\", \"M64 468V44c0-6.6 5.4-12 12-12h48c6.6 0 12 5.4 12 12v176.4l195.5-181C352.1 22.3 384 36.6 384 64v384c0 27.4-31.9 41.7-52.5 24.6L136 292.7V468c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12z\"]\n};\nvar faStepForward = {\n prefix: 'fas',\n iconName: 'step-forward',\n icon: [448, 512, [], \"f051\", \"M384 44v424c0 6.6-5.4 12-12 12h-48c-6.6 0-12-5.4-12-12V291.6l-195.5 181C95.9 489.7 64 475.4 64 448V64c0-27.4 31.9-41.7 52.5-24.6L312 219.3V44c0-6.6 5.4-12 12-12h48c6.6 0 12 5.4 12 12z\"]\n};\nvar faStethoscope = {\n prefix: 'fas',\n iconName: 'stethoscope',\n icon: [512, 512, [], \"f0f1\", \"M447.1 112c-34.2.5-62.3 28.4-63 62.6-.5 24.3 12.5 45.6 32 56.8V344c0 57.3-50.2 104-112 104-60 0-109.2-44.1-111.9-99.2C265 333.8 320 269.2 320 192V36.6c0-11.4-8.1-21.3-19.3-23.5L237.8.5c-13-2.6-25.6 5.8-28.2 18.8L206.4 35c-2.6 13 5.8 25.6 18.8 28.2l30.7 6.1v121.4c0 52.9-42.2 96.7-95.1 97.2-53.4.5-96.9-42.7-96.9-96V69.4l30.7-6.1c13-2.6 21.4-15.2 18.8-28.2l-3.1-15.7C107.7 6.4 95.1-2 82.1.6L19.3 13C8.1 15.3 0 25.1 0 36.6V192c0 77.3 55.1 142 128.1 156.8C130.7 439.2 208.6 512 304 512c97 0 176-75.4 176-168V231.4c19.1-11.1 32-31.7 32-55.4 0-35.7-29.2-64.5-64.9-64zm.9 80c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\"]\n};\nvar faStickyNote = {\n prefix: 'fas',\n iconName: 'sticky-note',\n icon: [448, 512, [], \"f249\", \"M312 320h136V56c0-13.3-10.7-24-24-24H24C10.7 32 0 42.7 0 56v400c0 13.3 10.7 24 24 24h264V344c0-13.2 10.8-24 24-24zm129 55l-98 98c-4.5 4.5-10.6 7-17 7h-6V352h128v6.1c0 6.3-2.5 12.4-7 16.9z\"]\n};\nvar faStop = {\n prefix: 'fas',\n iconName: 'stop',\n icon: [448, 512, [], \"f04d\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z\"]\n};\nvar faStopCircle = {\n prefix: 'fas',\n iconName: 'stop-circle',\n icon: [512, 512, [], \"f28d\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm96 328c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h160c8.8 0 16 7.2 16 16v160z\"]\n};\nvar faStopwatch = {\n prefix: 'fas',\n iconName: 'stopwatch',\n icon: [448, 512, [], \"f2f2\", \"M432 304c0 114.9-93.1 208-208 208S16 418.9 16 304c0-104 76.3-190.2 176-205.5V64h-28c-6.6 0-12-5.4-12-12V12c0-6.6 5.4-12 12-12h120c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-28v34.5c37.5 5.8 71.7 21.6 99.7 44.6l27.5-27.5c4.7-4.7 12.3-4.7 17 0l28.3 28.3c4.7 4.7 4.7 12.3 0 17l-29.4 29.4-.6.6C419.7 223.3 432 262.2 432 304zm-176 36V188.5c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12V340c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12z\"]\n};\nvar faStopwatch20 = {\n prefix: 'fas',\n iconName: 'stopwatch-20',\n icon: [448, 512, [], \"e06f\", \"M398.5,190.91l.59-.61,26.59-26.58a16,16,0,0,0,0-22.63L403,118.41a16,16,0,0,0-22.63,0l-24.68,24.68A206.68,206.68,0,0,0,256,98.5V64h32a16,16,0,0,0,16-16V16A16,16,0,0,0,288,0H160a16.05,16.05,0,0,0-16,16V48a16.05,16.05,0,0,0,16,16h32V98.5A207.92,207.92,0,0,0,16.09,297.57C12.64,411.5,106.76,510.22,220.72,512,337.13,513.77,432,420,432,304A206,206,0,0,0,398.5,190.91ZM204.37,377.55a8.2,8.2,0,0,1,8.32,8.07v22.31a8.2,8.2,0,0,1-8.32,8.07H121.52a16.46,16.46,0,0,1-16.61-17.62c2.78-35.22,14.67-57.41,38.45-91.37,20.42-29.19,27.1-37.32,27.1-62.34,0-16.92-1.79-24.27-12.21-24.27-9.39,0-12.69,7.4-12.69,22.68v5.23a8.2,8.2,0,0,1-8.33,8.07h-24.9a8.2,8.2,0,0,1-8.33-8.07v-4.07c0-27.3,8.48-60.24,56.43-60.24,43,0,55.57,25.85,55.57,61,0,35.58-12.44,51.21-34.35,81.31-11.56,15-24.61,35.57-26.41,51.2ZM344,352.32c0,35.16-12.3,63.68-57.23,63.68C243.19,416,232,386.48,232,352.55V247.22c0-40.73,19.58-63.22,56.2-63.22C325,184,344,206.64,344,245.3ZM287.87,221.73c-9.41,0-13.23,7.5-13.23,20V357.68c0,13.11,3.59,20.59,13.23,20.59s13-8,13-21.27V241.06C300.89,229.79,297.88,221.73,287.87,221.73Z\"]\n};\nvar faStore = {\n prefix: 'fas',\n iconName: 'store',\n icon: [616, 512, [], \"f54e\", \"M602 118.6L537.1 15C531.3 5.7 521 0 510 0H106C95 0 84.7 5.7 78.9 15L14 118.6c-33.5 53.5-3.8 127.9 58.8 136.4 4.5.6 9.1.9 13.7.9 29.6 0 55.8-13 73.8-33.1 18 20.1 44.3 33.1 73.8 33.1 29.6 0 55.8-13 73.8-33.1 18 20.1 44.3 33.1 73.8 33.1 29.6 0 55.8-13 73.8-33.1 18.1 20.1 44.3 33.1 73.8 33.1 4.7 0 9.2-.3 13.7-.9 62.8-8.4 92.6-82.8 59-136.4zM529.5 288c-10 0-19.9-1.5-29.5-3.8V384H116v-99.8c-9.6 2.2-19.5 3.8-29.5 3.8-6 0-12.1-.4-18-1.2-5.6-.8-11.1-2.1-16.4-3.6V480c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32V283.2c-5.4 1.6-10.8 2.9-16.4 3.6-6.1.8-12.1 1.2-18.2 1.2z\"]\n};\nvar faStoreAlt = {\n prefix: 'fas',\n iconName: 'store-alt',\n icon: [640, 512, [], \"f54f\", \"M320 384H128V224H64v256c0 17.7 14.3 32 32 32h256c17.7 0 32-14.3 32-32V224h-64v160zm314.6-241.8l-85.3-128c-6-8.9-16-14.2-26.7-14.2H117.4c-10.7 0-20.7 5.3-26.6 14.2l-85.3 128c-14.2 21.3 1 49.8 26.6 49.8H608c25.5 0 40.7-28.5 26.6-49.8zM512 496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V224h-64v272z\"]\n};\nvar faStoreAltSlash = {\n prefix: 'fas',\n iconName: 'store-alt-slash',\n icon: [640, 512, [], \"e070\", \"M17.89,123.62,5.51,142.2c-14.2,21.3,1,49.8,26.59,49.8h74.26ZM576,413.42V224H512V364L384,265V224H330.92l-41.4-32H608c25.5,0,40.7-28.5,26.59-49.8l-85.29-128A32.18,32.18,0,0,0,522.6,0H117.42A31.87,31.87,0,0,0,90.81,14.2l-10.66,16L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.46A16,16,0,0,0,6.18,53.91L594.53,508.63A16,16,0,0,0,617,505.81l19.64-25.26a16,16,0,0,0-2.81-22.45ZM320,384H128V224H64V480a32,32,0,0,0,32,32H352a32,32,0,0,0,32-32V406.59l-64-49.47Z\"]\n};\nvar faStoreSlash = {\n prefix: 'fas',\n iconName: 'store-slash',\n icon: [640, 512, [], \"e071\", \"M121.51,384V284.2a119.43,119.43,0,0,1-28,3.8,123.46,123.46,0,0,1-17.1-1.2,114.88,114.88,0,0,1-15.58-3.6V480c0,17.7,13.59,32,30.4,32H505.75L348.42,384Zm-28-128.09c25.1,0,47.29-10.72,64-27.24L24,120.05c-30.52,53.39-2.45,126.53,56.49,135A95.68,95.68,0,0,0,93.48,255.91ZM602.13,458.09,547.2,413.41V283.2a93.5,93.5,0,0,1-15.57,3.6,127.31,127.31,0,0,1-17.29,1.2,114.89,114.89,0,0,1-28-3.8v79.68L348.52,251.77a88.06,88.06,0,0,0,25.41,4.14c28.11,0,53-13,70.11-33.11,17.19,20.11,42.08,33.11,70.11,33.11a94.31,94.31,0,0,0,13-.91c59.66-8.41,88-82.8,56.06-136.4L521.55,15A30.1,30.1,0,0,0,495.81,0H112A30.11,30.11,0,0,0,86.27,15L76.88,30.78,43.19,3.38A14.68,14.68,0,0,0,21.86,6.19L3.2,31.45A16.58,16.58,0,0,0,5.87,53.91L564.81,508.63a14.69,14.69,0,0,0,21.33-2.82l18.66-25.26A16.58,16.58,0,0,0,602.13,458.09Z\"]\n};\nvar faStream = {\n prefix: 'fas',\n iconName: 'stream',\n icon: [512, 512, [], \"f550\", \"M16 128h416c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16H16C7.16 32 0 39.16 0 48v64c0 8.84 7.16 16 16 16zm480 80H80c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm-64 176H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16z\"]\n};\nvar faStreetView = {\n prefix: 'fas',\n iconName: 'street-view',\n icon: [512, 512, [], \"f21d\", \"M367.9 329.76c-4.62 5.3-9.78 10.1-15.9 13.65v22.94c66.52 9.34 112 28.05 112 49.65 0 30.93-93.12 56-208 56S48 446.93 48 416c0-21.6 45.48-40.3 112-49.65v-22.94c-6.12-3.55-11.28-8.35-15.9-13.65C58.87 345.34 0 378.05 0 416c0 53.02 114.62 96 256 96s256-42.98 256-96c0-37.95-58.87-70.66-144.1-86.24zM256 128c35.35 0 64-28.65 64-64S291.35 0 256 0s-64 28.65-64 64 28.65 64 64 64zm-64 192v96c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-96c17.67 0 32-14.33 32-32v-96c0-26.51-21.49-48-48-48h-11.8c-11.07 5.03-23.26 8-36.2 8s-25.13-2.97-36.2-8H208c-26.51 0-48 21.49-48 48v96c0 17.67 14.33 32 32 32z\"]\n};\nvar faStrikethrough = {\n prefix: 'fas',\n iconName: 'strikethrough',\n icon: [512, 512, [], \"f0cc\", \"M496 224H293.9l-87.17-26.83A43.55 43.55 0 0 1 219.55 112h66.79A49.89 49.89 0 0 1 331 139.58a16 16 0 0 0 21.46 7.15l42.94-21.47a16 16 0 0 0 7.16-21.46l-.53-1A128 128 0 0 0 287.51 32h-68a123.68 123.68 0 0 0-123 135.64c2 20.89 10.1 39.83 21.78 56.36H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h480a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-180.24 96A43 43 0 0 1 336 356.45 43.59 43.59 0 0 1 292.45 400h-66.79A49.89 49.89 0 0 1 181 372.42a16 16 0 0 0-21.46-7.15l-42.94 21.47a16 16 0 0 0-7.16 21.46l.53 1A128 128 0 0 0 224.49 480h68a123.68 123.68 0 0 0 123-135.64 114.25 114.25 0 0 0-5.34-24.36z\"]\n};\nvar faStroopwafel = {\n prefix: 'fas',\n iconName: 'stroopwafel',\n icon: [512, 512, [], \"f551\", \"M188.12 210.74L142.86 256l45.25 45.25L233.37 256l-45.25-45.26zm113.13-22.62L256 142.86l-45.25 45.25L256 233.37l45.25-45.25zm-90.5 135.76L256 369.14l45.26-45.26L256 278.63l-45.25 45.25zM256 0C114.62 0 0 114.62 0 256s114.62 256 256 256 256-114.62 256-256S397.38 0 256 0zm186.68 295.6l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-28.29-28.29-45.25 45.25 33.94 33.94 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-33.94-33.94-45.26 45.26 28.29 28.29c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0L256 414.39l-28.29 28.29c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l28.29-28.29-45.25-45.26-33.94 33.94 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 33.94-33.94-45.25-45.25-28.29 28.29c-3.12 3.12-8.19 3.12-11.31 0L69.32 295.6c-3.12-3.12-3.12-8.19 0-11.31L97.61 256l-28.29-28.29c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l28.29 28.29 45.25-45.26-33.94-33.94-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 33.94 33.94 45.26-45.25-28.29-28.29c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0L256 97.61l28.29-28.29c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-28.29 28.29 45.26 45.25 33.94-33.94-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-33.94 33.94 45.25 45.26 28.29-28.29c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31L414.39 256l28.29 28.28a8.015 8.015 0 0 1 0 11.32zM278.63 256l45.26 45.25L369.14 256l-45.25-45.26L278.63 256z\"]\n};\nvar faSubscript = {\n prefix: 'fas',\n iconName: 'subscript',\n icon: [512, 512, [], \"f12c\", \"M496 448h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 400 352h16v96h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM336 64h-67a16 16 0 0 0-13.14 6.87l-79.9 115-79.9-115A16 16 0 0 0 83 64H16A16 16 0 0 0 0 80v48a16 16 0 0 0 16 16h33.48l77.81 112-77.81 112H16a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h67a16 16 0 0 0 13.14-6.87l79.9-115 79.9 115A16 16 0 0 0 269 448h67a16 16 0 0 0 16-16v-48a16 16 0 0 0-16-16h-33.48l-77.81-112 77.81-112H336a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16z\"]\n};\nvar faSubway = {\n prefix: 'fas',\n iconName: 'subway',\n icon: [448, 512, [], \"f239\", \"M448 96v256c0 51.815-61.624 96-130.022 96l62.98 49.721C386.905 502.417 383.562 512 376 512H72c-7.578 0-10.892-9.594-4.957-14.279L130.022 448C61.82 448 0 403.954 0 352V96C0 42.981 64 0 128 0h192c65 0 128 42.981 128 96zM200 232V120c0-13.255-10.745-24-24-24H72c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h104c13.255 0 24-10.745 24-24zm200 0V120c0-13.255-10.745-24-24-24H272c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h104c13.255 0 24-10.745 24-24zm-48 56c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm-256 0c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48z\"]\n};\nvar faSuitcase = {\n prefix: 'fas',\n iconName: 'suitcase',\n icon: [512, 512, [], \"f0f2\", \"M128 480h256V80c0-26.5-21.5-48-48-48H176c-26.5 0-48 21.5-48 48v400zm64-384h128v32H192V96zm320 80v256c0 26.5-21.5 48-48 48h-48V128h48c26.5 0 48 21.5 48 48zM96 480H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48h48v352z\"]\n};\nvar faSuitcaseRolling = {\n prefix: 'fas',\n iconName: 'suitcase-rolling',\n icon: [384, 512, [], \"f5c1\", \"M336 160H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h16v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16h128v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16h16c26.51 0 48-21.49 48-48V208c0-26.51-21.49-48-48-48zm-16 216c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h240c4.42 0 8 3.58 8 8v16zm0-96c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h240c4.42 0 8 3.58 8 8v16zM144 48h96v80h48V48c0-26.51-21.49-48-48-48h-96c-26.51 0-48 21.49-48 48v80h48V48z\"]\n};\nvar faSun = {\n prefix: 'fas',\n iconName: 'sun',\n icon: [512, 512, [], \"f185\", \"M256 160c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm246.4 80.5l-94.7-47.3 33.5-100.4c4.5-13.6-8.4-26.5-21.9-21.9l-100.4 33.5-47.4-94.8c-6.4-12.8-24.6-12.8-31 0l-47.3 94.7L92.7 70.8c-13.6-4.5-26.5 8.4-21.9 21.9l33.5 100.4-94.7 47.4c-12.8 6.4-12.8 24.6 0 31l94.7 47.3-33.5 100.5c-4.5 13.6 8.4 26.5 21.9 21.9l100.4-33.5 47.3 94.7c6.4 12.8 24.6 12.8 31 0l47.3-94.7 100.4 33.5c13.6 4.5 26.5-8.4 21.9-21.9l-33.5-100.4 94.7-47.3c13-6.5 13-24.7.2-31.1zm-155.9 106c-49.9 49.9-131.1 49.9-181 0-49.9-49.9-49.9-131.1 0-181 49.9-49.9 131.1-49.9 181 0 49.9 49.9 49.9 131.1 0 181z\"]\n};\nvar faSuperscript = {\n prefix: 'fas',\n iconName: 'superscript',\n icon: [512, 512, [], \"f12b\", \"M496 160h-16V16a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 400 64h16v96h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM336 64h-67a16 16 0 0 0-13.14 6.87l-79.9 115-79.9-115A16 16 0 0 0 83 64H16A16 16 0 0 0 0 80v48a16 16 0 0 0 16 16h33.48l77.81 112-77.81 112H16a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h67a16 16 0 0 0 13.14-6.87l79.9-115 79.9 115A16 16 0 0 0 269 448h67a16 16 0 0 0 16-16v-48a16 16 0 0 0-16-16h-33.48l-77.81-112 77.81-112H336a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16z\"]\n};\nvar faSurprise = {\n prefix: 'fas',\n iconName: 'surprise',\n icon: [496, 512, [], \"f5c2\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 208c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm112 208c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm80-176c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faSwatchbook = {\n prefix: 'fas',\n iconName: 'swatchbook',\n icon: [512, 512, [], \"f5c3\", \"M434.66,167.71h0L344.5,77.36a31.83,31.83,0,0,0-45-.07h0l-.07.07L224,152.88V424L434.66,212.9A32,32,0,0,0,434.66,167.71ZM480,320H373.09L186.68,506.51c-2.06,2.07-4.5,3.58-6.68,5.49H480a32,32,0,0,0,32-32V352A32,32,0,0,0,480,320ZM192,32A32,32,0,0,0,160,0H32A32,32,0,0,0,0,32V416a96,96,0,0,0,192,0ZM96,440a24,24,0,1,1,24-24A24,24,0,0,1,96,440Zm32-184H64V192h64Zm0-128H64V64h64Z\"]\n};\nvar faSwimmer = {\n prefix: 'fas',\n iconName: 'swimmer',\n icon: [640, 512, [], \"f5c4\", \"M189.61 310.58c3.54 3.26 15.27 9.42 34.39 9.42s30.86-6.16 34.39-9.42c16.02-14.77 34.5-22.58 53.46-22.58h16.3c18.96 0 37.45 7.81 53.46 22.58 3.54 3.26 15.27 9.42 34.39 9.42s30.86-6.16 34.39-9.42c14.86-13.71 31.88-21.12 49.39-22.16l-112.84-80.6 18-12.86c3.64-2.58 8.28-3.52 12.62-2.61l100.35 21.53c25.91 5.53 51.44-10.97 57-36.88 5.55-25.92-10.95-51.44-36.88-57L437.68 98.47c-30.73-6.58-63.02.12-88.56 18.38l-80.02 57.17c-10.38 7.39-19.36 16.44-26.72 26.94L173.75 299c5.47 3.23 10.82 6.93 15.86 11.58zM624 352h-16c-26.04 0-45.8-8.42-56.09-17.9-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C461.8 343.58 442.04 352 416 352s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C269.8 343.58 250.04 352 224 352s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C77.8 343.58 58.04 352 32 352H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c38.62 0 72.72-12.19 96-31.84 23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-512-96c44.18 0 80-35.82 80-80s-35.82-80-80-80-80 35.82-80 80 35.82 80 80 80z\"]\n};\nvar faSwimmingPool = {\n prefix: 'fas',\n iconName: 'swimming-pool',\n icon: [640, 512, [], \"f5c5\", \"M624 416h-16c-26.04 0-45.8-8.42-56.09-17.9-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C461.8 407.58 442.04 416 416 416s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C269.8 407.58 250.04 416 224 416s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C77.8 407.58 58.04 416 32 416H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c38.62 0 72.72-12.19 96-31.84 23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-400-32v-96h192v96c19.12 0 30.86-6.16 34.39-9.42 9.17-8.46 19.2-14.34 29.61-18.07V128c0-17.64 14.36-32 32-32s32 14.36 32 32v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16c0-52.94-43.06-96-96-96s-96 43.06-96 96v96H224v-96c0-17.64 14.36-32 32-32s32 14.36 32 32v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16c0-52.94-43.06-96-96-96s-96 43.06-96 96v228.5c10.41 3.73 20.44 9.62 29.61 18.07 3.53 3.27 15.27 9.43 34.39 9.43z\"]\n};\nvar faSynagogue = {\n prefix: 'fas',\n iconName: 'synagogue',\n icon: [640, 512, [], \"f69b\", \"M70 196.51L6.67 268.29A26.643 26.643 0 0 0 0 285.93V512h128V239.58l-38-43.07c-5.31-6.01-14.69-6.01-20 0zm563.33 71.78L570 196.51c-5.31-6.02-14.69-6.02-20 0l-38 43.07V512h128V285.93c0-6.5-2.37-12.77-6.67-17.64zM339.99 7.01c-11.69-9.35-28.29-9.35-39.98 0l-128 102.4A32.005 32.005 0 0 0 160 134.4V512h96v-92.57c0-31.88 21.78-61.43 53.25-66.55C349.34 346.35 384 377.13 384 416v96h96V134.4c0-9.72-4.42-18.92-12.01-24.99l-128-102.4zm52.07 215.55c1.98 3.15-.29 7.24-4 7.24h-38.94L324 269.79c-1.85 2.95-6.15 2.95-8 0l-25.12-39.98h-38.94c-3.72 0-5.98-4.09-4-7.24l19.2-30.56-19.2-30.56c-1.98-3.15.29-7.24 4-7.24h38.94l25.12-40c1.85-2.95 6.15-2.95 8 0l25.12 39.98h38.95c3.71 0 5.98 4.09 4 7.24L372.87 192l19.19 30.56z\"]\n};\nvar faSync = {\n prefix: 'fas',\n iconName: 'sync',\n icon: [512, 512, [], \"f021\", \"M440.65 12.57l4 82.77A247.16 247.16 0 0 0 255.83 8C134.73 8 33.91 94.92 12.29 209.82A12 12 0 0 0 24.09 224h49.05a12 12 0 0 0 11.67-9.26 175.91 175.91 0 0 1 317-56.94l-101.46-4.86a12 12 0 0 0-12.57 12v47.41a12 12 0 0 0 12 12H500a12 12 0 0 0 12-12V12a12 12 0 0 0-12-12h-47.37a12 12 0 0 0-11.98 12.57zM255.83 432a175.61 175.61 0 0 1-146-77.8l101.8 4.87a12 12 0 0 0 12.57-12v-47.4a12 12 0 0 0-12-12H12a12 12 0 0 0-12 12V500a12 12 0 0 0 12 12h47.35a12 12 0 0 0 12-12.6l-4.15-82.57A247.17 247.17 0 0 0 255.83 504c121.11 0 221.93-86.92 243.55-201.82a12 12 0 0 0-11.8-14.18h-49.05a12 12 0 0 0-11.67 9.26A175.86 175.86 0 0 1 255.83 432z\"]\n};\nvar faSyncAlt = {\n prefix: 'fas',\n iconName: 'sync-alt',\n icon: [512, 512, [], \"f2f1\", \"M370.72 133.28C339.458 104.008 298.888 87.962 255.848 88c-77.458.068-144.328 53.178-162.791 126.85-1.344 5.363-6.122 9.15-11.651 9.15H24.103c-7.498 0-13.194-6.807-11.807-14.176C33.933 94.924 134.813 8 256 8c66.448 0 126.791 26.136 171.315 68.685L463.03 40.97C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.749zM32 296h134.059c21.382 0 32.09 25.851 16.971 40.971l-41.75 41.75c31.262 29.273 71.835 45.319 114.876 45.28 77.418-.07 144.315-53.144 162.787-126.849 1.344-5.363 6.122-9.15 11.651-9.15h57.304c7.498 0 13.194 6.807 11.807 14.176C478.067 417.076 377.187 504 256 504c-66.448 0-126.791-26.136-171.315-68.685L48.97 471.03C33.851 486.149 8 475.441 8 454.059V320c0-13.255 10.745-24 24-24z\"]\n};\nvar faSyringe = {\n prefix: 'fas',\n iconName: 'syringe',\n icon: [512, 512, [], \"f48e\", \"M201.5 174.8l55.7 55.8c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-55.7-55.8-45.3 45.3 55.8 55.8c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L111 265.2l-26.4 26.4c-17.3 17.3-25.6 41.1-23 65.4l7.1 63.6L2.3 487c-3.1 3.1-3.1 8.2 0 11.3l11.3 11.3c3.1 3.1 8.2 3.1 11.3 0l66.3-66.3 63.6 7.1c23.9 2.6 47.9-5.4 65.4-23l181.9-181.9-135.7-135.7-64.9 65zm308.2-93.3L430.5 2.3c-3.1-3.1-8.2-3.1-11.3 0l-11.3 11.3c-3.1 3.1-3.1 8.2 0 11.3l28.3 28.3-45.3 45.3-56.6-56.6-17-17c-3.1-3.1-8.2-3.1-11.3 0l-33.9 33.9c-3.1 3.1-3.1 8.2 0 11.3l17 17L424.8 223l17 17c3.1 3.1 8.2 3.1 11.3 0l33.9-34c3.1-3.1 3.1-8.2 0-11.3l-73.5-73.5 45.3-45.3 28.3 28.3c3.1 3.1 8.2 3.1 11.3 0l11.3-11.3c3.1-3.2 3.1-8.2 0-11.4z\"]\n};\nvar faTable = {\n prefix: 'fas',\n iconName: 'table',\n icon: [512, 512, [], \"f0ce\", \"M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM224 416H64v-96h160v96zm0-160H64v-96h160v96zm224 160H288v-96h160v96zm0-160H288v-96h160v96z\"]\n};\nvar faTableTennis = {\n prefix: 'fas',\n iconName: 'table-tennis',\n icon: [512, 512, [], \"f45d\", \"M496.2 296.5C527.7 218.7 512 126.2 449 63.1 365.1-21 229-21 145.1 63.1l-56 56.1 211.5 211.5c46.1-62.1 131.5-77.4 195.6-34.2zm-217.9 79.7L57.9 155.9c-27.3 45.3-21.7 105 17.3 144.1l34.5 34.6L6.7 424c-8.6 7.5-9.1 20.7-1 28.8l53.4 53.5c8 8.1 21.2 7.6 28.7-1L177.1 402l35.7 35.7c19.7 19.7 44.6 30.5 70.3 33.3-7.1-17-11-35.6-11-55.1-.1-13.8 2.5-27 6.2-39.7zM416 320c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96z\"]\n};\nvar faTablet = {\n prefix: 'fas',\n iconName: 'tablet',\n icon: [448, 512, [], \"f10a\", \"M400 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM224 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faTabletAlt = {\n prefix: 'fas',\n iconName: 'tablet-alt',\n icon: [448, 512, [], \"f3fa\", \"M400 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM224 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm176-108c0 6.6-5.4 12-12 12H60c-6.6 0-12-5.4-12-12V60c0-6.6 5.4-12 12-12h328c6.6 0 12 5.4 12 12v312z\"]\n};\nvar faTablets = {\n prefix: 'fas',\n iconName: 'tablets',\n icon: [640, 512, [], \"f490\", \"M160 192C78.9 192 12.5 250.5.1 326.7c-.8 4.8 3.3 9.3 8.3 9.3h303.3c5 0 9.1-4.5 8.3-9.3C307.5 250.5 241.1 192 160 192zm151.6 176H8.4c-5 0-9.1 4.5-8.3 9.3C12.5 453.5 78.9 512 160 512s147.5-58.5 159.9-134.7c.8-4.8-3.3-9.3-8.3-9.3zM593.4 46.6c-56.5-56.5-144.2-61.4-206.9-16-4 2.9-4.3 8.9-.8 12.3L597 254.3c3.5 3.5 9.5 3.2 12.3-.8 45.5-62.7 40.6-150.4-15.9-206.9zM363 65.7c-3.5-3.5-9.5-3.2-12.3.8-45.4 62.7-40.5 150.4 15.9 206.9 56.5 56.5 144.2 61.4 206.9 15.9 4-2.9 4.3-8.9.8-12.3L363 65.7z\"]\n};\nvar faTachometerAlt = {\n prefix: 'fas',\n iconName: 'tachometer-alt',\n icon: [576, 512, [], \"f3fd\", \"M288 32C128.94 32 0 160.94 0 320c0 52.8 14.25 102.26 39.06 144.8 5.61 9.62 16.3 15.2 27.44 15.2h443c11.14 0 21.83-5.58 27.44-15.2C561.75 422.26 576 372.8 576 320c0-159.06-128.94-288-288-288zm0 64c14.71 0 26.58 10.13 30.32 23.65-1.11 2.26-2.64 4.23-3.45 6.67l-9.22 27.67c-5.13 3.49-10.97 6.01-17.64 6.01-17.67 0-32-14.33-32-32S270.33 96 288 96zM96 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm48-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm246.77-72.41l-61.33 184C343.13 347.33 352 364.54 352 384c0 11.72-3.38 22.55-8.88 32H232.88c-5.5-9.45-8.88-20.28-8.88-32 0-33.94 26.5-61.43 59.9-63.59l61.34-184.01c4.17-12.56 17.73-19.45 30.36-15.17 12.57 4.19 19.35 17.79 15.17 30.36zm14.66 57.2l15.52-46.55c3.47-1.29 7.13-2.23 11.05-2.23 17.67 0 32 14.33 32 32s-14.33 32-32 32c-11.38-.01-20.89-6.28-26.57-15.22zM480 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faTag = {\n prefix: 'fas',\n iconName: 'tag',\n icon: [512, 512, [], \"f02b\", \"M0 252.118V48C0 21.49 21.49 0 48 0h204.118a48 48 0 0 1 33.941 14.059l211.882 211.882c18.745 18.745 18.745 49.137 0 67.882L293.823 497.941c-18.745 18.745-49.137 18.745-67.882 0L14.059 286.059A48 48 0 0 1 0 252.118zM112 64c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48z\"]\n};\nvar faTags = {\n prefix: 'fas',\n iconName: 'tags',\n icon: [640, 512, [], \"f02c\", \"M497.941 225.941L286.059 14.059A48 48 0 0 0 252.118 0H48C21.49 0 0 21.49 0 48v204.118a48 48 0 0 0 14.059 33.941l211.882 211.882c18.744 18.745 49.136 18.746 67.882 0l204.118-204.118c18.745-18.745 18.745-49.137 0-67.882zM112 160c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm513.941 133.823L421.823 497.941c-18.745 18.745-49.137 18.745-67.882 0l-.36-.36L527.64 323.522c16.999-16.999 26.36-39.6 26.36-63.64s-9.362-46.641-26.36-63.64L331.397 0h48.721a48 48 0 0 1 33.941 14.059l211.882 211.882c18.745 18.745 18.745 49.137 0 67.882z\"]\n};\nvar faTape = {\n prefix: 'fas',\n iconName: 'tape',\n icon: [640, 512, [], \"f4db\", \"M224 192c-35.3 0-64 28.7-64 64s28.7 64 64 64 64-28.7 64-64-28.7-64-64-64zm400 224H380.6c41.5-40.7 67.4-97.3 67.4-160 0-123.7-100.3-224-224-224S0 132.3 0 256s100.3 224 224 224h400c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400-64c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96z\"]\n};\nvar faTasks = {\n prefix: 'fas',\n iconName: 'tasks',\n icon: [512, 512, [], \"f0ae\", \"M139.61 35.5a12 12 0 0 0-17 0L58.93 98.81l-22.7-22.12a12 12 0 0 0-17 0L3.53 92.41a12 12 0 0 0 0 17l47.59 47.4a12.78 12.78 0 0 0 17.61 0l15.59-15.62L156.52 69a12.09 12.09 0 0 0 .09-17zm0 159.19a12 12 0 0 0-17 0l-63.68 63.72-22.7-22.1a12 12 0 0 0-17 0L3.53 252a12 12 0 0 0 0 17L51 316.5a12.77 12.77 0 0 0 17.6 0l15.7-15.69 72.2-72.22a12 12 0 0 0 .09-16.9zM64 368c-26.49 0-48.59 21.5-48.59 48S37.53 464 64 464a48 48 0 0 0 0-96zm432 16H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faTaxi = {\n prefix: 'fas',\n iconName: 'taxi',\n icon: [512, 512, [], \"f1ba\", \"M462 241.64l-22-84.84c-9.6-35.2-41.6-60.8-76.8-60.8H352V64c0-17.67-14.33-32-32-32H192c-17.67 0-32 14.33-32 32v32h-11.2c-35.2 0-67.2 25.6-76.8 60.8l-22 84.84C21.41 248.04 0 273.47 0 304v48c0 23.63 12.95 44.04 32 55.12V448c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-40.88c19.05-11.09 32-31.5 32-55.12v-48c0-30.53-21.41-55.96-50-62.36zM96 352c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm20.55-112l17.2-66.36c2.23-8.16 9.59-13.64 15.06-13.64h214.4c5.47 0 12.83 5.48 14.85 12.86L395.45 240h-278.9zM416 352c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faTeeth = {\n prefix: 'fas',\n iconName: 'teeth',\n icon: [640, 512, [], \"f62e\", \"M544 0H96C42.98 0 0 42.98 0 96v320c0 53.02 42.98 96 96 96h448c53.02 0 96-42.98 96-96V96c0-53.02-42.98-96-96-96zM160 368c0 26.51-21.49 48-48 48s-48-21.49-48-48v-64c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v64zm0-128c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-64c0-26.51 21.49-48 48-48s48 21.49 48 48v64zm144 120c0 30.93-25.07 56-56 56s-56-25.07-56-56v-56c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v56zm0-120c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-88c0-30.93 25.07-56 56-56s56 25.07 56 56v88zm144 120c0 30.93-25.07 56-56 56s-56-25.07-56-56v-56c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v56zm0-120c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-88c0-30.93 25.07-56 56-56s56 25.07 56 56v88zm128 128c0 26.51-21.49 48-48 48s-48-21.49-48-48v-64c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v64zm0-128c0 8.84-7.16 16-16 16h-64c-8.84 0-16-7.16-16-16v-64c0-26.51 21.49-48 48-48s48 21.49 48 48v64z\"]\n};\nvar faTeethOpen = {\n prefix: 'fas',\n iconName: 'teeth-open',\n icon: [640, 512, [], \"f62f\", \"M544 0H96C42.98 0 0 42.98 0 96v64c0 35.35 28.66 64 64 64h512c35.34 0 64-28.65 64-64V96c0-53.02-42.98-96-96-96zM160 176c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-32c0-26.51 21.49-48 48-48s48 21.49 48 48v32zm144 0c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-56c0-30.93 25.07-56 56-56s56 25.07 56 56v56zm144 0c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-56c0-30.93 25.07-56 56-56s56 25.07 56 56v56zm128 0c0 8.84-7.16 16-16 16h-64c-8.84 0-16-7.16-16-16v-32c0-26.51 21.49-48 48-48s48 21.49 48 48v32zm0 144H64c-35.34 0-64 28.65-64 64v32c0 53.02 42.98 96 96 96h448c53.02 0 96-42.98 96-96v-32c0-35.35-28.66-64-64-64zm-416 80c0 26.51-21.49 48-48 48s-48-21.49-48-48v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32zm144-8c0 30.93-25.07 56-56 56s-56-25.07-56-56v-24c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v24zm144 0c0 30.93-25.07 56-56 56s-56-25.07-56-56v-24c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v24zm128 8c0 26.51-21.49 48-48 48s-48-21.49-48-48v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32z\"]\n};\nvar faTemperatureHigh = {\n prefix: 'fas',\n iconName: 'temperature-high',\n icon: [512, 512, [], \"f769\", \"M416 0c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-160-16C256 50.1 205.9 0 144 0S32 50.1 32 112v166.5C12.3 303.2 0 334 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-34-12.3-64.9-32-89.5V112zM144 448c-44.1 0-80-35.9-80-80 0-25.5 12.2-48.9 32-63.8V112c0-26.5 21.5-48 48-48s48 21.5 48 48v192.2c19.8 14.8 32 38.3 32 63.8 0 44.1-35.9 80-80 80zm16-125.1V112c0-8.8-7.2-16-16-16s-16 7.2-16 16v210.9c-18.6 6.6-32 24.2-32 45.1 0 26.5 21.5 48 48 48s48-21.5 48-48c0-20.9-13.4-38.5-32-45.1z\"]\n};\nvar faTemperatureLow = {\n prefix: 'fas',\n iconName: 'temperature-low',\n icon: [512, 512, [], \"f76b\", \"M416 0c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-160-16C256 50.1 205.9 0 144 0S32 50.1 32 112v166.5C12.3 303.2 0 334 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-34-12.3-64.9-32-89.5V112zM144 448c-44.1 0-80-35.9-80-80 0-25.5 12.2-48.9 32-63.8V112c0-26.5 21.5-48 48-48s48 21.5 48 48v192.2c19.8 14.8 32 38.3 32 63.8 0 44.1-35.9 80-80 80zm16-125.1V304c0-8.8-7.2-16-16-16s-16 7.2-16 16v18.9c-18.6 6.6-32 24.2-32 45.1 0 26.5 21.5 48 48 48s48-21.5 48-48c0-20.9-13.4-38.5-32-45.1z\"]\n};\nvar faTenge = {\n prefix: 'fas',\n iconName: 'tenge',\n icon: [384, 512, [], \"f7d7\", \"M372 160H12c-6.6 0-12 5.4-12 12v56c0 6.6 5.4 12 12 12h140v228c0 6.6 5.4 12 12 12h56c6.6 0 12-5.4 12-12V240h140c6.6 0 12-5.4 12-12v-56c0-6.6-5.4-12-12-12zm0-128H12C5.4 32 0 37.4 0 44v56c0 6.6 5.4 12 12 12h360c6.6 0 12-5.4 12-12V44c0-6.6-5.4-12-12-12z\"]\n};\nvar faTerminal = {\n prefix: 'fas',\n iconName: 'terminal',\n icon: [640, 512, [], \"f120\", \"M257.981 272.971L63.638 467.314c-9.373 9.373-24.569 9.373-33.941 0L7.029 444.647c-9.357-9.357-9.375-24.522-.04-33.901L161.011 256 6.99 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L257.981 239.03c9.373 9.372 9.373 24.568 0 33.941zM640 456v-32c0-13.255-10.745-24-24-24H312c-13.255 0-24 10.745-24 24v32c0 13.255 10.745 24 24 24h304c13.255 0 24-10.745 24-24z\"]\n};\nvar faTextHeight = {\n prefix: 'fas',\n iconName: 'text-height',\n icon: [576, 512, [], \"f034\", \"M304 32H16A16 16 0 0 0 0 48v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32h56v304H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h160a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-40V112h56v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm256 336h-48V144h48c14.31 0 21.33-17.31 11.31-27.31l-80-80a16 16 0 0 0-22.62 0l-80 80C379.36 126 384.36 144 400 144h48v224h-48c-14.31 0-21.32 17.31-11.31 27.31l80 80a16 16 0 0 0 22.62 0l80-80C580.64 386 575.64 368 560 368z\"]\n};\nvar faTextWidth = {\n prefix: 'fas',\n iconName: 'text-width',\n icon: [448, 512, [], \"f035\", \"M432 32H16A16 16 0 0 0 0 48v80a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-16h120v112h-24a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-24V112h120v16a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm-68.69 260.69C354 283.36 336 288.36 336 304v48H112v-48c0-14.31-17.31-21.32-27.31-11.31l-80 80a16 16 0 0 0 0 22.62l80 80C94 484.64 112 479.64 112 464v-48h224v48c0 14.31 17.31 21.33 27.31 11.31l80-80a16 16 0 0 0 0-22.62z\"]\n};\nvar faTh = {\n prefix: 'fas',\n iconName: 'th',\n icon: [512, 512, [], \"f00a\", \"M149.333 56v80c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V56c0-13.255 10.745-24 24-24h101.333c13.255 0 24 10.745 24 24zm181.334 240v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24zm32-240v80c0 13.255 10.745 24 24 24H488c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24zm-32 80V56c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24zm-205.334 56H24c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24zM0 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zm386.667-56H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zm0 160H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zM181.333 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24z\"]\n};\nvar faThLarge = {\n prefix: 'fas',\n iconName: 'th-large',\n icon: [512, 512, [], \"f009\", \"M296 32h192c13.255 0 24 10.745 24 24v160c0 13.255-10.745 24-24 24H296c-13.255 0-24-10.745-24-24V56c0-13.255 10.745-24 24-24zm-80 0H24C10.745 32 0 42.745 0 56v160c0 13.255 10.745 24 24 24h192c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24zM0 296v160c0 13.255 10.745 24 24 24h192c13.255 0 24-10.745 24-24V296c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zm296 184h192c13.255 0 24-10.745 24-24V296c0-13.255-10.745-24-24-24H296c-13.255 0-24 10.745-24 24v160c0 13.255 10.745 24 24 24z\"]\n};\nvar faThList = {\n prefix: 'fas',\n iconName: 'th-list',\n icon: [512, 512, [], \"f00b\", \"M149.333 216v80c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24v-80c0-13.255 10.745-24 24-24h101.333c13.255 0 24 10.745 24 24zM0 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zM125.333 32H24C10.745 32 0 42.745 0 56v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24zm80 448H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zm-24-424v80c0 13.255 10.745 24 24 24H488c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24zm24 264H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24z\"]\n};\nvar faTheaterMasks = {\n prefix: 'fas',\n iconName: 'theater-masks',\n icon: [640, 512, [], \"f630\", \"M206.86 245.15c-35.88 10.45-59.95 41.2-57.53 74.1 11.4-12.72 28.81-23.7 49.9-30.92l7.63-43.18zM95.81 295L64.08 115.49c-.29-1.62.28-2.62.24-2.65 57.76-32.06 123.12-49.01 189.01-49.01 1.61 0 3.23.17 4.85.19 13.95-13.47 31.73-22.83 51.59-26 18.89-3.02 38.05-4.55 57.18-5.32-9.99-13.95-24.48-24.23-41.77-27C301.27 1.89 277.24 0 253.32 0 176.66 0 101.02 19.42 33.2 57.06 9.03 70.48-3.92 98.48 1.05 126.58l31.73 179.51c14.23 80.52 136.33 142.08 204.45 142.08 3.59 0 6.75-.46 10.01-.8-13.52-17.08-28.94-40.48-39.5-67.58-47.61-12.98-106.06-51.62-111.93-84.79zm97.55-137.46c-.73-4.12-2.23-7.87-4.07-11.4-8.25 8.91-20.67 15.75-35.32 18.32-14.65 2.58-28.67.4-39.48-5.17-.52 3.94-.64 7.98.09 12.1 3.84 21.7 24.58 36.19 46.34 32.37 21.75-3.82 36.28-24.52 32.44-46.22zM606.8 120.9c-88.98-49.38-191.43-67.41-291.98-51.35-27.31 4.36-49.08 26.26-54.04 54.36l-31.73 179.51c-15.39 87.05 95.28 196.27 158.31 207.35 63.03 11.09 204.47-53.79 219.86-140.84l31.73-179.51c4.97-28.11-7.98-56.11-32.15-69.52zm-273.24 96.8c3.84-21.7 24.58-36.19 46.34-32.36 21.76 3.83 36.28 24.52 32.45 46.22-.73 4.12-2.23 7.87-4.07 11.4-8.25-8.91-20.67-15.75-35.32-18.32-14.65-2.58-28.67-.4-39.48 5.17-.53-3.95-.65-7.99.08-12.11zm70.47 198.76c-55.68-9.79-93.52-59.27-89.04-112.9 20.6 25.54 56.21 46.17 99.49 53.78 43.28 7.61 83.82.37 111.93-16.6-14.18 51.94-66.71 85.51-122.38 75.72zm130.3-151.34c-8.25-8.91-20.68-15.75-35.33-18.32-14.65-2.58-28.67-.4-39.48 5.17-.52-3.94-.64-7.98.09-12.1 3.84-21.7 24.58-36.19 46.34-32.37 21.75 3.83 36.28 24.52 32.45 46.22-.73 4.13-2.23 7.88-4.07 11.4z\"]\n};\nvar faThermometer = {\n prefix: 'fas',\n iconName: 'thermometer',\n icon: [512, 512, [], \"f491\", \"M476.8 20.4c-37.5-30.7-95.5-26.3-131.9 10.2l-45.7 46 50.5 50.5c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-50.4-50.5-45.1 45.4 50.3 50.4c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L209 167.4l-45.1 45.4L214 263c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-50.1-50.2L96 281.1V382L7 471c-9.4 9.4-9.4 24.6 0 33.9 9.4 9.4 24.6 9.4 33.9 0l89-89h99.9L484 162.6c34.9-34.9 42.2-101.5-7.2-142.2z\"]\n};\nvar faThermometerEmpty = {\n prefix: 'fas',\n iconName: 'thermometer-empty',\n icon: [256, 512, [], \"f2cb\", \"M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-35.346 28.654-64 64-64s64 28.654 64 64zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z\"]\n};\nvar faThermometerFull = {\n prefix: 'fas',\n iconName: 'thermometer-full',\n icon: [256, 512, [], \"f2c7\", \"M224 96c0-53.019-42.981-96-96-96S32 42.981 32 96v203.347C12.225 321.756.166 351.136.002 383.333c-.359 70.303 56.787 128.176 127.089 128.664.299.002.61.003.909.003 70.698 0 128-57.304 128-128 0-32.459-12.088-62.09-32-84.653V96zm-96 368l-.576-.002c-43.86-.304-79.647-36.544-79.423-80.42.173-33.98 19.266-51.652 31.999-66.08V96c0-26.467 21.533-48 48-48s48 21.533 48 48v221.498c12.63 14.312 32 32.164 32 66.502 0 44.112-35.888 80-80 80zm64-80c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V96c0-17.673 14.327-32 32-32s32 14.327 32 32v232.583c19.124 11.068 32 31.732 32 55.417z\"]\n};\nvar faThermometerHalf = {\n prefix: 'fas',\n iconName: 'thermometer-half',\n icon: [256, 512, [], \"f2c9\", \"M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V224c0-17.673 14.327-32 32-32s32 14.327 32 32v104.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z\"]\n};\nvar faThermometerQuarter = {\n prefix: 'fas',\n iconName: 'thermometer-quarter',\n icon: [256, 512, [], \"f2ca\", \"M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V288c0-17.673 14.327-32 32-32s32 14.327 32 32v40.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z\"]\n};\nvar faThermometerThreeQuarters = {\n prefix: 'fas',\n iconName: 'thermometer-three-quarters',\n icon: [256, 512, [], \"f2c8\", \"M192 384c0 35.346-28.654 64-64 64-35.346 0-64-28.654-64-64 0-23.685 12.876-44.349 32-55.417V160c0-17.673 14.327-32 32-32s32 14.327 32 32v168.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z\"]\n};\nvar faThumbsDown = {\n prefix: 'fas',\n iconName: 'thumbs-down',\n icon: [512, 512, [], \"f165\", \"M0 56v240c0 13.255 10.745 24 24 24h80c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56zm40 200c0-13.255 10.745-24 24-24s24 10.745 24 24-10.745 24-24 24-24-10.745-24-24zm272 256c-20.183 0-29.485-39.293-33.931-57.795-5.206-21.666-10.589-44.07-25.393-58.902-32.469-32.524-49.503-73.967-89.117-113.111a11.98 11.98 0 0 1-3.558-8.521V59.901c0-6.541 5.243-11.878 11.783-11.998 15.831-.29 36.694-9.079 52.651-16.178C256.189 17.598 295.709.017 343.995 0h2.844c42.777 0 93.363.413 113.774 29.737 8.392 12.057 10.446 27.034 6.148 44.632 16.312 17.053 25.063 48.863 16.382 74.757 17.544 23.432 19.143 56.132 9.308 79.469l.11.11c11.893 11.949 19.523 31.259 19.439 49.197-.156 30.352-26.157 58.098-59.553 58.098H350.723C358.03 364.34 384 388.132 384 430.548 384 504 336 512 312 512z\"]\n};\nvar faThumbsUp = {\n prefix: 'fas',\n iconName: 'thumbs-up',\n icon: [512, 512, [], \"f164\", \"M104 224H24c-13.255 0-24 10.745-24 24v240c0 13.255 10.745 24 24 24h80c13.255 0 24-10.745 24-24V248c0-13.255-10.745-24-24-24zM64 472c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24zM384 81.452c0 42.416-25.97 66.208-33.277 94.548h101.723c33.397 0 59.397 27.746 59.553 58.098.084 17.938-7.546 37.249-19.439 49.197l-.11.11c9.836 23.337 8.237 56.037-9.308 79.469 8.681 25.895-.069 57.704-16.382 74.757 4.298 17.598 2.244 32.575-6.148 44.632C440.202 511.587 389.616 512 346.839 512l-2.845-.001c-48.287-.017-87.806-17.598-119.56-31.725-15.957-7.099-36.821-15.887-52.651-16.178-6.54-.12-11.783-5.457-11.783-11.998v-213.77c0-3.2 1.282-6.271 3.558-8.521 39.614-39.144 56.648-80.587 89.117-113.111 14.804-14.832 20.188-37.236 25.393-58.902C282.515 39.293 291.817 0 312 0c24 0 72 8 72 81.452z\"]\n};\nvar faThumbtack = {\n prefix: 'fas',\n iconName: 'thumbtack',\n icon: [384, 512, [], \"f08d\", \"M298.028 214.267L285.793 96H328c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H56C42.745 0 32 10.745 32 24v48c0 13.255 10.745 24 24 24h42.207L85.972 214.267C37.465 236.82 0 277.261 0 328c0 13.255 10.745 24 24 24h136v104.007c0 1.242.289 2.467.845 3.578l24 48c2.941 5.882 11.364 5.893 14.311 0l24-48a8.008 8.008 0 0 0 .845-3.578V352h136c13.255 0 24-10.745 24-24-.001-51.183-37.983-91.42-85.973-113.733z\"]\n};\nvar faTicketAlt = {\n prefix: 'fas',\n iconName: 'ticket-alt',\n icon: [576, 512, [], \"f3ff\", \"M128 160h320v192H128V160zm400 96c0 26.51 21.49 48 48 48v96c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48v-96c26.51 0 48-21.49 48-48s-21.49-48-48-48v-96c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48v96c-26.51 0-48 21.49-48 48zm-48-104c0-13.255-10.745-24-24-24H120c-13.255 0-24 10.745-24 24v208c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V152z\"]\n};\nvar faTimes = {\n prefix: 'fas',\n iconName: 'times',\n icon: [352, 512, [], \"f00d\", \"M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z\"]\n};\nvar faTimesCircle = {\n prefix: 'fas',\n iconName: 'times-circle',\n icon: [512, 512, [], \"f057\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm121.6 313.1c4.7 4.7 4.7 12.3 0 17L338 377.6c-4.7 4.7-12.3 4.7-17 0L256 312l-65.1 65.6c-4.7 4.7-12.3 4.7-17 0L134.4 338c-4.7-4.7-4.7-12.3 0-17l65.6-65-65.6-65.1c-4.7-4.7-4.7-12.3 0-17l39.6-39.6c4.7-4.7 12.3-4.7 17 0l65 65.7 65.1-65.6c4.7-4.7 12.3-4.7 17 0l39.6 39.6c4.7 4.7 4.7 12.3 0 17L312 256l65.6 65.1z\"]\n};\nvar faTint = {\n prefix: 'fas',\n iconName: 'tint',\n icon: [352, 512, [], \"f043\", \"M205.22 22.09c-7.94-28.78-49.44-30.12-58.44 0C100.01 179.85 0 222.72 0 333.91 0 432.35 78.72 512 176 512s176-79.65 176-178.09c0-111.75-99.79-153.34-146.78-311.82zM176 448c-61.75 0-112-50.25-112-112 0-8.84 7.16-16 16-16s16 7.16 16 16c0 44.11 35.89 80 80 80 8.84 0 16 7.16 16 16s-7.16 16-16 16z\"]\n};\nvar faTintSlash = {\n prefix: 'fas',\n iconName: 'tint-slash',\n icon: [640, 512, [], \"f5c7\", \"M633.82 458.1L494.97 350.78c.52-5.57 1.03-11.16 1.03-16.87 0-111.76-99.79-153.34-146.78-311.82-7.94-28.78-49.44-30.12-58.44 0-15.52 52.34-36.87 91.96-58.49 125.68L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM144 333.91C144 432.35 222.72 512 320 512c44.71 0 85.37-16.96 116.4-44.7L162.72 255.78c-11.41 23.5-18.72 48.35-18.72 78.13z\"]\n};\nvar faTired = {\n prefix: 'fas',\n iconName: 'tired',\n icon: [496, 512, [], \"f5c8\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 189.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 208l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM248 288c51.9 0 115.3 43.8 123.2 106.7 1.7 13.6-8 24.6-17.7 20.4-25.9-11.1-64.4-17.4-105.5-17.4s-79.6 6.3-105.5 17.4c-9.8 4.2-19.4-7-17.7-20.4C132.7 331.8 196.1 288 248 288z\"]\n};\nvar faToggleOff = {\n prefix: 'fas',\n iconName: 'toggle-off',\n icon: [576, 512, [], \"f204\", \"M384 64H192C85.961 64 0 149.961 0 256s85.961 192 192 192h192c106.039 0 192-85.961 192-192S490.039 64 384 64zM64 256c0-70.741 57.249-128 128-128 70.741 0 128 57.249 128 128 0 70.741-57.249 128-128 128-70.741 0-128-57.249-128-128zm320 128h-48.905c65.217-72.858 65.236-183.12 0-256H384c70.741 0 128 57.249 128 128 0 70.74-57.249 128-128 128z\"]\n};\nvar faToggleOn = {\n prefix: 'fas',\n iconName: 'toggle-on',\n icon: [576, 512, [], \"f205\", \"M384 64H192C86 64 0 150 0 256s86 192 192 192h192c106 0 192-86 192-192S490 64 384 64zm0 320c-70.8 0-128-57.3-128-128 0-70.8 57.3-128 128-128 70.8 0 128 57.3 128 128 0 70.8-57.3 128-128 128z\"]\n};\nvar faToilet = {\n prefix: 'fas',\n iconName: 'toilet',\n icon: [384, 512, [], \"f7d8\", \"M368 48c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H16C7.2 0 0 7.2 0 16v16c0 8.8 7.2 16 16 16h16v156.7C11.8 214.8 0 226.9 0 240c0 67.2 34.6 126.2 86.8 160.5l-21.4 70.2C59.1 491.2 74.5 512 96 512h192c21.5 0 36.9-20.8 30.6-41.3l-21.4-70.2C349.4 366.2 384 307.2 384 240c0-13.1-11.8-25.2-32-35.3V48h16zM80 72c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H88c-4.4 0-8-3.6-8-8V72zm112 200c-77.1 0-139.6-14.3-139.6-32s62.5-32 139.6-32 139.6 14.3 139.6 32-62.5 32-139.6 32z\"]\n};\nvar faToiletPaper = {\n prefix: 'fas',\n iconName: 'toilet-paper',\n icon: [576, 512, [], \"f71e\", \"M128 0C74.98 0 32 85.96 32 192v172.07c0 41.12-9.8 62.77-31.17 126.87C-2.62 501.3 5.09 512 16.01 512h280.92c13.77 0 26-8.81 30.36-21.88 12.83-38.48 24.71-72.4 24.71-126.05V192c0-83.6 23.67-153.52 60.44-192H128zM96 224c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm64 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm64 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm64 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zM480 0c-53.02 0-96 85.96-96 192s42.98 192 96 192 96-85.96 96-192S533.02 0 480 0zm0 256c-17.67 0-32-28.65-32-64s14.33-64 32-64 32 28.65 32 64-14.33 64-32 64z\"]\n};\nvar faToiletPaperSlash = {\n prefix: 'fas',\n iconName: 'toilet-paper-slash',\n icon: [640, 512, [], \"e072\", \"M64,192V364.13c0,41.12-9.75,62.75-31.12,126.87A16,16,0,0,0,48,512H328.86a31.87,31.87,0,0,0,30.38-21.87c9.31-27.83,18-53.35,22.18-85.55l-316-244.25C64.53,170.66,64,181.19,64,192ZM633.82,458.09l-102-78.81C575.28,360.91,608,284.32,608,192,608,86,565,0,512,0s-96,86-96,192c0,42,7,80.4,18.43,112L384,265V192c0-83.62,23.63-153.5,60.5-192H160c-23.33,0-44.63,16.83-61.26,44.53L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.45A16,16,0,0,0,6.18,53.91L594.54,508.63A16,16,0,0,0,617,505.81l19.64-25.26A16,16,0,0,0,633.82,458.09ZM512,256c-17.63,0-32-28.62-32-64s14.37-64,32-64,32,28.63,32,64S529.62,256,512,256Z\"]\n};\nvar faToolbox = {\n prefix: 'fas',\n iconName: 'toolbox',\n icon: [512, 512, [], \"f552\", \"M502.63 214.63l-45.25-45.25c-6-6-14.14-9.37-22.63-9.37H384V80c0-26.51-21.49-48-48-48H176c-26.51 0-48 21.49-48 48v80H77.25c-8.49 0-16.62 3.37-22.63 9.37L9.37 214.63c-6 6-9.37 14.14-9.37 22.63V320h128v-16c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v16h128v-16c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v16h128v-82.75c0-8.48-3.37-16.62-9.37-22.62zM320 160H192V96h128v64zm64 208c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-16H192v16c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-16H0v96c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32v-96H384v16z\"]\n};\nvar faTools = {\n prefix: 'fas',\n iconName: 'tools',\n icon: [512, 512, [], \"f7d9\", \"M501.1 395.7L384 278.6c-23.1-23.1-57.6-27.6-85.4-13.9L192 158.1V96L64 0 0 64l96 128h62.1l106.6 106.6c-13.6 27.8-9.2 62.3 13.9 85.4l117.1 117.1c14.6 14.6 38.2 14.6 52.7 0l52.7-52.7c14.5-14.6 14.5-38.2 0-52.7zM331.7 225c28.3 0 54.9 11 74.9 31l19.4 19.4c15.8-6.9 30.8-16.5 43.8-29.5 37.1-37.1 49.7-89.3 37.9-136.7-2.2-9-13.5-12.1-20.1-5.5l-74.4 74.4-67.9-11.3L334 98.9l74.4-74.4c6.6-6.6 3.4-17.9-5.7-20.2-47.4-11.7-99.6.9-136.6 37.9-28.5 28.5-41.9 66.1-41.2 103.6l82.1 82.1c8.1-1.9 16.5-2.9 24.7-2.9zm-103.9 82l-56.7-56.7L18.7 402.8c-25 25-25 65.5 0 90.5s65.5 25 90.5 0l123.6-123.6c-7.6-19.9-9.9-41.6-5-62.7zM64 472c-13.2 0-24-10.8-24-24 0-13.3 10.7-24 24-24s24 10.7 24 24c0 13.2-10.7 24-24 24z\"]\n};\nvar faTooth = {\n prefix: 'fas',\n iconName: 'tooth',\n icon: [448, 512, [], \"f5c9\", \"M443.98 96.25c-11.01-45.22-47.11-82.06-92.01-93.72-32.19-8.36-63 5.1-89.14 24.33-3.25 2.39-6.96 3.73-10.5 5.48l28.32 18.21c7.42 4.77 9.58 14.67 4.8 22.11-4.46 6.95-14.27 9.86-22.11 4.8L162.83 12.84c-20.7-10.85-43.38-16.4-66.81-10.31-44.9 11.67-81 48.5-92.01 93.72-10.13 41.62-.42 80.81 21.5 110.43 23.36 31.57 32.68 68.66 36.29 107.35 4.4 47.16 10.33 94.16 20.94 140.32l7.8 33.95c3.19 13.87 15.49 23.7 29.67 23.7 13.97 0 26.15-9.55 29.54-23.16l34.47-138.42c4.56-18.32 20.96-31.16 39.76-31.16s35.2 12.85 39.76 31.16l34.47 138.42c3.39 13.61 15.57 23.16 29.54 23.16 14.18 0 26.48-9.83 29.67-23.7l7.8-33.95c10.61-46.15 16.53-93.16 20.94-140.32 3.61-38.7 12.93-75.78 36.29-107.35 21.95-29.61 31.66-68.8 21.53-110.43z\"]\n};\nvar faTorah = {\n prefix: 'fas',\n iconName: 'torah',\n icon: [640, 512, [], \"f6a0\", \"M320.05 366.48l17.72-29.64h-35.46zm99.21-166H382.4l18.46 30.82zM48 0C21.49 0 0 14.33 0 32v448c0 17.67 21.49 32 48 32s48-14.33 48-32V32C96 14.33 74.51 0 48 0zm172.74 311.5h36.85l-18.46-30.82zm161.71 0h36.86l-18.45-30.8zM128 464h384V48H128zm66.77-278.13a21.22 21.22 0 0 1 18.48-10.71h59.45l29.13-48.71a21.13 21.13 0 0 1 18.22-10.37A20.76 20.76 0 0 1 338 126.29l29.25 48.86h59.52a21.12 21.12 0 0 1 18.1 32L415.63 256 445 305a20.69 20.69 0 0 1 .24 21.12 21.25 21.25 0 0 1-18.48 10.72h-59.47l-29.13 48.7a21.13 21.13 0 0 1-18.16 10.4 20.79 20.79 0 0 1-18-10.22l-29.25-48.88h-59.5a21.11 21.11 0 0 1-18.1-32L224.36 256 195 207a20.7 20.7 0 0 1-.23-21.13zM592 0c-26.51 0-48 14.33-48 32v448c0 17.67 21.49 32 48 32s48-14.33 48-32V32c0-17.67-21.49-32-48-32zM320 145.53l-17.78 29.62h35.46zm-62.45 55h-36.81l18.44 30.8zm29.58 111h65.79L386.09 256l-33.23-55.52h-65.79L253.9 256z\"]\n};\nvar faToriiGate = {\n prefix: 'fas',\n iconName: 'torii-gate',\n icon: [512, 512, [], \"f6a1\", \"M376.45 32h-240.9A303.17 303.17 0 0 1 0 0v96c0 17.67 14.33 32 32 32h32v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h48v240c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V256h256v240c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V256h48c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-48v-64h32c17.67 0 32-14.33 32-32V0a303.17 303.17 0 0 1-135.55 32zM128 128h96v64h-96v-64zm256 64h-96v-64h96v64z\"]\n};\nvar faTractor = {\n prefix: 'fas',\n iconName: 'tractor',\n icon: [640, 512, [], \"f722\", \"M528 336c-48.6 0-88 39.4-88 88s39.4 88 88 88 88-39.4 88-88-39.4-88-88-88zm0 112c-13.23 0-24-10.77-24-24s10.77-24 24-24 24 10.77 24 24-10.77 24-24 24zm80-288h-64v-40.2c0-14.12 4.7-27.76 13.15-38.84 4.42-5.8 3.55-14.06-1.32-19.49L534.2 37.3c-6.66-7.45-18.32-6.92-24.7.78C490.58 60.9 480 89.81 480 119.8V160H377.67L321.58 29.14A47.914 47.914 0 0 0 277.45 0H144c-26.47 0-48 21.53-48 48v146.52c-8.63-6.73-20.96-6.46-28.89 1.47L36 227.1c-8.59 8.59-8.59 22.52 0 31.11l5.06 5.06c-4.99 9.26-8.96 18.82-11.91 28.72H22c-12.15 0-22 9.85-22 22v44c0 12.15 9.85 22 22 22h7.14c2.96 9.91 6.92 19.46 11.91 28.73l-5.06 5.06c-8.59 8.59-8.59 22.52 0 31.11L67.1 476c8.59 8.59 22.52 8.59 31.11 0l5.06-5.06c9.26 4.99 18.82 8.96 28.72 11.91V490c0 12.15 9.85 22 22 22h44c12.15 0 22-9.85 22-22v-7.14c9.9-2.95 19.46-6.92 28.72-11.91l5.06 5.06c8.59 8.59 22.52 8.59 31.11 0l31.11-31.11c8.59-8.59 8.59-22.52 0-31.11l-5.06-5.06c4.99-9.26 8.96-18.82 11.91-28.72H330c12.15 0 22-9.85 22-22v-6h80.54c21.91-28.99 56.32-48 95.46-48 18.64 0 36.07 4.61 51.8 12.2l50.82-50.82c6-6 9.37-14.14 9.37-22.63V192c.01-17.67-14.32-32-31.99-32zM176 416c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zm22-256h-38V64h106.89l41.15 96H198z\"]\n};\nvar faTrademark = {\n prefix: 'fas',\n iconName: 'trademark',\n icon: [640, 512, [], \"f25c\", \"M260.6 96H12c-6.6 0-12 5.4-12 12v43.1c0 6.6 5.4 12 12 12h85.1V404c0 6.6 5.4 12 12 12h54.3c6.6 0 12-5.4 12-12V163.1h85.1c6.6 0 12-5.4 12-12V108c.1-6.6-5.3-12-11.9-12zM640 403l-24-296c-.5-6.2-5.7-11-12-11h-65.4c-5.1 0-9.7 3.3-11.3 8.1l-43.8 127.1c-7.2 20.6-16.1 52.8-16.1 52.8h-.9s-8.9-32.2-16.1-52.8l-43.8-127.1c-1.7-4.8-6.2-8.1-11.3-8.1h-65.4c-6.2 0-11.4 4.8-12 11l-24.4 296c-.6 7 4.9 13 12 13H360c6.3 0 11.5-4.9 12-11.2l9.1-132.9c1.8-24.2 0-53.7 0-53.7h.9s10.7 33.6 17.9 53.7l30.7 84.7c1.7 4.7 6.2 7.9 11.3 7.9h50.3c5.1 0 9.6-3.2 11.3-7.9l30.7-84.7c7.2-20.1 17.9-53.7 17.9-53.7h.9s-1.8 29.5 0 53.7l9.1 132.9c.4 6.3 5.7 11.2 12 11.2H628c7 0 12.5-6 12-13z\"]\n};\nvar faTrafficLight = {\n prefix: 'fas',\n iconName: 'traffic-light',\n icon: [384, 512, [], \"f637\", \"M384 192h-64v-37.88c37.2-13.22 64-48.38 64-90.12h-64V32c0-17.67-14.33-32-32-32H96C78.33 0 64 14.33 64 32v32H0c0 41.74 26.8 76.9 64 90.12V192H0c0 41.74 26.8 76.9 64 90.12V320H0c0 42.84 28.25 78.69 66.99 91.05C79.42 468.72 130.6 512 192 512s112.58-43.28 125.01-100.95C355.75 398.69 384 362.84 384 320h-64v-37.88c37.2-13.22 64-48.38 64-90.12zM192 416c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm0-128c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm0-128c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48z\"]\n};\nvar faTrailer = {\n prefix: 'fas',\n iconName: 'trailer',\n icon: [640, 512, [], \"e041\", \"M624,320H544V80a16,16,0,0,0-16-16H16A16,16,0,0,0,0,80V368a16,16,0,0,0,16,16H65.61c7.83-54.21,54-96,110.39-96s102.56,41.79,110.39,96H624a16,16,0,0,0,16-16V336A16,16,0,0,0,624,320ZM96,243.68a176.29,176.29,0,0,0-32,20.71V136a8,8,0,0,1,8-8H88a8,8,0,0,1,8,8Zm96-18.54c-5.31-.49-10.57-1.14-16-1.14s-10.69.65-16,1.14V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8Zm96,39.25a176.29,176.29,0,0,0-32-20.71V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8ZM384,320H352V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8Zm96,0H448V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8Zm-304,0a80,80,0,1,0,80,80A80,80,0,0,0,176,320Zm0,112a32,32,0,1,1,32-32A32,32,0,0,1,176,432Z\"]\n};\nvar faTrain = {\n prefix: 'fas',\n iconName: 'train',\n icon: [448, 512, [], \"f238\", \"M448 96v256c0 51.815-61.624 96-130.022 96l62.98 49.721C386.905 502.417 383.562 512 376 512H72c-7.578 0-10.892-9.594-4.957-14.279L130.022 448C61.82 448 0 403.954 0 352V96C0 42.981 64 0 128 0h192c65 0 128 42.981 128 96zm-48 136V120c0-13.255-10.745-24-24-24H72c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h304c13.255 0 24-10.745 24-24zm-176 64c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56z\"]\n};\nvar faTram = {\n prefix: 'fas',\n iconName: 'tram',\n icon: [512, 512, [], \"f7da\", \"M288 64c17.7 0 32-14.3 32-32S305.7 0 288 0s-32 14.3-32 32 14.3 32 32 32zm223.5-12.1c-2.3-8.6-11-13.6-19.6-11.3l-480 128c-8.5 2.3-13.6 11-11.3 19.6C2.5 195.3 8.9 200 16 200c1.4 0 2.8-.2 4.1-.5L240 140.8V224H64c-17.7 0-32 14.3-32 32v224c0 17.7 14.3 32 32 32h384c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32H272v-91.7l228.1-60.8c8.6-2.3 13.6-11.1 11.4-19.6zM176 384H80v-96h96v96zm160-96h96v96h-96v-96zm-32 0v96h-96v-96h96zM192 96c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32z\"]\n};\nvar faTransgender = {\n prefix: 'fas',\n iconName: 'transgender',\n icon: [384, 512, [], \"f224\", \"M372 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7C198.5 104.1 172.2 96 144 96 64.5 96 0 160.5 0 240c0 68.5 47.9 125.9 112 140.4V408H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v28c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-28h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-27.6c64.1-14.6 112-71.9 112-140.4 0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V12c0-6.6-5.4-12-12-12zM144 320c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faTransgenderAlt = {\n prefix: 'fas',\n iconName: 'transgender-alt',\n icon: [480, 512, [], \"f225\", \"M468 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7C294.5 104.1 268.2 96 240 96c-28.2 0-54.5 8.1-76.7 22.1l-16.5-16.5 19.8-19.8c4.7-4.7 4.7-12.3 0-17l-28.3-28.3c-4.7-4.7-12.3-4.7-17 0l-19.8 19.8-19-19 16.9-16.9C107.1 12.9 101.7 0 91 0H12C5.4 0 0 5.4 0 12v79c0 10.7 12.9 16 20.5 8.5l16.9-16.9 19 19-19.8 19.8c-4.7 4.7-4.7 12.3 0 17l28.3 28.3c4.7 4.7 12.3 4.7 17 0l19.8-19.8 16.5 16.5C104.1 185.5 96 211.8 96 240c0 68.5 47.9 125.9 112 140.4V408h-36c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v28c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-28h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-27.6c64.1-14.6 112-71.9 112-140.4 0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V12c0-6.6-5.4-12-12-12zM240 320c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faTrash = {\n prefix: 'fas',\n iconName: 'trash',\n icon: [448, 512, [], \"f1f8\", \"M432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM53.2 467a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128H32z\"]\n};\nvar faTrashAlt = {\n prefix: 'fas',\n iconName: 'trash-alt',\n icon: [448, 512, [], \"f2ed\", \"M32 464a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128H32zm272-256a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faTrashRestore = {\n prefix: 'fas',\n iconName: 'trash-restore',\n icon: [448, 512, [], \"f829\", \"M53.2 467a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128H32zm70.11-175.8l89.38-94.26a15.41 15.41 0 0 1 22.62 0l89.38 94.26c10.08 10.62 2.94 28.8-11.32 28.8H256v112a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V320h-57.37c-14.26 0-21.4-18.18-11.32-28.8zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faTrashRestoreAlt = {\n prefix: 'fas',\n iconName: 'trash-restore-alt',\n icon: [448, 512, [], \"f82a\", \"M32 464a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128H32zm91.31-172.8l89.38-94.26a15.41 15.41 0 0 1 22.62 0l89.38 94.26c10.08 10.62 2.94 28.8-11.32 28.8H256v112a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V320h-57.37c-14.26 0-21.4-18.18-11.32-28.8zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faTree = {\n prefix: 'fas',\n iconName: 'tree',\n icon: [384, 512, [], \"f1bb\", \"M378.31 378.49L298.42 288h30.63c9.01 0 16.98-5 20.78-13.06 3.8-8.04 2.55-17.26-3.28-24.05L268.42 160h28.89c9.1 0 17.3-5.35 20.86-13.61 3.52-8.13 1.86-17.59-4.24-24.08L203.66 4.83c-6.03-6.45-17.28-6.45-23.32 0L70.06 122.31c-6.1 6.49-7.75 15.95-4.24 24.08C69.38 154.65 77.59 160 86.69 160h28.89l-78.14 90.91c-5.81 6.78-7.06 15.99-3.27 24.04C37.97 283 45.93 288 54.95 288h30.63L5.69 378.49c-6 6.79-7.36 16.09-3.56 24.26 3.75 8.05 12 13.25 21.01 13.25H160v24.45l-30.29 48.4c-5.32 10.64 2.42 23.16 14.31 23.16h95.96c11.89 0 19.63-12.52 14.31-23.16L224 440.45V416h136.86c9.01 0 17.26-5.2 21.01-13.25 3.8-8.17 2.44-17.47-3.56-24.26z\"]\n};\nvar faTrophy = {\n prefix: 'fas',\n iconName: 'trophy',\n icon: [576, 512, [], \"f091\", \"M552 64H448V24c0-13.3-10.7-24-24-24H152c-13.3 0-24 10.7-24 24v40H24C10.7 64 0 74.7 0 88v56c0 35.7 22.5 72.4 61.9 100.7 31.5 22.7 69.8 37.1 110 41.7C203.3 338.5 240 360 240 360v72h-48c-35.3 0-64 20.7-64 56v12c0 6.6 5.4 12 12 12h296c6.6 0 12-5.4 12-12v-12c0-35.3-28.7-56-64-56h-48v-72s36.7-21.5 68.1-73.6c40.3-4.6 78.6-19 110-41.7 39.3-28.3 61.9-65 61.9-100.7V88c0-13.3-10.7-24-24-24zM99.3 192.8C74.9 175.2 64 155.6 64 144v-16h64.2c1 32.6 5.8 61.2 12.8 86.2-15.1-5.2-29.2-12.4-41.7-21.4zM512 144c0 16.1-17.7 36.1-35.3 48.8-12.5 9-26.7 16.2-41.8 21.4 7-25 11.8-53.6 12.8-86.2H512v16z\"]\n};\nvar faTruck = {\n prefix: 'fas',\n iconName: 'truck',\n icon: [640, 512, [], \"f0d1\", \"M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h16c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm320 0c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z\"]\n};\nvar faTruckLoading = {\n prefix: 'fas',\n iconName: 'truck-loading',\n icon: [640, 512, [], \"f4de\", \"M50.2 375.6c2.3 8.5 11.1 13.6 19.6 11.3l216.4-58c8.5-2.3 13.6-11.1 11.3-19.6l-49.7-185.5c-2.3-8.5-11.1-13.6-19.6-11.3L151 133.3l24.8 92.7-61.8 16.5-24.8-92.7-77.3 20.7C3.4 172.8-1.7 181.6.6 190.1l49.6 185.5zM384 0c-17.7 0-32 14.3-32 32v323.6L5.9 450c-4.3 1.2-6.8 5.6-5.6 9.8l12.6 46.3c1.2 4.3 5.6 6.8 9.8 5.6l393.7-107.4C418.8 464.1 467.6 512 528 512c61.9 0 112-50.1 112-112V0H384zm144 448c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z\"]\n};\nvar faTruckMonster = {\n prefix: 'fas',\n iconName: 'truck-monster',\n icon: [640, 512, [], \"f63b\", \"M624 224h-16v-64c0-17.67-14.33-32-32-32h-73.6L419.22 24.02A64.025 64.025 0 0 0 369.24 0H256c-17.67 0-32 14.33-32 32v96H48c-8.84 0-16 7.16-16 16v80H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16.72c29.21-38.65 75.1-64 127.28-64s98.07 25.35 127.28 64h65.45c29.21-38.65 75.1-64 127.28-64s98.07 25.35 127.28 64H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-336-96V64h81.24l51.2 64H288zm304 224h-5.2c-2.2-7.33-5.07-14.28-8.65-20.89l3.67-3.67c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-3.67 3.67A110.85 110.85 0 0 0 512 277.2V272c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v5.2c-7.33 2.2-14.28 5.07-20.89 8.65l-3.67-3.67c-6.25-6.25-16.38-6.25-22.63 0l-22.63 22.63c-6.25 6.25-6.25 16.38 0 22.63l3.67 3.67A110.85 110.85 0 0 0 373.2 352H368c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h5.2c2.2 7.33 5.07 14.28 8.65 20.89l-3.67 3.67c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l3.67-3.67c6.61 3.57 13.57 6.45 20.9 8.65v5.2c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-5.2c7.33-2.2 14.28-5.07 20.9-8.65l3.67 3.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63l-3.67-3.67a110.85 110.85 0 0 0 8.65-20.89h5.2c8.84 0 16-7.16 16-16v-32c-.02-8.84-7.18-16-16.02-16zm-112 80c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm-208-80h-5.2c-2.2-7.33-5.07-14.28-8.65-20.89l3.67-3.67c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-3.67 3.67A110.85 110.85 0 0 0 192 277.2V272c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v5.2c-7.33 2.2-14.28 5.07-20.89 8.65l-3.67-3.67c-6.25-6.25-16.38-6.25-22.63 0L58.18 304.8c-6.25 6.25-6.25 16.38 0 22.63l3.67 3.67a110.85 110.85 0 0 0-8.65 20.89H48c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h5.2c2.2 7.33 5.07 14.28 8.65 20.89l-3.67 3.67c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l3.67-3.67c6.61 3.57 13.57 6.45 20.9 8.65v5.2c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-5.2c7.33-2.2 14.28-5.07 20.9-8.65l3.67 3.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63l-3.67-3.67a110.85 110.85 0 0 0 8.65-20.89h5.2c8.84 0 16-7.16 16-16v-32C288 359.16 280.84 352 272 352zm-112 80c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48z\"]\n};\nvar faTruckMoving = {\n prefix: 'fas',\n iconName: 'truck-moving',\n icon: [640, 512, [], \"f4df\", \"M621.3 237.3l-58.5-58.5c-12-12-28.3-18.7-45.3-18.7H480V64c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64v336c0 44.2 35.8 80 80 80 26.3 0 49.4-12.9 64-32.4 14.6 19.6 37.7 32.4 64 32.4 44.2 0 80-35.8 80-80 0-5.5-.6-10.8-1.6-16h163.2c-1.1 5.2-1.6 10.5-1.6 16 0 44.2 35.8 80 80 80s80-35.8 80-80c0-5.5-.6-10.8-1.6-16H624c8.8 0 16-7.2 16-16v-85.5c0-17-6.7-33.2-18.7-45.2zM80 432c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm128 0c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm272-224h37.5c4.3 0 8.3 1.7 11.3 4.7l43.3 43.3H480v-48zm48 224c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32z\"]\n};\nvar faTruckPickup = {\n prefix: 'fas',\n iconName: 'truck-pickup',\n icon: [640, 512, [], \"f63c\", \"M624 288h-16v-64c0-17.67-14.33-32-32-32h-48L419.22 56.02A64.025 64.025 0 0 0 369.24 32H256c-17.67 0-32 14.33-32 32v128H64c-17.67 0-32 14.33-32 32v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h49.61c-.76 5.27-1.61 10.52-1.61 16 0 61.86 50.14 112 112 112s112-50.14 112-112c0-5.48-.85-10.73-1.61-16h67.23c-.76 5.27-1.61 10.52-1.61 16 0 61.86 50.14 112 112 112s112-50.14 112-112c0-5.48-.85-10.73-1.61-16H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM288 96h81.24l76.8 96H288V96zM176 416c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48zm288 0c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48z\"]\n};\nvar faTshirt = {\n prefix: 'fas',\n iconName: 'tshirt',\n icon: [640, 512, [], \"f553\", \"M631.2 96.5L436.5 0C416.4 27.8 371.9 47.2 320 47.2S223.6 27.8 203.5 0L8.8 96.5c-7.9 4-11.1 13.6-7.2 21.5l57.2 114.5c4 7.9 13.6 11.1 21.5 7.2l56.6-27.7c10.6-5.2 23 2.5 23 14.4V480c0 17.7 14.3 32 32 32h256c17.7 0 32-14.3 32-32V226.3c0-11.8 12.4-19.6 23-14.4l56.6 27.7c7.9 4 17.5.8 21.5-7.2L638.3 118c4-7.9.8-17.6-7.1-21.5z\"]\n};\nvar faTty = {\n prefix: 'fas',\n iconName: 'tty',\n icon: [512, 512, [], \"f1e4\", \"M5.37 103.822c138.532-138.532 362.936-138.326 501.262 0 6.078 6.078 7.074 15.496 2.583 22.681l-43.214 69.138a18.332 18.332 0 0 1-22.356 7.305l-86.422-34.569a18.335 18.335 0 0 1-11.434-18.846L351.741 90c-62.145-22.454-130.636-21.986-191.483 0l5.953 59.532a18.331 18.331 0 0 1-11.434 18.846l-86.423 34.568a18.334 18.334 0 0 1-22.356-7.305L2.787 126.502a18.333 18.333 0 0 1 2.583-22.68zM96 308v-40c0-6.627-5.373-12-12-12H44c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12H92c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zM96 500v-40c0-6.627-5.373-12-12-12H44c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm288 0v-40c0-6.627-5.373-12-12-12H140c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h232c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12z\"]\n};\nvar faTv = {\n prefix: 'fas',\n iconName: 'tv',\n icon: [640, 512, [], \"f26c\", \"M592 0H48A48 48 0 0 0 0 48v320a48 48 0 0 0 48 48h240v32H112a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H352v-32h240a48 48 0 0 0 48-48V48a48 48 0 0 0-48-48zm-16 352H64V64h512z\"]\n};\nvar faUmbrella = {\n prefix: 'fas',\n iconName: 'umbrella',\n icon: [576, 512, [], \"f0e9\", \"M575.7 280.8C547.1 144.5 437.3 62.6 320 49.9V32c0-17.7-14.3-32-32-32s-32 14.3-32 32v17.9C138.3 62.6 29.5 144.5.3 280.8c-2.2 10.1 8.5 21.3 18.7 11.4 52-55 107.7-52.4 158.6 37 5.3 9.5 14.9 8.6 19.7 0 20.2-35.4 44.9-73.2 90.7-73.2 58.5 0 88.2 68.8 90.7 73.2 4.8 8.6 14.4 9.5 19.7 0 51-89.5 107.1-91.4 158.6-37 10.3 10 20.9-1.3 18.7-11.4zM256 301.7V432c0 8.8-7.2 16-16 16-7.8 0-13.2-5.3-15.1-10.7-5.9-16.7-24.1-25.4-40.8-19.5-16.7 5.9-25.4 24.2-19.5 40.8 11.2 31.9 41.6 53.3 75.4 53.3 44.1 0 80-35.9 80-80V301.6c-9.1-7.9-19.8-13.6-32-13.6-12.3.1-22.4 4.8-32 13.7z\"]\n};\nvar faUmbrellaBeach = {\n prefix: 'fas',\n iconName: 'umbrella-beach',\n icon: [640, 512, [], \"f5ca\", \"M115.38 136.9l102.11 37.18c35.19-81.54 86.21-144.29 139-173.7-95.88-4.89-188.78 36.96-248.53 111.8-6.69 8.4-2.66 21.05 7.42 24.72zm132.25 48.16l238.48 86.83c35.76-121.38 18.7-231.66-42.63-253.98-7.4-2.7-15.13-4-23.09-4-58.02.01-128.27 69.17-172.76 171.15zM521.48 60.5c6.22 16.3 10.83 34.6 13.2 55.19 5.74 49.89-1.42 108.23-18.95 166.98l102.62 37.36c10.09 3.67 21.31-3.43 21.57-14.17 2.32-95.69-41.91-187.44-118.44-245.36zM560 447.98H321.06L386 269.5l-60.14-21.9-72.9 200.37H16c-8.84 0-16 7.16-16 16.01v32.01C0 504.83 7.16 512 16 512h544c8.84 0 16-7.17 16-16.01v-32.01c0-8.84-7.16-16-16-16z\"]\n};\nvar faUnderline = {\n prefix: 'fas',\n iconName: 'underline',\n icon: [448, 512, [], \"f0cd\", \"M32 64h32v160c0 88.22 71.78 160 160 160s160-71.78 160-160V64h32a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16H272a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32v160a80 80 0 0 1-160 0V64h32a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16H32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm400 384H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faUndo = {\n prefix: 'fas',\n iconName: 'undo',\n icon: [512, 512, [], \"f0e2\", \"M212.333 224.333H12c-6.627 0-12-5.373-12-12V12C0 5.373 5.373 0 12 0h48c6.627 0 12 5.373 12 12v78.112C117.773 39.279 184.26 7.47 258.175 8.007c136.906.994 246.448 111.623 246.157 248.532C504.041 393.258 393.12 504 256.333 504c-64.089 0-122.496-24.313-166.51-64.215-5.099-4.622-5.334-12.554-.467-17.42l33.967-33.967c4.474-4.474 11.662-4.717 16.401-.525C170.76 415.336 211.58 432 256.333 432c97.268 0 176-78.716 176-176 0-97.267-78.716-176-176-176-58.496 0-110.28 28.476-142.274 72.333h98.274c6.627 0 12 5.373 12 12v48c0 6.627-5.373 12-12 12z\"]\n};\nvar faUndoAlt = {\n prefix: 'fas',\n iconName: 'undo-alt',\n icon: [512, 512, [], \"f2ea\", \"M255.545 8c-66.269.119-126.438 26.233-170.86 68.685L48.971 40.971C33.851 25.851 8 36.559 8 57.941V192c0 13.255 10.745 24 24 24h134.059c21.382 0 32.09-25.851 16.971-40.971l-41.75-41.75c30.864-28.899 70.801-44.907 113.23-45.273 92.398-.798 170.283 73.977 169.484 169.442C423.236 348.009 349.816 424 256 424c-41.127 0-79.997-14.678-110.63-41.556-4.743-4.161-11.906-3.908-16.368.553L89.34 422.659c-4.872 4.872-4.631 12.815.482 17.433C133.798 479.813 192.074 504 256 504c136.966 0 247.999-111.033 248-247.998C504.001 119.193 392.354 7.755 255.545 8z\"]\n};\nvar faUniversalAccess = {\n prefix: 'fas',\n iconName: 'universal-access',\n icon: [512, 512, [], \"f29a\", \"M256 48c114.953 0 208 93.029 208 208 0 114.953-93.029 208-208 208-114.953 0-208-93.029-208-208 0-114.953 93.029-208 208-208m0-40C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 56C149.961 64 64 149.961 64 256s85.961 192 192 192 192-85.961 192-192S362.039 64 256 64zm0 44c19.882 0 36 16.118 36 36s-16.118 36-36 36-36-16.118-36-36 16.118-36 36-36zm117.741 98.023c-28.712 6.779-55.511 12.748-82.14 15.807.851 101.023 12.306 123.052 25.037 155.621 3.617 9.26-.957 19.698-10.217 23.315-9.261 3.617-19.699-.957-23.316-10.217-8.705-22.308-17.086-40.636-22.261-78.549h-9.686c-5.167 37.851-13.534 56.208-22.262 78.549-3.615 9.255-14.05 13.836-23.315 10.217-9.26-3.617-13.834-14.056-10.217-23.315 12.713-32.541 24.185-54.541 25.037-155.621-26.629-3.058-53.428-9.027-82.141-15.807-8.6-2.031-13.926-10.648-11.895-19.249s10.647-13.926 19.249-11.895c96.686 22.829 124.283 22.783 220.775 0 8.599-2.03 17.218 3.294 19.249 11.895 2.029 8.601-3.297 17.219-11.897 19.249z\"]\n};\nvar faUniversity = {\n prefix: 'fas',\n iconName: 'university',\n icon: [512, 512, [], \"f19c\", \"M496 128v16a8 8 0 0 1-8 8h-24v12c0 6.627-5.373 12-12 12H60c-6.627 0-12-5.373-12-12v-12H24a8 8 0 0 1-8-8v-16a8 8 0 0 1 4.941-7.392l232-88a7.996 7.996 0 0 1 6.118 0l232 88A8 8 0 0 1 496 128zm-24 304H40c-13.255 0-24 10.745-24 24v16a8 8 0 0 0 8 8h464a8 8 0 0 0 8-8v-16c0-13.255-10.745-24-24-24zM96 192v192H60c-6.627 0-12 5.373-12 12v20h416v-20c0-6.627-5.373-12-12-12h-36V192h-64v192h-64V192h-64v192h-64V192H96z\"]\n};\nvar faUnlink = {\n prefix: 'fas',\n iconName: 'unlink',\n icon: [512, 512, [], \"f127\", \"M304.083 405.907c4.686 4.686 4.686 12.284 0 16.971l-44.674 44.674c-59.263 59.262-155.693 59.266-214.961 0-59.264-59.265-59.264-155.696 0-214.96l44.675-44.675c4.686-4.686 12.284-4.686 16.971 0l39.598 39.598c4.686 4.686 4.686 12.284 0 16.971l-44.675 44.674c-28.072 28.073-28.072 73.75 0 101.823 28.072 28.072 73.75 28.073 101.824 0l44.674-44.674c4.686-4.686 12.284-4.686 16.971 0l39.597 39.598zm-56.568-260.216c4.686 4.686 12.284 4.686 16.971 0l44.674-44.674c28.072-28.075 73.75-28.073 101.824 0 28.072 28.073 28.072 73.75 0 101.823l-44.675 44.674c-4.686 4.686-4.686 12.284 0 16.971l39.598 39.598c4.686 4.686 12.284 4.686 16.971 0l44.675-44.675c59.265-59.265 59.265-155.695 0-214.96-59.266-59.264-155.695-59.264-214.961 0l-44.674 44.674c-4.686 4.686-4.686 12.284 0 16.971l39.597 39.598zm234.828 359.28l22.627-22.627c9.373-9.373 9.373-24.569 0-33.941L63.598 7.029c-9.373-9.373-24.569-9.373-33.941 0L7.029 29.657c-9.373 9.373-9.373 24.569 0 33.941l441.373 441.373c9.373 9.372 24.569 9.372 33.941 0z\"]\n};\nvar faUnlock = {\n prefix: 'fas',\n iconName: 'unlock',\n icon: [448, 512, [], \"f09c\", \"M400 256H152V152.9c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v16c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-16C376 68 307.5-.3 223.5 0 139.5.3 72 69.5 72 153.5V256H48c-26.5 0-48 21.5-48 48v160c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48z\"]\n};\nvar faUnlockAlt = {\n prefix: 'fas',\n iconName: 'unlock-alt',\n icon: [448, 512, [], \"f13e\", \"M400 256H152V152.9c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v16c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-16C376 68 307.5-.3 223.5 0 139.5.3 72 69.5 72 153.5V256H48c-26.5 0-48 21.5-48 48v160c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48zM264 408c0 22.1-17.9 40-40 40s-40-17.9-40-40v-48c0-22.1 17.9-40 40-40s40 17.9 40 40v48z\"]\n};\nvar faUpload = {\n prefix: 'fas',\n iconName: 'upload',\n icon: [512, 512, [], \"f093\", \"M296 384h-80c-13.3 0-24-10.7-24-24V192h-87.7c-17.8 0-26.7-21.5-14.1-34.1L242.3 5.7c7.5-7.5 19.8-7.5 27.3 0l152.2 152.2c12.6 12.6 3.7 34.1-14.1 34.1H320v168c0 13.3-10.7 24-24 24zm216-8v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h136v8c0 30.9 25.1 56 56 56h80c30.9 0 56-25.1 56-56v-8h136c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z\"]\n};\nvar faUser = {\n prefix: 'fas',\n iconName: 'user',\n icon: [448, 512, [], \"f007\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z\"]\n};\nvar faUserAlt = {\n prefix: 'fas',\n iconName: 'user-alt',\n icon: [512, 512, [], \"f406\", \"M256 288c79.5 0 144-64.5 144-144S335.5 0 256 0 112 64.5 112 144s64.5 144 144 144zm128 32h-55.1c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16H128C57.3 320 0 377.3 0 448v16c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48v-16c0-70.7-57.3-128-128-128z\"]\n};\nvar faUserAltSlash = {\n prefix: 'fas',\n iconName: 'user-alt-slash',\n icon: [640, 512, [], \"f4fa\", \"M633.8 458.1L389.6 269.3C433.8 244.7 464 198.1 464 144 464 64.5 399.5 0 320 0c-67.1 0-123 46.1-139 108.2L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3zM198.4 320C124.2 320 64 380.2 64 454.4v9.6c0 26.5 21.5 48 48 48h382.2L245.8 320h-47.4z\"]\n};\nvar faUserAstronaut = {\n prefix: 'fas',\n iconName: 'user-astronaut',\n icon: [448, 512, [], \"f4fb\", \"M64 224h13.5c24.7 56.5 80.9 96 146.5 96s121.8-39.5 146.5-96H384c8.8 0 16-7.2 16-16v-96c0-8.8-7.2-16-16-16h-13.5C345.8 39.5 289.6 0 224 0S102.2 39.5 77.5 96H64c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16zm40-88c0-22.1 21.5-40 48-40h144c26.5 0 48 17.9 48 40v24c0 53-43 96-96 96h-48c-53 0-96-43-96-96v-24zm72 72l12-36 36-12-36-12-12-36-12 36-36 12 36 12 12 36zm151.6 113.4C297.7 340.7 262.2 352 224 352s-73.7-11.3-103.6-30.6C52.9 328.5 0 385 0 454.4v9.6c0 26.5 21.5 48 48 48h80v-64c0-17.7 14.3-32 32-32h128c17.7 0 32 14.3 32 32v64h80c26.5 0 48-21.5 48-48v-9.6c0-69.4-52.9-125.9-120.4-133zM272 448c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm-96 0c-8.8 0-16 7.2-16 16v48h32v-48c0-8.8-7.2-16-16-16z\"]\n};\nvar faUserCheck = {\n prefix: 'fas',\n iconName: 'user-check',\n icon: [640, 512, [], \"f4fc\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4zm323-128.4l-27.8-28.1c-4.6-4.7-12.1-4.7-16.8-.1l-104.8 104-45.5-45.8c-4.6-4.7-12.1-4.7-16.8-.1l-28.1 27.9c-4.7 4.6-4.7 12.1-.1 16.8l81.7 82.3c4.6 4.7 12.1 4.7 16.8.1l141.3-140.2c4.6-4.7 4.7-12.2.1-16.8z\"]\n};\nvar faUserCircle = {\n prefix: 'fas',\n iconName: 'user-circle',\n icon: [496, 512, [], \"f2bd\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 96c48.6 0 88 39.4 88 88s-39.4 88-88 88-88-39.4-88-88 39.4-88 88-88zm0 344c-58.7 0-111.3-26.6-146.5-68.2 18.8-35.4 55.6-59.8 98.5-59.8 2.4 0 4.8.4 7.1 1.1 13 4.2 26.6 6.9 40.9 6.9 14.3 0 28-2.7 40.9-6.9 2.3-.7 4.7-1.1 7.1-1.1 42.9 0 79.7 24.4 98.5 59.8C359.3 421.4 306.7 448 248 448z\"]\n};\nvar faUserClock = {\n prefix: 'fas',\n iconName: 'user-clock',\n icon: [640, 512, [], \"f4fd\", \"M496 224c-79.6 0-144 64.4-144 144s64.4 144 144 144 144-64.4 144-144-64.4-144-144-144zm64 150.3c0 5.3-4.4 9.7-9.7 9.7h-60.6c-5.3 0-9.7-4.4-9.7-9.7v-76.6c0-5.3 4.4-9.7 9.7-9.7h12.6c5.3 0 9.7 4.4 9.7 9.7V352h38.3c5.3 0 9.7 4.4 9.7 9.7v12.6zM320 368c0-27.8 6.7-54.1 18.2-77.5-8-1.5-16.2-2.5-24.6-2.5h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h347.1c-45.3-31.9-75.1-84.5-75.1-144zm-96-112c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128z\"]\n};\nvar faUserCog = {\n prefix: 'fas',\n iconName: 'user-cog',\n icon: [640, 512, [], \"f4fe\", \"M610.5 373.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 400.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm201.2 226.5c-2.3-1.2-4.6-2.6-6.8-3.9l-7.9 4.6c-6 3.4-12.8 5.3-19.6 5.3-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-5.5-17.7 1.9-36.4 17.9-45.7l7.9-4.6c-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-16-9.2-23.4-28-17.9-45.7.9-2.9 2.2-5.8 3.2-8.7-3.8-.3-7.5-1.2-11.4-1.2h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c10.1 0 19.5-3.2 27.2-8.5-1.2-3.8-2-7.7-2-11.8v-9.2z\"]\n};\nvar faUserEdit = {\n prefix: 'fas',\n iconName: 'user-edit',\n icon: [640, 512, [], \"f4ff\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h274.9c-2.4-6.8-3.4-14-2.6-21.3l6.8-60.9 1.2-11.1 7.9-7.9 77.3-77.3c-24.5-27.7-60-45.5-99.9-45.5zm45.3 145.3l-6.8 61c-1.1 10.2 7.5 18.8 17.6 17.6l60.9-6.8 137.9-137.9-71.7-71.7-137.9 137.8zM633 268.9L595.1 231c-9.3-9.3-24.5-9.3-33.8 0l-37.8 37.8-4.1 4.1 71.8 71.7 41.8-41.8c9.3-9.4 9.3-24.5 0-33.9z\"]\n};\nvar faUserFriends = {\n prefix: 'fas',\n iconName: 'user-friends',\n icon: [640, 512, [], \"f500\", \"M192 256c61.9 0 112-50.1 112-112S253.9 32 192 32 80 82.1 80 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C51.6 288 0 339.6 0 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zM480 256c53 0 96-43 96-96s-43-96-96-96-96 43-96 96 43 96 96 96zm48 32h-3.8c-13.9 4.8-28.6 8-44.2 8s-30.3-3.2-44.2-8H432c-20.4 0-39.2 5.9-55.7 15.4 24.4 26.3 39.7 61.2 39.7 99.8v38.4c0 2.2-.5 4.3-.6 6.4H592c26.5 0 48-21.5 48-48 0-61.9-50.1-112-112-112z\"]\n};\nvar faUserGraduate = {\n prefix: 'fas',\n iconName: 'user-graduate',\n icon: [448, 512, [], \"f501\", \"M319.4 320.6L224 416l-95.4-95.4C57.1 323.7 0 382.2 0 454.4v9.6c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-9.6c0-72.2-57.1-130.7-128.6-133.8zM13.6 79.8l6.4 1.5v58.4c-7 4.2-12 11.5-12 20.3 0 8.4 4.6 15.4 11.1 19.7L3.5 242c-1.7 6.9 2.1 14 7.6 14h41.8c5.5 0 9.3-7.1 7.6-14l-15.6-62.3C51.4 175.4 56 168.4 56 160c0-8.8-5-16.1-12-20.3V87.1l66 15.9c-8.6 17.2-14 36.4-14 57 0 70.7 57.3 128 128 128s128-57.3 128-128c0-20.6-5.3-39.8-14-57l96.3-23.2c18.2-4.4 18.2-27.1 0-31.5l-190.4-46c-13-3.1-26.7-3.1-39.7 0L13.6 48.2c-18.1 4.4-18.1 27.2 0 31.6z\"]\n};\nvar faUserInjured = {\n prefix: 'fas',\n iconName: 'user-injured',\n icon: [448, 512, [], \"f728\", \"M277.37 11.98C261.08 4.47 243.11 0 224 0c-53.69 0-99.5 33.13-118.51 80h81.19l90.69-68.02zM342.51 80c-7.9-19.47-20.67-36.2-36.49-49.52L239.99 80h102.52zM224 256c70.69 0 128-57.31 128-128 0-5.48-.95-10.7-1.61-16H97.61c-.67 5.3-1.61 10.52-1.61 16 0 70.69 57.31 128 128 128zM80 299.7V512h128.26l-98.45-221.52A132.835 132.835 0 0 0 80 299.7zM0 464c0 26.51 21.49 48 48 48V320.24C18.88 344.89 0 381.26 0 422.4V464zm256-48h-55.38l42.67 96H256c26.47 0 48-21.53 48-48s-21.53-48-48-48zm57.6-128h-16.71c-22.24 10.18-46.88 16-72.89 16s-50.65-5.82-72.89-16h-7.37l42.67 96H256c44.11 0 80 35.89 80 80 0 18.08-6.26 34.59-16.41 48H400c26.51 0 48-21.49 48-48v-41.6c0-74.23-60.17-134.4-134.4-134.4z\"]\n};\nvar faUserLock = {\n prefix: 'fas',\n iconName: 'user-lock',\n icon: [640, 512, [], \"f502\", \"M224 256A128 128 0 1 0 96 128a128 128 0 0 0 128 128zm96 64a63.08 63.08 0 0 1 8.1-30.5c-4.8-.5-9.5-1.5-14.5-1.5h-16.7a174.08 174.08 0 0 1-145.8 0h-16.7A134.43 134.43 0 0 0 0 422.4V464a48 48 0 0 0 48 48h280.9a63.54 63.54 0 0 1-8.9-32zm288-32h-32v-80a80 80 0 0 0-160 0v80h-32a32 32 0 0 0-32 32v160a32 32 0 0 0 32 32h224a32 32 0 0 0 32-32V320a32 32 0 0 0-32-32zM496 432a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm32-144h-64v-80a32 32 0 0 1 64 0z\"]\n};\nvar faUserMd = {\n prefix: 'fas',\n iconName: 'user-md',\n icon: [448, 512, [], \"f0f0\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zM104 424c0 13.3 10.7 24 24 24s24-10.7 24-24-10.7-24-24-24-24 10.7-24 24zm216-135.4v49c36.5 7.4 64 39.8 64 78.4v41.7c0 7.6-5.4 14.2-12.9 15.7l-32.2 6.4c-4.3.9-8.5-1.9-9.4-6.3l-3.1-15.7c-.9-4.3 1.9-8.6 6.3-9.4l19.3-3.9V416c0-62.8-96-65.1-96 1.9v26.7l19.3 3.9c4.3.9 7.1 5.1 6.3 9.4l-3.1 15.7c-.9 4.3-5.1 7.1-9.4 6.3l-31.2-4.2c-7.9-1.1-13.8-7.8-13.8-15.9V416c0-38.6 27.5-70.9 64-78.4v-45.2c-2.2.7-4.4 1.1-6.6 1.9-18 6.3-37.3 9.8-57.4 9.8s-39.4-3.5-57.4-9.8c-7.4-2.6-14.9-4.2-22.6-5.2v81.6c23.1 6.9 40 28.1 40 53.4 0 30.9-25.1 56-56 56s-56-25.1-56-56c0-25.3 16.9-46.5 40-53.4v-80.4C48.5 301 0 355.8 0 422.4v44.8C0 491.9 20.1 512 44.8 512h358.4c24.7 0 44.8-20.1 44.8-44.8v-44.8c0-72-56.8-130.3-128-133.8z\"]\n};\nvar faUserMinus = {\n prefix: 'fas',\n iconName: 'user-minus',\n icon: [640, 512, [], \"f503\", \"M624 208H432c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h192c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400 48c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z\"]\n};\nvar faUserNinja = {\n prefix: 'fas',\n iconName: 'user-ninja',\n icon: [448, 512, [], \"f504\", \"M325.4 289.2L224 390.6 122.6 289.2C54 295.3 0 352.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-70.2-54-127.1-122.6-133.2zM32 192c27.3 0 51.8-11.5 69.2-29.7 15.1 53.9 64 93.7 122.8 93.7 70.7 0 128-57.3 128-128S294.7 0 224 0c-50.4 0-93.6 29.4-114.5 71.8C92.1 47.8 64 32 32 32c0 33.4 17.1 62.8 43.1 80-26 17.2-43.1 46.6-43.1 80zm144-96h96c17.7 0 32 14.3 32 32H144c0-17.7 14.3-32 32-32z\"]\n};\nvar faUserNurse = {\n prefix: 'fas',\n iconName: 'user-nurse',\n icon: [448, 512, [], \"f82f\", \"M319.41,320,224,415.39,128.59,320C57.1,323.1,0,381.6,0,453.79A58.21,58.21,0,0,0,58.21,512H389.79A58.21,58.21,0,0,0,448,453.79C448,381.6,390.9,323.1,319.41,320ZM224,304A128,128,0,0,0,352,176V65.82a32,32,0,0,0-20.76-30L246.47,4.07a64,64,0,0,0-44.94,0L116.76,35.86A32,32,0,0,0,96,65.82V176A128,128,0,0,0,224,304ZM184,71.67a5,5,0,0,1,5-5h21.67V45a5,5,0,0,1,5-5h16.66a5,5,0,0,1,5,5V66.67H259a5,5,0,0,1,5,5V88.33a5,5,0,0,1-5,5H237.33V115a5,5,0,0,1-5,5H215.67a5,5,0,0,1-5-5V93.33H189a5,5,0,0,1-5-5ZM144,160H304v16a80,80,0,0,1-160,0Z\"]\n};\nvar faUserPlus = {\n prefix: 'fas',\n iconName: 'user-plus',\n icon: [640, 512, [], \"f234\", \"M624 208h-64v-64c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v64h-64c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h64v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-64h64c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400 48c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z\"]\n};\nvar faUserSecret = {\n prefix: 'fas',\n iconName: 'user-secret',\n icon: [448, 512, [], \"f21b\", \"M383.9 308.3l23.9-62.6c4-10.5-3.7-21.7-15-21.7h-58.5c11-18.9 17.8-40.6 17.8-64v-.3c39.2-7.8 64-19.1 64-31.7 0-13.3-27.3-25.1-70.1-33-9.2-32.8-27-65.8-40.6-82.8-9.5-11.9-25.9-15.6-39.5-8.8l-27.6 13.8c-9 4.5-19.6 4.5-28.6 0L182.1 3.4c-13.6-6.8-30-3.1-39.5 8.8-13.5 17-31.4 50-40.6 82.8-42.7 7.9-70 19.7-70 33 0 12.6 24.8 23.9 64 31.7v.3c0 23.4 6.8 45.1 17.8 64H56.3c-11.5 0-19.2 11.7-14.7 22.3l25.8 60.2C27.3 329.8 0 372.7 0 422.4v44.8C0 491.9 20.1 512 44.8 512h358.4c24.7 0 44.8-20.1 44.8-44.8v-44.8c0-48.4-25.8-90.4-64.1-114.1zM176 480l-41.6-192 49.6 32 24 40-32 120zm96 0l-32-120 24-40 49.6-32L272 480zm41.7-298.5c-3.9 11.9-7 24.6-16.5 33.4-10.1 9.3-48 22.4-64-25-2.8-8.4-15.4-8.4-18.3 0-17 50.2-56 32.4-64 25-9.5-8.8-12.7-21.5-16.5-33.4-.8-2.5-6.3-5.7-6.3-5.8v-10.8c28.3 3.6 61 5.8 96 5.8s67.7-2.1 96-5.8v10.8c-.1.1-5.6 3.2-6.4 5.8z\"]\n};\nvar faUserShield = {\n prefix: 'fas',\n iconName: 'user-shield',\n icon: [640, 512, [], \"f505\", \"M622.3 271.1l-115.2-45c-4.1-1.6-12.6-3.7-22.2 0l-115.2 45c-10.7 4.2-17.7 14-17.7 24.9 0 111.6 68.7 188.8 132.9 213.9 9.6 3.7 18 1.6 22.2 0C558.4 489.9 640 420.5 640 296c0-10.9-7-20.7-17.7-24.9zM496 462.4V273.3l95.5 37.3c-5.6 87.1-60.9 135.4-95.5 151.8zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm96 40c0-2.5.8-4.8 1.1-7.2-2.5-.1-4.9-.8-7.5-.8h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c6.8 0 13.3-1.5 19.2-4-54-42.9-99.2-116.7-99.2-212z\"]\n};\nvar faUserSlash = {\n prefix: 'fas',\n iconName: 'user-slash',\n icon: [640, 512, [], \"f506\", \"M633.8 458.1L362.3 248.3C412.1 230.7 448 183.8 448 128 448 57.3 390.7 0 320 0c-67.1 0-121.5 51.8-126.9 117.4L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3zM96 422.4V464c0 26.5 21.5 48 48 48h350.2L207.4 290.3C144.2 301.3 96 356 96 422.4z\"]\n};\nvar faUserTag = {\n prefix: 'fas',\n iconName: 'user-tag',\n icon: [640, 512, [], \"f507\", \"M630.6 364.9l-90.3-90.2c-12-12-28.3-18.7-45.3-18.7h-79.3c-17.7 0-32 14.3-32 32v79.2c0 17 6.7 33.2 18.7 45.2l90.3 90.2c12.5 12.5 32.8 12.5 45.3 0l92.5-92.5c12.6-12.5 12.6-32.7.1-45.2zm-182.8-21c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24c0 13.2-10.7 24-24 24zm-223.8-88c70.7 0 128-57.3 128-128C352 57.3 294.7 0 224 0S96 57.3 96 128c0 70.6 57.3 127.9 128 127.9zm127.8 111.2V294c-12.2-3.6-24.9-6.2-38.2-6.2h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 287.9 0 348.1 0 422.3v41.6c0 26.5 21.5 48 48 48h352c15.5 0 29.1-7.5 37.9-18.9l-58-58c-18.1-18.1-28.1-42.2-28.1-67.9z\"]\n};\nvar faUserTie = {\n prefix: 'fas',\n iconName: 'user-tie',\n icon: [448, 512, [], \"f508\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm95.8 32.6L272 480l-32-136 32-56h-96l32 56-32 136-47.8-191.4C56.9 292 0 350.3 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-72.1-56.9-130.4-128.2-133.8z\"]\n};\nvar faUserTimes = {\n prefix: 'fas',\n iconName: 'user-times',\n icon: [640, 512, [], \"f235\", \"M589.6 240l45.6-45.6c6.3-6.3 6.3-16.5 0-22.8l-22.8-22.8c-6.3-6.3-16.5-6.3-22.8 0L544 194.4l-45.6-45.6c-6.3-6.3-16.5-6.3-22.8 0l-22.8 22.8c-6.3 6.3-6.3 16.5 0 22.8l45.6 45.6-45.6 45.6c-6.3 6.3-6.3 16.5 0 22.8l22.8 22.8c6.3 6.3 16.5 6.3 22.8 0l45.6-45.6 45.6 45.6c6.3 6.3 16.5 6.3 22.8 0l22.8-22.8c6.3-6.3 6.3-16.5 0-22.8L589.6 240zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z\"]\n};\nvar faUsers = {\n prefix: 'fas',\n iconName: 'users',\n icon: [640, 512, [], \"f0c0\", \"M96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm448 0c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm32 32h-64c-17.6 0-33.5 7.1-45.1 18.6 40.3 22.1 68.9 62 75.1 109.4h66c17.7 0 32-14.3 32-32v-32c0-35.3-28.7-64-64-64zm-256 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zm-223.7-13.4C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z\"]\n};\nvar faUsersCog = {\n prefix: 'fas',\n iconName: 'users-cog',\n icon: [640, 512, [], \"f509\", \"M610.5 341.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 368.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm224 32c1.9 0 3.7-.5 5.6-.6 8.3-21.7 20.5-42.1 36.3-59.2 7.4-8 17.9-12.6 28.9-12.6 6.9 0 13.7 1.8 19.6 5.3l7.9 4.6c.8-.5 1.6-.9 2.4-1.4 7-14.6 11.2-30.8 11.2-48 0-61.9-50.1-112-112-112S208 82.1 208 144c0 61.9 50.1 112 112 112zm105.2 194.5c-2.3-1.2-4.6-2.6-6.8-3.9-8.2 4.8-15.3 9.8-27.5 9.8-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-10.7-34.5 24.9-49.7 25.8-50.3-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-3.8-2.2-7-5-9.8-8.1-3.3.2-6.5.6-9.8.6-24.6 0-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h255.4c-3.7-6-6.2-12.8-6.2-20.3v-9.2zM173.1 274.6C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z\"]\n};\nvar faUsersSlash = {\n prefix: 'fas',\n iconName: 'users-slash',\n icon: [640, 512, [], \"e073\", \"M132.65,212.32,36.21,137.78A63.4,63.4,0,0,0,32,160a63.84,63.84,0,0,0,100.65,52.32Zm40.44,62.28A63.79,63.79,0,0,0,128,256H64A64.06,64.06,0,0,0,0,320v32a32,32,0,0,0,32,32H97.91A146.62,146.62,0,0,1,173.09,274.6ZM544,224a64,64,0,1,0-64-64A64.06,64.06,0,0,0,544,224ZM500.56,355.11a114.24,114.24,0,0,0-84.47-65.28L361,247.23c41.46-16.3,71-55.92,71-103.23A111.93,111.93,0,0,0,320,32c-57.14,0-103.69,42.83-110.6,98.08L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.46A16,16,0,0,0,6.18,53.91L594.53,508.63A16,16,0,0,0,617,505.82l19.64-25.27a16,16,0,0,0-2.81-22.45ZM128,403.21V432a48,48,0,0,0,48,48H464a47.45,47.45,0,0,0,12.57-1.87L232,289.13C173.74,294.83,128,343.42,128,403.21ZM576,256H512a63.79,63.79,0,0,0-45.09,18.6A146.29,146.29,0,0,1,542,384h66a32,32,0,0,0,32-32V320A64.06,64.06,0,0,0,576,256Z\"]\n};\nvar faUtensilSpoon = {\n prefix: 'fas',\n iconName: 'utensil-spoon',\n icon: [512, 512, [], \"f2e5\", \"M480.1 31.9c-55-55.1-164.9-34.5-227.8 28.5-49.3 49.3-55.1 110-28.8 160.4L9 413.2c-11.6 10.5-12.1 28.5-1 39.5L59.3 504c11 11 29.1 10.5 39.5-1.1l192.4-214.4c50.4 26.3 111.1 20.5 160.4-28.8 63-62.9 83.6-172.8 28.5-227.8z\"]\n};\nvar faUtensils = {\n prefix: 'fas',\n iconName: 'utensils',\n icon: [416, 512, [], \"f2e7\", \"M207.9 15.2c.8 4.7 16.1 94.5 16.1 128.8 0 52.3-27.8 89.6-68.9 104.6L168 486.7c.7 13.7-10.2 25.3-24 25.3H80c-13.7 0-24.7-11.5-24-25.3l12.9-238.1C27.7 233.6 0 196.2 0 144 0 109.6 15.3 19.9 16.1 15.2 19.3-5.1 61.4-5.4 64 16.3v141.2c1.3 3.4 15.1 3.2 16 0 1.4-25.3 7.9-139.2 8-141.8 3.3-20.8 44.7-20.8 47.9 0 .2 2.7 6.6 116.5 8 141.8.9 3.2 14.8 3.4 16 0V16.3c2.6-21.6 44.8-21.4 48-1.1zm119.2 285.7l-15 185.1c-1.2 14 9.9 26 23.9 26h56c13.3 0 24-10.7 24-24V24c0-13.2-10.7-24-24-24-82.5 0-221.4 178.5-64.9 300.9z\"]\n};\nvar faVectorSquare = {\n prefix: 'fas',\n iconName: 'vector-square',\n icon: [512, 512, [], \"f5cb\", \"M512 128V32c0-17.67-14.33-32-32-32h-96c-17.67 0-32 14.33-32 32H160c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v96c0 17.67 14.33 32 32 32v192c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32h192c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32V160c17.67 0 32-14.33 32-32zm-96-64h32v32h-32V64zM64 64h32v32H64V64zm32 384H64v-32h32v32zm352 0h-32v-32h32v32zm-32-96h-32c-17.67 0-32 14.33-32 32v32H160v-32c0-17.67-14.33-32-32-32H96V160h32c17.67 0 32-14.33 32-32V96h192v32c0 17.67 14.33 32 32 32h32v192z\"]\n};\nvar faVenus = {\n prefix: 'fas',\n iconName: 'venus',\n icon: [288, 512, [], \"f221\", \"M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V368H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80z\"]\n};\nvar faVenusDouble = {\n prefix: 'fas',\n iconName: 'venus-double',\n icon: [512, 512, [], \"f226\", \"M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V368H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80zm336 140.4V368h36c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-36v36c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-36h-36c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h36v-51.6c-21.2-4.8-40.6-14.3-57.2-27.3 14-16.7 25-36 32.1-57.1 14.5 14.8 34.7 24 57.1 24 44.1 0 80-35.9 80-80s-35.9-80-80-80c-22.3 0-42.6 9.2-57.1 24-7.1-21.1-18-40.4-32.1-57.1C303.4 43.6 334.3 32 368 32c79.5 0 144 64.5 144 144 0 68.5-47.9 125.9-112 140.4z\"]\n};\nvar faVenusMars = {\n prefix: 'fas',\n iconName: 'venus-mars',\n icon: [576, 512, [], \"f228\", \"M564 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7C422.5 72.1 396.2 64 368 64c-33.7 0-64.6 11.6-89.2 30.9 14 16.7 25 36 32.1 57.1 14.5-14.8 34.7-24 57.1-24 44.1 0 80 35.9 80 80s-35.9 80-80 80c-22.3 0-42.6-9.2-57.1-24-7.1 21.1-18 40.4-32.1 57.1 24.5 19.4 55.5 30.9 89.2 30.9 79.5 0 144-64.5 144-144 0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.4 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12V12c0-6.6-5.4-12-12-12zM144 64C64.5 64 0 128.5 0 208c0 68.5 47.9 125.9 112 140.4V400H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.6 112-71.9 112-140.4 0-79.5-64.5-144-144-144zm0 224c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faVest = {\n prefix: 'fas',\n iconName: 'vest',\n icon: [448, 512, [], \"e085\", \"M437.252,239.877,384,160V32A32,32,0,0,0,352,0H320a24.021,24.021,0,0,0-13.312,4.031l-25,16.672a103.794,103.794,0,0,1-115.376,0l-25-16.672A24.021,24.021,0,0,0,128,0H96A32,32,0,0,0,64,32V160L10.748,239.877A64,64,0,0,0,0,275.377V480a32,32,0,0,0,32,32H192V288a31.987,31.987,0,0,1,1.643-10.119L207.135,237.4,150.188,66.564A151.518,151.518,0,0,0,224,86.234a151.55,151.55,0,0,0,73.812-19.672L224,288V512H416a32,32,0,0,0,32-32V275.377A64,64,0,0,0,437.252,239.877ZM131.312,371.312l-48,48a16,16,0,0,1-22.624-22.624l48-48a16,16,0,0,1,22.624,22.624Zm256,48a15.992,15.992,0,0,1-22.624,0l-48-48a16,16,0,0,1,22.624-22.624l48,48A15.993,15.993,0,0,1,387.312,419.312Z\"]\n};\nvar faVestPatches = {\n prefix: 'fas',\n iconName: 'vest-patches',\n icon: [448, 512, [], \"e086\", \"M437.252,239.877,384,160V32A32,32,0,0,0,352,0H320a23.982,23.982,0,0,0-13.312,4.031l-25,16.672a103.794,103.794,0,0,1-115.376,0l-25-16.672A23.982,23.982,0,0,0,128,0H96A32,32,0,0,0,64,32V160L10.748,239.877A64,64,0,0,0,0,275.377V480a32,32,0,0,0,32,32H192V288a31.987,31.987,0,0,1,1.643-10.119L207.135,237.4,150.188,66.561A151.579,151.579,0,0,0,224,86.234a151.565,151.565,0,0,0,73.811-19.668L224,288V512H416a32,32,0,0,0,32-32V275.377A64,64,0,0,0,437.252,239.877ZM63.5,272.484a12.01,12.01,0,0,1,17-16.968l15.5,15.5,15.5-15.5a12.01,12.01,0,0,1,17,16.968L112.984,288,128.5,303.516a12.01,12.01,0,0,1-17,16.968L96,304.984l-15.5,15.5a12.01,12.01,0,0,1-17-16.968L79.016,288ZM96,456a40,40,0,1,1,40-40A40,40,0,0,1,96,456ZM359.227,335.785,310.7,336a6.671,6.671,0,0,1-6.7-6.7l.215-48.574A24.987,24.987,0,0,1,331.43,256.1c12.789,1.162,22.129,12.619,22.056,25.419l-.037,5.057,5.051-.037c12.826-.035,24.236,9.275,25.4,22.076A24.948,24.948,0,0,1,359.227,335.785Z\"]\n};\nvar faVial = {\n prefix: 'fas',\n iconName: 'vial',\n icon: [480, 512, [], \"f492\", \"M477.7 186.1L309.5 18.3c-3.1-3.1-8.2-3.1-11.3 0l-34 33.9c-3.1 3.1-3.1 8.2 0 11.3l11.2 11.1L33 316.5c-38.8 38.7-45.1 102-9.4 143.5 20.6 24 49.5 36 78.4 35.9 26.4 0 52.8-10 72.9-30.1l246.3-245.7 11.2 11.1c3.1 3.1 8.2 3.1 11.3 0l34-33.9c3.1-3 3.1-8.1 0-11.2zM318 256H161l148-147.7 78.5 78.3L318 256z\"]\n};\nvar faVials = {\n prefix: 'fas',\n iconName: 'vials',\n icon: [640, 512, [], \"f493\", \"M72 64h24v240c0 44.1 35.9 80 80 80s80-35.9 80-80V64h24c4.4 0 8-3.6 8-8V8c0-4.4-3.6-8-8-8H72c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm72 0h64v96h-64V64zm480 384H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM360 64h24v240c0 44.1 35.9 80 80 80s80-35.9 80-80V64h24c4.4 0 8-3.6 8-8V8c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm72 0h64v96h-64V64z\"]\n};\nvar faVideo = {\n prefix: 'fas',\n iconName: 'video',\n icon: [576, 512, [], \"f03d\", \"M336.2 64H47.8C21.4 64 0 85.4 0 111.8v288.4C0 426.6 21.4 448 47.8 448h288.4c26.4 0 47.8-21.4 47.8-47.8V111.8c0-26.4-21.4-47.8-47.8-47.8zm189.4 37.7L416 177.3v157.4l109.6 75.5c21.2 14.6 50.4-.3 50.4-25.8V127.5c0-25.4-29.1-40.4-50.4-25.8z\"]\n};\nvar faVideoSlash = {\n prefix: 'fas',\n iconName: 'video-slash',\n icon: [640, 512, [], \"f4e2\", \"M633.8 458.1l-55-42.5c15.4-1.4 29.2-13.7 29.2-31.1v-257c0-25.5-29.1-40.4-50.4-25.8L448 177.3v137.2l-32-24.7v-178c0-26.4-21.4-47.8-47.8-47.8H123.9L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4L42.7 82 416 370.6l178.5 138c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.5-6.9 4.2-17-2.8-22.4zM32 400.2c0 26.4 21.4 47.8 47.8 47.8h288.4c11.2 0 21.4-4 29.6-10.5L32 154.7v245.5z\"]\n};\nvar faVihara = {\n prefix: 'fas',\n iconName: 'vihara',\n icon: [640, 512, [], \"f6a7\", \"M632.88 400.71L544 352v-64l55.16-17.69c11.79-5.9 11.79-22.72 0-28.62L480 192v-64l27.31-16.3c7.72-7.72 5.61-20.74-4.16-25.62L320 0 136.85 86.07c-9.77 4.88-11.88 17.9-4.16 25.62L160 128v64L40.84 241.69c-11.79 5.9-11.79 22.72 0 28.62L96 288v64L7.12 400.71c-5.42 3.62-7.7 9.63-7 15.29.62 5.01 3.57 9.75 8.72 12.33L64 448v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h160v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h160v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48l55.15-19.67c5.16-2.58 8.1-7.32 8.72-12.33.71-5.67-1.57-11.68-6.99-15.29zM224 128h192v64H224v-64zm-64 224v-64h320v64H160z\"]\n};\nvar faVirus = {\n prefix: 'fas',\n iconName: 'virus',\n icon: [512, 512, [], \"e074\", \"M483.55,227.55H462c-50.68,0-76.07-61.27-40.23-97.11L437,115.19A28.44,28.44,0,0,0,396.8,75L381.56,90.22c-35.84,35.83-97.11,10.45-97.11-40.23V28.44a28.45,28.45,0,0,0-56.9,0V50c0,50.68-61.27,76.06-97.11,40.23L115.2,75A28.44,28.44,0,0,0,75,115.19l15.25,15.25c35.84,35.84,10.45,97.11-40.23,97.11H28.45a28.45,28.45,0,1,0,0,56.89H50c50.68,0,76.07,61.28,40.23,97.12L75,396.8A28.45,28.45,0,0,0,115.2,437l15.24-15.25c35.84-35.84,97.11-10.45,97.11,40.23v21.54a28.45,28.45,0,0,0,56.9,0V462c0-50.68,61.27-76.07,97.11-40.23L396.8,437A28.45,28.45,0,0,0,437,396.8l-15.25-15.24c-35.84-35.84-10.45-97.12,40.23-97.12h21.54a28.45,28.45,0,1,0,0-56.89ZM224,272a48,48,0,1,1,48-48A48,48,0,0,1,224,272Zm80,56a24,24,0,1,1,24-24A24,24,0,0,1,304,328Z\"]\n};\nvar faVirusSlash = {\n prefix: 'fas',\n iconName: 'virus-slash',\n icon: [640, 512, [], \"e075\", \"M114,227.6H92.4C76.7,227.6,64,240.3,64,256s12.7,28.4,28.4,28.4H114c50.7,0,76.1,61.3,40.2,97.1L139,396.8 c-11.5,10.7-12.2,28.7-1.6,40.2s28.7,12.2,40.2,1.6c0.5-0.5,1.1-1,1.6-1.6l15.2-15.2c35.8-35.8,97.1-10.5,97.1,40.2v21.5 c0,15.7,12.8,28.4,28.5,28.4c15.7,0,28.4-12.7,28.4-28.4V462c0-26.6,17-45.9,38.2-53.4l-244.5-189 C133.7,224.7,123.9,227.5,114,227.6z M617,505.8l19.6-25.3c5.4-7,4.2-17-2.8-22.5L470.6,332c4.2-25.4,24.9-47.5,55.4-47.5h21.5 c15.7,0,28.4-12.7,28.4-28.4s-12.7-28.4-28.4-28.4H526c-50.7,0-76.1-61.3-40.2-97.1l15.2-15.3c10.7-11.5,10-29.5-1.6-40.2 c-10.9-10.1-27.7-10.1-38.6,0l-15.2,15.2c-35.8,35.8-97.1,10.5-97.1-40.2V28.5C348.4,12.7,335.7,0,320,0 c-15.7,0-28.4,12.7-28.4,28.4V50c0,50.7-61.3,76.1-97.1,40.2L179.2,75c-11.1-11.1-29.4-10.6-40.5,0.5L45.5,3.4 c-7-5.4-17-4.2-22.5,2.8L3.4,31.5c-5.4,7-4.2,17,2.8,22.5l588.4,454.7C601.5,514.1,611.6,512.8,617,505.8z M335.4,227.5l-62.9-48.6 c4.9-1.8,10.2-2.8,15.4-2.9c26.5,0,48,21.5,48,48C336,225.2,335.5,226.3,335.4,227.5z\"]\n};\nvar faViruses = {\n prefix: 'fas',\n iconName: 'viruses',\n icon: [640, 512, [], \"e076\", \"M624,352H611.88c-28.51,0-42.79-34.47-22.63-54.63l8.58-8.57a16,16,0,1,0-22.63-22.63l-8.57,8.58C546.47,294.91,512,280.63,512,252.12V240a16,16,0,0,0-32,0v12.12c0,28.51-34.47,42.79-54.63,22.63l-8.57-8.58a16,16,0,0,0-22.63,22.63l8.58,8.57c20.16,20.16,5.88,54.63-22.63,54.63H368a16,16,0,0,0,0,32h12.12c28.51,0,42.79,34.47,22.63,54.63l-8.58,8.57a16,16,0,1,0,22.63,22.63l8.57-8.58c20.16-20.16,54.63-5.88,54.63,22.63V496a16,16,0,0,0,32,0V483.88c0-28.51,34.47-42.79,54.63-22.63l8.57,8.58a16,16,0,1,0,22.63-22.63l-8.58-8.57C569.09,418.47,583.37,384,611.88,384H624a16,16,0,0,0,0-32ZM480,384a32,32,0,1,1,32-32A32,32,0,0,1,480,384ZM346.51,213.33h16.16a21.33,21.33,0,0,0,0-42.66H346.51c-38,0-57.05-46-30.17-72.84l11.43-11.44A21.33,21.33,0,0,0,297.6,56.23L286.17,67.66c-26.88,26.88-72.84,7.85-72.84-30.17V21.33a21.33,21.33,0,0,0-42.66,0V37.49c0,38-46,57.05-72.84,30.17L86.4,56.23A21.33,21.33,0,0,0,56.23,86.39L67.66,97.83c26.88,26.88,7.85,72.84-30.17,72.84H21.33a21.33,21.33,0,0,0,0,42.66H37.49c38,0,57.05,46,30.17,72.84L56.23,297.6A21.33,21.33,0,1,0,86.4,327.77l11.43-11.43c26.88-26.88,72.84-7.85,72.84,30.17v16.16a21.33,21.33,0,0,0,42.66,0V346.51c0-38,46-57.05,72.84-30.17l11.43,11.43a21.33,21.33,0,0,0,30.17-30.17l-11.43-11.43C289.46,259.29,308.49,213.33,346.51,213.33ZM160,192a32,32,0,1,1,32-32A32,32,0,0,1,160,192Zm80,32a16,16,0,1,1,16-16A16,16,0,0,1,240,224Z\"]\n};\nvar faVoicemail = {\n prefix: 'fas',\n iconName: 'voicemail',\n icon: [640, 512, [], \"f897\", \"M496 128a144 144 0 0 0-119.74 224H263.74A144 144 0 1 0 144 416h352a144 144 0 0 0 0-288zM64 272a80 80 0 1 1 80 80 80 80 0 0 1-80-80zm432 80a80 80 0 1 1 80-80 80 80 0 0 1-80 80z\"]\n};\nvar faVolleyballBall = {\n prefix: 'fas',\n iconName: 'volleyball-ball',\n icon: [512, 512, [], \"f45f\", \"M231.39 243.48a285.56 285.56 0 0 0-22.7-105.7c-90.8 42.4-157.5 122.4-180.3 216.8a249 249 0 0 0 56.9 81.1 333.87 333.87 0 0 1 146.1-192.2zm-36.9-134.4a284.23 284.23 0 0 0-57.4-70.7c-91 49.8-144.8 152.9-125 262.2 33.4-83.1 98.4-152 182.4-191.5zm187.6 165.1c8.6-99.8-27.3-197.5-97.5-264.4-14.7-1.7-51.6-5.5-98.9 8.5A333.87 333.87 0 0 1 279.19 241a285 285 0 0 0 102.9 33.18zm-124.7 9.5a286.33 286.33 0 0 0-80.2 72.6c82 57.3 184.5 75.1 277.5 47.8a247.15 247.15 0 0 0 42.2-89.9 336.1 336.1 0 0 1-80.9 10.4c-54.6-.1-108.9-14.1-158.6-40.9zm-98.3 99.7c-15.2 26-25.7 54.4-32.1 84.2a247.07 247.07 0 0 0 289-22.1c-112.9 16.1-203.3-24.8-256.9-62.1zm180.3-360.6c55.3 70.4 82.5 161.2 74.6 253.6a286.59 286.59 0 0 0 89.7-14.2c0-2 .3-4 .3-6 0-107.8-68.7-199.1-164.6-233.4z\"]\n};\nvar faVolumeDown = {\n prefix: 'fas',\n iconName: 'volume-down',\n icon: [384, 512, [], \"f027\", \"M215.03 72.04L126.06 161H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V89.02c0-21.47-25.96-31.98-40.97-16.98zm123.2 108.08c-11.58-6.33-26.19-2.16-32.61 9.45-6.39 11.61-2.16 26.2 9.45 32.61C327.98 229.28 336 242.62 336 257c0 14.38-8.02 27.72-20.92 34.81-11.61 6.41-15.84 21-9.45 32.61 6.43 11.66 21.05 15.8 32.61 9.45 28.23-15.55 45.77-45 45.77-76.88s-17.54-61.32-45.78-76.87z\"]\n};\nvar faVolumeMute = {\n prefix: 'fas',\n iconName: 'volume-mute',\n icon: [512, 512, [], \"f6a9\", \"M215.03 71.05L126.06 160H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V88.02c0-21.46-25.96-31.98-40.97-16.97zM461.64 256l45.64-45.64c6.3-6.3 6.3-16.52 0-22.82l-22.82-22.82c-6.3-6.3-16.52-6.3-22.82 0L416 210.36l-45.64-45.64c-6.3-6.3-16.52-6.3-22.82 0l-22.82 22.82c-6.3 6.3-6.3 16.52 0 22.82L370.36 256l-45.63 45.63c-6.3 6.3-6.3 16.52 0 22.82l22.82 22.82c6.3 6.3 16.52 6.3 22.82 0L416 301.64l45.64 45.64c6.3 6.3 16.52 6.3 22.82 0l22.82-22.82c6.3-6.3 6.3-16.52 0-22.82L461.64 256z\"]\n};\nvar faVolumeOff = {\n prefix: 'fas',\n iconName: 'volume-off',\n icon: [256, 512, [], \"f026\", \"M215 71l-89 89H24a24 24 0 0 0-24 24v144a24 24 0 0 0 24 24h102.06L215 441c15 15 41 4.47 41-17V88c0-21.47-26-32-41-17z\"]\n};\nvar faVolumeUp = {\n prefix: 'fas',\n iconName: 'volume-up',\n icon: [576, 512, [], \"f028\", \"M215.03 71.05L126.06 160H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V88.02c0-21.46-25.96-31.98-40.97-16.97zm233.32-51.08c-11.17-7.33-26.18-4.24-33.51 6.95-7.34 11.17-4.22 26.18 6.95 33.51 66.27 43.49 105.82 116.6 105.82 195.58 0 78.98-39.55 152.09-105.82 195.58-11.17 7.32-14.29 22.34-6.95 33.5 7.04 10.71 21.93 14.56 33.51 6.95C528.27 439.58 576 351.33 576 256S528.27 72.43 448.35 19.97zM480 256c0-63.53-32.06-121.94-85.77-156.24-11.19-7.14-26.03-3.82-33.12 7.46s-3.78 26.21 7.41 33.36C408.27 165.97 432 209.11 432 256s-23.73 90.03-63.48 115.42c-11.19 7.14-14.5 22.07-7.41 33.36 6.51 10.36 21.12 15.14 33.12 7.46C447.94 377.94 480 319.54 480 256zm-141.77-76.87c-11.58-6.33-26.19-2.16-32.61 9.45-6.39 11.61-2.16 26.2 9.45 32.61C327.98 228.28 336 241.63 336 256c0 14.38-8.02 27.72-20.92 34.81-11.61 6.41-15.84 21-9.45 32.61 6.43 11.66 21.05 15.8 32.61 9.45 28.23-15.55 45.77-45 45.77-76.88s-17.54-61.32-45.78-76.86z\"]\n};\nvar faVoteYea = {\n prefix: 'fas',\n iconName: 'vote-yea',\n icon: [640, 512, [], \"f772\", \"M608 320h-64v64h22.4c5.3 0 9.6 3.6 9.6 8v16c0 4.4-4.3 8-9.6 8H73.6c-5.3 0-9.6-3.6-9.6-8v-16c0-4.4 4.3-8 9.6-8H96v-64H32c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32h576c17.7 0 32-14.3 32-32v-96c0-17.7-14.3-32-32-32zm-96 64V64.3c0-17.9-14.5-32.3-32.3-32.3H160.4C142.5 32 128 46.5 128 64.3V384h384zM211.2 202l25.5-25.3c4.2-4.2 11-4.2 15.2.1l41.3 41.6 95.2-94.4c4.2-4.2 11-4.2 15.2.1l25.3 25.5c4.2 4.2 4.2 11-.1 15.2L300.5 292c-4.2 4.2-11 4.2-15.2-.1l-74.1-74.7c-4.3-4.2-4.2-11 0-15.2z\"]\n};\nvar faVrCardboard = {\n prefix: 'fas',\n iconName: 'vr-cardboard',\n icon: [640, 512, [], \"f729\", \"M608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h160.22c25.19 0 48.03-14.77 58.36-37.74l27.74-61.64C286.21 331.08 302.35 320 320 320s33.79 11.08 41.68 28.62l27.74 61.64C399.75 433.23 422.6 448 447.78 448H608c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM160 304c-35.35 0-64-28.65-64-64s28.65-64 64-64 64 28.65 64 64-28.65 64-64 64zm320 0c-35.35 0-64-28.65-64-64s28.65-64 64-64 64 28.65 64 64-28.65 64-64 64z\"]\n};\nvar faWalking = {\n prefix: 'fas',\n iconName: 'walking',\n icon: [320, 512, [], \"f554\", \"M208 96c26.5 0 48-21.5 48-48S234.5 0 208 0s-48 21.5-48 48 21.5 48 48 48zm94.5 149.1l-23.3-11.8-9.7-29.4c-14.7-44.6-55.7-75.8-102.2-75.9-36-.1-55.9 10.1-93.3 25.2-21.6 8.7-39.3 25.2-49.7 46.2L17.6 213c-7.8 15.8-1.5 35 14.2 42.9 15.6 7.9 34.6 1.5 42.5-14.3L81 228c3.5-7 9.3-12.5 16.5-15.4l26.8-10.8-15.2 60.7c-5.2 20.8.4 42.9 14.9 58.8l59.9 65.4c7.2 7.9 12.3 17.4 14.9 27.7l18.3 73.3c4.3 17.1 21.7 27.6 38.8 23.3 17.1-4.3 27.6-21.7 23.3-38.8l-22.2-89c-2.6-10.3-7.7-19.9-14.9-27.7l-45.5-49.7 17.2-68.7 5.5 16.5c5.3 16.1 16.7 29.4 31.7 37l23.3 11.8c15.6 7.9 34.6 1.5 42.5-14.3 7.7-15.7 1.4-35.1-14.3-43zM73.6 385.8c-3.2 8.1-8 15.4-14.2 21.5l-50 50.1c-12.5 12.5-12.5 32.8 0 45.3s32.7 12.5 45.2 0l59.4-59.4c6.1-6.1 10.9-13.4 14.2-21.5l13.5-33.8c-55.3-60.3-38.7-41.8-47.4-53.7l-20.7 51.5z\"]\n};\nvar faWallet = {\n prefix: 'fas',\n iconName: 'wallet',\n icon: [512, 512, [], \"f555\", \"M461.2 128H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h384c8.84 0 16-7.16 16-16 0-26.51-21.49-48-48-48H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h397.2c28.02 0 50.8-21.53 50.8-48V176c0-26.47-22.78-48-50.8-48zM416 336c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faWarehouse = {\n prefix: 'fas',\n iconName: 'warehouse',\n icon: [640, 512, [], \"f494\", \"M504 352H136.4c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8H504c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm0 96H136.1c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8h368c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm0-192H136.6c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8H504c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm106.5-139L338.4 3.7a48.15 48.15 0 0 0-36.9 0L29.5 117C11.7 124.5 0 141.9 0 161.3V504c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8V256c0-17.6 14.6-32 32.6-32h382.8c18 0 32.6 14.4 32.6 32v248c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8V161.3c0-19.4-11.7-36.8-29.5-44.3z\"]\n};\nvar faWater = {\n prefix: 'fas',\n iconName: 'water',\n icon: [576, 512, [], \"f773\", \"M562.1 383.9c-21.5-2.4-42.1-10.5-57.9-22.9-14.1-11.1-34.2-11.3-48.2 0-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3zm0-144c-21.5-2.4-42.1-10.5-57.9-22.9-14.1-11.1-34.2-11.3-48.2 0-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3zm0-144C540.6 93.4 520 85.4 504.2 73 490.1 61.9 470 61.7 456 73c-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3z\"]\n};\nvar faWaveSquare = {\n prefix: 'fas',\n iconName: 'wave-square',\n icon: [640, 512, [], \"f83e\", \"M476 480H324a36 36 0 0 1-36-36V96h-96v156a36 36 0 0 1-36 36H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h112V68a36 36 0 0 1 36-36h152a36 36 0 0 1 36 36v348h96V260a36 36 0 0 1 36-36h140a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H512v156a36 36 0 0 1-36 36z\"]\n};\nvar faWeight = {\n prefix: 'fas',\n iconName: 'weight',\n icon: [512, 512, [], \"f496\", \"M448 64h-25.98C438.44 92.28 448 125.01 448 160c0 105.87-86.13 192-192 192S64 265.87 64 160c0-34.99 9.56-67.72 25.98-96H64C28.71 64 0 92.71 0 128v320c0 35.29 28.71 64 64 64h384c35.29 0 64-28.71 64-64V128c0-35.29-28.71-64-64-64zM256 320c88.37 0 160-71.63 160-160S344.37 0 256 0 96 71.63 96 160s71.63 160 160 160zm-.3-151.94l33.58-78.36c3.5-8.17 12.94-11.92 21.03-8.41 8.12 3.48 11.88 12.89 8.41 21l-33.67 78.55C291.73 188 296 197.45 296 208c0 22.09-17.91 40-40 40s-40-17.91-40-40c0-21.98 17.76-39.77 39.7-39.94z\"]\n};\nvar faWeightHanging = {\n prefix: 'fas',\n iconName: 'weight-hanging',\n icon: [512, 512, [], \"f5cd\", \"M510.28 445.86l-73.03-292.13c-3.8-15.19-16.44-25.72-30.87-25.72h-60.25c3.57-10.05 5.88-20.72 5.88-32 0-53.02-42.98-96-96-96s-96 42.98-96 96c0 11.28 2.3 21.95 5.88 32h-60.25c-14.43 0-27.08 10.54-30.87 25.72L1.72 445.86C-6.61 479.17 16.38 512 48.03 512h415.95c31.64 0 54.63-32.83 46.3-66.14zM256 128c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32z\"]\n};\nvar faWheelchair = {\n prefix: 'fas',\n iconName: 'wheelchair',\n icon: [512, 512, [], \"f193\", \"M496.101 385.669l14.227 28.663c3.929 7.915.697 17.516-7.218 21.445l-65.465 32.886c-16.049 7.967-35.556 1.194-43.189-15.055L331.679 320H192c-15.925 0-29.426-11.71-31.679-27.475C126.433 55.308 128.38 70.044 128 64c0-36.358 30.318-65.635 67.052-63.929 33.271 1.545 60.048 28.905 60.925 62.201.868 32.933-23.152 60.423-54.608 65.039l4.67 32.69H336c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16H215.182l4.572 32H352a32 32 0 0 1 28.962 18.392L438.477 396.8l36.178-18.349c7.915-3.929 17.517-.697 21.446 7.218zM311.358 352h-24.506c-7.788 54.204-54.528 96-110.852 96-61.757 0-112-50.243-112-112 0-41.505 22.694-77.809 56.324-97.156-3.712-25.965-6.844-47.86-9.488-66.333C45.956 198.464 0 261.963 0 336c0 97.047 78.953 176 176 176 71.87 0 133.806-43.308 161.11-105.192L311.358 352z\"]\n};\nvar faWifi = {\n prefix: 'fas',\n iconName: 'wifi',\n icon: [640, 512, [], \"f1eb\", \"M634.91 154.88C457.74-8.99 182.19-8.93 5.09 154.88c-6.66 6.16-6.79 16.59-.35 22.98l34.24 33.97c6.14 6.1 16.02 6.23 22.4.38 145.92-133.68 371.3-133.71 517.25 0 6.38 5.85 16.26 5.71 22.4-.38l34.24-33.97c6.43-6.39 6.3-16.82-.36-22.98zM320 352c-35.35 0-64 28.65-64 64s28.65 64 64 64 64-28.65 64-64-28.65-64-64-64zm202.67-83.59c-115.26-101.93-290.21-101.82-405.34 0-6.9 6.1-7.12 16.69-.57 23.15l34.44 33.99c6 5.92 15.66 6.32 22.05.8 83.95-72.57 209.74-72.41 293.49 0 6.39 5.52 16.05 5.13 22.05-.8l34.44-33.99c6.56-6.46 6.33-17.06-.56-23.15z\"]\n};\nvar faWind = {\n prefix: 'fas',\n iconName: 'wind',\n icon: [512, 512, [], \"f72e\", \"M156.7 256H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h142.2c15.9 0 30.8 10.9 33.4 26.6 3.3 20-12.1 37.4-31.6 37.4-14.1 0-26.1-9.2-30.4-21.9-2.1-6.3-8.6-10.1-15.2-10.1H81.6c-9.8 0-17.7 8.8-15.9 18.4 8.6 44.1 47.6 77.6 94.2 77.6 57.1 0 102.7-50.1 95.2-108.6C249 291 205.4 256 156.7 256zM16 224h336c59.7 0 106.8-54.8 93.8-116.7-7.6-36.2-36.9-65.5-73.1-73.1-55.4-11.6-105.1 24.9-114.9 75.5-1.9 9.6 6.1 18.3 15.8 18.3h32.8c6.7 0 13.1-3.8 15.2-10.1C325.9 105.2 337.9 96 352 96c19.4 0 34.9 17.4 31.6 37.4-2.6 15.7-17.4 26.6-33.4 26.6H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16zm384 32H243.7c19.3 16.6 33.2 38.8 39.8 64H400c26.5 0 48 21.5 48 48s-21.5 48-48 48c-17.9 0-33.3-9.9-41.6-24.4-2.9-5-8.7-7.6-14.5-7.6h-33.8c-10.9 0-19 10.8-15.3 21.1 17.8 50.6 70.5 84.8 129.4 72.3 41.2-8.7 75.1-41.6 84.7-82.7C526 321.5 470.5 256 400 256z\"]\n};\nvar faWindowClose = {\n prefix: 'fas',\n iconName: 'window-close',\n icon: [512, 512, [], \"f410\", \"M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-83.6 290.5c4.8 4.8 4.8 12.6 0 17.4l-40.5 40.5c-4.8 4.8-12.6 4.8-17.4 0L256 313.3l-66.5 67.1c-4.8 4.8-12.6 4.8-17.4 0l-40.5-40.5c-4.8-4.8-4.8-12.6 0-17.4l67.1-66.5-67.1-66.5c-4.8-4.8-4.8-12.6 0-17.4l40.5-40.5c4.8-4.8 12.6-4.8 17.4 0l66.5 67.1 66.5-67.1c4.8-4.8 12.6-4.8 17.4 0l40.5 40.5c4.8 4.8 4.8 12.6 0 17.4L313.3 256l67.1 66.5z\"]\n};\nvar faWindowMaximize = {\n prefix: 'fas',\n iconName: 'window-maximize',\n icon: [512, 512, [], \"f2d0\", \"M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-16 160H64v-84c0-6.6 5.4-12 12-12h360c6.6 0 12 5.4 12 12v84z\"]\n};\nvar faWindowMinimize = {\n prefix: 'fas',\n iconName: 'window-minimize',\n icon: [512, 512, [], \"f2d1\", \"M464 352H48c-26.5 0-48 21.5-48 48v32c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48v-32c0-26.5-21.5-48-48-48z\"]\n};\nvar faWindowRestore = {\n prefix: 'fas',\n iconName: 'window-restore',\n icon: [512, 512, [], \"f2d2\", \"M512 48v288c0 26.5-21.5 48-48 48h-48V176c0-44.1-35.9-80-80-80H128V48c0-26.5 21.5-48 48-48h288c26.5 0 48 21.5 48 48zM384 176v288c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48h288c26.5 0 48 21.5 48 48zm-68 28c0-6.6-5.4-12-12-12H76c-6.6 0-12 5.4-12 12v52h252v-52z\"]\n};\nvar faWineBottle = {\n prefix: 'fas',\n iconName: 'wine-bottle',\n icon: [512, 512, [], \"f72f\", \"M507.31 72.57L439.43 4.69c-6.25-6.25-16.38-6.25-22.63 0l-22.63 22.63c-6.25 6.25-6.25 16.38 0 22.63l-76.67 76.67c-46.58-19.7-102.4-10.73-140.37 27.23L18.75 312.23c-24.99 24.99-24.99 65.52 0 90.51l90.51 90.51c24.99 24.99 65.52 24.99 90.51 0l158.39-158.39c37.96-37.96 46.93-93.79 27.23-140.37l76.67-76.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.24-6.24 6.24-16.37-.01-22.62zM179.22 423.29l-90.51-90.51 122.04-122.04 90.51 90.51-122.04 122.04z\"]\n};\nvar faWineGlass = {\n prefix: 'fas',\n iconName: 'wine-glass',\n icon: [288, 512, [], \"f4e3\", \"M216 464h-40V346.81c68.47-15.89 118.05-79.91 111.4-154.16l-15.95-178.1C270.71 6.31 263.9 0 255.74 0H32.26c-8.15 0-14.97 6.31-15.7 14.55L.6 192.66C-6.05 266.91 43.53 330.93 112 346.82V464H72c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h208c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40z\"]\n};\nvar faWineGlassAlt = {\n prefix: 'fas',\n iconName: 'wine-glass-alt',\n icon: [288, 512, [], \"f5ce\", \"M216 464h-40V346.81c68.47-15.89 118.05-79.91 111.4-154.16l-15.95-178.1C270.71 6.31 263.9 0 255.74 0H32.26c-8.15 0-14.97 6.31-15.7 14.55L.6 192.66C-6.05 266.91 43.53 330.93 112 346.82V464H72c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h208c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40zM61.75 48h164.5l7.17 80H54.58l7.17-80z\"]\n};\nvar faWonSign = {\n prefix: 'fas',\n iconName: 'won-sign',\n icon: [576, 512, [], \"f159\", \"M564 192c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-48l18.6-80.6c1.7-7.5-4-14.7-11.7-14.7h-46.1c-5.7 0-10.6 4-11.7 9.5L450.7 128H340.8l-19.7-86c-1.3-5.5-6.1-9.3-11.7-9.3h-44c-5.6 0-10.4 3.8-11.7 9.3l-20 86H125l-17.5-85.7c-1.1-5.6-6.1-9.6-11.8-9.6H53.6c-7.7 0-13.4 7.1-11.7 14.6L60 128H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h62.3l7.2 32H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h83.9l40.9 182.6c1.2 5.5 6.1 9.4 11.7 9.4h56.8c5.6 0 10.4-3.9 11.7-9.3L259.3 288h55.1l42.4 182.7c1.3 5.4 6.1 9.3 11.7 9.3h56.8c5.6 0 10.4-3.9 11.7-9.3L479.1 288H564c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-70.1l7.4-32zM183.8 342c-6.2 25.8-6.8 47.2-7.3 47.2h-1.1s-1.7-22-6.8-47.2l-11-54h38.8zm27.5-118h-66.8l-6.5-32h80.8zm62.9 0l2-8.6c1.9-8 3.5-16 4.8-23.4h11.8c1.3 7.4 2.9 15.4 4.8 23.4l2 8.6zm130.9 118c-5.1 25.2-6.8 47.2-6.8 47.2h-1.1c-.6 0-1.1-21.4-7.3-47.2l-12.4-54h39.1zm25.2-118h-67.4l-7.3-32h81.6z\"]\n};\nvar faWrench = {\n prefix: 'fas',\n iconName: 'wrench',\n icon: [512, 512, [], \"f0ad\", \"M507.73 109.1c-2.24-9.03-13.54-12.09-20.12-5.51l-74.36 74.36-67.88-11.31-11.31-67.88 74.36-74.36c6.62-6.62 3.43-17.9-5.66-20.16-47.38-11.74-99.55.91-136.58 37.93-39.64 39.64-50.55 97.1-34.05 147.2L18.74 402.76c-24.99 24.99-24.99 65.51 0 90.5 24.99 24.99 65.51 24.99 90.5 0l213.21-213.21c50.12 16.71 107.47 5.68 147.37-34.22 37.07-37.07 49.7-89.32 37.91-136.73zM64 472c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"]\n};\nvar faXRay = {\n prefix: 'fas',\n iconName: 'x-ray',\n icon: [640, 512, [], \"f497\", \"M240 384c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm160 32c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zM624 0H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16zm0 448h-48V96H64v352H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM480 248c0 4.4-3.6 8-8 8H336v32h104c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H336v32h64c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48v-16h-64v16c0 26.5-21.5 48-48 48s-48-21.5-48-48 21.5-48 48-48h64v-32H200c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h104v-32H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h136v-32H200c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h104v-24c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v24h104c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H336v32h136c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faYenSign = {\n prefix: 'fas',\n iconName: 'yen-sign',\n icon: [384, 512, [], \"f157\", \"M351.2 32h-65.3c-4.6 0-8.8 2.6-10.8 6.7l-55.4 113.2c-14.5 34.7-27.1 71.9-27.1 71.9h-1.3s-12.6-37.2-27.1-71.9L108.8 38.7c-2-4.1-6.2-6.7-10.8-6.7H32.8c-9.1 0-14.8 9.7-10.6 17.6L102.3 200H44c-6.6 0-12 5.4-12 12v32c0 6.6 5.4 12 12 12h88.2l19.8 37.2V320H44c-6.6 0-12 5.4-12 12v32c0 6.6 5.4 12 12 12h108v92c0 6.6 5.4 12 12 12h56c6.6 0 12-5.4 12-12v-92h108c6.6 0 12-5.4 12-12v-32c0-6.6-5.4-12-12-12H232v-26.8l19.8-37.2H340c6.6 0 12-5.4 12-12v-32c0-6.6-5.4-12-12-12h-58.3l80.1-150.4c4.3-7.9-1.5-17.6-10.6-17.6z\"]\n};\nvar faYinYang = {\n prefix: 'fas',\n iconName: 'yin-yang',\n icon: [496, 512, [], \"f6ad\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 376c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-128c-53.02 0-96 42.98-96 96s42.98 96 96 96c-106.04 0-192-85.96-192-192S141.96 64 248 64c53.02 0 96 42.98 96 96s-42.98 96-96 96zm0-128c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z\"]\n};\nvar _iconsCache = {\n faAd: faAd,\n faAddressBook: faAddressBook,\n faAddressCard: faAddressCard,\n faAdjust: faAdjust,\n faAirFreshener: faAirFreshener,\n faAlignCenter: faAlignCenter,\n faAlignJustify: faAlignJustify,\n faAlignLeft: faAlignLeft,\n faAlignRight: faAlignRight,\n faAllergies: faAllergies,\n faAmbulance: faAmbulance,\n faAmericanSignLanguageInterpreting: faAmericanSignLanguageInterpreting,\n faAnchor: faAnchor,\n faAngleDoubleDown: faAngleDoubleDown,\n faAngleDoubleLeft: faAngleDoubleLeft,\n faAngleDoubleRight: faAngleDoubleRight,\n faAngleDoubleUp: faAngleDoubleUp,\n faAngleDown: faAngleDown,\n faAngleLeft: faAngleLeft,\n faAngleRight: faAngleRight,\n faAngleUp: faAngleUp,\n faAngry: faAngry,\n faAnkh: faAnkh,\n faAppleAlt: faAppleAlt,\n faArchive: faArchive,\n faArchway: faArchway,\n faArrowAltCircleDown: faArrowAltCircleDown,\n faArrowAltCircleLeft: faArrowAltCircleLeft,\n faArrowAltCircleRight: faArrowAltCircleRight,\n faArrowAltCircleUp: faArrowAltCircleUp,\n faArrowCircleDown: faArrowCircleDown,\n faArrowCircleLeft: faArrowCircleLeft,\n faArrowCircleRight: faArrowCircleRight,\n faArrowCircleUp: faArrowCircleUp,\n faArrowDown: faArrowDown,\n faArrowLeft: faArrowLeft,\n faArrowRight: faArrowRight,\n faArrowUp: faArrowUp,\n faArrowsAlt: faArrowsAlt,\n faArrowsAltH: faArrowsAltH,\n faArrowsAltV: faArrowsAltV,\n faAssistiveListeningSystems: faAssistiveListeningSystems,\n faAsterisk: faAsterisk,\n faAt: faAt,\n faAtlas: faAtlas,\n faAtom: faAtom,\n faAudioDescription: faAudioDescription,\n faAward: faAward,\n faBaby: faBaby,\n faBabyCarriage: faBabyCarriage,\n faBackspace: faBackspace,\n faBackward: faBackward,\n faBacon: faBacon,\n faBacteria: faBacteria,\n faBacterium: faBacterium,\n faBahai: faBahai,\n faBalanceScale: faBalanceScale,\n faBalanceScaleLeft: faBalanceScaleLeft,\n faBalanceScaleRight: faBalanceScaleRight,\n faBan: faBan,\n faBandAid: faBandAid,\n faBarcode: faBarcode,\n faBars: faBars,\n faBaseballBall: faBaseballBall,\n faBasketballBall: faBasketballBall,\n faBath: faBath,\n faBatteryEmpty: faBatteryEmpty,\n faBatteryFull: faBatteryFull,\n faBatteryHalf: faBatteryHalf,\n faBatteryQuarter: faBatteryQuarter,\n faBatteryThreeQuarters: faBatteryThreeQuarters,\n faBed: faBed,\n faBeer: faBeer,\n faBell: faBell,\n faBellSlash: faBellSlash,\n faBezierCurve: faBezierCurve,\n faBible: faBible,\n faBicycle: faBicycle,\n faBiking: faBiking,\n faBinoculars: faBinoculars,\n faBiohazard: faBiohazard,\n faBirthdayCake: faBirthdayCake,\n faBlender: faBlender,\n faBlenderPhone: faBlenderPhone,\n faBlind: faBlind,\n faBlog: faBlog,\n faBold: faBold,\n faBolt: faBolt,\n faBomb: faBomb,\n faBone: faBone,\n faBong: faBong,\n faBook: faBook,\n faBookDead: faBookDead,\n faBookMedical: faBookMedical,\n faBookOpen: faBookOpen,\n faBookReader: faBookReader,\n faBookmark: faBookmark,\n faBorderAll: faBorderAll,\n faBorderNone: faBorderNone,\n faBorderStyle: faBorderStyle,\n faBowlingBall: faBowlingBall,\n faBox: faBox,\n faBoxOpen: faBoxOpen,\n faBoxTissue: faBoxTissue,\n faBoxes: faBoxes,\n faBraille: faBraille,\n faBrain: faBrain,\n faBreadSlice: faBreadSlice,\n faBriefcase: faBriefcase,\n faBriefcaseMedical: faBriefcaseMedical,\n faBroadcastTower: faBroadcastTower,\n faBroom: faBroom,\n faBrush: faBrush,\n faBug: faBug,\n faBuilding: faBuilding,\n faBullhorn: faBullhorn,\n faBullseye: faBullseye,\n faBurn: faBurn,\n faBus: faBus,\n faBusAlt: faBusAlt,\n faBusinessTime: faBusinessTime,\n faCalculator: faCalculator,\n faCalendar: faCalendar,\n faCalendarAlt: faCalendarAlt,\n faCalendarCheck: faCalendarCheck,\n faCalendarDay: faCalendarDay,\n faCalendarMinus: faCalendarMinus,\n faCalendarPlus: faCalendarPlus,\n faCalendarTimes: faCalendarTimes,\n faCalendarWeek: faCalendarWeek,\n faCamera: faCamera,\n faCameraRetro: faCameraRetro,\n faCampground: faCampground,\n faCandyCane: faCandyCane,\n faCannabis: faCannabis,\n faCapsules: faCapsules,\n faCar: faCar,\n faCarAlt: faCarAlt,\n faCarBattery: faCarBattery,\n faCarCrash: faCarCrash,\n faCarSide: faCarSide,\n faCaravan: faCaravan,\n faCaretDown: faCaretDown,\n faCaretLeft: faCaretLeft,\n faCaretRight: faCaretRight,\n faCaretSquareDown: faCaretSquareDown,\n faCaretSquareLeft: faCaretSquareLeft,\n faCaretSquareRight: faCaretSquareRight,\n faCaretSquareUp: faCaretSquareUp,\n faCaretUp: faCaretUp,\n faCarrot: faCarrot,\n faCartArrowDown: faCartArrowDown,\n faCartPlus: faCartPlus,\n faCashRegister: faCashRegister,\n faCat: faCat,\n faCertificate: faCertificate,\n faChair: faChair,\n faChalkboard: faChalkboard,\n faChalkboardTeacher: faChalkboardTeacher,\n faChargingStation: faChargingStation,\n faChartArea: faChartArea,\n faChartBar: faChartBar,\n faChartLine: faChartLine,\n faChartPie: faChartPie,\n faCheck: faCheck,\n faCheckCircle: faCheckCircle,\n faCheckDouble: faCheckDouble,\n faCheckSquare: faCheckSquare,\n faCheese: faCheese,\n faChess: faChess,\n faChessBishop: faChessBishop,\n faChessBoard: faChessBoard,\n faChessKing: faChessKing,\n faChessKnight: faChessKnight,\n faChessPawn: faChessPawn,\n faChessQueen: faChessQueen,\n faChessRook: faChessRook,\n faChevronCircleDown: faChevronCircleDown,\n faChevronCircleLeft: faChevronCircleLeft,\n faChevronCircleRight: faChevronCircleRight,\n faChevronCircleUp: faChevronCircleUp,\n faChevronDown: faChevronDown,\n faChevronLeft: faChevronLeft,\n faChevronRight: faChevronRight,\n faChevronUp: faChevronUp,\n faChild: faChild,\n faChurch: faChurch,\n faCircle: faCircle,\n faCircleNotch: faCircleNotch,\n faCity: faCity,\n faClinicMedical: faClinicMedical,\n faClipboard: faClipboard,\n faClipboardCheck: faClipboardCheck,\n faClipboardList: faClipboardList,\n faClock: faClock,\n faClone: faClone,\n faClosedCaptioning: faClosedCaptioning,\n faCloud: faCloud,\n faCloudDownloadAlt: faCloudDownloadAlt,\n faCloudMeatball: faCloudMeatball,\n faCloudMoon: faCloudMoon,\n faCloudMoonRain: faCloudMoonRain,\n faCloudRain: faCloudRain,\n faCloudShowersHeavy: faCloudShowersHeavy,\n faCloudSun: faCloudSun,\n faCloudSunRain: faCloudSunRain,\n faCloudUploadAlt: faCloudUploadAlt,\n faCocktail: faCocktail,\n faCode: faCode,\n faCodeBranch: faCodeBranch,\n faCoffee: faCoffee,\n faCog: faCog,\n faCogs: faCogs,\n faCoins: faCoins,\n faColumns: faColumns,\n faComment: faComment,\n faCommentAlt: faCommentAlt,\n faCommentDollar: faCommentDollar,\n faCommentDots: faCommentDots,\n faCommentMedical: faCommentMedical,\n faCommentSlash: faCommentSlash,\n faComments: faComments,\n faCommentsDollar: faCommentsDollar,\n faCompactDisc: faCompactDisc,\n faCompass: faCompass,\n faCompress: faCompress,\n faCompressAlt: faCompressAlt,\n faCompressArrowsAlt: faCompressArrowsAlt,\n faConciergeBell: faConciergeBell,\n faCookie: faCookie,\n faCookieBite: faCookieBite,\n faCopy: faCopy,\n faCopyright: faCopyright,\n faCouch: faCouch,\n faCreditCard: faCreditCard,\n faCrop: faCrop,\n faCropAlt: faCropAlt,\n faCross: faCross,\n faCrosshairs: faCrosshairs,\n faCrow: faCrow,\n faCrown: faCrown,\n faCrutch: faCrutch,\n faCube: faCube,\n faCubes: faCubes,\n faCut: faCut,\n faDatabase: faDatabase,\n faDeaf: faDeaf,\n faDemocrat: faDemocrat,\n faDesktop: faDesktop,\n faDharmachakra: faDharmachakra,\n faDiagnoses: faDiagnoses,\n faDice: faDice,\n faDiceD20: faDiceD20,\n faDiceD6: faDiceD6,\n faDiceFive: faDiceFive,\n faDiceFour: faDiceFour,\n faDiceOne: faDiceOne,\n faDiceSix: faDiceSix,\n faDiceThree: faDiceThree,\n faDiceTwo: faDiceTwo,\n faDigitalTachograph: faDigitalTachograph,\n faDirections: faDirections,\n faDisease: faDisease,\n faDivide: faDivide,\n faDizzy: faDizzy,\n faDna: faDna,\n faDog: faDog,\n faDollarSign: faDollarSign,\n faDolly: faDolly,\n faDollyFlatbed: faDollyFlatbed,\n faDonate: faDonate,\n faDoorClosed: faDoorClosed,\n faDoorOpen: faDoorOpen,\n faDotCircle: faDotCircle,\n faDove: faDove,\n faDownload: faDownload,\n faDraftingCompass: faDraftingCompass,\n faDragon: faDragon,\n faDrawPolygon: faDrawPolygon,\n faDrum: faDrum,\n faDrumSteelpan: faDrumSteelpan,\n faDrumstickBite: faDrumstickBite,\n faDumbbell: faDumbbell,\n faDumpster: faDumpster,\n faDumpsterFire: faDumpsterFire,\n faDungeon: faDungeon,\n faEdit: faEdit,\n faEgg: faEgg,\n faEject: faEject,\n faEllipsisH: faEllipsisH,\n faEllipsisV: faEllipsisV,\n faEnvelope: faEnvelope,\n faEnvelopeOpen: faEnvelopeOpen,\n faEnvelopeOpenText: faEnvelopeOpenText,\n faEnvelopeSquare: faEnvelopeSquare,\n faEquals: faEquals,\n faEraser: faEraser,\n faEthernet: faEthernet,\n faEuroSign: faEuroSign,\n faExchangeAlt: faExchangeAlt,\n faExclamation: faExclamation,\n faExclamationCircle: faExclamationCircle,\n faExclamationTriangle: faExclamationTriangle,\n faExpand: faExpand,\n faExpandAlt: faExpandAlt,\n faExpandArrowsAlt: faExpandArrowsAlt,\n faExternalLinkAlt: faExternalLinkAlt,\n faExternalLinkSquareAlt: faExternalLinkSquareAlt,\n faEye: faEye,\n faEyeDropper: faEyeDropper,\n faEyeSlash: faEyeSlash,\n faFan: faFan,\n faFastBackward: faFastBackward,\n faFastForward: faFastForward,\n faFaucet: faFaucet,\n faFax: faFax,\n faFeather: faFeather,\n faFeatherAlt: faFeatherAlt,\n faFemale: faFemale,\n faFighterJet: faFighterJet,\n faFile: faFile,\n faFileAlt: faFileAlt,\n faFileArchive: faFileArchive,\n faFileAudio: faFileAudio,\n faFileCode: faFileCode,\n faFileContract: faFileContract,\n faFileCsv: faFileCsv,\n faFileDownload: faFileDownload,\n faFileExcel: faFileExcel,\n faFileExport: faFileExport,\n faFileImage: faFileImage,\n faFileImport: faFileImport,\n faFileInvoice: faFileInvoice,\n faFileInvoiceDollar: faFileInvoiceDollar,\n faFileMedical: faFileMedical,\n faFileMedicalAlt: faFileMedicalAlt,\n faFilePdf: faFilePdf,\n faFilePowerpoint: faFilePowerpoint,\n faFilePrescription: faFilePrescription,\n faFileSignature: faFileSignature,\n faFileUpload: faFileUpload,\n faFileVideo: faFileVideo,\n faFileWord: faFileWord,\n faFill: faFill,\n faFillDrip: faFillDrip,\n faFilm: faFilm,\n faFilter: faFilter,\n faFingerprint: faFingerprint,\n faFire: faFire,\n faFireAlt: faFireAlt,\n faFireExtinguisher: faFireExtinguisher,\n faFirstAid: faFirstAid,\n faFish: faFish,\n faFistRaised: faFistRaised,\n faFlag: faFlag,\n faFlagCheckered: faFlagCheckered,\n faFlagUsa: faFlagUsa,\n faFlask: faFlask,\n faFlushed: faFlushed,\n faFolder: faFolder,\n faFolderMinus: faFolderMinus,\n faFolderOpen: faFolderOpen,\n faFolderPlus: faFolderPlus,\n faFont: faFont,\n faFontAwesomeLogoFull: faFontAwesomeLogoFull,\n faFootballBall: faFootballBall,\n faForward: faForward,\n faFrog: faFrog,\n faFrown: faFrown,\n faFrownOpen: faFrownOpen,\n faFunnelDollar: faFunnelDollar,\n faFutbol: faFutbol,\n faGamepad: faGamepad,\n faGasPump: faGasPump,\n faGavel: faGavel,\n faGem: faGem,\n faGenderless: faGenderless,\n faGhost: faGhost,\n faGift: faGift,\n faGifts: faGifts,\n faGlassCheers: faGlassCheers,\n faGlassMartini: faGlassMartini,\n faGlassMartiniAlt: faGlassMartiniAlt,\n faGlassWhiskey: faGlassWhiskey,\n faGlasses: faGlasses,\n faGlobe: faGlobe,\n faGlobeAfrica: faGlobeAfrica,\n faGlobeAmericas: faGlobeAmericas,\n faGlobeAsia: faGlobeAsia,\n faGlobeEurope: faGlobeEurope,\n faGolfBall: faGolfBall,\n faGopuram: faGopuram,\n faGraduationCap: faGraduationCap,\n faGreaterThan: faGreaterThan,\n faGreaterThanEqual: faGreaterThanEqual,\n faGrimace: faGrimace,\n faGrin: faGrin,\n faGrinAlt: faGrinAlt,\n faGrinBeam: faGrinBeam,\n faGrinBeamSweat: faGrinBeamSweat,\n faGrinHearts: faGrinHearts,\n faGrinSquint: faGrinSquint,\n faGrinSquintTears: faGrinSquintTears,\n faGrinStars: faGrinStars,\n faGrinTears: faGrinTears,\n faGrinTongue: faGrinTongue,\n faGrinTongueSquint: faGrinTongueSquint,\n faGrinTongueWink: faGrinTongueWink,\n faGrinWink: faGrinWink,\n faGripHorizontal: faGripHorizontal,\n faGripLines: faGripLines,\n faGripLinesVertical: faGripLinesVertical,\n faGripVertical: faGripVertical,\n faGuitar: faGuitar,\n faHSquare: faHSquare,\n faHamburger: faHamburger,\n faHammer: faHammer,\n faHamsa: faHamsa,\n faHandHolding: faHandHolding,\n faHandHoldingHeart: faHandHoldingHeart,\n faHandHoldingMedical: faHandHoldingMedical,\n faHandHoldingUsd: faHandHoldingUsd,\n faHandHoldingWater: faHandHoldingWater,\n faHandLizard: faHandLizard,\n faHandMiddleFinger: faHandMiddleFinger,\n faHandPaper: faHandPaper,\n faHandPeace: faHandPeace,\n faHandPointDown: faHandPointDown,\n faHandPointLeft: faHandPointLeft,\n faHandPointRight: faHandPointRight,\n faHandPointUp: faHandPointUp,\n faHandPointer: faHandPointer,\n faHandRock: faHandRock,\n faHandScissors: faHandScissors,\n faHandSparkles: faHandSparkles,\n faHandSpock: faHandSpock,\n faHands: faHands,\n faHandsHelping: faHandsHelping,\n faHandsWash: faHandsWash,\n faHandshake: faHandshake,\n faHandshakeAltSlash: faHandshakeAltSlash,\n faHandshakeSlash: faHandshakeSlash,\n faHanukiah: faHanukiah,\n faHardHat: faHardHat,\n faHashtag: faHashtag,\n faHatCowboy: faHatCowboy,\n faHatCowboySide: faHatCowboySide,\n faHatWizard: faHatWizard,\n faHdd: faHdd,\n faHeadSideCough: faHeadSideCough,\n faHeadSideCoughSlash: faHeadSideCoughSlash,\n faHeadSideMask: faHeadSideMask,\n faHeadSideVirus: faHeadSideVirus,\n faHeading: faHeading,\n faHeadphones: faHeadphones,\n faHeadphonesAlt: faHeadphonesAlt,\n faHeadset: faHeadset,\n faHeart: faHeart,\n faHeartBroken: faHeartBroken,\n faHeartbeat: faHeartbeat,\n faHelicopter: faHelicopter,\n faHighlighter: faHighlighter,\n faHiking: faHiking,\n faHippo: faHippo,\n faHistory: faHistory,\n faHockeyPuck: faHockeyPuck,\n faHollyBerry: faHollyBerry,\n faHome: faHome,\n faHorse: faHorse,\n faHorseHead: faHorseHead,\n faHospital: faHospital,\n faHospitalAlt: faHospitalAlt,\n faHospitalSymbol: faHospitalSymbol,\n faHospitalUser: faHospitalUser,\n faHotTub: faHotTub,\n faHotdog: faHotdog,\n faHotel: faHotel,\n faHourglass: faHourglass,\n faHourglassEnd: faHourglassEnd,\n faHourglassHalf: faHourglassHalf,\n faHourglassStart: faHourglassStart,\n faHouseDamage: faHouseDamage,\n faHouseUser: faHouseUser,\n faHryvnia: faHryvnia,\n faICursor: faICursor,\n faIceCream: faIceCream,\n faIcicles: faIcicles,\n faIcons: faIcons,\n faIdBadge: faIdBadge,\n faIdCard: faIdCard,\n faIdCardAlt: faIdCardAlt,\n faIgloo: faIgloo,\n faImage: faImage,\n faImages: faImages,\n faInbox: faInbox,\n faIndent: faIndent,\n faIndustry: faIndustry,\n faInfinity: faInfinity,\n faInfo: faInfo,\n faInfoCircle: faInfoCircle,\n faItalic: faItalic,\n faJedi: faJedi,\n faJoint: faJoint,\n faJournalWhills: faJournalWhills,\n faKaaba: faKaaba,\n faKey: faKey,\n faKeyboard: faKeyboard,\n faKhanda: faKhanda,\n faKiss: faKiss,\n faKissBeam: faKissBeam,\n faKissWinkHeart: faKissWinkHeart,\n faKiwiBird: faKiwiBird,\n faLandmark: faLandmark,\n faLanguage: faLanguage,\n faLaptop: faLaptop,\n faLaptopCode: faLaptopCode,\n faLaptopHouse: faLaptopHouse,\n faLaptopMedical: faLaptopMedical,\n faLaugh: faLaugh,\n faLaughBeam: faLaughBeam,\n faLaughSquint: faLaughSquint,\n faLaughWink: faLaughWink,\n faLayerGroup: faLayerGroup,\n faLeaf: faLeaf,\n faLemon: faLemon,\n faLessThan: faLessThan,\n faLessThanEqual: faLessThanEqual,\n faLevelDownAlt: faLevelDownAlt,\n faLevelUpAlt: faLevelUpAlt,\n faLifeRing: faLifeRing,\n faLightbulb: faLightbulb,\n faLink: faLink,\n faLiraSign: faLiraSign,\n faList: faList,\n faListAlt: faListAlt,\n faListOl: faListOl,\n faListUl: faListUl,\n faLocationArrow: faLocationArrow,\n faLock: faLock,\n faLockOpen: faLockOpen,\n faLongArrowAltDown: faLongArrowAltDown,\n faLongArrowAltLeft: faLongArrowAltLeft,\n faLongArrowAltRight: faLongArrowAltRight,\n faLongArrowAltUp: faLongArrowAltUp,\n faLowVision: faLowVision,\n faLuggageCart: faLuggageCart,\n faLungs: faLungs,\n faLungsVirus: faLungsVirus,\n faMagic: faMagic,\n faMagnet: faMagnet,\n faMailBulk: faMailBulk,\n faMale: faMale,\n faMap: faMap,\n faMapMarked: faMapMarked,\n faMapMarkedAlt: faMapMarkedAlt,\n faMapMarker: faMapMarker,\n faMapMarkerAlt: faMapMarkerAlt,\n faMapPin: faMapPin,\n faMapSigns: faMapSigns,\n faMarker: faMarker,\n faMars: faMars,\n faMarsDouble: faMarsDouble,\n faMarsStroke: faMarsStroke,\n faMarsStrokeH: faMarsStrokeH,\n faMarsStrokeV: faMarsStrokeV,\n faMask: faMask,\n faMedal: faMedal,\n faMedkit: faMedkit,\n faMeh: faMeh,\n faMehBlank: faMehBlank,\n faMehRollingEyes: faMehRollingEyes,\n faMemory: faMemory,\n faMenorah: faMenorah,\n faMercury: faMercury,\n faMeteor: faMeteor,\n faMicrochip: faMicrochip,\n faMicrophone: faMicrophone,\n faMicrophoneAlt: faMicrophoneAlt,\n faMicrophoneAltSlash: faMicrophoneAltSlash,\n faMicrophoneSlash: faMicrophoneSlash,\n faMicroscope: faMicroscope,\n faMinus: faMinus,\n faMinusCircle: faMinusCircle,\n faMinusSquare: faMinusSquare,\n faMitten: faMitten,\n faMobile: faMobile,\n faMobileAlt: faMobileAlt,\n faMoneyBill: faMoneyBill,\n faMoneyBillAlt: faMoneyBillAlt,\n faMoneyBillWave: faMoneyBillWave,\n faMoneyBillWaveAlt: faMoneyBillWaveAlt,\n faMoneyCheck: faMoneyCheck,\n faMoneyCheckAlt: faMoneyCheckAlt,\n faMonument: faMonument,\n faMoon: faMoon,\n faMortarPestle: faMortarPestle,\n faMosque: faMosque,\n faMotorcycle: faMotorcycle,\n faMountain: faMountain,\n faMouse: faMouse,\n faMousePointer: faMousePointer,\n faMugHot: faMugHot,\n faMusic: faMusic,\n faNetworkWired: faNetworkWired,\n faNeuter: faNeuter,\n faNewspaper: faNewspaper,\n faNotEqual: faNotEqual,\n faNotesMedical: faNotesMedical,\n faObjectGroup: faObjectGroup,\n faObjectUngroup: faObjectUngroup,\n faOilCan: faOilCan,\n faOm: faOm,\n faOtter: faOtter,\n faOutdent: faOutdent,\n faPager: faPager,\n faPaintBrush: faPaintBrush,\n faPaintRoller: faPaintRoller,\n faPalette: faPalette,\n faPallet: faPallet,\n faPaperPlane: faPaperPlane,\n faPaperclip: faPaperclip,\n faParachuteBox: faParachuteBox,\n faParagraph: faParagraph,\n faParking: faParking,\n faPassport: faPassport,\n faPastafarianism: faPastafarianism,\n faPaste: faPaste,\n faPause: faPause,\n faPauseCircle: faPauseCircle,\n faPaw: faPaw,\n faPeace: faPeace,\n faPen: faPen,\n faPenAlt: faPenAlt,\n faPenFancy: faPenFancy,\n faPenNib: faPenNib,\n faPenSquare: faPenSquare,\n faPencilAlt: faPencilAlt,\n faPencilRuler: faPencilRuler,\n faPeopleArrows: faPeopleArrows,\n faPeopleCarry: faPeopleCarry,\n faPepperHot: faPepperHot,\n faPercent: faPercent,\n faPercentage: faPercentage,\n faPersonBooth: faPersonBooth,\n faPhone: faPhone,\n faPhoneAlt: faPhoneAlt,\n faPhoneSlash: faPhoneSlash,\n faPhoneSquare: faPhoneSquare,\n faPhoneSquareAlt: faPhoneSquareAlt,\n faPhoneVolume: faPhoneVolume,\n faPhotoVideo: faPhotoVideo,\n faPiggyBank: faPiggyBank,\n faPills: faPills,\n faPizzaSlice: faPizzaSlice,\n faPlaceOfWorship: faPlaceOfWorship,\n faPlane: faPlane,\n faPlaneArrival: faPlaneArrival,\n faPlaneDeparture: faPlaneDeparture,\n faPlaneSlash: faPlaneSlash,\n faPlay: faPlay,\n faPlayCircle: faPlayCircle,\n faPlug: faPlug,\n faPlus: faPlus,\n faPlusCircle: faPlusCircle,\n faPlusSquare: faPlusSquare,\n faPodcast: faPodcast,\n faPoll: faPoll,\n faPollH: faPollH,\n faPoo: faPoo,\n faPooStorm: faPooStorm,\n faPoop: faPoop,\n faPortrait: faPortrait,\n faPoundSign: faPoundSign,\n faPowerOff: faPowerOff,\n faPray: faPray,\n faPrayingHands: faPrayingHands,\n faPrescription: faPrescription,\n faPrescriptionBottle: faPrescriptionBottle,\n faPrescriptionBottleAlt: faPrescriptionBottleAlt,\n faPrint: faPrint,\n faProcedures: faProcedures,\n faProjectDiagram: faProjectDiagram,\n faPumpMedical: faPumpMedical,\n faPumpSoap: faPumpSoap,\n faPuzzlePiece: faPuzzlePiece,\n faQrcode: faQrcode,\n faQuestion: faQuestion,\n faQuestionCircle: faQuestionCircle,\n faQuidditch: faQuidditch,\n faQuoteLeft: faQuoteLeft,\n faQuoteRight: faQuoteRight,\n faQuran: faQuran,\n faRadiation: faRadiation,\n faRadiationAlt: faRadiationAlt,\n faRainbow: faRainbow,\n faRandom: faRandom,\n faReceipt: faReceipt,\n faRecordVinyl: faRecordVinyl,\n faRecycle: faRecycle,\n faRedo: faRedo,\n faRedoAlt: faRedoAlt,\n faRegistered: faRegistered,\n faRemoveFormat: faRemoveFormat,\n faReply: faReply,\n faReplyAll: faReplyAll,\n faRepublican: faRepublican,\n faRestroom: faRestroom,\n faRetweet: faRetweet,\n faRibbon: faRibbon,\n faRing: faRing,\n faRoad: faRoad,\n faRobot: faRobot,\n faRocket: faRocket,\n faRoute: faRoute,\n faRss: faRss,\n faRssSquare: faRssSquare,\n faRubleSign: faRubleSign,\n faRuler: faRuler,\n faRulerCombined: faRulerCombined,\n faRulerHorizontal: faRulerHorizontal,\n faRulerVertical: faRulerVertical,\n faRunning: faRunning,\n faRupeeSign: faRupeeSign,\n faSadCry: faSadCry,\n faSadTear: faSadTear,\n faSatellite: faSatellite,\n faSatelliteDish: faSatelliteDish,\n faSave: faSave,\n faSchool: faSchool,\n faScrewdriver: faScrewdriver,\n faScroll: faScroll,\n faSdCard: faSdCard,\n faSearch: faSearch,\n faSearchDollar: faSearchDollar,\n faSearchLocation: faSearchLocation,\n faSearchMinus: faSearchMinus,\n faSearchPlus: faSearchPlus,\n faSeedling: faSeedling,\n faServer: faServer,\n faShapes: faShapes,\n faShare: faShare,\n faShareAlt: faShareAlt,\n faShareAltSquare: faShareAltSquare,\n faShareSquare: faShareSquare,\n faShekelSign: faShekelSign,\n faShieldAlt: faShieldAlt,\n faShieldVirus: faShieldVirus,\n faShip: faShip,\n faShippingFast: faShippingFast,\n faShoePrints: faShoePrints,\n faShoppingBag: faShoppingBag,\n faShoppingBasket: faShoppingBasket,\n faShoppingCart: faShoppingCart,\n faShower: faShower,\n faShuttleVan: faShuttleVan,\n faSign: faSign,\n faSignInAlt: faSignInAlt,\n faSignLanguage: faSignLanguage,\n faSignOutAlt: faSignOutAlt,\n faSignal: faSignal,\n faSignature: faSignature,\n faSimCard: faSimCard,\n faSink: faSink,\n faSitemap: faSitemap,\n faSkating: faSkating,\n faSkiing: faSkiing,\n faSkiingNordic: faSkiingNordic,\n faSkull: faSkull,\n faSkullCrossbones: faSkullCrossbones,\n faSlash: faSlash,\n faSleigh: faSleigh,\n faSlidersH: faSlidersH,\n faSmile: faSmile,\n faSmileBeam: faSmileBeam,\n faSmileWink: faSmileWink,\n faSmog: faSmog,\n faSmoking: faSmoking,\n faSmokingBan: faSmokingBan,\n faSms: faSms,\n faSnowboarding: faSnowboarding,\n faSnowflake: faSnowflake,\n faSnowman: faSnowman,\n faSnowplow: faSnowplow,\n faSoap: faSoap,\n faSocks: faSocks,\n faSolarPanel: faSolarPanel,\n faSort: faSort,\n faSortAlphaDown: faSortAlphaDown,\n faSortAlphaDownAlt: faSortAlphaDownAlt,\n faSortAlphaUp: faSortAlphaUp,\n faSortAlphaUpAlt: faSortAlphaUpAlt,\n faSortAmountDown: faSortAmountDown,\n faSortAmountDownAlt: faSortAmountDownAlt,\n faSortAmountUp: faSortAmountUp,\n faSortAmountUpAlt: faSortAmountUpAlt,\n faSortDown: faSortDown,\n faSortNumericDown: faSortNumericDown,\n faSortNumericDownAlt: faSortNumericDownAlt,\n faSortNumericUp: faSortNumericUp,\n faSortNumericUpAlt: faSortNumericUpAlt,\n faSortUp: faSortUp,\n faSpa: faSpa,\n faSpaceShuttle: faSpaceShuttle,\n faSpellCheck: faSpellCheck,\n faSpider: faSpider,\n faSpinner: faSpinner,\n faSplotch: faSplotch,\n faSprayCan: faSprayCan,\n faSquare: faSquare,\n faSquareFull: faSquareFull,\n faSquareRootAlt: faSquareRootAlt,\n faStamp: faStamp,\n faStar: faStar,\n faStarAndCrescent: faStarAndCrescent,\n faStarHalf: faStarHalf,\n faStarHalfAlt: faStarHalfAlt,\n faStarOfDavid: faStarOfDavid,\n faStarOfLife: faStarOfLife,\n faStepBackward: faStepBackward,\n faStepForward: faStepForward,\n faStethoscope: faStethoscope,\n faStickyNote: faStickyNote,\n faStop: faStop,\n faStopCircle: faStopCircle,\n faStopwatch: faStopwatch,\n faStopwatch20: faStopwatch20,\n faStore: faStore,\n faStoreAlt: faStoreAlt,\n faStoreAltSlash: faStoreAltSlash,\n faStoreSlash: faStoreSlash,\n faStream: faStream,\n faStreetView: faStreetView,\n faStrikethrough: faStrikethrough,\n faStroopwafel: faStroopwafel,\n faSubscript: faSubscript,\n faSubway: faSubway,\n faSuitcase: faSuitcase,\n faSuitcaseRolling: faSuitcaseRolling,\n faSun: faSun,\n faSuperscript: faSuperscript,\n faSurprise: faSurprise,\n faSwatchbook: faSwatchbook,\n faSwimmer: faSwimmer,\n faSwimmingPool: faSwimmingPool,\n faSynagogue: faSynagogue,\n faSync: faSync,\n faSyncAlt: faSyncAlt,\n faSyringe: faSyringe,\n faTable: faTable,\n faTableTennis: faTableTennis,\n faTablet: faTablet,\n faTabletAlt: faTabletAlt,\n faTablets: faTablets,\n faTachometerAlt: faTachometerAlt,\n faTag: faTag,\n faTags: faTags,\n faTape: faTape,\n faTasks: faTasks,\n faTaxi: faTaxi,\n faTeeth: faTeeth,\n faTeethOpen: faTeethOpen,\n faTemperatureHigh: faTemperatureHigh,\n faTemperatureLow: faTemperatureLow,\n faTenge: faTenge,\n faTerminal: faTerminal,\n faTextHeight: faTextHeight,\n faTextWidth: faTextWidth,\n faTh: faTh,\n faThLarge: faThLarge,\n faThList: faThList,\n faTheaterMasks: faTheaterMasks,\n faThermometer: faThermometer,\n faThermometerEmpty: faThermometerEmpty,\n faThermometerFull: faThermometerFull,\n faThermometerHalf: faThermometerHalf,\n faThermometerQuarter: faThermometerQuarter,\n faThermometerThreeQuarters: faThermometerThreeQuarters,\n faThumbsDown: faThumbsDown,\n faThumbsUp: faThumbsUp,\n faThumbtack: faThumbtack,\n faTicketAlt: faTicketAlt,\n faTimes: faTimes,\n faTimesCircle: faTimesCircle,\n faTint: faTint,\n faTintSlash: faTintSlash,\n faTired: faTired,\n faToggleOff: faToggleOff,\n faToggleOn: faToggleOn,\n faToilet: faToilet,\n faToiletPaper: faToiletPaper,\n faToiletPaperSlash: faToiletPaperSlash,\n faToolbox: faToolbox,\n faTools: faTools,\n faTooth: faTooth,\n faTorah: faTorah,\n faToriiGate: faToriiGate,\n faTractor: faTractor,\n faTrademark: faTrademark,\n faTrafficLight: faTrafficLight,\n faTrailer: faTrailer,\n faTrain: faTrain,\n faTram: faTram,\n faTransgender: faTransgender,\n faTransgenderAlt: faTransgenderAlt,\n faTrash: faTrash,\n faTrashAlt: faTrashAlt,\n faTrashRestore: faTrashRestore,\n faTrashRestoreAlt: faTrashRestoreAlt,\n faTree: faTree,\n faTrophy: faTrophy,\n faTruck: faTruck,\n faTruckLoading: faTruckLoading,\n faTruckMonster: faTruckMonster,\n faTruckMoving: faTruckMoving,\n faTruckPickup: faTruckPickup,\n faTshirt: faTshirt,\n faTty: faTty,\n faTv: faTv,\n faUmbrella: faUmbrella,\n faUmbrellaBeach: faUmbrellaBeach,\n faUnderline: faUnderline,\n faUndo: faUndo,\n faUndoAlt: faUndoAlt,\n faUniversalAccess: faUniversalAccess,\n faUniversity: faUniversity,\n faUnlink: faUnlink,\n faUnlock: faUnlock,\n faUnlockAlt: faUnlockAlt,\n faUpload: faUpload,\n faUser: faUser,\n faUserAlt: faUserAlt,\n faUserAltSlash: faUserAltSlash,\n faUserAstronaut: faUserAstronaut,\n faUserCheck: faUserCheck,\n faUserCircle: faUserCircle,\n faUserClock: faUserClock,\n faUserCog: faUserCog,\n faUserEdit: faUserEdit,\n faUserFriends: faUserFriends,\n faUserGraduate: faUserGraduate,\n faUserInjured: faUserInjured,\n faUserLock: faUserLock,\n faUserMd: faUserMd,\n faUserMinus: faUserMinus,\n faUserNinja: faUserNinja,\n faUserNurse: faUserNurse,\n faUserPlus: faUserPlus,\n faUserSecret: faUserSecret,\n faUserShield: faUserShield,\n faUserSlash: faUserSlash,\n faUserTag: faUserTag,\n faUserTie: faUserTie,\n faUserTimes: faUserTimes,\n faUsers: faUsers,\n faUsersCog: faUsersCog,\n faUsersSlash: faUsersSlash,\n faUtensilSpoon: faUtensilSpoon,\n faUtensils: faUtensils,\n faVectorSquare: faVectorSquare,\n faVenus: faVenus,\n faVenusDouble: faVenusDouble,\n faVenusMars: faVenusMars,\n faVest: faVest,\n faVestPatches: faVestPatches,\n faVial: faVial,\n faVials: faVials,\n faVideo: faVideo,\n faVideoSlash: faVideoSlash,\n faVihara: faVihara,\n faVirus: faVirus,\n faVirusSlash: faVirusSlash,\n faViruses: faViruses,\n faVoicemail: faVoicemail,\n faVolleyballBall: faVolleyballBall,\n faVolumeDown: faVolumeDown,\n faVolumeMute: faVolumeMute,\n faVolumeOff: faVolumeOff,\n faVolumeUp: faVolumeUp,\n faVoteYea: faVoteYea,\n faVrCardboard: faVrCardboard,\n faWalking: faWalking,\n faWallet: faWallet,\n faWarehouse: faWarehouse,\n faWater: faWater,\n faWaveSquare: faWaveSquare,\n faWeight: faWeight,\n faWeightHanging: faWeightHanging,\n faWheelchair: faWheelchair,\n faWifi: faWifi,\n faWind: faWind,\n faWindowClose: faWindowClose,\n faWindowMaximize: faWindowMaximize,\n faWindowMinimize: faWindowMinimize,\n faWindowRestore: faWindowRestore,\n faWineBottle: faWineBottle,\n faWineGlass: faWineGlass,\n faWineGlassAlt: faWineGlassAlt,\n faWonSign: faWonSign,\n faWrench: faWrench,\n faXRay: faXRay,\n faYenSign: faYenSign,\n faYinYang: faYinYang\n};\n\nexport { _iconsCache as fas, prefix, faAd, faAddressBook, faAddressCard, faAdjust, faAirFreshener, faAlignCenter, faAlignJustify, faAlignLeft, faAlignRight, faAllergies, faAmbulance, faAmericanSignLanguageInterpreting, faAnchor, faAngleDoubleDown, faAngleDoubleLeft, faAngleDoubleRight, faAngleDoubleUp, faAngleDown, faAngleLeft, faAngleRight, faAngleUp, faAngry, faAnkh, faAppleAlt, faArchive, faArchway, faArrowAltCircleDown, faArrowAltCircleLeft, faArrowAltCircleRight, faArrowAltCircleUp, faArrowCircleDown, faArrowCircleLeft, faArrowCircleRight, faArrowCircleUp, faArrowDown, faArrowLeft, faArrowRight, faArrowUp, faArrowsAlt, faArrowsAltH, faArrowsAltV, faAssistiveListeningSystems, faAsterisk, faAt, faAtlas, faAtom, faAudioDescription, faAward, faBaby, faBabyCarriage, faBackspace, faBackward, faBacon, faBacteria, faBacterium, faBahai, faBalanceScale, faBalanceScaleLeft, faBalanceScaleRight, faBan, faBandAid, faBarcode, faBars, faBaseballBall, faBasketballBall, faBath, faBatteryEmpty, faBatteryFull, faBatteryHalf, faBatteryQuarter, faBatteryThreeQuarters, faBed, faBeer, faBell, faBellSlash, faBezierCurve, faBible, faBicycle, faBiking, faBinoculars, faBiohazard, faBirthdayCake, faBlender, faBlenderPhone, faBlind, faBlog, faBold, faBolt, faBomb, faBone, faBong, faBook, faBookDead, faBookMedical, faBookOpen, faBookReader, faBookmark, faBorderAll, faBorderNone, faBorderStyle, faBowlingBall, faBox, faBoxOpen, faBoxTissue, faBoxes, faBraille, faBrain, faBreadSlice, faBriefcase, faBriefcaseMedical, faBroadcastTower, faBroom, faBrush, faBug, faBuilding, faBullhorn, faBullseye, faBurn, faBus, faBusAlt, faBusinessTime, faCalculator, faCalendar, faCalendarAlt, faCalendarCheck, faCalendarDay, faCalendarMinus, faCalendarPlus, faCalendarTimes, faCalendarWeek, faCamera, faCameraRetro, faCampground, faCandyCane, faCannabis, faCapsules, faCar, faCarAlt, faCarBattery, faCarCrash, faCarSide, faCaravan, faCaretDown, faCaretLeft, faCaretRight, faCaretSquareDown, faCaretSquareLeft, faCaretSquareRight, faCaretSquareUp, faCaretUp, faCarrot, faCartArrowDown, faCartPlus, faCashRegister, faCat, faCertificate, faChair, faChalkboard, faChalkboardTeacher, faChargingStation, faChartArea, faChartBar, faChartLine, faChartPie, faCheck, faCheckCircle, faCheckDouble, faCheckSquare, faCheese, faChess, faChessBishop, faChessBoard, faChessKing, faChessKnight, faChessPawn, faChessQueen, faChessRook, faChevronCircleDown, faChevronCircleLeft, faChevronCircleRight, faChevronCircleUp, faChevronDown, faChevronLeft, faChevronRight, faChevronUp, faChild, faChurch, faCircle, faCircleNotch, faCity, faClinicMedical, faClipboard, faClipboardCheck, faClipboardList, faClock, faClone, faClosedCaptioning, faCloud, faCloudDownloadAlt, faCloudMeatball, faCloudMoon, faCloudMoonRain, faCloudRain, faCloudShowersHeavy, faCloudSun, faCloudSunRain, faCloudUploadAlt, faCocktail, faCode, faCodeBranch, faCoffee, faCog, faCogs, faCoins, faColumns, faComment, faCommentAlt, faCommentDollar, faCommentDots, faCommentMedical, faCommentSlash, faComments, faCommentsDollar, faCompactDisc, faCompass, faCompress, faCompressAlt, faCompressArrowsAlt, faConciergeBell, faCookie, faCookieBite, faCopy, faCopyright, faCouch, faCreditCard, faCrop, faCropAlt, faCross, faCrosshairs, faCrow, faCrown, faCrutch, faCube, faCubes, faCut, faDatabase, faDeaf, faDemocrat, faDesktop, faDharmachakra, faDiagnoses, faDice, faDiceD20, faDiceD6, faDiceFive, faDiceFour, faDiceOne, faDiceSix, faDiceThree, faDiceTwo, faDigitalTachograph, faDirections, faDisease, faDivide, faDizzy, faDna, faDog, faDollarSign, faDolly, faDollyFlatbed, faDonate, faDoorClosed, faDoorOpen, faDotCircle, faDove, faDownload, faDraftingCompass, faDragon, faDrawPolygon, faDrum, faDrumSteelpan, faDrumstickBite, faDumbbell, faDumpster, faDumpsterFire, faDungeon, faEdit, faEgg, faEject, faEllipsisH, faEllipsisV, faEnvelope, faEnvelopeOpen, faEnvelopeOpenText, faEnvelopeSquare, faEquals, faEraser, faEthernet, faEuroSign, faExchangeAlt, faExclamation, faExclamationCircle, faExclamationTriangle, faExpand, faExpandAlt, faExpandArrowsAlt, faExternalLinkAlt, faExternalLinkSquareAlt, faEye, faEyeDropper, faEyeSlash, faFan, faFastBackward, faFastForward, faFaucet, faFax, faFeather, faFeatherAlt, faFemale, faFighterJet, faFile, faFileAlt, faFileArchive, faFileAudio, faFileCode, faFileContract, faFileCsv, faFileDownload, faFileExcel, faFileExport, faFileImage, faFileImport, faFileInvoice, faFileInvoiceDollar, faFileMedical, faFileMedicalAlt, faFilePdf, faFilePowerpoint, faFilePrescription, faFileSignature, faFileUpload, faFileVideo, faFileWord, faFill, faFillDrip, faFilm, faFilter, faFingerprint, faFire, faFireAlt, faFireExtinguisher, faFirstAid, faFish, faFistRaised, faFlag, faFlagCheckered, faFlagUsa, faFlask, faFlushed, faFolder, faFolderMinus, faFolderOpen, faFolderPlus, faFont, faFontAwesomeLogoFull, faFootballBall, faForward, faFrog, faFrown, faFrownOpen, faFunnelDollar, faFutbol, faGamepad, faGasPump, faGavel, faGem, faGenderless, faGhost, faGift, faGifts, faGlassCheers, faGlassMartini, faGlassMartiniAlt, faGlassWhiskey, faGlasses, faGlobe, faGlobeAfrica, faGlobeAmericas, faGlobeAsia, faGlobeEurope, faGolfBall, faGopuram, faGraduationCap, faGreaterThan, faGreaterThanEqual, faGrimace, faGrin, faGrinAlt, faGrinBeam, faGrinBeamSweat, faGrinHearts, faGrinSquint, faGrinSquintTears, faGrinStars, faGrinTears, faGrinTongue, faGrinTongueSquint, faGrinTongueWink, faGrinWink, faGripHorizontal, faGripLines, faGripLinesVertical, faGripVertical, faGuitar, faHSquare, faHamburger, faHammer, faHamsa, faHandHolding, faHandHoldingHeart, faHandHoldingMedical, faHandHoldingUsd, faHandHoldingWater, faHandLizard, faHandMiddleFinger, faHandPaper, faHandPeace, faHandPointDown, faHandPointLeft, faHandPointRight, faHandPointUp, faHandPointer, faHandRock, faHandScissors, faHandSparkles, faHandSpock, faHands, faHandsHelping, faHandsWash, faHandshake, faHandshakeAltSlash, faHandshakeSlash, faHanukiah, faHardHat, faHashtag, faHatCowboy, faHatCowboySide, faHatWizard, faHdd, faHeadSideCough, faHeadSideCoughSlash, faHeadSideMask, faHeadSideVirus, faHeading, faHeadphones, faHeadphonesAlt, faHeadset, faHeart, faHeartBroken, faHeartbeat, faHelicopter, faHighlighter, faHiking, faHippo, faHistory, faHockeyPuck, faHollyBerry, faHome, faHorse, faHorseHead, faHospital, faHospitalAlt, faHospitalSymbol, faHospitalUser, faHotTub, faHotdog, faHotel, faHourglass, faHourglassEnd, faHourglassHalf, faHourglassStart, faHouseDamage, faHouseUser, faHryvnia, faICursor, faIceCream, faIcicles, faIcons, faIdBadge, faIdCard, faIdCardAlt, faIgloo, faImage, faImages, faInbox, faIndent, faIndustry, faInfinity, faInfo, faInfoCircle, faItalic, faJedi, faJoint, faJournalWhills, faKaaba, faKey, faKeyboard, faKhanda, faKiss, faKissBeam, faKissWinkHeart, faKiwiBird, faLandmark, faLanguage, faLaptop, faLaptopCode, faLaptopHouse, faLaptopMedical, faLaugh, faLaughBeam, faLaughSquint, faLaughWink, faLayerGroup, faLeaf, faLemon, faLessThan, faLessThanEqual, faLevelDownAlt, faLevelUpAlt, faLifeRing, faLightbulb, faLink, faLiraSign, faList, faListAlt, faListOl, faListUl, faLocationArrow, faLock, faLockOpen, faLongArrowAltDown, faLongArrowAltLeft, faLongArrowAltRight, faLongArrowAltUp, faLowVision, faLuggageCart, faLungs, faLungsVirus, faMagic, faMagnet, faMailBulk, faMale, faMap, faMapMarked, faMapMarkedAlt, faMapMarker, faMapMarkerAlt, faMapPin, faMapSigns, faMarker, faMars, faMarsDouble, faMarsStroke, faMarsStrokeH, faMarsStrokeV, faMask, faMedal, faMedkit, faMeh, faMehBlank, faMehRollingEyes, faMemory, faMenorah, faMercury, faMeteor, faMicrochip, faMicrophone, faMicrophoneAlt, faMicrophoneAltSlash, faMicrophoneSlash, faMicroscope, faMinus, faMinusCircle, faMinusSquare, faMitten, faMobile, faMobileAlt, faMoneyBill, faMoneyBillAlt, faMoneyBillWave, faMoneyBillWaveAlt, faMoneyCheck, faMoneyCheckAlt, faMonument, faMoon, faMortarPestle, faMosque, faMotorcycle, faMountain, faMouse, faMousePointer, faMugHot, faMusic, faNetworkWired, faNeuter, faNewspaper, faNotEqual, faNotesMedical, faObjectGroup, faObjectUngroup, faOilCan, faOm, faOtter, faOutdent, faPager, faPaintBrush, faPaintRoller, faPalette, faPallet, faPaperPlane, faPaperclip, faParachuteBox, faParagraph, faParking, faPassport, faPastafarianism, faPaste, faPause, faPauseCircle, faPaw, faPeace, faPen, faPenAlt, faPenFancy, faPenNib, faPenSquare, faPencilAlt, faPencilRuler, faPeopleArrows, faPeopleCarry, faPepperHot, faPercent, faPercentage, faPersonBooth, faPhone, faPhoneAlt, faPhoneSlash, faPhoneSquare, faPhoneSquareAlt, faPhoneVolume, faPhotoVideo, faPiggyBank, faPills, faPizzaSlice, faPlaceOfWorship, faPlane, faPlaneArrival, faPlaneDeparture, faPlaneSlash, faPlay, faPlayCircle, faPlug, faPlus, faPlusCircle, faPlusSquare, faPodcast, faPoll, faPollH, faPoo, faPooStorm, faPoop, faPortrait, faPoundSign, faPowerOff, faPray, faPrayingHands, faPrescription, faPrescriptionBottle, faPrescriptionBottleAlt, faPrint, faProcedures, faProjectDiagram, faPumpMedical, faPumpSoap, faPuzzlePiece, faQrcode, faQuestion, faQuestionCircle, faQuidditch, faQuoteLeft, faQuoteRight, faQuran, faRadiation, faRadiationAlt, faRainbow, faRandom, faReceipt, faRecordVinyl, faRecycle, faRedo, faRedoAlt, faRegistered, faRemoveFormat, faReply, faReplyAll, faRepublican, faRestroom, faRetweet, faRibbon, faRing, faRoad, faRobot, faRocket, faRoute, faRss, faRssSquare, faRubleSign, faRuler, faRulerCombined, faRulerHorizontal, faRulerVertical, faRunning, faRupeeSign, faSadCry, faSadTear, faSatellite, faSatelliteDish, faSave, faSchool, faScrewdriver, faScroll, faSdCard, faSearch, faSearchDollar, faSearchLocation, faSearchMinus, faSearchPlus, faSeedling, faServer, faShapes, faShare, faShareAlt, faShareAltSquare, faShareSquare, faShekelSign, faShieldAlt, faShieldVirus, faShip, faShippingFast, faShoePrints, faShoppingBag, faShoppingBasket, faShoppingCart, faShower, faShuttleVan, faSign, faSignInAlt, faSignLanguage, faSignOutAlt, faSignal, faSignature, faSimCard, faSink, faSitemap, faSkating, faSkiing, faSkiingNordic, faSkull, faSkullCrossbones, faSlash, faSleigh, faSlidersH, faSmile, faSmileBeam, faSmileWink, faSmog, faSmoking, faSmokingBan, faSms, faSnowboarding, faSnowflake, faSnowman, faSnowplow, faSoap, faSocks, faSolarPanel, faSort, faSortAlphaDown, faSortAlphaDownAlt, faSortAlphaUp, faSortAlphaUpAlt, faSortAmountDown, faSortAmountDownAlt, faSortAmountUp, faSortAmountUpAlt, faSortDown, faSortNumericDown, faSortNumericDownAlt, faSortNumericUp, faSortNumericUpAlt, faSortUp, faSpa, faSpaceShuttle, faSpellCheck, faSpider, faSpinner, faSplotch, faSprayCan, faSquare, faSquareFull, faSquareRootAlt, faStamp, faStar, faStarAndCrescent, faStarHalf, faStarHalfAlt, faStarOfDavid, faStarOfLife, faStepBackward, faStepForward, faStethoscope, faStickyNote, faStop, faStopCircle, faStopwatch, faStopwatch20, faStore, faStoreAlt, faStoreAltSlash, faStoreSlash, faStream, faStreetView, faStrikethrough, faStroopwafel, faSubscript, faSubway, faSuitcase, faSuitcaseRolling, faSun, faSuperscript, faSurprise, faSwatchbook, faSwimmer, faSwimmingPool, faSynagogue, faSync, faSyncAlt, faSyringe, faTable, faTableTennis, faTablet, faTabletAlt, faTablets, faTachometerAlt, faTag, faTags, faTape, faTasks, faTaxi, faTeeth, faTeethOpen, faTemperatureHigh, faTemperatureLow, faTenge, faTerminal, faTextHeight, faTextWidth, faTh, faThLarge, faThList, faTheaterMasks, faThermometer, faThermometerEmpty, faThermometerFull, faThermometerHalf, faThermometerQuarter, faThermometerThreeQuarters, faThumbsDown, faThumbsUp, faThumbtack, faTicketAlt, faTimes, faTimesCircle, faTint, faTintSlash, faTired, faToggleOff, faToggleOn, faToilet, faToiletPaper, faToiletPaperSlash, faToolbox, faTools, faTooth, faTorah, faToriiGate, faTractor, faTrademark, faTrafficLight, faTrailer, faTrain, faTram, faTransgender, faTransgenderAlt, faTrash, faTrashAlt, faTrashRestore, faTrashRestoreAlt, faTree, faTrophy, faTruck, faTruckLoading, faTruckMonster, faTruckMoving, faTruckPickup, faTshirt, faTty, faTv, faUmbrella, faUmbrellaBeach, faUnderline, faUndo, faUndoAlt, faUniversalAccess, faUniversity, faUnlink, faUnlock, faUnlockAlt, faUpload, faUser, faUserAlt, faUserAltSlash, faUserAstronaut, faUserCheck, faUserCircle, faUserClock, faUserCog, faUserEdit, faUserFriends, faUserGraduate, faUserInjured, faUserLock, faUserMd, faUserMinus, faUserNinja, faUserNurse, faUserPlus, faUserSecret, faUserShield, faUserSlash, faUserTag, faUserTie, faUserTimes, faUsers, faUsersCog, faUsersSlash, faUtensilSpoon, faUtensils, faVectorSquare, faVenus, faVenusDouble, faVenusMars, faVest, faVestPatches, faVial, faVials, faVideo, faVideoSlash, faVihara, faVirus, faVirusSlash, faViruses, faVoicemail, faVolleyballBall, faVolumeDown, faVolumeMute, faVolumeOff, faVolumeUp, faVoteYea, faVrCardboard, faWalking, faWallet, faWarehouse, faWater, faWaveSquare, faWeight, faWeightHanging, faWheelchair, faWifi, faWind, faWindowClose, faWindowMaximize, faWindowMinimize, faWindowRestore, faWineBottle, faWineGlass, faWineGlassAlt, faWonSign, faWrench, faXRay, faYenSign, faYinYang };\n","import { Directive, ElementRef, NgModule, InjectionToken, ɵɵdefineInjectable, ɵɵinject, Injectable, Inject, ComponentFactoryResolver, ApplicationRef, SecurityContext, INJECTOR, NgZone, Injector, Component, HostBinding, HostListener } from '@angular/core';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport { Subject } from 'rxjs';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { DOCUMENT, CommonModule } from '@angular/common';\n\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/platform-browser';\nimport * as ɵngcc2 from '@angular/common';\n\nconst _c0 = [\"toast-component\", \"\"];\nfunction Toast_button_0_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 5);\n ɵngcc0.ɵɵlistener(\"click\", function Toast_button_0_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ɵngcc0.ɵɵresetView(ctx_r5.remove()); });\n ɵngcc0.ɵɵelementStart(1, \"span\", 6);\n ɵngcc0.ɵɵtext(2, \"\\u00D7\");\n ɵngcc0.ɵɵelementEnd()();\n} }\nfunction Toast_div_1_ng_container_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r7 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\"[\", ctx_r7.duplicatesCount + 1, \"]\");\n} }\nfunction Toast_div_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\");\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵtemplate(2, Toast_div_1_ng_container_2_Template, 2, 1, \"ng-container\", 4);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassMap(ctx_r1.options.titleClass);\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx_r1.title);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r1.title, \" \");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r1.duplicatesCount);\n} }\nfunction Toast_div_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 7);\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassMap(ctx_r2.options.messageClass);\n ɵngcc0.ɵɵproperty(\"innerHTML\", ctx_r2.message, ɵngcc0.ɵɵsanitizeHtml);\n} }\nfunction Toast_div_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 8);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassMap(ctx_r3.options.messageClass);\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx_r3.message);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r3.message, \" \");\n} }\nfunction Toast_div_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\");\n ɵngcc0.ɵɵelement(1, \"div\", 9);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"width\", ctx_r4.width + \"%\");\n} }\nfunction ToastNoAnimation_button_0_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 5);\n ɵngcc0.ɵɵlistener(\"click\", function ToastNoAnimation_button_0_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ɵngcc0.ɵɵresetView(ctx_r5.remove()); });\n ɵngcc0.ɵɵelementStart(1, \"span\", 6);\n ɵngcc0.ɵɵtext(2, \"\\u00D7\");\n ɵngcc0.ɵɵelementEnd()();\n} }\nfunction ToastNoAnimation_div_1_ng_container_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r7 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\"[\", ctx_r7.duplicatesCount + 1, \"]\");\n} }\nfunction ToastNoAnimation_div_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\");\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵtemplate(2, ToastNoAnimation_div_1_ng_container_2_Template, 2, 1, \"ng-container\", 4);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassMap(ctx_r1.options.titleClass);\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx_r1.title);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r1.title, \" \");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r1.duplicatesCount);\n} }\nfunction ToastNoAnimation_div_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 7);\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassMap(ctx_r2.options.messageClass);\n ɵngcc0.ɵɵproperty(\"innerHTML\", ctx_r2.message, ɵngcc0.ɵɵsanitizeHtml);\n} }\nfunction ToastNoAnimation_div_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 8);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassMap(ctx_r3.options.messageClass);\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx_r3.message);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r3.message, \" \");\n} }\nfunction ToastNoAnimation_div_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\");\n ɵngcc0.ɵɵelement(1, \"div\", 9);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"width\", ctx_r4.width + \"%\");\n} }\nclass ToastContainerDirective {\n constructor(el) {\n this.el = el;\n }\n getContainerElement() {\n return this.el.nativeElement;\n }\n}\nToastContainerDirective.ɵfac = function ToastContainerDirective_Factory(t) { return new (t || ToastContainerDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nToastContainerDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ToastContainerDirective, selectors: [[\"\", \"toastContainer\", \"\"]], exportAs: [\"toastContainer\"] });\nToastContainerDirective.ctorParameters = () => [\n { type: ElementRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ToastContainerDirective, [{\n type: Directive,\n args: [{\n selector: '[toastContainer]',\n exportAs: 'toastContainer'\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }]; }, null); })();\nclass ToastContainerModule {\n}\nToastContainerModule.ɵfac = function ToastContainerModule_Factory(t) { return new (t || ToastContainerModule)(); };\nToastContainerModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: ToastContainerModule });\nToastContainerModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ToastContainerModule, [{\n type: NgModule,\n args: [{\n declarations: [ToastContainerDirective],\n exports: [ToastContainerDirective]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(ToastContainerModule, { declarations: [ToastContainerDirective], exports: [ToastContainerDirective] }); })();\n\n/**\n * Everything a toast needs to launch\n */\nclass ToastPackage {\n constructor(toastId, config, message, title, toastType, toastRef) {\n this.toastId = toastId;\n this.config = config;\n this.message = message;\n this.title = title;\n this.toastType = toastType;\n this.toastRef = toastRef;\n this._onTap = new Subject();\n this._onAction = new Subject();\n this.toastRef.afterClosed().subscribe(() => {\n this._onAction.complete();\n this._onTap.complete();\n });\n }\n /** Fired on click */\n triggerTap() {\n this._onTap.next();\n if (this.config.tapToDismiss) {\n this._onTap.complete();\n }\n }\n onTap() {\n return this._onTap.asObservable();\n }\n /** available for use in custom toast */\n triggerAction(action) {\n this._onAction.next(action);\n }\n onAction() {\n return this._onAction.asObservable();\n }\n}\nconst DefaultNoComponentGlobalConfig = {\n maxOpened: 0,\n autoDismiss: false,\n newestOnTop: true,\n preventDuplicates: false,\n countDuplicates: false,\n resetTimeoutOnDuplicate: false,\n includeTitleDuplicates: false,\n iconClasses: {\n error: 'toast-error',\n info: 'toast-info',\n success: 'toast-success',\n warning: 'toast-warning',\n },\n // Individual\n closeButton: false,\n disableTimeOut: false,\n timeOut: 5000,\n extendedTimeOut: 1000,\n enableHtml: false,\n progressBar: false,\n toastClass: 'ngx-toastr',\n positionClass: 'toast-top-right',\n titleClass: 'toast-title',\n messageClass: 'toast-message',\n easing: 'ease-in',\n easeTime: 300,\n tapToDismiss: true,\n onActivateTick: false,\n progressAnimation: 'decreasing',\n};\nconst TOAST_CONFIG = new InjectionToken('ToastConfig');\n\n/**\n * A `ComponentPortal` is a portal that instantiates some Component upon attachment.\n */\nclass ComponentPortal {\n constructor(component, injector) {\n this.component = component;\n this.injector = injector;\n }\n /** Attach this portal to a host. */\n attach(host, newestOnTop) {\n this._attachedHost = host;\n return host.attach(this, newestOnTop);\n }\n /** Detach this portal from its host */\n detach() {\n const host = this._attachedHost;\n if (host) {\n this._attachedHost = undefined;\n return host.detach();\n }\n }\n /** Whether this portal is attached to a host. */\n get isAttached() {\n return this._attachedHost != null;\n }\n /**\n * Sets the PortalHost reference without performing `attach()`. This is used directly by\n * the PortalHost when it is performing an `attach()` or `detach()`.\n */\n setAttachedHost(host) {\n this._attachedHost = host;\n }\n}\n/**\n * Partial implementation of PortalHost that only deals with attaching a\n * ComponentPortal\n */\nclass BasePortalHost {\n attach(portal, newestOnTop) {\n this._attachedPortal = portal;\n return this.attachComponentPortal(portal, newestOnTop);\n }\n detach() {\n if (this._attachedPortal) {\n this._attachedPortal.setAttachedHost();\n }\n this._attachedPortal = undefined;\n if (this._disposeFn) {\n this._disposeFn();\n this._disposeFn = undefined;\n }\n }\n setDisposeFn(fn) {\n this._disposeFn = fn;\n }\n}\n\n/**\n * A PortalHost for attaching portals to an arbitrary DOM element outside of the Angular\n * application context.\n *\n * This is the only part of the portal core that directly touches the DOM.\n */\nclass DomPortalHost extends BasePortalHost {\n constructor(_hostDomElement, _componentFactoryResolver, _appRef) {\n super();\n this._hostDomElement = _hostDomElement;\n this._componentFactoryResolver = _componentFactoryResolver;\n this._appRef = _appRef;\n }\n /**\n * Attach the given ComponentPortal to DOM element using the ComponentFactoryResolver.\n * @param portal Portal to be attached\n */\n attachComponentPortal(portal, newestOnTop) {\n const componentFactory = this._componentFactoryResolver.resolveComponentFactory(portal.component);\n let componentRef;\n // If the portal specifies a ViewContainerRef, we will use that as the attachment point\n // for the component (in terms of Angular's component tree, not rendering).\n // When the ViewContainerRef is missing, we use the factory to create the component directly\n // and then manually attach the ChangeDetector for that component to the application (which\n // happens automatically when using a ViewContainer).\n componentRef = componentFactory.create(portal.injector);\n // When creating a component outside of a ViewContainer, we need to manually register\n // its ChangeDetector with the application. This API is unfortunately not yet published\n // in Angular core. The change detector must also be deregistered when the component\n // is destroyed to prevent memory leaks.\n this._appRef.attachView(componentRef.hostView);\n this.setDisposeFn(() => {\n this._appRef.detachView(componentRef.hostView);\n componentRef.destroy();\n });\n // At this point the component has been instantiated, so we move it to the location in the DOM\n // where we want it to be rendered.\n if (newestOnTop) {\n this._hostDomElement.insertBefore(this._getComponentRootNode(componentRef), this._hostDomElement.firstChild);\n }\n else {\n this._hostDomElement.appendChild(this._getComponentRootNode(componentRef));\n }\n return componentRef;\n }\n /** Gets the root HTMLElement for an instantiated component. */\n _getComponentRootNode(componentRef) {\n return componentRef.hostView.rootNodes[0];\n }\n}\n\n/** Container inside which all toasts will render. */\nclass OverlayContainer {\n constructor(_document) {\n this._document = _document;\n }\n ngOnDestroy() {\n if (this._containerElement && this._containerElement.parentNode) {\n this._containerElement.parentNode.removeChild(this._containerElement);\n }\n }\n /**\n * This method returns the overlay container element. It will lazily\n * create the element the first time it is called to facilitate using\n * the container in non-browser environments.\n * @returns the container element\n */\n getContainerElement() {\n if (!this._containerElement) {\n this._createContainer();\n }\n return this._containerElement;\n }\n /**\n * Create the overlay container element, which is simply a div\n * with the 'cdk-overlay-container' class on the document body.\n */\n _createContainer() {\n const container = this._document.createElement('div');\n container.classList.add('overlay-container');\n this._document.body.appendChild(container);\n this._containerElement = container;\n }\n}\nOverlayContainer.ɵfac = function OverlayContainer_Factory(t) { return new (t || OverlayContainer)(ɵngcc0.ɵɵinject(DOCUMENT)); };\nOverlayContainer.ɵprov = ɵɵdefineInjectable({ factory: function OverlayContainer_Factory() { return new OverlayContainer(ɵɵinject(DOCUMENT)); }, token: OverlayContainer, providedIn: \"root\" });\nOverlayContainer.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(OverlayContainer, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, null); })();\n\n/**\n * Reference to an overlay that has been created with the Overlay service.\n * Used to manipulate or dispose of said overlay.\n */\nclass OverlayRef {\n constructor(_portalHost) {\n this._portalHost = _portalHost;\n }\n attach(portal, newestOnTop = true) {\n return this._portalHost.attach(portal, newestOnTop);\n }\n /**\n * Detaches an overlay from a portal.\n * @returns Resolves when the overlay has been detached.\n */\n detach() {\n return this._portalHost.detach();\n }\n}\n\n/* tslint:disable:no-non-null-assertion */\n/**\n * Service to create Overlays. Overlays are dynamically added pieces of floating UI, meant to be\n * used as a low-level building building block for other components. Dialogs, tooltips, menus,\n * selects, etc. can all be built using overlays. The service should primarily be used by authors\n * of re-usable components rather than developers building end-user applications.\n *\n * An overlay *is* a PortalHost, so any kind of Portal can be loaded into one.\n */\nclass Overlay {\n constructor(_overlayContainer, _componentFactoryResolver, _appRef, _document) {\n this._overlayContainer = _overlayContainer;\n this._componentFactoryResolver = _componentFactoryResolver;\n this._appRef = _appRef;\n this._document = _document;\n // Namespace panes by overlay container\n this._paneElements = new Map();\n }\n /**\n * Creates an overlay.\n * @returns A reference to the created overlay.\n */\n create(positionClass, overlayContainer) {\n // get existing pane if possible\n return this._createOverlayRef(this.getPaneElement(positionClass, overlayContainer));\n }\n getPaneElement(positionClass = '', overlayContainer) {\n if (!this._paneElements.get(overlayContainer)) {\n this._paneElements.set(overlayContainer, {});\n }\n if (!this._paneElements.get(overlayContainer)[positionClass]) {\n this._paneElements.get(overlayContainer)[positionClass] = this._createPaneElement(positionClass, overlayContainer);\n }\n return this._paneElements.get(overlayContainer)[positionClass];\n }\n /**\n * Creates the DOM element for an overlay and appends it to the overlay container.\n * @returns Newly-created pane element\n */\n _createPaneElement(positionClass, overlayContainer) {\n const pane = this._document.createElement('div');\n pane.id = 'toast-container';\n pane.classList.add(positionClass);\n pane.classList.add('toast-container');\n if (!overlayContainer) {\n this._overlayContainer.getContainerElement().appendChild(pane);\n }\n else {\n overlayContainer.getContainerElement().appendChild(pane);\n }\n return pane;\n }\n /**\n * Create a DomPortalHost into which the overlay content can be loaded.\n * @param pane The DOM element to turn into a portal host.\n * @returns A portal host for the given DOM element.\n */\n _createPortalHost(pane) {\n return new DomPortalHost(pane, this._componentFactoryResolver, this._appRef);\n }\n /**\n * Creates an OverlayRef for an overlay in the given DOM element.\n * @param pane DOM element for the overlay\n */\n _createOverlayRef(pane) {\n return new OverlayRef(this._createPortalHost(pane));\n }\n}\nOverlay.ɵfac = function Overlay_Factory(t) { return new (t || Overlay)(ɵngcc0.ɵɵinject(OverlayContainer), ɵngcc0.ɵɵinject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵinject(ɵngcc0.ApplicationRef), ɵngcc0.ɵɵinject(DOCUMENT)); };\nOverlay.ɵprov = ɵɵdefineInjectable({ factory: function Overlay_Factory() { return new Overlay(ɵɵinject(OverlayContainer), ɵɵinject(ComponentFactoryResolver), ɵɵinject(ApplicationRef), ɵɵinject(DOCUMENT)); }, token: Overlay, providedIn: \"root\" });\nOverlay.ctorParameters = () => [\n { type: OverlayContainer },\n { type: ComponentFactoryResolver },\n { type: ApplicationRef },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(Overlay, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: OverlayContainer }, { type: ɵngcc0.ComponentFactoryResolver }, { type: ɵngcc0.ApplicationRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, null); })();\n\n/**\n * Reference to a toast opened via the Toastr service.\n */\nclass ToastRef {\n constructor(_overlayRef) {\n this._overlayRef = _overlayRef;\n /** Count of duplicates of this toast */\n this.duplicatesCount = 0;\n /** Subject for notifying the user that the toast has finished closing. */\n this._afterClosed = new Subject();\n /** triggered when toast is activated */\n this._activate = new Subject();\n /** notifies the toast that it should close before the timeout */\n this._manualClose = new Subject();\n /** notifies the toast that it should reset the timeouts */\n this._resetTimeout = new Subject();\n /** notifies the toast that it should count a duplicate toast */\n this._countDuplicate = new Subject();\n }\n manualClose() {\n this._manualClose.next();\n this._manualClose.complete();\n }\n manualClosed() {\n return this._manualClose.asObservable();\n }\n timeoutReset() {\n return this._resetTimeout.asObservable();\n }\n countDuplicate() {\n return this._countDuplicate.asObservable();\n }\n /**\n * Close the toast.\n */\n close() {\n this._overlayRef.detach();\n this._afterClosed.next();\n this._manualClose.next();\n this._afterClosed.complete();\n this._manualClose.complete();\n this._activate.complete();\n this._resetTimeout.complete();\n this._countDuplicate.complete();\n }\n /** Gets an observable that is notified when the toast is finished closing. */\n afterClosed() {\n return this._afterClosed.asObservable();\n }\n isInactive() {\n return this._activate.isStopped;\n }\n activate() {\n this._activate.next();\n this._activate.complete();\n }\n /** Gets an observable that is notified when the toast has started opening. */\n afterActivate() {\n return this._activate.asObservable();\n }\n /** Reset the toast timouts and count duplicates */\n onDuplicate(resetTimeout, countDuplicate) {\n if (resetTimeout) {\n this._resetTimeout.next();\n }\n if (countDuplicate) {\n this._countDuplicate.next(++this.duplicatesCount);\n }\n }\n}\n/** Custom injector type specifically for instantiating components with a toast. */\nclass ToastInjector {\n constructor(_toastPackage, _parentInjector) {\n this._toastPackage = _toastPackage;\n this._parentInjector = _parentInjector;\n }\n get(token, notFoundValue, flags) {\n if (token === ToastPackage) {\n return this._toastPackage;\n }\n return this._parentInjector.get(token, notFoundValue, flags);\n }\n}\n\nclass ToastrService {\n constructor(token, overlay, _injector, sanitizer, ngZone) {\n this.overlay = overlay;\n this._injector = _injector;\n this.sanitizer = sanitizer;\n this.ngZone = ngZone;\n this.currentlyActive = 0;\n this.toasts = [];\n this.index = 0;\n this.toastrConfig = Object.assign(Object.assign({}, token.default), token.config);\n if (token.config.iconClasses) {\n this.toastrConfig.iconClasses = Object.assign(Object.assign({}, token.default.iconClasses), token.config.iconClasses);\n }\n }\n /** show toast */\n show(message, title, override = {}, type = '') {\n return this._preBuildNotification(type, message, title, this.applyConfig(override));\n }\n /** show successful toast */\n success(message, title, override = {}) {\n const type = this.toastrConfig.iconClasses.success || '';\n return this._preBuildNotification(type, message, title, this.applyConfig(override));\n }\n /** show error toast */\n error(message, title, override = {}) {\n const type = this.toastrConfig.iconClasses.error || '';\n return this._preBuildNotification(type, message, title, this.applyConfig(override));\n }\n /** show info toast */\n info(message, title, override = {}) {\n const type = this.toastrConfig.iconClasses.info || '';\n return this._preBuildNotification(type, message, title, this.applyConfig(override));\n }\n /** show warning toast */\n warning(message, title, override = {}) {\n const type = this.toastrConfig.iconClasses.warning || '';\n return this._preBuildNotification(type, message, title, this.applyConfig(override));\n }\n /**\n * Remove all or a single toast by id\n */\n clear(toastId) {\n // Call every toastRef manualClose function\n for (const toast of this.toasts) {\n if (toastId !== undefined) {\n if (toast.toastId === toastId) {\n toast.toastRef.manualClose();\n return;\n }\n }\n else {\n toast.toastRef.manualClose();\n }\n }\n }\n /**\n * Remove and destroy a single toast by id\n */\n remove(toastId) {\n const found = this._findToast(toastId);\n if (!found) {\n return false;\n }\n found.activeToast.toastRef.close();\n this.toasts.splice(found.index, 1);\n this.currentlyActive = this.currentlyActive - 1;\n if (!this.toastrConfig.maxOpened || !this.toasts.length) {\n return false;\n }\n if (this.currentlyActive < this.toastrConfig.maxOpened && this.toasts[this.currentlyActive]) {\n const p = this.toasts[this.currentlyActive].toastRef;\n if (!p.isInactive()) {\n this.currentlyActive = this.currentlyActive + 1;\n p.activate();\n }\n }\n return true;\n }\n /**\n * Determines if toast message is already shown\n */\n findDuplicate(title = '', message = '', resetOnDuplicate, countDuplicates) {\n const { includeTitleDuplicates } = this.toastrConfig;\n for (const toast of this.toasts) {\n const hasDuplicateTitle = includeTitleDuplicates && toast.title === title;\n if ((!includeTitleDuplicates || hasDuplicateTitle) && toast.message === message) {\n toast.toastRef.onDuplicate(resetOnDuplicate, countDuplicates);\n return toast;\n }\n }\n return null;\n }\n /** create a clone of global config and apply individual settings */\n applyConfig(override = {}) {\n return Object.assign(Object.assign({}, this.toastrConfig), override);\n }\n /**\n * Find toast object by id\n */\n _findToast(toastId) {\n for (let i = 0; i < this.toasts.length; i++) {\n if (this.toasts[i].toastId === toastId) {\n return { index: i, activeToast: this.toasts[i] };\n }\n }\n return null;\n }\n /**\n * Determines the need to run inside angular's zone then builds the toast\n */\n _preBuildNotification(toastType, message, title, config) {\n if (config.onActivateTick) {\n return this.ngZone.run(() => this._buildNotification(toastType, message, title, config));\n }\n return this._buildNotification(toastType, message, title, config);\n }\n /**\n * Creates and attaches toast data to component\n * returns the active toast, or in case preventDuplicates is enabled the original/non-duplicate active toast.\n */\n _buildNotification(toastType, message, title, config) {\n if (!config.toastComponent) {\n throw new Error('toastComponent required');\n }\n // max opened and auto dismiss = true\n // if timeout = 0 resetting it would result in setting this.hideTime = Date.now(). Hence, we only want to reset timeout if there is\n // a timeout at all\n const duplicate = this.findDuplicate(title, message, this.toastrConfig.resetTimeoutOnDuplicate && config.timeOut > 0, this.toastrConfig.countDuplicates);\n if (((this.toastrConfig.includeTitleDuplicates && title) || message) &&\n this.toastrConfig.preventDuplicates &&\n duplicate !== null) {\n return duplicate;\n }\n this.previousToastMessage = message;\n let keepInactive = false;\n if (this.toastrConfig.maxOpened && this.currentlyActive >= this.toastrConfig.maxOpened) {\n keepInactive = true;\n if (this.toastrConfig.autoDismiss) {\n this.clear(this.toasts[0].toastId);\n }\n }\n const overlayRef = this.overlay.create(config.positionClass, this.overlayContainer);\n this.index = this.index + 1;\n let sanitizedMessage = message;\n if (message && config.enableHtml) {\n sanitizedMessage = this.sanitizer.sanitize(SecurityContext.HTML, message);\n }\n const toastRef = new ToastRef(overlayRef);\n const toastPackage = new ToastPackage(this.index, config, sanitizedMessage, title, toastType, toastRef);\n const toastInjector = new ToastInjector(toastPackage, this._injector);\n const component = new ComponentPortal(config.toastComponent, toastInjector);\n const portal = overlayRef.attach(component, this.toastrConfig.newestOnTop);\n toastRef.componentInstance = portal.instance;\n const ins = {\n toastId: this.index,\n title: title || '',\n message: message || '',\n toastRef,\n onShown: toastRef.afterActivate(),\n onHidden: toastRef.afterClosed(),\n onTap: toastPackage.onTap(),\n onAction: toastPackage.onAction(),\n portal,\n };\n if (!keepInactive) {\n this.currentlyActive = this.currentlyActive + 1;\n setTimeout(() => {\n ins.toastRef.activate();\n });\n }\n this.toasts.push(ins);\n return ins;\n }\n}\nToastrService.ɵfac = function ToastrService_Factory(t) { return new (t || ToastrService)(ɵngcc0.ɵɵinject(TOAST_CONFIG), ɵngcc0.ɵɵinject(Overlay), ɵngcc0.ɵɵinject(ɵngcc0.Injector), ɵngcc0.ɵɵinject(ɵngcc1.DomSanitizer), ɵngcc0.ɵɵinject(ɵngcc0.NgZone)); };\nToastrService.ɵprov = ɵɵdefineInjectable({ factory: function ToastrService_Factory() { return new ToastrService(ɵɵinject(TOAST_CONFIG), ɵɵinject(Overlay), ɵɵinject(INJECTOR), ɵɵinject(DomSanitizer), ɵɵinject(NgZone)); }, token: ToastrService, providedIn: \"root\" });\nToastrService.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [TOAST_CONFIG,] }] },\n { type: Overlay },\n { type: Injector },\n { type: DomSanitizer },\n { type: NgZone }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ToastrService, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [TOAST_CONFIG]\n }] }, { type: Overlay }, { type: ɵngcc0.Injector }, { type: ɵngcc1.DomSanitizer }, { type: ɵngcc0.NgZone }]; }, null); })();\n\nclass Toast {\n constructor(toastrService, toastPackage, ngZone) {\n this.toastrService = toastrService;\n this.toastPackage = toastPackage;\n this.ngZone = ngZone;\n /** width of progress bar */\n this.width = -1;\n /** a combination of toast type and options.toastClass */\n this.toastClasses = '';\n /** controls animation */\n this.state = {\n value: 'inactive',\n params: {\n easeTime: this.toastPackage.config.easeTime,\n easing: 'ease-in'\n }\n };\n this.message = toastPackage.message;\n this.title = toastPackage.title;\n this.options = toastPackage.config;\n this.originalTimeout = toastPackage.config.timeOut;\n this.toastClasses = `${toastPackage.toastType} ${toastPackage.config.toastClass}`;\n this.sub = toastPackage.toastRef.afterActivate().subscribe(() => {\n this.activateToast();\n });\n this.sub1 = toastPackage.toastRef.manualClosed().subscribe(() => {\n this.remove();\n });\n this.sub2 = toastPackage.toastRef.timeoutReset().subscribe(() => {\n this.resetTimeout();\n });\n this.sub3 = toastPackage.toastRef.countDuplicate().subscribe(count => {\n this.duplicatesCount = count;\n });\n }\n /** hides component when waiting to be displayed */\n get displayStyle() {\n if (this.state.value === 'inactive') {\n return 'none';\n }\n return;\n }\n ngOnDestroy() {\n this.sub.unsubscribe();\n this.sub1.unsubscribe();\n this.sub2.unsubscribe();\n this.sub3.unsubscribe();\n clearInterval(this.intervalId);\n clearTimeout(this.timeout);\n }\n /**\n * activates toast and sets timeout\n */\n activateToast() {\n this.state = Object.assign(Object.assign({}, this.state), { value: 'active' });\n if (!(this.options.disableTimeOut === true || this.options.disableTimeOut === 'timeOut') && this.options.timeOut) {\n this.outsideTimeout(() => this.remove(), this.options.timeOut);\n this.hideTime = new Date().getTime() + this.options.timeOut;\n if (this.options.progressBar) {\n this.outsideInterval(() => this.updateProgress(), 10);\n }\n }\n }\n /**\n * updates progress bar width\n */\n updateProgress() {\n if (this.width === 0 || this.width === 100 || !this.options.timeOut) {\n return;\n }\n const now = new Date().getTime();\n const remaining = this.hideTime - now;\n this.width = (remaining / this.options.timeOut) * 100;\n if (this.options.progressAnimation === 'increasing') {\n this.width = 100 - this.width;\n }\n if (this.width <= 0) {\n this.width = 0;\n }\n if (this.width >= 100) {\n this.width = 100;\n }\n }\n resetTimeout() {\n clearTimeout(this.timeout);\n clearInterval(this.intervalId);\n this.state = Object.assign(Object.assign({}, this.state), { value: 'active' });\n this.outsideTimeout(() => this.remove(), this.originalTimeout);\n this.options.timeOut = this.originalTimeout;\n this.hideTime = new Date().getTime() + (this.options.timeOut || 0);\n this.width = -1;\n if (this.options.progressBar) {\n this.outsideInterval(() => this.updateProgress(), 10);\n }\n }\n /**\n * tells toastrService to remove this toast after animation time\n */\n remove() {\n if (this.state.value === 'removed') {\n return;\n }\n clearTimeout(this.timeout);\n this.state = Object.assign(Object.assign({}, this.state), { value: 'removed' });\n this.outsideTimeout(() => this.toastrService.remove(this.toastPackage.toastId), +this.toastPackage.config.easeTime);\n }\n tapToast() {\n if (this.state.value === 'removed') {\n return;\n }\n this.toastPackage.triggerTap();\n if (this.options.tapToDismiss) {\n this.remove();\n }\n }\n stickAround() {\n if (this.state.value === 'removed') {\n return;\n }\n clearTimeout(this.timeout);\n this.options.timeOut = 0;\n this.hideTime = 0;\n // disable progressBar\n clearInterval(this.intervalId);\n this.width = 0;\n }\n delayedHideToast() {\n if ((this.options.disableTimeOut === true || this.options.disableTimeOut === 'extendedTimeOut') ||\n this.options.extendedTimeOut === 0 ||\n this.state.value === 'removed') {\n return;\n }\n this.outsideTimeout(() => this.remove(), this.options.extendedTimeOut);\n this.options.timeOut = this.options.extendedTimeOut;\n this.hideTime = new Date().getTime() + (this.options.timeOut || 0);\n this.width = -1;\n if (this.options.progressBar) {\n this.outsideInterval(() => this.updateProgress(), 10);\n }\n }\n outsideTimeout(func, timeout) {\n if (this.ngZone) {\n this.ngZone.runOutsideAngular(() => (this.timeout = setTimeout(() => this.runInsideAngular(func), timeout)));\n }\n else {\n this.timeout = setTimeout(() => func(), timeout);\n }\n }\n outsideInterval(func, timeout) {\n if (this.ngZone) {\n this.ngZone.runOutsideAngular(() => (this.intervalId = setInterval(() => this.runInsideAngular(func), timeout)));\n }\n else {\n this.intervalId = setInterval(() => func(), timeout);\n }\n }\n runInsideAngular(func) {\n if (this.ngZone) {\n this.ngZone.run(() => func());\n }\n else {\n func();\n }\n }\n}\nToast.ɵfac = function Toast_Factory(t) { return new (t || Toast)(ɵngcc0.ɵɵdirectiveInject(ToastrService), ɵngcc0.ɵɵdirectiveInject(ToastPackage), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nToast.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: Toast, selectors: [[\"\", \"toast-component\", \"\"]], hostVars: 5, hostBindings: function Toast_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function Toast_click_HostBindingHandler() { return ctx.tapToast(); })(\"mouseenter\", function Toast_mouseenter_HostBindingHandler() { return ctx.stickAround(); })(\"mouseleave\", function Toast_mouseleave_HostBindingHandler() { return ctx.delayedHideToast(); });\n } if (rf & 2) {\n ɵngcc0.ɵɵsyntheticHostProperty(\"@flyInOut\", ctx.state);\n ɵngcc0.ɵɵclassMap(ctx.toastClasses);\n ɵngcc0.ɵɵstyleProp(\"display\", ctx.displayStyle);\n } }, attrs: _c0, decls: 5, vars: 5, consts: [[\"class\", \"toast-close-button\", \"aria-label\", \"Close\", 3, \"click\", 4, \"ngIf\"], [3, \"class\", 4, \"ngIf\"], [\"role\", \"alertdialog\", \"aria-live\", \"polite\", 3, \"class\", \"innerHTML\", 4, \"ngIf\"], [\"role\", \"alertdialog\", \"aria-live\", \"polite\", 3, \"class\", 4, \"ngIf\"], [4, \"ngIf\"], [\"aria-label\", \"Close\", 1, \"toast-close-button\", 3, \"click\"], [\"aria-hidden\", \"true\"], [\"role\", \"alertdialog\", \"aria-live\", \"polite\", 3, \"innerHTML\"], [\"role\", \"alertdialog\", \"aria-live\", \"polite\"], [1, \"toast-progress\"]], template: function Toast_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, Toast_button_0_Template, 3, 0, \"button\", 0);\n ɵngcc0.ɵɵtemplate(1, Toast_div_1_Template, 3, 5, \"div\", 1);\n ɵngcc0.ɵɵtemplate(2, Toast_div_2_Template, 1, 3, \"div\", 2);\n ɵngcc0.ɵɵtemplate(3, Toast_div_3_Template, 2, 4, \"div\", 3);\n ɵngcc0.ɵɵtemplate(4, Toast_div_4_Template, 2, 2, \"div\", 4);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.options.closeButton);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.title);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.message && ctx.options.enableHtml);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.message && !ctx.options.enableHtml);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.options.progressBar);\n } }, dependencies: [ɵngcc2.NgIf], encapsulation: 2, data: { animation: [\n trigger('flyInOut', [\n state('inactive', style({ opacity: 0 })),\n state('active', style({ opacity: 1 })),\n state('removed', style({ opacity: 0 })),\n transition('inactive => active', animate('{{ easeTime }}ms {{ easing }}')),\n transition('active => removed', animate('{{ easeTime }}ms {{ easing }}'))\n ])\n ] } });\nToast.ctorParameters = () => [\n { type: ToastrService },\n { type: ToastPackage },\n { type: NgZone }\n];\nToast.propDecorators = {\n toastClasses: [{ type: HostBinding, args: ['class',] }],\n state: [{ type: HostBinding, args: ['@flyInOut',] }],\n displayStyle: [{ type: HostBinding, args: ['style.display',] }],\n tapToast: [{ type: HostListener, args: ['click',] }],\n stickAround: [{ type: HostListener, args: ['mouseenter',] }],\n delayedHideToast: [{ type: HostListener, args: ['mouseleave',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(Toast, [{\n type: Component,\n args: [{\n selector: '[toast-component]',\n template: `\n \n
\n {{ title }} [{{ duplicatesCount + 1 }}]\n
\n
\n
\n
\n {{ message }}\n
\n
\n
\n
\n `,\n animations: [\n trigger('flyInOut', [\n state('inactive', style({ opacity: 0 })),\n state('active', style({ opacity: 1 })),\n state('removed', style({ opacity: 0 })),\n transition('inactive => active', animate('{{ easeTime }}ms {{ easing }}')),\n transition('active => removed', animate('{{ easeTime }}ms {{ easing }}'))\n ])\n ],\n preserveWhitespaces: false\n }]\n }], function () { return [{ type: ToastrService }, { type: ToastPackage }, { type: ɵngcc0.NgZone }]; }, { toastClasses: [{\n type: HostBinding,\n args: ['class']\n }], state: [{\n type: HostBinding,\n args: ['@flyInOut']\n }], displayStyle: [{\n type: HostBinding,\n args: ['style.display']\n }], tapToast: [{\n type: HostListener,\n args: ['click']\n }], stickAround: [{\n type: HostListener,\n args: ['mouseenter']\n }], delayedHideToast: [{\n type: HostListener,\n args: ['mouseleave']\n }] }); })();\n\nconst DefaultGlobalConfig = Object.assign(Object.assign({}, DefaultNoComponentGlobalConfig), { toastComponent: Toast });\nclass ToastrModule {\n static forRoot(config = {}) {\n return {\n ngModule: ToastrModule,\n providers: [\n {\n provide: TOAST_CONFIG,\n useValue: {\n default: DefaultGlobalConfig,\n config,\n },\n },\n ],\n };\n }\n}\nToastrModule.ɵfac = function ToastrModule_Factory(t) { return new (t || ToastrModule)(); };\nToastrModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: ToastrModule });\nToastrModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [CommonModule] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ToastrModule, [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n declarations: [Toast],\n exports: [Toast],\n entryComponents: [Toast]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(ToastrModule, { declarations: function () { return [Toast]; }, imports: function () { return [CommonModule]; }, exports: function () { return [Toast]; } }); })();\nclass ToastrComponentlessModule {\n static forRoot(config = {}) {\n return {\n ngModule: ToastrModule,\n providers: [\n {\n provide: TOAST_CONFIG,\n useValue: {\n default: DefaultNoComponentGlobalConfig,\n config,\n },\n },\n ],\n };\n }\n}\nToastrComponentlessModule.ɵfac = function ToastrComponentlessModule_Factory(t) { return new (t || ToastrComponentlessModule)(); };\nToastrComponentlessModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: ToastrComponentlessModule });\nToastrComponentlessModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [CommonModule] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ToastrComponentlessModule, [{\n type: NgModule,\n args: [{\n imports: [CommonModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(ToastrComponentlessModule, { imports: function () { return [CommonModule]; } }); })();\n\nclass ToastNoAnimation {\n constructor(toastrService, toastPackage, appRef) {\n this.toastrService = toastrService;\n this.toastPackage = toastPackage;\n this.appRef = appRef;\n /** width of progress bar */\n this.width = -1;\n /** a combination of toast type and options.toastClass */\n this.toastClasses = '';\n /** controls animation */\n this.state = 'inactive';\n this.message = toastPackage.message;\n this.title = toastPackage.title;\n this.options = toastPackage.config;\n this.originalTimeout = toastPackage.config.timeOut;\n this.toastClasses = `${toastPackage.toastType} ${toastPackage.config.toastClass}`;\n this.sub = toastPackage.toastRef.afterActivate().subscribe(() => {\n this.activateToast();\n });\n this.sub1 = toastPackage.toastRef.manualClosed().subscribe(() => {\n this.remove();\n });\n this.sub2 = toastPackage.toastRef.timeoutReset().subscribe(() => {\n this.resetTimeout();\n });\n this.sub3 = toastPackage.toastRef.countDuplicate().subscribe(count => {\n this.duplicatesCount = count;\n });\n }\n /** hides component when waiting to be displayed */\n get displayStyle() {\n if (this.state === 'inactive') {\n return 'none';\n }\n }\n ngOnDestroy() {\n this.sub.unsubscribe();\n this.sub1.unsubscribe();\n this.sub2.unsubscribe();\n this.sub3.unsubscribe();\n clearInterval(this.intervalId);\n clearTimeout(this.timeout);\n }\n /**\n * activates toast and sets timeout\n */\n activateToast() {\n this.state = 'active';\n if (!(this.options.disableTimeOut === true || this.options.disableTimeOut === 'timeOut') && this.options.timeOut) {\n this.timeout = setTimeout(() => {\n this.remove();\n }, this.options.timeOut);\n this.hideTime = new Date().getTime() + this.options.timeOut;\n if (this.options.progressBar) {\n this.intervalId = setInterval(() => this.updateProgress(), 10);\n }\n }\n if (this.options.onActivateTick) {\n this.appRef.tick();\n }\n }\n /**\n * updates progress bar width\n */\n updateProgress() {\n if (this.width === 0 || this.width === 100 || !this.options.timeOut) {\n return;\n }\n const now = new Date().getTime();\n const remaining = this.hideTime - now;\n this.width = (remaining / this.options.timeOut) * 100;\n if (this.options.progressAnimation === 'increasing') {\n this.width = 100 - this.width;\n }\n if (this.width <= 0) {\n this.width = 0;\n }\n if (this.width >= 100) {\n this.width = 100;\n }\n }\n resetTimeout() {\n clearTimeout(this.timeout);\n clearInterval(this.intervalId);\n this.state = 'active';\n this.options.timeOut = this.originalTimeout;\n this.timeout = setTimeout(() => this.remove(), this.originalTimeout);\n this.hideTime = new Date().getTime() + (this.originalTimeout || 0);\n this.width = -1;\n if (this.options.progressBar) {\n this.intervalId = setInterval(() => this.updateProgress(), 10);\n }\n }\n /**\n * tells toastrService to remove this toast after animation time\n */\n remove() {\n if (this.state === 'removed') {\n return;\n }\n clearTimeout(this.timeout);\n this.state = 'removed';\n this.timeout = setTimeout(() => this.toastrService.remove(this.toastPackage.toastId));\n }\n tapToast() {\n if (this.state === 'removed') {\n return;\n }\n this.toastPackage.triggerTap();\n if (this.options.tapToDismiss) {\n this.remove();\n }\n }\n stickAround() {\n if (this.state === 'removed') {\n return;\n }\n clearTimeout(this.timeout);\n this.options.timeOut = 0;\n this.hideTime = 0;\n // disable progressBar\n clearInterval(this.intervalId);\n this.width = 0;\n }\n delayedHideToast() {\n if ((this.options.disableTimeOut === true || this.options.disableTimeOut === 'extendedTimeOut') ||\n this.options.extendedTimeOut === 0 ||\n this.state === 'removed') {\n return;\n }\n this.timeout = setTimeout(() => this.remove(), this.options.extendedTimeOut);\n this.options.timeOut = this.options.extendedTimeOut;\n this.hideTime = new Date().getTime() + (this.options.timeOut || 0);\n this.width = -1;\n if (this.options.progressBar) {\n this.intervalId = setInterval(() => this.updateProgress(), 10);\n }\n }\n}\nToastNoAnimation.ɵfac = function ToastNoAnimation_Factory(t) { return new (t || ToastNoAnimation)(ɵngcc0.ɵɵdirectiveInject(ToastrService), ɵngcc0.ɵɵdirectiveInject(ToastPackage), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ApplicationRef)); };\nToastNoAnimation.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ToastNoAnimation, selectors: [[\"\", \"toast-component\", \"\"]], hostVars: 4, hostBindings: function ToastNoAnimation_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function ToastNoAnimation_click_HostBindingHandler() { return ctx.tapToast(); })(\"mouseenter\", function ToastNoAnimation_mouseenter_HostBindingHandler() { return ctx.stickAround(); })(\"mouseleave\", function ToastNoAnimation_mouseleave_HostBindingHandler() { return ctx.delayedHideToast(); });\n } if (rf & 2) {\n ɵngcc0.ɵɵclassMap(ctx.toastClasses);\n ɵngcc0.ɵɵstyleProp(\"display\", ctx.displayStyle);\n } }, attrs: _c0, decls: 5, vars: 5, consts: [[\"class\", \"toast-close-button\", \"aria-label\", \"Close\", 3, \"click\", 4, \"ngIf\"], [3, \"class\", 4, \"ngIf\"], [\"role\", \"alert\", \"aria-live\", \"polite\", 3, \"class\", \"innerHTML\", 4, \"ngIf\"], [\"role\", \"alert\", \"aria-live\", \"polite\", 3, \"class\", 4, \"ngIf\"], [4, \"ngIf\"], [\"aria-label\", \"Close\", 1, \"toast-close-button\", 3, \"click\"], [\"aria-hidden\", \"true\"], [\"role\", \"alert\", \"aria-live\", \"polite\", 3, \"innerHTML\"], [\"role\", \"alert\", \"aria-live\", \"polite\"], [1, \"toast-progress\"]], template: function ToastNoAnimation_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, ToastNoAnimation_button_0_Template, 3, 0, \"button\", 0);\n ɵngcc0.ɵɵtemplate(1, ToastNoAnimation_div_1_Template, 3, 5, \"div\", 1);\n ɵngcc0.ɵɵtemplate(2, ToastNoAnimation_div_2_Template, 1, 3, \"div\", 2);\n ɵngcc0.ɵɵtemplate(3, ToastNoAnimation_div_3_Template, 2, 4, \"div\", 3);\n ɵngcc0.ɵɵtemplate(4, ToastNoAnimation_div_4_Template, 2, 2, \"div\", 4);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.options.closeButton);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.title);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.message && ctx.options.enableHtml);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.message && !ctx.options.enableHtml);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.options.progressBar);\n } }, dependencies: [ɵngcc2.NgIf], encapsulation: 2 });\nToastNoAnimation.ctorParameters = () => [\n { type: ToastrService },\n { type: ToastPackage },\n { type: ApplicationRef }\n];\nToastNoAnimation.propDecorators = {\n toastClasses: [{ type: HostBinding, args: ['class',] }],\n displayStyle: [{ type: HostBinding, args: ['style.display',] }],\n tapToast: [{ type: HostListener, args: ['click',] }],\n stickAround: [{ type: HostListener, args: ['mouseenter',] }],\n delayedHideToast: [{ type: HostListener, args: ['mouseleave',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ToastNoAnimation, [{\n type: Component,\n args: [{\n selector: '[toast-component]',\n template: `\n \n
\n {{ title }} [{{ duplicatesCount + 1 }}]\n
\n
\n
\n
\n {{ message }}\n
\n
\n
\n
\n `\n }]\n }], function () { return [{ type: ToastrService }, { type: ToastPackage }, { type: ɵngcc0.ApplicationRef }]; }, { toastClasses: [{\n type: HostBinding,\n args: ['class']\n }], displayStyle: [{\n type: HostBinding,\n args: ['style.display']\n }], tapToast: [{\n type: HostListener,\n args: ['click']\n }], stickAround: [{\n type: HostListener,\n args: ['mouseenter']\n }], delayedHideToast: [{\n type: HostListener,\n args: ['mouseleave']\n }] }); })();\nconst DefaultNoAnimationsGlobalConfig = Object.assign(Object.assign({}, DefaultNoComponentGlobalConfig), { toastComponent: ToastNoAnimation });\nclass ToastNoAnimationModule {\n static forRoot(config = {}) {\n return {\n ngModule: ToastNoAnimationModule,\n providers: [\n {\n provide: TOAST_CONFIG,\n useValue: {\n default: DefaultNoAnimationsGlobalConfig,\n config,\n },\n },\n ],\n };\n }\n}\nToastNoAnimationModule.ɵfac = function ToastNoAnimationModule_Factory(t) { return new (t || ToastNoAnimationModule)(); };\nToastNoAnimationModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: ToastNoAnimationModule });\nToastNoAnimationModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [CommonModule] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ToastNoAnimationModule, [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n declarations: [ToastNoAnimation],\n exports: [ToastNoAnimation],\n entryComponents: [ToastNoAnimation]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(ToastNoAnimationModule, { declarations: function () { return [ToastNoAnimation]; }, imports: function () { return [CommonModule]; }, exports: function () { return [ToastNoAnimation]; } }); })();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BasePortalHost, ComponentPortal, DefaultGlobalConfig, DefaultNoAnimationsGlobalConfig, DefaultNoComponentGlobalConfig, Overlay, OverlayContainer, OverlayRef, TOAST_CONFIG, Toast, ToastContainerDirective, ToastContainerModule, ToastInjector, ToastNoAnimation, ToastNoAnimationModule, ToastPackage, ToastRef, ToastrComponentlessModule, ToastrModule, ToastrService };\n\n","import { Subject } from './Subject';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\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 if (subscription && !subscription.closed) {\n subscriber.next(this._value);\n }\n return subscription;\n }\n getValue() {\n if (this.hasError) {\n throw this.thrownError;\n }\n else if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n else {\n return this._value;\n }\n }\n next(value) {\n super.next(this._value = value);\n }\n}\n","import { empty } from './observable/empty';\nimport { of } from './observable/of';\nimport { throwError } from './observable/throwError';\nexport var NotificationKind;\n(function (NotificationKind) {\n NotificationKind[\"NEXT\"] = \"N\";\n NotificationKind[\"ERROR\"] = \"E\";\n NotificationKind[\"COMPLETE\"] = \"C\";\n})(NotificationKind || (NotificationKind = {}));\nexport class Notification {\n constructor(kind, value, error) {\n this.kind = kind;\n this.value = value;\n this.error = error;\n this.hasValue = kind === 'N';\n }\n observe(observer) {\n switch (this.kind) {\n case 'N':\n return observer.next && observer.next(this.value);\n case 'E':\n return observer.error && observer.error(this.error);\n case 'C':\n return observer.complete && observer.complete();\n }\n }\n do(next, error, complete) {\n const kind = this.kind;\n switch (kind) {\n case 'N':\n return next && next(this.value);\n case 'E':\n return error && error(this.error);\n case 'C':\n return complete && complete();\n }\n }\n accept(nextOrObserver, error, complete) {\n if (nextOrObserver && typeof nextOrObserver.next === 'function') {\n return this.observe(nextOrObserver);\n }\n else {\n return this.do(nextOrObserver, error, complete);\n }\n }\n toObservable() {\n const kind = this.kind;\n switch (kind) {\n case 'N':\n return of(this.value);\n case 'E':\n return throwError(this.error);\n case 'C':\n return empty();\n }\n throw new Error('unexpected notification kind value');\n }\n static createNext(value) {\n if (typeof value !== 'undefined') {\n return new Notification('N', value);\n }\n return Notification.undefinedValueNotification;\n }\n static createError(err) {\n return new Notification('E', undefined, err);\n }\n static createComplete() {\n return Notification.completeNotification;\n }\n}\nNotification.completeNotification = new Notification('C');\nNotification.undefinedValueNotification = new Notification('N', undefined);\n","import { canReportError } from './util/canReportError';\nimport { toSubscriber } from './util/toSubscriber';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nexport class Observable {\n constructor(subscribe) {\n this._isScalar = false;\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 { operator } = this;\n const sink = toSubscriber(observerOrNext, error, complete);\n if (operator) {\n sink.add(operator.call(sink, this.source));\n }\n else {\n sink.add(this.source || (config.useDeprecatedSynchronousErrorHandling && !sink.syncErrorThrowable) ?\n this._subscribe(sink) :\n this._trySubscribe(sink));\n }\n if (config.useDeprecatedSynchronousErrorHandling) {\n if (sink.syncErrorThrowable) {\n sink.syncErrorThrowable = false;\n if (sink.syncErrorThrown) {\n throw sink.syncErrorValue;\n }\n }\n }\n return sink;\n }\n _trySubscribe(sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n sink.syncErrorThrown = true;\n sink.syncErrorValue = err;\n }\n if (canReportError(sink)) {\n sink.error(err);\n }\n else {\n console.warn(err);\n }\n }\n }\n forEach(next, promiseCtor) {\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor((resolve, reject) => {\n let subscription;\n subscription = this.subscribe((value) => {\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n if (subscription) {\n subscription.unsubscribe();\n }\n }\n }, reject, resolve);\n });\n }\n _subscribe(subscriber) {\n const { source } = this;\n return source && source.subscribe(subscriber);\n }\n [Symbol_observable]() {\n return this;\n }\n pipe(...operations) {\n if (operations.length === 0) {\n return this;\n }\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 if (!promiseCtor) {\n promiseCtor = config.Promise || Promise;\n }\n if (!promiseCtor) {\n throw new Error('no Promise impl found');\n }\n return promiseCtor;\n}\n","import { Subscriber } from '../Subscriber';\nimport { rxSubscriber as rxSubscriberSymbol } from '../symbol/rxSubscriber';\nimport { empty as emptyObserver } from '../Observer';\nexport function toSubscriber(nextOrObserver, error, complete) {\n if (nextOrObserver) {\n if (nextOrObserver instanceof Subscriber) {\n return nextOrObserver;\n }\n if (nextOrObserver[rxSubscriberSymbol]) {\n return nextOrObserver[rxSubscriberSymbol]();\n }\n }\n if (!nextOrObserver && !error && !complete) {\n return new Subscriber(emptyObserver);\n }\n return new Subscriber(nextOrObserver, error, complete);\n}\n","import { Subscriber } from '../Subscriber';\nexport function canReportError(observer) {\n while (observer) {\n const { closed, destination, isStopped } = observer;\n if (closed || isStopped) {\n return false;\n }\n else if (destination && destination instanceof Subscriber) {\n observer = destination;\n }\n else {\n observer = null;\n }\n }\n return true;\n}\n","import { config } from './config';\nimport { hostReportError } from './util/hostReportError';\nexport const empty = {\n closed: true,\n next(value) { },\n error(err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n else {\n hostReportError(err);\n }\n },\n complete() { }\n};\n","import { Subscriber } from './Subscriber';\nexport class OuterSubscriber extends Subscriber {\n notifyNext(outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.destination.next(innerValue);\n }\n notifyError(error, innerSub) {\n this.destination.error(error);\n }\n notifyComplete(innerSub) {\n this.destination.complete();\n }\n}\n","import { Observable } from './Observable';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { SubjectSubscription } from './SubjectSubscription';\nimport { rxSubscriber as rxSubscriberSymbol } from '../internal/symbol/rxSubscriber';\nexport class SubjectSubscriber extends Subscriber {\n constructor(destination) {\n super(destination);\n this.destination = destination;\n }\n}\nexport class Subject extends Observable {\n constructor() {\n super();\n this.observers = [];\n this.closed = false;\n this.isStopped = false;\n this.hasError = false;\n this.thrownError = null;\n }\n [rxSubscriberSymbol]() {\n return new SubjectSubscriber(this);\n }\n lift(operator) {\n const subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n }\n next(value) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n if (!this.isStopped) {\n const { observers } = this;\n const len = observers.length;\n const copy = observers.slice();\n for (let i = 0; i < len; i++) {\n copy[i].next(value);\n }\n }\n }\n error(err) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n this.hasError = true;\n this.thrownError = err;\n this.isStopped = true;\n const { observers } = this;\n const len = observers.length;\n const copy = observers.slice();\n for (let i = 0; i < len; i++) {\n copy[i].error(err);\n }\n this.observers.length = 0;\n }\n complete() {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n this.isStopped = true;\n const { observers } = this;\n const len = observers.length;\n const copy = observers.slice();\n for (let i = 0; i < len; i++) {\n copy[i].complete();\n }\n this.observers.length = 0;\n }\n unsubscribe() {\n this.isStopped = true;\n this.closed = true;\n this.observers = null;\n }\n _trySubscribe(subscriber) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n else {\n return super._trySubscribe(subscriber);\n }\n }\n _subscribe(subscriber) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n else if (this.hasError) {\n subscriber.error(this.thrownError);\n return Subscription.EMPTY;\n }\n else if (this.isStopped) {\n subscriber.complete();\n return Subscription.EMPTY;\n }\n else {\n this.observers.push(subscriber);\n return new SubjectSubscription(this, subscriber);\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 const { destination } = this;\n if (destination && destination.next) {\n destination.next(value);\n }\n }\n error(err) {\n const { destination } = this;\n if (destination && destination.error) {\n this.destination.error(err);\n }\n }\n complete() {\n const { destination } = this;\n if (destination && destination.complete) {\n this.destination.complete();\n }\n }\n _subscribe(subscriber) {\n const { source } = this;\n if (source) {\n return this.source.subscribe(subscriber);\n }\n else {\n return Subscription.EMPTY;\n }\n }\n}\n","import { Subscription } from './Subscription';\nexport class SubjectSubscription extends Subscription {\n constructor(subject, subscriber) {\n super();\n this.subject = subject;\n this.subscriber = subscriber;\n this.closed = false;\n }\n unsubscribe() {\n if (this.closed) {\n return;\n }\n this.closed = true;\n const subject = this.subject;\n const observers = subject.observers;\n this.subject = null;\n if (!observers || observers.length === 0 || subject.isStopped || subject.closed) {\n return;\n }\n const subscriberIndex = observers.indexOf(this.subscriber);\n if (subscriberIndex !== -1) {\n observers.splice(subscriberIndex, 1);\n }\n }\n}\n","import { isFunction } from './util/isFunction';\nimport { empty as emptyObserver } from './Observer';\nimport { Subscription } from './Subscription';\nimport { rxSubscriber as rxSubscriberSymbol } from '../internal/symbol/rxSubscriber';\nimport { config } from './config';\nimport { hostReportError } from './util/hostReportError';\nexport class Subscriber extends Subscription {\n constructor(destinationOrNext, error, complete) {\n super();\n this.syncErrorValue = null;\n this.syncErrorThrown = false;\n this.syncErrorThrowable = false;\n this.isStopped = false;\n switch (arguments.length) {\n case 0:\n this.destination = emptyObserver;\n break;\n case 1:\n if (!destinationOrNext) {\n this.destination = emptyObserver;\n break;\n }\n if (typeof destinationOrNext === 'object') {\n if (destinationOrNext instanceof Subscriber) {\n this.syncErrorThrowable = destinationOrNext.syncErrorThrowable;\n this.destination = destinationOrNext;\n destinationOrNext.add(this);\n }\n else {\n this.syncErrorThrowable = true;\n this.destination = new SafeSubscriber(this, destinationOrNext);\n }\n break;\n }\n default:\n this.syncErrorThrowable = true;\n this.destination = new SafeSubscriber(this, destinationOrNext, error, complete);\n break;\n }\n }\n [rxSubscriberSymbol]() { return this; }\n static create(next, error, complete) {\n const subscriber = new Subscriber(next, error, complete);\n subscriber.syncErrorThrowable = false;\n return subscriber;\n }\n next(value) {\n if (!this.isStopped) {\n this._next(value);\n }\n }\n error(err) {\n if (!this.isStopped) {\n this.isStopped = true;\n this._error(err);\n }\n }\n complete() {\n if (!this.isStopped) {\n this.isStopped = true;\n this._complete();\n }\n }\n unsubscribe() {\n if (this.closed) {\n return;\n }\n this.isStopped = true;\n super.unsubscribe();\n }\n _next(value) {\n this.destination.next(value);\n }\n _error(err) {\n this.destination.error(err);\n this.unsubscribe();\n }\n _complete() {\n this.destination.complete();\n this.unsubscribe();\n }\n _unsubscribeAndRecycle() {\n const { _parentOrParents } = this;\n this._parentOrParents = null;\n this.unsubscribe();\n this.closed = false;\n this.isStopped = false;\n this._parentOrParents = _parentOrParents;\n return this;\n }\n}\nexport class SafeSubscriber extends Subscriber {\n constructor(_parentSubscriber, observerOrNext, error, complete) {\n super();\n this._parentSubscriber = _parentSubscriber;\n let next;\n let context = this;\n if (isFunction(observerOrNext)) {\n next = observerOrNext;\n }\n else if (observerOrNext) {\n next = observerOrNext.next;\n error = observerOrNext.error;\n complete = observerOrNext.complete;\n if (observerOrNext !== emptyObserver) {\n context = Object.create(observerOrNext);\n if (isFunction(context.unsubscribe)) {\n this.add(context.unsubscribe.bind(context));\n }\n context.unsubscribe = this.unsubscribe.bind(this);\n }\n }\n this._context = context;\n this._next = next;\n this._error = error;\n this._complete = complete;\n }\n next(value) {\n if (!this.isStopped && this._next) {\n const { _parentSubscriber } = this;\n if (!config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._next, value);\n }\n else if (this.__tryOrSetError(_parentSubscriber, this._next, value)) {\n this.unsubscribe();\n }\n }\n }\n error(err) {\n if (!this.isStopped) {\n const { _parentSubscriber } = this;\n const { useDeprecatedSynchronousErrorHandling } = config;\n if (this._error) {\n if (!useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._error, err);\n this.unsubscribe();\n }\n else {\n this.__tryOrSetError(_parentSubscriber, this._error, err);\n this.unsubscribe();\n }\n }\n else if (!_parentSubscriber.syncErrorThrowable) {\n this.unsubscribe();\n if (useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n hostReportError(err);\n }\n else {\n if (useDeprecatedSynchronousErrorHandling) {\n _parentSubscriber.syncErrorValue = err;\n _parentSubscriber.syncErrorThrown = true;\n }\n else {\n hostReportError(err);\n }\n this.unsubscribe();\n }\n }\n }\n complete() {\n if (!this.isStopped) {\n const { _parentSubscriber } = this;\n if (this._complete) {\n const wrappedComplete = () => this._complete.call(this._context);\n if (!config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(wrappedComplete);\n this.unsubscribe();\n }\n else {\n this.__tryOrSetError(_parentSubscriber, wrappedComplete);\n this.unsubscribe();\n }\n }\n else {\n this.unsubscribe();\n }\n }\n }\n __tryOrUnsub(fn, value) {\n try {\n fn.call(this._context, value);\n }\n catch (err) {\n this.unsubscribe();\n if (config.useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n else {\n hostReportError(err);\n }\n }\n }\n __tryOrSetError(parent, fn, value) {\n if (!config.useDeprecatedSynchronousErrorHandling) {\n throw new Error('bad call');\n }\n try {\n fn.call(this._context, value);\n }\n catch (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n parent.syncErrorValue = err;\n parent.syncErrorThrown = true;\n return true;\n }\n else {\n hostReportError(err);\n return true;\n }\n }\n return false;\n }\n _unsubscribe() {\n const { _parentSubscriber } = this;\n this._context = null;\n this._parentSubscriber = null;\n _parentSubscriber.unsubscribe();\n }\n}\n","const UnsubscriptionErrorImpl = (() => {\n function UnsubscriptionErrorImpl(errors) {\n Error.call(this);\n this.message = errors ?\n `${errors.length} errors occurred during unsubscription:\n${errors.map((err, i) => `${i + 1}) ${err.toString()}`).join('\\n ')}` : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n return this;\n }\n UnsubscriptionErrorImpl.prototype = Object.create(Error.prototype);\n return UnsubscriptionErrorImpl;\n})();\nexport const UnsubscriptionError = UnsubscriptionErrorImpl;\n","import { isArray } from './util/isArray';\nimport { isObject } from './util/isObject';\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nexport class Subscription {\n constructor(unsubscribe) {\n this.closed = false;\n this._parentOrParents = null;\n this._subscriptions = null;\n if (unsubscribe) {\n this._ctorUnsubscribe = true;\n this._unsubscribe = unsubscribe;\n }\n }\n unsubscribe() {\n let errors;\n if (this.closed) {\n return;\n }\n let { _parentOrParents, _ctorUnsubscribe, _unsubscribe, _subscriptions } = this;\n this.closed = true;\n this._parentOrParents = null;\n this._subscriptions = null;\n if (_parentOrParents instanceof Subscription) {\n _parentOrParents.remove(this);\n }\n else if (_parentOrParents !== null) {\n for (let index = 0; index < _parentOrParents.length; ++index) {\n const parent = _parentOrParents[index];\n parent.remove(this);\n }\n }\n if (isFunction(_unsubscribe)) {\n if (_ctorUnsubscribe) {\n this._unsubscribe = undefined;\n }\n try {\n _unsubscribe.call(this);\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError ? flattenUnsubscriptionErrors(e.errors) : [e];\n }\n }\n if (isArray(_subscriptions)) {\n let index = -1;\n let len = _subscriptions.length;\n while (++index < len) {\n const sub = _subscriptions[index];\n if (isObject(sub)) {\n try {\n sub.unsubscribe();\n }\n catch (e) {\n errors = errors || [];\n if (e instanceof UnsubscriptionError) {\n errors = errors.concat(flattenUnsubscriptionErrors(e.errors));\n }\n else {\n errors.push(e);\n }\n }\n }\n }\n }\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n add(teardown) {\n let subscription = teardown;\n if (!teardown) {\n return Subscription.EMPTY;\n }\n switch (typeof teardown) {\n case 'function':\n subscription = new Subscription(teardown);\n case 'object':\n if (subscription === this || subscription.closed || typeof subscription.unsubscribe !== 'function') {\n return subscription;\n }\n else if (this.closed) {\n subscription.unsubscribe();\n return subscription;\n }\n else if (!(subscription instanceof Subscription)) {\n const tmp = subscription;\n subscription = new Subscription();\n subscription._subscriptions = [tmp];\n }\n break;\n default: {\n throw new Error('unrecognized teardown ' + teardown + ' added to Subscription.');\n }\n }\n let { _parentOrParents } = subscription;\n if (_parentOrParents === null) {\n subscription._parentOrParents = this;\n }\n else if (_parentOrParents instanceof Subscription) {\n if (_parentOrParents === this) {\n return subscription;\n }\n subscription._parentOrParents = [_parentOrParents, this];\n }\n else if (_parentOrParents.indexOf(this) === -1) {\n _parentOrParents.push(this);\n }\n else {\n return subscription;\n }\n const subscriptions = this._subscriptions;\n if (subscriptions === null) {\n this._subscriptions = [subscription];\n }\n else {\n subscriptions.push(subscription);\n }\n return subscription;\n }\n remove(subscription) {\n const subscriptions = this._subscriptions;\n if (subscriptions) {\n const subscriptionIndex = subscriptions.indexOf(subscription);\n if (subscriptionIndex !== -1) {\n subscriptions.splice(subscriptionIndex, 1);\n }\n }\n }\n}\nSubscription.EMPTY = (function (empty) {\n empty.closed = true;\n return empty;\n}(new Subscription()));\nfunction flattenUnsubscriptionErrors(errors) {\n return errors.reduce((errs, err) => errs.concat((err instanceof UnsubscriptionError) ? err.errors : err), []);\n}\n","let _enable_super_gross_mode_that_will_cause_bad_things = false;\nexport const config = {\n Promise: undefined,\n set useDeprecatedSynchronousErrorHandling(value) {\n if (value) {\n const error = new Error();\n console.warn('DEPRECATED! RxJS was set to use deprecated synchronous error handling behavior by code at: \\n' + error.stack);\n }\n else if (_enable_super_gross_mode_that_will_cause_bad_things) {\n console.log('RxJS: Back to a better error behavior. Thank you. <3');\n }\n _enable_super_gross_mode_that_will_cause_bad_things = value;\n },\n get useDeprecatedSynchronousErrorHandling() {\n return _enable_super_gross_mode_that_will_cause_bad_things;\n },\n};\n","import { Subscriber } from './Subscriber';\nimport { Observable } from './Observable';\nimport { subscribeTo } from './util/subscribeTo';\nexport class SimpleInnerSubscriber extends Subscriber {\n constructor(parent) {\n super();\n this.parent = parent;\n }\n _next(value) {\n this.parent.notifyNext(value);\n }\n _error(error) {\n this.parent.notifyError(error);\n this.unsubscribe();\n }\n _complete() {\n this.parent.notifyComplete();\n this.unsubscribe();\n }\n}\nexport class ComplexInnerSubscriber extends Subscriber {\n constructor(parent, outerValue, outerIndex) {\n super();\n this.parent = parent;\n this.outerValue = outerValue;\n this.outerIndex = outerIndex;\n }\n _next(value) {\n this.parent.notifyNext(this.outerValue, value, this.outerIndex, this);\n }\n _error(error) {\n this.parent.notifyError(error);\n this.unsubscribe();\n }\n _complete() {\n this.parent.notifyComplete(this);\n this.unsubscribe();\n }\n}\nexport class SimpleOuterSubscriber extends Subscriber {\n notifyNext(innerValue) {\n this.destination.next(innerValue);\n }\n notifyError(err) {\n this.destination.error(err);\n }\n notifyComplete() {\n this.destination.complete();\n }\n}\nexport class ComplexOuterSubscriber extends Subscriber {\n notifyNext(_outerValue, innerValue, _outerIndex, _innerSub) {\n this.destination.next(innerValue);\n }\n notifyError(error) {\n this.destination.error(error);\n }\n notifyComplete(_innerSub) {\n this.destination.complete();\n }\n}\nexport function innerSubscribe(result, innerSubscriber) {\n if (innerSubscriber.closed) {\n return undefined;\n }\n if (result instanceof Observable) {\n return result.subscribe(innerSubscriber);\n }\n let subscription;\n try {\n subscription = subscribeTo(result)(innerSubscriber);\n }\n catch (error) {\n innerSubscriber.error(error);\n }\n return subscription;\n}\n","import { SubjectSubscriber } from '../Subject';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { refCount as higherOrderRefCount } from '../operators/refCount';\nexport class ConnectableObservable extends Observable {\n constructor(source, subjectFactory) {\n super();\n this.source = source;\n this.subjectFactory = subjectFactory;\n this._refCount = 0;\n this._isComplete = false;\n }\n _subscribe(subscriber) {\n return this.getSubject().subscribe(subscriber);\n }\n getSubject() {\n const subject = this._subject;\n if (!subject || subject.isStopped) {\n this._subject = this.subjectFactory();\n }\n return this._subject;\n }\n connect() {\n let connection = this._connection;\n if (!connection) {\n this._isComplete = false;\n connection = this._connection = new Subscription();\n connection.add(this.source\n .subscribe(new ConnectableSubscriber(this.getSubject(), this)));\n if (connection.closed) {\n this._connection = null;\n connection = Subscription.EMPTY;\n }\n }\n return connection;\n }\n refCount() {\n return higherOrderRefCount()(this);\n }\n}\nexport const connectableObservableDescriptor = (() => {\n const connectableProto = ConnectableObservable.prototype;\n return {\n operator: { value: null },\n _refCount: { value: 0, writable: true },\n _subject: { value: null, writable: true },\n _connection: { value: null, writable: true },\n _subscribe: { value: connectableProto._subscribe },\n _isComplete: { value: connectableProto._isComplete, writable: true },\n getSubject: { value: connectableProto.getSubject },\n connect: { value: connectableProto.connect },\n refCount: { value: connectableProto.refCount }\n };\n})();\nclass ConnectableSubscriber extends SubjectSubscriber {\n constructor(destination, connectable) {\n super(destination);\n this.connectable = connectable;\n }\n _error(err) {\n this._unsubscribe();\n super._error(err);\n }\n _complete() {\n this.connectable._isComplete = true;\n this._unsubscribe();\n super._complete();\n }\n _unsubscribe() {\n const connectable = this.connectable;\n if (connectable) {\n this.connectable = null;\n const connection = connectable._connection;\n connectable._refCount = 0;\n connectable._subject = null;\n connectable._connection = null;\n if (connection) {\n connection.unsubscribe();\n }\n }\n }\n}\nclass RefCountOperator {\n constructor(connectable) {\n this.connectable = connectable;\n }\n call(subscriber, source) {\n const { connectable } = this;\n connectable._refCount++;\n const refCounter = new RefCountSubscriber(subscriber, connectable);\n const subscription = source.subscribe(refCounter);\n if (!refCounter.closed) {\n refCounter.connection = connectable.connect();\n }\n return subscription;\n }\n}\nclass RefCountSubscriber extends Subscriber {\n constructor(destination, connectable) {\n super(destination);\n this.connectable = connectable;\n }\n _unsubscribe() {\n const { connectable } = this;\n if (!connectable) {\n this.connection = null;\n return;\n }\n this.connectable = null;\n const refCount = connectable._refCount;\n if (refCount <= 0) {\n this.connection = null;\n return;\n }\n connectable._refCount = refCount - 1;\n if (refCount > 1) {\n this.connection = null;\n return;\n }\n const { connection } = this;\n const sharedConnection = connectable._connection;\n this.connection = null;\n if (sharedConnection && (!connection || sharedConnection === connection)) {\n sharedConnection.unsubscribe();\n }\n }\n}\n","import { isScheduler } from '../util/isScheduler';\nimport { isArray } from '../util/isArray';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { fromArray } from './fromArray';\nconst NONE = {};\nexport function combineLatest(...observables) {\n let resultSelector = undefined;\n let scheduler = undefined;\n if (isScheduler(observables[observables.length - 1])) {\n scheduler = observables.pop();\n }\n if (typeof observables[observables.length - 1] === 'function') {\n resultSelector = observables.pop();\n }\n if (observables.length === 1 && isArray(observables[0])) {\n observables = observables[0];\n }\n return fromArray(observables, scheduler).lift(new CombineLatestOperator(resultSelector));\n}\nexport class CombineLatestOperator {\n constructor(resultSelector) {\n this.resultSelector = resultSelector;\n }\n call(subscriber, source) {\n return source.subscribe(new CombineLatestSubscriber(subscriber, this.resultSelector));\n }\n}\nexport class CombineLatestSubscriber extends OuterSubscriber {\n constructor(destination, resultSelector) {\n super(destination);\n this.resultSelector = resultSelector;\n this.active = 0;\n this.values = [];\n this.observables = [];\n }\n _next(observable) {\n this.values.push(NONE);\n this.observables.push(observable);\n }\n _complete() {\n const observables = this.observables;\n const len = observables.length;\n if (len === 0) {\n this.destination.complete();\n }\n else {\n this.active = len;\n this.toRespond = len;\n for (let i = 0; i < len; i++) {\n const observable = observables[i];\n this.add(subscribeToResult(this, observable, undefined, i));\n }\n }\n }\n notifyComplete(unused) {\n if ((this.active -= 1) === 0) {\n this.destination.complete();\n }\n }\n notifyNext(_outerValue, innerValue, outerIndex) {\n const values = this.values;\n const oldVal = values[outerIndex];\n const toRespond = !this.toRespond\n ? 0\n : oldVal === NONE ? --this.toRespond : this.toRespond;\n values[outerIndex] = innerValue;\n if (toRespond === 0) {\n if (this.resultSelector) {\n this._tryResultSelector(values);\n }\n else {\n this.destination.next(values.slice());\n }\n }\n }\n _tryResultSelector(values) {\n let result;\n try {\n result = this.resultSelector.apply(this, values);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n }\n}\n","import { of } from './of';\nimport { concatAll } from '../operators/concatAll';\nexport function concat(...observables) {\n return concatAll()(of(...observables));\n}\n","import { mergeAll } from './mergeAll';\nexport function concatAll() {\n return mergeAll(1);\n}\n","import { Observable } from '../Observable';\nimport { from } from './from';\nimport { empty } from './empty';\nexport function defer(observableFactory) {\n return new Observable(subscriber => {\n let input;\n try {\n input = observableFactory();\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n const source = input ? from(input) : empty();\n return source.subscribe(subscriber);\n });\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 { subscribeTo } from '../util/subscribeTo';\nimport { scheduled } from '../scheduled/scheduled';\nexport function from(input, scheduler) {\n if (!scheduler) {\n if (input instanceof Observable) {\n return input;\n }\n return new Observable(subscribeTo(input));\n }\n else {\n return scheduled(input, scheduler);\n }\n}\n","import { scheduleObservable } from './scheduleObservable';\nimport { schedulePromise } from './schedulePromise';\nimport { scheduleArray } from './scheduleArray';\nimport { scheduleIterable } from './scheduleIterable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isPromise } from '../util/isPromise';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isIterable } from '../util/isIterable';\nexport function scheduled(input, scheduler) {\n if (input != null) {\n if (isInteropObservable(input)) {\n return scheduleObservable(input, scheduler);\n }\n else if (isPromise(input)) {\n return schedulePromise(input, scheduler);\n }\n else if (isArrayLike(input)) {\n return scheduleArray(input, scheduler);\n }\n else if (isIterable(input) || typeof input === 'string') {\n return scheduleIterable(input, scheduler);\n }\n }\n throw new TypeError((input !== null && typeof input || input) + ' is not observable');\n}\n","import { observable as Symbol_observable } from '../symbol/observable';\nexport function isInteropObservable(input) {\n return input && typeof input[Symbol_observable] === 'function';\n}\n","import { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport function scheduleObservable(input, scheduler) {\n return new Observable(subscriber => {\n const sub = new Subscription();\n sub.add(scheduler.schedule(() => {\n const observable = input[Symbol_observable]();\n sub.add(observable.subscribe({\n next(value) { sub.add(scheduler.schedule(() => subscriber.next(value))); },\n error(err) { sub.add(scheduler.schedule(() => subscriber.error(err))); },\n complete() { sub.add(scheduler.schedule(() => subscriber.complete())); },\n }));\n }));\n return sub;\n });\n}\n","import { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nexport function schedulePromise(input, scheduler) {\n return new Observable(subscriber => {\n const sub = new Subscription();\n sub.add(scheduler.schedule(() => input.then(value => {\n sub.add(scheduler.schedule(() => {\n subscriber.next(value);\n sub.add(scheduler.schedule(() => subscriber.complete()));\n }));\n }, err => {\n sub.add(scheduler.schedule(() => subscriber.error(err)));\n })));\n return sub;\n });\n}\n","import { iterator as Symbol_iterator } from '../symbol/iterator';\nexport function isIterable(input) {\n return input && typeof input[Symbol_iterator] === 'function';\n}\n","import { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nexport function scheduleIterable(input, scheduler) {\n if (!input) {\n throw new Error('Iterable cannot be null');\n }\n return new Observable(subscriber => {\n const sub = new Subscription();\n let iterator;\n sub.add(() => {\n if (iterator && typeof iterator.return === 'function') {\n iterator.return();\n }\n });\n sub.add(scheduler.schedule(() => {\n iterator = input[Symbol_iterator]();\n sub.add(scheduler.schedule(function () {\n if (subscriber.closed) {\n return;\n }\n let value;\n let done;\n try {\n const result = iterator.next();\n value = result.value;\n done = result.done;\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 this.schedule();\n }\n }));\n }));\n return sub;\n });\n}\n","import { Observable } from '../Observable';\nimport { subscribeToArray } from '../util/subscribeToArray';\nimport { scheduleArray } from '../scheduled/scheduleArray';\nexport function fromArray(input, scheduler) {\n if (!scheduler) {\n return new Observable(subscribeToArray(input));\n }\n else {\n return scheduleArray(input, scheduler);\n }\n}\n","import { Observable } from '../Observable';\nimport { isArray } from '../util/isArray';\nimport { isFunction } from '../util/isFunction';\nimport { map } from '../operators/map';\nconst toString = (() => Object.prototype.toString)();\nexport function fromEvent(target, eventName, options, resultSelector) {\n if (isFunction(options)) {\n resultSelector = options;\n options = undefined;\n }\n if (resultSelector) {\n return fromEvent(target, eventName, options).pipe(map(args => isArray(args) ? resultSelector(...args) : resultSelector(args)));\n }\n return new Observable(subscriber => {\n function handler(e) {\n if (arguments.length > 1) {\n subscriber.next(Array.prototype.slice.call(arguments));\n }\n else {\n subscriber.next(e);\n }\n }\n setupSubscription(target, eventName, handler, subscriber, options);\n });\n}\nfunction setupSubscription(sourceObj, eventName, handler, subscriber, options) {\n let unsubscribe;\n if (isEventTarget(sourceObj)) {\n const source = sourceObj;\n sourceObj.addEventListener(eventName, handler, options);\n unsubscribe = () => source.removeEventListener(eventName, handler, options);\n }\n else if (isJQueryStyleEventEmitter(sourceObj)) {\n const source = sourceObj;\n sourceObj.on(eventName, handler);\n unsubscribe = () => source.off(eventName, handler);\n }\n else if (isNodeStyleEventEmitter(sourceObj)) {\n const source = sourceObj;\n sourceObj.addListener(eventName, handler);\n unsubscribe = () => source.removeListener(eventName, handler);\n }\n else if (sourceObj && sourceObj.length) {\n for (let i = 0, len = sourceObj.length; i < len; i++) {\n setupSubscription(sourceObj[i], eventName, handler, subscriber, options);\n }\n }\n else {\n throw new TypeError('Invalid event target');\n }\n subscriber.add(unsubscribe);\n}\nfunction isNodeStyleEventEmitter(sourceObj) {\n return sourceObj && typeof sourceObj.addListener === 'function' && typeof sourceObj.removeListener === 'function';\n}\nfunction isJQueryStyleEventEmitter(sourceObj) {\n return sourceObj && typeof sourceObj.on === 'function' && typeof sourceObj.off === 'function';\n}\nfunction isEventTarget(sourceObj) {\n return sourceObj && typeof sourceObj.addEventListener === 'function' && typeof sourceObj.removeEventListener === 'function';\n}\n","import { Observable } from '../Observable';\nimport { isScheduler } from '../util/isScheduler';\nimport { mergeAll } from '../operators/mergeAll';\nimport { fromArray } from './fromArray';\nexport function merge(...observables) {\n let concurrent = Number.POSITIVE_INFINITY;\n let scheduler = null;\n let last = observables[observables.length - 1];\n if (isScheduler(last)) {\n scheduler = observables.pop();\n if (observables.length > 1 && typeof observables[observables.length - 1] === 'number') {\n concurrent = observables.pop();\n }\n }\n else if (typeof last === 'number') {\n concurrent = observables.pop();\n }\n if (scheduler === null && observables.length === 1 && observables[0] instanceof Observable) {\n return observables[0];\n }\n return mergeAll(concurrent)(fromArray(observables, scheduler));\n}\n","import { Observable } from '../Observable';\nimport { noop } from '../util/noop';\nexport const NEVER = new Observable(noop);\nexport function never() {\n return NEVER;\n}\n","import { isScheduler } from '../util/isScheduler';\nimport { fromArray } from './fromArray';\nimport { scheduleArray } from '../scheduled/scheduleArray';\nexport function of(...args) {\n let scheduler = args[args.length - 1];\n if (isScheduler(scheduler)) {\n args.pop();\n return scheduleArray(args, scheduler);\n }\n else {\n return fromArray(args);\n }\n}\n","import { Observable } from '../Observable';\nexport function throwError(error, scheduler) {\n if (!scheduler) {\n return new Observable(subscriber => subscriber.error(error));\n }\n else {\n return new Observable(subscriber => scheduler.schedule(dispatch, 0, { error, subscriber }));\n }\n}\nfunction dispatch({ error, subscriber }) {\n subscriber.error(error);\n}\n","import { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\nexport function catchError(selector) {\n return function catchErrorOperatorFunction(source) {\n const operator = new CatchOperator(selector);\n const caught = source.lift(operator);\n return (operator.caught = caught);\n };\n}\nclass CatchOperator {\n constructor(selector) {\n this.selector = selector;\n }\n call(subscriber, source) {\n return source.subscribe(new CatchSubscriber(subscriber, this.selector, this.caught));\n }\n}\nclass CatchSubscriber extends SimpleOuterSubscriber {\n constructor(destination, selector, caught) {\n super(destination);\n this.selector = selector;\n this.caught = caught;\n }\n error(err) {\n if (!this.isStopped) {\n let result;\n try {\n result = this.selector(err, this.caught);\n }\n catch (err2) {\n super.error(err2);\n return;\n }\n this._unsubscribeAndRecycle();\n const innerSubscriber = new SimpleInnerSubscriber(this);\n this.add(innerSubscriber);\n const innerSubscription = innerSubscribe(result, innerSubscriber);\n if (innerSubscription !== innerSubscriber) {\n this.add(innerSubscription);\n }\n }\n }\n}\n","import { mergeMap } from './mergeMap';\nexport function concatMap(project, resultSelector) {\n return mergeMap(project, resultSelector, 1);\n}\n","import { Subscriber } from '../Subscriber';\nexport function defaultIfEmpty(defaultValue = null) {\n return (source) => source.lift(new DefaultIfEmptyOperator(defaultValue));\n}\nclass DefaultIfEmptyOperator {\n constructor(defaultValue) {\n this.defaultValue = defaultValue;\n }\n call(subscriber, source) {\n return source.subscribe(new DefaultIfEmptySubscriber(subscriber, this.defaultValue));\n }\n}\nclass DefaultIfEmptySubscriber extends Subscriber {\n constructor(destination, defaultValue) {\n super(destination);\n this.defaultValue = defaultValue;\n this.isEmpty = true;\n }\n _next(value) {\n this.isEmpty = false;\n this.destination.next(value);\n }\n _complete() {\n if (this.isEmpty) {\n this.destination.next(this.defaultValue);\n }\n this.destination.complete();\n }\n}\n","import { async } from '../scheduler/async';\nimport { isDate } from '../util/isDate';\nimport { Subscriber } from '../Subscriber';\nimport { Notification } from '../Notification';\nexport function delay(delay, scheduler = async) {\n const absoluteDelay = isDate(delay);\n const delayFor = absoluteDelay ? (+delay - scheduler.now()) : Math.abs(delay);\n return (source) => source.lift(new DelayOperator(delayFor, scheduler));\n}\nclass DelayOperator {\n constructor(delay, scheduler) {\n this.delay = delay;\n this.scheduler = scheduler;\n }\n call(subscriber, source) {\n return source.subscribe(new DelaySubscriber(subscriber, this.delay, this.scheduler));\n }\n}\nclass DelaySubscriber extends Subscriber {\n constructor(destination, delay, scheduler) {\n super(destination);\n this.delay = delay;\n this.scheduler = scheduler;\n this.queue = [];\n this.active = false;\n this.errored = false;\n }\n static dispatch(state) {\n const source = state.source;\n const queue = source.queue;\n const scheduler = state.scheduler;\n const destination = state.destination;\n while (queue.length > 0 && (queue[0].time - scheduler.now()) <= 0) {\n queue.shift().notification.observe(destination);\n }\n if (queue.length > 0) {\n const delay = Math.max(0, queue[0].time - scheduler.now());\n this.schedule(state, delay);\n }\n else {\n this.unsubscribe();\n source.active = false;\n }\n }\n _schedule(scheduler) {\n this.active = true;\n const destination = this.destination;\n destination.add(scheduler.schedule(DelaySubscriber.dispatch, this.delay, {\n source: this, destination: this.destination, scheduler: scheduler\n }));\n }\n scheduleNotification(notification) {\n if (this.errored === true) {\n return;\n }\n const scheduler = this.scheduler;\n const message = new DelayMessage(scheduler.now() + this.delay, notification);\n this.queue.push(message);\n if (this.active === false) {\n this._schedule(scheduler);\n }\n }\n _next(value) {\n this.scheduleNotification(Notification.createNext(value));\n }\n _error(err) {\n this.errored = true;\n this.queue = [];\n this.destination.error(err);\n this.unsubscribe();\n }\n _complete() {\n this.scheduleNotification(Notification.createComplete());\n this.unsubscribe();\n }\n}\nclass DelayMessage {\n constructor(time, notification) {\n this.time = time;\n this.notification = notification;\n }\n}\n","export function isDate(value) {\n return value instanceof Date && !isNaN(+value);\n}\n","import { Subscriber } from '../Subscriber';\nexport function distinctUntilChanged(compare, keySelector) {\n return (source) => source.lift(new DistinctUntilChangedOperator(compare, keySelector));\n}\nclass DistinctUntilChangedOperator {\n constructor(compare, keySelector) {\n this.compare = compare;\n this.keySelector = keySelector;\n }\n call(subscriber, source) {\n return source.subscribe(new DistinctUntilChangedSubscriber(subscriber, this.compare, this.keySelector));\n }\n}\nclass DistinctUntilChangedSubscriber extends Subscriber {\n constructor(destination, compare, keySelector) {\n super(destination);\n this.keySelector = keySelector;\n this.hasKey = false;\n if (typeof compare === 'function') {\n this.compare = compare;\n }\n }\n compare(x, y) {\n return x === y;\n }\n _next(value) {\n let key;\n try {\n const { keySelector } = this;\n key = keySelector ? keySelector(value) : value;\n }\n catch (err) {\n return this.destination.error(err);\n }\n let result = false;\n if (this.hasKey) {\n try {\n const { compare } = this;\n result = compare(this.key, key);\n }\n catch (err) {\n return this.destination.error(err);\n }\n }\n else {\n this.hasKey = true;\n }\n if (!result) {\n this.key = key;\n this.destination.next(value);\n }\n }\n}\n","import { Subscriber } from '../Subscriber';\nexport function filter(predicate, thisArg) {\n return function filterOperatorFunction(source) {\n return source.lift(new FilterOperator(predicate, thisArg));\n };\n}\nclass FilterOperator {\n constructor(predicate, thisArg) {\n this.predicate = predicate;\n this.thisArg = thisArg;\n }\n call(subscriber, source) {\n return source.subscribe(new FilterSubscriber(subscriber, this.predicate, this.thisArg));\n }\n}\nclass FilterSubscriber extends Subscriber {\n constructor(destination, predicate, thisArg) {\n super(destination);\n this.predicate = predicate;\n this.thisArg = thisArg;\n this.count = 0;\n }\n _next(value) {\n let result;\n try {\n result = this.predicate.call(this.thisArg, value, this.count++);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n if (result) {\n this.destination.next(value);\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 { Subscriber } from '../Subscriber';\nexport function map(project, thisArg) {\n return function mapOperation(source) {\n if (typeof project !== 'function') {\n throw new TypeError('argument is not a function. Are you looking for `mapTo()`?');\n }\n return source.lift(new MapOperator(project, thisArg));\n };\n}\nexport class MapOperator {\n constructor(project, thisArg) {\n this.project = project;\n this.thisArg = thisArg;\n }\n call(subscriber, source) {\n return source.subscribe(new MapSubscriber(subscriber, this.project, this.thisArg));\n }\n}\nclass MapSubscriber extends Subscriber {\n constructor(destination, project, thisArg) {\n super(destination);\n this.project = project;\n this.count = 0;\n this.thisArg = thisArg || this;\n }\n _next(value) {\n let result;\n try {\n result = this.project.call(this.thisArg, value, this.count++);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n }\n}\n","import { mergeMap } from './mergeMap';\nimport { identity } from '../util/identity';\nexport function mergeAll(concurrent = Number.POSITIVE_INFINITY) {\n return mergeMap(identity, concurrent);\n}\n","import { map } from './map';\nimport { from } from '../observable/from';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\nexport function mergeMap(project, resultSelector, concurrent = Number.POSITIVE_INFINITY) {\n if (typeof resultSelector === 'function') {\n return (source) => source.pipe(mergeMap((a, i) => from(project(a, i)).pipe(map((b, ii) => resultSelector(a, b, i, ii))), concurrent));\n }\n else if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return (source) => source.lift(new MergeMapOperator(project, concurrent));\n}\nexport class MergeMapOperator {\n constructor(project, concurrent = Number.POSITIVE_INFINITY) {\n this.project = project;\n this.concurrent = concurrent;\n }\n call(observer, source) {\n return source.subscribe(new MergeMapSubscriber(observer, this.project, this.concurrent));\n }\n}\nexport class MergeMapSubscriber extends SimpleOuterSubscriber {\n constructor(destination, project, concurrent = Number.POSITIVE_INFINITY) {\n super(destination);\n this.project = project;\n this.concurrent = concurrent;\n this.hasCompleted = false;\n this.buffer = [];\n this.active = 0;\n this.index = 0;\n }\n _next(value) {\n if (this.active < this.concurrent) {\n this._tryNext(value);\n }\n else {\n this.buffer.push(value);\n }\n }\n _tryNext(value) {\n let result;\n const index = this.index++;\n try {\n result = this.project(value, index);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.active++;\n this._innerSub(result);\n }\n _innerSub(ish) {\n const innerSubscriber = new SimpleInnerSubscriber(this);\n const destination = this.destination;\n destination.add(innerSubscriber);\n const innerSubscription = innerSubscribe(ish, innerSubscriber);\n if (innerSubscription !== innerSubscriber) {\n destination.add(innerSubscription);\n }\n }\n _complete() {\n this.hasCompleted = true;\n if (this.active === 0 && this.buffer.length === 0) {\n this.destination.complete();\n }\n this.unsubscribe();\n }\n notifyNext(innerValue) {\n this.destination.next(innerValue);\n }\n notifyComplete() {\n const buffer = this.buffer;\n this.active--;\n if (buffer.length > 0) {\n this._next(buffer.shift());\n }\n else if (this.active === 0 && this.hasCompleted) {\n this.destination.complete();\n }\n }\n}\nexport const flatMap = mergeMap;\n","import { connectableObservableDescriptor } from '../observable/ConnectableObservable';\nexport function multicast(subjectOrSubjectFactory, selector) {\n return function multicastOperatorFunction(source) {\n let subjectFactory;\n if (typeof subjectOrSubjectFactory === 'function') {\n subjectFactory = subjectOrSubjectFactory;\n }\n else {\n subjectFactory = function subjectFactory() {\n return subjectOrSubjectFactory;\n };\n }\n if (typeof selector === 'function') {\n return source.lift(new MulticastOperator(subjectFactory, selector));\n }\n const connectable = Object.create(source, connectableObservableDescriptor);\n connectable.source = source;\n connectable.subjectFactory = subjectFactory;\n return connectable;\n };\n}\nexport class MulticastOperator {\n constructor(subjectFactory, selector) {\n this.subjectFactory = subjectFactory;\n this.selector = selector;\n }\n call(subscriber, source) {\n const { selector } = this;\n const subject = this.subjectFactory();\n const subscription = selector(subject).subscribe(subscriber);\n subscription.add(source.subscribe(subject));\n return subscription;\n }\n}\n","import { Subscriber } from '../Subscriber';\nexport function refCount() {\n return function refCountOperatorFunction(source) {\n return source.lift(new RefCountOperator(source));\n };\n}\nclass RefCountOperator {\n constructor(connectable) {\n this.connectable = connectable;\n }\n call(subscriber, source) {\n const { connectable } = this;\n connectable._refCount++;\n const refCounter = new RefCountSubscriber(subscriber, connectable);\n const subscription = source.subscribe(refCounter);\n if (!refCounter.closed) {\n refCounter.connection = connectable.connect();\n }\n return subscription;\n }\n}\nclass RefCountSubscriber extends Subscriber {\n constructor(destination, connectable) {\n super(destination);\n this.connectable = connectable;\n }\n _unsubscribe() {\n const { connectable } = this;\n if (!connectable) {\n this.connection = null;\n return;\n }\n this.connectable = null;\n const refCount = connectable._refCount;\n if (refCount <= 0) {\n this.connection = null;\n return;\n }\n connectable._refCount = refCount - 1;\n if (refCount > 1) {\n this.connection = null;\n return;\n }\n const { connection } = this;\n const sharedConnection = connectable._connection;\n this.connection = null;\n if (sharedConnection && (!connection || sharedConnection === connection)) {\n sharedConnection.unsubscribe();\n }\n }\n}\n","import { multicast } from './multicast';\nimport { refCount } from './refCount';\nimport { Subject } from '../Subject';\nfunction shareSubjectFactory() {\n return new Subject();\n}\nexport function share() {\n return (source) => refCount()(multicast(shareSubjectFactory)(source));\n}\n","import { concat } from '../observable/concat';\nimport { isScheduler } from '../util/isScheduler';\nexport function startWith(...array) {\n const scheduler = array[array.length - 1];\n if (isScheduler(scheduler)) {\n array.pop();\n return (source) => concat(array, source, scheduler);\n }\n else {\n return (source) => concat(array, source);\n }\n}\n","import { map } from './map';\nimport { from } from '../observable/from';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\nexport function switchMap(project, resultSelector) {\n if (typeof resultSelector === 'function') {\n return (source) => source.pipe(switchMap((a, i) => from(project(a, i)).pipe(map((b, ii) => resultSelector(a, b, i, ii)))));\n }\n return (source) => source.lift(new SwitchMapOperator(project));\n}\nclass SwitchMapOperator {\n constructor(project) {\n this.project = project;\n }\n call(subscriber, source) {\n return source.subscribe(new SwitchMapSubscriber(subscriber, this.project));\n }\n}\nclass SwitchMapSubscriber extends SimpleOuterSubscriber {\n constructor(destination, project) {\n super(destination);\n this.project = project;\n this.index = 0;\n }\n _next(value) {\n let result;\n const index = this.index++;\n try {\n result = this.project(value, index);\n }\n catch (error) {\n this.destination.error(error);\n return;\n }\n this._innerSub(result);\n }\n _innerSub(result) {\n const innerSubscription = this.innerSubscription;\n if (innerSubscription) {\n innerSubscription.unsubscribe();\n }\n const innerSubscriber = new SimpleInnerSubscriber(this);\n const destination = this.destination;\n destination.add(innerSubscriber);\n this.innerSubscription = innerSubscribe(result, innerSubscriber);\n if (this.innerSubscription !== innerSubscriber) {\n destination.add(this.innerSubscription);\n }\n }\n _complete() {\n const { innerSubscription } = this;\n if (!innerSubscription || innerSubscription.closed) {\n super._complete();\n }\n this.unsubscribe();\n }\n _unsubscribe() {\n this.innerSubscription = undefined;\n }\n notifyComplete() {\n this.innerSubscription = undefined;\n if (this.isStopped) {\n super._complete();\n }\n }\n notifyNext(innerValue) {\n this.destination.next(innerValue);\n }\n}\n","import { Subscriber } from '../Subscriber';\nimport { ArgumentOutOfRangeError } from '../util/ArgumentOutOfRangeError';\nimport { empty } from '../observable/empty';\nexport function take(count) {\n return (source) => {\n if (count === 0) {\n return empty();\n }\n else {\n return source.lift(new TakeOperator(count));\n }\n };\n}\nclass TakeOperator {\n constructor(total) {\n this.total = total;\n if (this.total < 0) {\n throw new ArgumentOutOfRangeError;\n }\n }\n call(subscriber, source) {\n return source.subscribe(new TakeSubscriber(subscriber, this.total));\n }\n}\nclass TakeSubscriber extends Subscriber {\n constructor(destination, total) {\n super(destination);\n this.total = total;\n this.count = 0;\n }\n _next(value) {\n const total = this.total;\n const count = ++this.count;\n if (count <= total) {\n this.destination.next(value);\n if (count === total) {\n this.destination.complete();\n this.unsubscribe();\n }\n }\n }\n}\n","import { innerSubscribe, SimpleInnerSubscriber, SimpleOuterSubscriber } from '../innerSubscribe';\nexport function takeUntil(notifier) {\n return (source) => source.lift(new TakeUntilOperator(notifier));\n}\nclass TakeUntilOperator {\n constructor(notifier) {\n this.notifier = notifier;\n }\n call(subscriber, source) {\n const takeUntilSubscriber = new TakeUntilSubscriber(subscriber);\n const notifierSubscription = innerSubscribe(this.notifier, new SimpleInnerSubscriber(takeUntilSubscriber));\n if (notifierSubscription && !takeUntilSubscriber.seenValue) {\n takeUntilSubscriber.add(notifierSubscription);\n return source.subscribe(takeUntilSubscriber);\n }\n return takeUntilSubscriber;\n }\n}\nclass TakeUntilSubscriber extends SimpleOuterSubscriber {\n constructor(destination) {\n super(destination);\n this.seenValue = false;\n }\n notifyNext() {\n this.seenValue = true;\n this.complete();\n }\n notifyComplete() {\n }\n}\n","import { Subscriber } from '../Subscriber';\nimport { noop } from '../util/noop';\nimport { isFunction } from '../util/isFunction';\nexport function tap(nextOrObserver, error, complete) {\n return function tapOperatorFunction(source) {\n return source.lift(new DoOperator(nextOrObserver, error, complete));\n };\n}\nclass DoOperator {\n constructor(nextOrObserver, error, complete) {\n this.nextOrObserver = nextOrObserver;\n this.error = error;\n this.complete = complete;\n }\n call(subscriber, source) {\n return source.subscribe(new TapSubscriber(subscriber, this.nextOrObserver, this.error, this.complete));\n }\n}\nclass TapSubscriber extends Subscriber {\n constructor(destination, observerOrNext, error, complete) {\n super(destination);\n this._tapNext = noop;\n this._tapError = noop;\n this._tapComplete = noop;\n this._tapError = error || noop;\n this._tapComplete = complete || noop;\n if (isFunction(observerOrNext)) {\n this._context = this;\n this._tapNext = observerOrNext;\n }\n else if (observerOrNext) {\n this._context = observerOrNext;\n this._tapNext = observerOrNext.next || noop;\n this._tapError = observerOrNext.error || noop;\n this._tapComplete = observerOrNext.complete || noop;\n }\n }\n _next(value) {\n try {\n this._tapNext.call(this._context, value);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(value);\n }\n _error(err) {\n try {\n this._tapError.call(this._context, err);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.error(err);\n }\n _complete() {\n try {\n this._tapComplete.call(this._context);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n return this.destination.complete();\n }\n}\n","import { EmptyError } from '../util/EmptyError';\nimport { Subscriber } from '../Subscriber';\nexport function throwIfEmpty(errorFactory = defaultErrorFactory) {\n return (source) => {\n return source.lift(new ThrowIfEmptyOperator(errorFactory));\n };\n}\nclass ThrowIfEmptyOperator {\n constructor(errorFactory) {\n this.errorFactory = errorFactory;\n }\n call(subscriber, source) {\n return source.subscribe(new ThrowIfEmptySubscriber(subscriber, this.errorFactory));\n }\n}\nclass ThrowIfEmptySubscriber extends Subscriber {\n constructor(destination, errorFactory) {\n super(destination);\n this.errorFactory = errorFactory;\n this.hasValue = false;\n }\n _next(value) {\n this.hasValue = true;\n this.destination.next(value);\n }\n _complete() {\n if (!this.hasValue) {\n let err;\n try {\n err = this.errorFactory();\n }\n catch (e) {\n err = e;\n }\n this.destination.error(err);\n }\n else {\n return this.destination.complete();\n }\n }\n}\nfunction defaultErrorFactory() {\n return new EmptyError();\n}\n","import { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nexport function scheduleArray(input, scheduler) {\n return new Observable(subscriber => {\n const sub = new Subscription();\n let i = 0;\n sub.add(scheduler.schedule(function () {\n if (i === input.length) {\n subscriber.complete();\n return;\n }\n subscriber.next(input[i++]);\n if (!subscriber.closed) {\n sub.add(this.schedule());\n }\n }));\n return sub;\n });\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","import { Action } from './Action';\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 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 = this.id || this.requestAsyncId(scheduler, this.id, delay);\n return this;\n }\n requestAsyncId(scheduler, id, delay = 0) {\n return 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 clearInterval(id);\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 = undefined;\n try {\n this.work(state);\n }\n catch (e) {\n errored = true;\n errorValue = !!e && e || new Error(e);\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n }\n _unsubscribe() {\n const id = this.id;\n const scheduler = this.scheduler;\n const actions = scheduler.actions;\n const index = actions.indexOf(this);\n this.work = null;\n this.state = null;\n this.pending = false;\n this.scheduler = null;\n if (index !== -1) {\n actions.splice(index, 1);\n }\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n this.delay = null;\n }\n}\n","export class Scheduler {\n constructor(SchedulerAction, now = Scheduler.now) {\n this.SchedulerAction = SchedulerAction;\n this.now = now;\n }\n schedule(work, delay = 0, state) {\n return new this.SchedulerAction(this, work).schedule(state, delay);\n }\n}\nScheduler.now = () => Date.now();\n","import { Scheduler } from '../Scheduler';\nexport class AsyncScheduler extends Scheduler {\n constructor(SchedulerAction, now = Scheduler.now) {\n super(SchedulerAction, () => {\n if (AsyncScheduler.delegate && AsyncScheduler.delegate !== this) {\n return AsyncScheduler.delegate.now();\n }\n else {\n return now();\n }\n });\n this.actions = [];\n this.active = false;\n this.scheduled = undefined;\n }\n schedule(work, delay = 0, state) {\n if (AsyncScheduler.delegate && AsyncScheduler.delegate !== this) {\n return AsyncScheduler.delegate.schedule(work, delay, state);\n }\n else {\n return super.schedule(work, delay, state);\n }\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 function getSymbolIterator() {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator';\n }\n return Symbol.iterator;\n}\nexport const iterator = getSymbolIterator();\nexport const $$iterator = iterator;\n","export const observable = (() => typeof Symbol === 'function' && Symbol.observable || '@@observable')();\n","export const rxSubscriber = (() => typeof Symbol === 'function'\n ? Symbol('rxSubscriber')\n : '@@rxSubscriber_' + Math.random())();\nexport const $$rxSubscriber = rxSubscriber;\n","const ArgumentOutOfRangeErrorImpl = (() => {\n function ArgumentOutOfRangeErrorImpl() {\n Error.call(this);\n this.message = 'argument out of range';\n this.name = 'ArgumentOutOfRangeError';\n return this;\n }\n ArgumentOutOfRangeErrorImpl.prototype = Object.create(Error.prototype);\n return ArgumentOutOfRangeErrorImpl;\n})();\nexport const ArgumentOutOfRangeError = ArgumentOutOfRangeErrorImpl;\n","const EmptyErrorImpl = (() => {\n function EmptyErrorImpl() {\n Error.call(this);\n this.message = 'no elements in sequence';\n this.name = 'EmptyError';\n return this;\n }\n EmptyErrorImpl.prototype = Object.create(Error.prototype);\n return EmptyErrorImpl;\n})();\nexport const EmptyError = EmptyErrorImpl;\n","const ObjectUnsubscribedErrorImpl = (() => {\n function ObjectUnsubscribedErrorImpl() {\n Error.call(this);\n this.message = 'object unsubscribed';\n this.name = 'ObjectUnsubscribedError';\n return this;\n }\n ObjectUnsubscribedErrorImpl.prototype = Object.create(Error.prototype);\n return ObjectUnsubscribedErrorImpl;\n})();\nexport const ObjectUnsubscribedError = ObjectUnsubscribedErrorImpl;\n","export function hostReportError(err) {\n setTimeout(() => { throw err; }, 0);\n}\n","export function identity(x) {\n return x;\n}\n","export const isArray = (() => Array.isArray || ((x) => x && typeof x.length === 'number'))();\n","export const isArrayLike = ((x) => x && typeof x.length === 'number' && typeof x !== 'function');\n","export function isFunction(x) {\n return typeof x === 'function';\n}\n","export function isObject(x) {\n return x !== null && typeof x === 'object';\n}\n","export function isPromise(value) {\n return !!value && typeof value.subscribe !== 'function' && typeof value.then === 'function';\n}\n","export function isScheduler(value) {\n return value && typeof value.schedule === 'function';\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 { subscribeToArray } from './subscribeToArray';\nimport { subscribeToPromise } from './subscribeToPromise';\nimport { subscribeToIterable } from './subscribeToIterable';\nimport { subscribeToObservable } from './subscribeToObservable';\nimport { isArrayLike } from './isArrayLike';\nimport { isPromise } from './isPromise';\nimport { isObject } from './isObject';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport const subscribeTo = (result) => {\n if (!!result && typeof result[Symbol_observable] === 'function') {\n return subscribeToObservable(result);\n }\n else if (isArrayLike(result)) {\n return subscribeToArray(result);\n }\n else if (isPromise(result)) {\n return subscribeToPromise(result);\n }\n else if (!!result && typeof result[Symbol_iterator] === 'function') {\n return subscribeToIterable(result);\n }\n else {\n const value = isObject(result) ? 'an invalid object' : `'${result}'`;\n const msg = `You provided ${value} where a stream was expected.`\n + ' You can provide an Observable, Promise, Array, or Iterable.';\n throw new TypeError(msg);\n }\n};\n","import { observable as Symbol_observable } from '../symbol/observable';\nexport const subscribeToObservable = (obj) => (subscriber) => {\n const obs = obj[Symbol_observable]();\n if (typeof obs.subscribe !== 'function') {\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n }\n else {\n return obs.subscribe(subscriber);\n }\n};\n","import { hostReportError } from './hostReportError';\nexport const subscribeToPromise = (promise) => (subscriber) => {\n promise.then((value) => {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, (err) => subscriber.error(err))\n .then(null, hostReportError);\n return subscriber;\n};\n","import { iterator as Symbol_iterator } from '../symbol/iterator';\nexport const subscribeToIterable = (iterable) => (subscriber) => {\n const iterator = iterable[Symbol_iterator]();\n do {\n let item;\n try {\n item = iterator.next();\n }\n catch (err) {\n subscriber.error(err);\n return subscriber;\n }\n if (item.done) {\n subscriber.complete();\n break;\n }\n subscriber.next(item.value);\n if (subscriber.closed) {\n break;\n }\n } while (true);\n if (typeof iterator.return === 'function') {\n subscriber.add(() => {\n if (iterator.return) {\n iterator.return();\n }\n });\n }\n return subscriber;\n};\n","export const subscribeToArray = (array) => (subscriber) => {\n for (let i = 0, len = array.length; i < len && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n};\n","import { Subscriber } from './Subscriber';\nexport class InnerSubscriber extends Subscriber {\n constructor(parent, outerValue, outerIndex) {\n super();\n this.parent = parent;\n this.outerValue = outerValue;\n this.outerIndex = outerIndex;\n this.index = 0;\n }\n _next(value) {\n this.parent.notifyNext(this.outerValue, value, this.outerIndex, this.index++, this);\n }\n _error(error) {\n this.parent.notifyError(error, this);\n this.unsubscribe();\n }\n _complete() {\n this.parent.notifyComplete(this);\n this.unsubscribe();\n }\n}\n","import { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeTo } from './subscribeTo';\nimport { Observable } from '../Observable';\nexport function subscribeToResult(outerSubscriber, result, outerValue, outerIndex, innerSubscriber = new InnerSubscriber(outerSubscriber, outerValue, outerIndex)) {\n if (innerSubscriber.closed) {\n return undefined;\n }\n if (result instanceof Observable) {\n return result.subscribe(innerSubscriber);\n }\n return subscribeTo(result)(innerSubscriber);\n}\n","/**\n * @license Angular v14.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 * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * 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 * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction scheduleMicroTask(cb) {\n Promise.resolve().then(cb);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * 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 `animate()`\n * @see `AnimationPlayer`\n * @see `GroupPlayer`\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 scheduleMicroTask(() => 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 * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A programmatic controller for a group of reusable animations.\n * Used internally to control animations.\n *\n * @see `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 scheduleMicroTask(() => 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\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst ɵPRE_STYLE = '!';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { 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 v14.2.12\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport * as i0 from '@angular/core';\nimport { InjectionToken, Injectable, ɵɵinject, Inject, inject, Optional, EventEmitter, ɵfindLocaleData, ɵLocaleDataIndex, ɵgetLocaleCurrencyCode, ɵgetLocalePluralCase, LOCALE_ID, ɵregisterLocaleData, ɵisListLikeIterable, ɵstringify, Directive, Input, createNgModule, NgModuleRef, ɵRuntimeError, Host, Attribute, RendererStyleFlags2, ɵisPromise, ɵisSubscribable, Pipe, DEFAULT_CURRENCY_CODE, NgModule, Version, ɵɵdefineInjectable, ɵformatRuntimeError, Renderer2, ElementRef, Injector, NgZone } from '@angular/core';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nlet _DOM = null;\nfunction getDOM() {\n return _DOM;\n}\nfunction setDOM(adapter) {\n _DOM = adapter;\n}\nfunction setRootDomAdapter(adapter) {\n if (!_DOM) {\n _DOM = adapter;\n }\n}\n/* tslint:disable:requireParameterType */\n/**\n * Provides DOM operations in an environment-agnostic way.\n *\n * @security Tread carefully! Interacting with the DOM directly is dangerous and\n * can introduce XSS risks.\n */\nclass DomAdapter {\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A DI Token representing the main rendering context. In a browser this is the DOM Document.\n *\n * Note: Document might not be available in the Application Context when Application and Rendering\n * Contexts are not the same (e.g. when running the application in a Web Worker).\n *\n * @publicApi\n */\nconst DOCUMENT = new InjectionToken('DocumentToken');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * This class should not be used directly by an application developer. Instead, use\n * {@link Location}.\n *\n * `PlatformLocation` encapsulates all calls to DOM APIs, which allows the Router to be\n * platform-agnostic.\n * This means that we can have different implementation of `PlatformLocation` for the different\n * platforms that Angular supports. For example, `@angular/platform-browser` provides an\n * implementation specific to the browser environment, while `@angular/platform-server` provides\n * one suitable for use with server-side rendering.\n *\n * The `PlatformLocation` class is used directly by all implementations of {@link LocationStrategy}\n * when they need to interact with the DOM APIs like pushState, popState, etc.\n *\n * {@link LocationStrategy} in turn is used by the {@link Location} service which is used directly\n * by the {@link Router} in order to navigate between routes. Since all interactions between {@link\n * Router} /\n * {@link Location} / {@link LocationStrategy} and DOM APIs flow through the `PlatformLocation`\n * class, they are all platform-agnostic.\n *\n * @publicApi\n */\nclass PlatformLocation {\n historyGo(relativePosition) {\n throw new Error('Not implemented');\n }\n}\nPlatformLocation.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: PlatformLocation, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nPlatformLocation.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: PlatformLocation, providedIn: 'platform', useFactory: useBrowserPlatformLocation });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: PlatformLocation, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'platform',\n // See #23917\n useFactory: useBrowserPlatformLocation\n }]\n }] });\nfunction useBrowserPlatformLocation() {\n return ɵɵinject(BrowserPlatformLocation);\n}\n/**\n * @description\n * Indicates when a location is initialized.\n *\n * @publicApi\n */\nconst LOCATION_INITIALIZED = new InjectionToken('Location Initialized');\n/**\n * `PlatformLocation` encapsulates all of the direct calls to platform APIs.\n * This class should not be used directly by an application developer. Instead, use\n * {@link Location}.\n */\nclass BrowserPlatformLocation extends PlatformLocation {\n constructor(_doc) {\n super();\n this._doc = _doc;\n this._init();\n }\n // This is moved to its own method so that `MockPlatformLocationStrategy` can overwrite it\n /** @internal */\n _init() {\n this.location = window.location;\n this._history = window.history;\n }\n getBaseHrefFromDOM() {\n return getDOM().getBaseHref(this._doc);\n }\n onPopState(fn) {\n const window = getDOM().getGlobalEventTarget(this._doc, 'window');\n window.addEventListener('popstate', fn, false);\n return () => window.removeEventListener('popstate', fn);\n }\n onHashChange(fn) {\n const window = getDOM().getGlobalEventTarget(this._doc, 'window');\n window.addEventListener('hashchange', fn, false);\n return () => window.removeEventListener('hashchange', fn);\n }\n get href() {\n return this.location.href;\n }\n get protocol() {\n return this.location.protocol;\n }\n get hostname() {\n return this.location.hostname;\n }\n get port() {\n return this.location.port;\n }\n get pathname() {\n return this.location.pathname;\n }\n get search() {\n return this.location.search;\n }\n get hash() {\n return this.location.hash;\n }\n set pathname(newPath) {\n this.location.pathname = newPath;\n }\n pushState(state, title, url) {\n if (supportsState()) {\n this._history.pushState(state, title, url);\n }\n else {\n this.location.hash = url;\n }\n }\n replaceState(state, title, url) {\n if (supportsState()) {\n this._history.replaceState(state, title, url);\n }\n else {\n this.location.hash = url;\n }\n }\n forward() {\n this._history.forward();\n }\n back() {\n this._history.back();\n }\n historyGo(relativePosition = 0) {\n this._history.go(relativePosition);\n }\n getState() {\n return this._history.state;\n }\n}\nBrowserPlatformLocation.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: BrowserPlatformLocation, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nBrowserPlatformLocation.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: BrowserPlatformLocation, providedIn: 'platform', useFactory: createBrowserPlatformLocation });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: BrowserPlatformLocation, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'platform',\n // See #23917\n useFactory: createBrowserPlatformLocation,\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; } });\nfunction supportsState() {\n return !!window.history.pushState;\n}\nfunction createBrowserPlatformLocation() {\n return new BrowserPlatformLocation(ɵɵinject(DOCUMENT));\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Joins two parts of a URL with a slash if needed.\n *\n * @param start URL string\n * @param end URL string\n *\n *\n * @returns The joined URL string.\n */\nfunction joinWithSlash(start, end) {\n if (start.length == 0) {\n return end;\n }\n if (end.length == 0) {\n return start;\n }\n let slashes = 0;\n if (start.endsWith('/')) {\n slashes++;\n }\n if (end.startsWith('/')) {\n slashes++;\n }\n if (slashes == 2) {\n return start + end.substring(1);\n }\n if (slashes == 1) {\n return start + end;\n }\n return start + '/' + end;\n}\n/**\n * Removes a trailing slash from a URL string if needed.\n * Looks for the first occurrence of either `#`, `?`, or the end of the\n * line as `/` characters and removes the trailing slash if one exists.\n *\n * @param url URL string.\n *\n * @returns The URL string, modified if needed.\n */\nfunction stripTrailingSlash(url) {\n const match = url.match(/#|\\?|$/);\n const pathEndIdx = match && match.index || url.length;\n const droppedSlashIdx = pathEndIdx - (url[pathEndIdx - 1] === '/' ? 1 : 0);\n return url.slice(0, droppedSlashIdx) + url.slice(pathEndIdx);\n}\n/**\n * Normalizes URL parameters by prepending with `?` if needed.\n *\n * @param params String of URL parameters.\n *\n * @returns The normalized URL parameters string.\n */\nfunction normalizeQueryParams(params) {\n return params && params[0] !== '?' ? '?' + params : params;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Enables the `Location` service to read route state from the browser's URL.\n * Angular provides two strategies:\n * `HashLocationStrategy` and `PathLocationStrategy`.\n *\n * Applications should use the `Router` or `Location` services to\n * interact with application route state.\n *\n * For instance, `HashLocationStrategy` produces URLs like\n * http://example.com#/foo,\n * and `PathLocationStrategy` produces\n * http://example.com/foo as an equivalent URL.\n *\n * See these two classes for more.\n *\n * @publicApi\n */\nclass LocationStrategy {\n historyGo(relativePosition) {\n throw new Error('Not implemented');\n }\n}\nLocationStrategy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: LocationStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nLocationStrategy.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: LocationStrategy, providedIn: 'root', useFactory: () => inject(PathLocationStrategy) });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.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 {Component, NgModule} from '@angular/core';\n * import {APP_BASE_HREF} from '@angular/common';\n *\n * @NgModule({\n * providers: [{provide: APP_BASE_HREF, useValue: '/my/app'}]\n * })\n * class AppModule {}\n * ```\n *\n * @publicApi\n */\nconst APP_BASE_HREF = new InjectionToken('appBaseHref');\n/**\n * @description\n * A {@link LocationStrategy} used to configure the {@link Location} service to\n * represent its state in the\n * [path](https://en.wikipedia.org/wiki/Uniform_Resource_Locator#Syntax) of the\n * browser's URL.\n *\n * If you're using `PathLocationStrategy`, you 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}\nPathLocationStrategy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: PathLocationStrategy, deps: [{ token: PlatformLocation }, { token: APP_BASE_HREF, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nPathLocationStrategy.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: PathLocationStrategy, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.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 * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @description\n * A {@link LocationStrategy} used to configure the {@link Location} service to\n * represent its state in the\n * [hash fragment](https://en.wikipedia.org/wiki/Uniform_Resource_Locator#Syntax)\n * of the browser's URL.\n *\n * For instance, if you call `location.go('/foo')`, the browser's URL will become\n * `example.com#/foo`.\n *\n * @usageNotes\n *\n * ### Example\n *\n * {@example common/location/ts/hash_location_component.ts region='LocationComponent'}\n *\n * @publicApi\n */\nclass HashLocationStrategy extends LocationStrategy {\n constructor(_platformLocation, _baseHref) {\n super();\n this._platformLocation = _platformLocation;\n this._baseHref = '';\n this._removeListenerFns = [];\n if (_baseHref != null) {\n this._baseHref = _baseHref;\n }\n }\n /** @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}\nHashLocationStrategy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: HashLocationStrategy, deps: [{ token: PlatformLocation }, { token: APP_BASE_HREF, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nHashLocationStrategy.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: HashLocationStrategy });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.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 * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @description\n *\n * A service that applications can use to interact with a browser's URL.\n *\n * Depending on the `LocationStrategy` used, `Location` persists\n * to the URL's path or the URL's hash segment.\n *\n * @usageNotes\n *\n * It's better to use the `Router.navigate()` service to trigger route changes. Use\n * `Location` only if you need to interact with or create normalized URLs outside of\n * routing.\n *\n * `Location` is responsible for normalizing the URL against the application's base href.\n * A normalized URL is absolute from the URL host, includes the application's base href, and has no\n * trailing slash:\n * - `/my/app/user/123` is normalized\n * - `my/app/user/123` **is not** normalized\n * - `/my/app/user/123/` **is not** normalized\n *\n * ### Example\n *\n * \n *\n * @publicApi\n */\nclass Location {\n constructor(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 browserBaseHref = this._locationStrategy.getBaseHref();\n this._baseHref = stripTrailingSlash(_stripIndexHtml(browserBaseHref));\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(_stripBaseHref(this._baseHref, _stripIndexHtml(url)));\n }\n /**\n * Normalizes an external URL path.\n * If the given URL doesn't begin with a leading slash (`'/'`), adds one\n * before normalizing. Adds a hash if `HashLocationStrategy` is\n * in use, or the `APP_BASE_HREF` if the `PathLocationStrategy` is in use.\n *\n * @param url String representing a URL.\n *\n * @returns A normalized platform-specific URL.\n */\n prepareExternalUrl(url) {\n if (url && url[0] !== '/') {\n url = '/' + url;\n }\n return this._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/**\n * Normalizes URL parameters by prepending with `?` if needed.\n *\n * @param params String of URL parameters.\n *\n * @returns The normalized URL parameters string.\n */\nLocation.normalizeQueryParams = normalizeQueryParams;\n/**\n * Joins two parts of a URL with a slash if needed.\n *\n * @param start URL string\n * @param end URL string\n *\n *\n * @returns The joined URL string.\n */\nLocation.joinWithSlash = joinWithSlash;\n/**\n * Removes a trailing slash from a URL string if needed.\n * Looks for the first occurrence of either `#`, `?`, or the end of the\n * line as `/` characters and removes the trailing slash if one exists.\n *\n * @param url URL string.\n *\n * @returns The URL string, modified if needed.\n */\nLocation.stripTrailingSlash = stripTrailingSlash;\nLocation.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: Location, deps: [{ token: LocationStrategy }], target: i0.ɵɵFactoryTarget.Injectable });\nLocation.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: Location, providedIn: 'root', useFactory: createLocation });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.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 _stripBaseHref(baseHref, url) {\n return baseHref && url.startsWith(baseHref) ? url.substring(baseHref.length) : url;\n}\nfunction _stripIndexHtml(url) {\n return url.replace(/\\/index.html$/, '');\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** @internal */\nconst CURRENCIES_EN = { \"ADP\": [undefined, undefined, 0], \"AFN\": [undefined, \"؋\", 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 * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Format styles that can be used to represent numbers.\n * @see `getLocaleNumberFormat()`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nvar NumberFormatStyle;\n(function (NumberFormatStyle) {\n NumberFormatStyle[NumberFormatStyle[\"Decimal\"] = 0] = \"Decimal\";\n NumberFormatStyle[NumberFormatStyle[\"Percent\"] = 1] = \"Percent\";\n NumberFormatStyle[NumberFormatStyle[\"Currency\"] = 2] = \"Currency\";\n NumberFormatStyle[NumberFormatStyle[\"Scientific\"] = 3] = \"Scientific\";\n})(NumberFormatStyle || (NumberFormatStyle = {}));\n/**\n * Plurality cases used for translating plurals to different languages.\n *\n * @see `NgPlural`\n * @see `NgPluralCase`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nvar Plural;\n(function (Plural) {\n Plural[Plural[\"Zero\"] = 0] = \"Zero\";\n Plural[Plural[\"One\"] = 1] = \"One\";\n Plural[Plural[\"Two\"] = 2] = \"Two\";\n Plural[Plural[\"Few\"] = 3] = \"Few\";\n Plural[Plural[\"Many\"] = 4] = \"Many\";\n Plural[Plural[\"Other\"] = 5] = \"Other\";\n})(Plural || (Plural = {}));\n/**\n * Context-dependant translation forms for strings.\n * Typically the standalone version is for the nominative form of the word,\n * and the format version is used for the genitive case.\n * @see [CLDR website](http://cldr.unicode.org/translation/date-time-1/date-time#TOC-Standalone-vs.-Format-Styles)\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nvar FormStyle;\n(function (FormStyle) {\n FormStyle[FormStyle[\"Format\"] = 0] = \"Format\";\n FormStyle[FormStyle[\"Standalone\"] = 1] = \"Standalone\";\n})(FormStyle || (FormStyle = {}));\n/**\n * String widths available for translations.\n * The specific character widths are locale-specific.\n * Examples are given for the word \"Sunday\" in English.\n *\n * @publicApi\n */\nvar TranslationWidth;\n(function (TranslationWidth) {\n /** 1 character for `en-US`. For example: 'S' */\n TranslationWidth[TranslationWidth[\"Narrow\"] = 0] = \"Narrow\";\n /** 3 characters for `en-US`. For example: 'Sun' */\n TranslationWidth[TranslationWidth[\"Abbreviated\"] = 1] = \"Abbreviated\";\n /** Full length for `en-US`. For example: \"Sunday\" */\n TranslationWidth[TranslationWidth[\"Wide\"] = 2] = \"Wide\";\n /** 2 characters for `en-US`, For example: \"Su\" */\n TranslationWidth[TranslationWidth[\"Short\"] = 3] = \"Short\";\n})(TranslationWidth || (TranslationWidth = {}));\n/**\n * String widths available for date-time formats.\n * The specific character widths are locale-specific.\n * Examples are given for `en-US`.\n *\n * @see `getLocaleDateFormat()`\n * @see `getLocaleTimeFormat()`\n * @see `getLocaleDateTimeFormat()`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n * @publicApi\n */\nvar FormatWidth;\n(function (FormatWidth) {\n /**\n * For `en-US`, 'M/d/yy, h:mm a'`\n * (Example: `6/15/15, 9:03 AM`)\n */\n FormatWidth[FormatWidth[\"Short\"] = 0] = \"Short\";\n /**\n * For `en-US`, `'MMM d, y, h:mm:ss a'`\n * (Example: `Jun 15, 2015, 9:03:01 AM`)\n */\n FormatWidth[FormatWidth[\"Medium\"] = 1] = \"Medium\";\n /**\n * For `en-US`, `'MMMM d, y, h:mm:ss a z'`\n * (Example: `June 15, 2015 at 9:03:01 AM GMT+1`)\n */\n FormatWidth[FormatWidth[\"Long\"] = 2] = \"Long\";\n /**\n * For `en-US`, `'EEEE, MMMM d, y, h:mm:ss a zzzz'`\n * (Example: `Monday, June 15, 2015 at 9:03:01 AM GMT+01:00`)\n */\n FormatWidth[FormatWidth[\"Full\"] = 3] = \"Full\";\n})(FormatWidth || (FormatWidth = {}));\n/**\n * Symbols that can be used to replace placeholders in number patterns.\n * Examples are based on `en-US` values.\n *\n * @see `getLocaleNumberSymbol()`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nvar NumberSymbol;\n(function (NumberSymbol) {\n /**\n * Decimal separator.\n * For `en-US`, the dot character.\n * Example: 2,345`.`67\n */\n NumberSymbol[NumberSymbol[\"Decimal\"] = 0] = \"Decimal\";\n /**\n * Grouping separator, typically for thousands.\n * For `en-US`, the comma character.\n * Example: 2`,`345.67\n */\n NumberSymbol[NumberSymbol[\"Group\"] = 1] = \"Group\";\n /**\n * List-item separator.\n * Example: \"one, two, and three\"\n */\n NumberSymbol[NumberSymbol[\"List\"] = 2] = \"List\";\n /**\n * Sign for percentage (out of 100).\n * Example: 23.4%\n */\n NumberSymbol[NumberSymbol[\"PercentSign\"] = 3] = \"PercentSign\";\n /**\n * Sign for positive numbers.\n * Example: +23\n */\n NumberSymbol[NumberSymbol[\"PlusSign\"] = 4] = \"PlusSign\";\n /**\n * Sign for negative numbers.\n * Example: -23\n */\n NumberSymbol[NumberSymbol[\"MinusSign\"] = 5] = \"MinusSign\";\n /**\n * Computer notation for exponential value (n times a power of 10).\n * Example: 1.2E3\n */\n NumberSymbol[NumberSymbol[\"Exponential\"] = 6] = \"Exponential\";\n /**\n * Human-readable format of exponential.\n * Example: 1.2x103\n */\n NumberSymbol[NumberSymbol[\"SuperscriptingExponent\"] = 7] = \"SuperscriptingExponent\";\n /**\n * Sign for permille (out of 1000).\n * Example: 23.4‰\n */\n NumberSymbol[NumberSymbol[\"PerMille\"] = 8] = \"PerMille\";\n /**\n * Infinity, can be used with plus and minus.\n * Example: ∞, +∞, -∞\n */\n NumberSymbol[NumberSymbol[\"Infinity\"] = 9] = \"Infinity\";\n /**\n * Not a number.\n * Example: NaN\n */\n NumberSymbol[NumberSymbol[\"NaN\"] = 10] = \"NaN\";\n /**\n * Symbol used between time units.\n * Example: 10:52\n */\n NumberSymbol[NumberSymbol[\"TimeSeparator\"] = 11] = \"TimeSeparator\";\n /**\n * Decimal separator for currency values (fallback to `Decimal`).\n * Example: $2,345.67\n */\n NumberSymbol[NumberSymbol[\"CurrencyDecimal\"] = 12] = \"CurrencyDecimal\";\n /**\n * Group separator for currency values (fallback to `Group`).\n * Example: $2,345.67\n */\n NumberSymbol[NumberSymbol[\"CurrencyGroup\"] = 13] = \"CurrencyGroup\";\n})(NumberSymbol || (NumberSymbol = {}));\n/**\n * The value for each day of the week, based on the `en-US` locale\n *\n * @publicApi\n */\nvar WeekDay;\n(function (WeekDay) {\n WeekDay[WeekDay[\"Sunday\"] = 0] = \"Sunday\";\n WeekDay[WeekDay[\"Monday\"] = 1] = \"Monday\";\n WeekDay[WeekDay[\"Tuesday\"] = 2] = \"Tuesday\";\n WeekDay[WeekDay[\"Wednesday\"] = 3] = \"Wednesday\";\n WeekDay[WeekDay[\"Thursday\"] = 4] = \"Thursday\";\n WeekDay[WeekDay[\"Friday\"] = 5] = \"Friday\";\n WeekDay[WeekDay[\"Saturday\"] = 6] = \"Saturday\";\n})(WeekDay || (WeekDay = {}));\n/**\n * Retrieves the locale ID from the currently loaded locale.\n * The loaded locale could be, for example, a global one rather than a regional one.\n * @param locale A locale code, such as `fr-FR`.\n * @returns The locale code. For example, `fr`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleId(locale) {\n return ɵfindLocaleData(locale)[ɵLocaleDataIndex.LocaleId];\n}\n/**\n * Retrieves day period strings for the given locale.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param formStyle The required grammatical form.\n * @param width The required character width.\n * @returns An array of localized period strings. For example, `[AM, PM]` for `en-US`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleDayPeriods(locale, formStyle, width) {\n const data = ɵfindLocaleData(locale);\n const amPmData = [\n data[ɵLocaleDataIndex.DayPeriodsFormat], data[ɵLocaleDataIndex.DayPeriodsStandalone]\n ];\n const amPm = getLastDefinedValue(amPmData, formStyle);\n return getLastDefinedValue(amPm, width);\n}\n/**\n * Retrieves days of the week for the given locale, using the Gregorian calendar.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param formStyle The required grammatical form.\n * @param width The required character width.\n * @returns An array of localized name strings.\n * For example,`[Sunday, Monday, ... Saturday]` for `en-US`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleDayNames(locale, formStyle, width) {\n const data = ɵfindLocaleData(locale);\n const daysData = [data[ɵLocaleDataIndex.DaysFormat], data[ɵLocaleDataIndex.DaysStandalone]];\n const days = getLastDefinedValue(daysData, formStyle);\n return getLastDefinedValue(days, width);\n}\n/**\n * Retrieves months of the year for the given locale, using the Gregorian calendar.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param formStyle The required grammatical form.\n * @param width The required character width.\n * @returns An array of localized name strings.\n * For example, `[January, February, ...]` for `en-US`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleMonthNames(locale, formStyle, width) {\n const data = ɵfindLocaleData(locale);\n const monthsData = [data[ɵLocaleDataIndex.MonthsFormat], data[ɵLocaleDataIndex.MonthsStandalone]];\n const months = getLastDefinedValue(monthsData, formStyle);\n return getLastDefinedValue(months, width);\n}\n/**\n * Retrieves Gregorian-calendar eras for the given locale.\n * @param locale A locale code for the locale format rules to use.\n * @param width The required character width.\n\n * @returns An array of localized era strings.\n * For example, `[AD, BC]` for `en-US`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleEraNames(locale, width) {\n const data = ɵfindLocaleData(locale);\n const erasData = data[ɵLocaleDataIndex.Eras];\n return getLastDefinedValue(erasData, width);\n}\n/**\n * Retrieves the first day of the week for the given locale.\n *\n * @param locale A locale code for the locale format rules to use.\n * @returns A day index number, using the 0-based week-day index for `en-US`\n * (Sunday = 0, Monday = 1, ...).\n * For example, for `fr-FR`, returns 1 to indicate that the first day is Monday.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleFirstDayOfWeek(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.FirstDayOfWeek];\n}\n/**\n * Range of week days that are considered the week-end for the given locale.\n *\n * @param locale A locale code for the locale format rules to use.\n * @returns The range of day values, `[startDay, endDay]`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleWeekEndRange(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.WeekendRange];\n}\n/**\n * Retrieves a localized date-value formatting string.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param width The format type.\n * @returns The localized formatting string.\n * @see `FormatWidth`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleDateFormat(locale, width) {\n const data = ɵfindLocaleData(locale);\n return getLastDefinedValue(data[ɵLocaleDataIndex.DateFormat], width);\n}\n/**\n * Retrieves a localized time-value formatting string.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param width The format type.\n * @returns The localized formatting string.\n * @see `FormatWidth`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n\n * @publicApi\n */\nfunction getLocaleTimeFormat(locale, width) {\n const data = ɵfindLocaleData(locale);\n return getLastDefinedValue(data[ɵLocaleDataIndex.TimeFormat], width);\n}\n/**\n * Retrieves a localized date-time formatting string.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param width The format type.\n * @returns The localized formatting string.\n * @see `FormatWidth`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleDateTimeFormat(locale, width) {\n const data = ɵfindLocaleData(locale);\n const dateTimeFormatData = data[ɵLocaleDataIndex.DateTimeFormat];\n return getLastDefinedValue(dateTimeFormatData, width);\n}\n/**\n * Retrieves a localized number symbol that can be used to replace placeholders in number formats.\n * @param locale The locale code.\n * @param symbol The symbol to localize.\n * @returns The character for the localized symbol.\n * @see `NumberSymbol`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleNumberSymbol(locale, symbol) {\n const data = ɵfindLocaleData(locale);\n const res = data[ɵLocaleDataIndex.NumberSymbols][symbol];\n if (typeof res === 'undefined') {\n if (symbol === NumberSymbol.CurrencyDecimal) {\n return data[ɵLocaleDataIndex.NumberSymbols][NumberSymbol.Decimal];\n }\n else if (symbol === NumberSymbol.CurrencyGroup) {\n return data[ɵLocaleDataIndex.NumberSymbols][NumberSymbol.Group];\n }\n }\n return res;\n}\n/**\n * Retrieves a number format for a given locale.\n *\n * Numbers are formatted using patterns, like `#,###.00`. For example, the pattern `#,###.00`\n * when used to format the number 12345.678 could result in \"12'345,678\". That would happen if the\n * grouping separator for your language is an apostrophe, and the decimal separator is a comma.\n *\n * Important: The characters `.` `,` `0` `#` (and others below) are special placeholders\n * that stand for the decimal separator, and so on, and are NOT real characters.\n * You must NOT \"translate\" the placeholders. For example, don't change `.` to `,` even though in\n * your language the decimal point is written with a comma. The symbols should be replaced by the\n * local equivalents, using the appropriate `NumberSymbol` for your language.\n *\n * Here are the special characters used in number patterns:\n *\n * | Symbol | Meaning |\n * |--------|---------|\n * | . | Replaced automatically by the character used for the decimal point. |\n * | , | Replaced by the \"grouping\" (thousands) separator. |\n * | 0 | Replaced by a digit (or zero if there aren't enough digits). |\n * | # | Replaced by a digit (or nothing if there aren't enough). |\n * | ¤ | Replaced by a currency symbol, such as $ or USD. |\n * | % | Marks a percent format. The % symbol may change position, but must be retained. |\n * | E | Marks a scientific format. The E symbol may change position, but must be retained. |\n * | ' | Special characters used as literal characters are quoted with ASCII single quotes. |\n *\n * @param locale A locale code for the locale format rules to use.\n * @param type The type of numeric value to be formatted (such as `Decimal` or `Currency`.)\n * @returns The localized format string.\n * @see `NumberFormatStyle`\n * @see [CLDR website](http://cldr.unicode.org/translation/number-patterns)\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleNumberFormat(locale, type) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.NumberFormats][type];\n}\n/**\n * Retrieves the symbol used to represent the currency for the main country\n * corresponding to a given locale. For example, '$' for `en-US`.\n *\n * @param locale A locale code for the locale format rules to use.\n * @returns The localized symbol character,\n * or `null` if the main country cannot be determined.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleCurrencySymbol(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.CurrencySymbol] || null;\n}\n/**\n * Retrieves the name of the currency for the main country corresponding\n * to a given locale. For example, 'US Dollar' for `en-US`.\n * @param locale A locale code for the locale format rules to use.\n * @returns The currency name,\n * or `null` if the main country cannot be determined.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleCurrencyName(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.CurrencyName] || null;\n}\n/**\n * Retrieves the default currency code for the given locale.\n *\n * The default is defined as the first currency which is still in use.\n *\n * @param locale The code of the locale whose currency code we want.\n * @returns The code of the default currency for the given locale.\n *\n * @publicApi\n */\nfunction getLocaleCurrencyCode(locale) {\n return ɵgetLocaleCurrencyCode(locale);\n}\n/**\n * Retrieves the currency values for a given locale.\n * @param locale A locale code for the locale format rules to use.\n * @returns The currency values.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n */\nfunction getLocaleCurrencies(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.Currencies];\n}\n/**\n * @alias core/ɵgetLocalePluralCase\n * @publicApi\n */\nconst getLocalePluralCase = ɵgetLocalePluralCase;\nfunction checkFullData(data) {\n if (!data[ɵLocaleDataIndex.ExtraData]) {\n throw new Error(`Missing extra locale data for the locale \"${data[ɵLocaleDataIndex\n .LocaleId]}\". Use \"registerLocaleData\" to load new data. See the \"I18n guide\" on angular.io to know more.`);\n }\n}\n/**\n * Retrieves locale-specific rules used to determine which day period to use\n * when more than one period is defined for a locale.\n *\n * There is a rule for each defined day period. The\n * first rule is applied to the first day period and so on.\n * Fall back to AM/PM when no rules are available.\n *\n * A rule can specify a period as time range, or as a single time value.\n *\n * This functionality is only available when you have loaded the full locale data.\n * See the [\"I18n guide\"](guide/i18n-common-format-data-locale).\n *\n * @param locale A locale code for the locale format rules to use.\n * @returns The rules for the locale, a single time value or array of *from-time, to-time*,\n * or null if no periods are available.\n *\n * @see `getLocaleExtraDayPeriods()`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleExtraDayPeriodRules(locale) {\n const data = ɵfindLocaleData(locale);\n checkFullData(data);\n const rules = data[ɵLocaleDataIndex.ExtraData][2 /* ɵ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 `getLocaleExtraDayPeriodRules()`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleExtraDayPeriods(locale, formStyle, width) {\n const data = ɵfindLocaleData(locale);\n checkFullData(data);\n const dayPeriodsData = [\n data[ɵLocaleDataIndex.ExtraData][0 /* ɵ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](https://angular.io/guide/i18n-overview)\n */\nfunction getLocaleDirection(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.Directionality];\n}\n/**\n * Retrieves the first value that is defined in an array, going backwards from an index position.\n *\n * To avoid repeating the same data (as when the \"format\" and \"standalone\" forms are the same)\n * add the first value to the locale data arrays, and add other values only if they are different.\n *\n * @param data The data array to retrieve from.\n * @param index A 0-based index into the array to start from.\n * @returns The value immediately before the given index position.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLastDefinedValue(data, index) {\n for (let i = index; i > -1; i--) {\n if (typeof data[i] !== 'undefined') {\n return data[i];\n }\n }\n throw new Error('Locale data API: locale data undefined');\n}\n/**\n * Extracts the hours and minutes from a string like \"15:45\"\n */\nfunction extractTime(time) {\n const [h, m] = time.split(':');\n return { hours: +h, minutes: +m };\n}\n/**\n * Retrieves the currency symbol for a given currency code.\n *\n * For example, for the default `en-US` locale, the code `USD` can\n * be represented by the narrow symbol `$` or the wide symbol `US$`.\n *\n * @param code The currency code.\n * @param format The format, `wide` or `narrow`.\n * @param locale A locale code for the locale format rules to use.\n *\n * @returns The symbol, or the currency code if no symbol is available.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getCurrencySymbol(code, format, locale = 'en') {\n const currency = getLocaleCurrencies(locale)[code] || CURRENCIES_EN[code] || [];\n const symbolNarrow = currency[1 /* ɵ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](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getNumberOfCurrencyDigits(code) {\n let digits;\n const currency = CURRENCIES_EN[code];\n if (currency) {\n digits = currency[2 /* ɵCurrencyIndex.NbOfDigits */];\n }\n return typeof digits === 'number' ? digits : DEFAULT_NB_OF_CURRENCY_DIGITS;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst ISO8601_DATE_REGEX = /^(\\d{4,})-?(\\d\\d)-?(\\d\\d)(?:T(\\d\\d)(?::?(\\d\\d)(?::?(\\d\\d)(?:\\.(\\d+))?)?)?(Z|([+-])(\\d\\d):?(\\d\\d))?)?$/;\n// 1 2 3 4 5 6 7 8 9 10 11\nconst NAMED_FORMATS = {};\nconst DATE_FORMATS_SPLIT = /((?:[^BEGHLMOSWYZabcdhmswyz']+)|(?:'(?:[^']|'')*')|(?:G{1,5}|y{1,4}|Y{1,4}|M{1,5}|L{1,5}|w{1,2}|W{1}|d{1,2}|E{1,6}|c{1,6}|a{1,5}|b{1,5}|B{1,5}|h{1,2}|H{1,2}|m{1,2}|s{1,2}|S{1,3}|z{1,4}|Z{1,5}|O{1,4}))([\\s\\S]*)/;\nvar ZoneWidth;\n(function (ZoneWidth) {\n ZoneWidth[ZoneWidth[\"Short\"] = 0] = \"Short\";\n ZoneWidth[ZoneWidth[\"ShortGMT\"] = 1] = \"ShortGMT\";\n ZoneWidth[ZoneWidth[\"Long\"] = 2] = \"Long\";\n ZoneWidth[ZoneWidth[\"Extended\"] = 3] = \"Extended\";\n})(ZoneWidth || (ZoneWidth = {}));\nvar DateType;\n(function (DateType) {\n DateType[DateType[\"FullYear\"] = 0] = \"FullYear\";\n DateType[DateType[\"Month\"] = 1] = \"Month\";\n DateType[DateType[\"Date\"] = 2] = \"Date\";\n DateType[DateType[\"Hours\"] = 3] = \"Hours\";\n DateType[DateType[\"Minutes\"] = 4] = \"Minutes\";\n DateType[DateType[\"Seconds\"] = 5] = \"Seconds\";\n DateType[DateType[\"FractionalSeconds\"] = 6] = \"FractionalSeconds\";\n DateType[DateType[\"Day\"] = 7] = \"Day\";\n})(DateType || (DateType = {}));\nvar TranslationType;\n(function (TranslationType) {\n TranslationType[TranslationType[\"DayPeriods\"] = 0] = \"DayPeriods\";\n TranslationType[TranslationType[\"Days\"] = 1] = \"Days\";\n TranslationType[TranslationType[\"Months\"] = 2] = \"Months\";\n TranslationType[TranslationType[\"Eras\"] = 3] = \"Eras\";\n})(TranslationType || (TranslationType = {}));\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a date according to locale rules.\n *\n * @param value The date to format, as a Date, or a number (milliseconds since UTC epoch)\n * or an [ISO date-time string](https://www.w3.org/TR/NOTE-datetime).\n * @param format The date-time components to include. See `DatePipe` for details.\n * @param locale A locale code for the locale format rules to use.\n * @param timezone The time zone. A time zone offset from GMT (such as `'+0430'`),\n * or a standard UTC/GMT or continental US time zone abbreviation.\n * If not specified, uses host system settings.\n *\n * @returns The formatted date string.\n *\n * @see `DatePipe`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction formatDate(value, format, locale, timezone) {\n let date = toDate(value);\n const namedFormat = getNamedFormat(locale, format);\n format = namedFormat || format;\n let parts = [];\n let match;\n while (format) {\n match = DATE_FORMATS_SPLIT.exec(format);\n if (match) {\n parts = parts.concat(match.slice(1));\n const part = parts.pop();\n if (!part) {\n break;\n }\n format = part;\n }\n else {\n parts.push(format);\n break;\n }\n }\n let dateTimezoneOffset = date.getTimezoneOffset();\n if (timezone) {\n dateTimezoneOffset = timezoneToOffset(timezone, dateTimezoneOffset);\n date = convertTimezoneToLocal(date, timezone, true);\n }\n let text = '';\n parts.forEach(value => {\n const dateFormatter = getDateFormatter(value);\n text += dateFormatter ? 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\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst NUMBER_FORMAT_REGEXP = /^(\\d+)?\\.((\\d+)(-(\\d+))?)?$/;\nconst MAX_DIGITS = 22;\nconst DECIMAL_SEP = '.';\nconst ZERO_CHAR = '0';\nconst PATTERN_SEP = ';';\nconst GROUP_SEP = ',';\nconst DIGIT_CHAR = '#';\nconst CURRENCY_CHAR = '¤';\nconst PERCENT_CHAR = '%';\n/**\n * Transforms a number to a locale string based on a style and a format.\n */\nfunction formatNumberToLocaleString(value, pattern, locale, groupSymbol, decimalSymbol, digitsInfo, isPercent = false) {\n let formattedText = '';\n let isZero = false;\n if (!isFinite(value)) {\n formattedText = getLocaleNumberSymbol(locale, NumberSymbol.Infinity);\n }\n else {\n let parsedNumber = parseNumber(value);\n if (isPercent) {\n parsedNumber = toPercent(parsedNumber);\n }\n let minInt = pattern.minInt;\n let minFraction = pattern.minFrac;\n let maxFraction = pattern.maxFrac;\n if (digitsInfo) {\n const parts = digitsInfo.match(NUMBER_FORMAT_REGEXP);\n if (parts === null) {\n throw new Error(`${digitsInfo} is not a valid digit info`);\n }\n const minIntPart = parts[1];\n const minFractionPart = parts[3];\n const maxFractionPart = parts[5];\n if (minIntPart != null) {\n minInt = parseIntAutoRadix(minIntPart);\n }\n if (minFractionPart != null) {\n minFraction = parseIntAutoRadix(minFractionPart);\n }\n if (maxFractionPart != null) {\n maxFraction = parseIntAutoRadix(maxFractionPart);\n }\n else if (minFractionPart != null && minFraction > maxFraction) {\n maxFraction = minFraction;\n }\n }\n roundNumber(parsedNumber, minFraction, maxFraction);\n let digits = parsedNumber.digits;\n let integerLen = parsedNumber.integerLen;\n const exponent = parsedNumber.exponent;\n let decimals = [];\n isZero = digits.every(d => !d);\n // pad zeros for small numbers\n for (; integerLen < minInt; integerLen++) {\n digits.unshift(0);\n }\n // pad zeros for small numbers\n for (; integerLen < 0; integerLen++) {\n digits.unshift(0);\n }\n // extract decimals digits\n if (integerLen > 0) {\n decimals = digits.splice(integerLen, digits.length);\n }\n else {\n decimals = digits;\n digits = [0];\n }\n // format the integer digits with grouping separators\n const groups = [];\n if (digits.length >= pattern.lgSize) {\n groups.unshift(digits.splice(-pattern.lgSize, digits.length).join(''));\n }\n while (digits.length > pattern.gSize) {\n groups.unshift(digits.splice(-pattern.gSize, digits.length).join(''));\n }\n if (digits.length) {\n groups.unshift(digits.join(''));\n }\n formattedText = groups.join(getLocaleNumberSymbol(locale, groupSymbol));\n // append the decimal digits\n if (decimals.length) {\n formattedText += getLocaleNumberSymbol(locale, decimalSymbol) + decimals.join('');\n }\n if (exponent) {\n formattedText += getLocaleNumberSymbol(locale, NumberSymbol.Exponential) + '+' + exponent;\n }\n }\n if (value < 0 && !isZero) {\n formattedText = pattern.negPre + formattedText + pattern.negSuf;\n }\n else {\n formattedText = pattern.posPre + formattedText + pattern.posSuf;\n }\n return formattedText;\n}\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a number as currency using locale rules.\n *\n * @param value The number to format.\n * @param locale A locale code for the locale format rules to use.\n * @param currency A string containing the currency symbol or its name,\n * such as \"$\" or \"Canadian Dollar\". Used in output string, but does not affect the operation\n * of the function.\n * @param currencyCode The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217)\n * currency code, such as `USD` for the US dollar and `EUR` for the euro.\n * Used to determine the number of digits in the decimal part.\n * @param digitsInfo Decimal representation options, specified by a string in the following format:\n * `{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}`. See `DecimalPipe` for more details.\n *\n * @returns The formatted currency value.\n *\n * @see `formatNumber()`\n * @see `DecimalPipe`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction formatCurrency(value, locale, currency, currencyCode, digitsInfo) {\n const format = getLocaleNumberFormat(locale, NumberFormatStyle.Currency);\n const pattern = parseNumberFormat(format, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));\n pattern.minFrac = getNumberOfCurrencyDigits(currencyCode);\n pattern.maxFrac = pattern.minFrac;\n const res = formatNumberToLocaleString(value, pattern, locale, NumberSymbol.CurrencyGroup, NumberSymbol.CurrencyDecimal, digitsInfo);\n return res\n .replace(CURRENCY_CHAR, currency)\n // if we have 2 time the currency character, the second one is ignored\n .replace(CURRENCY_CHAR, '')\n // If there is a spacing between currency character and the value and\n // the currency character is 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 `formatNumber()`\n * @see `DecimalPipe`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n * @publicApi\n *\n */\nfunction formatPercent(value, locale, digitsInfo) {\n const format = getLocaleNumberFormat(locale, NumberFormatStyle.Percent);\n const pattern = parseNumberFormat(format, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));\n const res = formatNumberToLocaleString(value, pattern, locale, NumberSymbol.Group, NumberSymbol.Decimal, digitsInfo, true);\n return res.replace(new RegExp(PERCENT_CHAR, 'g'), getLocaleNumberSymbol(locale, NumberSymbol.PercentSign));\n}\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a number as text, with group sizing, separator, and other\n * parameters based on the locale.\n *\n * @param value The number to format.\n * @param locale A locale code for the locale format rules to use.\n * @param digitsInfo Decimal representation options, specified by a string in the following format:\n * `{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}`. See `DecimalPipe` for more details.\n *\n * @returns The formatted text string.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction formatNumber(value, locale, digitsInfo) {\n const format = getLocaleNumberFormat(locale, NumberFormatStyle.Decimal);\n const pattern = parseNumberFormat(format, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));\n return formatNumberToLocaleString(value, pattern, locale, NumberSymbol.Group, NumberSymbol.Decimal, digitsInfo);\n}\nfunction parseNumberFormat(format, minusSign = '-') {\n const p = {\n minInt: 1,\n minFrac: 0,\n maxFrac: 0,\n posPre: '',\n posSuf: '',\n negPre: '',\n negSuf: '',\n gSize: 0,\n lgSize: 0\n };\n const patternParts = format.split(PATTERN_SEP);\n const positive = patternParts[0];\n const negative = patternParts[1];\n const positiveParts = positive.indexOf(DECIMAL_SEP) !== -1 ?\n positive.split(DECIMAL_SEP) :\n [\n positive.substring(0, positive.lastIndexOf(ZERO_CHAR) + 1),\n positive.substring(positive.lastIndexOf(ZERO_CHAR) + 1)\n ], integer = positiveParts[0], fraction = positiveParts[1] || '';\n p.posPre = integer.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 * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @publicApi\n */\nclass NgLocalization {\n}\nNgLocalization.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: NgLocalization, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNgLocalization.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: NgLocalization, providedIn: 'root', useFactory: (locale) => new NgLocaleLocalization(locale), deps: [{ token: LOCALE_ID }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.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}\nNgLocaleLocalization.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: NgLocaleLocalization, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Injectable });\nNgLocaleLocalization.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: NgLocaleLocalization });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.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 * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Register global data to be used internally by Angular. See the\n * [\"I18n guide\"](guide/i18n-common-format-data-locale) to know how to import additional locale\n * data.\n *\n * The signature registerLocaleData(data: any, extraData?: any) is deprecated since v5.1\n *\n * @publicApi\n */\nfunction registerLocaleData(data, localeId, extraData) {\n return ɵregisterLocaleData(data, localeId, extraData);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction parseCookieValue(cookieStr, name) {\n name = encodeURIComponent(name);\n for (const cookie of cookieStr.split(';')) {\n const eqIndex = cookie.indexOf('=');\n const [cookieName, cookieValue] = eqIndex == -1 ? [cookie, ''] : [cookie.slice(0, eqIndex), cookie.slice(eqIndex + 1)];\n if (cookieName.trim() === name) {\n return decodeURIComponent(cookieValue);\n }\n }\n return null;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n *\n * @usageNotes\n * ```\n * ...\n *\n * ...\n *\n * ...\n *\n * ...\n *\n * ...\n * ```\n *\n * @description\n *\n * Adds and removes CSS classes on an HTML element.\n *\n * The CSS classes are updated as follows, depending on the type of the expression evaluation:\n * - `string` - the CSS classes listed in the string (space delimited) are added,\n * - `Array` - the CSS classes declared as Array elements are added,\n * - `Object` - keys are CSS classes that get added when the expression given in the value\n * evaluates to a truthy value, otherwise they are removed.\n *\n * @publicApi\n */\nclass NgClass {\n constructor(_iterableDiffers, _keyValueDiffers, _ngEl, _renderer) {\n this._iterableDiffers = _iterableDiffers;\n this._keyValueDiffers = _keyValueDiffers;\n this._ngEl = _ngEl;\n this._renderer = _renderer;\n this._iterableDiffer = null;\n this._keyValueDiffer = null;\n this._initialClasses = [];\n this._rawClass = null;\n }\n set klass(value) {\n this._removeClasses(this._initialClasses);\n this._initialClasses = typeof value === 'string' ? value.split(/\\s+/) : [];\n this._applyClasses(this._initialClasses);\n this._applyClasses(this._rawClass);\n }\n set ngClass(value) {\n this._removeClasses(this._rawClass);\n this._applyClasses(this._initialClasses);\n this._iterableDiffer = null;\n this._keyValueDiffer = null;\n this._rawClass = typeof value === 'string' ? value.split(/\\s+/) : value;\n if (this._rawClass) {\n if (ɵisListLikeIterable(this._rawClass)) {\n this._iterableDiffer = this._iterableDiffers.find(this._rawClass).create();\n }\n else {\n this._keyValueDiffer = this._keyValueDiffers.find(this._rawClass).create();\n }\n }\n }\n ngDoCheck() {\n if (this._iterableDiffer) {\n const iterableChanges = this._iterableDiffer.diff(this._rawClass);\n if (iterableChanges) {\n this._applyIterableChanges(iterableChanges);\n }\n }\n else if (this._keyValueDiffer) {\n const keyValueChanges = this._keyValueDiffer.diff(this._rawClass);\n if (keyValueChanges) {\n this._applyKeyValueChanges(keyValueChanges);\n }\n }\n }\n _applyKeyValueChanges(changes) {\n changes.forEachAddedItem((record) => this._toggleClass(record.key, record.currentValue));\n changes.forEachChangedItem((record) => this._toggleClass(record.key, record.currentValue));\n changes.forEachRemovedItem((record) => {\n if (record.previousValue) {\n this._toggleClass(record.key, false);\n }\n });\n }\n _applyIterableChanges(changes) {\n changes.forEachAddedItem((record) => {\n if (typeof record.item === 'string') {\n this._toggleClass(record.item, true);\n }\n else {\n throw new Error(`NgClass can only toggle CSS classes expressed as strings, got ${ɵstringify(record.item)}`);\n }\n });\n changes.forEachRemovedItem((record) => this._toggleClass(record.item, false));\n }\n /**\n * Applies a collection of CSS classes to the DOM element.\n *\n * For argument of type Set and Array CSS class names contained in those collections are always\n * added.\n * For argument of type Map CSS class name in the map's key is toggled based on the value (added\n * for truthy and removed for falsy).\n */\n _applyClasses(rawClassVal) {\n if (rawClassVal) {\n if (Array.isArray(rawClassVal) || rawClassVal instanceof Set) {\n rawClassVal.forEach((klass) => this._toggleClass(klass, true));\n }\n else {\n Object.keys(rawClassVal).forEach(klass => this._toggleClass(klass, !!rawClassVal[klass]));\n }\n }\n }\n /**\n * Removes a collection of CSS classes from the DOM element. This is mostly useful for cleanup\n * purposes.\n */\n _removeClasses(rawClassVal) {\n if (rawClassVal) {\n if (Array.isArray(rawClassVal) || rawClassVal instanceof Set) {\n rawClassVal.forEach((klass) => this._toggleClass(klass, false));\n }\n else {\n Object.keys(rawClassVal).forEach(klass => this._toggleClass(klass, false));\n }\n }\n }\n _toggleClass(klass, enabled) {\n klass = klass.trim();\n if (klass) {\n klass.split(/\\s+/g).forEach(klass => {\n if (enabled) {\n this._renderer.addClass(this._ngEl.nativeElement, klass);\n }\n else {\n this._renderer.removeClass(this._ngEl.nativeElement, klass);\n }\n });\n }\n }\n}\nNgClass.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: NgClass, deps: [{ token: i0.IterableDiffers }, { token: i0.KeyValueDiffers }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });\nNgClass.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.12\", type: NgClass, isStandalone: true, selector: \"[ngClass]\", inputs: { klass: [\"class\", \"klass\"], ngClass: \"ngClass\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.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 * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Instantiates a {@link Component} type and inserts its Host View into the current View.\n * `NgComponentOutlet` provides a declarative approach for dynamic component creation.\n *\n * `NgComponentOutlet` requires a component type, if a falsy value is set the view will clear and\n * any existing component will be destroyed.\n *\n * @usageNotes\n *\n * ### Fine tune control\n *\n * You can control the component creation process by using the following optional attributes:\n *\n * * `ngComponentOutletInjector`: Optional custom {@link Injector} that will be used as parent for\n * the Component. Defaults to the injector of the current view container.\n *\n * * `ngComponentOutletContent`: Optional list of projectable nodes to insert into the content\n * section of the component, if it exists.\n *\n * * `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 * 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 /** @nodoc */\n ngOnChanges(changes) {\n const { _viewContainerRef: viewContainerRef, ngComponentOutletNgModule: ngModule, ngComponentOutletNgModuleFactory: ngModuleFactory, } = this;\n viewContainerRef.clear();\n this._componentRef = undefined;\n if (this.ngComponentOutlet) {\n const injector = this.ngComponentOutletInjector || viewContainerRef.parentInjector;\n if (changes['ngComponentOutletNgModule'] || changes['ngComponentOutletNgModuleFactory']) {\n if (this._moduleRef)\n this._moduleRef.destroy();\n if (ngModule) {\n this._moduleRef = createNgModule(ngModule, getParentInjector(injector));\n }\n else if (ngModuleFactory) {\n this._moduleRef = ngModuleFactory.create(getParentInjector(injector));\n }\n else {\n this._moduleRef = undefined;\n }\n }\n this._componentRef = viewContainerRef.createComponent(this.ngComponentOutlet, {\n index: viewContainerRef.length,\n injector,\n ngModuleRef: this._moduleRef,\n projectableNodes: this.ngComponentOutletContent,\n });\n }\n }\n /** @nodoc */\n ngOnDestroy() {\n if (this._moduleRef)\n this._moduleRef.destroy();\n }\n}\nNgComponentOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: NgComponentOutlet, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgComponentOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.12\", type: NgComponentOutlet, isStandalone: true, selector: \"[ngComponentOutlet]\", inputs: { ngComponentOutlet: \"ngComponentOutlet\", ngComponentOutletInjector: \"ngComponentOutletInjector\", ngComponentOutletContent: \"ngComponentOutletContent\", ngComponentOutletNgModule: \"ngComponentOutletNgModule\", ngComponentOutletNgModuleFactory: \"ngComponentOutletNgModuleFactory\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.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 }], 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 * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst NG_DEV_MODE = typeof ngDevMode === 'undefined' || !!ngDevMode;\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 constructor(_viewContainer, _template, _differs) {\n this._viewContainer = _viewContainer;\n this._template = _template;\n this._differs = _differs;\n this._ngForOf = null;\n this._ngForOfDirty = true;\n this._differ = null;\n }\n /**\n * The value of the iterable expression, which can be used as a\n * [template input variable](guide/structural-directives#shorthand).\n */\n set ngForOf(ngForOf) {\n this._ngForOf = ngForOf;\n this._ngForOfDirty = true;\n }\n /**\n * Specifies a custom `TrackByFunction` to compute the identity of items in an iterable.\n *\n * If a custom `TrackByFunction` is not provided, `NgForOf` will use the item's [object\n * identity](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is)\n * as the key.\n *\n * `NgForOf` uses the computed key to associate items in an iterable with DOM elements\n * it produces for these items.\n *\n * A custom `TrackByFunction` is useful to provide good user experience in cases when items in an\n * iterable rendered using `NgForOf` have a natural identifier (for example, custom ID or a\n * primary key), and this iterable could be updated with new object instances that still\n * represent the same underlying entity (for example, when data is re-fetched from the server,\n * and the iterable is recreated and re-rendered, but most of the data is still the same).\n *\n * @see `TrackByFunction`\n */\n set ngForTrackBy(fn) {\n if (NG_DEV_MODE && fn != null && typeof fn !== 'function') {\n // TODO(vicb): use a log service once there is a public one available\n if (console && console.warn) {\n console.warn(`trackBy must be a function, but received ${JSON.stringify(fn)}. ` +\n `See https://angular.io/api/common/NgForOf#change-propagation for more information.`);\n }\n }\n this._trackByFn = fn;\n }\n get ngForTrackBy() {\n return this._trackByFn;\n }\n /**\n * A reference to the template that is stamped out for each item in the iterable.\n * @see [template reference variable](guide/template-reference-variables)\n */\n set ngForTemplate(value) {\n // TODO(TS2.1): make TemplateRef>> once we move to TS v2.1\n // The current type is too restrictive; a template that just uses index, for example,\n // should be acceptable.\n if (value) {\n this._template = value;\n }\n }\n /**\n * Applies the changes when needed.\n * @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 (NG_DEV_MODE) {\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}\nNgForOf.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: NgForOf, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Directive });\nNgForOf.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.12\", type: NgForOf, isStandalone: true, selector: \"[ngFor][ngForOf]\", inputs: { ngForOf: \"ngForOf\", ngForTrackBy: \"ngForTrackBy\", ngForTemplate: \"ngForTemplate\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.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 * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A structural directive that conditionally includes a template based on the value of\n * an expression coerced to Boolean.\n * When the expression evaluates to true, Angular renders the template\n * provided in a `then` clause, and when false or null,\n * Angular renders the template provided in an optional `else` clause. The default\n * template for the `else` clause is blank.\n *\n * A [shorthand form](guide/structural-directives#asterisk) of the directive,\n * `*ngIf=\"condition\"`, is generally used, provided\n * as an attribute of the anchor element for the inserted template.\n * Angular expands this into a more explicit version, in which the anchor element\n * is contained in an `` element.\n *\n * Simple form with shorthand syntax:\n *\n * ```\n *
    Content to render when condition is true.
    \n * ```\n *\n * Simple form with expanded syntax:\n *\n * ```\n *
    Content to render when condition is\n * true.
    \n * ```\n *\n * Form with an \"else\" block:\n *\n * ```\n *
    Content to render when condition is true.
    \n * Content to render when condition is false.\n * ```\n *\n * Shorthand form with \"then\" and \"else\" blocks:\n *\n * ```\n *
    \n * Content to render when condition is true.\n * Content to render when condition is false.\n * ```\n *\n * Form with storing the value locally:\n *\n * ```\n *
    {{value}}
    \n * Content to render when value is null.\n * ```\n *\n * @usageNotes\n *\n * The `*ngIf` directive is most commonly used to conditionally show an inline template,\n * as seen in the following example.\n * The default `else` template is blank.\n *\n * {@example common/ngIf/ts/module.ts region='NgIfSimple'}\n *\n * ### Showing an alternative template using `else`\n *\n * To display a template when `expression` evaluates to false, use an `else` template\n * binding as shown in the following example.\n * The `else` binding points to an `` element labeled `#elseBlock`.\n * The template can be defined anywhere in the component view, but is typically placed right after\n * `ngIf` for readability.\n *\n * {@example common/ngIf/ts/module.ts region='NgIfElse'}\n *\n * ### Using an external `then` template\n *\n * In the previous example, the then-clause template is specified inline, as the content of the\n * tag that contains the `ngIf` directive. You can also specify a template that is defined\n * externally, by referencing a labeled `` element. When you do this, you can\n * change which template to use at runtime, as shown in the following example.\n *\n * {@example common/ngIf/ts/module.ts region='NgIfThenElse'}\n *\n * ### Storing a conditional result in a variable\n *\n * You might want to show a set of properties from the same object. If you are waiting\n * for asynchronous data, the object can be undefined.\n * In this case, you can use `ngIf` and store the result of the condition in a local\n * variable as shown in the following example.\n *\n * {@example common/ngIf/ts/module.ts region='NgIfAs'}\n *\n * This code uses only one `AsyncPipe`, so only one subscription is created.\n * The conditional statement stores the result of `userStream|async` in the local variable `user`.\n * You can then bind the local `user` repeatedly.\n *\n * The conditional displays the data only if `userStream` returns a value,\n * so you don't need to use the\n * safe-navigation-operator (`?.`)\n * to guard against null values when accessing properties.\n * You can display an alternative template while waiting for the data.\n *\n * ### Shorthand syntax\n *\n * The shorthand syntax `*ngIf` expands into two separate template specifications\n * for the \"then\" and \"else\" clauses. For example, consider the following shorthand statement,\n * that is meant to show a loading page while waiting for data to be loaded.\n *\n * ```\n *
    \n * ...\n *
    \n *\n * \n *
    Loading...
    \n *
    \n * ```\n *\n * You can see that the \"else\" clause references the ``\n * with the `#loading` label, and the template for the \"then\" clause\n * is provided as the content of the anchor element.\n *\n * However, when Angular expands the shorthand syntax, it creates\n * another `` tag, with `ngIf` and `ngIfElse` directives.\n * The anchor element containing the template for the \"then\" clause becomes\n * the content of this unlabeled `` tag.\n *\n * ```\n * \n *
    \n * ...\n *
    \n *
    \n *\n * \n *
    Loading...
    \n *
    \n * ```\n *\n * The presence of the implicit template object has implications for the nesting of\n * structural directives. For more on this subject, see\n * [Structural Directives](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}\nNgIf.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: NgIf, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgIf.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.12\", type: NgIf, isStandalone: true, selector: \"[ngIf]\", inputs: { ngIf: \"ngIf\", ngIfThen: \"ngIfThen\", ngIfElse: \"ngIfElse\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.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\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass SwitchView {\n constructor(_viewContainerRef, _templateRef) {\n this._viewContainerRef = _viewContainerRef;\n this._templateRef = _templateRef;\n this._created = false;\n }\n create() {\n this._created = true;\n this._viewContainerRef.createEmbeddedView(this._templateRef);\n }\n destroy() {\n this._created = false;\n this._viewContainerRef.clear();\n }\n enforceState(created) {\n if (created && !this._created) {\n this.create();\n }\n else if (!created && this._created) {\n this.destroy();\n }\n }\n}\n/**\n * @ngModule CommonModule\n *\n * @description\n * The `[ngSwitch]` directive on a container specifies an expression to match against.\n * The expressions to match are provided by `ngSwitchCase` directives on views within the container.\n * - Every view that matches is rendered.\n * - If there are no matches, a view with the `ngSwitchDefault` directive is rendered.\n * - Elements within the `[NgSwitch]` statement but outside of any `NgSwitchCase`\n * or `ngSwitchDefault` directive are preserved at the location.\n *\n * @usageNotes\n * Define a container element for the directive, and specify the switch expression\n * to match against as an attribute:\n *\n * ```\n * \n * ```\n *\n * Within the container, `*ngSwitchCase` statements specify the match expressions\n * as attributes. Include `*ngSwitchDefault` as the final case.\n *\n * ```\n * \n * ...\n * ...\n * ...\n * \n * ```\n *\n * ### Usage Examples\n *\n * The following example shows how to use more than one case to display the same view:\n *\n * ```\n * \n * \n * ...\n * ...\n * ...\n * \n * ...\n * \n * ```\n *\n * The following example shows how cases can be nested:\n * ```\n * \n * ...\n * ...\n * ...\n * \n * \n * \n * \n * \n * ...\n * \n * ```\n *\n * @publicApi\n * @see `NgSwitchCase`\n * @see `NgSwitchDefault`\n * @see [Structural Directives](guide/structural-directives)\n *\n */\nclass NgSwitch {\n constructor() {\n this._defaultUsed = false;\n this._caseCount = 0;\n this._lastCaseCheckIndex = 0;\n this._lastCasesMatched = false;\n }\n set ngSwitch(newValue) {\n this._ngSwitch = newValue;\n if (this._caseCount === 0) {\n this._updateDefaultCases(true);\n }\n }\n /** @internal */\n _addCase() {\n return this._caseCount++;\n }\n /** @internal */\n _addDefault(view) {\n if (!this._defaultViews) {\n this._defaultViews = [];\n }\n this._defaultViews.push(view);\n }\n /** @internal */\n _matchCase(value) {\n const matched = value == this._ngSwitch;\n this._lastCasesMatched = this._lastCasesMatched || matched;\n this._lastCaseCheckIndex++;\n if (this._lastCaseCheckIndex === this._caseCount) {\n this._updateDefaultCases(!this._lastCasesMatched);\n this._lastCaseCheckIndex = 0;\n this._lastCasesMatched = false;\n }\n return matched;\n }\n _updateDefaultCases(useDefault) {\n if (this._defaultViews && useDefault !== this._defaultUsed) {\n this._defaultUsed = useDefault;\n for (let i = 0; i < this._defaultViews.length; i++) {\n const defaultView = this._defaultViews[i];\n defaultView.enforceState(useDefault);\n }\n }\n }\n}\nNgSwitch.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: NgSwitch, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nNgSwitch.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.12\", type: NgSwitch, isStandalone: true, selector: \"[ngSwitch]\", inputs: { ngSwitch: \"ngSwitch\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.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 `NgSwitch`\n * @see `NgSwitchDefault`\n *\n */\nclass NgSwitchCase {\n constructor(viewContainer, templateRef, ngSwitch) {\n this.ngSwitch = ngSwitch;\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && !ngSwitch) {\n throwNgSwitchProviderNotFoundError('ngSwitchCase', 'NgSwitchCase');\n }\n ngSwitch._addCase();\n this._view = new SwitchView(viewContainer, templateRef);\n }\n /**\n * Performs case matching. For internal use only.\n * @nodoc\n */\n ngDoCheck() {\n this._view.enforceState(this.ngSwitch._matchCase(this.ngSwitchCase));\n }\n}\nNgSwitchCase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: NgSwitchCase, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: NgSwitch, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nNgSwitchCase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.12\", type: NgSwitchCase, isStandalone: true, selector: \"[ngSwitchCase]\", inputs: { ngSwitchCase: \"ngSwitchCase\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.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 `NgSwitch`\n * @see `NgSwitchCase`\n *\n */\nclass NgSwitchDefault {\n constructor(viewContainer, templateRef, ngSwitch) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && !ngSwitch) {\n throwNgSwitchProviderNotFoundError('ngSwitchDefault', 'NgSwitchDefault');\n }\n ngSwitch._addDefault(new SwitchView(viewContainer, templateRef));\n }\n}\nNgSwitchDefault.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: NgSwitchDefault, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: NgSwitch, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nNgSwitchDefault.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.12\", type: NgSwitchDefault, isStandalone: true, selector: \"[ngSwitchDefault]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.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 * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n *\n * @usageNotes\n * ```\n * \n * there is nothing\n * there is one\n * there are a few\n * \n * ```\n *\n * @description\n *\n * Adds / removes DOM sub-trees based on a numeric value. Tailored for pluralization.\n *\n * Displays DOM sub-trees that match the switch expression value, or failing that, DOM sub-trees\n * that match the switch expression's pluralization category.\n *\n * To use this directive you must provide a container element that sets the `[ngPlural]` attribute\n * to a switch expression. Inner elements with a `[ngPluralCase]` will display based on their\n * expression:\n * - if `[ngPluralCase]` is set to a value starting with `=`, it will only display if the value\n * matches the switch expression exactly,\n * - otherwise, the view will be treated as a \"category match\", and will only display if exact\n * value matches aren't found and the value maps to its category for the defined locale.\n *\n * See http://cldr.unicode.org/index/cldr-spec/plural-rules\n *\n * @publicApi\n */\nclass NgPlural {\n constructor(_localization) {\n this._localization = _localization;\n this._caseViews = {};\n }\n set ngPlural(value) {\n this._switchValue = value;\n this._updateView();\n }\n addCase(value, switchView) {\n this._caseViews[value] = switchView;\n }\n _updateView() {\n this._clearViews();\n const cases = Object.keys(this._caseViews);\n const key = getPluralCategory(this._switchValue, cases, this._localization);\n this._activateView(this._caseViews[key]);\n }\n _clearViews() {\n if (this._activeView)\n this._activeView.destroy();\n }\n _activateView(view) {\n if (view) {\n this._activeView = view;\n this._activeView.create();\n }\n }\n}\nNgPlural.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: NgPlural, deps: [{ token: NgLocalization }], target: i0.ɵɵFactoryTarget.Directive });\nNgPlural.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.12\", type: NgPlural, isStandalone: true, selector: \"[ngPlural]\", inputs: { ngPlural: \"ngPlural\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.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}\nNgPluralCase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.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 });\nNgPluralCase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.12\", type: NgPluralCase, isStandalone: true, selector: \"[ngPluralCase]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.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 * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n *\n * @usageNotes\n *\n * Set the font of the containing element to the result of an expression.\n *\n * ```\n * ...\n * ```\n *\n * Set the width of the containing element to a pixel value returned by an expression.\n *\n * ```\n * ...\n * ```\n *\n * Set a collection of style values using an expression that returns key-value pairs.\n *\n * ```\n * ...\n * ```\n *\n * @description\n *\n * An attribute directive that updates styles for the containing HTML element.\n * Sets one or more style properties, specified as colon-separated key-value pairs.\n * The key is a style name, with an optional `.` suffix\n * (such as 'top.px', 'font-style.em').\n * The value is an expression to be evaluated.\n * The resulting non-null value, expressed in the given unit,\n * is assigned to the given style property.\n * If the result of evaluation is null, the corresponding style is removed.\n *\n * @publicApi\n */\nclass NgStyle {\n constructor(_ngEl, _differs, _renderer) {\n this._ngEl = _ngEl;\n this._differs = _differs;\n this._renderer = _renderer;\n this._ngStyle = null;\n this._differ = null;\n }\n set ngStyle(values) {\n this._ngStyle = values;\n if (!this._differ && values) {\n this._differ = this._differs.find(values).create();\n }\n }\n ngDoCheck() {\n if (this._differ) {\n const changes = this._differ.diff(this._ngStyle);\n if (changes) {\n this._applyChanges(changes);\n }\n }\n }\n _setStyle(nameAndUnit, value) {\n const [name, unit] = nameAndUnit.split('.');\n 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}\nNgStyle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: NgStyle, deps: [{ token: i0.ElementRef }, { token: i0.KeyValueDiffers }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });\nNgStyle.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.12\", type: NgStyle, isStandalone: true, selector: \"[ngStyle]\", inputs: { ngStyle: \"ngStyle\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.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 * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n *\n * @description\n *\n * Inserts an embedded view from a prepared `TemplateRef`.\n *\n * You can attach a context object to the `EmbeddedViewRef` by setting `[ngTemplateOutletContext]`.\n * `[ngTemplateOutletContext]` should be an object, the object's keys will be available for binding\n * by the local template `let` declarations.\n *\n * @usageNotes\n * ```\n * \n * ```\n *\n * Using the key `$implicit` in the context object will set its value as default.\n *\n * ### Example\n *\n * {@example common/ngTemplateOutlet/ts/module.ts region='NgTemplateOutlet'}\n *\n * @publicApi\n */\nclass NgTemplateOutlet {\n constructor(_viewContainerRef) {\n this._viewContainerRef = _viewContainerRef;\n this._viewRef = null;\n /**\n * A context object to attach to the {@link EmbeddedViewRef}. This should be an\n * object, the object's keys will be available for binding by the local template `let`\n * declarations.\n * Using the key `$implicit` in the context object will set its value as default.\n */\n this.ngTemplateOutletContext = null;\n /**\n * A string defining the template reference and optionally the context object for the template.\n */\n this.ngTemplateOutlet = null;\n /** 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 = 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}\nNgTemplateOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: NgTemplateOutlet, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgTemplateOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.12\", type: NgTemplateOutlet, isStandalone: true, selector: \"[ngTemplateOutlet]\", inputs: { ngTemplateOutletContext: \"ngTemplateOutletContext\", ngTemplateOutlet: \"ngTemplateOutlet\", ngTemplateOutletInjector: \"ngTemplateOutletInjector\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.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 * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A collection of Angular directives that are likely to be used in each and every Angular\n * application.\n */\nconst COMMON_DIRECTIVES = [\n NgClass,\n NgComponentOutlet,\n NgForOf,\n NgIf,\n NgTemplateOutlet,\n NgStyle,\n NgSwitch,\n NgSwitchCase,\n NgSwitchDefault,\n NgPlural,\n NgPluralCase,\n];\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction invalidPipeArgumentError(type, value) {\n return new ɵRuntimeError(2100 /* RuntimeErrorCode.INVALID_PIPE_ARGUMENT */, ngDevMode && `InvalidPipeArgument: '${value}' for pipe '${ɵstringify(type)}'`);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass SubscribableStrategy {\n createSubscription(async, updateLatestValue) {\n return async.subscribe({\n next: updateLatestValue,\n error: (e) => {\n throw e;\n }\n });\n }\n dispose(subscription) {\n subscription.unsubscribe();\n }\n}\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}\nAsyncPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: AsyncPipe, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Pipe });\nAsyncPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"14.2.12\", ngImport: i0, type: AsyncPipe, isStandalone: true, name: \"async\", pure: false });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.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 * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Transforms text to all lower case.\n *\n * @see `UpperCasePipe`\n * @see `TitleCasePipe`\n * @usageNotes\n *\n * The following example defines a view that allows the user to enter\n * text, and then uses the pipe to convert the input text to all lower case.\n *\n * \n *\n * @ngModule CommonModule\n * @publicApi\n */\nclass LowerCasePipe {\n transform(value) {\n if (value == null)\n return null;\n if (typeof value !== 'string') {\n throw invalidPipeArgumentError(LowerCasePipe, value);\n }\n return value.toLowerCase();\n }\n}\nLowerCasePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: LowerCasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nLowerCasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"14.2.12\", ngImport: i0, type: LowerCasePipe, isStandalone: true, name: \"lowercase\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.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 `LowerCasePipe`\n * @see `UpperCasePipe`\n *\n * @usageNotes\n * The following example shows the result of transforming various strings into title case.\n *\n * \n *\n * @ngModule CommonModule\n * @publicApi\n */\nclass TitleCasePipe {\n transform(value) {\n if (value == null)\n return null;\n if (typeof value !== 'string') {\n throw invalidPipeArgumentError(TitleCasePipe, value);\n }\n return value.replace(unicodeWordMatch, (txt => txt[0].toUpperCase() + txt.slice(1).toLowerCase()));\n }\n}\nTitleCasePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: TitleCasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nTitleCasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"14.2.12\", ngImport: i0, type: TitleCasePipe, isStandalone: true, name: \"titlecase\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.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 `LowerCasePipe`\n * @see `TitleCasePipe`\n *\n * @ngModule CommonModule\n * @publicApi\n */\nclass UpperCasePipe {\n transform(value) {\n if (value == null)\n return null;\n if (typeof value !== 'string') {\n throw invalidPipeArgumentError(UpperCasePipe, value);\n }\n return value.toUpperCase();\n }\n}\nUpperCasePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: UpperCasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nUpperCasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"14.2.12\", ngImport: i0, type: UpperCasePipe, isStandalone: true, name: \"uppercase\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: UpperCasePipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'uppercase',\n standalone: true,\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * 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 */\nconst DATE_PIPE_DEFAULT_TIMEZONE = new InjectionToken('DATE_PIPE_DEFAULT_TIMEZONE');\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_TIMEZONE`\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 `formatDate()`\n *\n *\n * @usageNotes\n *\n * The result of this pipe is not reevaluated when the input is mutated. To avoid the need to\n * reformat the date on every change-detection cycle, treat the date as an immutable object\n * and change the reference when the pipe needs to run again.\n *\n * ### Pre-defined format options\n *\n * | Option | Equivalent to | Examples (given in `en-US` locale) |\n * |---------------|-------------------------------------|-------------------------------------------------|\n * | `'short'` | `'M/d/yy, h:mm a'` | `6/15/15, 9:03 AM` |\n * | `'medium'` | `'MMM d, y, h:mm:ss a'` | `Jun 15, 2015, 9:03:01 AM` |\n * | `'long'` | `'MMMM d, y, h:mm:ss a z'` | `June 15, 2015 at 9:03:01 AM GMT+1` |\n * | `'full'` | `'EEEE, MMMM d, y, h:mm:ss a zzzz'` | `Monday, June 15, 2015 at 9:03:01 AM GMT+01:00` |\n * | `'shortDate'` | `'M/d/yy'` | `6/15/15` |\n * | `'mediumDate'`| `'MMM d, y'` | `Jun 15, 2015` |\n * | `'longDate'` | `'MMMM d, y'` | `June 15, 2015` |\n * | `'fullDate'` | `'EEEE, MMMM d, y'` | `Monday, June 15, 2015` |\n * | `'shortTime'` | `'h:mm a'` | `9:03 AM` |\n * | `'mediumTime'`| `'h:mm:ss a'` | `9:03:01 AM` |\n * | `'longTime'` | `'h:mm:ss a z'` | `9:03:01 AM GMT+1` |\n * | `'fullTime'` | `'h:mm:ss a zzzz'` | `9:03:01 AM GMT+01:00` |\n *\n * ### Custom format options\n *\n * You can construct a format string using symbols to specify the components\n * of a date-time value, as described in the following table.\n * Format details depend on the locale.\n * Fields marked with (*) are only available in the extra data set for the given locale.\n *\n * | Field type | Format | Description | Example Value |\n * |-------------------- |-------------|---------------------------------------------------------------|------------------------------------------------------------|\n * | Era | G, GG & GGG | Abbreviated | AD |\n * | | GGGG | Wide | Anno Domini |\n * | | GGGGG | Narrow | A |\n * | Year | y | Numeric: minimum digits | 2, 20, 201, 2017, 20173 |\n * | | yy | Numeric: 2 digits + zero padded | 02, 20, 01, 17, 73 |\n * | | yyy | Numeric: 3 digits + zero padded | 002, 020, 201, 2017, 20173 |\n * | | yyyy | Numeric: 4 digits or more + zero padded | 0002, 0020, 0201, 2017, 20173 |\n * | Week-numbering year | Y | Numeric: minimum digits | 2, 20, 201, 2017, 20173 |\n * | | YY | Numeric: 2 digits + zero padded | 02, 20, 01, 17, 73 |\n * | | YYY | Numeric: 3 digits + zero padded | 002, 020, 201, 2017, 20173 |\n * | | YYYY | Numeric: 4 digits or more + zero padded | 0002, 0020, 0201, 2017, 20173 |\n * | Month | M | Numeric: 1 digit | 9, 12 |\n * | | MM | Numeric: 2 digits + zero padded | 09, 12 |\n * | | MMM | Abbreviated | Sep |\n * | | MMMM | Wide | September |\n * | | MMMMM | Narrow | S |\n * | Month standalone | L | Numeric: 1 digit | 9, 12 |\n * | | LL | Numeric: 2 digits + zero padded | 09, 12 |\n * | | LLL | Abbreviated | Sep |\n * | | LLLL | Wide | September |\n * | | LLLLL | Narrow | S |\n * | Week of year | w | Numeric: minimum digits | 1... 53 |\n * | | ww | Numeric: 2 digits + zero padded | 01... 53 |\n * | Week of month | W | Numeric: 1 digit | 1... 5 |\n * | Day of month | d | Numeric: minimum digits | 1 |\n * | | dd | Numeric: 2 digits + zero padded | 01 |\n * | Week day | E, EE & EEE | Abbreviated | Tue |\n * | | EEEE | Wide | Tuesday |\n * | | EEEEE | Narrow | T |\n * | | EEEEEE | Short | Tu |\n * | Week day standalone | c, cc | Numeric: 1 digit | 2 |\n * | | ccc | Abbreviated | Tue |\n * | | cccc | Wide | Tuesday |\n * | | ccccc | Narrow | T |\n * | | cccccc | Short | Tu |\n * | Period | a, aa & aaa | Abbreviated | am/pm or AM/PM |\n * | | aaaa | Wide (fallback to `a` when missing) | ante meridiem/post meridiem |\n * | | aaaaa | Narrow | a/p |\n * | Period* | B, BB & BBB | Abbreviated | mid. |\n * | | BBBB | Wide | am, pm, midnight, noon, morning, afternoon, evening, night |\n * | | BBBBB | Narrow | md |\n * | Period standalone* | b, bb & bbb | Abbreviated | mid. |\n * | | bbbb | Wide | am, pm, midnight, noon, morning, afternoon, evening, night |\n * | | bbbbb | Narrow | md |\n * | Hour 1-12 | h | Numeric: minimum digits | 1, 12 |\n * | | hh | Numeric: 2 digits + zero padded | 01, 12 |\n * | Hour 0-23 | H | Numeric: minimum digits | 0, 23 |\n * | | HH | Numeric: 2 digits + zero padded | 00, 23 |\n * | Minute | m | Numeric: minimum digits | 8, 59 |\n * | | mm | Numeric: 2 digits + zero padded | 08, 59 |\n * | Second | s | Numeric: minimum digits | 0... 59 |\n * | | ss | Numeric: 2 digits + zero padded | 00... 59 |\n * | Fractional seconds | S | Numeric: 1 digit | 0... 9 |\n * | | SS | Numeric: 2 digits + zero padded | 00... 99 |\n * | | SSS | Numeric: 3 digits + zero padded (= milliseconds) | 000... 999 |\n * | Zone | z, zz & zzz | Short specific non location format (fallback to O) | GMT-8 |\n * | | zzzz | Long specific non location format (fallback to OOOO) | GMT-08:00 |\n * | | Z, ZZ & ZZZ | ISO8601 basic format | -0800 |\n * | | ZZZZ | Long localized GMT format | GMT-8:00 |\n * | | ZZZZZ | ISO8601 extended format + Z indicator for offset 0 (= XXXXX) | -08:00 |\n * | | O, OO & OOO | Short localized GMT format | GMT-8 |\n * | | OOOO | Long localized GMT format | GMT-08:00 |\n *\n *\n * ### Format examples\n *\n * These examples transform a date into various formats,\n * assuming that `dateObj` is a JavaScript `Date` object for\n * year: 2015, month: 6, day: 15, hour: 21, minute: 43, second: 11,\n * given in the local time for the `en-US` locale.\n *\n * ```\n * {{ dateObj | date }} // output is 'Jun 15, 2015'\n * {{ dateObj | date:'medium' }} // output is 'Jun 15, 2015, 9:43:11 PM'\n * {{ dateObj | date:'shortTime' }} // output is '9:43 PM'\n * {{ dateObj | date:'mm:ss' }} // output is '43:11'\n * ```\n *\n * ### Usage example\n *\n * The following component uses a date pipe to display the current date in different formats.\n *\n * ```\n * @Component({\n * selector: 'date-pipe',\n * template: `
    \n *

    Today is {{today | date}}

    \n *

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

    \n *

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

    \n *
    `\n * })\n * // Get the current date and time as a date-time value.\n * export class DatePipeComponent {\n * today: number = Date.now();\n * }\n * ```\n *\n * @publicApi\n */\n// clang-format on\nclass DatePipe {\n constructor(locale, defaultTimezone) {\n this.locale = locale;\n this.defaultTimezone = defaultTimezone;\n }\n transform(value, format = 'mediumDate', timezone, locale) {\n if (value == null || value === '' || value !== value)\n return null;\n try {\n return formatDate(value, format, locale || this.locale, timezone ?? this.defaultTimezone ?? undefined);\n }\n catch (error) {\n throw invalidPipeArgumentError(DatePipe, error.message);\n }\n }\n}\nDatePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: DatePipe, deps: [{ token: LOCALE_ID }, { token: DATE_PIPE_DEFAULT_TIMEZONE, optional: true }], target: i0.ɵɵFactoryTarget.Pipe });\nDatePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"14.2.12\", ngImport: i0, type: DatePipe, isStandalone: true, name: \"date\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.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 }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst _INTERPOLATION_REGEXP = /#/g;\n/**\n * @ngModule CommonModule\n * @description\n *\n * Maps a value to a string that pluralizes the value according to locale rules.\n *\n * @usageNotes\n *\n * ### Example\n *\n * {@example common/pipes/ts/i18n_pipe.ts region='I18nPluralPipeComponent'}\n *\n * @publicApi\n */\nclass I18nPluralPipe {\n constructor(_localization) {\n this._localization = _localization;\n }\n /**\n * @param value the number to be formatted\n * @param pluralMap an object that mimics the ICU format, see\n * 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}\nI18nPluralPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: I18nPluralPipe, deps: [{ token: NgLocalization }], target: i0.ɵɵFactoryTarget.Pipe });\nI18nPluralPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"14.2.12\", ngImport: i0, type: I18nPluralPipe, isStandalone: true, name: \"i18nPlural\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.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 * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n * @description\n *\n * Generic selector that displays the string that matches the current value.\n *\n * If none of the keys of the `mapping` match the `value`, then the content\n * of the `other` key is returned when present, otherwise an empty string is returned.\n *\n * @usageNotes\n *\n * ### Example\n *\n * {@example common/pipes/ts/i18n_pipe.ts region='I18nSelectPipeComponent'}\n *\n * @publicApi\n */\nclass I18nSelectPipe {\n /**\n * @param value a string to be internationalized.\n * @param mapping an object that indicates the text that should be displayed\n * for different values of the provided `value`.\n */\n transform(value, mapping) {\n if (value == null)\n return '';\n if (typeof mapping !== 'object' || typeof value !== 'string') {\n throw invalidPipeArgumentError(I18nSelectPipe, mapping);\n }\n if (mapping.hasOwnProperty(value)) {\n return mapping[value];\n }\n if (mapping.hasOwnProperty('other')) {\n return mapping['other'];\n }\n return '';\n }\n}\nI18nSelectPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: I18nSelectPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nI18nSelectPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"14.2.12\", ngImport: i0, type: I18nSelectPipe, isStandalone: true, name: \"i18nSelect\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.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 * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n * @description\n *\n * Converts a value into its JSON-format representation. Useful for debugging.\n *\n * @usageNotes\n *\n * The following component uses a JSON pipe to convert an object\n * to JSON format, and displays the string in both formats for comparison.\n *\n * {@example common/pipes/ts/json_pipe.ts region='JsonPipe'}\n *\n * @publicApi\n */\nclass JsonPipe {\n /**\n * @param value A value of any type to convert into a JSON-format string.\n */\n transform(value) {\n return JSON.stringify(value, null, 2);\n }\n}\nJsonPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: JsonPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nJsonPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"14.2.12\", ngImport: i0, type: JsonPipe, isStandalone: true, name: \"json\", pure: false });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: JsonPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'json',\n pure: false,\n standalone: true,\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 */\nfunction makeKeyValuePair(key, value) {\n return { key: key, value: value };\n}\n/**\n * @ngModule CommonModule\n * @description\n *\n * Transforms Object or Map into an array of key value pairs.\n *\n * The output array will be ordered by keys.\n * By default the comparator will be by Unicode point value.\n * You can optionally pass a compareFn if your keys are complex types.\n *\n * @usageNotes\n * ### Examples\n *\n * This examples show how an Object or a Map can be iterated by ngFor with the use of this\n * keyvalue pipe.\n *\n * {@example common/pipes/ts/keyvalue_pipe.ts region='KeyValuePipe'}\n *\n * @publicApi\n */\nclass KeyValuePipe {\n constructor(differs) {\n this.differs = differs;\n this.keyValues = [];\n this.compareFn = defaultComparator;\n }\n transform(input, compareFn = defaultComparator) {\n if (!input || (!(input instanceof Map) && typeof input !== 'object')) {\n return null;\n }\n if (!this.differ) {\n // make a differ for whatever type we've been passed in\n this.differ = this.differs.find(input).create();\n }\n const differChanges = this.differ.diff(input);\n const compareFnChanged = compareFn !== this.compareFn;\n if (differChanges) {\n this.keyValues = [];\n differChanges.forEachItem((r) => {\n this.keyValues.push(makeKeyValuePair(r.key, r.currentValue));\n });\n }\n if (differChanges || compareFnChanged) {\n this.keyValues.sort(compareFn);\n this.compareFn = compareFn;\n }\n return this.keyValues;\n }\n}\nKeyValuePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: KeyValuePipe, deps: [{ token: i0.KeyValueDiffers }], target: i0.ɵɵFactoryTarget.Pipe });\nKeyValuePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"14.2.12\", ngImport: i0, type: KeyValuePipe, isStandalone: true, name: \"keyvalue\", pure: false });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.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 * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a value according to digit options and locale rules.\n * Locale determines group sizing and separator,\n * decimal point character, and other locale-specific configurations.\n *\n * @see `formatNumber()`\n *\n * @usageNotes\n *\n * ### digitsInfo\n *\n * The value's decimal representation is specified by the `digitsInfo`\n * parameter, written in the following format:
    \n *\n * ```\n * {minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}\n * ```\n *\n * - `minIntegerDigits`:\n * The minimum number of integer digits before the decimal point.\n * Default is 1.\n *\n * - `minFractionDigits`:\n * The minimum number of digits after the decimal point.\n * Default is 0.\n *\n * - `maxFractionDigits`:\n * The maximum number of digits after the decimal point.\n * Default is 3.\n *\n * If the formatted value is truncated it will be rounded using the \"to-nearest\" method:\n *\n * ```\n * {{3.6 | number: '1.0-0'}}\n * \n *\n * {{-3.6 | number:'1.0-0'}}\n * \n * ```\n *\n * ### locale\n *\n * `locale` will format a value according to locale rules.\n * Locale determines group sizing and separator,\n * decimal point character, and other locale-specific configurations.\n *\n * When not supplied, uses the value of `LOCALE_ID`, which is `en-US` by default.\n *\n * See [Setting your app locale](guide/i18n-common-locale-id).\n *\n * ### Example\n *\n * The following code shows how the pipe transforms values\n * according to various format specifications,\n * where the caller's default locale is `en-US`.\n *\n * \n *\n * @publicApi\n */\nclass DecimalPipe {\n constructor(_locale) {\n this._locale = _locale;\n }\n /**\n * @param value The value to be formatted.\n * @param digitsInfo Sets digit and decimal representation.\n * [See more](#digitsinfo).\n * @param locale Specifies what locale format rules to use.\n * [See more](#locale).\n */\n transform(value, digitsInfo, locale) {\n if (!isValue(value))\n return null;\n locale = locale || this._locale;\n try {\n const num = strToNumber(value);\n return formatNumber(num, locale, digitsInfo);\n }\n catch (error) {\n throw invalidPipeArgumentError(DecimalPipe, error.message);\n }\n }\n}\nDecimalPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: DecimalPipe, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Pipe });\nDecimalPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"14.2.12\", ngImport: i0, type: DecimalPipe, isStandalone: true, name: \"number\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.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 `formatPercent()`\n *\n * @usageNotes\n * The following code shows how the pipe transforms numbers\n * into text strings, according to various format specifications,\n * where the caller's default locale is `en-US`.\n *\n * \n *\n * @publicApi\n */\nclass PercentPipe {\n constructor(_locale) {\n this._locale = _locale;\n }\n /**\n *\n * @param value The number to be formatted as a percentage.\n * @param digitsInfo Decimal representation options, specified by a string\n * in the following format:
    \n * {minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}.\n * - `minIntegerDigits`: The minimum number of integer digits before the decimal point.\n * Default is `1`.\n * - `minFractionDigits`: The minimum number of digits after the decimal point.\n * Default is `0`.\n * - `maxFractionDigits`: The maximum number of digits after the decimal point.\n * Default is `0`.\n * @param locale A locale code for the locale format rules to use.\n * When not supplied, uses the value of `LOCALE_ID`, which is `en-US` by default.\n * See [Setting your app locale](guide/i18n-common-locale-id).\n */\n transform(value, digitsInfo, locale) {\n if (!isValue(value))\n return null;\n locale = locale || this._locale;\n try {\n const num = strToNumber(value);\n return formatPercent(num, locale, digitsInfo);\n }\n catch (error) {\n throw invalidPipeArgumentError(PercentPipe, error.message);\n }\n }\n}\nPercentPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: PercentPipe, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Pipe });\nPercentPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"14.2.12\", ngImport: i0, type: PercentPipe, isStandalone: true, name: \"percent\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.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 * {@a currency-code-deprecation}\n *
    \n *\n * **Deprecation notice:**\n *\n * The default currency code is currently always `USD` but this is deprecated from v9.\n *\n * **In v11 the default currency code will be taken from the current locale identified by\n * the `LOCALE_ID` token. See the [i18n guide](guide/i18n-common-locale-id) for\n * more information.**\n *\n * If you need the previous behavior then set it by creating a `DEFAULT_CURRENCY_CODE` provider in\n * your application `NgModule`:\n *\n * ```ts\n * {provide: DEFAULT_CURRENCY_CODE, useValue: 'USD'}\n * ```\n *\n *
    \n *\n * @see `getCurrencySymbol()`\n * @see `formatCurrency()`\n *\n * @usageNotes\n * The following code shows how the pipe transforms numbers\n * into text strings, according to various format specifications,\n * where the caller's default locale is `en-US`.\n *\n * \n *\n * @publicApi\n */\nclass CurrencyPipe {\n constructor(_locale, _defaultCurrencyCode = 'USD') {\n this._locale = _locale;\n this._defaultCurrencyCode = _defaultCurrencyCode;\n }\n /**\n *\n * @param value The number to be formatted as currency.\n * @param currencyCode The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code,\n * such as `USD` for the US dollar and `EUR` for the euro. The default currency code can be\n * configured using the `DEFAULT_CURRENCY_CODE` injection token.\n * @param display The format for the currency indicator. One of the following:\n * - `code`: Show the code (such as `USD`).\n * - `symbol`(default): Show the symbol (such as `$`).\n * - `symbol-narrow`: Use the narrow symbol for locales that have two symbols for their\n * currency.\n * For example, the Canadian dollar CAD has the symbol `CA$` and the symbol-narrow `$`. If the\n * locale has no narrow symbol, uses the standard symbol for the locale.\n * - String: Use the given string value instead of a code or a symbol.\n * For example, an empty string will suppress the currency & symbol.\n * - Boolean (marked deprecated in v5): `true` for symbol and false for `code`.\n *\n * @param digitsInfo Decimal representation options, specified by a string\n * in the following format:
    \n * {minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}.\n * - `minIntegerDigits`: The minimum number of integer digits before the decimal point.\n * Default is `1`.\n * - `minFractionDigits`: The minimum number of digits after the decimal point.\n * Default is `2`.\n * - `maxFractionDigits`: The maximum number of digits after the decimal point.\n * Default is `2`.\n * If not provided, the number will be formatted with the proper amount of digits,\n * depending on what the [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) specifies.\n * For example, the Canadian dollar has 2 digits, whereas the Chilean peso has none.\n * @param locale A locale code for the locale format rules to use.\n * When not supplied, uses the value of `LOCALE_ID`, which is `en-US` by default.\n * See [Setting your app locale](guide/i18n-common-locale-id).\n */\n transform(value, currencyCode = this._defaultCurrencyCode, display = 'symbol', digitsInfo, locale) {\n if (!isValue(value))\n return null;\n locale = locale || this._locale;\n if (typeof display === 'boolean') {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && console && console.warn) {\n console.warn(`Warning: the currency pipe has been changed in Angular v5. The symbolDisplay option (third parameter) is now a string instead of a boolean. The accepted values are \"code\", \"symbol\" or \"symbol-narrow\".`);\n }\n display = display ? 'symbol' : 'code';\n }\n let currency = currencyCode || this._defaultCurrencyCode;\n if (display !== 'code') {\n if (display === 'symbol' || display === 'symbol-narrow') {\n currency = getCurrencySymbol(currency, display === 'symbol' ? 'wide' : 'narrow', locale);\n }\n else {\n currency = display;\n }\n }\n try {\n const num = strToNumber(value);\n return formatCurrency(num, locale, currency, currencyCode, digitsInfo);\n }\n catch (error) {\n throw invalidPipeArgumentError(CurrencyPipe, error.message);\n }\n }\n}\nCurrencyPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: CurrencyPipe, deps: [{ token: LOCALE_ID }, { token: DEFAULT_CURRENCY_CODE }], target: i0.ɵɵFactoryTarget.Pipe });\nCurrencyPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"14.2.12\", ngImport: i0, type: CurrencyPipe, isStandalone: true, name: \"currency\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.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 * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n * @description\n *\n * Creates a new `Array` or `String` containing a subset (slice) of the elements.\n *\n * @usageNotes\n *\n * All behavior is based on the expected behavior of the JavaScript API `Array.prototype.slice()`\n * and `String.prototype.slice()`.\n *\n * When operating on an `Array`, the returned `Array` is always a copy even when all\n * the elements are being returned.\n *\n * When operating on a blank value, the pipe returns the blank value.\n *\n * ### List Example\n *\n * This `ngFor` example:\n *\n * {@example common/pipes/ts/slice_pipe.ts region='SlicePipe_list'}\n *\n * produces the following:\n *\n * ```html\n *
  • b
  • \n *
  • c
  • \n * ```\n *\n * ### String Examples\n *\n * {@example common/pipes/ts/slice_pipe.ts region='SlicePipe_string'}\n *\n * @publicApi\n */\nclass SlicePipe {\n transform(value, start, end) {\n if (value == null)\n return null;\n if (!this.supports(value)) {\n throw invalidPipeArgumentError(SlicePipe, value);\n }\n return value.slice(start, end);\n }\n supports(obj) {\n return typeof obj === 'string' || Array.isArray(obj);\n }\n}\nSlicePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: SlicePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nSlicePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"14.2.12\", ngImport: i0, type: SlicePipe, isStandalone: true, name: \"slice\", pure: false });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.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 * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A collection of Angular pipes that are likely to be used in each and every application.\n */\nconst COMMON_PIPES = [\n AsyncPipe,\n UpperCasePipe,\n LowerCasePipe,\n JsonPipe,\n SlicePipe,\n DecimalPipe,\n PercentPipe,\n TitleCasePipe,\n CurrencyPipe,\n DatePipe,\n I18nPluralPipe,\n I18nSelectPipe,\n KeyValuePipe,\n];\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Note: This does not contain the location providers,\n// as they need some platform specific implementations to work.\n/**\n * Exports all the basic Angular directives and pipes,\n * such as `NgIf`, `NgForOf`, `DecimalPipe`, and so on.\n * Re-exported by `BrowserModule`, which is included automatically in the root\n * `AppModule` when you create a new app with the CLI `new` command.\n *\n * @publicApi\n */\nclass CommonModule {\n}\nCommonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: CommonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nCommonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.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] });\nCommonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: CommonModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.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\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst PLATFORM_BROWSER_ID = 'browser';\nconst PLATFORM_SERVER_ID = 'server';\nconst PLATFORM_WORKER_APP_ID = 'browserWorkerApp';\nconst PLATFORM_WORKER_UI_ID = 'browserWorkerUi';\n/**\n * Returns whether a platform id represents a browser platform.\n * @publicApi\n */\nfunction isPlatformBrowser(platformId) {\n return platformId === PLATFORM_BROWSER_ID;\n}\n/**\n * Returns whether a platform id represents a server platform.\n * @publicApi\n */\nfunction isPlatformServer(platformId) {\n return platformId === PLATFORM_SERVER_ID;\n}\n/**\n * Returns whether a platform id represents a web worker app platform.\n * @publicApi\n */\nfunction isPlatformWorkerApp(platformId) {\n return platformId === PLATFORM_WORKER_APP_ID;\n}\n/**\n * Returns whether a platform id represents a web worker UI platform.\n * @publicApi\n */\nfunction isPlatformWorkerUi(platformId) {\n return platformId === PLATFORM_WORKER_UI_ID;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @publicApi\n */\nconst VERSION = new Version('14.2.12');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Defines a scroll position manager. Implemented by `BrowserViewportScroller`.\n *\n * @publicApi\n */\nclass ViewportScroller {\n}\n// De-sugared tree-shakable injection\n// See #23917\n/** @nocollapse */\nViewportScroller.ɵprov = ɵɵdefineInjectable({\n token: ViewportScroller,\n providedIn: 'root',\n factory: () => new BrowserViewportScroller(ɵɵinject(DOCUMENT), window)\n});\n/**\n * Manages the scroll position for a browser window.\n */\nclass BrowserViewportScroller {\n constructor(document, window) {\n this.document = document;\n this.window = window;\n this.offset = () => [0, 0];\n }\n /**\n * Configures the top offset used when scrolling to an anchor.\n * @param offset A position in screen coordinates (a tuple with x and y values)\n * or a function that returns the top offset position.\n *\n */\n setOffset(offset) {\n if (Array.isArray(offset)) {\n this.offset = () => offset;\n }\n else {\n this.offset = offset;\n }\n }\n /**\n * Retrieves the current scroll position.\n * @returns The position in screen coordinates.\n */\n getScrollPosition() {\n if (this.supportsScrolling()) {\n return [this.window.pageXOffset, this.window.pageYOffset];\n }\n else {\n return [0, 0];\n }\n }\n /**\n * Sets the scroll position.\n * @param position The new position in screen coordinates.\n */\n scrollToPosition(position) {\n if (this.supportsScrolling()) {\n this.window.scrollTo(position[0], position[1]);\n }\n }\n /**\n * Scrolls to an element and attempts to focus the element.\n *\n * Note that the function name here is misleading in that the target string may be an ID for a\n * non-anchor element.\n *\n * @param target The ID of an element or name of the anchor.\n *\n * @see https://html.spec.whatwg.org/#the-indicated-part-of-the-document\n * @see https://html.spec.whatwg.org/#scroll-to-fragid\n */\n scrollToAnchor(target) {\n if (!this.supportsScrolling()) {\n return;\n }\n const elSelected = findAnchorFromDocument(this.document, target);\n if (elSelected) {\n this.scrollToElement(elSelected);\n // After scrolling to the element, the spec dictates that we follow the focus steps for the\n // target. Rather than following the robust steps, simply attempt focus.\n //\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.supportScrollRestoration()) {\n const history = this.window.history;\n if (history && history.scrollRestoration) {\n history.scrollRestoration = scrollRestoration;\n }\n }\n }\n /**\n * Scrolls to an element using the native offset and the specified offset set on this scroller.\n *\n * The offset can be used when we know that there is a floating header and scrolling naively to an\n * element (ex: `scrollIntoView`) leaves the element hidden behind the floating header.\n */\n scrollToElement(el) {\n const rect = el.getBoundingClientRect();\n const left = rect.left + this.window.pageXOffset;\n const top = rect.top + this.window.pageYOffset;\n const offset = this.offset();\n this.window.scrollTo(left - offset[0], top - offset[1]);\n }\n /**\n * We only support scroll restoration when we can get a hold of window.\n * This means that we do not support this behavior when running in a web worker.\n *\n * Lifting this restriction right now would require more changes in the dom adapter.\n * Since webworkers aren't widely used, we will lift it once RouterScroller is\n * battle-tested.\n */\n supportScrollRestoration() {\n try {\n if (!this.supportsScrolling()) {\n return false;\n }\n // The `scrollRestoration` property could be on the `history` instance or its prototype.\n const scrollRestorationDescriptor = getScrollRestorationProperty(this.window.history) ||\n getScrollRestorationProperty(Object.getPrototypeOf(this.window.history));\n // We can write to the `scrollRestoration` property if it is a writable data field or it has a\n // setter function.\n return !!scrollRestorationDescriptor &&\n !!(scrollRestorationDescriptor.writable || scrollRestorationDescriptor.set);\n }\n catch {\n return false;\n }\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 getScrollRestorationProperty(obj) {\n return Object.getOwnPropertyDescriptor(obj, 'scrollRestoration');\n}\nfunction findAnchorFromDocument(document, target) {\n const documentResult = document.getElementById(target) || document.getElementsByName(target)[0];\n if (documentResult) {\n return documentResult;\n }\n // `getElementById` and `getElementsByName` won't pierce through the shadow DOM so we\n // have to traverse the DOM manually and do the lookup through the shadow roots.\n if (typeof document.createTreeWalker === 'function' && document.body &&\n (document.body.createShadowRoot || document.body.attachShadow)) {\n const treeWalker = document.createTreeWalker(document.body, NodeFilter.SHOW_ELEMENT);\n let currentNode = treeWalker.currentNode;\n while (currentNode) {\n const shadowRoot = currentNode.shadowRoot;\n if (shadowRoot) {\n // Note that `ShadowRoot` doesn't support `getElementsByName`\n // so we have to fall back to `querySelector`.\n const result = shadowRoot.getElementById(target) || shadowRoot.querySelector(`[name=\"${target}\"]`);\n if (result) {\n return result;\n }\n }\n currentNode = treeWalker.nextNode();\n }\n }\n return null;\n}\n/**\n * Provides an empty implementation of the viewport scroller.\n */\nclass NullViewportScroller {\n /**\n * Empty implementation\n */\n setOffset(offset) { }\n /**\n * Empty implementation\n */\n getScrollPosition() {\n return [0, 0];\n }\n /**\n * Empty implementation\n */\n scrollToPosition(position) { }\n /**\n * Empty implementation\n */\n scrollToAnchor(anchor) { }\n /**\n * Empty implementation\n */\n setHistoryScrollRestoration(scrollRestoration) { }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A wrapper around the `XMLHttpRequest` constructor.\n *\n * @publicApi\n */\nclass XhrFactory {\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * 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 * @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// 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 * @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// 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 * @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// 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 * Multi-provider 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, multi: true, useValue: 'https://your-domain.com'}\n * ```\n *\n * or:\n *\n * ```typescript\n * {provide: PRECONNECT_CHECK_BLOCKLIST, multi: true,\n * useValue: ['https://your-domain-1.com', 'https://your-domain-2.com']}\n * ```\n *\n * @publicApi\n * @developerPreview\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 throw new ɵRuntimeError(2957 /* RuntimeErrorCode.INVALID_PRECONNECT_CHECK_BLOCKLIST */, `The blocklist for the preconnect check was not provided as an array. ` +\n `Check that the \\`PRECONNECT_CHECK_BLOCKLIST\\` token is configured as a \\`multi: true\\` provider.`);\n }\n }\n /**\n * Checks that a preconnect resource hint exists in the head fo rthe\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}\nPreconnectLinkChecker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: PreconnectLinkChecker, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nPreconnectLinkChecker.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: PreconnectLinkChecker, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.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 * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * 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 `ImageLoader`\n * @see `NgOptimizedImage`\n */\nconst noopImageLoader = (config) => config.src;\n/**\n * Injection token that configures the image loader function.\n *\n * @see `ImageLoader`\n * @see `NgOptimizedImage`\n * @publicApi\n * @developerPreview\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, options = { ensurePreconnect: true }) {\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 if (ngDevMode && options.ensurePreconnect === false) {\n providers.push({ provide: PRECONNECT_CHECK_BLOCKLIST, useValue: [path], multi: true });\n }\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 * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * 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 * @param options An object with extra configuration:\n * - `ensurePreconnect`: boolean flag indicating whether the NgOptimizedImage directive\n * should verify that there is a corresponding ``\n * present in the document's ``.\n * @returns Provider that provides an ImageLoader function\n *\n * @publicApi\n * @developerPreview\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 * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * 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 * @param options An object with extra configuration:\n * - `ensurePreconnect`: boolean flag indicating whether the NgOptimizedImage directive\n * should verify that there is a corresponding ``\n * present in the document's ``.\n * @returns Set of providers to configure the Cloudinary loader.\n *\n * @publicApi\n * @developerPreview\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 * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * 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 * @param options An object with extra configuration:\n * - `ensurePreconnect`: boolean flag indicating whether the NgOptimizedImage directive\n * should verify that there is a corresponding ``\n * present in the document's ``.\n * @returns Set of providers to configure the ImageKit loader.\n *\n * @publicApi\n * @developerPreview\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 let params = `tr:q-auto`; // applies the \"auto quality\" transformation\n if (config.width) {\n params += `,w-${config.width}`;\n }\n return `${path}/${params}/${config.src}`;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * 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 * @param options An object with extra configuration:\n * - `ensurePreconnect`: boolean flag indicating whether the NgOptimizedImage directive\n * should verify that there is a corresponding ``\n * present in the document's ``.\n * @returns Set of providers to configure the Imgix loader.\n *\n * @publicApi\n * @developerPreview\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/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * 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 // Keep track of images for which `console.warn` was produced.\n this.alreadyWarned = new Set();\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 imgNgSrc = this.images.get(imgSrc);\n if (imgNgSrc && !this.alreadyWarned.has(imgSrc)) {\n this.alreadyWarned.add(imgSrc);\n logMissingPriorityWarning(imgSrc);\n }\n });\n observer.observe({ type: 'largest-contentful-paint', buffered: true });\n return observer;\n }\n registerImage(rewrittenSrc, originalNgSrc) {\n if (!this.observer)\n return;\n this.images.set(getUrl(rewrittenSrc, this.window).href, originalNgSrc);\n }\n unregisterImage(rewrittenSrc) {\n if (!this.observer)\n return;\n this.images.delete(getUrl(rewrittenSrc, this.window).href);\n }\n ngOnDestroy() {\n if (!this.observer)\n return;\n this.observer.disconnect();\n this.images.clear();\n this.alreadyWarned.clear();\n }\n}\nLCPImageObserver.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: LCPImageObserver, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nLCPImageObserver.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: LCPImageObserver, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.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}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * 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 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 * 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 * - 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 * @developerPreview\n */\nclass NgOptimizedImage {\n constructor() {\n this.imageLoader = inject(IMAGE_LOADER);\n this.renderer = inject(Renderer2);\n this.imgElement = inject(ElementRef).nativeElement;\n this.injector = inject(Injector);\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 this._priority = false;\n }\n /**\n * Previously, the `rawSrc` attribute was used to activate the directive.\n * The attribute was renamed to `ngSrc` and this input just produces an error,\n * suggesting to switch to `ngSrc` instead.\n *\n * This error should be removed in v15.\n *\n * @nodoc\n * @deprecated Use `ngSrc` instead.\n */\n set rawSrc(value) {\n if (ngDevMode) {\n throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(value, false)} the \\`rawSrc\\` attribute was used ` +\n `to activate the directive. Newer version of the directive uses the \\`ngSrc\\` ` +\n `attribute instead. Please replace \\`rawSrc\\` with \\`ngSrc\\` and ` +\n `\\`rawSrcset\\` with \\`ngSrcset\\` attributes in the template to ` +\n `enable image optimizations.`);\n }\n }\n /**\n * The intrinsic width of the image in pixels.\n */\n set width(value) {\n ngDevMode && assertGreaterThanZero(this, value, 'width');\n this._width = inputToInteger(value);\n }\n get width() {\n return this._width;\n }\n /**\n * The intrinsic height of the image in pixels.\n */\n set height(value) {\n ngDevMode && assertGreaterThanZero(this, value, 'height');\n this._height = inputToInteger(value);\n }\n get height() {\n return this._height;\n }\n /**\n * Indicates whether this image should have a high priority.\n */\n set priority(value) {\n this._priority = inputToBoolean(value);\n }\n get priority() {\n return this._priority;\n }\n ngOnInit() {\n if (ngDevMode) {\n assertNonEmptyInput(this, 'ngSrc', this.ngSrc);\n assertValidNgSrcset(this, this.ngSrcset);\n assertNoConflictingSrc(this);\n assertNoConflictingSrcset(this);\n assertNotBase64Image(this);\n assertNotBlobUrl(this);\n assertNonEmptyWidthAndHeight(this);\n assertValidLoadingInput(this);\n assertNoImageDistortion(this, this.imgElement, this.renderer);\n if (this.priority) {\n const checker = this.injector.get(PreconnectLinkChecker);\n checker.assertPreconnect(this.getRewrittenSrc(), this.ngSrc);\n }\n else {\n // Monitor whether an image is an LCP element only in case\n // the `priority` attribute is missing. Otherwise, an image\n // has the necessary settings and no extra checks are required.\n if (this.lcpObserver !== null) {\n const ngZone = this.injector.get(NgZone);\n ngZone.runOutsideAngular(() => {\n this.lcpObserver.registerImage(this.getRewrittenSrc(), this.ngSrc);\n });\n }\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 this.setHostAttribute('width', this.width.toString());\n this.setHostAttribute('height', this.height.toString());\n this.setHostAttribute('loading', this.getLoadingBehavior());\n this.setHostAttribute('fetchpriority', this.getFetchPriority());\n // The `src` and `srcset` attributes should be set last since other attributes\n // could affect the image's loading behavior.\n this.setHostAttribute('src', this.getRewrittenSrc());\n if (this.ngSrcset) {\n this.setHostAttribute('srcset', this.getRewrittenSrcset());\n }\n }\n ngOnChanges(changes) {\n if (ngDevMode) {\n assertNoPostInitInputChange(this, changes, ['ngSrc', 'ngSrcset', 'width', 'height', 'priority']);\n }\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.imageLoader(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.imageLoader({ src: this.ngSrc, width })} ${srcStr}`;\n });\n return finalSrcs.join(', ');\n }\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}\nNgOptimizedImage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: NgOptimizedImage, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nNgOptimizedImage.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.12\", type: NgOptimizedImage, isStandalone: true, selector: \"img[ngSrc],img[rawSrc]\", inputs: { rawSrc: \"rawSrc\", ngSrc: \"ngSrc\", ngSrcset: \"ngSrcset\", width: \"width\", height: \"height\", loading: \"loading\", priority: \"priority\", src: \"src\", srcset: \"srcset\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: NgOptimizedImage, decorators: [{\n type: Directive,\n args: [{\n standalone: true,\n selector: 'img[ngSrc],img[rawSrc]',\n }]\n }], propDecorators: { rawSrc: [{\n type: Input\n }], ngSrc: [{\n type: Input\n }], ngSrcset: [{\n type: Input\n }], width: [{\n type: Input\n }], height: [{\n type: Input\n }], loading: [{\n type: Input\n }], priority: [{\n type: Input\n }], src: [{\n type: Input\n }], srcset: [{\n type: Input\n }] } });\n/***** Helpers *****/\n/**\n * Convert input value to integer.\n */\nfunction inputToInteger(value) {\n return typeof value === 'string' ? parseInt(value, 10) : value;\n}\n/**\n * Convert input value to boolean.\n */\nfunction inputToBoolean(value) {\n return value != null && `${value}` !== 'false';\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 `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 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. ` +\n `To fix this, switch \\`${inputName}\\` a static value or wrap the image element ` +\n `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 `(\\`${inputValue}\\`). To fix this, provide \\`${inputName}\\` ` +\n `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 // TODO: `clientWidth`, `clientHeight`, `naturalWidth` and `naturalHeight`\n // are typed as number, but we run `parseFloat` (which accepts strings only).\n // Verify whether `parseFloat` is needed in the cases below.\n const renderedWidth = parseFloat(img.clientWidth);\n const renderedHeight = parseFloat(img.clientHeight);\n const renderedAspectRatio = renderedWidth / renderedHeight;\n const nonZeroRenderedDimensions = renderedWidth !== 0 && renderedHeight !== 0;\n const intrinsicWidth = parseFloat(img.naturalWidth);\n const intrinsicHeight = parseFloat(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: ${intrinsicAspectRatio}). \\nSupplied width and height attributes: ` +\n `${suppliedWidth}w x ${suppliedHeight}h (aspect-ratio: ${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: ${intrinsicAspectRatio}). \\nRendered image size: ` +\n `${renderedWidth}w x ${renderedHeight}h (aspect-ratio: ` +\n `${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.`);\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/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// This file only reexports content of the `src` folder. Keep it that way.\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { APP_BASE_HREF, AsyncPipe, CommonModule, CurrencyPipe, DATE_PIPE_DEFAULT_TIMEZONE, DOCUMENT, DatePipe, DecimalPipe, FormStyle, FormatWidth, HashLocationStrategy, I18nPluralPipe, I18nSelectPipe, 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, BrowserPlatformLocation as ɵBrowserPlatformLocation, DomAdapter as ɵDomAdapter, NullViewportScroller as ɵNullViewportScroller, PLATFORM_BROWSER_ID as ɵPLATFORM_BROWSER_ID, PLATFORM_SERVER_ID as ɵPLATFORM_SERVER_ID, PLATFORM_WORKER_APP_ID as ɵPLATFORM_WORKER_APP_ID, PLATFORM_WORKER_UI_ID as ɵPLATFORM_WORKER_UI_ID, getDOM as ɵgetDOM, parseCookieValue as ɵparseCookieValue, setRootDomAdapter as ɵsetRootDomAdapter };\n","/**\n * @license Angular v14.2.12\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport * as i1 from '@angular/common';\nimport { DOCUMENT, ɵparseCookieValue, XhrFactory as XhrFactory$1 } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Injectable, InjectionToken, Inject, PLATFORM_ID, NgModule } from '@angular/core';\nimport { of, Observable } from 'rxjs';\nimport { concatMap, filter, map } from 'rxjs/operators';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Transforms an `HttpRequest` into a stream of `HttpEvent`s, one of which will likely be a\n * `HttpResponse`.\n *\n * `HttpHandler` is injectable. When injected, the handler instance dispatches requests to the\n * first interceptor in the chain, which dispatches to the second, etc, eventually reaching the\n * `HttpBackend`.\n *\n * In an `HttpInterceptor`, the `HttpHandler` parameter is the next interceptor in the chain.\n *\n * @publicApi\n */\nclass HttpHandler {\n}\n/**\n * A final `HttpHandler` which will dispatch the request via browser HTTP APIs to a backend.\n *\n * Interceptors sit between the `HttpClient` interface and the `HttpBackend`.\n *\n * When injected, `HttpBackend` dispatches requests directly to the backend, without going\n * through the interceptor chain.\n *\n * @publicApi\n */\nclass HttpBackend {\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Represents the header configuration options for an HTTP request.\n * Instances are immutable. Modifying methods return a cloned\n * instance with the change. The original object is never changed.\n *\n * @publicApi\n */\nclass HttpHeaders {\n /** Constructs a new HTTP header object with the given values.*/\n constructor(headers) {\n /**\n * Internal map of lowercased header names to the normalized\n * form of the name (the form seen first).\n */\n this.normalizedNames = new Map();\n /**\n * Queued updates to be materialized the next initialization.\n */\n this.lazyUpdate = null;\n if (!headers) {\n this.headers = new Map();\n }\n else if (typeof headers === 'string') {\n this.lazyInit = () => {\n this.headers = new Map();\n headers.split('\\n').forEach(line => {\n const index = line.indexOf(':');\n if (index > 0) {\n const name = line.slice(0, index);\n const key = name.toLowerCase();\n const value = line.slice(index + 1).trim();\n this.maybeSetNormalizedName(name, key);\n if (this.headers.has(key)) {\n this.headers.get(key).push(value);\n }\n else {\n this.headers.set(key, [value]);\n }\n }\n });\n };\n }\n else {\n this.lazyInit = () => {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n assertValidHeaders(headers);\n }\n this.headers = new Map();\n Object.keys(headers).forEach(name => {\n let values = headers[name];\n const key = name.toLowerCase();\n if (typeof values === 'string') {\n values = [values];\n }\n if (values.length > 0) {\n this.headers.set(key, values);\n this.maybeSetNormalizedName(name, key);\n }\n });\n };\n }\n }\n /**\n * Checks for existence of a given header.\n *\n * @param name The header name to check for existence.\n *\n * @returns True if the header exists, false otherwise.\n */\n has(name) {\n this.init();\n return this.headers.has(name.toLowerCase());\n }\n /**\n * Retrieves the first value of a given header.\n *\n * @param name The header name.\n *\n * @returns The value string if the header exists, null otherwise\n */\n get(name) {\n this.init();\n const values = this.headers.get(name.toLowerCase());\n return values && values.length > 0 ? values[0] : null;\n }\n /**\n * Retrieves the names of the headers.\n *\n * @returns A list of header names.\n */\n keys() {\n this.init();\n return Array.from(this.normalizedNames.values());\n }\n /**\n * Retrieves a list of values for a given header.\n *\n * @param name The header name from which to retrieve values.\n *\n * @returns A string of values if the header exists, null otherwise.\n */\n getAll(name) {\n this.init();\n return this.headers.get(name.toLowerCase()) || null;\n }\n /**\n * Appends a new value to the existing set of values for a header\n * and returns them in a clone of the original instance.\n *\n * @param name The header name for which to append the values.\n * @param value The value to append.\n *\n * @returns A clone of the HTTP headers object with the value appended to the given header.\n */\n append(name, value) {\n return this.clone({ name, value, op: 'a' });\n }\n /**\n * Sets or modifies a value for a given header in a clone of the original instance.\n * If the header already exists, its value is replaced with the given value\n * in the returned object.\n *\n * @param name The header name.\n * @param value The value or values to set or 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 /**\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 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' && !Array.isArray(value)) {\n throw new Error(`Unexpected value of the \\`${key}\\` header provided. ` +\n `Expecting either a string or an array, but got: \\`${value}\\`.`);\n }\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * 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 * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A token used to manipulate and access values stored in `HttpContext`.\n *\n * @publicApi\n */\nclass HttpContextToken {\n constructor(defaultValue) {\n this.defaultValue = defaultValue;\n }\n}\n/**\n * Http context stores arbitrary user defined values and ensures type safety without\n * actually knowing the types. It is backed by a `Map` and guarantees that keys do not clash.\n *\n * This context is mutable and is shared between cloned requests unless explicitly specified.\n *\n * @usageNotes\n *\n * ### Usage Example\n *\n * ```typescript\n * // inside cache.interceptors.ts\n * export const IS_CACHE_ENABLED = new HttpContextToken(() => false);\n *\n * export class CacheInterceptor implements HttpInterceptor {\n *\n * intercept(req: HttpRequest, delegate: HttpHandler): Observable> {\n * if (req.context.get(IS_CACHE_ENABLED) === true) {\n * return ...;\n * }\n * return delegate.handle(req);\n * }\n * }\n *\n * // inside a service\n *\n * this.httpClient.get('/api/weather', {\n * context: new HttpContext().set(IS_CACHE_ENABLED, true)\n * }).subscribe(...);\n * ```\n *\n * @publicApi\n */\nclass HttpContext {\n constructor() {\n this.map = new Map();\n }\n /**\n * Store a value in the context. If a value is already present it will be overwritten.\n *\n * @param token The reference to an instance of `HttpContextToken`.\n * @param value The value to store.\n *\n * @returns A reference to itself for easy chaining.\n */\n set(token, value) {\n this.map.set(token, value);\n return this;\n }\n /**\n * Retrieve the value associated with the given token.\n *\n * @param token The reference to an instance of `HttpContextToken`.\n *\n * @returns The stored value or default if one is defined.\n */\n get(token) {\n if (!this.map.has(token)) {\n this.map.set(token, token.defaultValue());\n }\n return this.map.get(token);\n }\n /**\n * Delete the value associated with the given token.\n *\n * @param token The reference to an instance of `HttpContextToken`.\n *\n * @returns A reference to itself for easy chaining.\n */\n delete(token) {\n this.map.delete(token);\n return this;\n }\n /**\n * 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 * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Determine whether the given HTTP method may include a body.\n */\nfunction mightHaveBody(method) {\n switch (method) {\n case 'DELETE':\n case 'GET':\n case 'HEAD':\n case 'OPTIONS':\n case 'JSONP':\n return false;\n default:\n return true;\n }\n}\n/**\n * Safely assert whether the given value is an ArrayBuffer.\n *\n * In some execution environments ArrayBuffer is not defined.\n */\nfunction isArrayBuffer(value) {\n return typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer;\n}\n/**\n * Safely assert whether the given value is a Blob.\n *\n * In some execution environments Blob is not defined.\n */\nfunction isBlob(value) {\n return typeof Blob !== 'undefined' && value instanceof Blob;\n}\n/**\n * Safely assert whether the given value is a FormData instance.\n *\n * In some execution environments FormData is not defined.\n */\nfunction isFormData(value) {\n return typeof FormData !== 'undefined' && value instanceof FormData;\n}\n/**\n * Safely assert whether the given value is a URLSearchParams instance.\n *\n * In some execution environments URLSearchParams is not defined.\n */\nfunction isUrlSearchParams(value) {\n return typeof URLSearchParams !== 'undefined' && value instanceof URLSearchParams;\n}\n/**\n * An outgoing HTTP request with an optional typed body.\n *\n * `HttpRequest` represents an outgoing request, including URL, method,\n * headers, body, and other request configuration options. Instances should be\n * assumed to be immutable. To modify a `HttpRequest`, the `clone`\n * method should be used.\n *\n * @publicApi\n */\nclass HttpRequest {\n constructor(method, url, third, fourth) {\n this.url = url;\n /**\n * The request body, or `null` if one isn't set.\n *\n * Bodies are not enforced to be immutable, as they can include a reference to any\n * user-defined data type. However, interceptors should take care to preserve\n * idempotence by treating them as such.\n */\n this.body = null;\n /**\n * Whether this request should be made in a way that exposes progress events.\n *\n * Progress events are expensive (change detection runs on each event) and so\n * they should only be requested if the consumer intends to monitor them.\n */\n this.reportProgress = false;\n /**\n * Whether this request should be sent with outgoing credentials (cookies).\n */\n this.withCredentials = false;\n /**\n * The expected response type of the server.\n *\n * This is used to parse the response appropriately before returning it to\n * the requestee.\n */\n this.responseType = 'json';\n this.method = method.toUpperCase();\n // Next, need to figure out which argument holds the HttpRequestInit\n // options, if any.\n let options;\n // Check whether a body argument is expected. The only valid way to omit\n // the body argument is to use a known no-body method like GET.\n if (mightHaveBody(this.method) || !!fourth) {\n // Body is the third argument, options are the fourth.\n this.body = (third !== undefined) ? third : null;\n options = fourth;\n }\n else {\n // No body required, options are the third argument. The body stays null.\n options = third;\n }\n // If options have been passed, interpret them.\n if (options) {\n // Normalize reportProgress and withCredentials.\n this.reportProgress = !!options.reportProgress;\n this.withCredentials = !!options.withCredentials;\n // Override default response type of 'json' if one is provided.\n if (!!options.responseType) {\n this.responseType = options.responseType;\n }\n // Override headers if they're provided.\n if (!!options.headers) {\n this.headers = options.headers;\n }\n if (!!options.context) {\n this.context = options.context;\n }\n if (!!options.params) {\n this.params = options.params;\n }\n }\n // If no headers have been passed in, construct a new HttpHeaders instance.\n if (!this.headers) {\n this.headers = new HttpHeaders();\n }\n // If no context have been passed in, construct a new HttpContext instance.\n if (!this.context) {\n this.context = new HttpContext();\n }\n // If no parameters have been passed in, construct a new HttpUrlEncodedParams instance.\n if (!this.params) {\n this.params = new HttpParams();\n this.urlWithParams = url;\n }\n else {\n // Encode the parameters to a string in preparation for inclusion in the URL.\n const params = this.params.toString();\n if (params.length === 0) {\n // No parameters, the visible URL is just the URL given at creation time.\n this.urlWithParams = url;\n }\n else {\n // Does the URL already have query parameters? Look for '?'.\n const qIdx = url.indexOf('?');\n // There are 3 cases to handle:\n // 1) No existing parameters -> append '?' followed by params.\n // 2) '?' exists and is followed by existing query string ->\n // append '&' followed by params.\n // 3) '?' exists at the end of the url -> append params directly.\n // This basically amounts to determining the character, if any, with\n // which to join the URL and parameters.\n const sep = qIdx === -1 ? '?' : (qIdx < url.length - 1 ? '&' : '');\n this.urlWithParams = url + sep + params;\n }\n }\n }\n /**\n * Transform the free-form body into a serialized format suitable for\n * transmission to the server.\n */\n serializeBody() {\n // If no body is present, no need to serialize it.\n if (this.body === null) {\n return null;\n }\n // Check whether the body is already in a serialized form. If so,\n // it can just be returned directly.\n if (isArrayBuffer(this.body) || isBlob(this.body) || isFormData(this.body) ||\n isUrlSearchParams(this.body) || typeof this.body === 'string') {\n return this.body;\n }\n // Check whether the body is an instance of HttpUrlEncodedParams.\n if (this.body instanceof HttpParams) {\n return this.body.toString();\n }\n // Check whether the body is an object or array, and serialize with JSON if so.\n if (typeof this.body === 'object' || typeof this.body === 'boolean' ||\n Array.isArray(this.body)) {\n return JSON.stringify(this.body);\n }\n // Fall back on toString() for everything else.\n return this.body.toString();\n }\n /**\n * Examine the body and attempt to infer an appropriate MIME type\n * for it.\n *\n * If no such type can be inferred, this method will return `null`.\n */\n detectContentTypeHeader() {\n // An empty body has no content type.\n if (this.body === null) {\n return null;\n }\n // FormData bodies rely on the browser's content type assignment.\n if (isFormData(this.body)) {\n return null;\n }\n // Blobs usually have their own content type. If it doesn't, then\n // no type can be inferred.\n if (isBlob(this.body)) {\n return this.body.type || null;\n }\n // Array buffers have unknown contents and thus no type can be inferred.\n if (isArrayBuffer(this.body)) {\n return null;\n }\n // Technically, strings could be a form of JSON data, but it's safe enough\n // to assume they're plain strings.\n if (typeof this.body === 'string') {\n return 'text/plain';\n }\n // `HttpUrlEncodedParams` has its own content-type.\n if (this.body instanceof HttpParams) {\n return 'application/x-www-form-urlencoded;charset=UTF-8';\n }\n // Arrays, objects, boolean and numbers will be encoded as JSON.\n if (typeof this.body === 'object' || typeof this.body === 'number' ||\n typeof this.body === 'boolean') {\n return 'application/json';\n }\n // No type could be inferred.\n return null;\n }\n clone(update = {}) {\n // 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 * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Type enumeration for the different kinds of `HttpEvent`.\n *\n * @publicApi\n */\nvar HttpEventType;\n(function (HttpEventType) {\n /**\n * The request was sent out over the wire.\n */\n HttpEventType[HttpEventType[\"Sent\"] = 0] = \"Sent\";\n /**\n * An upload progress event was received.\n */\n HttpEventType[HttpEventType[\"UploadProgress\"] = 1] = \"UploadProgress\";\n /**\n * The response status code and headers were received.\n */\n HttpEventType[HttpEventType[\"ResponseHeader\"] = 2] = \"ResponseHeader\";\n /**\n * A download progress event was received.\n */\n HttpEventType[HttpEventType[\"DownloadProgress\"] = 3] = \"DownloadProgress\";\n /**\n * The full response including the body was received.\n */\n HttpEventType[HttpEventType[\"Response\"] = 4] = \"Response\";\n /**\n * A custom event from an interceptor or a backend.\n */\n HttpEventType[HttpEventType[\"User\"] = 5] = \"User\";\n})(HttpEventType || (HttpEventType = {}));\n/**\n * Base class for both `HttpResponse` and `HttpHeaderResponse`.\n *\n * @publicApi\n */\nclass HttpResponseBase {\n /**\n * Super-constructor for all responses.\n *\n * The single parameter accepted is an initialization hash. Any properties\n * of the response passed there will override the default values.\n */\n constructor(init, defaultStatus = 200 /* 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 * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Constructs an instance of `HttpRequestOptions` from a source `HttpMethodOptions` and\n * the given `body`. This function clones the object and adds the body.\n *\n * Note that the `responseType` *options* value is a String that identifies the\n * single data type of the response.\n * A single overload version of the method handles each response type.\n * The value of `responseType` cannot be a union, as the combined signature could imply.\n *\n */\nfunction addBody(options, body) {\n return {\n body,\n headers: options.headers,\n context: options.context,\n observe: options.observe,\n params: options.params,\n reportProgress: options.reportProgress,\n responseType: options.responseType,\n withCredentials: options.withCredentials,\n };\n}\n/**\n * Performs HTTP requests.\n * This service is available as an injectable class, with methods to perform HTTP requests.\n * Each request method has multiple signatures, and the return type varies based on\n * the signature that is called (mainly the values of `observe` and `responseType`).\n *\n * Note that the `responseType` *options* value is a String that identifies the\n * single data type of the response.\n * A single overload version of the method handles each response type.\n * The value of `responseType` cannot be a union, as the combined signature could imply.\n\n *\n * @usageNotes\n * Sample HTTP requests for the [Tour of Heroes](/tutorial/toh-pt0) application.\n *\n * ### HTTP Request Example\n *\n * ```\n * // GET heroes whose name contains search term\n * searchHeroes(term: string): observable{\n *\n * const params = new HttpParams({fromString: 'name=term'});\n * return this.httpClient.request('GET', this.heroesUrl, {responseType:'json', params});\n * }\n * ```\n *\n * Alternatively, the parameter string can be used without invoking HttpParams\n * by directly joining to the URL.\n * ```\n * this.httpClient.request('GET', this.heroesUrl + '?' + 'name=term', {responseType:'json'});\n * ```\n *\n *\n * ### JSONP Example\n * ```\n * requestJsonp(url, callback = 'callback') {\n * return this.httpClient.jsonp(this.heroesURL, callback);\n * }\n * ```\n *\n * ### PATCH Example\n * ```\n * // PATCH one of the heroes' name\n * patchHero (id: number, heroName: string): Observable<{}> {\n * const url = `${this.heroesUrl}/${id}`; // PATCH api/heroes/42\n * return this.httpClient.patch(url, {name: heroName}, httpOptions)\n * .pipe(catchError(this.handleError('patchHero')));\n * }\n * ```\n *\n * @see [HTTP Guide](guide/http)\n * @see [HTTP Request](api/common/http/HttpRequest)\n *\n * @publicApi\n */\nclass HttpClient {\n constructor(handler) {\n this.handler = handler;\n }\n /**\n * Constructs an observable for a generic HTTP request that, when subscribed,\n * fires the request through the chain of registered interceptors and on to the\n * server.\n *\n * You can pass an `HttpRequest` directly as the only parameter. In this case,\n * the call returns an observable of the raw `HttpEvent` stream.\n *\n * Alternatively you can pass an HTTP method as the first parameter,\n * a URL string as the second, and an options hash containing the request body as the third.\n * See `addBody()`. In this case, the specified `responseType` and `observe` options determine the\n * type of returned observable.\n * * The `responseType` value determines how a successful response body is parsed.\n * * If `responseType` is the default `json`, you can pass a type interface for the resulting\n * object as a type parameter to the call.\n *\n * The `observe` value determines the return type, according to what you are interested in\n * observing.\n * * An `observe` value of events returns an observable of the raw `HttpEvent` stream, including\n * progress events by default.\n * * An `observe` value of response returns an observable of `HttpResponse`,\n * where the `T` parameter depends on the `responseType` and any optionally provided type\n * parameter.\n * * An `observe` value of body returns an observable of `` with the same `T` body type.\n *\n */\n request(first, url, options = {}) {\n let req;\n // First, check whether the primary argument is an instance of `HttpRequest`.\n if (first instanceof HttpRequest) {\n // It is. The other arguments must be undefined (per the signatures) and can be\n // ignored.\n req = first;\n }\n else {\n // It's a string, so it represents a URL. Construct a request based on it,\n // and incorporate the remaining arguments (assuming `GET` unless a method is\n // provided.\n // Figure out the headers.\n let headers = undefined;\n if (options.headers instanceof HttpHeaders) {\n headers = options.headers;\n }\n else {\n headers = new HttpHeaders(options.headers);\n }\n // Sort out parameters.\n let params = undefined;\n if (!!options.params) {\n if (options.params instanceof HttpParams) {\n params = options.params;\n }\n else {\n params = new HttpParams({ fromObject: options.params });\n }\n }\n // Construct the request.\n req = new HttpRequest(first, url, (options.body !== undefined ? options.body : null), {\n headers,\n context: options.context,\n params,\n reportProgress: options.reportProgress,\n // By default, JSON is assumed to be returned for all calls.\n responseType: options.responseType || 'json',\n withCredentials: options.withCredentials,\n });\n }\n // Start with an Observable.of() the initial request, and run the handler (which\n // includes all interceptors) inside a concatMap(). This way, the handler runs\n // inside an Observable chain, which causes interceptors to be re-run on every\n // subscription (this also makes retries re-run the handler, including interceptors).\n const events$ = of(req).pipe(concatMap((req) => this.handler.handle(req)));\n // If coming via the API signature which accepts a previously constructed HttpRequest,\n // the only option is to get the event stream. Otherwise, return the event stream if\n // that is what was requested.\n if (first instanceof HttpRequest || options.observe === 'events') {\n return events$;\n }\n // The requested stream contains either the full response or the body. In either\n // case, the first step is to filter the event stream to extract a stream of\n // responses(s).\n const res$ = events$.pipe(filter((event) => event instanceof HttpResponse));\n // Decide which stream to return.\n switch (options.observe || 'body') {\n case 'body':\n // The requested stream is the body. Map the response stream to the response\n // body. This could be done more simply, but a misbehaving interceptor might\n // transform the response body into a different format and ignore the requested\n // responseType. Guard against this by validating that the response is of the\n // requested type.\n switch (req.responseType) {\n case 'arraybuffer':\n return res$.pipe(map((res) => {\n // Validate that the body is an ArrayBuffer.\n if (res.body !== null && !(res.body instanceof ArrayBuffer)) {\n throw new Error('Response is not an ArrayBuffer.');\n }\n return res.body;\n }));\n case 'blob':\n return res$.pipe(map((res) => {\n // Validate that the body is a Blob.\n if (res.body !== null && !(res.body instanceof Blob)) {\n throw new Error('Response is not a Blob.');\n }\n return res.body;\n }));\n case 'text':\n return res$.pipe(map((res) => {\n // Validate that the body is a string.\n if (res.body !== null && typeof res.body !== 'string') {\n throw new Error('Response is not a string.');\n }\n return res.body;\n }));\n case 'json':\n default:\n // No validation needed for JSON responses, as they can be of any type.\n return res$.pipe(map((res) => res.body));\n }\n case 'response':\n // The response stream was requested directly, so return it.\n return res$;\n default:\n // Guard against new future observe types being added.\n throw new Error(`Unreachable: unhandled observe type ${options.observe}}`);\n }\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `DELETE` request to execute on the server. See the individual overloads for\n * details on the return type.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n */\n delete(url, options = {}) {\n return this.request('DELETE', url, options);\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `GET` request to execute on the server. See the individual overloads for\n * details on the return type.\n */\n get(url, options = {}) {\n return this.request('GET', url, options);\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `HEAD` request to execute on the server. The `HEAD` method returns\n * meta information about the resource without transferring the\n * resource itself. See the individual overloads for\n * details on the return type.\n */\n head(url, options = {}) {\n return this.request('HEAD', url, options);\n }\n /**\n * Constructs an `Observable` that, when subscribed, causes a request with the special method\n * `JSONP` to be dispatched via the interceptor pipeline.\n * The [JSONP pattern](https://en.wikipedia.org/wiki/JSONP) works around limitations of certain\n * API endpoints that don't support newer,\n * and preferable [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) protocol.\n * JSONP treats the endpoint API as a JavaScript file and tricks the browser to process the\n * requests even if the API endpoint is not located on the same domain (origin) as the client-side\n * application making the request.\n * The endpoint API must support JSONP callback for JSONP requests to work.\n * The resource API returns the JSON response wrapped in a callback function.\n * You can pass the callback function name as one of the query parameters.\n * Note that JSONP requests can only be used with `GET` requests.\n *\n * @param url The resource URL.\n * @param callbackParam The callback function name.\n *\n */\n jsonp(url, callbackParam) {\n return this.request('JSONP', url, {\n params: new HttpParams().append(callbackParam, 'JSONP_CALLBACK'),\n observe: 'body',\n responseType: 'json',\n });\n }\n /**\n * Constructs an `Observable` that, when subscribed, causes the configured\n * `OPTIONS` request to execute on the server. This method allows the client\n * to determine the supported HTTP methods and other capabilities of an endpoint,\n * without implying a resource action. See the individual overloads for\n * details on the return type.\n */\n options(url, options = {}) {\n return this.request('OPTIONS', url, options);\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `PATCH` request to execute on the server. See the individual overloads for\n * details on the return type.\n */\n patch(url, body, options = {}) {\n return this.request('PATCH', url, addBody(options, body));\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `POST` request to execute on the server. The server responds with the location of\n * the replaced resource. See the individual overloads for\n * details on the return type.\n */\n post(url, body, options = {}) {\n return this.request('POST', url, addBody(options, body));\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `PUT` request to execute on the server. The `PUT` method replaces an existing resource\n * with a new set of values.\n * See the individual overloads for details on the return type.\n */\n put(url, body, options = {}) {\n return this.request('PUT', url, addBody(options, body));\n }\n}\nHttpClient.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: HttpClient, deps: [{ token: HttpHandler }], target: i0.ɵɵFactoryTarget.Injectable });\nHttpClient.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: HttpClient });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: HttpClient, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: HttpHandler }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * `HttpHandler` which applies an `HttpInterceptor` to an `HttpRequest`.\n *\n *\n */\nclass HttpInterceptorHandler {\n constructor(next, interceptor) {\n this.next = next;\n this.interceptor = interceptor;\n }\n handle(req) {\n return this.interceptor.intercept(req, this.next);\n }\n}\n/**\n * A multi-provider token that represents the array of registered\n * `HttpInterceptor` objects.\n *\n * @publicApi\n */\nconst HTTP_INTERCEPTORS = new InjectionToken('HTTP_INTERCEPTORS');\nclass NoopInterceptor {\n intercept(req, next) {\n return next.handle(req);\n }\n}\nNoopInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: NoopInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNoopInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: NoopInterceptor });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.12\", ngImport: i0, type: NoopInterceptor, decorators: [{\n type: Injectable\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// 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 \n if (val === '') return true;\n if (val === 'false') return false;\n if (val === 'true') return true;\n return val;\n}\n\nif (DOCUMENT && typeof DOCUMENT.querySelector === 'function') {\n var attrs = [['data-family-prefix', 'familyPrefix'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']];\n attrs.forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n attr = _ref2[0],\n key = _ref2[1];\n\n var val = coerce(getAttrConfig(attr));\n\n if (val !== undefined && val !== null) {\n initial[key] = val;\n }\n });\n}\n\nvar _default = {\n familyPrefix: DEFAULT_FAMILY_PREFIX,\n replacementClass: DEFAULT_REPLACEMENT_CLASS,\n autoReplaceSvg: true,\n autoAddCss: true,\n autoA11y: true,\n searchPseudoElements: false,\n observeMutations: true,\n mutateApproach: 'async',\n keepOriginalSource: true,\n measurePerformance: false,\n showMissingIcons: true\n};\n\nvar _config = _objectSpread({}, _default, initial);\n\nif (!_config.autoReplaceSvg) _config.observeMutations = false;\n\nvar config = _objectSpread({}, _config);\n\nWINDOW.FontAwesomeConfig = config;\n\nvar w = WINDOW || {};\nif (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};\nif (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};\nif (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};\nif (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];\nvar namespace = w[NAMESPACE_IDENTIFIER];\n\nvar functions = [];\n\nvar listener = function listener() {\n DOCUMENT.removeEventListener('DOMContentLoaded', listener);\n loaded = 1;\n functions.map(function (fn) {\n return fn();\n });\n};\n\nvar loaded = false;\n\nif (IS_DOM) {\n loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);\n if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);\n}\n\nfunction domready (fn) {\n if (!IS_DOM) return;\n loaded ? setTimeout(fn, 0) : functions.push(fn);\n}\n\nvar PENDING = 'pending';\nvar SETTLED = 'settled';\nvar FULFILLED = 'fulfilled';\nvar REJECTED = 'rejected';\n\nvar NOOP = function NOOP() {};\n\nvar isNode = typeof global !== 'undefined' && typeof global.process !== 'undefined' && typeof global.process.emit === 'function';\nvar asyncSetTimer = typeof setImmediate === 'undefined' ? setTimeout : setImmediate;\nvar asyncQueue = [];\nvar asyncTimer;\n\nfunction asyncFlush() {\n // run promise callbacks\n for (var i = 0; i < asyncQueue.length; i++) {\n asyncQueue[i][0](asyncQueue[i][1]);\n } // reset async asyncQueue\n\n\n asyncQueue = [];\n asyncTimer = false;\n}\n\nfunction asyncCall(callback, arg) {\n asyncQueue.push([callback, arg]);\n\n if (!asyncTimer) {\n asyncTimer = true;\n asyncSetTimer(asyncFlush, 0);\n }\n}\n\nfunction invokeResolver(resolver, promise) {\n function resolvePromise(value) {\n resolve(promise, value);\n }\n\n function rejectPromise(reason) {\n reject(promise, reason);\n }\n\n try {\n resolver(resolvePromise, rejectPromise);\n } catch (e) {\n rejectPromise(e);\n }\n}\n\nfunction invokeCallback(subscriber) {\n var owner = subscriber.owner;\n var settled = owner._state;\n var value = owner._data;\n var callback = subscriber[settled];\n var promise = subscriber.then;\n\n if (typeof callback === 'function') {\n settled = FULFILLED;\n\n try {\n value = callback(value);\n } catch (e) {\n reject(promise, e);\n }\n }\n\n if (!handleThenable(promise, value)) {\n if (settled === FULFILLED) {\n resolve(promise, value);\n }\n\n if (settled === REJECTED) {\n reject(promise, value);\n }\n }\n}\n\nfunction handleThenable(promise, value) {\n var resolved;\n\n try {\n if (promise === value) {\n throw new TypeError('A promises callback cannot return that same promise.');\n }\n\n if (value && (typeof value === 'function' || _typeof(value) === 'object')) {\n // then should be retrieved only once\n var then = value.then;\n\n if (typeof then === 'function') {\n then.call(value, function (val) {\n if (!resolved) {\n resolved = true;\n\n if (value === val) {\n fulfill(promise, val);\n } else {\n resolve(promise, val);\n }\n }\n }, function (reason) {\n if (!resolved) {\n resolved = true;\n reject(promise, reason);\n }\n });\n return true;\n }\n }\n } catch (e) {\n if (!resolved) {\n reject(promise, e);\n }\n\n return true;\n }\n\n return false;\n}\n\nfunction resolve(promise, value) {\n if (promise === value || !handleThenable(promise, value)) {\n fulfill(promise, value);\n }\n}\n\nfunction fulfill(promise, value) {\n if (promise._state === PENDING) {\n promise._state = SETTLED;\n promise._data = value;\n asyncCall(publishFulfillment, promise);\n }\n}\n\nfunction reject(promise, reason) {\n if (promise._state === PENDING) {\n promise._state = SETTLED;\n promise._data = reason;\n asyncCall(publishRejection, promise);\n }\n}\n\nfunction publish(promise) {\n promise._then = promise._then.forEach(invokeCallback);\n}\n\nfunction publishFulfillment(promise) {\n promise._state = FULFILLED;\n publish(promise);\n}\n\nfunction publishRejection(promise) {\n promise._state = REJECTED;\n publish(promise);\n\n if (!promise._handled && isNode) {\n global.process.emit('unhandledRejection', promise._data, promise);\n }\n}\n\nfunction notifyRejectionHandled(promise) {\n global.process.emit('rejectionHandled', promise);\n}\n/**\n * @class\n */\n\n\nfunction P(resolver) {\n if (typeof resolver !== 'function') {\n throw new TypeError('Promise resolver ' + resolver + ' is not a function');\n }\n\n if (this instanceof P === false) {\n throw new TypeError('Failed to construct \\'Promise\\': Please use the \\'new\\' operator, this object constructor cannot be called as a function.');\n }\n\n this._then = [];\n invokeResolver(resolver, this);\n}\n\nP.prototype = {\n constructor: P,\n _state: PENDING,\n _then: null,\n _data: undefined,\n _handled: false,\n then: function then(onFulfillment, onRejection) {\n var subscriber = {\n owner: this,\n then: new this.constructor(NOOP),\n fulfilled: onFulfillment,\n rejected: onRejection\n };\n\n if ((onRejection || onFulfillment) && !this._handled) {\n this._handled = true;\n\n if (this._state === REJECTED && isNode) {\n asyncCall(notifyRejectionHandled, this);\n }\n }\n\n if (this._state === FULFILLED || this._state === REJECTED) {\n // already resolved, call callback async\n asyncCall(invokeCallback, subscriber);\n } else {\n // subscribe\n this._then.push(subscriber);\n }\n\n return subscriber.then;\n },\n catch: function _catch(onRejection) {\n return this.then(null, onRejection);\n }\n};\n\nP.all = function (promises) {\n if (!Array.isArray(promises)) {\n throw new TypeError('You must pass an array to Promise.all().');\n }\n\n return new P(function (resolve, reject) {\n var results = [];\n var remaining = 0;\n\n function resolver(index) {\n remaining++;\n return function (value) {\n results[index] = value;\n\n if (! --remaining) {\n resolve(results);\n }\n };\n }\n\n for (var i = 0, promise; i < promises.length; i++) {\n promise = promises[i];\n\n if (promise && typeof promise.then === 'function') {\n promise.then(resolver(i), reject);\n } else {\n results[i] = promise;\n }\n }\n\n if (!remaining) {\n resolve(results);\n }\n });\n};\n\nP.race = function (promises) {\n if (!Array.isArray(promises)) {\n throw new TypeError('You must pass an array to Promise.race().');\n }\n\n return new P(function (resolve, reject) {\n for (var i = 0, promise; i < promises.length; i++) {\n promise = promises[i];\n\n if (promise && typeof promise.then === 'function') {\n promise.then(resolve, reject);\n } else {\n resolve(promise);\n }\n }\n });\n};\n\nP.resolve = function (value) {\n if (value && _typeof(value) === 'object' && value.constructor === P) {\n return value;\n }\n\n return new P(function (resolve) {\n resolve(value);\n });\n};\n\nP.reject = function (reason) {\n return new P(function (resolve, reject) {\n reject(reason);\n });\n};\n\nvar picked = typeof Promise === 'function' ? Promise : P;\n\nvar d = UNITS_IN_GRID;\nvar meaninglessTransform = {\n size: 16,\n x: 0,\n y: 0,\n rotate: 0,\n flipX: false,\n flipY: false\n};\n\nfunction isReserved(name) {\n return ~RESERVED_CLASSES.indexOf(name);\n}\nfunction insertCss(css) {\n if (!css || !IS_DOM) {\n return;\n }\n\n var style = DOCUMENT.createElement('style');\n style.setAttribute('type', 'text/css');\n style.innerHTML = css;\n var headChildren = DOCUMENT.head.childNodes;\n var beforeChild = null;\n\n for (var i = headChildren.length - 1; i > -1; i--) {\n var child = headChildren[i];\n var tagName = (child.tagName || '').toUpperCase();\n\n if (['STYLE', 'LINK'].indexOf(tagName) > -1) {\n beforeChild = child;\n }\n }\n\n DOCUMENT.head.insertBefore(style, beforeChild);\n return css;\n}\nvar idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\nfunction nextUniqueId() {\n var size = 12;\n var id = '';\n\n while (size-- > 0) {\n id += idPool[Math.random() * 62 | 0];\n }\n\n return id;\n}\nfunction toArray(obj) {\n var array = [];\n\n for (var i = (obj || []).length >>> 0; i--;) {\n array[i] = obj[i];\n }\n\n return array;\n}\nfunction classArray(node) {\n if (node.classList) {\n return toArray(node.classList);\n } else {\n return (node.getAttribute('class') || '').split(' ').filter(function (i) {\n return i;\n });\n }\n}\nfunction getIconName(familyPrefix, cls) {\n var parts = cls.split('-');\n var prefix = parts[0];\n var iconName = parts.slice(1).join('-');\n\n if (prefix === familyPrefix && iconName !== '' && !isReserved(iconName)) {\n return iconName;\n } else {\n return null;\n }\n}\nfunction htmlEscape(str) {\n return \"\".concat(str).replace(/&/g, '&').replace(/\"/g, '"').replace(/'/g, ''').replace(//g, '>');\n}\nfunction joinAttributes(attributes) {\n return Object.keys(attributes || {}).reduce(function (acc, attributeName) {\n return acc + \"\".concat(attributeName, \"=\\\"\").concat(htmlEscape(attributes[attributeName]), \"\\\" \");\n }, '').trim();\n}\nfunction joinStyles(styles) {\n return Object.keys(styles || {}).reduce(function (acc, styleName) {\n return acc + \"\".concat(styleName, \": \").concat(styles[styleName], \";\");\n }, '');\n}\nfunction transformIsMeaningful(transform) {\n return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY;\n}\nfunction transformForSvg(_ref) {\n var transform = _ref.transform,\n containerWidth = _ref.containerWidth,\n iconWidth = _ref.iconWidth;\n var outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n var innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n var innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n var innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n var inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n var path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n return {\n outer: outer,\n inner: inner,\n path: path\n };\n}\nfunction transformForCss(_ref2) {\n var transform = _ref2.transform,\n _ref2$width = _ref2.width,\n width = _ref2$width === void 0 ? UNITS_IN_GRID : _ref2$width,\n _ref2$height = _ref2.height,\n height = _ref2$height === void 0 ? UNITS_IN_GRID : _ref2$height,\n _ref2$startCentered = _ref2.startCentered,\n startCentered = _ref2$startCentered === void 0 ? false : _ref2$startCentered;\n var val = '';\n\n if (startCentered && IS_IE) {\n val += \"translate(\".concat(transform.x / d - width / 2, \"em, \").concat(transform.y / d - height / 2, \"em) \");\n } else if (startCentered) {\n val += \"translate(calc(-50% + \".concat(transform.x / d, \"em), calc(-50% + \").concat(transform.y / d, \"em)) \");\n } else {\n val += \"translate(\".concat(transform.x / d, \"em, \").concat(transform.y / d, \"em) \");\n }\n\n val += \"scale(\".concat(transform.size / d * (transform.flipX ? -1 : 1), \", \").concat(transform.size / d * (transform.flipY ? -1 : 1), \") \");\n val += \"rotate(\".concat(transform.rotate, \"deg) \");\n return val;\n}\n\nvar ALL_SPACE = {\n x: 0,\n y: 0,\n width: '100%',\n height: '100%'\n};\n\nfunction fillBlack(abstract) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (abstract.attributes && (abstract.attributes.fill || force)) {\n abstract.attributes.fill = 'black';\n }\n\n return abstract;\n}\n\nfunction deGroup(abstract) {\n if (abstract.tag === 'g') {\n return abstract.children;\n } else {\n return [abstract];\n }\n}\n\nfunction makeIconMasking (_ref) {\n var children = _ref.children,\n attributes = _ref.attributes,\n main = _ref.main,\n mask = _ref.mask,\n explicitMaskId = _ref.maskId,\n transform = _ref.transform;\n var mainWidth = main.width,\n mainPath = main.icon;\n var maskWidth = mask.width,\n maskPath = mask.icon;\n var trans = transformForSvg({\n transform: transform,\n containerWidth: maskWidth,\n iconWidth: mainWidth\n });\n var maskRect = {\n tag: 'rect',\n attributes: _objectSpread({}, ALL_SPACE, {\n fill: 'white'\n })\n };\n var maskInnerGroupChildrenMixin = mainPath.children ? {\n children: mainPath.children.map(fillBlack)\n } : {};\n var maskInnerGroup = {\n tag: 'g',\n attributes: _objectSpread({}, trans.inner),\n children: [fillBlack(_objectSpread({\n tag: mainPath.tag,\n attributes: _objectSpread({}, mainPath.attributes, trans.path)\n }, maskInnerGroupChildrenMixin))]\n };\n var maskOuterGroup = {\n tag: 'g',\n attributes: _objectSpread({}, trans.outer),\n children: [maskInnerGroup]\n };\n var maskId = \"mask-\".concat(explicitMaskId || nextUniqueId());\n var clipId = \"clip-\".concat(explicitMaskId || nextUniqueId());\n var maskTag = {\n tag: 'mask',\n attributes: _objectSpread({}, ALL_SPACE, {\n id: maskId,\n maskUnits: 'userSpaceOnUse',\n maskContentUnits: 'userSpaceOnUse'\n }),\n children: [maskRect, maskOuterGroup]\n };\n var defs = {\n tag: 'defs',\n children: [{\n tag: 'clipPath',\n attributes: {\n id: clipId\n },\n children: deGroup(maskPath)\n }, maskTag]\n };\n children.push(defs, {\n tag: 'rect',\n attributes: _objectSpread({\n fill: 'currentColor',\n 'clip-path': \"url(#\".concat(clipId, \")\"),\n mask: \"url(#\".concat(maskId, \")\")\n }, ALL_SPACE)\n });\n return {\n children: children,\n attributes: attributes\n };\n}\n\nfunction makeIconStandard (_ref) {\n var children = _ref.children,\n attributes = _ref.attributes,\n main = _ref.main,\n transform = _ref.transform,\n styles = _ref.styles;\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n if (transformIsMeaningful(transform)) {\n var trans = transformForSvg({\n transform: transform,\n containerWidth: main.width,\n iconWidth: main.width\n });\n children.push({\n tag: 'g',\n attributes: _objectSpread({}, trans.outer),\n children: [{\n tag: 'g',\n attributes: _objectSpread({}, trans.inner),\n children: [{\n tag: main.icon.tag,\n children: main.icon.children,\n attributes: _objectSpread({}, main.icon.attributes, trans.path)\n }]\n }]\n });\n } else {\n children.push(main.icon);\n }\n\n return {\n children: children,\n attributes: attributes\n };\n}\n\nfunction asIcon (_ref) {\n var children = _ref.children,\n main = _ref.main,\n mask = _ref.mask,\n attributes = _ref.attributes,\n styles = _ref.styles,\n transform = _ref.transform;\n\n if (transformIsMeaningful(transform) && main.found && !mask.found) {\n var width = main.width,\n height = main.height;\n var offset = {\n x: width / height / 2,\n y: 0.5\n };\n attributes['style'] = joinStyles(_objectSpread({}, styles, {\n 'transform-origin': \"\".concat(offset.x + transform.x / 16, \"em \").concat(offset.y + transform.y / 16, \"em\")\n }));\n }\n\n return [{\n tag: 'svg',\n attributes: attributes,\n children: children\n }];\n}\n\nfunction asSymbol (_ref) {\n var prefix = _ref.prefix,\n iconName = _ref.iconName,\n children = _ref.children,\n attributes = _ref.attributes,\n symbol = _ref.symbol;\n var id = symbol === true ? \"\".concat(prefix, \"-\").concat(config.familyPrefix, \"-\").concat(iconName) : symbol;\n return [{\n tag: 'svg',\n attributes: {\n style: 'display: none;'\n },\n children: [{\n tag: 'symbol',\n attributes: _objectSpread({}, attributes, {\n id: id\n }),\n children: children\n }]\n }];\n}\n\nfunction makeInlineSvgAbstract(params) {\n var _params$icons = params.icons,\n main = _params$icons.main,\n mask = _params$icons.mask,\n prefix = params.prefix,\n iconName = params.iconName,\n transform = params.transform,\n symbol = params.symbol,\n title = params.title,\n maskId = params.maskId,\n titleId = params.titleId,\n extra = params.extra,\n _params$watchable = params.watchable,\n watchable = _params$watchable === void 0 ? false : _params$watchable;\n\n var _ref = mask.found ? mask : main,\n width = _ref.width,\n height = _ref.height;\n\n var isUploadedIcon = prefix === 'fak';\n var widthClass = isUploadedIcon ? '' : \"fa-w-\".concat(Math.ceil(width / height * 16));\n var attrClass = [config.replacementClass, iconName ? \"\".concat(config.familyPrefix, \"-\").concat(iconName) : '', widthClass].filter(function (c) {\n return extra.classes.indexOf(c) === -1;\n }).filter(function (c) {\n return c !== '' || !!c;\n }).concat(extra.classes).join(' ');\n var content = {\n children: [],\n attributes: _objectSpread({}, extra.attributes, {\n 'data-prefix': prefix,\n 'data-icon': iconName,\n 'class': attrClass,\n 'role': extra.attributes.role || 'img',\n 'xmlns': 'http://www.w3.org/2000/svg',\n 'viewBox': \"0 0 \".concat(width, \" \").concat(height)\n })\n };\n var uploadedIconWidthStyle = isUploadedIcon && !~extra.classes.indexOf('fa-fw') ? {\n width: \"\".concat(width / height * 16 * 0.0625, \"em\")\n } : {};\n\n if (watchable) {\n content.attributes[DATA_FA_I2SVG] = '';\n }\n\n if (title) content.children.push({\n tag: 'title',\n attributes: {\n id: content.attributes['aria-labelledby'] || \"title-\".concat(titleId || nextUniqueId())\n },\n children: [title]\n });\n\n var args = _objectSpread({}, content, {\n prefix: prefix,\n iconName: iconName,\n main: main,\n mask: mask,\n maskId: maskId,\n transform: transform,\n symbol: symbol,\n styles: _objectSpread({}, uploadedIconWidthStyle, extra.styles)\n });\n\n var _ref2 = mask.found && main.found ? makeIconMasking(args) : makeIconStandard(args),\n children = _ref2.children,\n attributes = _ref2.attributes;\n\n args.children = children;\n args.attributes = attributes;\n\n if (symbol) {\n return asSymbol(args);\n } else {\n return asIcon(args);\n }\n}\nfunction makeLayersTextAbstract(params) {\n var content = params.content,\n width = params.width,\n height = params.height,\n transform = params.transform,\n title = params.title,\n extra = params.extra,\n _params$watchable2 = params.watchable,\n watchable = _params$watchable2 === void 0 ? false : _params$watchable2;\n\n var attributes = _objectSpread({}, extra.attributes, title ? {\n 'title': title\n } : {}, {\n 'class': extra.classes.join(' ')\n });\n\n if (watchable) {\n attributes[DATA_FA_I2SVG] = '';\n }\n\n var styles = _objectSpread({}, extra.styles);\n\n if (transformIsMeaningful(transform)) {\n styles['transform'] = transformForCss({\n transform: transform,\n startCentered: true,\n width: width,\n height: height\n });\n styles['-webkit-transform'] = styles['transform'];\n }\n\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\nfunction makeLayersCounterAbstract(params) {\n var content = params.content,\n title = params.title,\n extra = params.extra;\n\n var attributes = _objectSpread({}, extra.attributes, title ? {\n 'title': title\n } : {}, {\n 'class': extra.classes.join(' ')\n });\n\n var styleString = joinStyles(extra.styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\n\nvar noop$1 = function noop() {};\n\nvar p = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : {\n mark: noop$1,\n measure: noop$1\n};\nvar preamble = \"FA \\\"5.15.4\\\"\";\n\nvar begin = function begin(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" begins\"));\n return function () {\n return end(name);\n };\n};\n\nvar end = function end(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" ends\"));\n p.measure(\"\".concat(preamble, \" \").concat(name), \"\".concat(preamble, \" \").concat(name, \" begins\"), \"\".concat(preamble, \" \").concat(name, \" ends\"));\n};\n\nvar perf = {\n begin: begin,\n end: end\n};\n\n/**\n * Internal helper to bind a function known to have 4 arguments\n * to a given context.\n */\n\nvar bindInternal4 = function bindInternal4(func, thisContext) {\n return function (a, b, c, d) {\n return func.call(thisContext, a, b, c, d);\n };\n};\n\n/**\n * # Reduce\n *\n * A fast object `.reduce()` implementation.\n *\n * @param {Object} subject The object to reduce over.\n * @param {Function} fn The reducer function.\n * @param {mixed} initialValue The initial value for the reducer, defaults to subject[0].\n * @param {Object} thisContext The context for the reducer.\n * @return {mixed} The final result.\n */\n\n\nvar reduce = function fastReduceObject(subject, fn, initialValue, thisContext) {\n var keys = Object.keys(subject),\n length = keys.length,\n iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn,\n i,\n key,\n result;\n\n if (initialValue === undefined) {\n i = 1;\n result = subject[keys[0]];\n } else {\n i = 0;\n result = initialValue;\n }\n\n for (; i < length; i++) {\n key = keys[i];\n result = iterator(result, subject[key], key, subject);\n }\n\n return result;\n};\n\nfunction toHex(unicode) {\n var result = '';\n\n for (var i = 0; i < unicode.length; i++) {\n var hex = unicode.charCodeAt(i).toString(16);\n result += ('000' + hex).slice(-4);\n }\n\n return result;\n}\n\nfunction defineIcons(prefix, icons) {\n var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var _params$skipHooks = params.skipHooks,\n skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;\n var normalized = Object.keys(icons).reduce(function (acc, iconName) {\n var icon = icons[iconName];\n var expanded = !!icon.icon;\n\n if (expanded) {\n acc[icon.iconName] = icon.icon;\n } else {\n acc[iconName] = icon;\n }\n\n return acc;\n }, {});\n\n if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {\n namespace.hooks.addPack(prefix, normalized);\n } else {\n namespace.styles[prefix] = _objectSpread({}, namespace.styles[prefix] || {}, normalized);\n }\n /**\n * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction\n * of new styles we needed to differentiate between them. Prefix `fa` is now an alias\n * for `fas` so we'll easy the upgrade process for our users by automatically defining\n * this as well.\n */\n\n\n if (prefix === 'fas') {\n defineIcons('fa', icons);\n }\n}\n\nvar styles = namespace.styles,\n shims = namespace.shims;\nvar _byUnicode = {};\nvar _byLigature = {};\nvar _byOldName = {};\nvar build = function build() {\n var lookup = function lookup(reducer) {\n return reduce(styles, function (o, style, prefix) {\n o[prefix] = reduce(style, reducer, {});\n return o;\n }, {});\n };\n\n _byUnicode = lookup(function (acc, icon, iconName) {\n if (icon[3]) {\n acc[icon[3]] = iconName;\n }\n\n return acc;\n });\n _byLigature = lookup(function (acc, icon, iconName) {\n var ligatures = icon[2];\n acc[iconName] = iconName;\n ligatures.forEach(function (ligature) {\n acc[ligature] = iconName;\n });\n return acc;\n });\n var hasRegular = 'far' in styles;\n _byOldName = reduce(shims, function (acc, shim) {\n var oldName = shim[0];\n var prefix = shim[1];\n var iconName = shim[2];\n\n if (prefix === 'far' && !hasRegular) {\n prefix = 'fas';\n }\n\n acc[oldName] = {\n prefix: prefix,\n iconName: iconName\n };\n return acc;\n }, {});\n};\nbuild();\nfunction byUnicode(prefix, unicode) {\n return (_byUnicode[prefix] || {})[unicode];\n}\nfunction byLigature(prefix, ligature) {\n return (_byLigature[prefix] || {})[ligature];\n}\nfunction byOldName(name) {\n return _byOldName[name] || {\n prefix: null,\n iconName: null\n };\n}\n\nvar styles$1 = namespace.styles;\nvar emptyCanonicalIcon = function emptyCanonicalIcon() {\n return {\n prefix: null,\n iconName: null,\n rest: []\n };\n};\nfunction getCanonicalIcon(values) {\n return values.reduce(function (acc, cls) {\n var iconName = getIconName(config.familyPrefix, cls);\n\n if (styles$1[cls]) {\n acc.prefix = cls;\n } else if (config.autoFetchSvg && Object.keys(PREFIX_TO_STYLE).indexOf(cls) > -1) {\n acc.prefix = cls;\n } else if (iconName) {\n var shim = acc.prefix === 'fa' ? byOldName(iconName) : {};\n acc.iconName = shim.iconName || iconName;\n acc.prefix = shim.prefix || acc.prefix;\n } else if (cls !== config.replacementClass && cls.indexOf('fa-w-') !== 0) {\n acc.rest.push(cls);\n }\n\n return acc;\n }, emptyCanonicalIcon());\n}\nfunction iconFromMapping(mapping, prefix, iconName) {\n if (mapping && mapping[prefix] && mapping[prefix][iconName]) {\n return {\n prefix: prefix,\n iconName: iconName,\n icon: mapping[prefix][iconName]\n };\n }\n}\n\nfunction toHtml(abstractNodes) {\n var tag = abstractNodes.tag,\n _abstractNodes$attrib = abstractNodes.attributes,\n attributes = _abstractNodes$attrib === void 0 ? {} : _abstractNodes$attrib,\n _abstractNodes$childr = abstractNodes.children,\n children = _abstractNodes$childr === void 0 ? [] : _abstractNodes$childr;\n\n if (typeof abstractNodes === 'string') {\n return htmlEscape(abstractNodes);\n } else {\n return \"<\".concat(tag, \" \").concat(joinAttributes(attributes), \">\").concat(children.map(toHtml).join(''), \"\");\n }\n}\n\nvar noop$2 = function noop() {};\n\nfunction isWatched(node) {\n var i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;\n return typeof i2svg === 'string';\n}\n\nfunction getMutator() {\n if (config.autoReplaceSvg === true) {\n return mutators.replace;\n }\n\n var mutator = mutators[config.autoReplaceSvg];\n return mutator || mutators.replace;\n}\n\nvar mutators = {\n replace: function replace(mutation) {\n var node = mutation[0];\n var abstract = mutation[1];\n var newOuterHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n\n if (node.parentNode && node.outerHTML) {\n node.outerHTML = newOuterHTML + (config.keepOriginalSource && node.tagName.toLowerCase() !== 'svg' ? \"\") : '');\n } else if (node.parentNode) {\n var newNode = document.createElement('span');\n node.parentNode.replaceChild(newNode, node);\n newNode.outerHTML = newOuterHTML;\n }\n },\n nest: function nest(mutation) {\n var node = mutation[0];\n var abstract = mutation[1]; // If we already have a replaced node we do not want to continue nesting within it.\n // Short-circuit to the standard replacement\n\n if (~classArray(node).indexOf(config.replacementClass)) {\n return mutators.replace(mutation);\n }\n\n var forSvg = new RegExp(\"\".concat(config.familyPrefix, \"-.*\"));\n delete abstract[0].attributes.style;\n delete abstract[0].attributes.id;\n var splitClasses = abstract[0].attributes.class.split(' ').reduce(function (acc, cls) {\n if (cls === config.replacementClass || cls.match(forSvg)) {\n acc.toSvg.push(cls);\n } else {\n acc.toNode.push(cls);\n }\n\n return acc;\n }, {\n toNode: [],\n toSvg: []\n });\n abstract[0].attributes.class = splitClasses.toSvg.join(' ');\n var newInnerHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.setAttribute('class', splitClasses.toNode.join(' '));\n node.setAttribute(DATA_FA_I2SVG, '');\n node.innerHTML = newInnerHTML;\n }\n};\n\nfunction performOperationSync(op) {\n op();\n}\n\nfunction perform(mutations, callback) {\n var callbackFunction = typeof callback === 'function' ? callback : noop$2;\n\n if (mutations.length === 0) {\n callbackFunction();\n } else {\n var frame = performOperationSync;\n\n if (config.mutateApproach === MUTATION_APPROACH_ASYNC) {\n frame = WINDOW.requestAnimationFrame || performOperationSync;\n }\n\n frame(function () {\n var mutator = getMutator();\n var mark = perf.begin('mutate');\n mutations.map(mutator);\n mark();\n callbackFunction();\n });\n }\n}\nvar disabled = false;\nfunction disableObservation() {\n disabled = true;\n}\nfunction enableObservation() {\n disabled = false;\n}\nvar mo = null;\nfunction observe(options) {\n if (!MUTATION_OBSERVER) {\n return;\n }\n\n if (!config.observeMutations) {\n return;\n }\n\n var treeCallback = options.treeCallback,\n nodeCallback = options.nodeCallback,\n pseudoElementsCallback = options.pseudoElementsCallback,\n _options$observeMutat = options.observeMutationsRoot,\n observeMutationsRoot = _options$observeMutat === void 0 ? DOCUMENT : _options$observeMutat;\n mo = new MUTATION_OBSERVER(function (objects) {\n if (disabled) return;\n toArray(objects).forEach(function (mutationRecord) {\n if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) {\n if (config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target);\n }\n\n treeCallback(mutationRecord.target);\n }\n\n if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target.parentNode);\n }\n\n if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) {\n if (mutationRecord.attributeName === 'class') {\n var _getCanonicalIcon = getCanonicalIcon(classArray(mutationRecord.target)),\n prefix = _getCanonicalIcon.prefix,\n iconName = _getCanonicalIcon.iconName;\n\n if (prefix) mutationRecord.target.setAttribute('data-prefix', prefix);\n if (iconName) mutationRecord.target.setAttribute('data-icon', iconName);\n } else {\n nodeCallback(mutationRecord.target);\n }\n }\n });\n });\n if (!IS_DOM) return;\n mo.observe(observeMutationsRoot, {\n childList: true,\n attributes: true,\n characterData: true,\n subtree: true\n });\n}\nfunction disconnect() {\n if (!mo) return;\n mo.disconnect();\n}\n\nfunction styleParser (node) {\n var style = node.getAttribute('style');\n var val = [];\n\n if (style) {\n val = style.split(';').reduce(function (acc, style) {\n var styles = style.split(':');\n var prop = styles[0];\n var value = styles.slice(1);\n\n if (prop && value.length > 0) {\n acc[prop] = value.join(':').trim();\n }\n\n return acc;\n }, {});\n }\n\n return val;\n}\n\nfunction classParser (node) {\n var existingPrefix = node.getAttribute('data-prefix');\n var existingIconName = node.getAttribute('data-icon');\n var innerText = node.innerText !== undefined ? node.innerText.trim() : '';\n var val = getCanonicalIcon(classArray(node));\n\n if (existingPrefix && existingIconName) {\n val.prefix = existingPrefix;\n val.iconName = existingIconName;\n }\n\n if (val.prefix && innerText.length > 1) {\n val.iconName = byLigature(val.prefix, node.innerText);\n } else if (val.prefix && innerText.length === 1) {\n val.iconName = byUnicode(val.prefix, toHex(node.innerText));\n }\n\n return val;\n}\n\nvar parseTransformString = function parseTransformString(transformString) {\n var transform = {\n size: 16,\n x: 0,\n y: 0,\n flipX: false,\n flipY: false,\n rotate: 0\n };\n\n if (!transformString) {\n return transform;\n } else {\n return transformString.toLowerCase().split(' ').reduce(function (acc, n) {\n var parts = n.toLowerCase().split('-');\n var first = parts[0];\n var rest = parts.slice(1).join('-');\n\n if (first && rest === 'h') {\n acc.flipX = true;\n return acc;\n }\n\n if (first && rest === 'v') {\n acc.flipY = true;\n return acc;\n }\n\n rest = parseFloat(rest);\n\n if (isNaN(rest)) {\n return acc;\n }\n\n switch (first) {\n case 'grow':\n acc.size = acc.size + rest;\n break;\n\n case 'shrink':\n acc.size = acc.size - rest;\n break;\n\n case 'left':\n acc.x = acc.x - rest;\n break;\n\n case 'right':\n acc.x = acc.x + rest;\n break;\n\n case 'up':\n acc.y = acc.y - rest;\n break;\n\n case 'down':\n acc.y = acc.y + rest;\n break;\n\n case 'rotate':\n acc.rotate = acc.rotate + rest;\n break;\n }\n\n return acc;\n }, transform);\n }\n};\nfunction transformParser (node) {\n return parseTransformString(node.getAttribute('data-fa-transform'));\n}\n\nfunction symbolParser (node) {\n var symbol = node.getAttribute('data-fa-symbol');\n return symbol === null ? false : symbol === '' ? true : symbol;\n}\n\nfunction attributesParser (node) {\n var extraAttributes = toArray(node.attributes).reduce(function (acc, attr) {\n if (acc.name !== 'class' && acc.name !== 'style') {\n acc[attr.name] = attr.value;\n }\n\n return acc;\n }, {});\n var title = node.getAttribute('title');\n var titleId = node.getAttribute('data-fa-title-id');\n\n if (config.autoA11y) {\n if (title) {\n extraAttributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n extraAttributes['aria-hidden'] = 'true';\n extraAttributes['focusable'] = 'false';\n }\n }\n\n return extraAttributes;\n}\n\nfunction maskParser (node) {\n var mask = node.getAttribute('data-fa-mask');\n\n if (!mask) {\n return emptyCanonicalIcon();\n } else {\n return getCanonicalIcon(mask.split(' ').map(function (i) {\n return i.trim();\n }));\n }\n}\n\nfunction blankMeta() {\n return {\n iconName: null,\n title: null,\n titleId: null,\n prefix: null,\n transform: meaninglessTransform,\n symbol: false,\n mask: null,\n maskId: null,\n extra: {\n classes: [],\n styles: {},\n attributes: {}\n }\n };\n}\nfunction parseMeta(node) {\n var _classParser = classParser(node),\n iconName = _classParser.iconName,\n prefix = _classParser.prefix,\n extraClasses = _classParser.rest;\n\n var extraStyles = styleParser(node);\n var transform = transformParser(node);\n var symbol = symbolParser(node);\n var extraAttributes = attributesParser(node);\n var mask = maskParser(node);\n return {\n iconName: iconName,\n title: node.getAttribute('title'),\n titleId: node.getAttribute('data-fa-title-id'),\n prefix: prefix,\n transform: transform,\n symbol: symbol,\n mask: mask,\n maskId: node.getAttribute('data-fa-mask-id'),\n extra: {\n classes: extraClasses,\n styles: extraStyles,\n attributes: extraAttributes\n }\n };\n}\n\nfunction MissingIcon(error) {\n this.name = 'MissingIcon';\n this.message = error || 'Icon unavailable';\n this.stack = new Error().stack;\n}\nMissingIcon.prototype = Object.create(Error.prototype);\nMissingIcon.prototype.constructor = MissingIcon;\n\nvar FILL = {\n fill: 'currentColor'\n};\nvar ANIMATION_BASE = {\n attributeType: 'XML',\n repeatCount: 'indefinite',\n dur: '2s'\n};\nvar RING = {\n tag: 'path',\n attributes: _objectSpread({}, FILL, {\n d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z'\n })\n};\n\nvar OPACITY_ANIMATE = _objectSpread({}, ANIMATION_BASE, {\n attributeName: 'opacity'\n});\n\nvar DOT = {\n tag: 'circle',\n attributes: _objectSpread({}, FILL, {\n cx: '256',\n cy: '364',\n r: '28'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread({}, ANIMATION_BASE, {\n attributeName: 'r',\n values: '28;14;28;28;14;28;'\n })\n }, {\n tag: 'animate',\n attributes: _objectSpread({}, OPACITY_ANIMATE, {\n values: '1;0;1;1;0;1;'\n })\n }]\n};\nvar QUESTION = {\n tag: 'path',\n attributes: _objectSpread({}, FILL, {\n opacity: '1',\n d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread({}, OPACITY_ANIMATE, {\n values: '1;0;0;0;0;1;'\n })\n }]\n};\nvar EXCLAMATION = {\n tag: 'path',\n attributes: _objectSpread({}, FILL, {\n opacity: '0',\n d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread({}, OPACITY_ANIMATE, {\n values: '0;0;1;1;0;0;'\n })\n }]\n};\nvar missing = {\n tag: 'g',\n children: [RING, DOT, QUESTION, EXCLAMATION]\n};\n\nvar styles$2 = namespace.styles;\nfunction asFoundIcon(icon) {\n var width = icon[0];\n var height = icon[1];\n\n var _icon$slice = icon.slice(4),\n _icon$slice2 = _slicedToArray(_icon$slice, 1),\n vectorData = _icon$slice2[0];\n\n var element = null;\n\n if (Array.isArray(vectorData)) {\n element = {\n tag: 'g',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.GROUP)\n },\n children: [{\n tag: 'path',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.SECONDARY),\n fill: 'currentColor',\n d: vectorData[0]\n }\n }, {\n tag: 'path',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.PRIMARY),\n fill: 'currentColor',\n d: vectorData[1]\n }\n }]\n };\n } else {\n element = {\n tag: 'path',\n attributes: {\n fill: 'currentColor',\n d: vectorData\n }\n };\n }\n\n return {\n found: true,\n width: width,\n height: height,\n icon: element\n };\n}\nfunction findIcon(iconName, prefix) {\n return new picked(function (resolve, reject) {\n var val = {\n found: false,\n width: 512,\n height: 512,\n icon: missing\n };\n\n if (iconName && prefix && styles$2[prefix] && styles$2[prefix][iconName]) {\n var icon = styles$2[prefix][iconName];\n return resolve(asFoundIcon(icon));\n }\n\n if (iconName && prefix && !config.showMissingIcons) {\n reject(new MissingIcon(\"Icon is missing for prefix \".concat(prefix, \" with icon name \").concat(iconName)));\n } else {\n resolve(val);\n }\n });\n}\n\nvar styles$3 = namespace.styles;\n\nfunction generateSvgReplacementMutation(node, nodeMeta) {\n var iconName = nodeMeta.iconName,\n title = nodeMeta.title,\n titleId = nodeMeta.titleId,\n prefix = nodeMeta.prefix,\n transform = nodeMeta.transform,\n symbol = nodeMeta.symbol,\n mask = nodeMeta.mask,\n maskId = nodeMeta.maskId,\n extra = nodeMeta.extra;\n return new picked(function (resolve, reject) {\n picked.all([findIcon(iconName, prefix), findIcon(mask.iconName, mask.prefix)]).then(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n main = _ref2[0],\n mask = _ref2[1];\n\n resolve([node, makeInlineSvgAbstract({\n icons: {\n main: main,\n mask: mask\n },\n prefix: prefix,\n iconName: iconName,\n transform: transform,\n symbol: symbol,\n mask: mask,\n maskId: maskId,\n title: title,\n titleId: titleId,\n extra: extra,\n watchable: true\n })]);\n });\n });\n}\n\nfunction generateLayersText(node, nodeMeta) {\n var title = nodeMeta.title,\n transform = nodeMeta.transform,\n extra = nodeMeta.extra;\n var width = null;\n var height = null;\n\n if (IS_IE) {\n var computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);\n var boundingClientRect = node.getBoundingClientRect();\n width = boundingClientRect.width / computedFontSize;\n height = boundingClientRect.height / computedFontSize;\n }\n\n if (config.autoA11y && !title) {\n extra.attributes['aria-hidden'] = 'true';\n }\n\n return picked.resolve([node, makeLayersTextAbstract({\n content: node.innerHTML,\n width: width,\n height: height,\n transform: transform,\n title: title,\n extra: extra,\n watchable: true\n })]);\n}\n\nfunction generateMutation(node) {\n var nodeMeta = parseMeta(node);\n\n if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) {\n return generateLayersText(node, nodeMeta);\n } else {\n return generateSvgReplacementMutation(node, nodeMeta);\n }\n}\n\nfunction onTree(root) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n if (!IS_DOM) return;\n var htmlClassList = DOCUMENT.documentElement.classList;\n\n var hclAdd = function hclAdd(suffix) {\n return htmlClassList.add(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n\n var hclRemove = function hclRemove(suffix) {\n return htmlClassList.remove(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n\n var prefixes = config.autoFetchSvg ? Object.keys(PREFIX_TO_STYLE) : Object.keys(styles$3);\n var prefixesDomQuery = [\".\".concat(LAYERS_TEXT_CLASSNAME, \":not([\").concat(DATA_FA_I2SVG, \"])\")].concat(prefixes.map(function (p) {\n return \".\".concat(p, \":not([\").concat(DATA_FA_I2SVG, \"])\");\n })).join(', ');\n\n if (prefixesDomQuery.length === 0) {\n return;\n }\n\n var candidates = [];\n\n try {\n candidates = toArray(root.querySelectorAll(prefixesDomQuery));\n } catch (e) {// noop\n }\n\n if (candidates.length > 0) {\n hclAdd('pending');\n hclRemove('complete');\n } else {\n return;\n }\n\n var mark = perf.begin('onTree');\n var mutations = candidates.reduce(function (acc, node) {\n try {\n var mutation = generateMutation(node);\n\n if (mutation) {\n acc.push(mutation);\n }\n } catch (e) {\n if (!PRODUCTION) {\n if (e instanceof MissingIcon) {\n console.error(e);\n }\n }\n }\n\n return acc;\n }, []);\n return new picked(function (resolve, reject) {\n picked.all(mutations).then(function (resolvedMutations) {\n perform(resolvedMutations, function () {\n hclAdd('active');\n hclAdd('complete');\n hclRemove('pending');\n if (typeof callback === 'function') callback();\n mark();\n resolve();\n });\n }).catch(function () {\n mark();\n reject();\n });\n });\n}\nfunction onNode(node) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n generateMutation(node).then(function (mutation) {\n if (mutation) {\n perform([mutation], callback);\n }\n });\n}\n\nfunction replaceForPosition(node, position) {\n var pendingAttribute = \"\".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-'));\n return new picked(function (resolve, reject) {\n if (node.getAttribute(pendingAttribute) !== null) {\n // This node is already being processed\n return resolve();\n }\n\n var children = toArray(node.children);\n var alreadyProcessedPseudoElement = children.filter(function (c) {\n return c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position;\n })[0];\n var styles = WINDOW.getComputedStyle(node, position);\n var fontFamily = styles.getPropertyValue('font-family').match(FONT_FAMILY_PATTERN);\n var fontWeight = styles.getPropertyValue('font-weight');\n var content = styles.getPropertyValue('content');\n\n if (alreadyProcessedPseudoElement && !fontFamily) {\n // If we've already processed it but the current computed style does not result in a font-family,\n // that probably means that a class name that was previously present to make the icon has been\n // removed. So we now should delete the icon.\n node.removeChild(alreadyProcessedPseudoElement);\n return resolve();\n } else if (fontFamily && content !== 'none' && content !== '') {\n var _content = styles.getPropertyValue('content');\n\n var prefix = ~['Solid', 'Regular', 'Light', 'Duotone', 'Brands', 'Kit'].indexOf(fontFamily[2]) ? STYLE_TO_PREFIX[fontFamily[2].toLowerCase()] : FONT_WEIGHT_TO_PREFIX[fontWeight];\n var hexValue = toHex(_content.length === 3 ? _content.substr(1, 1) : _content);\n var iconName = byUnicode(prefix, hexValue);\n var iconIdentifier = iconName; // Only convert the pseudo element in this :before/:after position into an icon if we haven't\n // already done so with the same prefix and iconName\n\n if (iconName && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) {\n node.setAttribute(pendingAttribute, iconIdentifier);\n\n if (alreadyProcessedPseudoElement) {\n // Delete the old one, since we're replacing it with a new one\n node.removeChild(alreadyProcessedPseudoElement);\n }\n\n var meta = blankMeta();\n var extra = meta.extra;\n extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position;\n findIcon(iconName, prefix).then(function (main) {\n var abstract = makeInlineSvgAbstract(_objectSpread({}, meta, {\n icons: {\n main: main,\n mask: emptyCanonicalIcon()\n },\n prefix: prefix,\n iconName: iconIdentifier,\n extra: extra,\n watchable: true\n }));\n var element = DOCUMENT.createElement('svg');\n\n if (position === ':before') {\n node.insertBefore(element, node.firstChild);\n } else {\n node.appendChild(element);\n }\n\n element.outerHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.removeAttribute(pendingAttribute);\n resolve();\n }).catch(reject);\n } else {\n resolve();\n }\n } else {\n resolve();\n }\n });\n}\n\nfunction replace(node) {\n return picked.all([replaceForPosition(node, ':before'), replaceForPosition(node, ':after')]);\n}\n\nfunction processable(node) {\n return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg');\n}\n\nfunction searchPseudoElements (root) {\n if (!IS_DOM) return;\n return new picked(function (resolve, reject) {\n var operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace);\n var end = perf.begin('searchPseudoElements');\n disableObservation();\n picked.all(operations).then(function () {\n end();\n enableObservation();\n resolve();\n }).catch(function () {\n end();\n enableObservation();\n reject();\n });\n });\n}\n\nvar baseStyles = \"svg:not(:root).svg-inline--fa {\\n overflow: visible;\\n}\\n\\n.svg-inline--fa {\\n display: inline-block;\\n font-size: inherit;\\n height: 1em;\\n overflow: visible;\\n vertical-align: -0.125em;\\n}\\n.svg-inline--fa.fa-lg {\\n vertical-align: -0.225em;\\n}\\n.svg-inline--fa.fa-w-1 {\\n width: 0.0625em;\\n}\\n.svg-inline--fa.fa-w-2 {\\n width: 0.125em;\\n}\\n.svg-inline--fa.fa-w-3 {\\n width: 0.1875em;\\n}\\n.svg-inline--fa.fa-w-4 {\\n width: 0.25em;\\n}\\n.svg-inline--fa.fa-w-5 {\\n width: 0.3125em;\\n}\\n.svg-inline--fa.fa-w-6 {\\n width: 0.375em;\\n}\\n.svg-inline--fa.fa-w-7 {\\n width: 0.4375em;\\n}\\n.svg-inline--fa.fa-w-8 {\\n width: 0.5em;\\n}\\n.svg-inline--fa.fa-w-9 {\\n width: 0.5625em;\\n}\\n.svg-inline--fa.fa-w-10 {\\n width: 0.625em;\\n}\\n.svg-inline--fa.fa-w-11 {\\n width: 0.6875em;\\n}\\n.svg-inline--fa.fa-w-12 {\\n width: 0.75em;\\n}\\n.svg-inline--fa.fa-w-13 {\\n width: 0.8125em;\\n}\\n.svg-inline--fa.fa-w-14 {\\n width: 0.875em;\\n}\\n.svg-inline--fa.fa-w-15 {\\n width: 0.9375em;\\n}\\n.svg-inline--fa.fa-w-16 {\\n width: 1em;\\n}\\n.svg-inline--fa.fa-w-17 {\\n width: 1.0625em;\\n}\\n.svg-inline--fa.fa-w-18 {\\n width: 1.125em;\\n}\\n.svg-inline--fa.fa-w-19 {\\n width: 1.1875em;\\n}\\n.svg-inline--fa.fa-w-20 {\\n width: 1.25em;\\n}\\n.svg-inline--fa.fa-pull-left {\\n margin-right: 0.3em;\\n width: auto;\\n}\\n.svg-inline--fa.fa-pull-right {\\n margin-left: 0.3em;\\n width: auto;\\n}\\n.svg-inline--fa.fa-border {\\n height: 1.5em;\\n}\\n.svg-inline--fa.fa-li {\\n width: 2em;\\n}\\n.svg-inline--fa.fa-fw {\\n width: 1.25em;\\n}\\n\\n.fa-layers svg.svg-inline--fa {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n\\n.fa-layers {\\n display: inline-block;\\n height: 1em;\\n position: relative;\\n text-align: center;\\n vertical-align: -0.125em;\\n width: 1em;\\n}\\n.fa-layers svg.svg-inline--fa {\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-counter, .fa-layers-text {\\n display: inline-block;\\n position: absolute;\\n text-align: center;\\n}\\n\\n.fa-layers-text {\\n left: 50%;\\n top: 50%;\\n -webkit-transform: translate(-50%, -50%);\\n transform: translate(-50%, -50%);\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-counter {\\n background-color: #ff253a;\\n border-radius: 1em;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n color: #fff;\\n height: 1.5em;\\n line-height: 1;\\n max-width: 5em;\\n min-width: 1.5em;\\n overflow: hidden;\\n padding: 0.25em;\\n right: 0;\\n text-overflow: ellipsis;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-bottom-right {\\n bottom: 0;\\n right: 0;\\n top: auto;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: bottom right;\\n transform-origin: bottom right;\\n}\\n\\n.fa-layers-bottom-left {\\n bottom: 0;\\n left: 0;\\n right: auto;\\n top: auto;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: bottom left;\\n transform-origin: bottom left;\\n}\\n\\n.fa-layers-top-right {\\n right: 0;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-top-left {\\n left: 0;\\n right: auto;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top left;\\n transform-origin: top left;\\n}\\n\\n.fa-lg {\\n font-size: 1.3333333333em;\\n line-height: 0.75em;\\n vertical-align: -0.0667em;\\n}\\n\\n.fa-xs {\\n font-size: 0.75em;\\n}\\n\\n.fa-sm {\\n font-size: 0.875em;\\n}\\n\\n.fa-1x {\\n font-size: 1em;\\n}\\n\\n.fa-2x {\\n font-size: 2em;\\n}\\n\\n.fa-3x {\\n font-size: 3em;\\n}\\n\\n.fa-4x {\\n font-size: 4em;\\n}\\n\\n.fa-5x {\\n font-size: 5em;\\n}\\n\\n.fa-6x {\\n font-size: 6em;\\n}\\n\\n.fa-7x {\\n font-size: 7em;\\n}\\n\\n.fa-8x {\\n font-size: 8em;\\n}\\n\\n.fa-9x {\\n font-size: 9em;\\n}\\n\\n.fa-10x {\\n font-size: 10em;\\n}\\n\\n.fa-fw {\\n text-align: center;\\n width: 1.25em;\\n}\\n\\n.fa-ul {\\n list-style-type: none;\\n margin-left: 2.5em;\\n padding-left: 0;\\n}\\n.fa-ul > li {\\n position: relative;\\n}\\n\\n.fa-li {\\n left: -2em;\\n position: absolute;\\n text-align: center;\\n width: 2em;\\n line-height: inherit;\\n}\\n\\n.fa-border {\\n border: solid 0.08em #eee;\\n border-radius: 0.1em;\\n padding: 0.2em 0.25em 0.15em;\\n}\\n\\n.fa-pull-left {\\n float: left;\\n}\\n\\n.fa-pull-right {\\n float: right;\\n}\\n\\n.fa.fa-pull-left,\\n.fas.fa-pull-left,\\n.far.fa-pull-left,\\n.fal.fa-pull-left,\\n.fab.fa-pull-left {\\n margin-right: 0.3em;\\n}\\n.fa.fa-pull-right,\\n.fas.fa-pull-right,\\n.far.fa-pull-right,\\n.fal.fa-pull-right,\\n.fab.fa-pull-right {\\n margin-left: 0.3em;\\n}\\n\\n.fa-spin {\\n -webkit-animation: fa-spin 2s infinite linear;\\n animation: fa-spin 2s infinite linear;\\n}\\n\\n.fa-pulse {\\n -webkit-animation: fa-spin 1s infinite steps(8);\\n animation: fa-spin 1s infinite steps(8);\\n}\\n\\n@-webkit-keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n\\n@keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n.fa-rotate-90 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\\\";\\n -webkit-transform: rotate(90deg);\\n transform: rotate(90deg);\\n}\\n\\n.fa-rotate-180 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\\\";\\n -webkit-transform: rotate(180deg);\\n transform: rotate(180deg);\\n}\\n\\n.fa-rotate-270 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\\\";\\n -webkit-transform: rotate(270deg);\\n transform: rotate(270deg);\\n}\\n\\n.fa-flip-horizontal {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\\\";\\n -webkit-transform: scale(-1, 1);\\n transform: scale(-1, 1);\\n}\\n\\n.fa-flip-vertical {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\\\";\\n -webkit-transform: scale(1, -1);\\n transform: scale(1, -1);\\n}\\n\\n.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\\\";\\n -webkit-transform: scale(-1, -1);\\n transform: scale(-1, -1);\\n}\\n\\n:root .fa-rotate-90,\\n:root .fa-rotate-180,\\n:root .fa-rotate-270,\\n:root .fa-flip-horizontal,\\n:root .fa-flip-vertical,\\n:root .fa-flip-both {\\n -webkit-filter: none;\\n filter: none;\\n}\\n\\n.fa-stack {\\n display: inline-block;\\n height: 2em;\\n position: relative;\\n width: 2.5em;\\n}\\n\\n.fa-stack-1x,\\n.fa-stack-2x {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n\\n.svg-inline--fa.fa-stack-1x {\\n height: 1em;\\n width: 1.25em;\\n}\\n.svg-inline--fa.fa-stack-2x {\\n height: 2em;\\n width: 2.5em;\\n}\\n\\n.fa-inverse {\\n color: #fff;\\n}\\n\\n.sr-only {\\n border: 0;\\n clip: rect(0, 0, 0, 0);\\n height: 1px;\\n margin: -1px;\\n overflow: hidden;\\n padding: 0;\\n position: absolute;\\n width: 1px;\\n}\\n\\n.sr-only-focusable:active, .sr-only-focusable:focus {\\n clip: auto;\\n height: auto;\\n margin: 0;\\n overflow: visible;\\n position: static;\\n width: auto;\\n}\\n\\n.svg-inline--fa .fa-primary {\\n fill: var(--fa-primary-color, currentColor);\\n opacity: 1;\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa .fa-secondary {\\n fill: var(--fa-secondary-color, currentColor);\\n opacity: 0.4;\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-primary {\\n opacity: 0.4;\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\\n opacity: 1;\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa mask .fa-primary,\\n.svg-inline--fa mask .fa-secondary {\\n fill: black;\\n}\\n\\n.fad.fa-inverse {\\n color: #fff;\\n}\";\n\nfunction css () {\n var dfp = DEFAULT_FAMILY_PREFIX;\n var drc = DEFAULT_REPLACEMENT_CLASS;\n var fp = config.familyPrefix;\n var rc = config.replacementClass;\n var s = baseStyles;\n\n if (fp !== dfp || rc !== drc) {\n var dPatt = new RegExp(\"\\\\.\".concat(dfp, \"\\\\-\"), 'g');\n var customPropPatt = new RegExp(\"\\\\--\".concat(dfp, \"\\\\-\"), 'g');\n var rPatt = new RegExp(\"\\\\.\".concat(drc), 'g');\n s = s.replace(dPatt, \".\".concat(fp, \"-\")).replace(customPropPatt, \"--\".concat(fp, \"-\")).replace(rPatt, \".\".concat(rc));\n }\n\n return s;\n}\n\nvar Library =\n/*#__PURE__*/\nfunction () {\n function Library() {\n _classCallCheck(this, Library);\n\n this.definitions = {};\n }\n\n _createClass(Library, [{\n key: \"add\",\n value: function add() {\n var _this = this;\n\n for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) {\n definitions[_key] = arguments[_key];\n }\n\n var additions = definitions.reduce(this._pullDefinitions, {});\n Object.keys(additions).forEach(function (key) {\n _this.definitions[key] = _objectSpread({}, _this.definitions[key] || {}, additions[key]);\n defineIcons(key, additions[key]);\n build();\n });\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.definitions = {};\n }\n }, {\n key: \"_pullDefinitions\",\n value: function _pullDefinitions(additions, definition) {\n var normalized = definition.prefix && definition.iconName && definition.icon ? {\n 0: definition\n } : definition;\n Object.keys(normalized).map(function (key) {\n var _normalized$key = normalized[key],\n prefix = _normalized$key.prefix,\n iconName = _normalized$key.iconName,\n icon = _normalized$key.icon;\n if (!additions[prefix]) additions[prefix] = {};\n additions[prefix][iconName] = icon;\n });\n return additions;\n }\n }]);\n\n return Library;\n}();\n\nfunction ensureCss() {\n if (config.autoAddCss && !_cssInserted) {\n insertCss(css());\n\n _cssInserted = true;\n }\n}\n\nfunction apiObject(val, abstractCreator) {\n Object.defineProperty(val, 'abstract', {\n get: abstractCreator\n });\n Object.defineProperty(val, 'html', {\n get: function get() {\n return val.abstract.map(function (a) {\n return toHtml(a);\n });\n }\n });\n Object.defineProperty(val, 'node', {\n get: function get() {\n if (!IS_DOM) return;\n var container = DOCUMENT.createElement('div');\n container.innerHTML = val.html;\n return container.children;\n }\n });\n return val;\n}\n\nfunction findIconDefinition(iconLookup) {\n var _iconLookup$prefix = iconLookup.prefix,\n prefix = _iconLookup$prefix === void 0 ? 'fa' : _iconLookup$prefix,\n iconName = iconLookup.iconName;\n if (!iconName) return;\n return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName);\n}\n\nfunction resolveIcons(next) {\n return function (maybeIconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {});\n var mask = params.mask;\n\n if (mask) {\n mask = (mask || {}).icon ? mask : findIconDefinition(mask || {});\n }\n\n return next(iconDefinition, _objectSpread({}, params, {\n mask: mask\n }));\n };\n}\n\nvar library = new Library();\nvar noAuto = function noAuto() {\n config.autoReplaceSvg = false;\n config.observeMutations = false;\n disconnect();\n};\nvar _cssInserted = false;\nvar dom = {\n i2svg: function i2svg() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (IS_DOM) {\n ensureCss();\n var _params$node = params.node,\n node = _params$node === void 0 ? DOCUMENT : _params$node,\n _params$callback = params.callback,\n callback = _params$callback === void 0 ? function () {} : _params$callback;\n\n if (config.searchPseudoElements) {\n searchPseudoElements(node);\n }\n\n return onTree(node, callback);\n } else {\n return picked.reject('Operation requires a DOM of some kind.');\n }\n },\n css: css,\n insertCss: function insertCss$$1() {\n if (!_cssInserted) {\n insertCss(css());\n\n _cssInserted = true;\n }\n },\n watch: function watch() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var autoReplaceSvgRoot = params.autoReplaceSvgRoot,\n observeMutationsRoot = params.observeMutationsRoot;\n\n if (config.autoReplaceSvg === false) {\n config.autoReplaceSvg = true;\n }\n\n config.observeMutations = true;\n domready(function () {\n autoReplace({\n autoReplaceSvgRoot: autoReplaceSvgRoot\n });\n observe({\n treeCallback: onTree,\n nodeCallback: onNode,\n pseudoElementsCallback: searchPseudoElements,\n observeMutationsRoot: observeMutationsRoot\n });\n });\n }\n};\nvar parse = {\n transform: function transform(transformString) {\n return parseTransformString(transformString);\n }\n};\nvar icon = resolveIcons(function (iconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform = params.transform,\n transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,\n _params$symbol = params.symbol,\n symbol = _params$symbol === void 0 ? false : _params$symbol,\n _params$mask = params.mask,\n mask = _params$mask === void 0 ? null : _params$mask,\n _params$maskId = params.maskId,\n maskId = _params$maskId === void 0 ? null : _params$maskId,\n _params$title = params.title,\n title = _params$title === void 0 ? null : _params$title,\n _params$titleId = params.titleId,\n titleId = _params$titleId === void 0 ? null : _params$titleId,\n _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === void 0 ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === void 0 ? {} : _params$styles;\n if (!iconDefinition) return;\n var prefix = iconDefinition.prefix,\n iconName = iconDefinition.iconName,\n icon = iconDefinition.icon;\n return apiObject(_objectSpread({\n type: 'icon'\n }, iconDefinition), function () {\n ensureCss();\n\n if (config.autoA11y) {\n if (title) {\n attributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n attributes['aria-hidden'] = 'true';\n attributes['focusable'] = 'false';\n }\n }\n\n return makeInlineSvgAbstract({\n icons: {\n main: asFoundIcon(icon),\n mask: mask ? asFoundIcon(mask.icon) : {\n found: false,\n width: null,\n height: null,\n icon: {}\n }\n },\n prefix: prefix,\n iconName: iconName,\n transform: _objectSpread({}, meaninglessTransform, transform),\n symbol: symbol,\n title: title,\n maskId: maskId,\n titleId: titleId,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: classes\n }\n });\n });\n});\nvar text = function text(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform2 = params.transform,\n transform = _params$transform2 === void 0 ? meaninglessTransform : _params$transform2,\n _params$title2 = params.title,\n title = _params$title2 === void 0 ? null : _params$title2,\n _params$classes2 = params.classes,\n classes = _params$classes2 === void 0 ? [] : _params$classes2,\n _params$attributes2 = params.attributes,\n attributes = _params$attributes2 === void 0 ? {} : _params$attributes2,\n _params$styles2 = params.styles,\n styles = _params$styles2 === void 0 ? {} : _params$styles2;\n return apiObject({\n type: 'text',\n content: content\n }, function () {\n ensureCss();\n return makeLayersTextAbstract({\n content: content,\n transform: _objectSpread({}, meaninglessTransform, transform),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.familyPrefix, \"-layers-text\")].concat(_toConsumableArray(classes))\n }\n });\n });\n};\nvar counter = function counter(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$title3 = params.title,\n title = _params$title3 === void 0 ? null : _params$title3,\n _params$classes3 = params.classes,\n classes = _params$classes3 === void 0 ? [] : _params$classes3,\n _params$attributes3 = params.attributes,\n attributes = _params$attributes3 === void 0 ? {} : _params$attributes3,\n _params$styles3 = params.styles,\n styles = _params$styles3 === void 0 ? {} : _params$styles3;\n return apiObject({\n type: 'counter',\n content: content\n }, function () {\n ensureCss();\n return makeLayersCounterAbstract({\n content: content.toString(),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.familyPrefix, \"-layers-counter\")].concat(_toConsumableArray(classes))\n }\n });\n });\n};\nvar layer = function layer(assembler) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$classes4 = params.classes,\n classes = _params$classes4 === void 0 ? [] : _params$classes4;\n return apiObject({\n type: 'layer'\n }, function () {\n ensureCss();\n var children = [];\n assembler(function (args) {\n Array.isArray(args) ? args.map(function (a) {\n children = children.concat(a.abstract);\n }) : children = children.concat(args.abstract);\n });\n return [{\n tag: 'span',\n attributes: {\n class: [\"\".concat(config.familyPrefix, \"-layers\")].concat(_toConsumableArray(classes)).join(' ')\n },\n children: children\n }];\n });\n};\nvar api = {\n noAuto: noAuto,\n config: config,\n dom: dom,\n library: library,\n parse: parse,\n findIconDefinition: findIconDefinition,\n icon: icon,\n text: text,\n counter: counter,\n layer: layer,\n toHtml: toHtml\n};\n\nvar autoReplace = function autoReplace() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _params$autoReplaceSv = params.autoReplaceSvgRoot,\n autoReplaceSvgRoot = _params$autoReplaceSv === void 0 ? DOCUMENT : _params$autoReplaceSv;\n if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({\n node: autoReplaceSvgRoot\n });\n};\n\nexport { icon, noAuto, config, toHtml, layer, text, counter, library, dom, parse, findIconDefinition };\n","import * as i0 from '@angular/core';\nimport { Injectable, Directive, Input, Component, Optional, HostBinding, NgModule } from '@angular/core';\nimport { parse, icon, counter, text } from '@fortawesome/fontawesome-svg-core';\nimport * as i2 from '@angular/platform-browser';\n\nconst faWarnIfIconDefinitionMissing = (iconSpec) => {\n throw new Error(`Could not find icon with iconName=${iconSpec.iconName} and prefix=${iconSpec.prefix} in the icon library.`);\n};\n\nconst faWarnIfIconSpecMissing = () => {\n throw new Error('Property `icon` is required for `fa-icon`/`fa-duotone-icon` components.');\n};\n\n/**\n * Fontawesome class list.\n * Returns classes array by props.\n */\nconst faClassList = (props) => {\n const classes = {\n 'fa-spin': props.spin,\n 'fa-pulse': props.pulse,\n 'fa-fw': props.fixedWidth,\n 'fa-border': props.border,\n 'fa-inverse': props.inverse,\n 'fa-layers-counter': props.counter,\n 'fa-flip-horizontal': props.flip === 'horizontal' || props.flip === 'both',\n 'fa-flip-vertical': props.flip === 'vertical' || props.flip === 'both',\n [`fa-${props.size}`]: props.size !== null,\n [`fa-rotate-${props.rotate}`]: props.rotate !== null,\n [`fa-pull-${props.pull}`]: props.pull !== null,\n [`fa-stack-${props.stackItemSize}`]: props.stackItemSize != null,\n };\n return Object.keys(classes)\n .map((key) => (classes[key] ? key : null))\n .filter((key) => key);\n};\n\n/**\n * Returns if is IconLookup or not.\n */\nconst isIconLookup = (i) => i.prefix !== undefined && i.iconName !== undefined;\n\n/**\n * Normalizing icon spec.\n */\nconst faNormalizeIconSpec = (iconSpec, defaultPrefix) => {\n if (isIconLookup(iconSpec)) {\n return iconSpec;\n }\n if (Array.isArray(iconSpec) && iconSpec.length === 2) {\n return { prefix: iconSpec[0], iconName: iconSpec[1] };\n }\n if (typeof iconSpec === 'string') {\n return { prefix: defaultPrefix, iconName: iconSpec };\n }\n};\n\nclass FaConfig {\n constructor() {\n /**\n * Default prefix to use, when one is not provided with the icon name.\n *\n * @default 'fas'\n */\n this.defaultPrefix = 'fas';\n /**\n * Provides a fallback icon to use whilst main icon is being loaded asynchronously.\n * When value is null, then fa-icon component will throw an error if icon input is missing.\n * When value is not null, then the provided icon will be used as a fallback icon if icon input is missing.\n *\n * @default null\n */\n this.fallbackIcon = null;\n }\n}\nFaConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FaConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nFaConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FaConfig, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FaConfig, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\nclass FaIconLibrary {\n constructor() {\n this.definitions = {};\n }\n addIcons(...icons) {\n for (const icon of icons) {\n if (!(icon.prefix in this.definitions)) {\n this.definitions[icon.prefix] = {};\n }\n this.definitions[icon.prefix][icon.iconName] = icon;\n for (const alias of icon.icon[2]) {\n if (typeof alias === 'string') {\n this.definitions[icon.prefix][alias] = icon;\n }\n }\n }\n }\n addIconPacks(...packs) {\n for (const pack of packs) {\n const icons = Object.keys(pack).map((key) => pack[key]);\n this.addIcons(...icons);\n }\n }\n getIconDefinition(prefix, name) {\n if (prefix in this.definitions && name in this.definitions[prefix]) {\n return this.definitions[prefix][name];\n }\n return null;\n }\n}\nFaIconLibrary.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FaIconLibrary, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nFaIconLibrary.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FaIconLibrary, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FaIconLibrary, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\nclass FaStackItemSizeDirective {\n constructor() {\n /**\n * Specify whether icon inside {@link FaStackComponent} should be rendered in\n * regular size (1x) or as a larger icon (2x).\n */\n this.stackItemSize = '1x';\n }\n ngOnChanges(changes) {\n if ('size' in changes) {\n throw new Error('fa-icon is not allowed to customize size when used inside fa-stack. ' +\n 'Set size on the enclosing fa-stack instead: ....');\n }\n }\n}\nFaStackItemSizeDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FaStackItemSizeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nFaStackItemSizeDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: FaStackItemSizeDirective, selector: \"fa-icon[stackItemSize],fa-duotone-icon[stackItemSize]\", inputs: { stackItemSize: \"stackItemSize\", size: \"size\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FaStackItemSizeDirective, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'fa-icon[stackItemSize],fa-duotone-icon[stackItemSize]',\n }]\n }], propDecorators: { stackItemSize: [{\n type: Input\n }], size: [{\n type: Input\n }] } });\n\nclass FaStackComponent {\n constructor(renderer, elementRef) {\n this.renderer = renderer;\n this.elementRef = elementRef;\n }\n ngOnInit() {\n this.renderer.addClass(this.elementRef.nativeElement, 'fa-stack');\n }\n ngOnChanges(changes) {\n if ('size' in changes) {\n if (changes.size.currentValue != null) {\n this.renderer.addClass(this.elementRef.nativeElement, `fa-${changes.size.currentValue}`);\n }\n if (changes.size.previousValue != null) {\n this.renderer.removeClass(this.elementRef.nativeElement, `fa-${changes.size.previousValue}`);\n }\n }\n }\n}\nFaStackComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FaStackComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nFaStackComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: FaStackComponent, selector: \"fa-stack\", inputs: { size: \"size\" }, usesOnChanges: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FaStackComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'fa-stack',\n template: ``,\n }]\n }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }]; }, propDecorators: { size: [{\n type: Input\n }] } });\n\nclass FaIconComponent {\n constructor(sanitizer, config, iconLibrary, stackItem, stack) {\n this.sanitizer = sanitizer;\n this.config = config;\n this.iconLibrary = iconLibrary;\n this.stackItem = stackItem;\n this.classes = [];\n if (stack != null && stackItem == null) {\n console.error('FontAwesome: fa-icon and fa-duotone-icon elements must specify stackItemSize attribute when wrapped into ' +\n 'fa-stack. Example: .');\n }\n }\n ngOnChanges(changes) {\n if (this.icon == null && this.config.fallbackIcon == null) {\n return faWarnIfIconSpecMissing();\n }\n let iconToBeRendered = null;\n if (this.icon == null) {\n iconToBeRendered = this.config.fallbackIcon;\n }\n else {\n iconToBeRendered = this.icon;\n }\n if (changes) {\n const iconDefinition = this.findIconDefinition(iconToBeRendered);\n if (iconDefinition != null) {\n const params = this.buildParams();\n this.renderIcon(iconDefinition, params);\n }\n }\n }\n /**\n * Programmatically trigger rendering of the icon.\n *\n * This method is useful, when creating {@link FaIconComponent} dynamically or\n * changing its inputs programmatically as in these cases icon won't be\n * re-rendered automatically.\n */\n render() {\n this.ngOnChanges({});\n }\n findIconDefinition(i) {\n const lookup = faNormalizeIconSpec(i, this.config.defaultPrefix);\n if ('icon' in lookup) {\n return lookup;\n }\n const definition = this.iconLibrary.getIconDefinition(lookup.prefix, lookup.iconName);\n if (definition != null) {\n return definition;\n }\n faWarnIfIconDefinitionMissing(lookup);\n return null;\n }\n buildParams() {\n const classOpts = {\n flip: this.flip,\n spin: this.spin,\n pulse: this.pulse,\n border: this.border,\n inverse: this.inverse,\n size: this.size || null,\n pull: this.pull || null,\n rotate: this.rotate || null,\n fixedWidth: typeof this.fixedWidth === 'boolean' ? this.fixedWidth : this.config.fixedWidth,\n stackItemSize: this.stackItem != null ? this.stackItem.stackItemSize : null,\n };\n const parsedTransform = typeof this.transform === 'string' ? parse.transform(this.transform) : this.transform;\n return {\n title: this.title,\n transform: parsedTransform,\n classes: [...faClassList(classOpts), ...this.classes],\n mask: this.mask != null ? this.findIconDefinition(this.mask) : null,\n styles: this.styles != null ? this.styles : {},\n symbol: this.symbol,\n attributes: {\n role: this.a11yRole,\n },\n };\n }\n renderIcon(definition, params) {\n const renderedIcon = icon(definition, params);\n this.renderedIconHTML = this.sanitizer.bypassSecurityTrustHtml(renderedIcon.html.join('\\n'));\n }\n}\nFaIconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FaIconComponent, deps: [{ token: i2.DomSanitizer }, { token: FaConfig }, { token: FaIconLibrary }, { token: FaStackItemSizeDirective, optional: true }, { token: FaStackComponent, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nFaIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: FaIconComponent, selector: \"fa-icon\", inputs: { icon: \"icon\", title: \"title\", spin: \"spin\", pulse: \"pulse\", mask: \"mask\", styles: \"styles\", flip: \"flip\", size: \"size\", pull: \"pull\", border: \"border\", inverse: \"inverse\", symbol: \"symbol\", rotate: \"rotate\", fixedWidth: \"fixedWidth\", classes: \"classes\", transform: \"transform\", a11yRole: \"a11yRole\" }, host: { properties: { \"attr.title\": \"title\", \"innerHTML\": \"this.renderedIconHTML\" }, classAttribute: \"ng-fa-icon\" }, usesOnChanges: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FaIconComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'fa-icon',\n template: ``,\n host: {\n class: 'ng-fa-icon',\n '[attr.title]': 'title',\n },\n }]\n }], ctorParameters: function () { return [{ type: i2.DomSanitizer }, { type: FaConfig }, { type: FaIconLibrary }, { type: FaStackItemSizeDirective, decorators: [{\n type: Optional\n }] }, { type: FaStackComponent, decorators: [{\n type: Optional\n }] }]; }, propDecorators: { icon: [{\n type: Input\n }], title: [{\n type: Input\n }], spin: [{\n type: Input\n }], pulse: [{\n type: Input\n }], mask: [{\n type: Input\n }], styles: [{\n type: Input\n }], flip: [{\n type: Input\n }], size: [{\n type: Input\n }], pull: [{\n type: Input\n }], border: [{\n type: Input\n }], inverse: [{\n type: Input\n }], symbol: [{\n type: Input\n }], rotate: [{\n type: Input\n }], fixedWidth: [{\n type: Input\n }], classes: [{\n type: Input\n }], transform: [{\n type: Input\n }], a11yRole: [{\n type: Input\n }], renderedIconHTML: [{\n type: HostBinding,\n args: ['innerHTML']\n }] } });\n\nclass FaDuotoneIconComponent extends FaIconComponent {\n findIconDefinition(i) {\n const definition = super.findIconDefinition(i);\n if (definition != null && !Array.isArray(definition.icon[4])) {\n throw new Error('The specified icon does not appear to be a Duotone icon. ' +\n 'Check that you specified the correct style: ' +\n ` ` +\n `or use: instead.`);\n }\n return definition;\n }\n buildParams() {\n const params = super.buildParams();\n if (this.swapOpacity === true || this.swapOpacity === 'true') {\n params.classes.push('fa-swap-opacity');\n }\n if (this.primaryOpacity != null) {\n params.styles['--fa-primary-opacity'] = this.primaryOpacity.toString();\n }\n if (this.secondaryOpacity != null) {\n params.styles['--fa-secondary-opacity'] = this.secondaryOpacity.toString();\n }\n if (this.primaryColor != null) {\n params.styles['--fa-primary-color'] = this.primaryColor;\n }\n if (this.secondaryColor != null) {\n params.styles['--fa-secondary-color'] = this.secondaryColor;\n }\n return params;\n }\n}\nFaDuotoneIconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FaDuotoneIconComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nFaDuotoneIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: FaDuotoneIconComponent, selector: \"fa-duotone-icon\", inputs: { swapOpacity: \"swapOpacity\", primaryOpacity: \"primaryOpacity\", secondaryOpacity: \"secondaryOpacity\", primaryColor: \"primaryColor\", secondaryColor: \"secondaryColor\" }, usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FaDuotoneIconComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'fa-duotone-icon',\n template: ``,\n }]\n }], propDecorators: { swapOpacity: [{\n type: Input\n }], primaryOpacity: [{\n type: Input\n }], secondaryOpacity: [{\n type: Input\n }], primaryColor: [{\n type: Input\n }], secondaryColor: [{\n type: Input\n }] } });\n\n/**\n * Warns if parent component not existing.\n */\nconst faWarnIfParentNotExist = (parent, parentName, childName) => {\n if (!parent) {\n throw new Error(`${childName} should be used as child of ${parentName} only.`);\n }\n};\n\n/**\n * Fontawesome layers.\n */\nclass FaLayersComponent {\n constructor(renderer, elementRef, config) {\n this.renderer = renderer;\n this.elementRef = elementRef;\n this.config = config;\n }\n ngOnInit() {\n this.renderer.addClass(this.elementRef.nativeElement, 'fa-layers');\n this.fixedWidth = typeof this.fixedWidth === 'boolean' ? this.fixedWidth : this.config.fixedWidth;\n }\n ngOnChanges(changes) {\n if ('size' in changes) {\n if (changes.size.currentValue != null) {\n this.renderer.addClass(this.elementRef.nativeElement, `fa-${changes.size.currentValue}`);\n }\n if (changes.size.previousValue != null) {\n this.renderer.removeClass(this.elementRef.nativeElement, `fa-${changes.size.previousValue}`);\n }\n }\n }\n}\nFaLayersComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FaLayersComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: FaConfig }], target: i0.ɵɵFactoryTarget.Component });\nFaLayersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: FaLayersComponent, selector: \"fa-layers\", inputs: { size: \"size\", fixedWidth: \"fixedWidth\" }, host: { properties: { \"class.fa-fw\": \"this.fixedWidth\" } }, usesOnChanges: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FaLayersComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'fa-layers',\n template: ``,\n }]\n }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: FaConfig }]; }, propDecorators: { size: [{\n type: Input\n }], fixedWidth: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['class.fa-fw']\n }] } });\n\nclass FaLayersCounterComponent {\n constructor(parent, sanitizer) {\n this.parent = parent;\n this.sanitizer = sanitizer;\n this.classes = [];\n faWarnIfParentNotExist(this.parent, 'FaLayersComponent', this.constructor.name);\n }\n ngOnChanges(changes) {\n if (changes) {\n const params = this.buildParams();\n this.updateContent(params);\n }\n }\n buildParams() {\n const classes = [];\n if (this.classes != null) {\n classes.push(...this.classes);\n }\n if (this.position != null) {\n classes.push(`fa-layers-${this.position}`);\n }\n return {\n title: this.title,\n classes,\n styles: this.styles,\n };\n }\n updateContent(params) {\n this.renderedHTML = this.sanitizer.bypassSecurityTrustHtml(counter(this.content || '', params).html.join(''));\n }\n}\nFaLayersCounterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FaLayersCounterComponent, deps: [{ token: FaLayersComponent, optional: true }, { token: i2.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });\nFaLayersCounterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: FaLayersCounterComponent, selector: \"fa-layers-counter\", inputs: { content: \"content\", title: \"title\", styles: \"styles\", classes: \"classes\", position: \"position\" }, host: { properties: { \"innerHTML\": \"this.renderedHTML\" }, classAttribute: \"ng-fa-layers-counter\" }, usesOnChanges: true, ngImport: i0, template: '', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FaLayersCounterComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'fa-layers-counter',\n template: '',\n host: {\n class: 'ng-fa-layers-counter',\n },\n }]\n }], ctorParameters: function () { return [{ type: FaLayersComponent, decorators: [{\n type: Optional\n }] }, { type: i2.DomSanitizer }]; }, propDecorators: { content: [{\n type: Input\n }], title: [{\n type: Input\n }], styles: [{\n type: Input\n }], classes: [{\n type: Input\n }], position: [{\n type: Input\n }], renderedHTML: [{\n type: HostBinding,\n args: ['innerHTML']\n }] } });\n\nclass FaLayersTextComponent {\n constructor(parent, sanitizer) {\n this.parent = parent;\n this.sanitizer = sanitizer;\n this.classes = [];\n faWarnIfParentNotExist(this.parent, 'FaLayersComponent', this.constructor.name);\n }\n ngOnChanges(changes) {\n if (changes) {\n const params = this.buildParams();\n this.updateContent(params);\n }\n }\n /**\n * Updating params by component props.\n */\n buildParams() {\n const classOpts = {\n flip: this.flip,\n spin: this.spin,\n pulse: this.pulse,\n border: this.border,\n inverse: this.inverse,\n size: this.size || null,\n pull: this.pull || null,\n rotate: this.rotate || null,\n fixedWidth: this.fixedWidth,\n };\n const parsedTransform = typeof this.transform === 'string' ? parse.transform(this.transform) : this.transform;\n return {\n transform: parsedTransform,\n classes: [...faClassList(classOpts), ...this.classes],\n title: this.title,\n styles: this.styles,\n };\n }\n updateContent(params) {\n this.renderedHTML = this.sanitizer.bypassSecurityTrustHtml(text(this.content || '', params).html.join('\\n'));\n }\n}\nFaLayersTextComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FaLayersTextComponent, deps: [{ token: FaLayersComponent, optional: true }, { token: i2.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });\nFaLayersTextComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: FaLayersTextComponent, selector: \"fa-layers-text\", inputs: { content: \"content\", title: \"title\", styles: \"styles\", classes: \"classes\", spin: \"spin\", pulse: \"pulse\", flip: \"flip\", size: \"size\", pull: \"pull\", border: \"border\", inverse: \"inverse\", rotate: \"rotate\", fixedWidth: \"fixedWidth\", transform: \"transform\" }, host: { properties: { \"innerHTML\": \"this.renderedHTML\" }, classAttribute: \"ng-fa-layers-text\" }, usesOnChanges: true, ngImport: i0, template: '', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FaLayersTextComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'fa-layers-text',\n template: '',\n host: {\n class: 'ng-fa-layers-text',\n },\n }]\n }], ctorParameters: function () { return [{ type: FaLayersComponent, decorators: [{\n type: Optional\n }] }, { type: i2.DomSanitizer }]; }, propDecorators: { content: [{\n type: Input\n }], title: [{\n type: Input\n }], styles: [{\n type: Input\n }], classes: [{\n type: Input\n }], spin: [{\n type: Input\n }], pulse: [{\n type: Input\n }], flip: [{\n type: Input\n }], size: [{\n type: Input\n }], pull: [{\n type: Input\n }], border: [{\n type: Input\n }], inverse: [{\n type: Input\n }], rotate: [{\n type: Input\n }], fixedWidth: [{\n type: Input\n }], transform: [{\n type: Input\n }], renderedHTML: [{\n type: HostBinding,\n args: ['innerHTML']\n }] } });\n\nclass FontAwesomeModule {\n}\nFontAwesomeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FontAwesomeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nFontAwesomeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FontAwesomeModule, declarations: [FaIconComponent,\n FaDuotoneIconComponent,\n FaLayersComponent,\n FaLayersTextComponent,\n FaLayersCounterComponent,\n FaStackComponent,\n FaStackItemSizeDirective], exports: [FaIconComponent,\n FaDuotoneIconComponent,\n FaLayersComponent,\n FaLayersTextComponent,\n FaLayersCounterComponent,\n FaStackComponent,\n FaStackItemSizeDirective] });\nFontAwesomeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FontAwesomeModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FontAwesomeModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n FaIconComponent,\n FaDuotoneIconComponent,\n FaLayersComponent,\n FaLayersTextComponent,\n FaLayersCounterComponent,\n FaStackComponent,\n FaStackItemSizeDirective,\n ],\n exports: [\n FaIconComponent,\n FaDuotoneIconComponent,\n FaLayersComponent,\n FaLayersTextComponent,\n FaLayersCounterComponent,\n FaStackComponent,\n FaStackItemSizeDirective,\n ],\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { FaConfig, FaDuotoneIconComponent, FaIconComponent, FaIconLibrary, FaLayersComponent, FaLayersCounterComponent, FaLayersTextComponent, FaStackComponent, FaStackItemSizeDirective, FontAwesomeModule };\n","import { isArray } from './isArray';\nexport function isNumeric(val) {\n return !isArray(val) && (val - parseFloat(val) + 1) >= 0;\n}\n","import { Observable } from '../Observable';\nimport { async } from '../scheduler/async';\nimport { isNumeric } from '../util/isNumeric';\nimport { isScheduler } from '../util/isScheduler';\nexport function timer(dueTime = 0, periodOrScheduler, scheduler) {\n let period = -1;\n if (isNumeric(periodOrScheduler)) {\n period = Number(periodOrScheduler) < 1 && 1 || Number(periodOrScheduler);\n }\n else if (isScheduler(periodOrScheduler)) {\n scheduler = periodOrScheduler;\n }\n if (!isScheduler(scheduler)) {\n scheduler = async;\n }\n return new Observable(subscriber => {\n const due = isNumeric(dueTime)\n ? dueTime\n : (+dueTime - scheduler.now());\n return scheduler.schedule(dispatch, due, {\n index: 0, period, subscriber\n });\n });\n}\nfunction dispatch(state) {\n const { index, period, subscriber } = state;\n subscriber.next(index);\n if (subscriber.closed) {\n return;\n }\n else if (period === -1) {\n return subscriber.complete();\n }\n state.index = index + 1;\n this.schedule(state, period);\n}\n","import { isArray } from '../util/isArray';\nimport { fromArray } from './fromArray';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function race(...observables) {\n if (observables.length === 1) {\n if (isArray(observables[0])) {\n observables = observables[0];\n }\n else {\n return observables[0];\n }\n }\n return fromArray(observables, undefined).lift(new RaceOperator());\n}\nexport class RaceOperator {\n call(subscriber, source) {\n return source.subscribe(new RaceSubscriber(subscriber));\n }\n}\nexport class RaceSubscriber extends OuterSubscriber {\n constructor(destination) {\n super(destination);\n this.hasFirst = false;\n this.observables = [];\n this.subscriptions = [];\n }\n _next(observable) {\n this.observables.push(observable);\n }\n _complete() {\n const observables = this.observables;\n const len = observables.length;\n if (len === 0) {\n this.destination.complete();\n }\n else {\n for (let i = 0; i < len && !this.hasFirst; i++) {\n const observable = observables[i];\n const subscription = subscribeToResult(this, observable, undefined, i);\n if (this.subscriptions) {\n this.subscriptions.push(subscription);\n }\n this.add(subscription);\n }\n this.observables = null;\n }\n }\n notifyNext(_outerValue, innerValue, outerIndex) {\n if (!this.hasFirst) {\n this.hasFirst = true;\n for (let i = 0; i < this.subscriptions.length; i++) {\n if (i !== outerIndex) {\n let subscription = this.subscriptions[i];\n subscription.unsubscribe();\n this.remove(subscription);\n }\n }\n this.subscriptions = null;\n }\n this.destination.next(innerValue);\n }\n}\n","import { fromArray } from './fromArray';\nimport { isArray } from '../util/isArray';\nimport { Subscriber } from '../Subscriber';\nimport { iterator as Symbol_iterator } from '../../internal/symbol/iterator';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\nexport function zip(...observables) {\n const resultSelector = observables[observables.length - 1];\n if (typeof resultSelector === 'function') {\n observables.pop();\n }\n return fromArray(observables, undefined).lift(new ZipOperator(resultSelector));\n}\nexport class ZipOperator {\n constructor(resultSelector) {\n this.resultSelector = resultSelector;\n }\n call(subscriber, source) {\n return source.subscribe(new ZipSubscriber(subscriber, this.resultSelector));\n }\n}\nexport class ZipSubscriber extends Subscriber {\n constructor(destination, resultSelector, values = Object.create(null)) {\n super(destination);\n this.resultSelector = resultSelector;\n this.iterators = [];\n this.active = 0;\n this.resultSelector = (typeof resultSelector === 'function') ? resultSelector : undefined;\n }\n _next(value) {\n const iterators = this.iterators;\n if (isArray(value)) {\n iterators.push(new StaticArrayIterator(value));\n }\n else if (typeof value[Symbol_iterator] === 'function') {\n iterators.push(new StaticIterator(value[Symbol_iterator]()));\n }\n else {\n iterators.push(new ZipBufferIterator(this.destination, this, value));\n }\n }\n _complete() {\n const iterators = this.iterators;\n const len = iterators.length;\n this.unsubscribe();\n if (len === 0) {\n this.destination.complete();\n return;\n }\n this.active = len;\n for (let i = 0; i < len; i++) {\n let iterator = iterators[i];\n if (iterator.stillUnsubscribed) {\n const destination = this.destination;\n destination.add(iterator.subscribe());\n }\n else {\n this.active--;\n }\n }\n }\n notifyInactive() {\n this.active--;\n if (this.active === 0) {\n this.destination.complete();\n }\n }\n checkIterators() {\n const iterators = this.iterators;\n const len = iterators.length;\n const destination = this.destination;\n for (let i = 0; i < len; i++) {\n let iterator = iterators[i];\n if (typeof iterator.hasValue === 'function' && !iterator.hasValue()) {\n return;\n }\n }\n let shouldComplete = false;\n const args = [];\n for (let i = 0; i < len; i++) {\n let iterator = iterators[i];\n let result = iterator.next();\n if (iterator.hasCompleted()) {\n shouldComplete = true;\n }\n if (result.done) {\n destination.complete();\n return;\n }\n args.push(result.value);\n }\n if (this.resultSelector) {\n this._tryresultSelector(args);\n }\n else {\n destination.next(args);\n }\n if (shouldComplete) {\n destination.complete();\n }\n }\n _tryresultSelector(args) {\n let result;\n try {\n result = this.resultSelector.apply(this, args);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n }\n}\nclass StaticIterator {\n constructor(iterator) {\n this.iterator = iterator;\n this.nextResult = iterator.next();\n }\n hasValue() {\n return true;\n }\n next() {\n const result = this.nextResult;\n this.nextResult = this.iterator.next();\n return result;\n }\n hasCompleted() {\n const nextResult = this.nextResult;\n return Boolean(nextResult && nextResult.done);\n }\n}\nclass StaticArrayIterator {\n constructor(array) {\n this.array = array;\n this.index = 0;\n this.length = 0;\n this.length = array.length;\n }\n [Symbol_iterator]() {\n return this;\n }\n next(value) {\n const i = this.index++;\n const array = this.array;\n return i < this.length ? { value: array[i], done: false } : { value: null, done: true };\n }\n hasValue() {\n return this.array.length > this.index;\n }\n hasCompleted() {\n return this.array.length === this.index;\n }\n}\nclass ZipBufferIterator extends SimpleOuterSubscriber {\n constructor(destination, parent, observable) {\n super(destination);\n this.parent = parent;\n this.observable = observable;\n this.stillUnsubscribed = true;\n this.buffer = [];\n this.isComplete = false;\n }\n [Symbol_iterator]() {\n return this;\n }\n next() {\n const buffer = this.buffer;\n if (buffer.length === 0 && this.isComplete) {\n return { value: null, done: true };\n }\n else {\n return { value: buffer.shift(), done: false };\n }\n }\n hasValue() {\n return this.buffer.length > 0;\n }\n hasCompleted() {\n return this.buffer.length === 0 && this.isComplete;\n }\n notifyComplete() {\n if (this.buffer.length > 0) {\n this.isComplete = true;\n this.parent.notifyInactive();\n }\n else {\n this.destination.complete();\n }\n }\n notifyNext(innerValue) {\n this.buffer.push(innerValue);\n this.parent.checkIterators();\n }\n subscribe() {\n return innerSubscribe(this.observable, new SimpleInnerSubscriber(this));\n }\n}\n","import { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function withLatestFrom(...args) {\n return (source) => {\n let project;\n if (typeof args[args.length - 1] === 'function') {\n project = args.pop();\n }\n const observables = args;\n return source.lift(new WithLatestFromOperator(observables, project));\n };\n}\nclass WithLatestFromOperator {\n constructor(observables, project) {\n this.observables = observables;\n this.project = project;\n }\n call(subscriber, source) {\n return source.subscribe(new WithLatestFromSubscriber(subscriber, this.observables, this.project));\n }\n}\nclass WithLatestFromSubscriber extends OuterSubscriber {\n constructor(destination, observables, project) {\n super(destination);\n this.observables = observables;\n this.project = project;\n this.toRespond = [];\n const len = observables.length;\n this.values = new Array(len);\n for (let i = 0; i < len; i++) {\n this.toRespond.push(i);\n }\n for (let i = 0; i < len; i++) {\n let observable = observables[i];\n this.add(subscribeToResult(this, observable, undefined, i));\n }\n }\n notifyNext(_outerValue, innerValue, outerIndex) {\n this.values[outerIndex] = innerValue;\n const toRespond = this.toRespond;\n if (toRespond.length > 0) {\n const found = toRespond.indexOf(outerIndex);\n if (found !== -1) {\n toRespond.splice(found, 1);\n }\n }\n }\n notifyComplete() {\n }\n _next(value) {\n if (this.toRespond.length === 0) {\n const args = [value, ...this.values];\n if (this.project) {\n this._tryProject(args);\n }\n else {\n this.destination.next(args);\n }\n }\n }\n _tryProject(args) {\n let result;\n try {\n result = this.project.apply(this, args);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n }\n}\n","import { Subscriber } from '../Subscriber';\nexport function skip(count) {\n return (source) => source.lift(new SkipOperator(count));\n}\nclass SkipOperator {\n constructor(total) {\n this.total = total;\n }\n call(subscriber, source) {\n return source.subscribe(new SkipSubscriber(subscriber, this.total));\n }\n}\nclass SkipSubscriber extends Subscriber {\n constructor(destination, total) {\n super(destination);\n this.total = total;\n this.count = 0;\n }\n _next(x) {\n if (++this.count > this.total) {\n this.destination.next(x);\n }\n }\n}\n","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}","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\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}","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];","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\";\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 { 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}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && 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 getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\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 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\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\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}","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}","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 { 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}","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}","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\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}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\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}","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\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, \"auto\" cannot be used to allow \"bottom-start\".', 'Use \"auto-start\" instead.'].join(' '));\n }\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 { 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}","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}","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 \"../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\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.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 (process.env.NODE_ENV !== \"production\") {\n if (!isHTMLElement(arrowElement)) {\n console.error(['Popper: \"arrow\" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: \"arrow\" modifier\\'s `element` must be a child of the popper', 'element.'].join(' '));\n }\n\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 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 getComputedStyle from \"./dom-utils/getComputedStyle.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport validateModifiers from \"./utils/validateModifiers.js\";\nimport uniqueBy from \"./utils/uniqueBy.js\";\nimport getBasePlacement from \"./utils/getBasePlacement.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nimport { auto } from \"./enums.js\";\nvar INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';\nvar INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';\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 }); // Validate the provided modifiers so that the consumer will get warned\n // if one of the modifiers is invalid for any reason\n\n if (process.env.NODE_ENV !== \"production\") {\n var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) {\n var name = _ref.name;\n return name;\n });\n validateModifiers(modifiers);\n\n if (getBasePlacement(state.options.placement) === auto) {\n var flipModifier = state.orderedModifiers.find(function (_ref2) {\n var name = _ref2.name;\n return name === 'flip';\n });\n\n if (!flipModifier) {\n console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', 'present and enabled to work.'].join(' '));\n }\n }\n\n var _getComputedStyle = getComputedStyle(popper),\n marginTop = _getComputedStyle.marginTop,\n marginRight = _getComputedStyle.marginRight,\n marginBottom = _getComputedStyle.marginBottom,\n marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can\n // cause bugs with positioning, so we'll warn the consumer\n\n\n if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {\n return parseFloat(margin);\n })) {\n console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));\n }\n }\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 if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\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 var __debug_loops__ = 0;\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (process.env.NODE_ENV !== \"production\") {\n __debug_loops__ += 1;\n\n if (__debug_loops__ > 100) {\n console.error(INFINITE_LOOP_ERROR);\n break;\n }\n }\n\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 if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\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 (_ref3) {\n var name = _ref3.name,\n _ref3$options = _ref3.options,\n options = _ref3$options === void 0 ? {} : _ref3$options,\n effect = _ref3.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 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};","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) {\n var x = _ref.x,\n y = _ref.y;\n var win = window;\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 }) : {\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\n if (process.env.NODE_ENV !== \"production\") {\n var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || '';\n\n if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) {\n return transitionProperty.indexOf(property) >= 0;\n })) {\n console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".', '\\n\\n', 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\\n\\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));\n }\n }\n\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 { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow };","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 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 { 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 * as i0 from '@angular/core';\nimport { Injectable, Directive, EventEmitter, Input, Output, ContentChildren, Component, ViewEncapsulation, Optional, Host, NgModule, ChangeDetectionStrategy, PLATFORM_ID, Inject, LOCALE_ID, ElementRef, ViewChild, forwardRef, ContentChild, TemplateRef, createComponent, Injector, Attribute, ViewChildren, HostBinding, InjectionToken } from '@angular/core';\nimport * as i2 from '@angular/common';\nimport { CommonModule, isPlatformBrowser, getLocaleMonthNames, FormStyle, TranslationWidth, getLocaleDayNames, formatDate, DOCUMENT, getLocaleDayPeriods } from '@angular/common';\nimport { Observable, EMPTY, of, Subject, fromEvent, timer, race, BehaviorSubject, combineLatest, NEVER, zip, merge } from 'rxjs';\nimport { endWith, takeUntil, filter, take, map, startWith, distinctUntilChanged, switchMap, tap, withLatestFrom, delay, mergeMap, skip, share, finalize } from 'rxjs/operators';\nimport * as i3 from '@angular/forms';\nimport { NG_VALUE_ACCESSOR, NG_VALIDATORS, FormsModule } from '@angular/forms';\nimport { flip, preventOverflow, arrow, createPopperLite, offset } from '@popperjs/core';\n\nfunction toInteger(value) {\n return parseInt(`${value}`, 10);\n}\nfunction toString(value) {\n return value !== undefined && value !== null ? `${value}` : '';\n}\nfunction getValueInRange(value, max, min = 0) {\n return Math.max(Math.min(value, max), min);\n}\nfunction isString(value) {\n return typeof value === 'string';\n}\nfunction isNumber(value) {\n return !isNaN(toInteger(value));\n}\nfunction isInteger(value) {\n return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\n}\nfunction isDefined(value) {\n return value !== undefined && value !== null;\n}\nfunction isPromise(v) {\n return v && v.then;\n}\nfunction padNumber(value) {\n if (isNumber(value)) {\n return `0${value}`.slice(-2);\n }\n else {\n return '';\n }\n}\nfunction regExpEscape(text) {\n return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n}\nfunction hasClassName(element, className) {\n return (element && element.className && element.className.split && element.className.split(/\\s+/).indexOf(className) >= 0);\n}\nfunction closest(element, selector) {\n if (!selector) {\n return null;\n }\n /*\n * In certain browsers (e.g. Edge 44.18362.449.0) HTMLDocument does\n * not support `Element.prototype.closest`. To emulate the correct behaviour\n * we return null when the method is missing.\n *\n * Note that in evergreen browsers `closest(document.documentElement, 'html')`\n * will return the document element whilst in Edge null will be returned. This\n * compromise was deemed good enough.\n */\n if (typeof element.closest === 'undefined') {\n return null;\n }\n return element.closest(selector);\n}\n/**\n * Force a browser reflow\n * @param element element where to apply the reflow\n */\nfunction reflow(element) {\n return (element || document.body).getBoundingClientRect();\n}\n/**\n * Creates an observable where all callbacks are executed inside a given zone\n *\n * @param zone\n */\nfunction runInZone(zone) {\n return (source) => {\n return new Observable((observer) => {\n const next = (value) => zone.run(() => observer.next(value));\n const error = (e) => zone.run(() => observer.error(e));\n const complete = () => zone.run(() => observer.complete());\n return source.subscribe({ next, error, complete });\n });\n };\n}\nfunction removeAccents(str) {\n return str.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\n}\n\nfunction getTransitionDurationMs(element) {\n const { transitionDelay, transitionDuration } = window.getComputedStyle(element);\n const transitionDelaySec = parseFloat(transitionDelay);\n const transitionDurationSec = parseFloat(transitionDuration);\n return (transitionDelaySec + transitionDurationSec) * 1000;\n}\n\nconst environment = {\n animation: true,\n transitionTimerDelayMs: 5,\n};\n\nconst noopFn = () => { };\nconst { transitionTimerDelayMs } = environment;\nconst runningTransitions = new Map();\nconst ngbRunTransition = (zone, element, startFn, options) => {\n // Getting initial context from options\n let context = options.context || {};\n // Checking if there are already running transitions on the given element.\n const running = runningTransitions.get(element);\n if (running) {\n switch (options.runningTransition) {\n // If there is one running and we want for it to 'continue' to run, we have to cancel the new one.\n // We're not emitting any values, but simply completing the observable (EMPTY).\n case 'continue':\n return EMPTY;\n // If there is one running and we want for it to 'stop', we have to complete the running one.\n // We're simply completing the running one and not emitting any values and merging newly provided context\n // with the one coming from currently running transition.\n case 'stop':\n zone.run(() => running.transition$.complete());\n context = Object.assign(running.context, context);\n runningTransitions.delete(element);\n }\n }\n // Running the start function\n const endFn = startFn(element, options.animation, context) || noopFn;\n // If 'prefer-reduced-motion' is enabled, the 'transition' will be set to 'none'.\n // If animations are disabled, we have to emit a value and complete the observable\n // In this case we have to call the end function, but can finish immediately by emitting a value,\n // completing the observable and executing end functions synchronously.\n if (!options.animation || window.getComputedStyle(element).transitionProperty === 'none') {\n zone.run(() => endFn());\n return of(undefined).pipe(runInZone(zone));\n }\n // Starting a new transition\n const transition$ = new Subject();\n const finishTransition$ = new Subject();\n const stop$ = transition$.pipe(endWith(true));\n runningTransitions.set(element, {\n transition$,\n complete: () => {\n finishTransition$.next();\n finishTransition$.complete();\n },\n context,\n });\n const transitionDurationMs = getTransitionDurationMs(element);\n // 1. We have to both listen for the 'transitionend' event and have a 'just-in-case' timer,\n // because 'transitionend' event might not be fired in some browsers, if the transitioning\n // element becomes invisible (ex. when scrolling, making browser tab inactive, etc.). The timer\n // guarantees, that we'll release the DOM element and complete 'ngbRunTransition'.\n // 2. We need to filter transition end events, because they might bubble from shorter transitions\n // on inner DOM elements. We're only interested in the transition on the 'element' itself.\n zone.runOutsideAngular(() => {\n const transitionEnd$ = fromEvent(element, 'transitionend').pipe(takeUntil(stop$), filter(({ target }) => target === element));\n const timer$ = timer(transitionDurationMs + transitionTimerDelayMs).pipe(takeUntil(stop$));\n race(timer$, transitionEnd$, finishTransition$)\n .pipe(takeUntil(stop$))\n .subscribe(() => {\n runningTransitions.delete(element);\n zone.run(() => {\n endFn();\n transition$.next();\n transition$.complete();\n });\n });\n });\n return transition$.asObservable();\n};\nconst ngbCompleteTransition = (element) => {\n runningTransitions.get(element)?.complete();\n};\n\nfunction measureCollapsingElementDimensionPx(element, dimension) {\n // SSR fix for without injecting the PlatformId\n if (typeof navigator === 'undefined') {\n return '0px';\n }\n const { classList } = element;\n const hasShownClass = classList.contains('show');\n if (!hasShownClass) {\n classList.add('show');\n }\n element.style[dimension] = '';\n const dimensionSize = element.getBoundingClientRect()[dimension] + 'px';\n if (!hasShownClass) {\n classList.remove('show');\n }\n return dimensionSize;\n}\nconst ngbCollapsingTransition = (element, animation, context) => {\n let { direction, maxSize, dimension } = context;\n const { classList } = element;\n function setInitialClasses() {\n classList.add('collapse');\n if (direction === 'show') {\n classList.add('show');\n }\n else {\n classList.remove('show');\n }\n }\n // without animations we just need to set initial classes\n if (!animation) {\n setInitialClasses();\n return;\n }\n // No maxHeight -> running the transition for the first time\n if (!maxSize) {\n maxSize = measureCollapsingElementDimensionPx(element, dimension);\n context.maxSize = maxSize;\n // Fix the height before starting the animation\n element.style[dimension] = direction !== 'show' ? maxSize : '0px';\n classList.remove('collapse');\n classList.remove('collapsing');\n classList.remove('show');\n reflow(element);\n // Start the animation\n classList.add('collapsing');\n }\n // Start or revert the animation\n element.style[dimension] = direction === 'show' ? maxSize : '0px';\n return () => {\n setInitialClasses();\n classList.remove('collapsing');\n element.style[dimension] = '';\n };\n};\n\n/**\n * Global ng-bootstrap config\n *\n * @since 8.0.0\n */\nclass NgbConfig {\n constructor() {\n this.animation = environment.animation;\n }\n}\nNgbConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNgbConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbConfig, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbConfig, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\n/**\n * A configuration service for the [NgbAccordion](#/components/accordion/api#NgbAccordion) component.\n *\n * You can inject this service, typically in your root component, and customize its properties\n * to provide default values for all accordions used in the application.\n */\nclass NgbAccordionConfig {\n constructor(_ngbConfig) {\n this._ngbConfig = _ngbConfig;\n this.closeOthers = false;\n }\n get animation() {\n return this._animation === undefined ? this._ngbConfig.animation : this._animation;\n }\n set animation(animation) {\n this._animation = animation;\n }\n}\nNgbAccordionConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbAccordionConfig, deps: [{ token: NgbConfig }], target: i0.ɵɵFactoryTarget.Injectable });\nNgbAccordionConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbAccordionConfig, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbAccordionConfig, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: NgbConfig }]; } });\n\nlet nextId$3 = 0;\n/**\n * A directive that wraps an accordion panel header with any HTML markup and a toggling button\n * marked with [`NgbPanelToggle`](#/components/accordion/api#NgbPanelToggle).\n * See the [header customization demo](#/components/accordion/examples#header) for more details.\n *\n * You can also use [`NgbPanelTitle`](#/components/accordion/api#NgbPanelTitle) to customize only the panel title.\n *\n * @since 4.1.0\n */\nclass NgbPanelHeader {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNgbPanelHeader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbPanelHeader, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgbPanelHeader.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgbPanelHeader, selector: \"ng-template[ngbPanelHeader]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbPanelHeader, decorators: [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPanelHeader]' }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n/**\n * A directive that wraps only the panel title with HTML markup inside.\n *\n * You can also use [`NgbPanelHeader`](#/components/accordion/api#NgbPanelHeader) to customize the full panel header.\n */\nclass NgbPanelTitle {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNgbPanelTitle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbPanelTitle, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgbPanelTitle.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgbPanelTitle, selector: \"ng-template[ngbPanelTitle]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbPanelTitle, decorators: [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPanelTitle]' }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n/**\n * A directive that wraps the accordion panel content.\n */\nclass NgbPanelContent {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNgbPanelContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbPanelContent, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgbPanelContent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgbPanelContent, selector: \"ng-template[ngbPanelContent]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbPanelContent, decorators: [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPanelContent]' }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n/**\n * A directive that wraps an individual accordion panel with title and collapsible content.\n */\nclass NgbPanel {\n constructor() {\n /**\n * If `true`, the panel is disabled an can't be toggled.\n */\n this.disabled = false;\n /**\n * An optional id for the panel that must be unique on the page.\n *\n * If not provided, it will be auto-generated in the `ngb-panel-xxx` format.\n */\n this.id = `ngb-panel-${nextId$3++}`;\n this.isOpen = false;\n /* A flag to specified that the transition panel classes have been initialized */\n this.initClassDone = false;\n /* A flag to specified if the panel is currently being animated, to ensure its presence in the dom */\n this.transitionRunning = false;\n /**\n * An event emitted when the panel is shown, after the transition. It has no payload.\n *\n * @since 8.0.0\n */\n this.shown = new EventEmitter();\n /**\n * An event emitted when the panel is hidden, after the transition. It has no payload.\n *\n * @since 8.0.0\n */\n this.hidden = new EventEmitter();\n }\n ngAfterContentChecked() {\n // We are using @ContentChildren instead of @ContentChild as in the Angular version being used\n // only @ContentChildren allows us to specify the {descendants: false} option.\n // Without {descendants: false} we are hitting bugs described in:\n // https://github.com/ng-bootstrap/ng-bootstrap/issues/2240\n this.titleTpl = this.titleTpls.first;\n this.headerTpl = this.headerTpls.first;\n this.contentTpl = this.contentTpls.first;\n }\n}\nNgbPanel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbPanel, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nNgbPanel.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgbPanel, selector: \"ngb-panel\", inputs: { disabled: \"disabled\", id: \"id\", title: \"title\", type: \"type\", cardClass: \"cardClass\" }, outputs: { shown: \"shown\", hidden: \"hidden\" }, queries: [{ propertyName: \"titleTpls\", predicate: NgbPanelTitle }, { propertyName: \"headerTpls\", predicate: NgbPanelHeader }, { propertyName: \"contentTpls\", predicate: NgbPanelContent }], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbPanel, decorators: [{\n type: Directive,\n args: [{ selector: 'ngb-panel' }]\n }], propDecorators: { disabled: [{\n type: Input\n }], id: [{\n type: Input\n }], title: [{\n type: Input\n }], type: [{\n type: Input\n }], cardClass: [{\n type: Input\n }], shown: [{\n type: Output\n }], hidden: [{\n type: Output\n }], titleTpls: [{\n type: ContentChildren,\n args: [NgbPanelTitle, { descendants: false }]\n }], headerTpls: [{\n type: ContentChildren,\n args: [NgbPanelHeader, { descendants: false }]\n }], contentTpls: [{\n type: ContentChildren,\n args: [NgbPanelContent, { descendants: false }]\n }] } });\nclass NgbRefDirective {\n constructor(_El) {\n this._El = _El;\n this.ngbRef = new EventEmitter();\n }\n ngOnInit() {\n this.ngbRef.emit(this._El.nativeElement);\n }\n ngOnDestroy() {\n this.ngbRef.emit(null);\n }\n}\nNgbRefDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbRefDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgbRefDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgbRefDirective, selector: \"[ngbRef]\", outputs: { ngbRef: \"ngbRef\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbRefDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[ngbRef]' }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { ngbRef: [{\n type: Output\n }] } });\n/**\n * Accordion is a collection of collapsible panels (bootstrap cards).\n *\n * It can ensure only one panel is opened at a time and allows to customize panel\n * headers.\n */\nclass NgbAccordion {\n constructor(config, _ngZone, _changeDetector) {\n this._ngZone = _ngZone;\n this._changeDetector = _changeDetector;\n /**\n * An array or comma separated strings of panel ids that should be opened **initially**.\n *\n * For subsequent changes use methods like `expand()`, `collapse()`, etc. and\n * the `(panelChange)` event.\n */\n this.activeIds = [];\n /**\n * If `true`, panel content will be detached from DOM and not simply hidden when the panel is collapsed.\n */\n this.destroyOnHide = true;\n /**\n * Event emitted right before the panel toggle happens.\n *\n * See [NgbPanelChangeEvent](#/components/accordion/api#NgbPanelChangeEvent) for payload details.\n */\n this.panelChange = new EventEmitter();\n /**\n * An event emitted when the expanding animation is finished on the panel. The payload is the panel id.\n *\n * @since 8.0.0\n */\n this.shown = new EventEmitter();\n /**\n * An event emitted when the collapsing animation is finished on the panel, and before the panel element is removed.\n * The payload is the panel id.\n *\n * @since 8.0.0\n */\n this.hidden = new EventEmitter();\n this.animation = config.animation;\n this.type = config.type;\n this.closeOtherPanels = config.closeOthers;\n }\n /**\n * Checks if a panel with a given id is expanded.\n */\n isExpanded(panelId) {\n return this.activeIds.indexOf(panelId) > -1;\n }\n /**\n * Expands a panel with a given id.\n *\n * Has no effect if the panel is already expanded or disabled.\n */\n expand(panelId) {\n this._changeOpenState(this._findPanelById(panelId), true);\n }\n /**\n * Expands all panels, if `[closeOthers]` is `false`.\n *\n * If `[closeOthers]` is `true`, it will expand the first panel, unless there is already a panel opened.\n */\n expandAll() {\n if (this.closeOtherPanels) {\n if (this.activeIds.length === 0 && this.panels.length) {\n this._changeOpenState(this.panels.first, true);\n }\n }\n else {\n this.panels.forEach((panel) => this._changeOpenState(panel, true));\n }\n }\n /**\n * Collapses a panel with the given id.\n *\n * Has no effect if the panel is already collapsed or disabled.\n */\n collapse(panelId) {\n this._changeOpenState(this._findPanelById(panelId), false);\n }\n /**\n * Collapses all opened panels.\n */\n collapseAll() {\n this.panels.forEach((panel) => {\n this._changeOpenState(panel, false);\n });\n }\n /**\n * Toggles a panel with the given id.\n *\n * Has no effect if the panel is disabled.\n */\n toggle(panelId) {\n const panel = this._findPanelById(panelId);\n if (panel) {\n this._changeOpenState(panel, !panel.isOpen);\n }\n }\n ngAfterContentChecked() {\n // active id updates\n if (isString(this.activeIds)) {\n this.activeIds = this.activeIds.split(/\\s*,\\s*/);\n }\n // update panels open states\n this.panels.forEach((panel) => {\n panel.isOpen = !panel.disabled && this.activeIds.indexOf(panel.id) > -1;\n });\n // closeOthers updates\n if (this.activeIds.length > 1 && this.closeOtherPanels) {\n this._closeOthers(this.activeIds[0], false);\n this._updateActiveIds();\n }\n // Setup the initial classes here\n this._ngZone.onStable.pipe(take(1)).subscribe(() => {\n this.panels.forEach((panel) => {\n const panelElement = panel.panelDiv;\n if (panelElement) {\n if (!panel.initClassDone) {\n panel.initClassDone = true;\n ngbRunTransition(this._ngZone, panelElement, ngbCollapsingTransition, {\n animation: false,\n runningTransition: 'continue',\n context: { direction: panel.isOpen ? 'show' : 'hide', dimension: 'height' },\n });\n }\n }\n else {\n // Classes must be initialized next time it will be in the dom\n panel.initClassDone = false;\n }\n });\n });\n }\n _changeOpenState(panel, nextState) {\n if (panel != null && !panel.disabled && panel.isOpen !== nextState) {\n let defaultPrevented = false;\n this.panelChange.emit({\n panelId: panel.id,\n nextState: nextState,\n preventDefault: () => {\n defaultPrevented = true;\n },\n });\n if (!defaultPrevented) {\n panel.isOpen = nextState;\n panel.transitionRunning = true;\n if (nextState && this.closeOtherPanels) {\n this._closeOthers(panel.id);\n }\n this._updateActiveIds();\n this._runTransitions(this.animation);\n }\n }\n }\n _closeOthers(panelId, enableTransition = true) {\n this.panels.forEach((panel) => {\n if (panel.id !== panelId && panel.isOpen) {\n panel.isOpen = false;\n panel.transitionRunning = enableTransition;\n }\n });\n }\n _findPanelById(panelId) {\n return this.panels.find((p) => p.id === panelId) || null;\n }\n _updateActiveIds() {\n this.activeIds = this.panels.filter((panel) => panel.isOpen && !panel.disabled).map((panel) => panel.id);\n }\n _runTransitions(animation) {\n // detectChanges is performed to ensure that all panels are in the dom (via transitionRunning = true)\n // before starting the animation\n this._changeDetector.detectChanges();\n this.panels.forEach((panel) => {\n // When panel.transitionRunning is true, the transition needs to be started OR reversed,\n // The direction (show or hide) is choosen by each panel.isOpen state\n if (panel.transitionRunning) {\n const panelElement = panel.panelDiv;\n ngbRunTransition(this._ngZone, panelElement, ngbCollapsingTransition, {\n animation,\n runningTransition: 'stop',\n context: { direction: panel.isOpen ? 'show' : 'hide', dimension: 'height' },\n }).subscribe(() => {\n panel.transitionRunning = false;\n const { id } = panel;\n if (panel.isOpen) {\n panel.shown.emit();\n this.shown.emit(id);\n }\n else {\n panel.hidden.emit();\n this.hidden.emit(id);\n }\n });\n }\n });\n }\n}\nNgbAccordion.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbAccordion, deps: [{ token: NgbAccordionConfig }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nNgbAccordion.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgbAccordion, selector: \"ngb-accordion\", inputs: { animation: \"animation\", activeIds: \"activeIds\", closeOtherPanels: [\"closeOthers\", \"closeOtherPanels\"], destroyOnHide: \"destroyOnHide\", type: \"type\" }, outputs: { panelChange: \"panelChange\", shown: \"shown\", hidden: \"hidden\" }, host: { attributes: { \"role\": \"tablist\" }, properties: { \"attr.aria-multiselectable\": \"!closeOtherPanels\" }, classAttribute: \"accordion\" }, queries: [{ propertyName: \"panels\", predicate: NgbPanel }], exportAs: [\"ngbAccordion\"], ngImport: i0, template: `\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\n\t\t\t\n\t\t
    \n\t`, isInline: true, dependencies: [{ kind: \"directive\", type: i0.forwardRef(function () { return i2.NgForOf; }), selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i0.forwardRef(function () { return i2.NgIf; }), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i0.forwardRef(function () { return i2.NgTemplateOutlet; }), selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i0.forwardRef(function () { return NgbRefDirective; }), selector: \"[ngbRef]\", outputs: [\"ngbRef\"] }, { kind: \"directive\", type: i0.forwardRef(function () { return NgbPanelHeader; }), selector: \"ng-template[ngbPanelHeader]\" }, { kind: \"directive\", type: i0.forwardRef(function () { return NgbPanelToggle; }), selector: \"button[ngbPanelToggle]\", inputs: [\"ngbPanelToggle\"] }], encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbAccordion, decorators: [{\n type: Component,\n args: [{\n selector: 'ngb-accordion',\n exportAs: 'ngbAccordion',\n encapsulation: ViewEncapsulation.None,\n host: { class: 'accordion', role: 'tablist', '[attr.aria-multiselectable]': '!closeOtherPanels' },\n template: `\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\n\t\t\t\n\t\t
    \n\t`,\n }]\n }], ctorParameters: function () { return [{ type: NgbAccordionConfig }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { panels: [{\n type: ContentChildren,\n args: [NgbPanel]\n }], animation: [{\n type: Input\n }], activeIds: [{\n type: Input\n }], closeOtherPanels: [{\n type: Input,\n args: ['closeOthers']\n }], destroyOnHide: [{\n type: Input\n }], type: [{\n type: Input\n }], panelChange: [{\n type: Output\n }], shown: [{\n type: Output\n }], hidden: [{\n type: Output\n }] } });\n/**\n * A directive to put on a button that toggles panel opening and closing.\n *\n * To be used inside the [`NgbPanelHeader`](#/components/accordion/api#NgbPanelHeader)\n *\n * @since 4.1.0\n */\nclass NgbPanelToggle {\n constructor(accordion, panel) {\n this.accordion = accordion;\n this.panel = panel;\n }\n set ngbPanelToggle(panel) {\n if (panel) {\n this.panel = panel;\n }\n }\n}\nNgbPanelToggle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbPanelToggle, deps: [{ token: NgbAccordion }, { token: NgbPanel, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nNgbPanelToggle.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgbPanelToggle, selector: \"button[ngbPanelToggle]\", inputs: { ngbPanelToggle: \"ngbPanelToggle\" }, host: { attributes: { \"type\": \"button\" }, listeners: { \"click\": \"accordion.toggle(panel.id)\" }, properties: { \"disabled\": \"panel.disabled\", \"class.collapsed\": \"!panel.isOpen\", \"attr.aria-expanded\": \"panel.isOpen\", \"attr.aria-controls\": \"panel.id\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbPanelToggle, decorators: [{\n type: Directive,\n args: [{\n selector: 'button[ngbPanelToggle]',\n host: {\n type: 'button',\n '[disabled]': 'panel.disabled',\n '[class.collapsed]': '!panel.isOpen',\n '[attr.aria-expanded]': 'panel.isOpen',\n '[attr.aria-controls]': 'panel.id',\n '(click)': 'accordion.toggle(panel.id)',\n },\n }]\n }], ctorParameters: function () { return [{ type: NgbAccordion }, { type: NgbPanel, decorators: [{\n type: Optional\n }, {\n type: Host\n }] }]; }, propDecorators: { ngbPanelToggle: [{\n type: Input\n }] } });\n\nconst NGB_ACCORDION_DIRECTIVES = [\n NgbAccordion,\n NgbPanel,\n NgbPanelTitle,\n NgbPanelContent,\n NgbPanelHeader,\n NgbPanelToggle,\n];\nclass NgbAccordionModule {\n}\nNgbAccordionModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbAccordionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNgbAccordionModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbAccordionModule, declarations: [NgbRefDirective, NgbAccordion,\n NgbPanel,\n NgbPanelTitle,\n NgbPanelContent,\n NgbPanelHeader,\n NgbPanelToggle], imports: [CommonModule], exports: [NgbAccordion,\n NgbPanel,\n NgbPanelTitle,\n NgbPanelContent,\n NgbPanelHeader,\n NgbPanelToggle] });\nNgbAccordionModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbAccordionModule, imports: [CommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbAccordionModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [NgbRefDirective, ...NGB_ACCORDION_DIRECTIVES],\n exports: NGB_ACCORDION_DIRECTIVES,\n imports: [CommonModule],\n }]\n }] });\n\nconst ngbAlertFadingTransition = ({ classList }) => {\n classList.remove('show');\n};\n\n/**\n * A configuration service for the [NgbAlert](#/components/alert/api#NgbAlert) component.\n *\n * You can inject this service, typically in your root component, and customize its properties\n * to provide default values for all alerts used in the application.\n */\nclass NgbAlertConfig {\n constructor(_ngbConfig) {\n this._ngbConfig = _ngbConfig;\n this.dismissible = true;\n this.type = 'warning';\n }\n get animation() {\n return this._animation === undefined ? this._ngbConfig.animation : this._animation;\n }\n set animation(animation) {\n this._animation = animation;\n }\n}\nNgbAlertConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbAlertConfig, deps: [{ token: NgbConfig }], target: i0.ɵɵFactoryTarget.Injectable });\nNgbAlertConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbAlertConfig, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbAlertConfig, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: NgbConfig }]; } });\n\n/**\n * Alert is a component to provide contextual feedback messages for user.\n *\n * It supports several alert types and can be dismissed.\n */\nclass NgbAlert {\n constructor(config, _renderer, _element, _zone) {\n this._renderer = _renderer;\n this._element = _element;\n this._zone = _zone;\n /**\n * An event emitted when the close button is clicked. It has no payload and only relevant for dismissible alerts.\n *\n * @since 8.0.0\n */\n this.closed = new EventEmitter();\n this.dismissible = config.dismissible;\n this.type = config.type;\n this.animation = config.animation;\n }\n /**\n * Triggers alert closing programmatically (same as clicking on the close button (×)).\n *\n * The returned observable will emit and be completed once the closing transition has finished.\n * If the animations are turned off this happens synchronously.\n *\n * Alternatively you could listen or subscribe to the `(closed)` output\n *\n * @since 8.0.0\n */\n close() {\n const transition = ngbRunTransition(this._zone, this._element.nativeElement, ngbAlertFadingTransition, {\n animation: this.animation,\n runningTransition: 'continue',\n });\n transition.subscribe(() => this.closed.emit());\n return transition;\n }\n ngOnChanges(changes) {\n const typeChange = changes['type'];\n if (typeChange && !typeChange.firstChange) {\n this._renderer.removeClass(this._element.nativeElement, `alert-${typeChange.previousValue}`);\n this._renderer.addClass(this._element.nativeElement, `alert-${typeChange.currentValue}`);\n }\n }\n ngOnInit() {\n this._renderer.addClass(this._element.nativeElement, `alert-${this.type}`);\n }\n}\nNgbAlert.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbAlert, deps: [{ token: NgbAlertConfig }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nNgbAlert.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgbAlert, selector: \"ngb-alert\", inputs: { animation: \"animation\", dismissible: \"dismissible\", type: \"type\" }, outputs: { closed: \"closed\" }, host: { attributes: { \"role\": \"alert\" }, properties: { \"class.fade\": \"animation\", \"class.alert-dismissible\": \"dismissible\" }, classAttribute: \"alert show\" }, exportAs: [\"ngbAlert\"], usesOnChanges: true, ngImport: i0, template: `\n\t\t\n\t\t\n\t\t\n\t`, isInline: true, styles: [\"ngb-alert{display:block}\\n\"], dependencies: [{ kind: \"directive\", type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbAlert, decorators: [{\n type: Component,\n args: [{ selector: 'ngb-alert', exportAs: 'ngbAlert', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { role: 'alert', class: 'alert show', '[class.fade]': 'animation', '[class.alert-dismissible]': 'dismissible' }, template: `\n\t\t\n\t\t\n\t\t\n\t`, styles: [\"ngb-alert{display:block}\\n\"] }]\n }], ctorParameters: function () { return [{ type: NgbAlertConfig }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { animation: [{\n type: Input\n }], dismissible: [{\n type: Input\n }], type: [{\n type: Input\n }], closed: [{\n type: Output\n }] } });\n\nclass NgbAlertModule {\n}\nNgbAlertModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbAlertModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNgbAlertModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbAlertModule, declarations: [NgbAlert], imports: [CommonModule], exports: [NgbAlert] });\nNgbAlertModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbAlertModule, imports: [CommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbAlertModule, decorators: [{\n type: NgModule,\n args: [{ declarations: [NgbAlert], exports: [NgbAlert], imports: [CommonModule] }]\n }] });\n\n/**\n * Defines the carousel slide transition direction.\n */\nvar NgbSlideEventDirection;\n(function (NgbSlideEventDirection) {\n NgbSlideEventDirection[\"START\"] = \"start\";\n NgbSlideEventDirection[\"END\"] = \"end\";\n})(NgbSlideEventDirection || (NgbSlideEventDirection = {}));\nconst isBeingAnimated = ({ classList }) => {\n return classList.contains('carousel-item-start') || classList.contains('carousel-item-end');\n};\nconst removeDirectionClasses = (classList) => {\n classList.remove('carousel-item-start');\n classList.remove('carousel-item-end');\n};\nconst removeClasses = (classList) => {\n removeDirectionClasses(classList);\n classList.remove('carousel-item-prev');\n classList.remove('carousel-item-next');\n};\nconst ngbCarouselTransitionIn = (element, animation, { direction }) => {\n const { classList } = element;\n if (!animation) {\n removeDirectionClasses(classList);\n removeClasses(classList);\n classList.add('active');\n return;\n }\n if (isBeingAnimated(element)) {\n // Revert the transition\n removeDirectionClasses(classList);\n }\n else {\n // For the 'in' transition, a 'pre-class' is applied to the element to ensure its visibility\n classList.add('carousel-item-' + (direction === NgbSlideEventDirection.START ? 'next' : 'prev'));\n reflow(element);\n classList.add('carousel-item-' + direction);\n }\n return () => {\n removeClasses(classList);\n classList.add('active');\n };\n};\nconst ngbCarouselTransitionOut = (element, animation, { direction }) => {\n const { classList } = element;\n if (!animation) {\n removeDirectionClasses(classList);\n removeClasses(classList);\n classList.remove('active');\n return;\n }\n // direction is left or right, depending on the way the slide goes out.\n if (isBeingAnimated(element)) {\n // Revert the transition\n removeDirectionClasses(classList);\n }\n else {\n classList.add('carousel-item-' + direction);\n }\n return () => {\n removeClasses(classList);\n classList.remove('active');\n };\n};\n\n/**\n * A configuration service for the [NgbCarousel](#/components/carousel/api#NgbCarousel) component.\n *\n * You can inject this service, typically in your root component, and customize its properties\n * to provide default values for all carousels used in the application.\n */\nclass NgbCarouselConfig {\n constructor(_ngbConfig) {\n this._ngbConfig = _ngbConfig;\n this.interval = 5000;\n this.wrap = true;\n this.keyboard = true;\n this.pauseOnHover = true;\n this.pauseOnFocus = true;\n this.showNavigationArrows = true;\n this.showNavigationIndicators = true;\n }\n get animation() {\n return this._animation === undefined ? this._ngbConfig.animation : this._animation;\n }\n set animation(animation) {\n this._animation = animation;\n }\n}\nNgbCarouselConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbCarouselConfig, deps: [{ token: NgbConfig }], target: i0.ɵɵFactoryTarget.Injectable });\nNgbCarouselConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbCarouselConfig, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbCarouselConfig, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: NgbConfig }]; } });\n\nlet nextId$2 = 0;\n/**\n * A directive that wraps the individual carousel slide.\n */\nclass NgbSlide {\n constructor(tplRef) {\n this.tplRef = tplRef;\n /**\n * Slide id that must be unique for the entire document.\n *\n * If not provided, will be generated in the `ngb-slide-xx` format.\n */\n this.id = `ngb-slide-${nextId$2++}`;\n /**\n * An event emitted when the slide transition is finished\n *\n * @since 8.0.0\n */\n this.slid = new EventEmitter();\n }\n}\nNgbSlide.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbSlide, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgbSlide.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgbSlide, selector: \"ng-template[ngbSlide]\", inputs: { id: \"id\" }, outputs: { slid: \"slid\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbSlide, decorators: [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbSlide]' }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; }, propDecorators: { id: [{\n type: Input\n }], slid: [{\n type: Output\n }] } });\n/**\n * Carousel is a component to easily create and control slideshows.\n *\n * Allows to set intervals, change the way user interacts with the slides and provides a programmatic API.\n */\nclass NgbCarousel {\n constructor(config, _platformId, _ngZone, _cd, _container) {\n this._platformId = _platformId;\n this._ngZone = _ngZone;\n this._cd = _cd;\n this._container = _container;\n this.NgbSlideEventSource = NgbSlideEventSource;\n this._destroy$ = new Subject();\n this._interval$ = new BehaviorSubject(0);\n this._mouseHover$ = new BehaviorSubject(false);\n this._focused$ = new BehaviorSubject(false);\n this._pauseOnHover$ = new BehaviorSubject(false);\n this._pauseOnFocus$ = new BehaviorSubject(false);\n this._pause$ = new BehaviorSubject(false);\n this._wrap$ = new BehaviorSubject(false);\n /**\n * An event emitted just before the slide transition starts.\n *\n * See [`NgbSlideEvent`](#/components/carousel/api#NgbSlideEvent) for payload details.\n */\n this.slide = new EventEmitter();\n /**\n * An event emitted right after the slide transition is completed.\n *\n * See [`NgbSlideEvent`](#/components/carousel/api#NgbSlideEvent) for payload details.\n *\n * @since 8.0.0\n */\n this.slid = new EventEmitter();\n /*\n * Keep the ids of the panels currently transitionning\n * in order to allow only the transition revertion\n */\n this._transitionIds = null;\n this.animation = config.animation;\n this.interval = config.interval;\n this.wrap = config.wrap;\n this.keyboard = config.keyboard;\n this.pauseOnHover = config.pauseOnHover;\n this.pauseOnFocus = config.pauseOnFocus;\n this.showNavigationArrows = config.showNavigationArrows;\n this.showNavigationIndicators = config.showNavigationIndicators;\n }\n /**\n * Time in milliseconds before the next slide is shown.\n */\n set interval(value) {\n this._interval$.next(value);\n }\n get interval() {\n return this._interval$.value;\n }\n /**\n * If `true`, will 'wrap' the carousel by switching from the last slide back to the first.\n */\n set wrap(value) {\n this._wrap$.next(value);\n }\n get wrap() {\n return this._wrap$.value;\n }\n /**\n * If `true`, will pause slide switching when mouse cursor hovers the slide.\n *\n * @since 2.2.0\n */\n set pauseOnHover(value) {\n this._pauseOnHover$.next(value);\n }\n get pauseOnHover() {\n return this._pauseOnHover$.value;\n }\n /**\n * If `true`, will pause slide switching when the focus is inside the carousel.\n */\n set pauseOnFocus(value) {\n this._pauseOnFocus$.next(value);\n }\n get pauseOnFocus() {\n return this._pauseOnFocus$.value;\n }\n set mouseHover(value) {\n this._mouseHover$.next(value);\n }\n get mouseHover() {\n return this._mouseHover$.value;\n }\n set focused(value) {\n this._focused$.next(value);\n }\n get focused() {\n return this._focused$.value;\n }\n arrowLeft() {\n this.focus();\n this.prev(NgbSlideEventSource.ARROW_LEFT);\n }\n arrowRight() {\n this.focus();\n this.next(NgbSlideEventSource.ARROW_RIGHT);\n }\n ngAfterContentInit() {\n // setInterval() doesn't play well with SSR and protractor,\n // so we should run it in the browser and outside Angular\n if (isPlatformBrowser(this._platformId)) {\n this._ngZone.runOutsideAngular(() => {\n const hasNextSlide$ = combineLatest([\n this.slide.pipe(map((slideEvent) => slideEvent.current), startWith(this.activeId)),\n this._wrap$,\n this.slides.changes.pipe(startWith(null)),\n ]).pipe(map(([currentSlideId, wrap]) => {\n const slideArr = this.slides.toArray();\n const currentSlideIdx = this._getSlideIdxById(currentSlideId);\n return wrap ? slideArr.length > 1 : currentSlideIdx < slideArr.length - 1;\n }), distinctUntilChanged());\n combineLatest([\n this._pause$,\n this._pauseOnHover$,\n this._mouseHover$,\n this._pauseOnFocus$,\n this._focused$,\n this._interval$,\n hasNextSlide$,\n ])\n .pipe(map(([pause, pauseOnHover, mouseHover, pauseOnFocus, focused, interval, hasNextSlide]) => pause || (pauseOnHover && mouseHover) || (pauseOnFocus && focused) || !hasNextSlide ? 0 : interval), distinctUntilChanged(), switchMap((interval) => (interval > 0 ? timer(interval, interval) : NEVER)), takeUntil(this._destroy$))\n .subscribe(() => this._ngZone.run(() => this.next(NgbSlideEventSource.TIMER)));\n });\n }\n this.slides.changes.pipe(takeUntil(this._destroy$)).subscribe(() => {\n this._transitionIds?.forEach((id) => ngbCompleteTransition(this._getSlideElement(id)));\n this._transitionIds = null;\n this._cd.markForCheck();\n // The following code need to be done asynchronously, after the dom becomes stable,\n // otherwise all changes will be undone.\n this._ngZone.onStable.pipe(take(1)).subscribe(() => {\n for (const { id } of this.slides) {\n const element = this._getSlideElement(id);\n if (id === this.activeId) {\n element.classList.add('active');\n }\n else {\n element.classList.remove('active');\n }\n }\n });\n });\n }\n ngAfterContentChecked() {\n let activeSlide = this._getSlideById(this.activeId);\n this.activeId = activeSlide ? activeSlide.id : this.slides.length ? this.slides.first.id : '';\n }\n ngAfterViewInit() {\n // Initialize the 'active' class (not managed by the template)\n if (this.activeId) {\n const element = this._getSlideElement(this.activeId);\n if (element) {\n element.classList.add('active');\n }\n }\n }\n ngOnDestroy() {\n this._destroy$.next();\n }\n /**\n * Navigates to a slide with the specified identifier.\n */\n select(slideId, source) {\n this._cycleToSelected(slideId, this._getSlideEventDirection(this.activeId, slideId), source);\n }\n /**\n * Navigates to the previous slide.\n */\n prev(source) {\n this._cycleToSelected(this._getPrevSlide(this.activeId), NgbSlideEventDirection.END, source);\n }\n /**\n * Navigates to the next slide.\n */\n next(source) {\n this._cycleToSelected(this._getNextSlide(this.activeId), NgbSlideEventDirection.START, source);\n }\n /**\n * Pauses cycling through the slides.\n */\n pause() {\n this._pause$.next(true);\n }\n /**\n * Restarts cycling through the slides from start to end.\n */\n cycle() {\n this._pause$.next(false);\n }\n /**\n * Set the focus on the carousel.\n */\n focus() {\n this._container.nativeElement.focus();\n }\n _cycleToSelected(slideIdx, direction, source) {\n const transitionIds = this._transitionIds;\n if (transitionIds && (transitionIds[0] !== slideIdx || transitionIds[1] !== this.activeId)) {\n // Revert prevented\n return;\n }\n let selectedSlide = this._getSlideById(slideIdx);\n if (selectedSlide && selectedSlide.id !== this.activeId) {\n this._transitionIds = [this.activeId, slideIdx];\n this.slide.emit({\n prev: this.activeId,\n current: selectedSlide.id,\n direction: direction,\n paused: this._pause$.value,\n source,\n });\n const options = {\n animation: this.animation,\n runningTransition: 'stop',\n context: { direction },\n };\n const transitions = [];\n const activeSlide = this._getSlideById(this.activeId);\n if (activeSlide) {\n const activeSlideTransition = ngbRunTransition(this._ngZone, this._getSlideElement(activeSlide.id), ngbCarouselTransitionOut, options);\n activeSlideTransition.subscribe(() => {\n activeSlide.slid.emit({ isShown: false, direction, source });\n });\n transitions.push(activeSlideTransition);\n }\n const previousId = this.activeId;\n this.activeId = selectedSlide.id;\n const nextSlide = this._getSlideById(this.activeId);\n const transition = ngbRunTransition(this._ngZone, this._getSlideElement(selectedSlide.id), ngbCarouselTransitionIn, options);\n transition.subscribe(() => {\n nextSlide?.slid.emit({ isShown: true, direction, source });\n });\n transitions.push(transition);\n zip(...transitions)\n .pipe(take(1))\n .subscribe(() => {\n this._transitionIds = null;\n this.slid.emit({\n prev: previousId,\n current: selectedSlide.id,\n direction: direction,\n paused: this._pause$.value,\n source,\n });\n });\n }\n // we get here after the interval fires or any external API call like next(), prev() or select()\n this._cd.markForCheck();\n }\n _getSlideEventDirection(currentActiveSlideId, nextActiveSlideId) {\n const currentActiveSlideIdx = this._getSlideIdxById(currentActiveSlideId);\n const nextActiveSlideIdx = this._getSlideIdxById(nextActiveSlideId);\n return currentActiveSlideIdx > nextActiveSlideIdx ? NgbSlideEventDirection.END : NgbSlideEventDirection.START;\n }\n _getSlideById(slideId) {\n return this.slides.find((slide) => slide.id === slideId) || null;\n }\n _getSlideIdxById(slideId) {\n const slide = this._getSlideById(slideId);\n return slide != null ? this.slides.toArray().indexOf(slide) : -1;\n }\n _getNextSlide(currentSlideId) {\n const slideArr = this.slides.toArray();\n const currentSlideIdx = this._getSlideIdxById(currentSlideId);\n const isLastSlide = currentSlideIdx === slideArr.length - 1;\n return isLastSlide\n ? this.wrap\n ? slideArr[0].id\n : slideArr[slideArr.length - 1].id\n : slideArr[currentSlideIdx + 1].id;\n }\n _getPrevSlide(currentSlideId) {\n const slideArr = this.slides.toArray();\n const currentSlideIdx = this._getSlideIdxById(currentSlideId);\n const isFirstSlide = currentSlideIdx === 0;\n return isFirstSlide\n ? this.wrap\n ? slideArr[slideArr.length - 1].id\n : slideArr[0].id\n : slideArr[currentSlideIdx - 1].id;\n }\n _getSlideElement(slideId) {\n return this._container.nativeElement.querySelector(`#slide-${slideId}`);\n }\n}\nNgbCarousel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbCarousel, deps: [{ token: NgbCarouselConfig }, { token: PLATFORM_ID }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nNgbCarousel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgbCarousel, selector: \"ngb-carousel\", inputs: { animation: \"animation\", activeId: \"activeId\", interval: \"interval\", wrap: \"wrap\", keyboard: \"keyboard\", pauseOnHover: \"pauseOnHover\", pauseOnFocus: \"pauseOnFocus\", showNavigationArrows: \"showNavigationArrows\", showNavigationIndicators: \"showNavigationIndicators\" }, outputs: { slide: \"slide\", slid: \"slid\" }, host: { attributes: { \"tabIndex\": \"0\" }, listeners: { \"keydown.arrowLeft\": \"keyboard && arrowLeft()\", \"keydown.arrowRight\": \"keyboard && arrowRight()\", \"mouseenter\": \"mouseHover = true\", \"mouseleave\": \"mouseHover = false\", \"focusin\": \"focused = true\", \"focusout\": \"focused = false\" }, properties: { \"style.display\": \"\\\"block\\\"\", \"attr.aria-activedescendant\": \"'slide-' + activeId\" }, classAttribute: \"carousel slide\" }, queries: [{ propertyName: \"slides\", predicate: NgbSlide }], exportAs: [\"ngbCarousel\"], ngImport: i0, template: `\n\t\t
    \n\t\t\t\n\t\t
    \n\t\t
    \n\t\t\t\n\t\t\t\t\n\t\t\t\t\tSlide {{ i + 1 }} of {{ c }}\n\t\t\t\t\n\t\t\t\t\n\t\t\t
    \n\t\t\n\t\t\n\t\t\n\t`, isInline: true, 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.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbCarousel, decorators: [{\n type: Component,\n args: [{\n selector: 'ngb-carousel',\n exportAs: 'ngbCarousel',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'carousel slide',\n '[style.display]': '\"block\"',\n tabIndex: '0',\n '(keydown.arrowLeft)': 'keyboard && arrowLeft()',\n '(keydown.arrowRight)': 'keyboard && arrowRight()',\n '(mouseenter)': 'mouseHover = true',\n '(mouseleave)': 'mouseHover = false',\n '(focusin)': 'focused = true',\n '(focusout)': 'focused = false',\n '[attr.aria-activedescendant]': `'slide-' + activeId`,\n },\n template: `\n\t\t
    \n\t\t\t\n\t\t
    \n\t\t
    \n\t\t\t\n\t\t\t\t\n\t\t\t\t\tSlide {{ i + 1 }} of {{ c }}\n\t\t\t\t\n\t\t\t\t\n\t\t\t
    \n\t\t\n\t\t\n\t\t\n\t`,\n }]\n }], ctorParameters: function () { return [{ type: NgbCarouselConfig }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { slides: [{\n type: ContentChildren,\n args: [NgbSlide]\n }], animation: [{\n type: Input\n }], activeId: [{\n type: Input\n }], interval: [{\n type: Input\n }], wrap: [{\n type: Input\n }], keyboard: [{\n type: Input\n }], pauseOnHover: [{\n type: Input\n }], pauseOnFocus: [{\n type: Input\n }], showNavigationArrows: [{\n type: Input\n }], showNavigationIndicators: [{\n type: Input\n }], slide: [{\n type: Output\n }], slid: [{\n type: Output\n }] } });\nvar NgbSlideEventSource;\n(function (NgbSlideEventSource) {\n NgbSlideEventSource[\"TIMER\"] = \"timer\";\n NgbSlideEventSource[\"ARROW_LEFT\"] = \"arrowLeft\";\n NgbSlideEventSource[\"ARROW_RIGHT\"] = \"arrowRight\";\n NgbSlideEventSource[\"INDICATOR\"] = \"indicator\";\n})(NgbSlideEventSource || (NgbSlideEventSource = {}));\nconst NGB_CAROUSEL_DIRECTIVES = [NgbCarousel, NgbSlide];\n\nclass NgbCarouselModule {\n}\nNgbCarouselModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbCarouselModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNgbCarouselModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbCarouselModule, declarations: [NgbCarousel, NgbSlide], imports: [CommonModule], exports: [NgbCarousel, NgbSlide] });\nNgbCarouselModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbCarouselModule, imports: [CommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbCarouselModule, decorators: [{\n type: NgModule,\n args: [{ declarations: NGB_CAROUSEL_DIRECTIVES, exports: NGB_CAROUSEL_DIRECTIVES, imports: [CommonModule] }]\n }] });\n\n/**\n * A configuration service for the [NgbCollapse](#/components/collapse/api#NgbCollapse) component.\n *\n * You can inject this service, typically in your root component, and customize its properties\n * to provide default values for all collapses used in the application.\n */\nclass NgbCollapseConfig {\n constructor(_ngbConfig) {\n this._ngbConfig = _ngbConfig;\n this.horizontal = false;\n }\n get animation() {\n return this._animation === undefined ? this._ngbConfig.animation : this._animation;\n }\n set animation(animation) {\n this._animation = animation;\n }\n}\nNgbCollapseConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbCollapseConfig, deps: [{ token: NgbConfig }], target: i0.ɵɵFactoryTarget.Injectable });\nNgbCollapseConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbCollapseConfig, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbCollapseConfig, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: NgbConfig }]; } });\n\n/**\n * A directive to provide a simple way of hiding and showing elements on the\n * page.\n */\nclass NgbCollapse {\n constructor(_element, config, _zone) {\n this._element = _element;\n this._zone = _zone;\n /**\n * Flag used to track if the collapse setter is invoked during initialization\n * or not. This distinction is made in order to avoid running the transition during initialization.\n */\n this._afterInit = false;\n this._isCollapsed = false;\n this.ngbCollapseChange = new EventEmitter();\n /**\n * An event emitted when the collapse element is shown, after the transition.\n * It has no payload.\n *\n * @since 8.0.0\n */\n this.shown = new EventEmitter();\n /**\n * An event emitted when the collapse element is hidden, after the transition.\n * It has no payload.\n *\n * @since 8.0.0\n */\n this.hidden = new EventEmitter();\n this.animation = config.animation;\n this.horizontal = config.horizontal;\n }\n /**\n * If `true`, will collapse the element or show it otherwise.\n */\n set collapsed(isCollapsed) {\n if (this._isCollapsed !== isCollapsed) {\n this._isCollapsed = isCollapsed;\n if (this._afterInit) {\n this._runTransitionWithEvents(isCollapsed, this.animation);\n }\n }\n }\n ngOnInit() {\n this._runTransition(this._isCollapsed, false);\n this._afterInit = true;\n }\n /**\n * Triggers collapsing programmatically.\n *\n * If there is a collapsing transition running already, it will be reversed.\n * If the animations are turned off this happens synchronously.\n *\n * @since 8.0.0\n */\n toggle(open = this._isCollapsed) {\n this.collapsed = !open;\n this.ngbCollapseChange.next(this._isCollapsed);\n }\n _runTransition(collapsed, animation) {\n return ngbRunTransition(this._zone, this._element.nativeElement, ngbCollapsingTransition, {\n animation,\n runningTransition: 'stop',\n context: { direction: collapsed ? 'hide' : 'show', dimension: this.horizontal ? 'width' : 'height' },\n });\n }\n _runTransitionWithEvents(collapsed, animation) {\n this._runTransition(collapsed, animation).subscribe(() => {\n if (collapsed) {\n this.hidden.emit();\n }\n else {\n this.shown.emit();\n }\n });\n }\n}\nNgbCollapse.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbCollapse, deps: [{ token: i0.ElementRef }, { token: NgbCollapseConfig }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nNgbCollapse.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgbCollapse, selector: \"[ngbCollapse]\", inputs: { animation: \"animation\", collapsed: [\"ngbCollapse\", \"collapsed\"], horizontal: \"horizontal\" }, outputs: { ngbCollapseChange: \"ngbCollapseChange\", shown: \"shown\", hidden: \"hidden\" }, host: { properties: { \"class.collapse-horizontal\": \"horizontal\" } }, exportAs: [\"ngbCollapse\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbCollapse, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngbCollapse]',\n exportAs: 'ngbCollapse',\n host: { '[class.collapse-horizontal]': 'horizontal' },\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: NgbCollapseConfig }, { type: i0.NgZone }]; }, propDecorators: { animation: [{\n type: Input\n }], collapsed: [{\n type: Input,\n args: ['ngbCollapse']\n }], ngbCollapseChange: [{\n type: Output\n }], horizontal: [{\n type: Input\n }], shown: [{\n type: Output\n }], hidden: [{\n type: Output\n }] } });\n\nclass NgbCollapseModule {\n}\nNgbCollapseModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbCollapseModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNgbCollapseModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbCollapseModule, declarations: [NgbCollapse], exports: [NgbCollapse] });\nNgbCollapseModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbCollapseModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbCollapseModule, decorators: [{\n type: NgModule,\n args: [{ declarations: [NgbCollapse], exports: [NgbCollapse] }]\n }] });\n\n/**\n * A simple class that represents a date that datepicker also uses internally.\n *\n * It is the implementation of the `NgbDateStruct` interface that adds some convenience methods,\n * like `.equals()`, `.before()`, etc.\n *\n * All datepicker APIs consume `NgbDateStruct`, but return `NgbDate`.\n *\n * In many cases it is simpler to manipulate these objects together with\n * [`NgbCalendar`](#/components/datepicker/api#NgbCalendar) than native JS Dates.\n *\n * See the [date format overview](#/components/datepicker/overview#date-model) for more details.\n *\n * @since 3.0.0\n */\nclass NgbDate {\n constructor(year, month, day) {\n this.year = isInteger(year) ? year : null;\n this.month = isInteger(month) ? month : null;\n this.day = isInteger(day) ? day : null;\n }\n /**\n * A **static method** that creates a new date object from the `NgbDateStruct`,\n *\n * ex. `NgbDate.from({year: 2000, month: 5, day: 1})`.\n *\n * If the `date` is already of `NgbDate` type, the method will return the same object.\n */\n static from(date) {\n if (date instanceof NgbDate) {\n return date;\n }\n return date ? new NgbDate(date.year, date.month, date.day) : null;\n }\n /**\n * Checks if the current date is equal to another date.\n */\n equals(other) {\n return other != null && this.year === other.year && this.month === other.month && this.day === other.day;\n }\n /**\n * Checks if the current date is before another date.\n */\n before(other) {\n if (!other) {\n return false;\n }\n if (this.year === other.year) {\n if (this.month === other.month) {\n return this.day === other.day ? false : this.day < other.day;\n }\n else {\n return this.month < other.month;\n }\n }\n else {\n return this.year < other.year;\n }\n }\n /**\n * Checks if the current date is after another date.\n */\n after(other) {\n if (!other) {\n return false;\n }\n if (this.year === other.year) {\n if (this.month === other.month) {\n return this.day === other.day ? false : this.day > other.day;\n }\n else {\n return this.month > other.month;\n }\n }\n else {\n return this.year > other.year;\n }\n }\n}\n\nfunction isChangedDate(prev, next) {\n return !dateComparator(prev, next);\n}\nfunction isChangedMonth(prev, next) {\n return !prev && !next ? false : !prev || !next ? true : prev.year !== next.year || prev.month !== next.month;\n}\nfunction dateComparator(prev, next) {\n return (!prev && !next) || (!!prev && !!next && prev.equals(next));\n}\nfunction checkMinBeforeMax(minDate, maxDate) {\n if (maxDate && minDate && maxDate.before(minDate)) {\n throw new Error(`'maxDate' ${maxDate} should be greater than 'minDate' ${minDate}`);\n }\n}\nfunction checkDateInRange(date, minDate, maxDate) {\n if (date && minDate && date.before(minDate)) {\n return minDate;\n }\n if (date && maxDate && date.after(maxDate)) {\n return maxDate;\n }\n return date || null;\n}\nfunction isDateSelectable(date, state) {\n const { minDate, maxDate, disabled, markDisabled } = state;\n return !(date === null ||\n date === undefined ||\n disabled ||\n (markDisabled && markDisabled(date, { year: date.year, month: date.month })) ||\n (minDate && date.before(minDate)) ||\n (maxDate && date.after(maxDate)));\n}\nfunction generateSelectBoxMonths(calendar, date, minDate, maxDate) {\n if (!date) {\n return [];\n }\n let months = calendar.getMonths(date.year);\n if (minDate && date.year === minDate.year) {\n const index = months.findIndex((month) => month === minDate.month);\n months = months.slice(index);\n }\n if (maxDate && date.year === maxDate.year) {\n const index = months.findIndex((month) => month === maxDate.month);\n months = months.slice(0, index + 1);\n }\n return months;\n}\nfunction generateSelectBoxYears(date, minDate, maxDate) {\n if (!date) {\n return [];\n }\n const start = minDate ? Math.max(minDate.year, date.year - 500) : date.year - 10;\n const end = maxDate ? Math.min(maxDate.year, date.year + 500) : date.year + 10;\n const length = end - start + 1;\n const numbers = Array(length);\n for (let i = 0; i < length; i++) {\n numbers[i] = start + i;\n }\n return numbers;\n}\nfunction nextMonthDisabled(calendar, date, maxDate) {\n const nextDate = Object.assign(calendar.getNext(date, 'm'), { day: 1 });\n return maxDate != null && nextDate.after(maxDate);\n}\nfunction prevMonthDisabled(calendar, date, minDate) {\n const prevDate = Object.assign(calendar.getPrev(date, 'm'), { day: 1 });\n return (minDate != null &&\n ((prevDate.year === minDate.year && prevDate.month < minDate.month) ||\n (prevDate.year < minDate.year && minDate.month === 1)));\n}\nfunction buildMonths(calendar, date, state, i18n, force) {\n const { displayMonths, months } = state;\n // move old months to a temporary array\n const monthsToReuse = months.splice(0, months.length);\n // generate new first dates, nullify or reuse months\n const firstDates = Array.from({ length: displayMonths }, (_, i) => {\n const firstDate = Object.assign(calendar.getNext(date, 'm', i), { day: 1 });\n months[i] = null;\n if (!force) {\n const reusedIndex = monthsToReuse.findIndex((month) => month.firstDate.equals(firstDate));\n // move reused month back to months\n if (reusedIndex !== -1) {\n months[i] = monthsToReuse.splice(reusedIndex, 1)[0];\n }\n }\n return firstDate;\n });\n // rebuild nullified months\n firstDates.forEach((firstDate, i) => {\n if (months[i] === null) {\n months[i] = buildMonth(calendar, firstDate, state, i18n, monthsToReuse.shift() || {});\n }\n });\n return months;\n}\nfunction buildMonth(calendar, date, state, i18n, month = {}) {\n const { dayTemplateData, minDate, maxDate, firstDayOfWeek, markDisabled, outsideDays, weekdayWidth, weekdaysVisible, } = state;\n const calendarToday = calendar.getToday();\n month.firstDate = null;\n month.lastDate = null;\n month.number = date.month;\n month.year = date.year;\n month.weeks = month.weeks || [];\n month.weekdays = month.weekdays || [];\n date = getFirstViewDate(calendar, date, firstDayOfWeek);\n // clearing weekdays, if not visible\n if (!weekdaysVisible) {\n month.weekdays.length = 0;\n }\n // month has weeks\n for (let week = 0; week < calendar.getWeeksPerMonth(); week++) {\n let weekObject = month.weeks[week];\n if (!weekObject) {\n weekObject = month.weeks[week] = { number: 0, days: [], collapsed: true };\n }\n const days = weekObject.days;\n // week has days\n for (let day = 0; day < calendar.getDaysPerWeek(); day++) {\n if (week === 0 && weekdaysVisible) {\n month.weekdays[day] = i18n.getWeekdayLabel(calendar.getWeekday(date), weekdayWidth);\n }\n const newDate = new NgbDate(date.year, date.month, date.day);\n const nextDate = calendar.getNext(newDate);\n const ariaLabel = i18n.getDayAriaLabel(newDate);\n // marking date as disabled\n let disabled = !!((minDate && newDate.before(minDate)) || (maxDate && newDate.after(maxDate)));\n if (!disabled && markDisabled) {\n disabled = markDisabled(newDate, { month: month.number, year: month.year });\n }\n // today\n let today = newDate.equals(calendarToday);\n // adding user-provided data to the context\n let contextUserData = dayTemplateData\n ? dayTemplateData(newDate, { month: month.number, year: month.year })\n : undefined;\n // saving first date of the month\n if (month.firstDate === null && newDate.month === month.number) {\n month.firstDate = newDate;\n }\n // saving last date of the month\n if (newDate.month === month.number && nextDate.month !== month.number) {\n month.lastDate = newDate;\n }\n let dayObject = days[day];\n if (!dayObject) {\n dayObject = days[day] = {};\n }\n dayObject.date = newDate;\n dayObject.context = Object.assign(dayObject.context || {}, {\n $implicit: newDate,\n date: newDate,\n data: contextUserData,\n currentMonth: month.number,\n currentYear: month.year,\n disabled,\n focused: false,\n selected: false,\n today,\n });\n dayObject.tabindex = -1;\n dayObject.ariaLabel = ariaLabel;\n dayObject.hidden = false;\n date = nextDate;\n }\n weekObject.number = calendar.getWeekNumber(days.map((day) => day.date), firstDayOfWeek);\n // marking week as collapsed\n weekObject.collapsed =\n outsideDays === 'collapsed' &&\n days[0].date.month !== month.number &&\n days[days.length - 1].date.month !== month.number;\n }\n return month;\n}\nfunction getFirstViewDate(calendar, date, firstDayOfWeek) {\n const daysPerWeek = calendar.getDaysPerWeek();\n const firstMonthDate = new NgbDate(date.year, date.month, 1);\n const dayOfWeek = calendar.getWeekday(firstMonthDate) % daysPerWeek;\n return calendar.getPrev(firstMonthDate, 'd', (daysPerWeek + dayOfWeek - firstDayOfWeek) % daysPerWeek);\n}\n\nfunction fromJSDate(jsDate) {\n return new NgbDate(jsDate.getFullYear(), jsDate.getMonth() + 1, jsDate.getDate());\n}\nfunction toJSDate(date) {\n const jsDate = new Date(date.year, date.month - 1, date.day, 12);\n // this is done avoid 30 -> 1930 conversion\n if (!isNaN(jsDate.getTime())) {\n jsDate.setFullYear(date.year);\n }\n return jsDate;\n}\nfunction NGB_DATEPICKER_CALENDAR_FACTORY() {\n return new NgbCalendarGregorian();\n}\n/**\n * A service that represents the calendar used by the datepicker.\n *\n * The default implementation uses the Gregorian calendar. You can inject it in your own\n * implementations if necessary to simplify `NgbDate` calculations.\n */\nclass NgbCalendar {\n}\nNgbCalendar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbCalendar, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNgbCalendar.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbCalendar, providedIn: 'root', useFactory: NGB_DATEPICKER_CALENDAR_FACTORY });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbCalendar, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: NGB_DATEPICKER_CALENDAR_FACTORY }]\n }] });\nclass NgbCalendarGregorian extends NgbCalendar {\n getDaysPerWeek() {\n return 7;\n }\n getMonths() {\n return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\n }\n getWeeksPerMonth() {\n return 6;\n }\n getNext(date, period = 'd', number = 1) {\n let jsDate = toJSDate(date);\n let checkMonth = true;\n let expectedMonth = jsDate.getMonth();\n switch (period) {\n case 'y':\n jsDate.setFullYear(jsDate.getFullYear() + number);\n break;\n case 'm':\n expectedMonth += number;\n jsDate.setMonth(expectedMonth);\n expectedMonth = expectedMonth % 12;\n if (expectedMonth < 0) {\n expectedMonth = expectedMonth + 12;\n }\n break;\n case 'd':\n jsDate.setDate(jsDate.getDate() + number);\n checkMonth = false;\n break;\n default:\n return date;\n }\n if (checkMonth && jsDate.getMonth() !== expectedMonth) {\n // this means the destination month has less days than the initial month\n // let's go back to the end of the previous month:\n jsDate.setDate(0);\n }\n return fromJSDate(jsDate);\n }\n getPrev(date, period = 'd', number = 1) {\n return this.getNext(date, period, -number);\n }\n getWeekday(date) {\n let jsDate = toJSDate(date);\n let day = jsDate.getDay();\n // in JS Date Sun=0, in ISO 8601 Sun=7\n return day === 0 ? 7 : day;\n }\n getWeekNumber(week, firstDayOfWeek) {\n // in JS Date Sun=0, in ISO 8601 Sun=7\n if (firstDayOfWeek === 7) {\n firstDayOfWeek = 0;\n }\n const thursdayIndex = (4 + 7 - firstDayOfWeek) % 7;\n let date = week[thursdayIndex];\n const jsDate = toJSDate(date);\n jsDate.setDate(jsDate.getDate() + 4 - (jsDate.getDay() || 7)); // Thursday\n const time = jsDate.getTime();\n jsDate.setMonth(0); // Compare with Jan 1\n jsDate.setDate(1);\n return Math.floor(Math.round((time - jsDate.getTime()) / 86400000) / 7) + 1;\n }\n getToday() {\n return fromJSDate(new Date());\n }\n isValid(date) {\n if (!date || !isInteger(date.year) || !isInteger(date.month) || !isInteger(date.day)) {\n return false;\n }\n // year 0 doesn't exist in Gregorian calendar\n if (date.year === 0) {\n return false;\n }\n const jsDate = toJSDate(date);\n return (!isNaN(jsDate.getTime()) &&\n jsDate.getFullYear() === date.year &&\n jsDate.getMonth() + 1 === date.month &&\n jsDate.getDate() === date.day);\n }\n}\nNgbCalendarGregorian.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbCalendarGregorian, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\nNgbCalendarGregorian.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbCalendarGregorian });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbCalendarGregorian, decorators: [{\n type: Injectable\n }] });\n\nfunction NGB_DATEPICKER_18N_FACTORY(locale) {\n return new NgbDatepickerI18nDefault(locale);\n}\n/**\n * A service supplying i18n data to the datepicker component.\n *\n * The default implementation of this service uses the Angular locale and registered locale data for\n * weekdays and month names (as explained in the Angular i18n guide).\n *\n * It also provides a way to i18n data that depends on calendar calculations, like aria labels, day, week and year\n * numerals. For other static labels the datepicker uses the default Angular i18n.\n *\n * See the [i18n demo](#/components/datepicker/examples#i18n) and\n * [Hebrew calendar demo](#/components/datepicker/calendars#hebrew) on how to extend this class and define\n * a custom provider for i18n.\n */\nclass NgbDatepickerI18n {\n /**\n * Returns the text label to display above the day view.\n *\n * @since 9.1.0\n */\n getMonthLabel(date) {\n return `${this.getMonthFullName(date.month, date.year)} ${this.getYearNumerals(date.year)}`;\n }\n /**\n * Returns the textual representation of a day that is rendered in a day cell.\n *\n * @since 3.0.0\n */\n getDayNumerals(date) {\n return `${date.day}`;\n }\n /**\n * Returns the textual representation of a week number rendered by datepicker.\n *\n * @since 3.0.0\n */\n getWeekNumerals(weekNumber) {\n return `${weekNumber}`;\n }\n /**\n * Returns the textual representation of a year that is rendered in the datepicker year select box.\n *\n * @since 3.0.0\n */\n getYearNumerals(year) {\n return `${year}`;\n }\n /**\n * Returns the week label to display in the heading of the month view.\n *\n * @since 9.1.0\n */\n getWeekLabel() {\n return '';\n }\n}\nNgbDatepickerI18n.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDatepickerI18n, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNgbDatepickerI18n.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDatepickerI18n, providedIn: 'root', useFactory: NGB_DATEPICKER_18N_FACTORY, deps: [{ token: LOCALE_ID }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDatepickerI18n, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: NGB_DATEPICKER_18N_FACTORY, deps: [LOCALE_ID] }]\n }] });\n/**\n * A service providing default implementation for the datepicker i18n.\n * It can be used as a base implementation if necessary.\n *\n * @since 9.1.0\n */\nclass NgbDatepickerI18nDefault extends NgbDatepickerI18n {\n constructor(_locale) {\n super();\n this._locale = _locale;\n this._monthsShort = getLocaleMonthNames(_locale, FormStyle.Standalone, TranslationWidth.Abbreviated);\n this._monthsFull = getLocaleMonthNames(_locale, FormStyle.Standalone, TranslationWidth.Wide);\n }\n getWeekdayLabel(weekday, width) {\n const weekdaysStartingOnSunday = getLocaleDayNames(this._locale, FormStyle.Standalone, width === undefined ? TranslationWidth.Short : width);\n const weekdays = weekdaysStartingOnSunday.map((day, index) => weekdaysStartingOnSunday[(index + 1) % 7]);\n return weekdays[weekday - 1] || '';\n }\n getMonthShortName(month) {\n return this._monthsShort[month - 1] || '';\n }\n getMonthFullName(month) {\n return this._monthsFull[month - 1] || '';\n }\n getDayAriaLabel(date) {\n const jsDate = new Date(date.year, date.month - 1, date.day);\n return formatDate(jsDate, 'fullDate', this._locale);\n }\n}\nNgbDatepickerI18nDefault.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDatepickerI18nDefault, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Injectable });\nNgbDatepickerI18nDefault.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDatepickerI18nDefault });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDatepickerI18nDefault, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; } });\n\nclass NgbDatepickerService {\n constructor(_calendar, _i18n) {\n this._calendar = _calendar;\n this._i18n = _i18n;\n this._VALIDATORS = {\n dayTemplateData: (dayTemplateData) => {\n if (this._state.dayTemplateData !== dayTemplateData) {\n return { dayTemplateData };\n }\n },\n displayMonths: (displayMonths) => {\n displayMonths = toInteger(displayMonths);\n if (isInteger(displayMonths) && displayMonths > 0 && this._state.displayMonths !== displayMonths) {\n return { displayMonths };\n }\n },\n disabled: (disabled) => {\n if (this._state.disabled !== disabled) {\n return { disabled };\n }\n },\n firstDayOfWeek: (firstDayOfWeek) => {\n firstDayOfWeek = toInteger(firstDayOfWeek);\n if (isInteger(firstDayOfWeek) && firstDayOfWeek >= 0 && this._state.firstDayOfWeek !== firstDayOfWeek) {\n return { firstDayOfWeek };\n }\n },\n focusVisible: (focusVisible) => {\n if (this._state.focusVisible !== focusVisible && !this._state.disabled) {\n return { focusVisible };\n }\n },\n markDisabled: (markDisabled) => {\n if (this._state.markDisabled !== markDisabled) {\n return { markDisabled };\n }\n },\n maxDate: (date) => {\n const maxDate = this.toValidDate(date, null);\n if (isChangedDate(this._state.maxDate, maxDate)) {\n return { maxDate };\n }\n },\n minDate: (date) => {\n const minDate = this.toValidDate(date, null);\n if (isChangedDate(this._state.minDate, minDate)) {\n return { minDate };\n }\n },\n navigation: (navigation) => {\n if (this._state.navigation !== navigation) {\n return { navigation };\n }\n },\n outsideDays: (outsideDays) => {\n if (this._state.outsideDays !== outsideDays) {\n return { outsideDays };\n }\n },\n weekdays: (weekdays) => {\n const weekdayWidth = weekdays === true || weekdays === false ? TranslationWidth.Short : weekdays;\n const weekdaysVisible = weekdays === true || weekdays === false ? weekdays : true;\n if (this._state.weekdayWidth !== weekdayWidth || this._state.weekdaysVisible !== weekdaysVisible) {\n return { weekdayWidth, weekdaysVisible };\n }\n },\n };\n this._model$ = new Subject();\n this._dateSelect$ = new Subject();\n this._state = {\n dayTemplateData: null,\n markDisabled: null,\n maxDate: null,\n minDate: null,\n disabled: false,\n displayMonths: 1,\n firstDate: null,\n firstDayOfWeek: 1,\n lastDate: null,\n focusDate: null,\n focusVisible: false,\n months: [],\n navigation: 'select',\n outsideDays: 'visible',\n prevDisabled: false,\n nextDisabled: false,\n selectedDate: null,\n selectBoxes: { years: [], months: [] },\n weekdayWidth: TranslationWidth.Short,\n weekdaysVisible: true,\n };\n }\n get model$() {\n return this._model$.pipe(filter((model) => model.months.length > 0));\n }\n get dateSelect$() {\n return this._dateSelect$.pipe(filter((date) => date !== null));\n }\n set(options) {\n let patch = Object.keys(options)\n .map((key) => this._VALIDATORS[key](options[key]))\n .reduce((obj, part) => ({ ...obj, ...part }), {});\n if (Object.keys(patch).length > 0) {\n this._nextState(patch);\n }\n }\n focus(date) {\n const focusedDate = this.toValidDate(date, null);\n if (focusedDate != null && !this._state.disabled && isChangedDate(this._state.focusDate, focusedDate)) {\n this._nextState({ focusDate: date });\n }\n }\n focusSelect() {\n if (isDateSelectable(this._state.focusDate, this._state)) {\n this.select(this._state.focusDate, { emitEvent: true });\n }\n }\n open(date) {\n const firstDate = this.toValidDate(date, this._calendar.getToday());\n if (firstDate != null &&\n !this._state.disabled &&\n (!this._state.firstDate || isChangedMonth(this._state.firstDate, firstDate))) {\n this._nextState({ firstDate });\n }\n }\n select(date, options = {}) {\n const selectedDate = this.toValidDate(date, null);\n if (selectedDate != null && !this._state.disabled) {\n if (isChangedDate(this._state.selectedDate, selectedDate)) {\n this._nextState({ selectedDate });\n }\n if (options.emitEvent && isDateSelectable(selectedDate, this._state)) {\n this._dateSelect$.next(selectedDate);\n }\n }\n }\n toValidDate(date, defaultValue) {\n const ngbDate = NgbDate.from(date);\n if (defaultValue === undefined) {\n defaultValue = this._calendar.getToday();\n }\n return this._calendar.isValid(ngbDate) ? ngbDate : defaultValue;\n }\n getMonth(struct) {\n for (let month of this._state.months) {\n if (struct.month === month.number && struct.year === month.year) {\n return month;\n }\n }\n throw new Error(`month ${struct.month} of year ${struct.year} not found`);\n }\n _nextState(patch) {\n const newState = this._updateState(patch);\n this._patchContexts(newState);\n this._state = newState;\n this._model$.next(this._state);\n }\n _patchContexts(state) {\n const { months, displayMonths, selectedDate, focusDate, focusVisible, disabled, outsideDays } = state;\n state.months.forEach((month) => {\n month.weeks.forEach((week) => {\n week.days.forEach((day) => {\n // patch focus flag\n if (focusDate) {\n day.context.focused = focusDate.equals(day.date) && focusVisible;\n }\n // calculating tabindex\n day.tabindex =\n !disabled && focusDate && day.date.equals(focusDate) && focusDate.month === month.number ? 0 : -1;\n // override context disabled\n if (disabled === true) {\n day.context.disabled = true;\n }\n // patch selection flag\n if (selectedDate !== undefined) {\n day.context.selected = selectedDate !== null && selectedDate.equals(day.date);\n }\n // visibility\n if (month.number !== day.date.month) {\n day.hidden =\n outsideDays === 'hidden' ||\n outsideDays === 'collapsed' ||\n (displayMonths > 1 &&\n day.date.after(months[0].firstDate) &&\n day.date.before(months[displayMonths - 1].lastDate));\n }\n });\n });\n });\n }\n _updateState(patch) {\n // patching fields\n const state = Object.assign({}, this._state, patch);\n let startDate = state.firstDate;\n // min/max dates changed\n if ('minDate' in patch || 'maxDate' in patch) {\n checkMinBeforeMax(state.minDate, state.maxDate);\n state.focusDate = checkDateInRange(state.focusDate, state.minDate, state.maxDate);\n state.firstDate = checkDateInRange(state.firstDate, state.minDate, state.maxDate);\n startDate = state.focusDate;\n }\n // disabled\n if ('disabled' in patch) {\n state.focusVisible = false;\n }\n // initial rebuild via 'select()'\n if ('selectedDate' in patch && this._state.months.length === 0) {\n startDate = state.selectedDate;\n }\n // terminate early if only focus visibility was changed\n if ('focusVisible' in patch) {\n return state;\n }\n // focus date changed\n if ('focusDate' in patch) {\n state.focusDate = checkDateInRange(state.focusDate, state.minDate, state.maxDate);\n startDate = state.focusDate;\n // nothing to rebuild if only focus changed and it is still visible\n if (state.months.length !== 0 &&\n state.focusDate &&\n !state.focusDate.before(state.firstDate) &&\n !state.focusDate.after(state.lastDate)) {\n return state;\n }\n }\n // first date changed\n if ('firstDate' in patch) {\n state.firstDate = checkDateInRange(state.firstDate, state.minDate, state.maxDate);\n startDate = state.firstDate;\n }\n // rebuilding months\n if (startDate) {\n const forceRebuild = 'dayTemplateData' in patch ||\n 'firstDayOfWeek' in patch ||\n 'markDisabled' in patch ||\n 'minDate' in patch ||\n 'maxDate' in patch ||\n 'disabled' in patch ||\n 'outsideDays' in patch ||\n 'weekdaysVisible' in patch;\n const months = buildMonths(this._calendar, startDate, state, this._i18n, forceRebuild);\n // updating months and boundary dates\n state.months = months;\n state.firstDate = months[0].firstDate;\n state.lastDate = months[months.length - 1].lastDate;\n // reset selected date if 'markDisabled' returns true\n if ('selectedDate' in patch && !isDateSelectable(state.selectedDate, state)) {\n state.selectedDate = null;\n }\n // adjusting focus after months were built\n if ('firstDate' in patch) {\n if (!state.focusDate || state.focusDate.before(state.firstDate) || state.focusDate.after(state.lastDate)) {\n state.focusDate = startDate;\n }\n }\n // adjusting months/years for the select box navigation\n const yearChanged = !this._state.firstDate || this._state.firstDate.year !== state.firstDate.year;\n const monthChanged = !this._state.firstDate || this._state.firstDate.month !== state.firstDate.month;\n if (state.navigation === 'select') {\n // years -> boundaries (min/max were changed)\n if ('minDate' in patch || 'maxDate' in patch || state.selectBoxes.years.length === 0 || yearChanged) {\n state.selectBoxes.years = generateSelectBoxYears(state.firstDate, state.minDate, state.maxDate);\n }\n // months -> when current year or boundaries change\n if ('minDate' in patch || 'maxDate' in patch || state.selectBoxes.months.length === 0 || yearChanged) {\n state.selectBoxes.months = generateSelectBoxMonths(this._calendar, state.firstDate, state.minDate, state.maxDate);\n }\n }\n else {\n state.selectBoxes = { years: [], months: [] };\n }\n // updating navigation arrows -> boundaries change (min/max) or month/year changes\n if ((state.navigation === 'arrows' || state.navigation === 'select') &&\n (monthChanged || yearChanged || 'minDate' in patch || 'maxDate' in patch || 'disabled' in patch)) {\n state.prevDisabled = state.disabled || prevMonthDisabled(this._calendar, state.firstDate, state.minDate);\n state.nextDisabled = state.disabled || nextMonthDisabled(this._calendar, state.lastDate, state.maxDate);\n }\n }\n return state;\n }\n}\nNgbDatepickerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDatepickerService, deps: [{ token: NgbCalendar }, { token: NgbDatepickerI18n }], target: i0.ɵɵFactoryTarget.Injectable });\nNgbDatepickerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDatepickerService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDatepickerService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: NgbCalendar }, { type: NgbDatepickerI18n }]; } });\n\nvar NavigationEvent;\n(function (NavigationEvent) {\n NavigationEvent[NavigationEvent[\"PREV\"] = 0] = \"PREV\";\n NavigationEvent[NavigationEvent[\"NEXT\"] = 1] = \"NEXT\";\n})(NavigationEvent || (NavigationEvent = {}));\n\n/**\n * A configuration service for the [`NgbDatepicker`](#/components/datepicker/api#NgbDatepicker) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the datepickers used in the application.\n */\nclass NgbDatepickerConfig {\n constructor() {\n this.displayMonths = 1;\n this.firstDayOfWeek = 1;\n this.navigation = 'select';\n this.outsideDays = 'visible';\n this.showWeekNumbers = false;\n this.weekdays = TranslationWidth.Short;\n }\n}\nNgbDatepickerConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDatepickerConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNgbDatepickerConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDatepickerConfig, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDatepickerConfig, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\nfunction NGB_DATEPICKER_DATE_ADAPTER_FACTORY() {\n return new NgbDateStructAdapter();\n}\n/**\n * An abstract service that does the conversion between the internal datepicker `NgbDateStruct` model and\n * any provided user date model `D`, ex. a string, a native date, etc.\n *\n * The adapter is used **only** for conversion when binding datepicker to a form control,\n * ex. `[(ngModel)]=\"userDateModel\"`. Here `userDateModel` can be of any type.\n *\n * The default datepicker implementation assumes we use `NgbDateStruct` as a user model.\n *\n * See the [date format overview](#/components/datepicker/overview#date-model) for more details\n * and the [custom adapter demo](#/components/datepicker/examples#adapter) for an example.\n */\nclass NgbDateAdapter {\n}\nNgbDateAdapter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDateAdapter, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNgbDateAdapter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDateAdapter, providedIn: 'root', useFactory: NGB_DATEPICKER_DATE_ADAPTER_FACTORY });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDateAdapter, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: NGB_DATEPICKER_DATE_ADAPTER_FACTORY }]\n }] });\nclass NgbDateStructAdapter extends NgbDateAdapter {\n /**\n * Converts a NgbDateStruct value into NgbDateStruct value\n */\n fromModel(date) {\n return date && isInteger(date.year) && isInteger(date.month) && isInteger(date.day)\n ? { year: date.year, month: date.month, day: date.day }\n : null;\n }\n /**\n * Converts a NgbDateStruct value into NgbDateStruct value\n */\n toModel(date) {\n return date && isInteger(date.year) && isInteger(date.month) && isInteger(date.day)\n ? { year: date.year, month: date.month, day: date.day }\n : null;\n }\n}\nNgbDateStructAdapter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDateStructAdapter, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\nNgbDateStructAdapter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDateStructAdapter });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDateStructAdapter, decorators: [{\n type: Injectable\n }] });\n\nclass NgbDatepickerNavigationSelect {\n constructor(i18n, _renderer) {\n this.i18n = i18n;\n this._renderer = _renderer;\n this.select = new EventEmitter();\n this._month = -1;\n this._year = -1;\n }\n changeMonth(month) {\n this.select.emit(new NgbDate(this.date.year, toInteger(month), 1));\n }\n changeYear(year) {\n this.select.emit(new NgbDate(toInteger(year), this.date.month, 1));\n }\n ngAfterViewChecked() {\n if (this.date) {\n if (this.date.month !== this._month) {\n this._month = this.date.month;\n this._renderer.setProperty(this.monthSelect.nativeElement, 'value', this._month);\n }\n if (this.date.year !== this._year) {\n this._year = this.date.year;\n this._renderer.setProperty(this.yearSelect.nativeElement, 'value', this._year);\n }\n }\n }\n}\nNgbDatepickerNavigationSelect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDatepickerNavigationSelect, deps: [{ token: NgbDatepickerI18n }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nNgbDatepickerNavigationSelect.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgbDatepickerNavigationSelect, selector: \"ngb-datepicker-navigation-select\", inputs: { date: \"date\", disabled: \"disabled\", months: \"months\", years: \"years\" }, outputs: { select: \"select\" }, viewQueries: [{ propertyName: \"monthSelect\", first: true, predicate: [\"month\"], descendants: true, read: ElementRef, static: true }, { propertyName: \"yearSelect\", first: true, predicate: [\"year\"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: `\n\t\t\n\t\t\t \n\t\t\t\n\t\t\n\t`, isInline: true, styles: [\"ngb-datepicker-navigation-select>.form-select{flex:1 1 auto;padding:0 .5rem;font-size:.875rem;height:1.85rem}ngb-datepicker-navigation-select>.form-select:focus{z-index:1}ngb-datepicker-navigation-select>.form-select::-ms-value{background-color:transparent!important}\\n\"], dependencies: [{ kind: \"directive\", type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i3.NgSelectOption, selector: \"option\", inputs: [\"ngValue\", \"value\"] }, { kind: \"directive\", type: i3.ɵNgSelectMultipleOption, selector: \"option\", inputs: [\"ngValue\", \"value\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDatepickerNavigationSelect, decorators: [{\n type: Component,\n args: [{ selector: 'ngb-datepicker-navigation-select', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: `\n\t\t\n\t\t\t \n\t\t\t\n\t\t\n\t`, styles: [\"ngb-datepicker-navigation-select>.form-select{flex:1 1 auto;padding:0 .5rem;font-size:.875rem;height:1.85rem}ngb-datepicker-navigation-select>.form-select:focus{z-index:1}ngb-datepicker-navigation-select>.form-select::-ms-value{background-color:transparent!important}\\n\"] }]\n }], ctorParameters: function () { return [{ type: NgbDatepickerI18n }, { type: i0.Renderer2 }]; }, propDecorators: { date: [{\n type: Input\n }], disabled: [{\n type: Input\n }], months: [{\n type: Input\n }], years: [{\n type: Input\n }], select: [{\n type: Output\n }], monthSelect: [{\n type: ViewChild,\n args: ['month', { static: true, read: ElementRef }]\n }], yearSelect: [{\n type: ViewChild,\n args: ['year', { static: true, read: ElementRef }]\n }] } });\n\nclass NgbDatepickerNavigation {\n constructor(i18n) {\n this.i18n = i18n;\n this.navigation = NavigationEvent;\n this.months = [];\n this.navigate = new EventEmitter();\n this.select = new EventEmitter();\n }\n onClickPrev(event) {\n event.currentTarget.focus();\n this.navigate.emit(this.navigation.PREV);\n }\n onClickNext(event) {\n event.currentTarget.focus();\n this.navigate.emit(this.navigation.NEXT);\n }\n}\nNgbDatepickerNavigation.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDatepickerNavigation, deps: [{ token: NgbDatepickerI18n }], target: i0.ɵɵFactoryTarget.Component });\nNgbDatepickerNavigation.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgbDatepickerNavigation, selector: \"ngb-datepicker-navigation\", inputs: { date: \"date\", disabled: \"disabled\", months: \"months\", showSelect: \"showSelect\", prevDisabled: \"prevDisabled\", nextDisabled: \"nextDisabled\", selectBoxes: \"selectBoxes\" }, outputs: { navigate: \"navigate\", select: \"select\" }, ngImport: i0, template: `\n\t\t
    \n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
    \n\t\t\n\t\t\n\n\t\t\n\t\t\t
    0\">
    \n\t\t\t
    \n\t\t\t\t{{ i18n.getMonthLabel(month.firstDate) }}\n\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t\t
    \n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
    \n\t`, isInline: true, styles: [\"ngb-datepicker-navigation{display:flex;align-items:center}.ngb-dp-navigation-chevron{border-style:solid;border-width:.2em .2em 0 0;display:inline-block;width:.75em;height:.75em;margin-left:.25em;margin-right:.15em;transform:rotate(-135deg)}.ngb-dp-arrow{display:flex;flex:1 1 auto;padding-right:0;padding-left:0;margin:0;width:2rem;height:2rem}.ngb-dp-arrow.right{justify-content:flex-end}.ngb-dp-arrow.right .ngb-dp-navigation-chevron{transform:rotate(45deg);margin-left:.15em;margin-right:.25em}.ngb-dp-arrow-btn{padding:0 .25rem;margin:0 .5rem;border:none;background-color:transparent;z-index:1}.ngb-dp-arrow-btn:focus{outline-width:1px;outline-style:auto}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.ngb-dp-arrow-btn:focus{outline-style:solid}}.ngb-dp-month-name{font-size:larger;height:2rem;line-height:2rem;text-align:center}.ngb-dp-navigation-select{display:flex;flex:1 1 9rem}\\n\"], 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: NgbDatepickerNavigationSelect, selector: \"ngb-datepicker-navigation-select\", inputs: [\"date\", \"disabled\", \"months\", \"years\"], outputs: [\"select\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDatepickerNavigation, decorators: [{\n type: Component,\n args: [{ selector: 'ngb-datepicker-navigation', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: `\n\t\t
    \n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
    \n\t\t\n\t\t\n\n\t\t\n\t\t\t
    0\">
    \n\t\t\t
    \n\t\t\t\t{{ i18n.getMonthLabel(month.firstDate) }}\n\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t\t
    \n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
    \n\t`, styles: [\"ngb-datepicker-navigation{display:flex;align-items:center}.ngb-dp-navigation-chevron{border-style:solid;border-width:.2em .2em 0 0;display:inline-block;width:.75em;height:.75em;margin-left:.25em;margin-right:.15em;transform:rotate(-135deg)}.ngb-dp-arrow{display:flex;flex:1 1 auto;padding-right:0;padding-left:0;margin:0;width:2rem;height:2rem}.ngb-dp-arrow.right{justify-content:flex-end}.ngb-dp-arrow.right .ngb-dp-navigation-chevron{transform:rotate(45deg);margin-left:.15em;margin-right:.25em}.ngb-dp-arrow-btn{padding:0 .25rem;margin:0 .5rem;border:none;background-color:transparent;z-index:1}.ngb-dp-arrow-btn:focus{outline-width:1px;outline-style:auto}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.ngb-dp-arrow-btn:focus{outline-style:solid}}.ngb-dp-month-name{font-size:larger;height:2rem;line-height:2rem;text-align:center}.ngb-dp-navigation-select{display:flex;flex:1 1 9rem}\\n\"] }]\n }], ctorParameters: function () { return [{ type: NgbDatepickerI18n }]; }, propDecorators: { date: [{\n type: Input\n }], disabled: [{\n type: Input\n }], months: [{\n type: Input\n }], showSelect: [{\n type: Input\n }], prevDisabled: [{\n type: Input\n }], nextDisabled: [{\n type: Input\n }], selectBoxes: [{\n type: Input\n }], navigate: [{\n type: Output\n }], select: [{\n type: Output\n }] } });\n\nclass NgbDatepickerDayView {\n constructor(i18n) {\n this.i18n = i18n;\n }\n isMuted() {\n return !this.selected && (this.date.month !== this.currentMonth || this.disabled);\n }\n}\nNgbDatepickerDayView.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDatepickerDayView, deps: [{ token: NgbDatepickerI18n }], target: i0.ɵɵFactoryTarget.Component });\nNgbDatepickerDayView.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgbDatepickerDayView, selector: \"[ngbDatepickerDayView]\", inputs: { currentMonth: \"currentMonth\", date: \"date\", disabled: \"disabled\", focused: \"focused\", selected: \"selected\" }, host: { properties: { \"class.bg-primary\": \"selected\", \"class.text-white\": \"selected\", \"class.text-muted\": \"isMuted()\", \"class.outside\": \"isMuted()\", \"class.active\": \"focused\" }, classAttribute: \"btn-light\" }, ngImport: i0, template: `{{ i18n.getDayNumerals(date) }}`, isInline: true, styles: [\"[ngbDatepickerDayView]{text-align:center;width:2rem;height:2rem;line-height:2rem;border-radius:.25rem;background:transparent}[ngbDatepickerDayView]:hover:not(.bg-primary),[ngbDatepickerDayView].active:not(.bg-primary){background-color:var(--bs-btn-bg);outline:1px solid var(--bs-border-color)}[ngbDatepickerDayView].outside{opacity:.5}\\n\"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDatepickerDayView, decorators: [{\n type: Component,\n args: [{ selector: '[ngbDatepickerDayView]', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n class: 'btn-light',\n '[class.bg-primary]': 'selected',\n '[class.text-white]': 'selected',\n '[class.text-muted]': 'isMuted()',\n '[class.outside]': 'isMuted()',\n '[class.active]': 'focused',\n }, template: `{{ i18n.getDayNumerals(date) }}`, styles: [\"[ngbDatepickerDayView]{text-align:center;width:2rem;height:2rem;line-height:2rem;border-radius:.25rem;background:transparent}[ngbDatepickerDayView]:hover:not(.bg-primary),[ngbDatepickerDayView].active:not(.bg-primary){background-color:var(--bs-btn-bg);outline:1px solid var(--bs-border-color)}[ngbDatepickerDayView].outside{opacity:.5}\\n\"] }]\n }], ctorParameters: function () { return [{ type: NgbDatepickerI18n }]; }, propDecorators: { currentMonth: [{\n type: Input\n }], date: [{\n type: Input\n }], disabled: [{\n type: Input\n }], focused: [{\n type: Input\n }], selected: [{\n type: Input\n }] } });\n\nvar Key;\n(function (Key) {\n Key[Key[\"Tab\"] = 9] = \"Tab\";\n Key[Key[\"Enter\"] = 13] = \"Enter\";\n Key[Key[\"Escape\"] = 27] = \"Escape\";\n Key[Key[\"Space\"] = 32] = \"Space\";\n Key[Key[\"PageUp\"] = 33] = \"PageUp\";\n Key[Key[\"PageDown\"] = 34] = \"PageDown\";\n Key[Key[\"End\"] = 35] = \"End\";\n Key[Key[\"Home\"] = 36] = \"Home\";\n Key[Key[\"ArrowLeft\"] = 37] = \"ArrowLeft\";\n Key[Key[\"ArrowUp\"] = 38] = \"ArrowUp\";\n Key[Key[\"ArrowRight\"] = 39] = \"ArrowRight\";\n Key[Key[\"ArrowDown\"] = 40] = \"ArrowDown\";\n})(Key || (Key = {}));\n\n/**\n * A service that represents the keyboard navigation.\n *\n * Default keyboard shortcuts [are documented in the overview](#/components/datepicker/overview#keyboard-shortcuts)\n *\n * @since 5.2.0\n */\nclass NgbDatepickerKeyboardService {\n /**\n * Processes a keyboard event.\n */\n processKey(event, datepicker) {\n const { state, calendar } = datepicker;\n /* eslint-disable-next-line deprecation/deprecation */\n switch (event.which) {\n case Key.PageUp:\n datepicker.focusDate(calendar.getPrev(state.focusedDate, event.shiftKey ? 'y' : 'm', 1));\n break;\n case Key.PageDown:\n datepicker.focusDate(calendar.getNext(state.focusedDate, event.shiftKey ? 'y' : 'm', 1));\n break;\n case Key.End:\n datepicker.focusDate(event.shiftKey ? state.maxDate : state.lastDate);\n break;\n case Key.Home:\n datepicker.focusDate(event.shiftKey ? state.minDate : state.firstDate);\n break;\n case Key.ArrowLeft:\n datepicker.focusDate(calendar.getPrev(state.focusedDate, 'd', 1));\n break;\n case Key.ArrowUp:\n datepicker.focusDate(calendar.getPrev(state.focusedDate, 'd', calendar.getDaysPerWeek()));\n break;\n case Key.ArrowRight:\n datepicker.focusDate(calendar.getNext(state.focusedDate, 'd', 1));\n break;\n case Key.ArrowDown:\n datepicker.focusDate(calendar.getNext(state.focusedDate, 'd', calendar.getDaysPerWeek()));\n break;\n case Key.Enter:\n case Key.Space:\n datepicker.focusSelect();\n break;\n default:\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n }\n}\nNgbDatepickerKeyboardService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDatepickerKeyboardService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNgbDatepickerKeyboardService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDatepickerKeyboardService, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDatepickerKeyboardService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\n/**\n * A directive that marks the content template that customizes the way datepicker months are displayed\n *\n * @since 5.3.0\n */\nclass NgbDatepickerContent {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNgbDatepickerContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDatepickerContent, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgbDatepickerContent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgbDatepickerContent, selector: \"ng-template[ngbDatepickerContent]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDatepickerContent, decorators: [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbDatepickerContent]' }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n/**\n * A highly configurable component that helps you with selecting calendar dates.\n *\n * `NgbDatepicker` is meant to be displayed inline on a page or put inside a popup.\n */\nclass NgbDatepicker {\n constructor(_service, _calendar, i18n, config, cd, _elementRef, _ngbDateAdapter, _ngZone) {\n this._service = _service;\n this._calendar = _calendar;\n this.i18n = i18n;\n this._elementRef = _elementRef;\n this._ngbDateAdapter = _ngbDateAdapter;\n this._ngZone = _ngZone;\n this._controlValue = null;\n this._destroyed$ = new Subject();\n this._publicState = {};\n /**\n * An event emitted right before the navigation happens and displayed month changes.\n *\n * See [`NgbDatepickerNavigateEvent`](#/components/datepicker/api#NgbDatepickerNavigateEvent) for the payload info.\n */\n this.navigate = new EventEmitter();\n /**\n * An event emitted when user selects a date using keyboard or mouse.\n *\n * The payload of the event is currently selected `NgbDate`.\n *\n * @since 5.2.0\n */\n this.dateSelect = new EventEmitter();\n this.onChange = (_) => { };\n this.onTouched = () => { };\n [\n 'dayTemplate',\n 'dayTemplateData',\n 'displayMonths',\n 'firstDayOfWeek',\n 'footerTemplate',\n 'markDisabled',\n 'minDate',\n 'maxDate',\n 'navigation',\n 'outsideDays',\n 'showWeekNumbers',\n 'startDate',\n 'weekdays',\n ].forEach((input) => (this[input] = config[input]));\n _service.dateSelect$.pipe(takeUntil(this._destroyed$)).subscribe((date) => {\n this.dateSelect.emit(date);\n });\n _service.model$.pipe(takeUntil(this._destroyed$)).subscribe((model) => {\n const newDate = model.firstDate;\n const oldDate = this.model ? this.model.firstDate : null;\n // update public state\n this._publicState = {\n maxDate: model.maxDate,\n minDate: model.minDate,\n firstDate: model.firstDate,\n lastDate: model.lastDate,\n focusedDate: model.focusDate,\n months: model.months.map((viewModel) => viewModel.firstDate),\n };\n let navigationPrevented = false;\n // emitting navigation event if the first month changes\n if (!newDate.equals(oldDate)) {\n this.navigate.emit({\n current: oldDate ? { year: oldDate.year, month: oldDate.month } : null,\n next: { year: newDate.year, month: newDate.month },\n preventDefault: () => (navigationPrevented = true),\n });\n // can't prevent the very first navigation\n if (navigationPrevented && oldDate !== null) {\n this._service.open(oldDate);\n return;\n }\n }\n const newSelectedDate = model.selectedDate;\n const newFocusedDate = model.focusDate;\n const oldFocusedDate = this.model ? this.model.focusDate : null;\n this.model = model;\n // handling selection change\n if (isChangedDate(newSelectedDate, this._controlValue)) {\n this._controlValue = newSelectedDate;\n this.onTouched();\n this.onChange(this._ngbDateAdapter.toModel(newSelectedDate));\n }\n // handling focus change\n if (isChangedDate(newFocusedDate, oldFocusedDate) && oldFocusedDate && model.focusVisible) {\n this.focus();\n }\n cd.markForCheck();\n });\n }\n /**\n * Returns the readonly public state of the datepicker\n *\n * @since 5.2.0\n */\n get state() {\n return this._publicState;\n }\n /**\n * Returns the calendar service used in the specific datepicker instance.\n *\n * @since 5.3.0\n */\n get calendar() {\n return this._calendar;\n }\n /**\n * Focuses on given date.\n */\n focusDate(date) {\n this._service.focus(NgbDate.from(date));\n }\n /**\n * Selects focused date.\n */\n focusSelect() {\n this._service.focusSelect();\n }\n focus() {\n this._ngZone.onStable\n .asObservable()\n .pipe(take(1))\n .subscribe(() => {\n const elementToFocus = this._elementRef.nativeElement.querySelector('div.ngb-dp-day[tabindex=\"0\"]');\n if (elementToFocus) {\n elementToFocus.focus();\n }\n });\n }\n /**\n * Navigates to the provided date.\n *\n * With the default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.\n * If nothing or invalid date provided calendar will open current month.\n *\n * Use the `[startDate]` input as an alternative.\n */\n navigateTo(date) {\n this._service.open(NgbDate.from(date ? (date.day ? date : { ...date, day: 1 }) : null));\n }\n ngAfterViewInit() {\n this._ngZone.runOutsideAngular(() => {\n const focusIns$ = fromEvent(this._contentEl.nativeElement, 'focusin');\n const focusOuts$ = fromEvent(this._contentEl.nativeElement, 'focusout');\n const { nativeElement } = this._elementRef;\n // we're changing 'focusVisible' only when entering or leaving months view\n // and ignoring all focus events where both 'target' and 'related' target are day cells\n merge(focusIns$, focusOuts$)\n .pipe(filter(({ target, relatedTarget }) => !(hasClassName(target, 'ngb-dp-day') &&\n hasClassName(relatedTarget, 'ngb-dp-day') &&\n nativeElement.contains(target) &&\n nativeElement.contains(relatedTarget))), takeUntil(this._destroyed$))\n .subscribe(({ type }) => this._ngZone.run(() => this._service.set({ focusVisible: type === 'focusin' })));\n });\n }\n ngOnDestroy() {\n this._destroyed$.next();\n }\n ngOnInit() {\n if (this.model === undefined) {\n const inputs = {};\n [\n 'dayTemplateData',\n 'displayMonths',\n 'markDisabled',\n 'firstDayOfWeek',\n 'navigation',\n 'minDate',\n 'maxDate',\n 'outsideDays',\n 'weekdays',\n ].forEach((name) => (inputs[name] = this[name]));\n this._service.set(inputs);\n this.navigateTo(this.startDate);\n }\n if (!this.dayTemplate) {\n this.dayTemplate = this._defaultDayTemplate;\n }\n }\n ngOnChanges(changes) {\n const inputs = {};\n [\n 'dayTemplateData',\n 'displayMonths',\n 'markDisabled',\n 'firstDayOfWeek',\n 'navigation',\n 'minDate',\n 'maxDate',\n 'outsideDays',\n 'weekdays',\n ]\n .filter((name) => name in changes)\n .forEach((name) => (inputs[name] = this[name]));\n this._service.set(inputs);\n if ('startDate' in changes) {\n const { currentValue, previousValue } = changes.startDate;\n if (isChangedMonth(previousValue, currentValue)) {\n this.navigateTo(this.startDate);\n }\n }\n }\n onDateSelect(date) {\n this._service.focus(date);\n this._service.select(date, { emitEvent: true });\n }\n onNavigateDateSelect(date) {\n this._service.open(date);\n }\n onNavigateEvent(event) {\n switch (event) {\n case NavigationEvent.PREV:\n this._service.open(this._calendar.getPrev(this.model.firstDate, 'm', 1));\n break;\n case NavigationEvent.NEXT:\n this._service.open(this._calendar.getNext(this.model.firstDate, 'm', 1));\n break;\n }\n }\n registerOnChange(fn) {\n this.onChange = fn;\n }\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n setDisabledState(disabled) {\n this._service.set({ disabled });\n }\n writeValue(value) {\n this._controlValue = NgbDate.from(this._ngbDateAdapter.fromModel(value));\n this._service.select(this._controlValue);\n }\n}\nNgbDatepicker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDatepicker, deps: [{ token: NgbDatepickerService }, { token: NgbCalendar }, { token: NgbDatepickerI18n }, { token: NgbDatepickerConfig }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: NgbDateAdapter }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nNgbDatepicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgbDatepicker, selector: \"ngb-datepicker\", inputs: { dayTemplate: \"dayTemplate\", dayTemplateData: \"dayTemplateData\", displayMonths: \"displayMonths\", firstDayOfWeek: \"firstDayOfWeek\", footerTemplate: \"footerTemplate\", markDisabled: \"markDisabled\", maxDate: \"maxDate\", minDate: \"minDate\", navigation: \"navigation\", outsideDays: \"outsideDays\", showWeekNumbers: \"showWeekNumbers\", startDate: \"startDate\", weekdays: \"weekdays\" }, outputs: { navigate: \"navigate\", dateSelect: \"dateSelect\" }, host: { properties: { \"class.disabled\": \"model.disabled\" } }, providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbDatepicker), multi: true },\n NgbDatepickerService,\n ], queries: [{ propertyName: \"contentTemplate\", first: true, predicate: NgbDatepickerContent, descendants: true, static: true }], viewQueries: [{ propertyName: \"_defaultDayTemplate\", first: true, predicate: [\"defaultDayTemplate\"], descendants: true, static: true }, { propertyName: \"_contentEl\", first: true, predicate: [\"content\"], descendants: true, static: true }], exportAs: [\"ngbDatepicker\"], usesOnChanges: true, ngImport: i0, template: `\n\t\t\n\t\t\t\n\t\t\t\n\t\t
    \n\n\t\t\n\t\t\t
    \n\t\t\t\t
    1 && navigation === 'select')\" class=\"ngb-dp-month-name\">\n\t\t\t\t\t{{ i18n.getMonthLabel(month.firstDate) }}\n\t\t\t\t
    \n\t\t\t\t\n\t\t\t
    \n\t\t
    \n\n\t\t
    \n\t\t\t\n\t\t\t\n\t\t
    \n\n\t\t
    \n\t\t\t\n\t\t
    \n\n\t\t\n\t`, isInline: true, styles: [\"ngb-datepicker{border:1px solid var(--bs-border-color);border-radius:.25rem;display:inline-block}ngb-datepicker-month{pointer-events:auto}ngb-datepicker.dropdown-menu{padding:0}ngb-datepicker.disabled .ngb-dp-weekday,ngb-datepicker.disabled .ngb-dp-week-number,ngb-datepicker.disabled .ngb-dp-month-name{color:var(--bs-text-muted)}.ngb-dp-body{z-index:1055}.ngb-dp-header{border-bottom:0;border-radius:.25rem .25rem 0 0;padding-top:.25rem;background-color:var(--bs-light)}.ngb-dp-months{display:flex}.ngb-dp-month{pointer-events:none}.ngb-dp-month-name{font-size:larger;height:2rem;line-height:2rem;text-align:center;background-color:var(--bs-light)}.ngb-dp-month+.ngb-dp-month .ngb-dp-month-name,.ngb-dp-month+.ngb-dp-month .ngb-dp-week{padding-left:1rem}.ngb-dp-month:last-child .ngb-dp-week{padding-right:.25rem}.ngb-dp-month:first-child .ngb-dp-week{padding-left:.25rem}.ngb-dp-month .ngb-dp-week:last-child{padding-bottom:.25rem}\\n\"], dependencies: [{ kind: \"directive\", type: i0.forwardRef(function () { return i2.NgForOf; }), selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i0.forwardRef(function () { return i2.NgIf; }), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i0.forwardRef(function () { return i2.NgTemplateOutlet; }), selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"component\", type: i0.forwardRef(function () { return NgbDatepickerMonth; }), selector: \"ngb-datepicker-month\", inputs: [\"month\"] }, { kind: \"component\", type: i0.forwardRef(function () { return NgbDatepickerNavigation; }), selector: \"ngb-datepicker-navigation\", inputs: [\"date\", \"disabled\", \"months\", \"showSelect\", \"prevDisabled\", \"nextDisabled\", \"selectBoxes\"], outputs: [\"navigate\", \"select\"] }, { kind: \"component\", type: i0.forwardRef(function () { return NgbDatepickerDayView; }), selector: \"[ngbDatepickerDayView]\", inputs: [\"currentMonth\", \"date\", \"disabled\", \"focused\", \"selected\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDatepicker, decorators: [{\n type: Component,\n args: [{ exportAs: 'ngbDatepicker', selector: 'ngb-datepicker', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { '[class.disabled]': 'model.disabled' }, template: `\n\t\t\n\t\t\t\n\t\t\t\n\t\t
    \n\n\t\t\n\t\t\t
    \n\t\t\t\t
    1 && navigation === 'select')\" class=\"ngb-dp-month-name\">\n\t\t\t\t\t{{ i18n.getMonthLabel(month.firstDate) }}\n\t\t\t\t
    \n\t\t\t\t\n\t\t\t
    \n\t\t
    \n\n\t\t
    \n\t\t\t\n\t\t\t\n\t\t
    \n\n\t\t
    \n\t\t\t\n\t\t
    \n\n\t\t\n\t`, providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbDatepicker), multi: true },\n NgbDatepickerService,\n ], styles: [\"ngb-datepicker{border:1px solid var(--bs-border-color);border-radius:.25rem;display:inline-block}ngb-datepicker-month{pointer-events:auto}ngb-datepicker.dropdown-menu{padding:0}ngb-datepicker.disabled .ngb-dp-weekday,ngb-datepicker.disabled .ngb-dp-week-number,ngb-datepicker.disabled .ngb-dp-month-name{color:var(--bs-text-muted)}.ngb-dp-body{z-index:1055}.ngb-dp-header{border-bottom:0;border-radius:.25rem .25rem 0 0;padding-top:.25rem;background-color:var(--bs-light)}.ngb-dp-months{display:flex}.ngb-dp-month{pointer-events:none}.ngb-dp-month-name{font-size:larger;height:2rem;line-height:2rem;text-align:center;background-color:var(--bs-light)}.ngb-dp-month+.ngb-dp-month .ngb-dp-month-name,.ngb-dp-month+.ngb-dp-month .ngb-dp-week{padding-left:1rem}.ngb-dp-month:last-child .ngb-dp-week{padding-right:.25rem}.ngb-dp-month:first-child .ngb-dp-week{padding-left:.25rem}.ngb-dp-month .ngb-dp-week:last-child{padding-bottom:.25rem}\\n\"] }]\n }], ctorParameters: function () { return [{ type: NgbDatepickerService }, { type: NgbCalendar }, { type: NgbDatepickerI18n }, { type: NgbDatepickerConfig }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: NgbDateAdapter }, { type: i0.NgZone }]; }, propDecorators: { _defaultDayTemplate: [{\n type: ViewChild,\n args: ['defaultDayTemplate', { static: true }]\n }], _contentEl: [{\n type: ViewChild,\n args: ['content', { static: true }]\n }], contentTemplate: [{\n type: ContentChild,\n args: [NgbDatepickerContent, { static: true }]\n }], dayTemplate: [{\n type: Input\n }], dayTemplateData: [{\n type: Input\n }], displayMonths: [{\n type: Input\n }], firstDayOfWeek: [{\n type: Input\n }], footerTemplate: [{\n type: Input\n }], markDisabled: [{\n type: Input\n }], maxDate: [{\n type: Input\n }], minDate: [{\n type: Input\n }], navigation: [{\n type: Input\n }], outsideDays: [{\n type: Input\n }], showWeekNumbers: [{\n type: Input\n }], startDate: [{\n type: Input\n }], weekdays: [{\n type: Input\n }], navigate: [{\n type: Output\n }], dateSelect: [{\n type: Output\n }] } });\n/**\n * A component that renders one month including all the days, weekdays and week numbers. Can be used inside\n * the `` when you want to customize months layout.\n *\n * For a usage example, see [custom month layout demo](#/components/datepicker/examples#custommonth)\n *\n * @since 5.3.0\n */\nclass NgbDatepickerMonth {\n constructor(i18n, datepicker, _keyboardService, _service) {\n this.i18n = i18n;\n this.datepicker = datepicker;\n this._keyboardService = _keyboardService;\n this._service = _service;\n }\n /**\n * The first date of month to be rendered.\n *\n * This month must one of the months present in the\n * [datepicker state](#/components/datepicker/api#NgbDatepickerState).\n */\n set month(month) {\n this.viewModel = this._service.getMonth(month);\n }\n onKeyDown(event) {\n this._keyboardService.processKey(event, this.datepicker);\n }\n doSelect(day) {\n if (!day.context.disabled && !day.hidden) {\n this.datepicker.onDateSelect(day.date);\n }\n }\n}\nNgbDatepickerMonth.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDatepickerMonth, deps: [{ token: NgbDatepickerI18n }, { token: NgbDatepicker }, { token: NgbDatepickerKeyboardService }, { token: NgbDatepickerService }], target: i0.ɵɵFactoryTarget.Component });\nNgbDatepickerMonth.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgbDatepickerMonth, selector: \"ngb-datepicker-month\", inputs: { month: \"month\" }, host: { attributes: { \"role\": \"grid\" }, listeners: { \"keydown\": \"onKeyDown($event)\" } }, ngImport: i0, template: `\n\t\t
    0\" class=\"ngb-dp-week ngb-dp-weekdays\" role=\"row\">\n\t\t\t
    {{\n\t\t\t\ti18n.getWeekLabel()\n\t\t\t}}
    \n\t\t\t
    {{\n\t\t\t\tweekday\n\t\t\t}}
    \n\t\t
    \n\t\t\n\t\t\t
    \n\t\t\t\t
    {{\n\t\t\t\t\ti18n.getWeekNumerals(week.number)\n\t\t\t\t}}
    \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\n\t\t
    \n\t`, isInline: true, styles: [\"ngb-datepicker-month{display:block}.ngb-dp-weekday,.ngb-dp-week-number{line-height:2rem;text-align:center;font-style:italic}.ngb-dp-weekday{color:var(--bs-info)}.ngb-dp-week{border-radius:.25rem;display:flex}.ngb-dp-weekdays{border-bottom:1px solid var(--bs-border-color);border-radius:0;background-color:var(--bs-light)}.ngb-dp-day,.ngb-dp-weekday,.ngb-dp-week-number{width:2rem;height:2rem}.ngb-dp-day{cursor:pointer}.ngb-dp-day.disabled,.ngb-dp-day.hidden{cursor:default;pointer-events:none}.ngb-dp-day[tabindex=\\\"0\\\"]{z-index:1}\\n\"], 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.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }], encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDatepickerMonth, decorators: [{\n type: Component,\n args: [{ selector: 'ngb-datepicker-month', host: { role: 'grid', '(keydown)': 'onKeyDown($event)' }, encapsulation: ViewEncapsulation.None, template: `\n\t\t
    0\" class=\"ngb-dp-week ngb-dp-weekdays\" role=\"row\">\n\t\t\t
    {{\n\t\t\t\ti18n.getWeekLabel()\n\t\t\t}}
    \n\t\t\t
    {{\n\t\t\t\tweekday\n\t\t\t}}
    \n\t\t
    \n\t\t\n\t\t\t
    \n\t\t\t\t
    {{\n\t\t\t\t\ti18n.getWeekNumerals(week.number)\n\t\t\t\t}}
    \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\n\t\t
    \n\t`, styles: [\"ngb-datepicker-month{display:block}.ngb-dp-weekday,.ngb-dp-week-number{line-height:2rem;text-align:center;font-style:italic}.ngb-dp-weekday{color:var(--bs-info)}.ngb-dp-week{border-radius:.25rem;display:flex}.ngb-dp-weekdays{border-bottom:1px solid var(--bs-border-color);border-radius:0;background-color:var(--bs-light)}.ngb-dp-day,.ngb-dp-weekday,.ngb-dp-week-number{width:2rem;height:2rem}.ngb-dp-day{cursor:pointer}.ngb-dp-day.disabled,.ngb-dp-day.hidden{cursor:default;pointer-events:none}.ngb-dp-day[tabindex=\\\"0\\\"]{z-index:1}\\n\"] }]\n }], ctorParameters: function () { return [{ type: NgbDatepickerI18n }, { type: NgbDatepicker }, { type: NgbDatepickerKeyboardService }, { type: NgbDatepickerService }]; }, propDecorators: { month: [{\n type: Input\n }] } });\n\nconst isContainedIn = (element, array) => array ? array.some((item) => item.contains(element)) : false;\nconst matchesSelectorIfAny = (element, selector) => !selector || closest(element, selector) != null;\n// we have to add a more significant delay to avoid re-opening when handling (click) on a toggling element\n// TODO: use proper Angular platform detection when NgbAutoClose becomes a service and we can inject PLATFORM_ID\nconst isMobile = (() => {\n const isIOS = () => /iPad|iPhone|iPod/.test(navigator.userAgent) ||\n (/Macintosh/.test(navigator.userAgent) && navigator.maxTouchPoints && navigator.maxTouchPoints > 2);\n const isAndroid = () => /Android/.test(navigator.userAgent);\n return typeof navigator !== 'undefined' ? !!navigator.userAgent && (isIOS() || isAndroid()) : false;\n})();\n// setting 'ngbAutoClose' synchronously on mobile results in immediate popup closing\n// when tapping on the triggering element\nconst wrapAsyncForMobile = (fn) => (isMobile ? () => setTimeout(() => fn(), 100) : fn);\nfunction ngbAutoClose(zone, document, type, close, closed$, insideElements, ignoreElements, insideSelector) {\n // closing on ESC and outside clicks\n if (type) {\n zone.runOutsideAngular(wrapAsyncForMobile(() => {\n const shouldCloseOnClick = (event) => {\n const element = event.target;\n if (event.button === 2 || isContainedIn(element, ignoreElements)) {\n return false;\n }\n if (type === 'inside') {\n return isContainedIn(element, insideElements) && matchesSelectorIfAny(element, insideSelector);\n }\n else if (type === 'outside') {\n return !isContainedIn(element, insideElements);\n } /* if (type === true) */\n else {\n return matchesSelectorIfAny(element, insideSelector) || !isContainedIn(element, insideElements);\n }\n };\n const escapes$ = fromEvent(document, 'keydown').pipe(takeUntil(closed$), \n /* eslint-disable-next-line deprecation/deprecation */\n filter((e) => e.which === Key.Escape), tap((e) => e.preventDefault()));\n // we have to pre-calculate 'shouldCloseOnClick' on 'mousedown',\n // because on 'mouseup' DOM nodes might be detached\n const mouseDowns$ = fromEvent(document, 'mousedown').pipe(map(shouldCloseOnClick), takeUntil(closed$));\n const closeableClicks$ = fromEvent(document, 'mouseup').pipe(withLatestFrom(mouseDowns$), filter(([_, shouldClose]) => shouldClose), delay(0), takeUntil(closed$));\n race([escapes$.pipe(map((_) => 0 /* SOURCE.ESCAPE */)), closeableClicks$.pipe(map((_) => 1 /* SOURCE.CLICK */))]).subscribe((source) => zone.run(() => close(source)));\n }));\n }\n}\n\nconst FOCUSABLE_ELEMENTS_SELECTOR = [\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled]):not([type=\"hidden\"])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[contenteditable]',\n '[tabindex]:not([tabindex=\"-1\"])',\n].join(', ');\n/**\n * Returns first and last focusable elements inside of a given element based on specific CSS selector\n */\nfunction getFocusableBoundaryElements(element) {\n const list = Array.from(element.querySelectorAll(FOCUSABLE_ELEMENTS_SELECTOR)).filter((el) => el.tabIndex !== -1);\n return [list[0], list[list.length - 1]];\n}\n/**\n * Function that enforces browser focus to be trapped inside a DOM element.\n *\n * Works only for clicks inside the element and navigation with 'Tab', ignoring clicks outside of the element\n *\n * @param zone Angular zone\n * @param element The element around which focus will be trapped inside\n * @param stopFocusTrap$ The observable stream. When completed the focus trap will clean up listeners\n * and free internal resources\n * @param refocusOnClick Put the focus back to the last focused element whenever a click occurs on element (default to\n * false)\n */\nconst ngbFocusTrap = (zone, element, stopFocusTrap$, refocusOnClick = false) => {\n zone.runOutsideAngular(() => {\n // last focused element\n const lastFocusedElement$ = fromEvent(element, 'focusin').pipe(takeUntil(stopFocusTrap$), map((e) => e.target));\n // 'tab' / 'shift+tab' stream\n fromEvent(element, 'keydown')\n .pipe(takeUntil(stopFocusTrap$), \n /* eslint-disable-next-line deprecation/deprecation */\n filter((e) => e.which === Key.Tab), withLatestFrom(lastFocusedElement$))\n .subscribe(([tabEvent, focusedElement]) => {\n const [first, last] = getFocusableBoundaryElements(element);\n if ((focusedElement === first || focusedElement === element) && tabEvent.shiftKey) {\n last.focus();\n tabEvent.preventDefault();\n }\n if (focusedElement === last && !tabEvent.shiftKey) {\n first.focus();\n tabEvent.preventDefault();\n }\n });\n // inside click\n if (refocusOnClick) {\n fromEvent(element, 'click')\n .pipe(takeUntil(stopFocusTrap$), withLatestFrom(lastFocusedElement$), map((arr) => arr[1]))\n .subscribe((lastFocusedElement) => lastFocusedElement.focus());\n }\n });\n};\n\nconst placementSeparator = /\\s+/;\nconst spacesRegExp = / +/gi;\n/**\n * Matching classes from the Bootstrap ones to the poppers ones.\n * The first index of each array is used for the left to right direction,\n * the second one is used for the right to left, defaulting to the first index (when LTR and RTL lead to the same class)\n *\n * See [Bootstrap alignments](https://getbootstrap.com/docs/5.1/components/dropdowns/#alignment-options)\n * and [Popper placements](https://popper.js.org/docs/v2/constructors/#options)\n */\nconst bootstrapPopperMatches = {\n top: ['top'],\n bottom: ['bottom'],\n start: ['left', 'right'],\n left: ['left'],\n end: ['right', 'left'],\n right: ['right'],\n 'top-start': ['top-start', 'top-end'],\n 'top-left': ['top-start'],\n 'top-end': ['top-end', 'top-start'],\n 'top-right': ['top-end'],\n 'bottom-start': ['bottom-start', 'bottom-end'],\n 'bottom-left': ['bottom-start'],\n 'bottom-end': ['bottom-end', 'bottom-start'],\n 'bottom-right': ['bottom-end'],\n 'start-top': ['left-start', 'right-start'],\n 'left-top': ['left-start'],\n 'start-bottom': ['left-end', 'right-end'],\n 'left-bottom': ['left-end'],\n 'end-top': ['right-start', 'left-start'],\n 'right-top': ['right-start'],\n 'end-bottom': ['right-end', 'left-end'],\n 'right-bottom': ['right-end'],\n};\nfunction getPopperClassPlacement(placement, isRTL) {\n const [leftClass, rightClass] = bootstrapPopperMatches[placement];\n return isRTL ? rightClass || leftClass : leftClass;\n}\nconst popperStartPrimaryPlacement = /^left/;\nconst popperEndPrimaryPlacement = /^right/;\nconst popperStartSecondaryPlacement = /^start/;\nconst popperEndSecondaryPlacement = /^end/;\nfunction getBootstrapBaseClassPlacement(baseClass, placement) {\n let [primary, secondary] = placement.split('-');\n const newPrimary = primary.replace(popperStartPrimaryPlacement, 'start').replace(popperEndPrimaryPlacement, 'end');\n let classnames = [newPrimary];\n if (secondary) {\n let newSecondary = secondary;\n if (primary === 'left' || primary === 'right') {\n newSecondary = newSecondary\n .replace(popperStartSecondaryPlacement, 'top')\n .replace(popperEndSecondaryPlacement, 'bottom');\n }\n classnames.push(`${newPrimary}-${newSecondary}`);\n }\n if (baseClass) {\n classnames = classnames.map((classname) => `${baseClass}-${classname}`);\n }\n return classnames.join(' ');\n}\n/*\n * Accept the placement array and applies the appropriate placement dependent on the viewport.\n * Returns the applied placement.\n * In case of auto placement, placements are selected in order\n * 'top', 'bottom', 'start', 'end',\n * 'top-start', 'top-end',\n * 'bottom-start', 'bottom-end',\n * 'start-top', 'start-bottom',\n * 'end-top', 'end-bottom'.\n * */\nfunction getPopperOptions({ placement, baseClass }, rtl) {\n let placementVals = Array.isArray(placement)\n ? placement\n : placement.split(placementSeparator);\n // No need to consider left and right here, as start and end are enough, and it is used for 'auto' placement only\n const allowedPlacements = [\n 'top',\n 'bottom',\n 'start',\n 'end',\n 'top-start',\n 'top-end',\n 'bottom-start',\n 'bottom-end',\n 'start-top',\n 'start-bottom',\n 'end-top',\n 'end-bottom',\n ];\n // replace auto placement with other placements\n let hasAuto = placementVals.findIndex((val) => val === 'auto');\n if (hasAuto >= 0) {\n allowedPlacements.forEach(function (obj) {\n if (placementVals.find((val) => val.search('^' + obj) !== -1) == null) {\n placementVals.splice(hasAuto++, 1, obj);\n }\n });\n }\n const popperPlacements = placementVals.map((_placement) => {\n return getPopperClassPlacement(_placement, rtl.isRTL());\n });\n let mainPlacement = popperPlacements.shift();\n const bsModifier = {\n name: 'bootstrapClasses',\n enabled: !!baseClass,\n phase: 'write',\n fn({ state }) {\n const bsClassRegExp = new RegExp(baseClass + '(-[a-z]+)*', 'gi');\n const popperElement = state.elements.popper;\n const popperPlacement = state.placement;\n let className = popperElement.className;\n // Remove old bootstrap classes\n className = className.replace(bsClassRegExp, '');\n // Add current placements\n className += ` ${getBootstrapBaseClassPlacement(baseClass, popperPlacement)}`;\n // Remove multiple spaces\n className = className.trim().replace(spacesRegExp, ' ');\n // Reassign\n popperElement.className = className;\n },\n };\n return {\n placement: mainPlacement,\n modifiers: [\n bsModifier,\n flip,\n preventOverflow,\n arrow,\n {\n enabled: true,\n name: 'flip',\n options: {\n fallbackPlacements: popperPlacements,\n },\n },\n {\n enabled: true,\n name: 'preventOverflow',\n phase: 'main',\n fn: function () { },\n },\n ],\n };\n}\nfunction noop(arg) {\n return arg;\n}\nfunction ngbPositioning(rtl) {\n let popperInstance = null;\n return {\n createPopper(positioningOption) {\n if (!popperInstance) {\n const updatePopperOptions = positioningOption.updatePopperOptions || noop;\n let popperOptions = updatePopperOptions(getPopperOptions(positioningOption, rtl));\n popperInstance = createPopperLite(positioningOption.hostElement, positioningOption.targetElement, popperOptions);\n }\n },\n update() {\n if (popperInstance) {\n popperInstance.update();\n }\n },\n setOptions(positioningOption) {\n if (popperInstance) {\n const updatePopperOptions = positioningOption.updatePopperOptions || noop;\n let popperOptions = updatePopperOptions(getPopperOptions(positioningOption, rtl));\n popperInstance.setOptions(popperOptions);\n }\n },\n destroy() {\n if (popperInstance) {\n popperInstance.destroy();\n popperInstance = null;\n }\n },\n };\n}\n\n/**\n * A configuration service for the [`NgbDatepickerInput`](#/components/datepicker/api#NgbDatepicker) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the datepicker inputs used in the application.\n *\n * @since 5.2.0\n */\nclass NgbInputDatepickerConfig extends NgbDatepickerConfig {\n constructor() {\n super(...arguments);\n this.autoClose = true;\n this.placement = ['bottom-start', 'bottom-end', 'top-start', 'top-end'];\n this.popperOptions = (options) => options;\n this.restoreFocus = true;\n }\n}\nNgbInputDatepickerConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbInputDatepickerConfig, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\nNgbInputDatepickerConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbInputDatepickerConfig, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbInputDatepickerConfig, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\nfunction addPopperOffset(offset$1) {\n return (options) => {\n options.modifiers.push(offset, {\n name: 'offset',\n options: {\n offset: () => offset$1,\n },\n });\n return options;\n };\n}\n\nfunction NGB_DATEPICKER_PARSER_FORMATTER_FACTORY() {\n return new NgbDateISOParserFormatter();\n}\n/**\n * An abstract service for parsing and formatting dates for the\n * [`NgbInputDatepicker`](#/components/datepicker/api#NgbInputDatepicker) directive.\n * Converts between the internal `NgbDateStruct` model presentation and a `string` that is displayed in the\n * input element.\n *\n * When user types something in the input this service attempts to parse it into a `NgbDateStruct` object.\n * And vice versa, when users selects a date in the calendar with the mouse, it must be displayed as a `string`\n * in the input.\n *\n * Default implementation uses the ISO 8601 format, but you can provide another implementation via DI\n * to use an alternative string format or a custom parsing logic.\n *\n * See the [date format overview](#/components/datepicker/overview#date-model) for more details.\n */\nclass NgbDateParserFormatter {\n}\nNgbDateParserFormatter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDateParserFormatter, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNgbDateParserFormatter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDateParserFormatter, providedIn: 'root', useFactory: NGB_DATEPICKER_PARSER_FORMATTER_FACTORY });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDateParserFormatter, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: NGB_DATEPICKER_PARSER_FORMATTER_FACTORY }]\n }] });\nclass NgbDateISOParserFormatter extends NgbDateParserFormatter {\n parse(value) {\n if (value != null) {\n const dateParts = value.trim().split('-');\n if (dateParts.length === 1 && isNumber(dateParts[0])) {\n return { year: toInteger(dateParts[0]), month: null, day: null };\n }\n else if (dateParts.length === 2 && isNumber(dateParts[0]) && isNumber(dateParts[1])) {\n return { year: toInteger(dateParts[0]), month: toInteger(dateParts[1]), day: null };\n }\n else if (dateParts.length === 3 && isNumber(dateParts[0]) && isNumber(dateParts[1]) && isNumber(dateParts[2])) {\n return { year: toInteger(dateParts[0]), month: toInteger(dateParts[1]), day: toInteger(dateParts[2]) };\n }\n }\n return null;\n }\n format(date) {\n return date\n ? `${date.year}-${isNumber(date.month) ? padNumber(date.month) : ''}-${isNumber(date.day) ? padNumber(date.day) : ''}`\n : '';\n }\n}\nNgbDateISOParserFormatter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDateISOParserFormatter, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\nNgbDateISOParserFormatter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDateISOParserFormatter });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDateISOParserFormatter, decorators: [{\n type: Injectable\n }] });\n\nclass NgbRTL {\n constructor(document) {\n this._element = document.documentElement;\n }\n isRTL() {\n return (this._element.getAttribute('dir') || '').toLowerCase() === 'rtl';\n }\n}\nNgbRTL.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbRTL, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nNgbRTL.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbRTL, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbRTL, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; } });\n\n/**\n * A directive that allows to stick a datepicker popup to an input field.\n *\n * Manages interaction with the input field itself, does value formatting and provides forms integration.\n */\nclass NgbInputDatepicker {\n constructor(_parserFormatter, _elRef, _vcRef, _renderer, _ngZone, _calendar, _dateAdapter, rtl, _document, _changeDetector, config) {\n this._parserFormatter = _parserFormatter;\n this._elRef = _elRef;\n this._vcRef = _vcRef;\n this._renderer = _renderer;\n this._ngZone = _ngZone;\n this._calendar = _calendar;\n this._dateAdapter = _dateAdapter;\n this._document = _document;\n this._changeDetector = _changeDetector;\n this._cRef = null;\n this._disabled = false;\n this._elWithFocus = null;\n this._model = null;\n this._destroyCloseHandlers$ = new Subject();\n /**\n * An event emitted when user selects a date using keyboard or mouse.\n *\n * The payload of the event is currently selected `NgbDate`.\n *\n * @since 1.1.1\n */\n this.dateSelect = new EventEmitter();\n /**\n * Event emitted right after the navigation happens and displayed month changes.\n *\n * See [`NgbDatepickerNavigateEvent`](#/components/datepicker/api#NgbDatepickerNavigateEvent) for the payload info.\n */\n this.navigate = new EventEmitter();\n /**\n * An event fired after closing datepicker window.\n *\n * @since 4.2.0\n */\n this.closed = new EventEmitter();\n this._onChange = (_) => { };\n this._onTouched = () => { };\n this._validatorChange = () => { };\n ['autoClose', 'container', 'positionTarget', 'placement', 'popperOptions'].forEach((input) => (this[input] = config[input]));\n this._positioning = ngbPositioning(rtl);\n }\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n this._disabled = value === '' || (value && value !== 'false');\n if (this.isOpen()) {\n this._cRef.instance.setDisabledState(this._disabled);\n }\n }\n registerOnChange(fn) {\n this._onChange = fn;\n }\n registerOnTouched(fn) {\n this._onTouched = fn;\n }\n registerOnValidatorChange(fn) {\n this._validatorChange = fn;\n }\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n validate(c) {\n const { value } = c;\n if (value != null) {\n const ngbDate = this._fromDateStruct(this._dateAdapter.fromModel(value));\n if (!ngbDate) {\n return { ngbDate: { invalid: value } };\n }\n if (this.minDate && ngbDate.before(NgbDate.from(this.minDate))) {\n return { ngbDate: { minDate: { minDate: this.minDate, actual: value } } };\n }\n if (this.maxDate && ngbDate.after(NgbDate.from(this.maxDate))) {\n return { ngbDate: { maxDate: { maxDate: this.maxDate, actual: value } } };\n }\n }\n return null;\n }\n writeValue(value) {\n this._model = this._fromDateStruct(this._dateAdapter.fromModel(value));\n this._writeModelValue(this._model);\n }\n manualDateChange(value, updateView = false) {\n const inputValueChanged = value !== this._inputValue;\n if (inputValueChanged) {\n this._inputValue = value;\n this._model = this._fromDateStruct(this._parserFormatter.parse(value));\n }\n if (inputValueChanged || !updateView) {\n this._onChange(this._model ? this._dateAdapter.toModel(this._model) : value === '' ? null : value);\n }\n if (updateView && this._model) {\n this._writeModelValue(this._model);\n }\n }\n isOpen() {\n return !!this._cRef;\n }\n /**\n * Opens the datepicker popup.\n *\n * If the related form control contains a valid date, the corresponding month will be opened.\n */\n open() {\n if (!this.isOpen()) {\n this._cRef = this._vcRef.createComponent(NgbDatepicker);\n this._applyPopupStyling(this._cRef.location.nativeElement);\n this._applyDatepickerInputs(this._cRef);\n this._subscribeForDatepickerOutputs(this._cRef.instance);\n this._cRef.instance.ngOnInit();\n this._cRef.instance.writeValue(this._dateAdapter.toModel(this._model));\n // date selection event handling\n this._cRef.instance.registerOnChange((selectedDate) => {\n this.writeValue(selectedDate);\n this._onChange(selectedDate);\n this._onTouched();\n });\n this._cRef.changeDetectorRef.detectChanges();\n this._cRef.instance.setDisabledState(this.disabled);\n if (this.container === 'body') {\n this._document.querySelector(this.container).appendChild(this._cRef.location.nativeElement);\n }\n // focus handling\n this._elWithFocus = this._document.activeElement;\n ngbFocusTrap(this._ngZone, this._cRef.location.nativeElement, this.closed, true);\n setTimeout(() => this._cRef?.instance.focus());\n let hostElement;\n if (isString(this.positionTarget)) {\n hostElement = this._document.querySelector(this.positionTarget);\n }\n else if (this.positionTarget instanceof HTMLElement) {\n hostElement = this.positionTarget;\n }\n else {\n hostElement = this._elRef.nativeElement;\n }\n // Setting up popper and scheduling updates when zone is stable\n this._ngZone.runOutsideAngular(() => {\n if (this._cRef) {\n this._positioning.createPopper({\n hostElement,\n targetElement: this._cRef.location.nativeElement,\n placement: this.placement,\n appendToBody: this.container === 'body',\n updatePopperOptions: (options) => this.popperOptions(addPopperOffset([0, 2])(options)),\n });\n this._zoneSubscription = this._ngZone.onStable.subscribe(() => this._positioning.update());\n }\n });\n if (this.positionTarget && !hostElement) {\n throw new Error('ngbDatepicker could not find element declared in [positionTarget] to position against.');\n }\n this._setCloseHandlers();\n }\n }\n /**\n * Closes the datepicker popup.\n */\n close() {\n if (this.isOpen()) {\n this._vcRef.remove(this._vcRef.indexOf(this._cRef.hostView));\n this._cRef = null;\n this._positioning.destroy();\n this._zoneSubscription?.unsubscribe();\n this._destroyCloseHandlers$.next();\n this.closed.emit();\n this._changeDetector.markForCheck();\n // restore focus\n let elementToFocus = this._elWithFocus;\n if (isString(this.restoreFocus)) {\n elementToFocus = this._document.querySelector(this.restoreFocus);\n }\n else if (this.restoreFocus !== undefined) {\n elementToFocus = this.restoreFocus;\n }\n // in IE document.activeElement can contain an object without 'focus()' sometimes\n if (elementToFocus && elementToFocus['focus']) {\n elementToFocus.focus();\n }\n else {\n this._document.body.focus();\n }\n }\n }\n /**\n * Toggles the datepicker popup.\n */\n toggle() {\n if (this.isOpen()) {\n this.close();\n }\n else {\n this.open();\n }\n }\n /**\n * Navigates to the provided date.\n *\n * With the default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.\n * If nothing or invalid date provided calendar will open current month.\n *\n * Use the `[startDate]` input as an alternative.\n */\n navigateTo(date) {\n if (this.isOpen()) {\n this._cRef.instance.navigateTo(date);\n }\n }\n onBlur() {\n this._onTouched();\n }\n onFocus() {\n this._elWithFocus = this._elRef.nativeElement;\n }\n ngOnChanges(changes) {\n if (changes['minDate'] || changes['maxDate']) {\n this._validatorChange();\n if (this.isOpen()) {\n if (changes['minDate']) {\n this._cRef.instance.minDate = this.minDate;\n }\n if (changes['maxDate']) {\n this._cRef.instance.maxDate = this.maxDate;\n }\n this._cRef.instance.ngOnChanges(changes);\n }\n }\n if (changes['datepickerClass']) {\n const { currentValue, previousValue } = changes['datepickerClass'];\n this._applyPopupClass(currentValue, previousValue);\n }\n if (changes['autoClose'] && this.isOpen()) {\n this._setCloseHandlers();\n }\n }\n ngOnDestroy() {\n this.close();\n }\n _applyDatepickerInputs(datepickerComponentRef) {\n [\n 'dayTemplate',\n 'dayTemplateData',\n 'displayMonths',\n 'firstDayOfWeek',\n 'footerTemplate',\n 'markDisabled',\n 'minDate',\n 'maxDate',\n 'navigation',\n 'outsideDays',\n 'showNavigation',\n 'showWeekNumbers',\n 'weekdays',\n ].forEach((inputName) => {\n if (this[inputName] !== undefined) {\n datepickerComponentRef.setInput(inputName, this[inputName]);\n }\n });\n datepickerComponentRef.setInput('startDate', this.startDate || this._model);\n }\n _applyPopupClass(newClass, oldClass) {\n const popupEl = this._cRef?.location.nativeElement;\n if (popupEl) {\n if (newClass) {\n this._renderer.addClass(popupEl, newClass);\n }\n if (oldClass) {\n this._renderer.removeClass(popupEl, oldClass);\n }\n }\n }\n _applyPopupStyling(nativeElement) {\n this._renderer.addClass(nativeElement, 'dropdown-menu');\n this._renderer.addClass(nativeElement, 'show');\n if (this.container === 'body') {\n this._renderer.addClass(nativeElement, 'ngb-dp-body');\n }\n this._applyPopupClass(this.datepickerClass);\n }\n _subscribeForDatepickerOutputs(datepickerInstance) {\n datepickerInstance.navigate.subscribe((navigateEvent) => this.navigate.emit(navigateEvent));\n datepickerInstance.dateSelect.subscribe((date) => {\n this.dateSelect.emit(date);\n if (this.autoClose === true || this.autoClose === 'inside') {\n this.close();\n }\n });\n }\n _writeModelValue(model) {\n const value = this._parserFormatter.format(model);\n this._inputValue = value;\n this._renderer.setProperty(this._elRef.nativeElement, 'value', value);\n if (this.isOpen()) {\n this._cRef.instance.writeValue(this._dateAdapter.toModel(model));\n this._onTouched();\n }\n }\n _fromDateStruct(date) {\n const ngbDate = date ? new NgbDate(date.year, date.month, date.day) : null;\n return this._calendar.isValid(ngbDate) ? ngbDate : null;\n }\n _setCloseHandlers() {\n this._destroyCloseHandlers$.next();\n ngbAutoClose(this._ngZone, this._document, this.autoClose, () => this.close(), this._destroyCloseHandlers$, [], [this._elRef.nativeElement, this._cRef.location.nativeElement]);\n }\n}\nNgbInputDatepicker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbInputDatepicker, deps: [{ token: NgbDateParserFormatter }, { token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: NgbCalendar }, { token: NgbDateAdapter }, { token: NgbRTL }, { token: DOCUMENT }, { token: i0.ChangeDetectorRef }, { token: NgbInputDatepickerConfig }], target: i0.ɵɵFactoryTarget.Directive });\nNgbInputDatepicker.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgbInputDatepicker, selector: \"input[ngbDatepicker]\", inputs: { autoClose: \"autoClose\", datepickerClass: \"datepickerClass\", dayTemplate: \"dayTemplate\", dayTemplateData: \"dayTemplateData\", displayMonths: \"displayMonths\", firstDayOfWeek: \"firstDayOfWeek\", footerTemplate: \"footerTemplate\", markDisabled: \"markDisabled\", minDate: \"minDate\", maxDate: \"maxDate\", navigation: \"navigation\", outsideDays: \"outsideDays\", placement: \"placement\", popperOptions: \"popperOptions\", restoreFocus: \"restoreFocus\", showWeekNumbers: \"showWeekNumbers\", startDate: \"startDate\", container: \"container\", positionTarget: \"positionTarget\", weekdays: \"weekdays\", disabled: \"disabled\" }, outputs: { dateSelect: \"dateSelect\", navigate: \"navigate\", closed: \"closed\" }, host: { listeners: { \"input\": \"manualDateChange($event.target.value)\", \"change\": \"manualDateChange($event.target.value, true)\", \"focus\": \"onFocus()\", \"blur\": \"onBlur()\" }, properties: { \"disabled\": \"disabled\" } }, providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbInputDatepicker), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => NgbInputDatepicker), multi: true },\n { provide: NgbDatepickerConfig, useExisting: NgbInputDatepickerConfig },\n ], exportAs: [\"ngbDatepicker\"], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbInputDatepicker, decorators: [{\n type: Directive,\n args: [{\n selector: 'input[ngbDatepicker]',\n exportAs: 'ngbDatepicker',\n host: {\n '(input)': 'manualDateChange($event.target.value)',\n '(change)': 'manualDateChange($event.target.value, true)',\n '(focus)': 'onFocus()',\n '(blur)': 'onBlur()',\n '[disabled]': 'disabled',\n },\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbInputDatepicker), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => NgbInputDatepicker), multi: true },\n { provide: NgbDatepickerConfig, useExisting: NgbInputDatepickerConfig },\n ],\n }]\n }], ctorParameters: function () { return [{ type: NgbDateParserFormatter }, { type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: NgbCalendar }, { type: NgbDateAdapter }, { type: NgbRTL }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i0.ChangeDetectorRef }, { type: NgbInputDatepickerConfig }]; }, propDecorators: { autoClose: [{\n type: Input\n }], datepickerClass: [{\n type: Input\n }], dayTemplate: [{\n type: Input\n }], dayTemplateData: [{\n type: Input\n }], displayMonths: [{\n type: Input\n }], firstDayOfWeek: [{\n type: Input\n }], footerTemplate: [{\n type: Input\n }], markDisabled: [{\n type: Input\n }], minDate: [{\n type: Input\n }], maxDate: [{\n type: Input\n }], navigation: [{\n type: Input\n }], outsideDays: [{\n type: Input\n }], placement: [{\n type: Input\n }], popperOptions: [{\n type: Input\n }], restoreFocus: [{\n type: Input\n }], showWeekNumbers: [{\n type: Input\n }], startDate: [{\n type: Input\n }], container: [{\n type: Input\n }], positionTarget: [{\n type: Input\n }], weekdays: [{\n type: Input\n }], dateSelect: [{\n type: Output\n }], navigate: [{\n type: Output\n }], closed: [{\n type: Output\n }], disabled: [{\n type: Input\n }] } });\n\nclass NgbCalendarHijri extends NgbCalendar {\n getDaysPerWeek() {\n return 7;\n }\n getMonths() {\n return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\n }\n getWeeksPerMonth() {\n return 6;\n }\n getNext(date, period = 'd', number = 1) {\n date = new NgbDate(date.year, date.month, date.day);\n switch (period) {\n case 'y':\n date = this._setYear(date, date.year + number);\n date.month = 1;\n date.day = 1;\n return date;\n case 'm':\n date = this._setMonth(date, date.month + number);\n date.day = 1;\n return date;\n case 'd':\n return this._setDay(date, date.day + number);\n default:\n return date;\n }\n }\n getPrev(date, period = 'd', number = 1) {\n return this.getNext(date, period, -number);\n }\n getWeekday(date) {\n const day = this.toGregorian(date).getDay();\n // in JS Date Sun=0, in ISO 8601 Sun=7\n return day === 0 ? 7 : day;\n }\n getWeekNumber(week, firstDayOfWeek) {\n // in JS Date Sun=0, in ISO 8601 Sun=7\n if (firstDayOfWeek === 7) {\n firstDayOfWeek = 0;\n }\n const thursdayIndex = (4 + 7 - firstDayOfWeek) % 7;\n const date = week[thursdayIndex];\n const jsDate = this.toGregorian(date);\n jsDate.setDate(jsDate.getDate() + 4 - (jsDate.getDay() || 7)); // Thursday\n const time = jsDate.getTime();\n const MuhDate = this.toGregorian(new NgbDate(date.year, 1, 1)); // Compare with Muharram 1\n return Math.floor(Math.round((time - MuhDate.getTime()) / 86400000) / 7) + 1;\n }\n getToday() {\n return this.fromGregorian(new Date());\n }\n isValid(date) {\n return (date != null &&\n isNumber(date.year) &&\n isNumber(date.month) &&\n isNumber(date.day) &&\n !isNaN(this.toGregorian(date).getTime()));\n }\n _setDay(date, day) {\n day = +day;\n let mDays = this.getDaysPerMonth(date.month, date.year);\n if (day <= 0) {\n while (day <= 0) {\n date = this._setMonth(date, date.month - 1);\n mDays = this.getDaysPerMonth(date.month, date.year);\n day += mDays;\n }\n }\n else if (day > mDays) {\n while (day > mDays) {\n day -= mDays;\n date = this._setMonth(date, date.month + 1);\n mDays = this.getDaysPerMonth(date.month, date.year);\n }\n }\n date.day = day;\n return date;\n }\n _setMonth(date, month) {\n month = +month;\n date.year = date.year + Math.floor((month - 1) / 12);\n date.month = Math.floor((((month - 1) % 12) + 12) % 12) + 1;\n return date;\n }\n _setYear(date, year) {\n date.year = +year;\n return date;\n }\n}\nNgbCalendarHijri.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbCalendarHijri, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\nNgbCalendarHijri.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbCalendarHijri });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbCalendarHijri, decorators: [{\n type: Injectable\n }] });\n\n/**\n * Checks if islamic year is a leap year\n */\nfunction isIslamicLeapYear(hYear) {\n return (14 + 11 * hYear) % 30 < 11;\n}\n/**\n * Checks if gregorian years is a leap year\n */\nfunction isGregorianLeapYear$1(gDate) {\n const year = gDate.getFullYear();\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n}\n/**\n * Returns the start of Hijri Month.\n * `hMonth` is 0 for Muharram, 1 for Safar, etc.\n * `hYear` is any Hijri hYear.\n */\nfunction getIslamicMonthStart(hYear, hMonth) {\n return Math.ceil(29.5 * hMonth) + (hYear - 1) * 354 + Math.floor((3 + 11 * hYear) / 30.0);\n}\n/**\n * Returns the start of Hijri year.\n * `year` is any Hijri year.\n */\nfunction getIslamicYearStart(year) {\n return (year - 1) * 354 + Math.floor((3 + 11 * year) / 30.0);\n}\nfunction mod$1(a, b) {\n return a - b * Math.floor(a / b);\n}\n/**\n * The civil calendar is one type of Hijri calendars used in islamic countries.\n * Uses a fixed cycle of alternating 29- and 30-day months,\n * with a leap day added to the last month of 11 out of every 30 years.\n * http://cldr.unicode.org/development/development-process/design-proposals/islamic-calendar-types\n * All the calculations here are based on the equations from \"Calendrical Calculations\" By Edward M. Reingold, Nachum\n * Dershowitz.\n */\nconst GREGORIAN_EPOCH$1 = 1721425.5;\nconst ISLAMIC_EPOCH = 1948439.5;\nclass NgbCalendarIslamicCivil extends NgbCalendarHijri {\n /**\n * Returns the equivalent islamic(civil) date value for a give input Gregorian date.\n * `gDate` is a JS Date to be converted to Hijri.\n */\n fromGregorian(gDate) {\n const gYear = gDate.getFullYear(), gMonth = gDate.getMonth(), gDay = gDate.getDate();\n let julianDay = GREGORIAN_EPOCH$1 -\n 1 +\n 365 * (gYear - 1) +\n Math.floor((gYear - 1) / 4) +\n -Math.floor((gYear - 1) / 100) +\n Math.floor((gYear - 1) / 400) +\n Math.floor((367 * (gMonth + 1) - 362) / 12 + (gMonth + 1 <= 2 ? 0 : isGregorianLeapYear$1(gDate) ? -1 : -2) + gDay);\n julianDay = Math.floor(julianDay) + 0.5;\n const days = julianDay - ISLAMIC_EPOCH;\n const hYear = Math.floor((30 * days + 10646) / 10631.0);\n let hMonth = Math.ceil((days - 29 - getIslamicYearStart(hYear)) / 29.5);\n hMonth = Math.min(hMonth, 11);\n const hDay = Math.ceil(days - getIslamicMonthStart(hYear, hMonth)) + 1;\n return new NgbDate(hYear, hMonth + 1, hDay);\n }\n /**\n * Returns the equivalent JS date value for a give input islamic(civil) date.\n * `hDate` is an islamic(civil) date to be converted to Gregorian.\n */\n toGregorian(hDate) {\n const hYear = hDate.year;\n const hMonth = hDate.month - 1;\n const hDay = hDate.day;\n const julianDay = hDay + Math.ceil(29.5 * hMonth) + (hYear - 1) * 354 + Math.floor((3 + 11 * hYear) / 30) + ISLAMIC_EPOCH - 1;\n const wjd = Math.floor(julianDay - 0.5) + 0.5, depoch = wjd - GREGORIAN_EPOCH$1, quadricent = Math.floor(depoch / 146097), dqc = mod$1(depoch, 146097), cent = Math.floor(dqc / 36524), dcent = mod$1(dqc, 36524), quad = Math.floor(dcent / 1461), dquad = mod$1(dcent, 1461), yindex = Math.floor(dquad / 365);\n let year = quadricent * 400 + cent * 100 + quad * 4 + yindex;\n if (!(cent === 4 || yindex === 4)) {\n year++;\n }\n const gYearStart = GREGORIAN_EPOCH$1 +\n 365 * (year - 1) +\n Math.floor((year - 1) / 4) -\n Math.floor((year - 1) / 100) +\n Math.floor((year - 1) / 400);\n const yearday = wjd - gYearStart;\n const tjd = GREGORIAN_EPOCH$1 -\n 1 +\n 365 * (year - 1) +\n Math.floor((year - 1) / 4) -\n Math.floor((year - 1) / 100) +\n Math.floor((year - 1) / 400) +\n Math.floor(739 / 12 + (isGregorianLeapYear$1(new Date(year, 3, 1)) ? -1 : -2) + 1);\n const leapadj = wjd < tjd ? 0 : isGregorianLeapYear$1(new Date(year, 3, 1)) ? 1 : 2;\n const month = Math.floor(((yearday + leapadj) * 12 + 373) / 367);\n const tjd2 = GREGORIAN_EPOCH$1 -\n 1 +\n 365 * (year - 1) +\n Math.floor((year - 1) / 4) -\n Math.floor((year - 1) / 100) +\n Math.floor((year - 1) / 400) +\n Math.floor((367 * month - 362) / 12 + (month <= 2 ? 0 : isGregorianLeapYear$1(new Date(year, month - 1, 1)) ? -1 : -2) + 1);\n const day = wjd - tjd2 + 1;\n return new Date(year, month - 1, day);\n }\n /**\n * Returns the number of days in a specific Hijri month.\n * `month` is 1 for Muharram, 2 for Safar, etc.\n * `year` is any Hijri year.\n */\n getDaysPerMonth(month, year) {\n year = year + Math.floor(month / 13);\n month = ((month - 1) % 12) + 1;\n let length = 29 + (month % 2);\n if (month === 12 && isIslamicLeapYear(year)) {\n length++;\n }\n return length;\n }\n}\nNgbCalendarIslamicCivil.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbCalendarIslamicCivil, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\nNgbCalendarIslamicCivil.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbCalendarIslamicCivil });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbCalendarIslamicCivil, decorators: [{\n type: Injectable\n }] });\n\n/**\n * Umalqura calendar is one type of Hijri calendars used in islamic countries.\n * This Calendar is used by Saudi Arabia for administrative purpose.\n * Unlike tabular calendars, the algorithm involves astronomical calculation, but it's still deterministic.\n * http://cldr.unicode.org/development/development-process/design-proposals/islamic-calendar-types\n */\nconst GREGORIAN_FIRST_DATE = new Date(1882, 10, 12);\nconst GREGORIAN_LAST_DATE = new Date(2174, 10, 25);\nconst HIJRI_BEGIN = 1300;\nconst HIJRI_END = 1600;\nconst ONE_DAY = 1000 * 60 * 60 * 24;\nconst MONTH_LENGTH = [\n // 1300-1304\n '101010101010',\n '110101010100',\n '111011001001',\n '011011010100',\n '011011101010',\n // 1305-1309\n '001101101100',\n '101010101101',\n '010101010101',\n '011010101001',\n '011110010010',\n // 1310-1314\n '101110101001',\n '010111010100',\n '101011011010',\n '010101011100',\n '110100101101',\n // 1315-1319\n '011010010101',\n '011101001010',\n '101101010100',\n '101101101010',\n '010110101101',\n // 1320-1324\n '010010101110',\n '101001001111',\n '010100010111',\n '011010001011',\n '011010100101',\n // 1325-1329\n '101011010101',\n '001011010110',\n '100101011011',\n '010010011101',\n '101001001101',\n // 1330-1334\n '110100100110',\n '110110010101',\n '010110101100',\n '100110110110',\n '001010111010',\n // 1335-1339\n '101001011011',\n '010100101011',\n '101010010101',\n '011011001010',\n '101011101001',\n // 1340-1344\n '001011110100',\n '100101110110',\n '001010110110',\n '100101010110',\n '101011001010',\n // 1345-1349\n '101110100100',\n '101111010010',\n '010111011001',\n '001011011100',\n '100101101101',\n // 1350-1354\n '010101001101',\n '101010100101',\n '101101010010',\n '101110100101',\n '010110110100',\n // 1355-1359\n '100110110110',\n '010101010111',\n '001010010111',\n '010101001011',\n '011010100011',\n // 1360-1364\n '011101010010',\n '101101100101',\n '010101101010',\n '101010101011',\n '010100101011',\n // 1365-1369\n '110010010101',\n '110101001010',\n '110110100101',\n '010111001010',\n '101011010110',\n // 1370-1374\n '100101010111',\n '010010101011',\n '100101001011',\n '101010100101',\n '101101010010',\n // 1375-1379\n '101101101010',\n '010101110101',\n '001001110110',\n '100010110111',\n '010001011011',\n // 1380-1384\n '010101010101',\n '010110101001',\n '010110110100',\n '100111011010',\n '010011011101',\n // 1385-1389\n '001001101110',\n '100100110110',\n '101010101010',\n '110101010100',\n '110110110010',\n // 1390-1394\n '010111010101',\n '001011011010',\n '100101011011',\n '010010101011',\n '101001010101',\n // 1395-1399\n '101101001001',\n '101101100100',\n '101101110001',\n '010110110100',\n '101010110101',\n // 1400-1404\n '101001010101',\n '110100100101',\n '111010010010',\n '111011001001',\n '011011010100',\n // 1405-1409\n '101011101001',\n '100101101011',\n '010010101011',\n '101010010011',\n '110101001001',\n // 1410-1414\n '110110100100',\n '110110110010',\n '101010111001',\n '010010111010',\n '101001011011',\n // 1415-1419\n '010100101011',\n '101010010101',\n '101100101010',\n '101101010101',\n '010101011100',\n // 1420-1424\n '010010111101',\n '001000111101',\n '100100011101',\n '101010010101',\n '101101001010',\n // 1425-1429\n '101101011010',\n '010101101101',\n '001010110110',\n '100100111011',\n '010010011011',\n // 1430-1434\n '011001010101',\n '011010101001',\n '011101010100',\n '101101101010',\n '010101101100',\n // 1435-1439\n '101010101101',\n '010101010101',\n '101100101001',\n '101110010010',\n '101110101001',\n // 1440-1444\n '010111010100',\n '101011011010',\n '010101011010',\n '101010101011',\n '010110010101',\n // 1445-1449\n '011101001001',\n '011101100100',\n '101110101010',\n '010110110101',\n '001010110110',\n // 1450-1454\n '101001010110',\n '111001001101',\n '101100100101',\n '101101010010',\n '101101101010',\n // 1455-1459\n '010110101101',\n '001010101110',\n '100100101111',\n '010010010111',\n '011001001011',\n // 1460-1464\n '011010100101',\n '011010101100',\n '101011010110',\n '010101011101',\n '010010011101',\n // 1465-1469\n '101001001101',\n '110100010110',\n '110110010101',\n '010110101010',\n '010110110101',\n // 1470-1474\n '001011011010',\n '100101011011',\n '010010101101',\n '010110010101',\n '011011001010',\n // 1475-1479\n '011011100100',\n '101011101010',\n '010011110101',\n '001010110110',\n '100101010110',\n // 1480-1484\n '101010101010',\n '101101010100',\n '101111010010',\n '010111011001',\n '001011101010',\n // 1485-1489\n '100101101101',\n '010010101101',\n '101010010101',\n '101101001010',\n '101110100101',\n // 1490-1494\n '010110110010',\n '100110110101',\n '010011010110',\n '101010010111',\n '010101000111',\n // 1495-1499\n '011010010011',\n '011101001001',\n '101101010101',\n '010101101010',\n '101001101011',\n // 1500-1504\n '010100101011',\n '101010001011',\n '110101000110',\n '110110100011',\n '010111001010',\n // 1505-1509\n '101011010110',\n '010011011011',\n '001001101011',\n '100101001011',\n '101010100101',\n // 1510-1514\n '101101010010',\n '101101101001',\n '010101110101',\n '000101110110',\n '100010110111',\n // 1515-1519\n '001001011011',\n '010100101011',\n '010101100101',\n '010110110100',\n '100111011010',\n // 1520-1524\n '010011101101',\n '000101101101',\n '100010110110',\n '101010100110',\n '110101010010',\n // 1525-1529\n '110110101001',\n '010111010100',\n '101011011010',\n '100101011011',\n '010010101011',\n // 1530-1534\n '011001010011',\n '011100101001',\n '011101100010',\n '101110101001',\n '010110110010',\n // 1535-1539\n '101010110101',\n '010101010101',\n '101100100101',\n '110110010010',\n '111011001001',\n // 1540-1544\n '011011010010',\n '101011101001',\n '010101101011',\n '010010101011',\n '101001010101',\n // 1545-1549\n '110100101001',\n '110101010100',\n '110110101010',\n '100110110101',\n '010010111010',\n // 1550-1554\n '101000111011',\n '010010011011',\n '101001001101',\n '101010101010',\n '101011010101',\n // 1555-1559\n '001011011010',\n '100101011101',\n '010001011110',\n '101000101110',\n '110010011010',\n // 1560-1564\n '110101010101',\n '011010110010',\n '011010111001',\n '010010111010',\n '101001011101',\n // 1565-1569\n '010100101101',\n '101010010101',\n '101101010010',\n '101110101000',\n '101110110100',\n // 1570-1574\n '010110111001',\n '001011011010',\n '100101011010',\n '101101001010',\n '110110100100',\n // 1575-1579\n '111011010001',\n '011011101000',\n '101101101010',\n '010101101101',\n '010100110101',\n // 1580-1584\n '011010010101',\n '110101001010',\n '110110101000',\n '110111010100',\n '011011011010',\n // 1585-1589\n '010101011011',\n '001010011101',\n '011000101011',\n '101100010101',\n '101101001010',\n // 1590-1594\n '101110010101',\n '010110101010',\n '101010101110',\n '100100101110',\n '110010001111',\n // 1595-1599\n '010100100111',\n '011010010101',\n '011010101010',\n '101011010110',\n '010101011101',\n // 1600\n '001010011101',\n];\nfunction getDaysDiff(date1, date2) {\n // Ignores the time part in date1 and date2:\n const time1 = Date.UTC(date1.getFullYear(), date1.getMonth(), date1.getDate());\n const time2 = Date.UTC(date2.getFullYear(), date2.getMonth(), date2.getDate());\n const diff = Math.abs(time1 - time2);\n return Math.round(diff / ONE_DAY);\n}\nclass NgbCalendarIslamicUmalqura extends NgbCalendarIslamicCivil {\n /**\n * Returns the equivalent islamic(Umalqura) date value for a give input Gregorian date.\n * `gdate` is s JS Date to be converted to Hijri.\n */\n fromGregorian(gDate) {\n let hDay = 1, hMonth = 0, hYear = 1300;\n let daysDiff = getDaysDiff(gDate, GREGORIAN_FIRST_DATE);\n if (gDate.getTime() - GREGORIAN_FIRST_DATE.getTime() >= 0 && gDate.getTime() - GREGORIAN_LAST_DATE.getTime() <= 0) {\n let year = 1300;\n for (let i = 0; i < MONTH_LENGTH.length; i++, year++) {\n for (let j = 0; j < 12; j++) {\n let numOfDays = +MONTH_LENGTH[i][j] + 29;\n if (daysDiff <= numOfDays) {\n hDay = daysDiff + 1;\n if (hDay > numOfDays) {\n hDay = 1;\n j++;\n }\n if (j > 11) {\n j = 0;\n year++;\n }\n hMonth = j;\n hYear = year;\n return new NgbDate(hYear, hMonth + 1, hDay);\n }\n daysDiff = daysDiff - numOfDays;\n }\n }\n return null;\n }\n else {\n return super.fromGregorian(gDate);\n }\n }\n /**\n * Converts the current Hijri date to Gregorian.\n */\n toGregorian(hDate) {\n const hYear = hDate.year;\n const hMonth = hDate.month - 1;\n const hDay = hDate.day;\n let gDate = new Date(GREGORIAN_FIRST_DATE);\n let dayDiff = hDay - 1;\n if (hYear >= HIJRI_BEGIN && hYear <= HIJRI_END) {\n for (let y = 0; y < hYear - HIJRI_BEGIN; y++) {\n for (let m = 0; m < 12; m++) {\n dayDiff += +MONTH_LENGTH[y][m] + 29;\n }\n }\n for (let m = 0; m < hMonth; m++) {\n dayDiff += +MONTH_LENGTH[hYear - HIJRI_BEGIN][m] + 29;\n }\n gDate.setDate(GREGORIAN_FIRST_DATE.getDate() + dayDiff);\n }\n else {\n gDate = super.toGregorian(hDate);\n }\n return gDate;\n }\n /**\n * Returns the number of days in a specific Hijri hMonth.\n * `hMonth` is 1 for Muharram, 2 for Safar, etc.\n * `hYear` is any Hijri hYear.\n */\n getDaysPerMonth(hMonth, hYear) {\n if (hYear >= HIJRI_BEGIN && hYear <= HIJRI_END) {\n const pos = hYear - HIJRI_BEGIN;\n return +MONTH_LENGTH[pos][hMonth - 1] + 29;\n }\n return super.getDaysPerMonth(hMonth, hYear);\n }\n}\nNgbCalendarIslamicUmalqura.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbCalendarIslamicUmalqura, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\nNgbCalendarIslamicUmalqura.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbCalendarIslamicUmalqura });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbCalendarIslamicUmalqura, decorators: [{\n type: Injectable\n }] });\n\n/**\n * Returns the equivalent JS date value for a give input Jalali date.\n * `jalaliDate` is an Jalali date to be converted to Gregorian.\n */\nfunction toGregorian$2(jalaliDate) {\n let jdn = jalaliToJulian(jalaliDate.year, jalaliDate.month, jalaliDate.day);\n let date = julianToGregorian(jdn);\n date.setHours(6, 30, 3, 200);\n return date;\n}\n/**\n * Returns the equivalent jalali date value for a give input Gregorian date.\n * `gdate` is a JS Date to be converted to jalali.\n * utc to local\n */\nfunction fromGregorian$2(gdate) {\n let g2d = gregorianToJulian(gdate.getFullYear(), gdate.getMonth() + 1, gdate.getDate());\n return julianToJalali(g2d);\n}\nfunction setJalaliYear(date, yearValue) {\n date.year = +yearValue;\n return date;\n}\nfunction setJalaliMonth(date, month) {\n month = +month;\n date.year = date.year + Math.floor((month - 1) / 12);\n date.month = Math.floor((((month - 1) % 12) + 12) % 12) + 1;\n return date;\n}\nfunction setJalaliDay(date, day) {\n let mDays = getDaysPerMonth(date.month, date.year);\n if (day <= 0) {\n while (day <= 0) {\n date = setJalaliMonth(date, date.month - 1);\n mDays = getDaysPerMonth(date.month, date.year);\n day += mDays;\n }\n }\n else if (day > mDays) {\n while (day > mDays) {\n day -= mDays;\n date = setJalaliMonth(date, date.month + 1);\n mDays = getDaysPerMonth(date.month, date.year);\n }\n }\n date.day = day;\n return date;\n}\nfunction mod(a, b) {\n return a - b * Math.floor(a / b);\n}\nfunction div(a, b) {\n return Math.trunc(a / b);\n}\n/*\n This function determines if the Jalali (Persian) year is\n leap (366-day long) or is the common year (365 days), and\n finds the day in March (Gregorian calendar) of the first\n day of the Jalali year (jalaliYear).\n @param jalaliYear Jalali calendar year (-61 to 3177)\n @return\n leap: number of years since the last leap year (0 to 4)\n gYear: Gregorian year of the beginning of Jalali year\n march: the March day of Farvardin the 1st (1st day of jalaliYear)\n @see: http://www.astro.uni.torun.pl/~kb/Papers/EMP/PersianC-EMP.htm\n @see: http://www.fourmilab.ch/documents/calendar/\n */\nfunction jalCal(jalaliYear) {\n // Jalali years starting the 33-year rule.\n let breaks = [\n -61, 9, 38, 199, 426, 686, 756, 818, 1111, 1181, 1210, 1635, 2060, 2097, 2192, 2262, 2324, 2394, 2456, 3178,\n ];\n const breaksLength = breaks.length;\n const gYear = jalaliYear + 621;\n let leapJ = -14;\n let jp = breaks[0];\n if (jalaliYear < jp || jalaliYear >= breaks[breaksLength - 1]) {\n throw new Error('Invalid Jalali year ' + jalaliYear);\n }\n // Find the limiting years for the Jalali year jalaliYear.\n let jump;\n for (let i = 1; i < breaksLength; i += 1) {\n const jm = breaks[i];\n jump = jm - jp;\n if (jalaliYear < jm) {\n break;\n }\n leapJ = leapJ + div(jump, 33) * 8 + div(mod(jump, 33), 4);\n jp = jm;\n }\n let n = jalaliYear - jp;\n // Find the number of leap years from AD 621 to the beginning\n // of the current Jalali year in the Persian calendar.\n leapJ = leapJ + div(n, 33) * 8 + div(mod(n, 33) + 3, 4);\n if (mod(jump, 33) === 4 && jump - n === 4) {\n leapJ += 1;\n }\n // And the same in the Gregorian calendar (until the year gYear).\n const leapG = div(gYear, 4) - div((div(gYear, 100) + 1) * 3, 4) - 150;\n // Determine the Gregorian date of Farvardin the 1st.\n const march = 20 + leapJ - leapG;\n // Find how many years have passed since the last leap year.\n if (jump - n < 6) {\n n = n - jump + div(jump + 4, 33) * 33;\n }\n let leap = mod(mod(n + 1, 33) - 1, 4);\n if (leap === -1) {\n leap = 4;\n }\n return { leap: leap, gy: gYear, march: march };\n}\n/*\n Calculates Gregorian and Julian calendar dates from the Julian Day number\n (jdn) for the period since jdn=-34839655 (i.e. the year -100100 of both\n calendars) to some millions years ahead of the present.\n @param jdn Julian Day number\n @return\n gYear: Calendar year (years BC numbered 0, -1, -2, ...)\n gMonth: Calendar month (1 to 12)\n gDay: Calendar day of the month M (1 to 28/29/30/31)\n */\nfunction julianToGregorian(julianDayNumber) {\n let j = 4 * julianDayNumber + 139361631;\n j = j + div(div(4 * julianDayNumber + 183187720, 146097) * 3, 4) * 4 - 3908;\n const i = div(mod(j, 1461), 4) * 5 + 308;\n const gDay = div(mod(i, 153), 5) + 1;\n const gMonth = mod(div(i, 153), 12) + 1;\n const gYear = div(j, 1461) - 100100 + div(8 - gMonth, 6);\n return new Date(gYear, gMonth - 1, gDay);\n}\n/*\n Converts a date of the Jalali calendar to the Julian Day number.\n @param jy Jalali year (1 to 3100)\n @param jm Jalali month (1 to 12)\n @param jd Jalali day (1 to 29/31)\n @return Julian Day number\n */\nfunction gregorianToJulian(gy, gm, gd) {\n let d = div((gy + div(gm - 8, 6) + 100100) * 1461, 4) + div(153 * mod(gm + 9, 12) + 2, 5) + gd - 34840408;\n d = d - div(div(gy + 100100 + div(gm - 8, 6), 100) * 3, 4) + 752;\n return d;\n}\n/*\n Converts the Julian Day number to a date in the Jalali calendar.\n @param julianDayNumber Julian Day number\n @return\n jalaliYear: Jalali year (1 to 3100)\n jalaliMonth: Jalali month (1 to 12)\n jalaliDay: Jalali day (1 to 29/31)\n */\nfunction julianToJalali(julianDayNumber) {\n let gy = julianToGregorian(julianDayNumber).getFullYear(), // Calculate Gregorian year (gy).\n jalaliYear = gy - 621, r = jalCal(jalaliYear), gregorianDay = gregorianToJulian(gy, 3, r.march), jalaliDay, jalaliMonth, numberOfDays;\n // Find number of days that passed since 1 Farvardin.\n numberOfDays = julianDayNumber - gregorianDay;\n if (numberOfDays >= 0) {\n if (numberOfDays <= 185) {\n // The first 6 months.\n jalaliMonth = 1 + div(numberOfDays, 31);\n jalaliDay = mod(numberOfDays, 31) + 1;\n return new NgbDate(jalaliYear, jalaliMonth, jalaliDay);\n }\n else {\n // The remaining months.\n numberOfDays -= 186;\n }\n }\n else {\n // Previous Jalali year.\n jalaliYear -= 1;\n numberOfDays += 179;\n if (r.leap === 1) {\n numberOfDays += 1;\n }\n }\n jalaliMonth = 7 + div(numberOfDays, 30);\n jalaliDay = mod(numberOfDays, 30) + 1;\n return new NgbDate(jalaliYear, jalaliMonth, jalaliDay);\n}\n/*\n Converts a date of the Jalali calendar to the Julian Day number.\n @param jYear Jalali year (1 to 3100)\n @param jMonth Jalali month (1 to 12)\n @param jDay Jalali day (1 to 29/31)\n @return Julian Day number\n */\nfunction jalaliToJulian(jYear, jMonth, jDay) {\n let r = jalCal(jYear);\n return gregorianToJulian(r.gy, 3, r.march) + (jMonth - 1) * 31 - div(jMonth, 7) * (jMonth - 7) + jDay - 1;\n}\n/**\n * Returns the number of days in a specific jalali month.\n */\nfunction getDaysPerMonth(month, year) {\n if (month <= 6) {\n return 31;\n }\n if (month <= 11) {\n return 30;\n }\n if (jalCal(year).leap === 0) {\n return 30;\n }\n return 29;\n}\n\nclass NgbCalendarPersian extends NgbCalendar {\n getDaysPerWeek() {\n return 7;\n }\n getMonths() {\n return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\n }\n getWeeksPerMonth() {\n return 6;\n }\n getNext(date, period = 'd', number = 1) {\n date = new NgbDate(date.year, date.month, date.day);\n switch (period) {\n case 'y':\n date = setJalaliYear(date, date.year + number);\n date.month = 1;\n date.day = 1;\n return date;\n case 'm':\n date = setJalaliMonth(date, date.month + number);\n date.day = 1;\n return date;\n case 'd':\n return setJalaliDay(date, date.day + number);\n default:\n return date;\n }\n }\n getPrev(date, period = 'd', number = 1) {\n return this.getNext(date, period, -number);\n }\n getWeekday(date) {\n const day = toGregorian$2(date).getDay();\n // in JS Date Sun=0, in ISO 8601 Sun=7\n return day === 0 ? 7 : day;\n }\n getWeekNumber(week, firstDayOfWeek) {\n // in JS Date Sun=0, in ISO 8601 Sun=7\n if (firstDayOfWeek === 7) {\n firstDayOfWeek = 0;\n }\n const thursdayIndex = (4 + 7 - firstDayOfWeek) % 7;\n const date = week[thursdayIndex];\n const jsDate = toGregorian$2(date);\n jsDate.setDate(jsDate.getDate() + 4 - (jsDate.getDay() || 7)); // Thursday\n const time = jsDate.getTime();\n const startDate = toGregorian$2(new NgbDate(date.year, 1, 1));\n return Math.floor(Math.round((time - startDate.getTime()) / 86400000) / 7) + 1;\n }\n getToday() {\n return fromGregorian$2(new Date());\n }\n isValid(date) {\n return (date != null &&\n isInteger(date.year) &&\n isInteger(date.month) &&\n isInteger(date.day) &&\n !isNaN(toGregorian$2(date).getTime()));\n }\n}\nNgbCalendarPersian.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbCalendarPersian, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\nNgbCalendarPersian.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbCalendarPersian });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbCalendarPersian, decorators: [{\n type: Injectable\n }] });\n\nconst PARTS_PER_HOUR = 1080;\nconst PARTS_PER_DAY = 24 * PARTS_PER_HOUR;\nconst PARTS_FRACTIONAL_MONTH = 12 * PARTS_PER_HOUR + 793;\nconst PARTS_PER_MONTH = 29 * PARTS_PER_DAY + PARTS_FRACTIONAL_MONTH;\nconst BAHARAD = 11 * PARTS_PER_HOUR + 204;\nconst HEBREW_DAY_ON_JAN_1_1970 = 2092591;\nconst GREGORIAN_EPOCH = 1721425.5;\nfunction isGregorianLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n}\nfunction numberOfFirstDayInYear(year) {\n let monthsBeforeYear = Math.floor((235 * year - 234) / 19);\n let fractionalMonthsBeforeYear = monthsBeforeYear * PARTS_FRACTIONAL_MONTH + BAHARAD;\n let dayNumber = monthsBeforeYear * 29 + Math.floor(fractionalMonthsBeforeYear / PARTS_PER_DAY);\n let timeOfDay = fractionalMonthsBeforeYear % PARTS_PER_DAY;\n let dayOfWeek = dayNumber % 7; // 0 == Monday\n if (dayOfWeek === 2 || dayOfWeek === 4 || dayOfWeek === 6) {\n dayNumber++;\n dayOfWeek = dayNumber % 7;\n }\n if (dayOfWeek === 1 && timeOfDay > 15 * PARTS_PER_HOUR + 204 && !isHebrewLeapYear(year)) {\n dayNumber += 2;\n }\n else if (dayOfWeek === 0 && timeOfDay > 21 * PARTS_PER_HOUR + 589 && isHebrewLeapYear(year - 1)) {\n dayNumber++;\n }\n return dayNumber;\n}\nfunction getDaysInGregorianMonth(month, year) {\n let days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n if (isGregorianLeapYear(year)) {\n days[1]++;\n }\n return days[month - 1];\n}\nfunction getHebrewMonths(year) {\n return isHebrewLeapYear(year) ? 13 : 12;\n}\n/**\n * Returns the number of days in a specific Hebrew year.\n * `year` is any Hebrew year.\n */\nfunction getDaysInHebrewYear(year) {\n return numberOfFirstDayInYear(year + 1) - numberOfFirstDayInYear(year);\n}\nfunction isHebrewLeapYear(year) {\n if (year != null) {\n let b = (year * 12 + 17) % 19;\n return b >= (b < 0 ? -7 : 12);\n }\n return false;\n}\n/**\n * Returns the number of days in a specific Hebrew month.\n * `month` is 1 for Nisan, 2 for Iyar etc. Note: Hebrew leap year contains 13 months.\n * `year` is any Hebrew year.\n */\nfunction getDaysInHebrewMonth(month, year) {\n let yearLength = numberOfFirstDayInYear(year + 1) - numberOfFirstDayInYear(year);\n let yearType = (yearLength <= 380 ? yearLength : yearLength - 30) - 353;\n let leapYear = isHebrewLeapYear(year);\n let daysInMonth = leapYear\n ? [30, 29, 29, 29, 30, 30, 29, 30, 29, 30, 29, 30, 29]\n : [30, 29, 29, 29, 30, 29, 30, 29, 30, 29, 30, 29];\n if (yearType > 0) {\n daysInMonth[2]++; // Kislev gets an extra day in normal or complete years.\n }\n if (yearType > 1) {\n daysInMonth[1]++; // Heshvan gets an extra day in complete years only.\n }\n return daysInMonth[month - 1];\n}\nfunction getDayNumberInHebrewYear(date) {\n let numberOfDay = 0;\n for (let i = 1; i < date.month; i++) {\n numberOfDay += getDaysInHebrewMonth(i, date.year);\n }\n return numberOfDay + date.day;\n}\nfunction setHebrewMonth(date, val) {\n let after = val >= 0;\n if (!after) {\n val = -val;\n }\n while (val > 0) {\n if (after) {\n if (val > getHebrewMonths(date.year) - date.month) {\n val -= getHebrewMonths(date.year) - date.month + 1;\n date.year++;\n date.month = 1;\n }\n else {\n date.month += val;\n val = 0;\n }\n }\n else {\n if (val >= date.month) {\n date.year--;\n val -= date.month;\n date.month = getHebrewMonths(date.year);\n }\n else {\n date.month -= val;\n val = 0;\n }\n }\n }\n return date;\n}\nfunction setHebrewDay(date, val) {\n let after = val >= 0;\n if (!after) {\n val = -val;\n }\n while (val > 0) {\n if (after) {\n if (val > getDaysInHebrewYear(date.year) - getDayNumberInHebrewYear(date)) {\n val -= getDaysInHebrewYear(date.year) - getDayNumberInHebrewYear(date) + 1;\n date.year++;\n date.month = 1;\n date.day = 1;\n }\n else if (val > getDaysInHebrewMonth(date.month, date.year) - date.day) {\n val -= getDaysInHebrewMonth(date.month, date.year) - date.day + 1;\n date.month++;\n date.day = 1;\n }\n else {\n date.day += val;\n val = 0;\n }\n }\n else {\n if (val >= date.day) {\n val -= date.day;\n date.month--;\n if (date.month === 0) {\n date.year--;\n date.month = getHebrewMonths(date.year);\n }\n date.day = getDaysInHebrewMonth(date.month, date.year);\n }\n else {\n date.day -= val;\n val = 0;\n }\n }\n }\n return date;\n}\n/**\n * Returns the equivalent Hebrew date value for a give input Gregorian date.\n * `gdate` is a JS Date to be converted to Hebrew date.\n */\nfunction fromGregorian$1(gdate) {\n const date = new Date(gdate);\n const gYear = date.getFullYear(), gMonth = date.getMonth(), gDay = date.getDate();\n let julianDay = GREGORIAN_EPOCH -\n 1 +\n 365 * (gYear - 1) +\n Math.floor((gYear - 1) / 4) -\n Math.floor((gYear - 1) / 100) +\n Math.floor((gYear - 1) / 400) +\n Math.floor((367 * (gMonth + 1) - 362) / 12 + (gMonth + 1 <= 2 ? 0 : isGregorianLeapYear(gYear) ? -1 : -2) + gDay);\n julianDay = Math.floor(julianDay + 0.5);\n let daysSinceHebEpoch = julianDay - 347997;\n let monthsSinceHebEpoch = Math.floor((daysSinceHebEpoch * PARTS_PER_DAY) / PARTS_PER_MONTH);\n let hYear = Math.floor((monthsSinceHebEpoch * 19 + 234) / 235) + 1;\n let firstDayOfThisYear = numberOfFirstDayInYear(hYear);\n let dayOfYear = daysSinceHebEpoch - firstDayOfThisYear;\n while (dayOfYear < 1) {\n hYear--;\n firstDayOfThisYear = numberOfFirstDayInYear(hYear);\n dayOfYear = daysSinceHebEpoch - firstDayOfThisYear;\n }\n let hMonth = 1;\n let hDay = dayOfYear;\n while (hDay > getDaysInHebrewMonth(hMonth, hYear)) {\n hDay -= getDaysInHebrewMonth(hMonth, hYear);\n hMonth++;\n }\n return new NgbDate(hYear, hMonth, hDay);\n}\n/**\n * Returns the equivalent JS date value for a given Hebrew date.\n * `hebrewDate` is an Hebrew date to be converted to Gregorian.\n */\nfunction toGregorian$1(hebrewDate) {\n const hYear = hebrewDate.year;\n const hMonth = hebrewDate.month;\n const hDay = hebrewDate.day;\n let days = numberOfFirstDayInYear(hYear);\n for (let i = 1; i < hMonth; i++) {\n days += getDaysInHebrewMonth(i, hYear);\n }\n days += hDay;\n let diffDays = days - HEBREW_DAY_ON_JAN_1_1970;\n let after = diffDays >= 0;\n if (!after) {\n diffDays = -diffDays;\n }\n let gYear = 1970;\n let gMonth = 1;\n let gDay = 1;\n while (diffDays > 0) {\n if (after) {\n if (diffDays >= (isGregorianLeapYear(gYear) ? 366 : 365)) {\n diffDays -= isGregorianLeapYear(gYear) ? 366 : 365;\n gYear++;\n }\n else if (diffDays >= getDaysInGregorianMonth(gMonth, gYear)) {\n diffDays -= getDaysInGregorianMonth(gMonth, gYear);\n gMonth++;\n }\n else {\n gDay += diffDays;\n diffDays = 0;\n }\n }\n else {\n if (diffDays >= (isGregorianLeapYear(gYear - 1) ? 366 : 365)) {\n diffDays -= isGregorianLeapYear(gYear - 1) ? 366 : 365;\n gYear--;\n }\n else {\n if (gMonth > 1) {\n gMonth--;\n }\n else {\n gMonth = 12;\n gYear--;\n }\n if (diffDays >= getDaysInGregorianMonth(gMonth, gYear)) {\n diffDays -= getDaysInGregorianMonth(gMonth, gYear);\n }\n else {\n gDay = getDaysInGregorianMonth(gMonth, gYear) - diffDays + 1;\n diffDays = 0;\n }\n }\n }\n }\n return new Date(gYear, gMonth - 1, gDay);\n}\nfunction hebrewNumerals(numerals) {\n if (!numerals) {\n return '';\n }\n const hArray0_9 = ['', '\\u05d0', '\\u05d1', '\\u05d2', '\\u05d3', '\\u05d4', '\\u05d5', '\\u05d6', '\\u05d7', '\\u05d8'];\n const hArray10_19 = [\n '\\u05d9',\n '\\u05d9\\u05d0',\n '\\u05d9\\u05d1',\n '\\u05d9\\u05d2',\n '\\u05d9\\u05d3',\n '\\u05d8\\u05d5',\n '\\u05d8\\u05d6',\n '\\u05d9\\u05d6',\n '\\u05d9\\u05d7',\n '\\u05d9\\u05d8',\n ];\n const hArray20_90 = ['', '', '\\u05db', '\\u05dc', '\\u05de', '\\u05e0', '\\u05e1', '\\u05e2', '\\u05e4', '\\u05e6'];\n const hArray100_900 = [\n '',\n '\\u05e7',\n '\\u05e8',\n '\\u05e9',\n '\\u05ea',\n '\\u05ea\\u05e7',\n '\\u05ea\\u05e8',\n '\\u05ea\\u05e9',\n '\\u05ea\\u05ea',\n '\\u05ea\\u05ea\\u05e7',\n ];\n const hArray1000_9000 = [\n '',\n '\\u05d0',\n '\\u05d1',\n '\\u05d1\\u05d0',\n '\\u05d1\\u05d1',\n '\\u05d4',\n '\\u05d4\\u05d0',\n '\\u05d4\\u05d1',\n '\\u05d4\\u05d1\\u05d0',\n '\\u05d4\\u05d1\\u05d1',\n ];\n const geresh = '\\u05f3', gershaim = '\\u05f4';\n let mem = 0;\n let result = [];\n let step = 0;\n while (numerals > 0) {\n let m = numerals % 10;\n if (step === 0) {\n mem = m;\n }\n else if (step === 1) {\n if (m !== 1) {\n result.unshift(hArray20_90[m], hArray0_9[mem]);\n }\n else {\n result.unshift(hArray10_19[mem]);\n }\n }\n else if (step === 2) {\n result.unshift(hArray100_900[m]);\n }\n else {\n if (m !== 5) {\n result.unshift(hArray1000_9000[m], geresh, ' ');\n }\n break;\n }\n numerals = Math.floor(numerals / 10);\n if (step === 0 && numerals === 0) {\n result.unshift(hArray0_9[m]);\n }\n step++;\n }\n result = result.join('').split('');\n if (result.length === 1) {\n result.push(geresh);\n }\n else if (result.length > 1) {\n result.splice(result.length - 1, 0, gershaim);\n }\n return result.join('');\n}\n\n/**\n * @since 3.2.0\n */\nclass NgbCalendarHebrew extends NgbCalendar {\n getDaysPerWeek() {\n return 7;\n }\n getMonths(year) {\n if (year && isHebrewLeapYear(year)) {\n return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13];\n }\n else {\n return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\n }\n }\n getWeeksPerMonth() {\n return 6;\n }\n isValid(date) {\n if (date != null) {\n let b = isNumber(date.year) && isNumber(date.month) && isNumber(date.day);\n b = b && date.month > 0 && date.month <= (isHebrewLeapYear(date.year) ? 13 : 12);\n b = b && date.day > 0 && date.day <= getDaysInHebrewMonth(date.month, date.year);\n return b && !isNaN(toGregorian$1(date).getTime());\n }\n return false;\n }\n getNext(date, period = 'd', number = 1) {\n date = new NgbDate(date.year, date.month, date.day);\n switch (period) {\n case 'y':\n date.year += number;\n date.month = 1;\n date.day = 1;\n return date;\n case 'm':\n date = setHebrewMonth(date, number);\n date.day = 1;\n return date;\n case 'd':\n return setHebrewDay(date, number);\n default:\n return date;\n }\n }\n getPrev(date, period = 'd', number = 1) {\n return this.getNext(date, period, -number);\n }\n getWeekday(date) {\n const day = toGregorian$1(date).getDay();\n // in JS Date Sun=0, in ISO 8601 Sun=7\n return day === 0 ? 7 : day;\n }\n getWeekNumber(week, firstDayOfWeek) {\n const date = week[week.length - 1];\n return Math.ceil(getDayNumberInHebrewYear(date) / 7);\n }\n getToday() {\n return fromGregorian$1(new Date());\n }\n /**\n * @since 3.4.0\n */\n toGregorian(date) {\n return fromJSDate(toGregorian$1(date));\n }\n /**\n * @since 3.4.0\n */\n fromGregorian(date) {\n return fromGregorian$1(toJSDate(date));\n }\n}\nNgbCalendarHebrew.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbCalendarHebrew, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\nNgbCalendarHebrew.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbCalendarHebrew });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbCalendarHebrew, decorators: [{\n type: Injectable\n }] });\n\nconst WEEKDAYS = ['שני', 'שלישי', 'רביעי', 'חמישי', 'שישי', 'שבת', 'ראשון'];\nconst MONTHS = ['תשרי', 'חשון', 'כסלו', 'טבת', 'שבט', 'אדר', 'ניסן', 'אייר', 'סיון', 'תמוז', 'אב', 'אלול'];\nconst MONTHS_LEAP = [\n 'תשרי',\n 'חשון',\n 'כסלו',\n 'טבת',\n 'שבט',\n 'אדר א׳',\n 'אדר ב׳',\n 'ניסן',\n 'אייר',\n 'סיון',\n 'תמוז',\n 'אב',\n 'אלול',\n];\n/**\n * @since 3.2.0\n */\nclass NgbDatepickerI18nHebrew extends NgbDatepickerI18n {\n getMonthShortName(month, year) {\n return this.getMonthFullName(month, year);\n }\n getMonthFullName(month, year) {\n return isHebrewLeapYear(year) ? MONTHS_LEAP[month - 1] || '' : MONTHS[month - 1] || '';\n }\n getWeekdayLabel(weekday, width) {\n return WEEKDAYS[weekday - 1] || '';\n }\n getDayAriaLabel(date) {\n return `${hebrewNumerals(date.day)} ${this.getMonthFullName(date.month, date.year)} ${hebrewNumerals(date.year)}`;\n }\n getDayNumerals(date) {\n return hebrewNumerals(date.day);\n }\n getWeekNumerals(weekNumber) {\n return hebrewNumerals(weekNumber);\n }\n getYearNumerals(year) {\n return hebrewNumerals(year);\n }\n}\nNgbDatepickerI18nHebrew.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDatepickerI18nHebrew, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\nNgbDatepickerI18nHebrew.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDatepickerI18nHebrew });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDatepickerI18nHebrew, decorators: [{\n type: Injectable\n }] });\n\n/**\n * Returns the equivalent JS date value for a give input Buddhist date.\n * `date` is an Buddhist date to be converted to Gregorian.\n */\nfunction toGregorian(date) {\n return new Date(date.year - 543, date.month - 1, date.day);\n}\n/**\n * Returns the equivalent Buddhist date value for a give input Gregorian date.\n * `gdate` is a JS Date to be converted to Buddhist.\n * utc to local\n */\nfunction fromGregorian(gdate) {\n return new NgbDate(gdate.getFullYear() + 543, gdate.getMonth() + 1, gdate.getDate());\n}\n\n/**\n * @since 9.1.0\n */\nclass NgbCalendarBuddhist extends NgbCalendarGregorian {\n getToday() {\n return fromGregorian(new Date());\n }\n getNext(date, period = 'd', number = 1) {\n let jsDate = toGregorian(date);\n let checkMonth = true;\n let expectedMonth = jsDate.getMonth();\n switch (period) {\n case 'y':\n jsDate.setFullYear(jsDate.getFullYear() + number);\n break;\n case 'm':\n expectedMonth += number;\n jsDate.setMonth(expectedMonth);\n expectedMonth = expectedMonth % 12;\n if (expectedMonth < 0) {\n expectedMonth = expectedMonth + 12;\n }\n break;\n case 'd':\n jsDate.setDate(jsDate.getDate() + number);\n checkMonth = false;\n break;\n default:\n return date;\n }\n if (checkMonth && jsDate.getMonth() !== expectedMonth) {\n // this means the destination month has less days than the initial month\n // let's go back to the end of the previous month:\n jsDate.setDate(0);\n }\n return fromGregorian(jsDate);\n }\n getPrev(date, period = 'd', number = 1) {\n return this.getNext(date, period, -number);\n }\n getWeekday(date) {\n let jsDate = toGregorian(date);\n let day = jsDate.getDay();\n // in JS Date Sun=0, in ISO 8601 Sun=7\n return day === 0 ? 7 : day;\n }\n getWeekNumber(week, firstDayOfWeek) {\n // in JS Date Sun=0, in ISO 8601 Sun=7\n if (firstDayOfWeek === 7) {\n firstDayOfWeek = 0;\n }\n const thursdayIndex = (4 + 7 - firstDayOfWeek) % 7;\n let date = week[thursdayIndex];\n const jsDate = toGregorian(date);\n jsDate.setDate(jsDate.getDate() + 4 - (jsDate.getDay() || 7)); // Thursday\n const time = jsDate.getTime();\n jsDate.setMonth(0); // Compare with Jan 1\n jsDate.setDate(1);\n return Math.floor(Math.round((time - jsDate.getTime()) / 86400000) / 7) + 1;\n }\n isValid(date) {\n if (!date || !isInteger(date.year) || !isInteger(date.month) || !isInteger(date.day)) {\n return false;\n }\n // year 0 doesn't exist in Gregorian calendar\n if (date.year === 0) {\n return false;\n }\n const jsDate = toGregorian(date);\n return (!isNaN(jsDate.getTime()) &&\n jsDate.getFullYear() === date.year - 543 &&\n jsDate.getMonth() + 1 === date.month &&\n jsDate.getDate() === date.day);\n }\n}\nNgbCalendarBuddhist.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbCalendarBuddhist, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\nNgbCalendarBuddhist.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbCalendarBuddhist });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbCalendarBuddhist, decorators: [{\n type: Injectable\n }] });\n\n/**\n * [`NgbDateAdapter`](#/components/datepicker/api#NgbDateAdapter) implementation that uses\n * native javascript dates as a user date model.\n */\nclass NgbDateNativeAdapter extends NgbDateAdapter {\n /**\n * Converts a native `Date` to a `NgbDateStruct`.\n */\n fromModel(date) {\n return date instanceof Date && !isNaN(date.getTime()) ? this._fromNativeDate(date) : null;\n }\n /**\n * Converts a `NgbDateStruct` to a native `Date`.\n */\n toModel(date) {\n return date && isInteger(date.year) && isInteger(date.month) && isInteger(date.day)\n ? this._toNativeDate(date)\n : null;\n }\n _fromNativeDate(date) {\n return { year: date.getFullYear(), month: date.getMonth() + 1, day: date.getDate() };\n }\n _toNativeDate(date) {\n const jsDate = new Date(date.year, date.month - 1, date.day, 12);\n // avoid 30 -> 1930 conversion\n jsDate.setFullYear(date.year);\n return jsDate;\n }\n}\nNgbDateNativeAdapter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDateNativeAdapter, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\nNgbDateNativeAdapter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDateNativeAdapter });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDateNativeAdapter, decorators: [{\n type: Injectable\n }] });\n\n/**\n * Same as [`NgbDateNativeAdapter`](#/components/datepicker/api#NgbDateNativeAdapter), but with UTC dates.\n *\n * @since 3.2.0\n */\nclass NgbDateNativeUTCAdapter extends NgbDateNativeAdapter {\n _fromNativeDate(date) {\n return { year: date.getUTCFullYear(), month: date.getUTCMonth() + 1, day: date.getUTCDate() };\n }\n _toNativeDate(date) {\n const jsDate = new Date(Date.UTC(date.year, date.month - 1, date.day));\n // avoid 30 -> 1930 conversion\n jsDate.setUTCFullYear(date.year);\n return jsDate;\n }\n}\nNgbDateNativeUTCAdapter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDateNativeUTCAdapter, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\nNgbDateNativeUTCAdapter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDateNativeUTCAdapter });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDateNativeUTCAdapter, decorators: [{\n type: Injectable\n }] });\n\nclass NgbDatepickerModule {\n}\nNgbDatepickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDatepickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNgbDatepickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDatepickerModule, declarations: [NgbDatepicker,\n NgbDatepickerContent,\n NgbDatepickerMonth,\n NgbDatepickerNavigation,\n NgbDatepickerNavigationSelect,\n NgbDatepickerDayView,\n NgbInputDatepicker], imports: [CommonModule, FormsModule], exports: [NgbDatepicker, NgbDatepickerContent, NgbInputDatepicker, NgbDatepickerMonth] });\nNgbDatepickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDatepickerModule, imports: [CommonModule, FormsModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDatepickerModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n NgbDatepicker,\n NgbDatepickerContent,\n NgbDatepickerMonth,\n NgbDatepickerNavigation,\n NgbDatepickerNavigationSelect,\n NgbDatepickerDayView,\n NgbInputDatepicker,\n ],\n exports: [NgbDatepicker, NgbDatepickerContent, NgbInputDatepicker, NgbDatepickerMonth],\n imports: [CommonModule, FormsModule],\n }]\n }] });\n\n/**\n * A configuration service for the [`NgbDropdown`](#/components/dropdown/api#NgbDropdown) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the dropdowns used in the application.\n */\nclass NgbDropdownConfig {\n constructor() {\n this.autoClose = true;\n this.placement = ['bottom-start', 'bottom-end', 'top-start', 'top-end'];\n this.popperOptions = (options) => options;\n }\n}\nNgbDropdownConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDropdownConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNgbDropdownConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDropdownConfig, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDropdownConfig, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\nclass NgbNavbar {\n}\nNgbNavbar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbNavbar, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nNgbNavbar.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgbNavbar, selector: \".navbar\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbNavbar, decorators: [{\n type: Directive,\n args: [{ selector: '.navbar' }]\n }] });\n/**\n * A directive you should put on a dropdown item to enable keyboard navigation.\n * Arrow keys will move focus between items marked with this directive.\n *\n * @since 4.1.0\n */\nclass NgbDropdownItem {\n constructor(elementRef, _renderer) {\n this.elementRef = elementRef;\n this._renderer = _renderer;\n this._disabled = false;\n }\n set disabled(value) {\n this._disabled = value === '' || value === true; // accept an empty attribute as true\n // note: we don't use a host binding for disabled because when used on links, it fails because links don't have a\n // disabled property\n // setting the property using the renderer, OTOH, works fine in both cases.\n this._renderer.setProperty(this.elementRef.nativeElement, 'disabled', this._disabled);\n }\n get disabled() {\n return this._disabled;\n }\n}\nNgbDropdownItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDropdownItem, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });\nNgbDropdownItem.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgbDropdownItem, selector: \"[ngbDropdownItem]\", inputs: { disabled: \"disabled\" }, host: { properties: { \"class.disabled\": \"disabled\", \"tabIndex\": \"disabled ? -1 : 0\" }, classAttribute: \"dropdown-item\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDropdownItem, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngbDropdownItem]',\n host: { class: 'dropdown-item', '[class.disabled]': 'disabled', '[tabIndex]': 'disabled ? -1 : 0' },\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { disabled: [{\n type: Input\n }] } });\n/**\n * A directive that wraps dropdown menu content and dropdown items.\n */\nclass NgbDropdownMenu {\n constructor(dropdown, _elementRef) {\n this.dropdown = dropdown;\n this.placement = 'bottom';\n this.isOpen = false;\n this.nativeElement = _elementRef.nativeElement;\n }\n}\nNgbDropdownMenu.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDropdownMenu, deps: [{ token: forwardRef(() => NgbDropdown) }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgbDropdownMenu.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgbDropdownMenu, selector: \"[ngbDropdownMenu]\", host: { listeners: { \"keydown.ArrowUp\": \"dropdown.onKeyDown($event)\", \"keydown.ArrowDown\": \"dropdown.onKeyDown($event)\", \"keydown.Home\": \"dropdown.onKeyDown($event)\", \"keydown.End\": \"dropdown.onKeyDown($event)\", \"keydown.Enter\": \"dropdown.onKeyDown($event)\", \"keydown.Space\": \"dropdown.onKeyDown($event)\", \"keydown.Tab\": \"dropdown.onKeyDown($event)\", \"keydown.Shift.Tab\": \"dropdown.onKeyDown($event)\" }, properties: { \"class.dropdown-menu\": \"true\", \"class.show\": \"dropdown.isOpen()\" } }, queries: [{ propertyName: \"menuItems\", predicate: NgbDropdownItem }], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDropdownMenu, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngbDropdownMenu]',\n host: {\n '[class.dropdown-menu]': 'true',\n '[class.show]': 'dropdown.isOpen()',\n '(keydown.ArrowUp)': 'dropdown.onKeyDown($event)',\n '(keydown.ArrowDown)': 'dropdown.onKeyDown($event)',\n '(keydown.Home)': 'dropdown.onKeyDown($event)',\n '(keydown.End)': 'dropdown.onKeyDown($event)',\n '(keydown.Enter)': 'dropdown.onKeyDown($event)',\n '(keydown.Space)': 'dropdown.onKeyDown($event)',\n '(keydown.Tab)': 'dropdown.onKeyDown($event)',\n '(keydown.Shift.Tab)': 'dropdown.onKeyDown($event)',\n },\n }]\n }], ctorParameters: function () { return [{ type: NgbDropdown, decorators: [{\n type: Inject,\n args: [forwardRef(() => NgbDropdown)]\n }] }, { type: i0.ElementRef }]; }, propDecorators: { menuItems: [{\n type: ContentChildren,\n args: [NgbDropdownItem]\n }] } });\n/**\n * A directive to mark an element to which dropdown menu will be anchored.\n *\n * This is a simple version of the `NgbDropdownToggle` directive.\n * It plays the same role, but doesn't listen to click events to toggle dropdown menu thus enabling support\n * for events other than click.\n *\n * @since 1.1.0\n */\nclass NgbDropdownAnchor {\n constructor(dropdown, _elementRef) {\n this.dropdown = dropdown;\n this.nativeElement = _elementRef.nativeElement;\n }\n}\nNgbDropdownAnchor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDropdownAnchor, deps: [{ token: forwardRef(() => NgbDropdown) }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgbDropdownAnchor.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgbDropdownAnchor, selector: \"[ngbDropdownAnchor]\", host: { properties: { \"attr.aria-expanded\": \"dropdown.isOpen()\" }, classAttribute: \"dropdown-toggle\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDropdownAnchor, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngbDropdownAnchor]',\n host: { class: 'dropdown-toggle', '[attr.aria-expanded]': 'dropdown.isOpen()' },\n }]\n }], ctorParameters: function () { return [{ type: NgbDropdown, decorators: [{\n type: Inject,\n args: [forwardRef(() => NgbDropdown)]\n }] }, { type: i0.ElementRef }]; } });\n/**\n * A directive to mark an element that will toggle dropdown via the `click` event.\n *\n * You can also use `NgbDropdownAnchor` as an alternative.\n */\nclass NgbDropdownToggle extends NgbDropdownAnchor {\n constructor(dropdown, elementRef) {\n super(dropdown, elementRef);\n }\n}\nNgbDropdownToggle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDropdownToggle, deps: [{ token: forwardRef(() => NgbDropdown) }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgbDropdownToggle.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgbDropdownToggle, selector: \"[ngbDropdownToggle]\", host: { listeners: { \"click\": \"dropdown.toggle()\", \"keydown.ArrowUp\": \"dropdown.onKeyDown($event)\", \"keydown.ArrowDown\": \"dropdown.onKeyDown($event)\", \"keydown.Home\": \"dropdown.onKeyDown($event)\", \"keydown.End\": \"dropdown.onKeyDown($event)\", \"keydown.Tab\": \"dropdown.onKeyDown($event)\", \"keydown.Shift.Tab\": \"dropdown.onKeyDown($event)\" }, properties: { \"attr.aria-expanded\": \"dropdown.isOpen()\" }, classAttribute: \"dropdown-toggle\" }, providers: [{ provide: NgbDropdownAnchor, useExisting: forwardRef(() => NgbDropdownToggle) }], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDropdownToggle, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngbDropdownToggle]',\n host: {\n class: 'dropdown-toggle',\n '[attr.aria-expanded]': 'dropdown.isOpen()',\n '(click)': 'dropdown.toggle()',\n '(keydown.ArrowUp)': 'dropdown.onKeyDown($event)',\n '(keydown.ArrowDown)': 'dropdown.onKeyDown($event)',\n '(keydown.Home)': 'dropdown.onKeyDown($event)',\n '(keydown.End)': 'dropdown.onKeyDown($event)',\n '(keydown.Tab)': 'dropdown.onKeyDown($event)',\n '(keydown.Shift.Tab)': 'dropdown.onKeyDown($event)',\n },\n providers: [{ provide: NgbDropdownAnchor, useExisting: forwardRef(() => NgbDropdownToggle) }],\n }]\n }], ctorParameters: function () { return [{ type: NgbDropdown, decorators: [{\n type: Inject,\n args: [forwardRef(() => NgbDropdown)]\n }] }, { type: i0.ElementRef }]; } });\n/**\n * A directive that provides contextual overlays for displaying lists of links and more.\n */\nclass NgbDropdown {\n constructor(_changeDetector, rtl, config, _document, _ngZone, _elementRef, _renderer, ngbNavbar) {\n this._changeDetector = _changeDetector;\n this._document = _document;\n this._ngZone = _ngZone;\n this._elementRef = _elementRef;\n this._renderer = _renderer;\n this._destroyCloseHandlers$ = new Subject();\n this._bodyContainer = null;\n /**\n * Defines whether or not the dropdown menu is opened initially.\n */\n this._open = false;\n /**\n * An event fired when the dropdown is opened or closed.\n *\n * The event payload is a `boolean`:\n * * `true` - the dropdown was opened\n * * `false` - the dropdown was closed\n */\n this.openChange = new EventEmitter();\n this.placement = config.placement;\n this.popperOptions = config.popperOptions;\n this.container = config.container;\n this.autoClose = config.autoClose;\n this._positioning = ngbPositioning(rtl);\n this.display = ngbNavbar ? 'static' : 'dynamic';\n }\n ngAfterContentInit() {\n this._ngZone.onStable.pipe(take(1)).subscribe(() => {\n this._applyPlacementClasses();\n if (this._open) {\n this._setCloseHandlers();\n }\n });\n }\n ngOnChanges(changes) {\n if (changes.container && this._open) {\n this._applyContainer(this.container);\n }\n if (changes.placement && !changes.placement.firstChange) {\n this._positioning.setOptions({\n hostElement: this._anchor.nativeElement,\n targetElement: this._bodyContainer || this._menu.nativeElement,\n placement: this.placement,\n appendToBody: this.container === 'body',\n });\n this._applyPlacementClasses();\n }\n if (changes.dropdownClass) {\n const { currentValue, previousValue } = changes.dropdownClass;\n this._applyCustomDropdownClass(currentValue, previousValue);\n }\n if (changes.autoClose && this._open) {\n this.autoClose = changes.autoClose.currentValue;\n this._setCloseHandlers();\n }\n }\n /**\n * Checks if the dropdown menu is open.\n */\n isOpen() {\n return this._open;\n }\n /**\n * Opens the dropdown menu.\n */\n open() {\n if (!this._open) {\n this._open = true;\n this._applyContainer(this.container);\n this.openChange.emit(true);\n this._setCloseHandlers();\n if (this._anchor) {\n this._anchor.nativeElement.focus();\n if (this.display === 'dynamic') {\n this._ngZone.runOutsideAngular(() => {\n this._positioning.createPopper({\n hostElement: this._anchor.nativeElement,\n targetElement: this._bodyContainer || this._menu.nativeElement,\n placement: this.placement,\n appendToBody: this.container === 'body',\n updatePopperOptions: (options) => this.popperOptions(addPopperOffset([0, 2])(options)),\n });\n this._applyPlacementClasses();\n this._zoneSubscription = this._ngZone.onStable.subscribe(() => this._positionMenu());\n });\n }\n }\n }\n }\n _setCloseHandlers() {\n this._destroyCloseHandlers$.next(); // destroy any existing close handlers\n ngbAutoClose(this._ngZone, this._document, this.autoClose, (source) => {\n this.close();\n if (source === 0 /* SOURCE.ESCAPE */) {\n this._anchor.nativeElement.focus();\n }\n }, this._destroyCloseHandlers$, this._menu ? [this._menu.nativeElement] : [], this._anchor ? [this._anchor.nativeElement] : [], '.dropdown-item,.dropdown-divider');\n }\n /**\n * Closes the dropdown menu.\n */\n close() {\n if (this._open) {\n this._open = false;\n this._resetContainer();\n this._positioning.destroy();\n this._zoneSubscription?.unsubscribe();\n this._destroyCloseHandlers$.next();\n this.openChange.emit(false);\n this._changeDetector.markForCheck();\n }\n }\n /**\n * Toggles the dropdown menu.\n */\n toggle() {\n if (this.isOpen()) {\n this.close();\n }\n else {\n this.open();\n }\n }\n ngOnDestroy() {\n this.close();\n }\n onKeyDown(event) {\n /* eslint-disable-next-line deprecation/deprecation */\n const key = event.which;\n const itemElements = this._getMenuElements();\n let position = -1;\n let itemElement = null;\n const isEventFromToggle = this._isEventFromToggle(event);\n if (!isEventFromToggle && itemElements.length) {\n itemElements.forEach((item, index) => {\n if (item.contains(event.target)) {\n itemElement = item;\n }\n if (item === this._document.activeElement) {\n position = index;\n }\n });\n }\n // closing on Enter / Space\n if (key === Key.Space || key === Key.Enter) {\n if (itemElement && (this.autoClose === true || this.autoClose === 'inside')) {\n // Item is either a button or a link, so click will be triggered by the browser on Enter or Space.\n // So we have to register a one-time click handler that will fire after any user defined click handlers\n // to close the dropdown\n fromEvent(itemElement, 'click')\n .pipe(take(1))\n .subscribe(() => this.close());\n }\n return;\n }\n if (key === Key.Tab) {\n if (event.target && this.isOpen() && this.autoClose) {\n if (this._anchor.nativeElement === event.target) {\n if (this.container === 'body' && !event.shiftKey) {\n /* This case is special: user is using [Tab] from the anchor/toggle.\n User expects the next focusable element in the dropdown menu to get focus.\n But the menu is not a sibling to anchor/toggle, it is at the end of the body.\n Trick is to synchronously focus the menu element, and let the [keydown.Tab] go\n so that browser will focus the proper element (first one focusable in the menu) */\n this._renderer.setAttribute(this._menu.nativeElement, 'tabindex', '0');\n this._menu.nativeElement.focus();\n this._renderer.removeAttribute(this._menu.nativeElement, 'tabindex');\n }\n else if (event.shiftKey) {\n this.close();\n }\n return;\n }\n else if (this.container === 'body') {\n const focusableElements = this._menu.nativeElement.querySelectorAll(FOCUSABLE_ELEMENTS_SELECTOR);\n if (event.shiftKey && event.target === focusableElements[0]) {\n this._anchor.nativeElement.focus();\n event.preventDefault();\n }\n else if (!event.shiftKey && event.target === focusableElements[focusableElements.length - 1]) {\n this._anchor.nativeElement.focus();\n this.close();\n }\n }\n else {\n fromEvent(event.target, 'focusout')\n .pipe(take(1))\n .subscribe(({ relatedTarget }) => {\n if (!this._elementRef.nativeElement.contains(relatedTarget)) {\n this.close();\n }\n });\n }\n }\n return;\n }\n // opening / navigating\n if (isEventFromToggle || itemElement) {\n this.open();\n if (itemElements.length) {\n switch (key) {\n case Key.ArrowDown:\n position = Math.min(position + 1, itemElements.length - 1);\n break;\n case Key.ArrowUp:\n if (this._isDropup() && position === -1) {\n position = itemElements.length - 1;\n break;\n }\n position = Math.max(position - 1, 0);\n break;\n case Key.Home:\n position = 0;\n break;\n case Key.End:\n position = itemElements.length - 1;\n break;\n }\n itemElements[position].focus();\n }\n event.preventDefault();\n }\n }\n _isDropup() {\n return this._elementRef.nativeElement.classList.contains('dropup');\n }\n _isEventFromToggle(event) {\n return this._anchor.nativeElement.contains(event.target);\n }\n _getMenuElements() {\n const menu = this._menu;\n if (menu == null) {\n return [];\n }\n return menu.menuItems.filter((item) => !item.disabled).map((item) => item.elementRef.nativeElement);\n }\n _positionMenu() {\n const menu = this._menu;\n if (this.isOpen() && menu) {\n if (this.display === 'dynamic') {\n this._positioning.update();\n this._applyPlacementClasses();\n }\n else {\n this._applyPlacementClasses(this._getFirstPlacement(this.placement));\n }\n }\n }\n _getFirstPlacement(placement) {\n return Array.isArray(placement) ? placement[0] : placement.split(' ')[0];\n }\n _resetContainer() {\n const renderer = this._renderer;\n if (this._menu) {\n const dropdownElement = this._elementRef.nativeElement;\n const dropdownMenuElement = this._menu.nativeElement;\n renderer.appendChild(dropdownElement, dropdownMenuElement);\n }\n if (this._bodyContainer) {\n renderer.removeChild(this._document.body, this._bodyContainer);\n this._bodyContainer = null;\n }\n }\n _applyContainer(container = null) {\n this._resetContainer();\n if (container === 'body') {\n const renderer = this._renderer;\n const dropdownMenuElement = this._menu.nativeElement;\n const bodyContainer = (this._bodyContainer = this._bodyContainer || renderer.createElement('div'));\n // Override some styles to have the positioning working\n renderer.setStyle(bodyContainer, 'position', 'absolute');\n renderer.setStyle(dropdownMenuElement, 'position', 'static');\n renderer.setStyle(bodyContainer, 'z-index', '1055');\n renderer.appendChild(bodyContainer, dropdownMenuElement);\n renderer.appendChild(this._document.body, bodyContainer);\n }\n this._applyCustomDropdownClass(this.dropdownClass);\n }\n _applyCustomDropdownClass(newClass, oldClass) {\n const targetElement = this.container === 'body' ? this._bodyContainer : this._elementRef.nativeElement;\n if (targetElement) {\n if (oldClass) {\n this._renderer.removeClass(targetElement, oldClass);\n }\n if (newClass) {\n this._renderer.addClass(targetElement, newClass);\n }\n }\n }\n _applyPlacementClasses(placement) {\n const menu = this._menu;\n if (menu) {\n if (!placement) {\n placement = this._getFirstPlacement(this.placement);\n }\n const renderer = this._renderer;\n const dropdownElement = this._elementRef.nativeElement;\n // remove the current placement classes\n renderer.removeClass(dropdownElement, 'dropup');\n renderer.removeClass(dropdownElement, 'dropdown');\n const { nativeElement } = menu;\n if (this.display === 'static') {\n menu.placement = null;\n renderer.setAttribute(nativeElement, 'data-bs-popper', 'static');\n }\n else {\n menu.placement = placement;\n renderer.removeAttribute(nativeElement, 'data-bs-popper');\n }\n /*\n * apply the new placement\n * in case of top use up-arrow or down-arrow otherwise\n */\n const dropdownClass = placement.search('^top') !== -1 ? 'dropup' : 'dropdown';\n renderer.addClass(dropdownElement, dropdownClass);\n const bodyContainer = this._bodyContainer;\n if (bodyContainer) {\n renderer.removeClass(bodyContainer, 'dropup');\n renderer.removeClass(bodyContainer, 'dropdown');\n renderer.addClass(bodyContainer, dropdownClass);\n }\n }\n }\n}\nNgbDropdown.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDropdown, deps: [{ token: i0.ChangeDetectorRef }, { token: NgbRTL }, { token: NgbDropdownConfig }, { token: DOCUMENT }, { token: i0.NgZone }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: NgbNavbar, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nNgbDropdown.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgbDropdown, selector: \"[ngbDropdown]\", inputs: { autoClose: \"autoClose\", dropdownClass: \"dropdownClass\", _open: [\"open\", \"_open\"], placement: \"placement\", popperOptions: \"popperOptions\", container: \"container\", display: \"display\" }, outputs: { openChange: \"openChange\" }, host: { properties: { \"class.show\": \"isOpen()\" } }, queries: [{ propertyName: \"_menu\", first: true, predicate: NgbDropdownMenu, descendants: true }, { propertyName: \"_anchor\", first: true, predicate: NgbDropdownAnchor, descendants: true }], exportAs: [\"ngbDropdown\"], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDropdown, decorators: [{\n type: Directive,\n args: [{ selector: '[ngbDropdown]', exportAs: 'ngbDropdown', host: { '[class.show]': 'isOpen()' } }]\n }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: NgbRTL }, { type: NgbDropdownConfig }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i0.NgZone }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: NgbNavbar, decorators: [{\n type: Optional\n }] }]; }, propDecorators: { _menu: [{\n type: ContentChild,\n args: [NgbDropdownMenu, { static: false }]\n }], _anchor: [{\n type: ContentChild,\n args: [NgbDropdownAnchor, { static: false }]\n }], autoClose: [{\n type: Input\n }], dropdownClass: [{\n type: Input\n }], _open: [{\n type: Input,\n args: ['open']\n }], placement: [{\n type: Input\n }], popperOptions: [{\n type: Input\n }], container: [{\n type: Input\n }], display: [{\n type: Input\n }], openChange: [{\n type: Output\n }] } });\n\nconst NGB_DROPDOWN_DIRECTIVES = [\n NgbDropdown,\n NgbDropdownAnchor,\n NgbDropdownToggle,\n NgbDropdownMenu,\n NgbDropdownItem,\n NgbNavbar,\n];\nclass NgbDropdownModule {\n}\nNgbDropdownModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDropdownModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNgbDropdownModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDropdownModule, declarations: [NgbDropdown,\n NgbDropdownAnchor,\n NgbDropdownToggle,\n NgbDropdownMenu,\n NgbDropdownItem,\n NgbNavbar], exports: [NgbDropdown,\n NgbDropdownAnchor,\n NgbDropdownToggle,\n NgbDropdownMenu,\n NgbDropdownItem,\n NgbNavbar] });\nNgbDropdownModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDropdownModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbDropdownModule, decorators: [{\n type: NgModule,\n args: [{ declarations: NGB_DROPDOWN_DIRECTIVES, exports: NGB_DROPDOWN_DIRECTIVES }]\n }] });\n\nclass ContentRef {\n constructor(nodes, viewRef, componentRef) {\n this.nodes = nodes;\n this.viewRef = viewRef;\n this.componentRef = componentRef;\n }\n}\nclass PopupService {\n constructor(_componentType, _injector, _viewContainerRef, _renderer, _ngZone, _applicationRef) {\n this._componentType = _componentType;\n this._injector = _injector;\n this._viewContainerRef = _viewContainerRef;\n this._renderer = _renderer;\n this._ngZone = _ngZone;\n this._applicationRef = _applicationRef;\n this._windowRef = null;\n this._contentRef = null;\n }\n open(content, templateContext, animation = false) {\n if (!this._windowRef) {\n this._contentRef = this._getContentRef(content, templateContext);\n this._windowRef = this._viewContainerRef.createComponent(this._componentType, {\n injector: this._injector,\n projectableNodes: this._contentRef.nodes,\n });\n }\n const { nativeElement } = this._windowRef.location;\n const transition$ = this._ngZone.onStable.pipe(take(1), mergeMap(() => ngbRunTransition(this._ngZone, nativeElement, ({ classList }) => classList.add('show'), {\n animation,\n runningTransition: 'continue',\n })));\n return { windowRef: this._windowRef, transition$ };\n }\n close(animation = false) {\n if (!this._windowRef) {\n return of(undefined);\n }\n return ngbRunTransition(this._ngZone, this._windowRef.location.nativeElement, ({ classList }) => classList.remove('show'), { animation, runningTransition: 'stop' }).pipe(tap(() => {\n if (this._windowRef) {\n // this is required because of the container='body' option\n this._viewContainerRef.remove(this._viewContainerRef.indexOf(this._windowRef.hostView));\n this._windowRef = null;\n }\n if (this._contentRef?.viewRef) {\n this._applicationRef.detachView(this._contentRef.viewRef);\n this._contentRef.viewRef.destroy();\n this._contentRef = null;\n }\n }));\n }\n _getContentRef(content, templateContext) {\n if (!content) {\n return new ContentRef([]);\n }\n else if (content instanceof TemplateRef) {\n const viewRef = content.createEmbeddedView(templateContext);\n this._applicationRef.attachView(viewRef);\n return new ContentRef([viewRef.rootNodes], viewRef);\n }\n else {\n return new ContentRef([[this._renderer.createText(`${content}`)]]);\n }\n }\n}\n\nclass NgbModalBackdrop {\n constructor(_el, _zone) {\n this._el = _el;\n this._zone = _zone;\n }\n ngOnInit() {\n this._zone.onStable\n .asObservable()\n .pipe(take(1))\n .subscribe(() => {\n ngbRunTransition(this._zone, this._el.nativeElement, (element, animation) => {\n if (animation) {\n reflow(element);\n }\n element.classList.add('show');\n }, { animation: this.animation, runningTransition: 'continue' });\n });\n }\n hide() {\n return ngbRunTransition(this._zone, this._el.nativeElement, ({ classList }) => classList.remove('show'), {\n animation: this.animation,\n runningTransition: 'stop',\n });\n }\n}\nNgbModalBackdrop.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbModalBackdrop, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nNgbModalBackdrop.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgbModalBackdrop, selector: \"ngb-modal-backdrop\", inputs: { animation: \"animation\", backdropClass: \"backdropClass\" }, host: { properties: { \"class\": \"\\\"modal-backdrop\\\" + (backdropClass ? \\\" \\\" + backdropClass : \\\"\\\")\", \"class.show\": \"!animation\", \"class.fade\": \"animation\" }, styleAttribute: \"z-index: 1055\" }, ngImport: i0, template: '', isInline: true, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbModalBackdrop, decorators: [{\n type: Component,\n args: [{\n selector: 'ngb-modal-backdrop',\n encapsulation: ViewEncapsulation.None,\n template: '',\n host: {\n '[class]': '\"modal-backdrop\" + (backdropClass ? \" \" + backdropClass : \"\")',\n '[class.show]': '!animation',\n '[class.fade]': 'animation',\n style: 'z-index: 1055',\n },\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { animation: [{\n type: Input\n }], backdropClass: [{\n type: Input\n }] } });\n\n/**\n * A reference to the currently opened (active) modal.\n *\n * Instances of this class can be injected into your component passed as modal content.\n * So you can `.close()` or `.dismiss()` the modal window from your component.\n */\nclass NgbActiveModal {\n /**\n * Closes the modal with an optional `result` value.\n *\n * The `NgbModalRef.result` promise will be resolved with the provided value.\n */\n close(result) { }\n /**\n * Dismisses the modal with an optional `reason` value.\n *\n * The `NgbModalRef.result` promise will be rejected with the provided value.\n */\n dismiss(reason) { }\n}\n/**\n * A reference to the newly opened modal returned by the `NgbModal.open()` method.\n */\nclass NgbModalRef {\n constructor(_windowCmptRef, _contentRef, _backdropCmptRef, _beforeDismiss) {\n this._windowCmptRef = _windowCmptRef;\n this._contentRef = _contentRef;\n this._backdropCmptRef = _backdropCmptRef;\n this._beforeDismiss = _beforeDismiss;\n this._closed = new Subject();\n this._dismissed = new Subject();\n this._hidden = new Subject();\n _windowCmptRef.instance.dismissEvent.subscribe((reason) => {\n this.dismiss(reason);\n });\n this.result = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n this.result.then(null, () => { });\n }\n /**\n * The instance of a component used for the modal content.\n *\n * When a `TemplateRef` is used as the content or when the modal is closed, will return `undefined`.\n */\n get componentInstance() {\n if (this._contentRef && this._contentRef.componentRef) {\n return this._contentRef.componentRef.instance;\n }\n }\n /**\n * The observable that emits when the modal is closed via the `.close()` method.\n *\n * It will emit the result passed to the `.close()` method.\n *\n * @since 8.0.0\n */\n get closed() {\n return this._closed.asObservable().pipe(takeUntil(this._hidden));\n }\n /**\n * The observable that emits when the modal is dismissed via the `.dismiss()` method.\n *\n * It will emit the reason passed to the `.dismissed()` method by the user, or one of the internal\n * reasons like backdrop click or ESC key press.\n *\n * @since 8.0.0\n */\n get dismissed() {\n return this._dismissed.asObservable().pipe(takeUntil(this._hidden));\n }\n /**\n * The observable that emits when both modal window and backdrop are closed and animations were finished.\n * At this point modal and backdrop elements will be removed from the DOM tree.\n *\n * This observable will be completed after emitting.\n *\n * @since 8.0.0\n */\n get hidden() {\n return this._hidden.asObservable();\n }\n /**\n * The observable that emits when modal is fully visible and animation was finished.\n * Modal DOM element is always available synchronously after calling 'modal.open()' service.\n *\n * This observable will be completed after emitting.\n * It will not emit, if modal is closed before open animation is finished.\n *\n * @since 8.0.0\n */\n get shown() {\n return this._windowCmptRef.instance.shown.asObservable();\n }\n /**\n * Closes the modal with an optional `result` value.\n *\n * The `NgbMobalRef.result` promise will be resolved with the provided value.\n */\n close(result) {\n if (this._windowCmptRef) {\n this._closed.next(result);\n this._resolve(result);\n this._removeModalElements();\n }\n }\n _dismiss(reason) {\n this._dismissed.next(reason);\n this._reject(reason);\n this._removeModalElements();\n }\n /**\n * Dismisses the modal with an optional `reason` value.\n *\n * The `NgbModalRef.result` promise will be rejected with the provided value.\n */\n dismiss(reason) {\n if (this._windowCmptRef) {\n if (!this._beforeDismiss) {\n this._dismiss(reason);\n }\n else {\n const dismiss = this._beforeDismiss();\n if (isPromise(dismiss)) {\n dismiss.then((result) => {\n if (result !== false) {\n this._dismiss(reason);\n }\n }, () => { });\n }\n else if (dismiss !== false) {\n this._dismiss(reason);\n }\n }\n }\n }\n _removeModalElements() {\n const windowTransition$ = this._windowCmptRef.instance.hide();\n const backdropTransition$ = this._backdropCmptRef ? this._backdropCmptRef.instance.hide() : of(undefined);\n // hiding window\n windowTransition$.subscribe(() => {\n const { nativeElement } = this._windowCmptRef.location;\n nativeElement.parentNode.removeChild(nativeElement);\n this._windowCmptRef.destroy();\n if (this._contentRef && this._contentRef.viewRef) {\n this._contentRef.viewRef.destroy();\n }\n this._windowCmptRef = null;\n this._contentRef = null;\n });\n // hiding backdrop\n backdropTransition$.subscribe(() => {\n if (this._backdropCmptRef) {\n const { nativeElement } = this._backdropCmptRef.location;\n nativeElement.parentNode.removeChild(nativeElement);\n this._backdropCmptRef.destroy();\n this._backdropCmptRef = null;\n }\n });\n // all done\n zip(windowTransition$, backdropTransition$).subscribe(() => {\n this._hidden.next();\n this._hidden.complete();\n });\n }\n}\n\nvar ModalDismissReasons;\n(function (ModalDismissReasons) {\n ModalDismissReasons[ModalDismissReasons[\"BACKDROP_CLICK\"] = 0] = \"BACKDROP_CLICK\";\n ModalDismissReasons[ModalDismissReasons[\"ESC\"] = 1] = \"ESC\";\n})(ModalDismissReasons || (ModalDismissReasons = {}));\n\nclass NgbModalWindow {\n constructor(_document, _elRef, _zone) {\n this._document = _document;\n this._elRef = _elRef;\n this._zone = _zone;\n this._closed$ = new Subject();\n this._elWithFocus = null; // element that is focused prior to modal opening\n this.backdrop = true;\n this.keyboard = true;\n this.dismissEvent = new EventEmitter();\n this.shown = new Subject();\n this.hidden = new Subject();\n }\n get fullscreenClass() {\n return this.fullscreen === true\n ? ' modal-fullscreen'\n : isString(this.fullscreen)\n ? ` modal-fullscreen-${this.fullscreen}-down`\n : '';\n }\n dismiss(reason) {\n this.dismissEvent.emit(reason);\n }\n ngOnInit() {\n this._elWithFocus = this._document.activeElement;\n this._zone.onStable\n .asObservable()\n .pipe(take(1))\n .subscribe(() => {\n this._show();\n });\n }\n ngOnDestroy() {\n this._disableEventHandling();\n }\n hide() {\n const { nativeElement } = this._elRef;\n const context = { animation: this.animation, runningTransition: 'stop' };\n const windowTransition$ = ngbRunTransition(this._zone, nativeElement, () => nativeElement.classList.remove('show'), context);\n const dialogTransition$ = ngbRunTransition(this._zone, this._dialogEl.nativeElement, () => { }, context);\n const transitions$ = zip(windowTransition$, dialogTransition$);\n transitions$.subscribe(() => {\n this.hidden.next();\n this.hidden.complete();\n });\n this._disableEventHandling();\n this._restoreFocus();\n return transitions$;\n }\n _show() {\n const context = { animation: this.animation, runningTransition: 'continue' };\n const windowTransition$ = ngbRunTransition(this._zone, this._elRef.nativeElement, (element, animation) => {\n if (animation) {\n reflow(element);\n }\n element.classList.add('show');\n }, context);\n const dialogTransition$ = ngbRunTransition(this._zone, this._dialogEl.nativeElement, () => { }, context);\n zip(windowTransition$, dialogTransition$).subscribe(() => {\n this.shown.next();\n this.shown.complete();\n });\n this._enableEventHandling();\n this._setFocus();\n }\n _enableEventHandling() {\n const { nativeElement } = this._elRef;\n this._zone.runOutsideAngular(() => {\n fromEvent(nativeElement, 'keydown')\n .pipe(takeUntil(this._closed$), \n /* eslint-disable-next-line deprecation/deprecation */\n filter((e) => e.which === Key.Escape))\n .subscribe((event) => {\n if (this.keyboard) {\n requestAnimationFrame(() => {\n if (!event.defaultPrevented) {\n this._zone.run(() => this.dismiss(ModalDismissReasons.ESC));\n }\n });\n }\n else if (this.backdrop === 'static') {\n this._bumpBackdrop();\n }\n });\n // We're listening to 'mousedown' and 'mouseup' to prevent modal from closing when pressing the mouse\n // inside the modal dialog and releasing it outside\n let preventClose = false;\n fromEvent(this._dialogEl.nativeElement, 'mousedown')\n .pipe(takeUntil(this._closed$), tap(() => (preventClose = false)), switchMap(() => fromEvent(nativeElement, 'mouseup').pipe(takeUntil(this._closed$), take(1))), filter(({ target }) => nativeElement === target))\n .subscribe(() => {\n preventClose = true;\n });\n // We're listening to 'click' to dismiss modal on modal window click, except when:\n // 1. clicking on modal dialog itself\n // 2. closing was prevented by mousedown/up handlers\n // 3. clicking on scrollbar when the viewport is too small and modal doesn't fit (click is not triggered at all)\n fromEvent(nativeElement, 'click')\n .pipe(takeUntil(this._closed$))\n .subscribe(({ target }) => {\n if (nativeElement === target) {\n if (this.backdrop === 'static') {\n this._bumpBackdrop();\n }\n else if (this.backdrop === true && !preventClose) {\n this._zone.run(() => this.dismiss(ModalDismissReasons.BACKDROP_CLICK));\n }\n }\n preventClose = false;\n });\n });\n }\n _disableEventHandling() {\n this._closed$.next();\n }\n _setFocus() {\n const { nativeElement } = this._elRef;\n if (!nativeElement.contains(document.activeElement)) {\n const autoFocusable = nativeElement.querySelector(`[ngbAutofocus]`);\n const firstFocusable = getFocusableBoundaryElements(nativeElement)[0];\n const elementToFocus = autoFocusable || firstFocusable || nativeElement;\n elementToFocus.focus();\n }\n }\n _restoreFocus() {\n const body = this._document.body;\n const elWithFocus = this._elWithFocus;\n let elementToFocus;\n if (elWithFocus && elWithFocus['focus'] && body.contains(elWithFocus)) {\n elementToFocus = elWithFocus;\n }\n else {\n elementToFocus = body;\n }\n this._zone.runOutsideAngular(() => {\n setTimeout(() => elementToFocus.focus());\n this._elWithFocus = null;\n });\n }\n _bumpBackdrop() {\n if (this.backdrop === 'static') {\n ngbRunTransition(this._zone, this._elRef.nativeElement, ({ classList }) => {\n classList.add('modal-static');\n return () => classList.remove('modal-static');\n }, { animation: this.animation, runningTransition: 'continue' });\n }\n }\n}\nNgbModalWindow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbModalWindow, deps: [{ token: DOCUMENT }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nNgbModalWindow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgbModalWindow, selector: \"ngb-modal-window\", inputs: { animation: \"animation\", ariaLabelledBy: \"ariaLabelledBy\", ariaDescribedBy: \"ariaDescribedBy\", backdrop: \"backdrop\", centered: \"centered\", fullscreen: \"fullscreen\", keyboard: \"keyboard\", scrollable: \"scrollable\", size: \"size\", windowClass: \"windowClass\", modalDialogClass: \"modalDialogClass\" }, outputs: { dismissEvent: \"dismiss\" }, host: { attributes: { \"role\": \"dialog\", \"tabindex\": \"-1\" }, properties: { \"class\": \"\\\"modal d-block\\\" + (windowClass ? \\\" \\\" + windowClass : \\\"\\\")\", \"class.fade\": \"animation\", \"attr.aria-modal\": \"true\", \"attr.aria-labelledby\": \"ariaLabelledBy\", \"attr.aria-describedby\": \"ariaDescribedBy\" } }, viewQueries: [{ propertyName: \"_dialogEl\", first: true, predicate: [\"dialog\"], descendants: true, static: true }], ngImport: i0, template: `\n\t\t\n\t\t\t
    \n\t\t\n\t`, isInline: true, styles: [\"ngb-modal-window .component-host-scrollable{display:flex;flex-direction:column;overflow:hidden}\\n\"], encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbModalWindow, decorators: [{\n type: Component,\n args: [{ selector: 'ngb-modal-window', host: {\n '[class]': '\"modal d-block\" + (windowClass ? \" \" + windowClass : \"\")',\n '[class.fade]': 'animation',\n role: 'dialog',\n tabindex: '-1',\n '[attr.aria-modal]': 'true',\n '[attr.aria-labelledby]': 'ariaLabelledBy',\n '[attr.aria-describedby]': 'ariaDescribedBy',\n }, template: `\n\t\t\n\t\t\t
    \n\t\t\n\t`, encapsulation: ViewEncapsulation.None, styles: [\"ngb-modal-window .component-host-scrollable{display:flex;flex-direction:column;overflow:hidden}\\n\"] }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { _dialogEl: [{\n type: ViewChild,\n args: ['dialog', { static: true }]\n }], animation: [{\n type: Input\n }], ariaLabelledBy: [{\n type: Input\n }], ariaDescribedBy: [{\n type: Input\n }], backdrop: [{\n type: Input\n }], centered: [{\n type: Input\n }], fullscreen: [{\n type: Input\n }], keyboard: [{\n type: Input\n }], scrollable: [{\n type: Input\n }], size: [{\n type: Input\n }], windowClass: [{\n type: Input\n }], modalDialogClass: [{\n type: Input\n }], dismissEvent: [{\n type: Output,\n args: ['dismiss']\n }] } });\n\n/**\n * Utility to handle the scrollbar.\n *\n * It allows to hide the scrollbar and compensate the lack of a vertical scrollbar\n * by adding an equivalent padding on the right of the body, and to revert this change.\n */\nclass ScrollBar {\n constructor(_document) {\n this._document = _document;\n }\n /**\n * To be called to hide a potential vertical scrollbar:\n * - if a scrollbar is there and has a width greater than 0, adds some compensation\n * padding to the body to keep the same layout as when the scrollbar is there\n * - adds overflow: hidden\n *\n * @return a callback used to revert the change\n */\n hide() {\n const scrollbarWidth = Math.abs(window.innerWidth - this._document.documentElement.clientWidth);\n const body = this._document.body;\n const bodyStyle = body.style;\n const { overflow, paddingRight } = bodyStyle;\n if (scrollbarWidth > 0) {\n const actualPadding = parseFloat(window.getComputedStyle(body).paddingRight);\n bodyStyle.paddingRight = `${actualPadding + scrollbarWidth}px`;\n }\n bodyStyle.overflow = 'hidden';\n return () => {\n if (scrollbarWidth > 0) {\n bodyStyle.paddingRight = paddingRight;\n }\n bodyStyle.overflow = overflow;\n };\n }\n}\nScrollBar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: ScrollBar, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nScrollBar.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: ScrollBar, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: ScrollBar, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; } });\n\nclass NgbModalStack {\n constructor(_applicationRef, _injector, _document, _scrollBar, _rendererFactory, _ngZone) {\n this._applicationRef = _applicationRef;\n this._injector = _injector;\n this._document = _document;\n this._scrollBar = _scrollBar;\n this._rendererFactory = _rendererFactory;\n this._ngZone = _ngZone;\n this._activeWindowCmptHasChanged = new Subject();\n this._ariaHiddenValues = new Map();\n this._scrollBarRestoreFn = null;\n this._backdropAttributes = ['animation', 'backdropClass'];\n this._modalRefs = [];\n this._windowAttributes = [\n 'animation',\n 'ariaLabelledBy',\n 'ariaDescribedBy',\n 'backdrop',\n 'centered',\n 'fullscreen',\n 'keyboard',\n 'scrollable',\n 'size',\n 'windowClass',\n 'modalDialogClass',\n ];\n this._windowCmpts = [];\n this._activeInstances = new EventEmitter();\n // Trap focus on active WindowCmpt\n this._activeWindowCmptHasChanged.subscribe(() => {\n if (this._windowCmpts.length) {\n const activeWindowCmpt = this._windowCmpts[this._windowCmpts.length - 1];\n ngbFocusTrap(this._ngZone, activeWindowCmpt.location.nativeElement, this._activeWindowCmptHasChanged);\n this._revertAriaHidden();\n this._setAriaHidden(activeWindowCmpt.location.nativeElement);\n }\n });\n }\n _restoreScrollBar() {\n const scrollBarRestoreFn = this._scrollBarRestoreFn;\n if (scrollBarRestoreFn) {\n this._scrollBarRestoreFn = null;\n scrollBarRestoreFn();\n }\n }\n _hideScrollBar() {\n if (!this._scrollBarRestoreFn) {\n this._scrollBarRestoreFn = this._scrollBar.hide();\n }\n }\n open(contentInjector, content, options) {\n const containerEl = options.container instanceof HTMLElement\n ? options.container\n : isDefined(options.container)\n ? this._document.querySelector(options.container)\n : this._document.body;\n const renderer = this._rendererFactory.createRenderer(null, null);\n if (!containerEl) {\n throw new Error(`The specified modal container \"${options.container || 'body'}\" was not found in the DOM.`);\n }\n this._hideScrollBar();\n const activeModal = new NgbActiveModal();\n const contentRef = this._getContentRef(options.injector || contentInjector, content, activeModal, options);\n let backdropCmptRef = options.backdrop !== false ? this._attachBackdrop(containerEl) : undefined;\n let windowCmptRef = this._attachWindowComponent(containerEl, contentRef.nodes);\n let ngbModalRef = new NgbModalRef(windowCmptRef, contentRef, backdropCmptRef, options.beforeDismiss);\n this._registerModalRef(ngbModalRef);\n this._registerWindowCmpt(windowCmptRef);\n // We have to cleanup DOM after the last modal when BOTH 'hidden' was emitted and 'result' promise was resolved:\n // - with animations OFF, 'hidden' emits synchronously, then 'result' is resolved asynchronously\n // - with animations ON, 'result' is resolved asynchronously, then 'hidden' emits asynchronously\n ngbModalRef.hidden.pipe(take(1)).subscribe(() => Promise.resolve(true).then(() => {\n if (!this._modalRefs.length) {\n renderer.removeClass(this._document.body, 'modal-open');\n this._restoreScrollBar();\n this._revertAriaHidden();\n }\n }));\n activeModal.close = (result) => {\n ngbModalRef.close(result);\n };\n activeModal.dismiss = (reason) => {\n ngbModalRef.dismiss(reason);\n };\n this._applyWindowOptions(windowCmptRef.instance, options);\n if (this._modalRefs.length === 1) {\n renderer.addClass(this._document.body, 'modal-open');\n }\n if (backdropCmptRef && backdropCmptRef.instance) {\n this._applyBackdropOptions(backdropCmptRef.instance, options);\n backdropCmptRef.changeDetectorRef.detectChanges();\n }\n windowCmptRef.changeDetectorRef.detectChanges();\n return ngbModalRef;\n }\n get activeInstances() {\n return this._activeInstances;\n }\n dismissAll(reason) {\n this._modalRefs.forEach((ngbModalRef) => ngbModalRef.dismiss(reason));\n }\n hasOpenModals() {\n return this._modalRefs.length > 0;\n }\n _attachBackdrop(containerEl) {\n let backdropCmptRef = createComponent(NgbModalBackdrop, {\n environmentInjector: this._applicationRef.injector,\n elementInjector: this._injector,\n });\n this._applicationRef.attachView(backdropCmptRef.hostView);\n containerEl.appendChild(backdropCmptRef.location.nativeElement);\n return backdropCmptRef;\n }\n _attachWindowComponent(containerEl, projectableNodes) {\n let windowCmptRef = createComponent(NgbModalWindow, {\n environmentInjector: this._applicationRef.injector,\n elementInjector: this._injector,\n projectableNodes,\n });\n this._applicationRef.attachView(windowCmptRef.hostView);\n containerEl.appendChild(windowCmptRef.location.nativeElement);\n return windowCmptRef;\n }\n _applyWindowOptions(windowInstance, options) {\n this._windowAttributes.forEach((optionName) => {\n if (isDefined(options[optionName])) {\n windowInstance[optionName] = options[optionName];\n }\n });\n }\n _applyBackdropOptions(backdropInstance, options) {\n this._backdropAttributes.forEach((optionName) => {\n if (isDefined(options[optionName])) {\n backdropInstance[optionName] = options[optionName];\n }\n });\n }\n _getContentRef(contentInjector, content, activeModal, options) {\n if (!content) {\n return new ContentRef([]);\n }\n else if (content instanceof TemplateRef) {\n return this._createFromTemplateRef(content, activeModal);\n }\n else if (isString(content)) {\n return this._createFromString(content);\n }\n else {\n return this._createFromComponent(contentInjector, content, activeModal, options);\n }\n }\n _createFromTemplateRef(templateRef, activeModal) {\n const context = {\n $implicit: activeModal,\n close(result) {\n activeModal.close(result);\n },\n dismiss(reason) {\n activeModal.dismiss(reason);\n },\n };\n const viewRef = templateRef.createEmbeddedView(context);\n this._applicationRef.attachView(viewRef);\n return new ContentRef([viewRef.rootNodes], viewRef);\n }\n _createFromString(content) {\n const component = this._document.createTextNode(`${content}`);\n return new ContentRef([[component]]);\n }\n _createFromComponent(contentInjector, componentType, context, options) {\n const elementInjector = Injector.create({\n providers: [{ provide: NgbActiveModal, useValue: context }],\n parent: contentInjector,\n });\n const componentRef = createComponent(componentType, {\n environmentInjector: this._applicationRef.injector,\n elementInjector,\n });\n const componentNativeEl = componentRef.location.nativeElement;\n if (options.scrollable) {\n componentNativeEl.classList.add('component-host-scrollable');\n }\n this._applicationRef.attachView(componentRef.hostView);\n // FIXME: we should here get rid of the component nativeElement\n // and use `[Array.from(componentNativeEl.childNodes)]` instead and remove the above CSS class.\n return new ContentRef([[componentNativeEl]], componentRef.hostView, componentRef);\n }\n _setAriaHidden(element) {\n const parent = element.parentElement;\n if (parent && element !== this._document.body) {\n Array.from(parent.children).forEach((sibling) => {\n if (sibling !== element && sibling.nodeName !== 'SCRIPT') {\n this._ariaHiddenValues.set(sibling, sibling.getAttribute('aria-hidden'));\n sibling.setAttribute('aria-hidden', 'true');\n }\n });\n this._setAriaHidden(parent);\n }\n }\n _revertAriaHidden() {\n this._ariaHiddenValues.forEach((value, element) => {\n if (value) {\n element.setAttribute('aria-hidden', value);\n }\n else {\n element.removeAttribute('aria-hidden');\n }\n });\n this._ariaHiddenValues.clear();\n }\n _registerModalRef(ngbModalRef) {\n const unregisterModalRef = () => {\n const index = this._modalRefs.indexOf(ngbModalRef);\n if (index > -1) {\n this._modalRefs.splice(index, 1);\n this._activeInstances.emit(this._modalRefs);\n }\n };\n this._modalRefs.push(ngbModalRef);\n this._activeInstances.emit(this._modalRefs);\n ngbModalRef.result.then(unregisterModalRef, unregisterModalRef);\n }\n _registerWindowCmpt(ngbWindowCmpt) {\n this._windowCmpts.push(ngbWindowCmpt);\n this._activeWindowCmptHasChanged.next();\n ngbWindowCmpt.onDestroy(() => {\n const index = this._windowCmpts.indexOf(ngbWindowCmpt);\n if (index > -1) {\n this._windowCmpts.splice(index, 1);\n this._activeWindowCmptHasChanged.next();\n }\n });\n }\n}\nNgbModalStack.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbModalStack, deps: [{ token: i0.ApplicationRef }, { token: i0.Injector }, { token: DOCUMENT }, { token: ScrollBar }, { token: i0.RendererFactory2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nNgbModalStack.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbModalStack, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbModalStack, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i0.ApplicationRef }, { type: i0.Injector }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: ScrollBar }, { type: i0.RendererFactory2 }, { type: i0.NgZone }]; } });\n\n/**\n * A configuration service for the [`NgbModal`](#/components/modal/api#NgbModal) service.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all modals used in the application.\n *\n * @since 3.1.0\n */\nclass NgbModalConfig {\n constructor(_ngbConfig) {\n this._ngbConfig = _ngbConfig;\n this.backdrop = true;\n this.fullscreen = false;\n this.keyboard = true;\n }\n get animation() {\n return this._animation === undefined ? this._ngbConfig.animation : this._animation;\n }\n set animation(animation) {\n this._animation = animation;\n }\n}\nNgbModalConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbModalConfig, deps: [{ token: NgbConfig }], target: i0.ɵɵFactoryTarget.Injectable });\nNgbModalConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbModalConfig, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbModalConfig, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: NgbConfig }]; } });\n\n/**\n * A service for opening modal windows.\n *\n * Creating a modal is straightforward: create a component or a template and pass it as an argument to\n * the `.open()` method.\n */\nclass NgbModal {\n constructor(_injector, _modalStack, _config) {\n this._injector = _injector;\n this._modalStack = _modalStack;\n this._config = _config;\n }\n /**\n * Opens a new modal window with the specified content and supplied options.\n *\n * Content can be provided as a `TemplateRef` or a component type. If you pass a component type as content,\n * then instances of those components can be injected with an instance of the `NgbActiveModal` class. You can then\n * use `NgbActiveModal` methods to close / dismiss modals from \"inside\" of your component.\n *\n * Also see the [`NgbModalOptions`](#/components/modal/api#NgbModalOptions) for the list of supported options.\n */\n open(content, options = {}) {\n const combinedOptions = { ...this._config, animation: this._config.animation, ...options };\n return this._modalStack.open(this._injector, content, combinedOptions);\n }\n /**\n * Returns an observable that holds the active modal instances.\n */\n get activeInstances() {\n return this._modalStack.activeInstances;\n }\n /**\n * Dismisses all currently displayed modal windows with the supplied reason.\n *\n * @since 3.1.0\n */\n dismissAll(reason) {\n this._modalStack.dismissAll(reason);\n }\n /**\n * Indicates if there are currently any open modal windows in the application.\n *\n * @since 3.3.0\n */\n hasOpenModals() {\n return this._modalStack.hasOpenModals();\n }\n}\nNgbModal.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbModal, deps: [{ token: i0.Injector }, { token: NgbModalStack }, { token: NgbModalConfig }], target: i0.ɵɵFactoryTarget.Injectable });\nNgbModal.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbModal, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbModal, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i0.Injector }, { type: NgbModalStack }, { type: NgbModalConfig }]; } });\n\nclass NgbModalModule {\n}\nNgbModalModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbModalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNgbModalModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbModalModule, declarations: [NgbModalBackdrop, NgbModalWindow] });\nNgbModalModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbModalModule, providers: [NgbModal] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbModalModule, decorators: [{\n type: NgModule,\n args: [{ declarations: [NgbModalBackdrop, NgbModalWindow], providers: [NgbModal] }]\n }] });\n\n/**\n * A configuration service for the [`NgbNav`](#/components/nav/api#NgbNav) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the navs used in the application.\n *\n * @since 5.2.0\n */\nclass NgbNavConfig {\n constructor(_ngbConfig) {\n this._ngbConfig = _ngbConfig;\n this.destroyOnHide = true;\n this.orientation = 'horizontal';\n this.roles = 'tablist';\n this.keyboard = false;\n }\n get animation() {\n return this._animation === undefined ? this._ngbConfig.animation : this._animation;\n }\n set animation(animation) {\n this._animation = animation;\n }\n}\nNgbNavConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbNavConfig, deps: [{ token: NgbConfig }], target: i0.ɵɵFactoryTarget.Injectable });\nNgbNavConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbNavConfig, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbNavConfig, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: NgbConfig }]; } });\n\nconst isValidNavId = (id) => isDefined(id) && id !== '';\nlet navCounter = 0;\n/**\n * This directive must be used to wrap content to be displayed in the nav.\n *\n * @since 5.2.0\n */\nclass NgbNavContent {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNgbNavContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbNavContent, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgbNavContent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgbNavContent, selector: \"ng-template[ngbNavContent]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbNavContent, decorators: [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbNavContent]' }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n/**\n * The directive used to group nav link and related nav content. As well as set nav identifier and some options.\n *\n * @since 5.2.0\n */\nclass NgbNavItem {\n constructor(_nav, elementRef) {\n this._nav = _nav;\n this.elementRef = elementRef;\n /**\n * If `true`, the current nav item is disabled and can't be toggled by user.\n *\n * Nevertheless disabled nav can be selected programmatically via the `.select()` method and the `[activeId]` binding.\n */\n this.disabled = false;\n /**\n * An event emitted when the fade in transition is finished on the related nav content\n *\n * @since 8.0.0\n */\n this.shown = new EventEmitter();\n /**\n * An event emitted when the fade out transition is finished on the related nav content\n *\n * @since 8.0.0\n */\n this.hidden = new EventEmitter();\n }\n ngAfterContentChecked() {\n // We are using @ContentChildren instead of @ContentChild as in the Angular version being used\n // only @ContentChildren allows us to specify the {descendants: false} option.\n // Without {descendants: false} we are hitting bugs described in:\n // https://github.com/ng-bootstrap/ng-bootstrap/issues/2240\n this.contentTpl = this.contentTpls.first;\n }\n ngOnInit() {\n if (!isDefined(this.domId)) {\n this.domId = `ngb-nav-${navCounter++}`;\n }\n }\n get active() {\n return this._nav.activeId === this.id;\n }\n get id() {\n return isValidNavId(this._id) ? this._id : this.domId;\n }\n get panelDomId() {\n return `${this.domId}-panel`;\n }\n isPanelInDom() {\n return (isDefined(this.destroyOnHide) ? !this.destroyOnHide : !this._nav.destroyOnHide) || this.active;\n }\n}\nNgbNavItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbNavItem, deps: [{ token: forwardRef(() => NgbNav) }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgbNavItem.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgbNavItem, selector: \"[ngbNavItem]\", inputs: { destroyOnHide: \"destroyOnHide\", disabled: \"disabled\", domId: \"domId\", _id: [\"ngbNavItem\", \"_id\"] }, outputs: { shown: \"shown\", hidden: \"hidden\" }, host: { properties: { \"class.nav-item\": \"true\" } }, queries: [{ propertyName: \"contentTpls\", predicate: NgbNavContent }], exportAs: [\"ngbNavItem\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbNavItem, decorators: [{\n type: Directive,\n args: [{ selector: '[ngbNavItem]', exportAs: 'ngbNavItem', host: { '[class.nav-item]': 'true' } }]\n }], ctorParameters: function () { return [{ type: NgbNav, decorators: [{\n type: Inject,\n args: [forwardRef(() => NgbNav)]\n }] }, { type: i0.ElementRef }]; }, propDecorators: { destroyOnHide: [{\n type: Input\n }], disabled: [{\n type: Input\n }], domId: [{\n type: Input\n }], _id: [{\n type: Input,\n args: ['ngbNavItem']\n }], shown: [{\n type: Output\n }], hidden: [{\n type: Output\n }], contentTpls: [{\n type: ContentChildren,\n args: [NgbNavContent, { descendants: false }]\n }] } });\n/**\n * A nav directive that helps with implementing tabbed navigation components.\n *\n * @since 5.2.0\n */\nclass NgbNav {\n constructor(role, config, _cd, _document) {\n this.role = role;\n this._cd = _cd;\n this._document = _document;\n /**\n * The event emitted after the active nav changes\n * The payload of the event is the newly active nav id\n *\n * If you want to prevent nav change, you should use `(navChange)` event\n */\n this.activeIdChange = new EventEmitter();\n /**\n * An event emitted when the fade in transition is finished for one of the items.\n *\n * Payload of the event is the nav id that was just shown.\n *\n * @since 8.0.0\n */\n this.shown = new EventEmitter();\n /**\n * An event emitted when the fade out transition is finished for one of the items.\n *\n * Payload of the event is the nav id that was just hidden.\n *\n * @since 8.0.0\n */\n this.hidden = new EventEmitter();\n this.destroy$ = new Subject();\n this.navItemChange$ = new Subject();\n /**\n * The nav change event emitted right before the nav change happens on user click.\n *\n * This event won't be emitted if nav is changed programmatically via `[activeId]` or `.select()`.\n *\n * See [`NgbNavChangeEvent`](#/components/nav/api#NgbNavChangeEvent) for payload details.\n */\n this.navChange = new EventEmitter();\n this.animation = config.animation;\n this.destroyOnHide = config.destroyOnHide;\n this.orientation = config.orientation;\n this.roles = config.roles;\n this.keyboard = config.keyboard;\n }\n click(item) {\n if (!item.disabled) {\n this._updateActiveId(item.id);\n }\n }\n onKeyDown(event) {\n if (this.roles !== 'tablist' || !this.keyboard) {\n return;\n }\n /* eslint-disable-next-line deprecation/deprecation */\n const key = event.which;\n const enabledLinks = this.links.filter((link) => !link.navItem.disabled);\n const { length } = enabledLinks;\n let position = -1;\n enabledLinks.forEach((link, index) => {\n if (link.elRef.nativeElement === this._document.activeElement) {\n position = index;\n }\n });\n if (length) {\n switch (key) {\n case Key.ArrowLeft:\n if (this.orientation === 'vertical') {\n return;\n }\n position = (position - 1 + length) % length;\n break;\n case Key.ArrowRight:\n if (this.orientation === 'vertical') {\n return;\n }\n position = (position + 1) % length;\n break;\n case Key.ArrowDown:\n if (this.orientation === 'horizontal') {\n return;\n }\n position = (position + 1) % length;\n break;\n case Key.ArrowUp:\n if (this.orientation === 'horizontal') {\n return;\n }\n position = (position - 1 + length) % length;\n break;\n case Key.Home:\n position = 0;\n break;\n case Key.End:\n position = length - 1;\n break;\n }\n if (this.keyboard === 'changeWithArrows') {\n this.select(enabledLinks[position].navItem.id);\n }\n enabledLinks[position].elRef.nativeElement.focus();\n event.preventDefault();\n }\n }\n /**\n * Selects the nav with the given id and shows its associated pane.\n * Any other nav that was previously selected becomes unselected and its associated pane is hidden.\n */\n select(id) {\n this._updateActiveId(id, false);\n }\n ngAfterContentInit() {\n if (!isDefined(this.activeId)) {\n const nextId = this.items.first ? this.items.first.id : null;\n if (isValidNavId(nextId)) {\n this._updateActiveId(nextId, false);\n this._cd.detectChanges();\n }\n }\n this.items.changes.pipe(takeUntil(this.destroy$)).subscribe(() => this._notifyItemChanged(this.activeId));\n }\n ngOnChanges({ activeId }) {\n if (activeId && !activeId.firstChange) {\n this._notifyItemChanged(activeId.currentValue);\n }\n }\n ngOnDestroy() {\n this.destroy$.next();\n }\n _updateActiveId(nextId, emitNavChange = true) {\n if (this.activeId !== nextId) {\n let defaultPrevented = false;\n if (emitNavChange) {\n this.navChange.emit({\n activeId: this.activeId,\n nextId,\n preventDefault: () => {\n defaultPrevented = true;\n },\n });\n }\n if (!defaultPrevented) {\n this.activeId = nextId;\n this.activeIdChange.emit(nextId);\n this._notifyItemChanged(nextId);\n }\n }\n }\n _notifyItemChanged(nextItemId) {\n this.navItemChange$.next(this._getItemById(nextItemId));\n }\n _getItemById(itemId) {\n return (this.items && this.items.find((item) => item.id === itemId)) || null;\n }\n}\nNgbNav.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbNav, deps: [{ token: 'role', attribute: true }, { token: NgbNavConfig }, { token: i0.ChangeDetectorRef }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive });\nNgbNav.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgbNav, selector: \"[ngbNav]\", inputs: { activeId: \"activeId\", animation: \"animation\", destroyOnHide: \"destroyOnHide\", orientation: \"orientation\", roles: \"roles\", keyboard: \"keyboard\" }, outputs: { activeIdChange: \"activeIdChange\", shown: \"shown\", hidden: \"hidden\", navChange: \"navChange\" }, host: { listeners: { \"keydown.arrowLeft\": \"onKeyDown($event)\", \"keydown.arrowRight\": \"onKeyDown($event)\", \"keydown.arrowDown\": \"onKeyDown($event)\", \"keydown.arrowUp\": \"onKeyDown($event)\", \"keydown.Home\": \"onKeyDown($event)\", \"keydown.End\": \"onKeyDown($event)\" }, properties: { \"class.nav\": \"true\", \"class.flex-column\": \"orientation === 'vertical'\", \"attr.aria-orientation\": \"orientation === 'vertical' && roles === 'tablist' ? 'vertical' : undefined\", \"attr.role\": \"role ? role : roles ? 'tablist' : undefined\" } }, queries: [{ propertyName: \"items\", predicate: NgbNavItem }, { propertyName: \"links\", predicate: i0.forwardRef(function () { return NgbNavLink; }), descendants: true }], exportAs: [\"ngbNav\"], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbNav, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngbNav]',\n exportAs: 'ngbNav',\n host: {\n '[class.nav]': 'true',\n '[class.flex-column]': `orientation === 'vertical'`,\n '[attr.aria-orientation]': `orientation === 'vertical' && roles === 'tablist' ? 'vertical' : undefined`,\n '[attr.role]': `role ? role : roles ? 'tablist' : undefined`,\n '(keydown.arrowLeft)': 'onKeyDown($event)',\n '(keydown.arrowRight)': 'onKeyDown($event)',\n '(keydown.arrowDown)': 'onKeyDown($event)',\n '(keydown.arrowUp)': 'onKeyDown($event)',\n '(keydown.Home)': 'onKeyDown($event)',\n '(keydown.End)': 'onKeyDown($event)',\n },\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Attribute,\n args: ['role']\n }] }, { type: NgbNavConfig }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, propDecorators: { activeId: [{\n type: Input\n }], activeIdChange: [{\n type: Output\n }], animation: [{\n type: Input\n }], destroyOnHide: [{\n type: Input\n }], orientation: [{\n type: Input\n }], roles: [{\n type: Input\n }], keyboard: [{\n type: Input\n }], shown: [{\n type: Output\n }], hidden: [{\n type: Output\n }], items: [{\n type: ContentChildren,\n args: [NgbNavItem]\n }], links: [{\n type: ContentChildren,\n args: [forwardRef(() => NgbNavLink), { descendants: true }]\n }], navChange: [{\n type: Output\n }] } });\n/**\n * A directive to put on the nav link.\n *\n * @since 5.2.0\n */\nclass NgbNavLink {\n constructor(role, navItem, nav, elRef) {\n this.role = role;\n this.navItem = navItem;\n this.nav = nav;\n this.elRef = elRef;\n }\n hasNavItemClass() {\n // with alternative markup we have to add `.nav-item` class, because `ngbNavItem` is on the ng-container\n return this.navItem.elementRef.nativeElement.nodeType === Node.COMMENT_NODE;\n }\n}\nNgbNavLink.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbNavLink, deps: [{ token: 'role', attribute: true }, { token: NgbNavItem }, { token: NgbNav }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgbNavLink.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgbNavLink, selector: \"a[ngbNavLink]\", host: { attributes: { \"href\": \"\" }, listeners: { \"click\": \"nav.click(navItem); $event.preventDefault()\" }, properties: { \"id\": \"navItem.domId\", \"class.nav-link\": \"true\", \"class.nav-item\": \"hasNavItemClass()\", \"attr.role\": \"role ? role : nav.roles ? 'tab' : undefined\", \"class.active\": \"navItem.active\", \"class.disabled\": \"navItem.disabled\", \"attr.tabindex\": \"navItem.disabled ? -1 : undefined\", \"attr.aria-controls\": \"navItem.isPanelInDom() ? navItem.panelDomId : null\", \"attr.aria-selected\": \"navItem.active\", \"attr.aria-disabled\": \"navItem.disabled\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbNavLink, decorators: [{\n type: Directive,\n args: [{\n selector: 'a[ngbNavLink]',\n host: {\n '[id]': 'navItem.domId',\n '[class.nav-link]': 'true',\n '[class.nav-item]': 'hasNavItemClass()',\n '[attr.role]': `role ? role : nav.roles ? 'tab' : undefined`,\n href: '',\n '[class.active]': 'navItem.active',\n '[class.disabled]': 'navItem.disabled',\n '[attr.tabindex]': 'navItem.disabled ? -1 : undefined',\n '[attr.aria-controls]': 'navItem.isPanelInDom() ? navItem.panelDomId : null',\n '[attr.aria-selected]': 'navItem.active',\n '[attr.aria-disabled]': 'navItem.disabled',\n '(click)': 'nav.click(navItem); $event.preventDefault()',\n },\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Attribute,\n args: ['role']\n }] }, { type: NgbNavItem }, { type: NgbNav }, { type: i0.ElementRef }]; } });\n\nconst ngbNavFadeOutTransition = ({ classList }) => {\n classList.remove('show');\n return () => classList.remove('active');\n};\nconst ngbNavFadeInTransition = (element, animation) => {\n if (animation) {\n reflow(element);\n }\n element.classList.add('show');\n};\n\nclass NgbNavPane {\n constructor(elRef) {\n this.elRef = elRef;\n }\n}\nNgbNavPane.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbNavPane, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgbNavPane.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgbNavPane, selector: \"[ngbNavPane]\", inputs: { item: \"item\", nav: \"nav\", role: \"role\" }, host: { properties: { \"id\": \"item.panelDomId\", \"class.fade\": \"nav.animation\", \"attr.role\": \"role ? role : nav.roles ? \\\"tabpanel\\\" : undefined\", \"attr.aria-labelledby\": \"item.domId\" }, classAttribute: \"tab-pane\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbNavPane, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngbNavPane]',\n host: {\n '[id]': 'item.panelDomId',\n class: 'tab-pane',\n '[class.fade]': 'nav.animation',\n '[attr.role]': 'role ? role : nav.roles ? \"tabpanel\" : undefined',\n '[attr.aria-labelledby]': 'item.domId',\n },\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { item: [{\n type: Input\n }], nav: [{\n type: Input\n }], role: [{\n type: Input\n }] } });\n/**\n * The outlet where currently active nav content will be displayed.\n *\n * @since 5.2.0\n */\nclass NgbNavOutlet {\n constructor(_cd, _ngZone) {\n this._cd = _cd;\n this._ngZone = _ngZone;\n this._activePane = null;\n }\n isPanelTransitioning(item) {\n return this._activePane?.item === item;\n }\n ngAfterViewInit() {\n // initial display\n this._updateActivePane();\n // this will be emitted for all 3 types of nav changes: .select(), [activeId] or (click)\n this.nav.navItemChange$\n .pipe(takeUntil(this.nav.destroy$), startWith(this._activePane?.item || null), distinctUntilChanged(), skip(1))\n .subscribe((nextItem) => {\n const options = { animation: this.nav.animation, runningTransition: 'stop' };\n // next panel we're switching to will only appear in DOM after the change detection is done\n // and `this._panes` will be updated\n this._cd.detectChanges();\n // fading out\n if (this._activePane) {\n ngbRunTransition(this._ngZone, this._activePane.elRef.nativeElement, ngbNavFadeOutTransition, options).subscribe(() => {\n const activeItem = this._activePane?.item;\n this._activePane = this._getPaneForItem(nextItem);\n // mark for check when transition finishes as outlet or parent containers might be OnPush\n // without this the panes that have \"faded out\" will stay in DOM\n this._cd.markForCheck();\n // fading in\n if (this._activePane) {\n // we have to add the '.active' class before running the transition,\n // because it should be in place before `ngbRunTransition` does `reflow()`\n this._activePane.elRef.nativeElement.classList.add('active');\n ngbRunTransition(this._ngZone, this._activePane.elRef.nativeElement, ngbNavFadeInTransition, options).subscribe(() => {\n if (nextItem) {\n nextItem.shown.emit();\n this.nav.shown.emit(nextItem.id);\n }\n });\n }\n if (activeItem) {\n activeItem.hidden.emit();\n this.nav.hidden.emit(activeItem.id);\n }\n });\n }\n else {\n this._updateActivePane();\n }\n });\n }\n _updateActivePane() {\n this._activePane = this._getActivePane();\n this._activePane?.elRef.nativeElement.classList.add('show');\n this._activePane?.elRef.nativeElement.classList.add('active');\n }\n _getPaneForItem(item) {\n return (this._panes && this._panes.find((pane) => pane.item === item)) || null;\n }\n _getActivePane() {\n return (this._panes && this._panes.find((pane) => pane.item.active)) || null;\n }\n}\nNgbNavOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbNavOutlet, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nNgbNavOutlet.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgbNavOutlet, selector: \"[ngbNavOutlet]\", inputs: { paneRole: \"paneRole\", nav: [\"ngbNavOutlet\", \"nav\"] }, host: { properties: { \"class.tab-content\": \"true\" } }, viewQueries: [{ propertyName: \"_panes\", predicate: NgbNavPane, descendants: true }], ngImport: i0, template: `\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
    \n\t`, isInline: true, 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.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: NgbNavPane, selector: \"[ngbNavPane]\", inputs: [\"item\", \"nav\", \"role\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbNavOutlet, decorators: [{\n type: Component,\n args: [{\n selector: '[ngbNavOutlet]',\n host: { '[class.tab-content]': 'true' },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
    \n\t`,\n }]\n }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.NgZone }]; }, propDecorators: { _panes: [{\n type: ViewChildren,\n args: [NgbNavPane]\n }], paneRole: [{\n type: Input\n }], nav: [{\n type: Input,\n args: ['ngbNavOutlet']\n }] } });\n\nconst NGB_NAV_DIRECTIVES = [NgbNavContent, NgbNav, NgbNavItem, NgbNavLink, NgbNavOutlet, NgbNavPane];\nclass NgbNavModule {\n}\nNgbNavModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbNavModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNgbNavModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbNavModule, declarations: [NgbNavContent, NgbNav, NgbNavItem, NgbNavLink, NgbNavOutlet, NgbNavPane], imports: [CommonModule], exports: [NgbNavContent, NgbNav, NgbNavItem, NgbNavLink, NgbNavOutlet, NgbNavPane] });\nNgbNavModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbNavModule, imports: [CommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbNavModule, decorators: [{\n type: NgModule,\n args: [{ declarations: NGB_NAV_DIRECTIVES, exports: NGB_NAV_DIRECTIVES, imports: [CommonModule] }]\n }] });\n\n/**\n * A configuration service for the [`NgbPagination`](#/components/pagination/api#NgbPagination) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the paginations used in the application.\n */\nclass NgbPaginationConfig {\n constructor() {\n this.disabled = false;\n this.boundaryLinks = false;\n this.directionLinks = true;\n this.ellipses = true;\n this.maxSize = 0;\n this.pageSize = 10;\n this.rotate = false;\n }\n}\nNgbPaginationConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbPaginationConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNgbPaginationConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbPaginationConfig, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbPaginationConfig, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\n/**\n * A directive to match the 'ellipsis' link template\n *\n * @since 4.1.0\n */\nclass NgbPaginationEllipsis {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNgbPaginationEllipsis.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbPaginationEllipsis, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgbPaginationEllipsis.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgbPaginationEllipsis, selector: \"ng-template[ngbPaginationEllipsis]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbPaginationEllipsis, decorators: [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPaginationEllipsis]' }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n/**\n * A directive to match the 'first' link template\n *\n * @since 4.1.0\n */\nclass NgbPaginationFirst {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNgbPaginationFirst.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbPaginationFirst, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgbPaginationFirst.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgbPaginationFirst, selector: \"ng-template[ngbPaginationFirst]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbPaginationFirst, decorators: [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPaginationFirst]' }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n/**\n * A directive to match the 'last' link template\n *\n * @since 4.1.0\n */\nclass NgbPaginationLast {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNgbPaginationLast.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbPaginationLast, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgbPaginationLast.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgbPaginationLast, selector: \"ng-template[ngbPaginationLast]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbPaginationLast, decorators: [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPaginationLast]' }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n/**\n * A directive to match the 'next' link template\n *\n * @since 4.1.0\n */\nclass NgbPaginationNext {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNgbPaginationNext.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbPaginationNext, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgbPaginationNext.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgbPaginationNext, selector: \"ng-template[ngbPaginationNext]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbPaginationNext, decorators: [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPaginationNext]' }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n/**\n * A directive to match the page 'number' link template\n *\n * @since 4.1.0\n */\nclass NgbPaginationNumber {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNgbPaginationNumber.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbPaginationNumber, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgbPaginationNumber.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgbPaginationNumber, selector: \"ng-template[ngbPaginationNumber]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbPaginationNumber, decorators: [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPaginationNumber]' }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n/**\n * A directive to match the 'previous' link template\n *\n * @since 4.1.0\n */\nclass NgbPaginationPrevious {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNgbPaginationPrevious.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbPaginationPrevious, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgbPaginationPrevious.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgbPaginationPrevious, selector: \"ng-template[ngbPaginationPrevious]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbPaginationPrevious, decorators: [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPaginationPrevious]' }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n/**\n * A directive to match the 'pages' whole content\n *\n * @since 9.1.0\n */\nclass NgbPaginationPages {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNgbPaginationPages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbPaginationPages, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgbPaginationPages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgbPaginationPages, selector: \"ng-template[ngbPaginationPages]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbPaginationPages, decorators: [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPaginationPages]' }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n/**\n * A component that displays page numbers and allows to customize them in several ways.\n */\nclass NgbPagination {\n constructor(config) {\n this.pageCount = 0;\n this.pages = [];\n /**\n * The current page.\n *\n * Page numbers start with `1`.\n */\n this.page = 1;\n /**\n * An event fired when the page is changed. Will fire only if collection size is set and all values are valid.\n *\n * Event payload is the number of the newly selected page.\n *\n * Page numbers start with `1`.\n */\n this.pageChange = new EventEmitter(true);\n this.disabled = config.disabled;\n this.boundaryLinks = config.boundaryLinks;\n this.directionLinks = config.directionLinks;\n this.ellipses = config.ellipses;\n this.maxSize = config.maxSize;\n this.pageSize = config.pageSize;\n this.rotate = config.rotate;\n this.size = config.size;\n }\n hasPrevious() {\n return this.page > 1;\n }\n hasNext() {\n return this.page < this.pageCount;\n }\n nextDisabled() {\n return !this.hasNext() || this.disabled;\n }\n previousDisabled() {\n return !this.hasPrevious() || this.disabled;\n }\n selectPage(pageNumber) {\n this._updatePages(pageNumber);\n }\n ngOnChanges(changes) {\n this._updatePages(this.page);\n }\n isEllipsis(pageNumber) {\n return pageNumber === -1;\n }\n /**\n * Appends ellipses and first/last page number to the displayed pages\n */\n _applyEllipses(start, end) {\n if (this.ellipses) {\n if (start > 0) {\n // The first page will always be included. If the displayed range\n // starts after the third page, then add ellipsis. But if the range\n // starts on the third page, then add the second page instead of\n // an ellipsis, because the ellipsis would only hide a single page.\n if (start > 2) {\n this.pages.unshift(-1);\n }\n else if (start === 2) {\n this.pages.unshift(2);\n }\n this.pages.unshift(1);\n }\n if (end < this.pageCount) {\n // The last page will always be included. If the displayed range\n // ends before the third-last page, then add ellipsis. But if the range\n // ends on third-last page, then add the second-last page instead of\n // an ellipsis, because the ellipsis would only hide a single page.\n if (end < this.pageCount - 2) {\n this.pages.push(-1);\n }\n else if (end === this.pageCount - 2) {\n this.pages.push(this.pageCount - 1);\n }\n this.pages.push(this.pageCount);\n }\n }\n }\n /**\n * Rotates page numbers based on maxSize items visible.\n * Currently selected page stays in the middle:\n *\n * Ex. for selected page = 6:\n * [5,*6*,7] for maxSize = 3\n * [4,5,*6*,7] for maxSize = 4\n */\n _applyRotation() {\n let start = 0;\n let end = this.pageCount;\n let leftOffset = Math.floor(this.maxSize / 2);\n let rightOffset = this.maxSize % 2 === 0 ? leftOffset - 1 : leftOffset;\n if (this.page <= leftOffset) {\n // very beginning, no rotation -> [0..maxSize]\n end = this.maxSize;\n }\n else if (this.pageCount - this.page < leftOffset) {\n // very end, no rotation -> [len-maxSize..len]\n start = this.pageCount - this.maxSize;\n }\n else {\n // rotate\n start = this.page - leftOffset - 1;\n end = this.page + rightOffset;\n }\n return [start, end];\n }\n /**\n * Paginates page numbers based on maxSize items per page.\n */\n _applyPagination() {\n let page = Math.ceil(this.page / this.maxSize) - 1;\n let start = page * this.maxSize;\n let end = start + this.maxSize;\n return [start, end];\n }\n _setPageInRange(newPageNo) {\n const prevPageNo = this.page;\n this.page = getValueInRange(newPageNo, this.pageCount, 1);\n if (this.page !== prevPageNo && isNumber(this.collectionSize)) {\n this.pageChange.emit(this.page);\n }\n }\n _updatePages(newPage) {\n this.pageCount = Math.ceil(this.collectionSize / this.pageSize);\n if (!isNumber(this.pageCount)) {\n this.pageCount = 0;\n }\n // fill-in model needed to render pages\n this.pages.length = 0;\n for (let i = 1; i <= this.pageCount; i++) {\n this.pages.push(i);\n }\n // set page within 1..max range\n this._setPageInRange(newPage);\n // apply maxSize if necessary\n if (this.maxSize > 0 && this.pageCount > this.maxSize) {\n let start = 0;\n let end = this.pageCount;\n // either paginating or rotating page numbers\n if (this.rotate) {\n [start, end] = this._applyRotation();\n }\n else {\n [start, end] = this._applyPagination();\n }\n this.pages = this.pages.slice(start, end);\n // adding ellipses\n this._applyEllipses(start, end);\n }\n }\n}\nNgbPagination.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbPagination, deps: [{ token: NgbPaginationConfig }], target: i0.ɵɵFactoryTarget.Component });\nNgbPagination.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgbPagination, selector: \"ngb-pagination\", inputs: { disabled: \"disabled\", boundaryLinks: \"boundaryLinks\", directionLinks: \"directionLinks\", ellipses: \"ellipses\", rotate: \"rotate\", collectionSize: \"collectionSize\", maxSize: \"maxSize\", page: \"page\", pageSize: \"pageSize\", size: \"size\" }, outputs: { pageChange: \"pageChange\" }, host: { attributes: { \"role\": \"navigation\" } }, queries: [{ propertyName: \"tplEllipsis\", first: true, predicate: NgbPaginationEllipsis, descendants: true }, { propertyName: \"tplFirst\", first: true, predicate: NgbPaginationFirst, descendants: true }, { propertyName: \"tplLast\", first: true, predicate: NgbPaginationLast, descendants: true }, { propertyName: \"tplNext\", first: true, predicate: NgbPaginationNext, descendants: true }, { propertyName: \"tplNumber\", first: true, predicate: NgbPaginationNumber, descendants: true }, { propertyName: \"tplPrevious\", first: true, predicate: NgbPaginationPrevious, descendants: true }, { propertyName: \"tplPages\", first: true, predicate: NgbPaginationPages, descendants: true }], usesOnChanges: true, ngImport: i0, template: `\n\t\t««\n\t\t«\n\t\t»\n\t\t»»\n\t\t...\n\t\t\n\t\t\t{{ page }}\n\t\t\t(current)\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\n\t\t\t\n\t\t
    \n\t\t
      \n\t\t\t
    • \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
    • \n\n\t\t\t
    • \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
    • \n\t\t\t\n\t\t\t\n\t\t\t
    • \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
    • \n\n\t\t\t
    • \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
    • \n\t\t
    \n\t`, isInline: true, 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.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbPagination, decorators: [{\n type: Component,\n args: [{\n selector: 'ngb-pagination',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { role: 'navigation' },\n template: `\n\t\t««\n\t\t«\n\t\t»\n\t\t»»\n\t\t...\n\t\t\n\t\t\t{{ page }}\n\t\t\t(current)\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\n\t\t\t\n\t\t\n\t\t
      \n\t\t\t
    • \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
    • \n\n\t\t\t
    • \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
    • \n\t\t\t\n\t\t\t\n\t\t\t
    • \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
    • \n\n\t\t\t
    • \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
    • \n\t\t
    \n\t`,\n }]\n }], ctorParameters: function () { return [{ type: NgbPaginationConfig }]; }, propDecorators: { tplEllipsis: [{\n type: ContentChild,\n args: [NgbPaginationEllipsis, { static: false }]\n }], tplFirst: [{\n type: ContentChild,\n args: [NgbPaginationFirst, { static: false }]\n }], tplLast: [{\n type: ContentChild,\n args: [NgbPaginationLast, { static: false }]\n }], tplNext: [{\n type: ContentChild,\n args: [NgbPaginationNext, { static: false }]\n }], tplNumber: [{\n type: ContentChild,\n args: [NgbPaginationNumber, { static: false }]\n }], tplPrevious: [{\n type: ContentChild,\n args: [NgbPaginationPrevious, { static: false }]\n }], tplPages: [{\n type: ContentChild,\n args: [NgbPaginationPages, { static: false }]\n }], disabled: [{\n type: Input\n }], boundaryLinks: [{\n type: Input\n }], directionLinks: [{\n type: Input\n }], ellipses: [{\n type: Input\n }], rotate: [{\n type: Input\n }], collectionSize: [{\n type: Input\n }], maxSize: [{\n type: Input\n }], page: [{\n type: Input\n }], pageSize: [{\n type: Input\n }], pageChange: [{\n type: Output\n }], size: [{\n type: Input\n }] } });\n\nconst DIRECTIVES = [\n NgbPagination,\n NgbPaginationEllipsis,\n NgbPaginationFirst,\n NgbPaginationLast,\n NgbPaginationNext,\n NgbPaginationNumber,\n NgbPaginationPrevious,\n NgbPaginationPages,\n];\nclass NgbPaginationModule {\n}\nNgbPaginationModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbPaginationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNgbPaginationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbPaginationModule, declarations: [NgbPagination,\n NgbPaginationEllipsis,\n NgbPaginationFirst,\n NgbPaginationLast,\n NgbPaginationNext,\n NgbPaginationNumber,\n NgbPaginationPrevious,\n NgbPaginationPages], imports: [CommonModule], exports: [NgbPagination,\n NgbPaginationEllipsis,\n NgbPaginationFirst,\n NgbPaginationLast,\n NgbPaginationNext,\n NgbPaginationNumber,\n NgbPaginationPrevious,\n NgbPaginationPages] });\nNgbPaginationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbPaginationModule, imports: [CommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbPaginationModule, decorators: [{\n type: NgModule,\n args: [{ declarations: DIRECTIVES, exports: DIRECTIVES, imports: [CommonModule] }]\n }] });\n\nclass Trigger {\n constructor(open, close) {\n this.open = open;\n this.close = close;\n if (!close) {\n this.close = open;\n }\n }\n isManual() {\n return this.open === 'manual' || this.close === 'manual';\n }\n}\nconst DEFAULT_ALIASES = {\n hover: ['mouseenter', 'mouseleave'],\n focus: ['focusin', 'focusout'],\n};\nfunction parseTriggers(triggers, aliases = DEFAULT_ALIASES) {\n const trimmedTriggers = (triggers || '').trim();\n if (trimmedTriggers.length === 0) {\n return [];\n }\n const parsedTriggers = trimmedTriggers\n .split(/\\s+/)\n .map((trigger) => trigger.split(':'))\n .map((triggerPair) => {\n let alias = aliases[triggerPair[0]] || triggerPair;\n return new Trigger(alias[0], alias[1]);\n });\n const manualTriggers = parsedTriggers.filter((triggerPair) => triggerPair.isManual());\n if (manualTriggers.length > 1) {\n throw 'Triggers parse error: only one manual trigger is allowed';\n }\n if (manualTriggers.length === 1 && parsedTriggers.length > 1) {\n throw \"Triggers parse error: manual trigger can't be mixed with other triggers\";\n }\n return parsedTriggers;\n}\nfunction observeTriggers(renderer, nativeElement, triggers, isOpenedFn) {\n return new Observable((subscriber) => {\n const listeners = [];\n const openFn = () => subscriber.next(true);\n const closeFn = () => subscriber.next(false);\n const toggleFn = () => subscriber.next(!isOpenedFn());\n triggers.forEach((trigger) => {\n if (trigger.open === trigger.close) {\n listeners.push(renderer.listen(nativeElement, trigger.open, toggleFn));\n }\n else {\n listeners.push(renderer.listen(nativeElement, trigger.open, openFn), renderer.listen(nativeElement, trigger.close, closeFn));\n }\n });\n return () => {\n listeners.forEach((unsubscribeFn) => unsubscribeFn());\n };\n });\n}\nconst delayOrNoop = (time) => (time > 0 ? delay(time) : (a) => a);\nfunction triggerDelay(openDelay, closeDelay, isOpenedFn) {\n return (input$) => {\n let pending = null;\n const filteredInput$ = input$.pipe(map((open) => ({ open })), filter((event) => {\n const currentlyOpen = isOpenedFn();\n if (currentlyOpen !== event.open && (!pending || pending.open === currentlyOpen)) {\n pending = event;\n return true;\n }\n if (pending && pending.open !== event.open) {\n pending = null;\n }\n return false;\n }), share());\n const delayedOpen$ = filteredInput$.pipe(filter((event) => event.open), delayOrNoop(openDelay));\n const delayedClose$ = filteredInput$.pipe(filter((event) => !event.open), delayOrNoop(closeDelay));\n return merge(delayedOpen$, delayedClose$).pipe(filter((event) => {\n if (event === pending) {\n pending = null;\n return event.open !== isOpenedFn();\n }\n return false;\n }), map((event) => event.open));\n };\n}\nfunction listenToTriggers(renderer, nativeElement, triggers, isOpenedFn, openFn, closeFn, openDelay = 0, closeDelay = 0) {\n const parsedTriggers = parseTriggers(triggers);\n if (parsedTriggers.length === 1 && parsedTriggers[0].isManual()) {\n return () => { };\n }\n const subscription = observeTriggers(renderer, nativeElement, parsedTriggers, isOpenedFn)\n .pipe(triggerDelay(openDelay, closeDelay, isOpenedFn))\n .subscribe((open) => (open ? openFn() : closeFn()));\n return () => subscription.unsubscribe();\n}\n\n/**\n * A configuration service for the [`NgbPopover`](#/components/popover/api#NgbPopover) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the popovers used in the application.\n */\nclass NgbPopoverConfig {\n constructor(_ngbConfig) {\n this._ngbConfig = _ngbConfig;\n this.autoClose = true;\n this.placement = 'auto';\n this.popperOptions = (options) => options;\n this.triggers = 'click';\n this.disablePopover = false;\n this.openDelay = 0;\n this.closeDelay = 0;\n }\n get animation() {\n return this._animation === undefined ? this._ngbConfig.animation : this._animation;\n }\n set animation(animation) {\n this._animation = animation;\n }\n}\nNgbPopoverConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbPopoverConfig, deps: [{ token: NgbConfig }], target: i0.ɵɵFactoryTarget.Injectable });\nNgbPopoverConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbPopoverConfig, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbPopoverConfig, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: NgbConfig }]; } });\n\nlet nextId$1 = 0;\nclass NgbPopoverWindow {\n isTitleTemplate() {\n return this.title instanceof TemplateRef;\n }\n}\nNgbPopoverWindow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbPopoverWindow, deps: [], target: i0.ɵɵFactoryTarget.Component });\nNgbPopoverWindow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgbPopoverWindow, selector: \"ngb-popover-window\", inputs: { animation: \"animation\", title: \"title\", id: \"id\", popoverClass: \"popoverClass\", context: \"context\" }, host: { attributes: { \"role\": \"tooltip\" }, properties: { \"class\": \"\\\"popover\\\" + (popoverClass ? \\\" \\\" + popoverClass : \\\"\\\")\", \"class.fade\": \"animation\", \"id\": \"id\" } }, ngImport: i0, template: `
    \n\t\t

    \n\t\t\t{{ title }}\n\t\t\t\n\t\t

    \n\t\t
    `, isInline: true, dependencies: [{ kind: \"directive\", type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbPopoverWindow, decorators: [{\n type: Component,\n args: [{\n selector: 'ngb-popover-window',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': '\"popover\" + (popoverClass ? \" \" + popoverClass : \"\")',\n '[class.fade]': 'animation',\n role: 'tooltip',\n '[id]': 'id',\n },\n template: `
    \n\t\t

    \n\t\t\t{{ title }}\n\t\t\t\n\t\t

    \n\t\t
    `,\n }]\n }], propDecorators: { animation: [{\n type: Input\n }], title: [{\n type: Input\n }], id: [{\n type: Input\n }], popoverClass: [{\n type: Input\n }], context: [{\n type: Input\n }] } });\n/**\n * A lightweight and extensible directive for fancy popover creation.\n */\nclass NgbPopover {\n constructor(_elementRef, rtl, _renderer, injector, viewContainerRef, config, _ngZone, _document, _changeDetector, applicationRef) {\n this._elementRef = _elementRef;\n this._renderer = _renderer;\n this._ngZone = _ngZone;\n this._document = _document;\n this._changeDetector = _changeDetector;\n /**\n * An event emitted when the popover opening animation has finished. Contains no payload.\n */\n this.shown = new EventEmitter();\n /**\n * An event emitted when the popover closing animation has finished. Contains no payload.\n *\n * At this point popover is not in the DOM anymore.\n */\n this.hidden = new EventEmitter();\n this._ngbPopoverWindowId = `ngb-popover-${nextId$1++}`;\n this._windowRef = null;\n this.animation = config.animation;\n this.autoClose = config.autoClose;\n this.placement = config.placement;\n this.popperOptions = config.popperOptions;\n this.triggers = config.triggers;\n this.container = config.container;\n this.disablePopover = config.disablePopover;\n this.popoverClass = config.popoverClass;\n this.openDelay = config.openDelay;\n this.closeDelay = config.closeDelay;\n this._positioning = ngbPositioning(rtl);\n this._popupService = new PopupService(NgbPopoverWindow, injector, viewContainerRef, _renderer, this._ngZone, applicationRef);\n }\n _isDisabled() {\n if (this.disablePopover) {\n return true;\n }\n if (!this.ngbPopover && !this.popoverTitle) {\n return true;\n }\n return false;\n }\n /**\n * Opens the popover.\n *\n * This is considered to be a \"manual\" triggering.\n * The `context` is an optional value to be injected into the popover template when it is created.\n */\n open(context) {\n if (!this._windowRef && !this._isDisabled()) {\n // this type assertion is safe because otherwise _isDisabled would return true\n const { windowRef, transition$ } = this._popupService.open(this.ngbPopover, context, this.animation);\n this._windowRef = windowRef;\n this._windowRef.setInput('animation', this.animation);\n this._windowRef.setInput('title', this.popoverTitle);\n this._windowRef.setInput('context', context);\n this._windowRef.setInput('popoverClass', this.popoverClass);\n this._windowRef.setInput('id', this._ngbPopoverWindowId);\n this._renderer.setAttribute(this._getPositionTargetElement(), 'aria-describedby', this._ngbPopoverWindowId);\n if (this.container === 'body') {\n this._document.querySelector(this.container).appendChild(this._windowRef.location.nativeElement);\n }\n // We need to detect changes, because we don't know where .open() might be called from.\n // Ex. opening popover from one of lifecycle hooks that run after the CD\n // (say from ngAfterViewInit) will result in 'ExpressionHasChanged' exception\n this._windowRef.changeDetectorRef.detectChanges();\n // We need to mark for check, because popover won't work inside the OnPush component.\n // Ex. when we use expression like `{{ popover.isOpen() : 'opened' : 'closed' }}`\n // inside the template of an OnPush component and we change the popover from\n // open -> closed, the expression in question won't be updated unless we explicitly\n // mark the parent component to be checked.\n this._windowRef.changeDetectorRef.markForCheck();\n // Setting up popper and scheduling updates when zone is stable\n this._ngZone.runOutsideAngular(() => {\n this._positioning.createPopper({\n hostElement: this._getPositionTargetElement(),\n targetElement: this._windowRef.location.nativeElement,\n placement: this.placement,\n appendToBody: this.container === 'body',\n baseClass: 'bs-popover',\n updatePopperOptions: (options) => this.popperOptions(addPopperOffset([0, 8])(options)),\n });\n Promise.resolve().then(() => {\n // This update is required for correct arrow placement\n this._positioning.update();\n this._zoneSubscription = this._ngZone.onStable.subscribe(() => this._positioning.update());\n });\n });\n ngbAutoClose(this._ngZone, this._document, this.autoClose, () => this.close(), this.hidden, [\n this._windowRef.location.nativeElement,\n ]);\n transition$.subscribe(() => this.shown.emit());\n }\n }\n /**\n * Closes the popover.\n *\n * This is considered to be a \"manual\" triggering of the popover.\n */\n close(animation = this.animation) {\n if (this._windowRef) {\n this._renderer.removeAttribute(this._getPositionTargetElement(), 'aria-describedby');\n this._popupService.close(animation).subscribe(() => {\n this._windowRef = null;\n this._positioning.destroy();\n this._zoneSubscription?.unsubscribe();\n this.hidden.emit();\n this._changeDetector.markForCheck();\n });\n }\n }\n /**\n * Toggles the popover.\n *\n * This is considered to be a \"manual\" triggering of the popover.\n */\n toggle() {\n if (this._windowRef) {\n this.close();\n }\n else {\n this.open();\n }\n }\n /**\n * Returns `true`, if the popover is currently shown.\n */\n isOpen() {\n return this._windowRef != null;\n }\n ngOnInit() {\n this._unregisterListenersFn = listenToTriggers(this._renderer, this._elementRef.nativeElement, this.triggers, this.isOpen.bind(this), this.open.bind(this), this.close.bind(this), +this.openDelay, +this.closeDelay);\n }\n ngOnChanges({ ngbPopover, popoverTitle, disablePopover, popoverClass }) {\n if (popoverClass && this.isOpen()) {\n this._windowRef.instance.popoverClass = popoverClass.currentValue;\n }\n // close popover if title and content become empty, or disablePopover set to true\n if ((ngbPopover || popoverTitle || disablePopover) && this._isDisabled()) {\n this.close();\n }\n }\n ngOnDestroy() {\n this.close(false);\n // This check is needed as it might happen that ngOnDestroy is called before ngOnInit\n // under certain conditions, see: https://github.com/ng-bootstrap/ng-bootstrap/issues/2199\n this._unregisterListenersFn?.();\n }\n _getPositionTargetElement() {\n return ((isString(this.positionTarget) ? this._document.querySelector(this.positionTarget) : this.positionTarget) ||\n this._elementRef.nativeElement);\n }\n}\nNgbPopover.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbPopover, deps: [{ token: i0.ElementRef }, { token: NgbRTL }, { token: i0.Renderer2 }, { token: i0.Injector }, { token: i0.ViewContainerRef }, { token: NgbPopoverConfig }, { token: i0.NgZone }, { token: DOCUMENT }, { token: i0.ChangeDetectorRef }, { token: i0.ApplicationRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgbPopover.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgbPopover, selector: \"[ngbPopover]\", inputs: { animation: \"animation\", autoClose: \"autoClose\", ngbPopover: \"ngbPopover\", popoverTitle: \"popoverTitle\", placement: \"placement\", popperOptions: \"popperOptions\", triggers: \"triggers\", positionTarget: \"positionTarget\", container: \"container\", disablePopover: \"disablePopover\", popoverClass: \"popoverClass\", openDelay: \"openDelay\", closeDelay: \"closeDelay\" }, outputs: { shown: \"shown\", hidden: \"hidden\" }, exportAs: [\"ngbPopover\"], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbPopover, decorators: [{\n type: Directive,\n args: [{ selector: '[ngbPopover]', exportAs: 'ngbPopover' }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: NgbRTL }, { type: i0.Renderer2 }, { type: i0.Injector }, { type: i0.ViewContainerRef }, { type: NgbPopoverConfig }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i0.ChangeDetectorRef }, { type: i0.ApplicationRef }]; }, propDecorators: { animation: [{\n type: Input\n }], autoClose: [{\n type: Input\n }], ngbPopover: [{\n type: Input\n }], popoverTitle: [{\n type: Input\n }], placement: [{\n type: Input\n }], popperOptions: [{\n type: Input\n }], triggers: [{\n type: Input\n }], positionTarget: [{\n type: Input\n }], container: [{\n type: Input\n }], disablePopover: [{\n type: Input\n }], popoverClass: [{\n type: Input\n }], openDelay: [{\n type: Input\n }], closeDelay: [{\n type: Input\n }], shown: [{\n type: Output\n }], hidden: [{\n type: Output\n }] } });\n\nclass NgbPopoverModule {\n}\nNgbPopoverModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbPopoverModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNgbPopoverModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbPopoverModule, declarations: [NgbPopover, NgbPopoverWindow], imports: [CommonModule], exports: [NgbPopover] });\nNgbPopoverModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbPopoverModule, imports: [CommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbPopoverModule, decorators: [{\n type: NgModule,\n args: [{ declarations: [NgbPopover, NgbPopoverWindow], exports: [NgbPopover], imports: [CommonModule] }]\n }] });\n\n/**\n * A configuration service for the [`NgbProgressbar`](#/components/progressbar/api#NgbProgressbar) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the progress bars used in the application.\n */\nclass NgbProgressbarConfig {\n constructor() {\n this.max = 100;\n this.animated = false;\n this.ariaLabel = 'progress bar';\n this.striped = false;\n this.showValue = false;\n }\n}\nNgbProgressbarConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbProgressbarConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNgbProgressbarConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbProgressbarConfig, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbProgressbarConfig, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\n/**\n * A directive that provides feedback on the progress of a workflow or an action.\n */\nclass NgbProgressbar {\n constructor(config) {\n /**\n * The current value for the progress bar.\n *\n * Should be in the `[0, max]` range.\n */\n this.value = 0;\n this.max = config.max;\n this.animated = config.animated;\n this.ariaLabel = config.ariaLabel;\n this.striped = config.striped;\n this.textType = config.textType;\n this.type = config.type;\n this.showValue = config.showValue;\n this.height = config.height;\n }\n /**\n * The maximal value to be displayed in the progress bar.\n *\n * Should be a positive number. Will default to 100 otherwise.\n */\n set max(max) {\n this._max = !isNumber(max) || max <= 0 ? 100 : max;\n }\n get max() {\n return this._max;\n }\n getValue() {\n return getValueInRange(this.value, this.max);\n }\n getPercentValue() {\n return (100 * this.getValue()) / this.max;\n }\n}\nNgbProgressbar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbProgressbar, deps: [{ token: NgbProgressbarConfig }], target: i0.ɵɵFactoryTarget.Component });\nNgbProgressbar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgbProgressbar, selector: \"ngb-progressbar\", inputs: { max: \"max\", animated: \"animated\", ariaLabel: \"ariaLabel\", striped: \"striped\", showValue: \"showValue\", textType: \"textType\", type: \"type\", value: \"value\", height: \"height\" }, host: { properties: { \"style.height\": \"this.height\" }, classAttribute: \"progress\" }, ngImport: i0, template: `\n\t\t\n\t\t\t{{ getValue() / max | percent }}\n\t\t\n\t`, isInline: true, dependencies: [{ kind: \"directive\", type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"pipe\", type: i2.PercentPipe, name: \"percent\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbProgressbar, decorators: [{\n type: Component,\n args: [{\n selector: 'ngb-progressbar',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { class: 'progress' },\n template: `\n\t\t\n\t\t\t{{ getValue() / max | percent }}\n\t\t\n\t`,\n }]\n }], ctorParameters: function () { return [{ type: NgbProgressbarConfig }]; }, propDecorators: { max: [{\n type: Input\n }], animated: [{\n type: Input\n }], ariaLabel: [{\n type: Input\n }], striped: [{\n type: Input\n }], showValue: [{\n type: Input\n }], textType: [{\n type: Input\n }], type: [{\n type: Input\n }], value: [{\n type: Input\n }], height: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['style.height']\n }] } });\n\nclass NgbProgressbarModule {\n}\nNgbProgressbarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbProgressbarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNgbProgressbarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbProgressbarModule, declarations: [NgbProgressbar], imports: [CommonModule], exports: [NgbProgressbar] });\nNgbProgressbarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbProgressbarModule, imports: [CommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbProgressbarModule, decorators: [{\n type: NgModule,\n args: [{ declarations: [NgbProgressbar], exports: [NgbProgressbar], imports: [CommonModule] }]\n }] });\n\n/**\n * A configuration service for the [`NgbRating`](#/components/rating/api#NgbRating) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the ratings used in the application.\n */\nclass NgbRatingConfig {\n constructor() {\n this.max = 10;\n this.readonly = false;\n this.resettable = false;\n this.tabindex = 0;\n }\n}\nNgbRatingConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbRatingConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNgbRatingConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbRatingConfig, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbRatingConfig, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\n/**\n * A directive that helps visualising and interacting with a star rating bar.\n */\nclass NgbRating {\n constructor(config, _changeDetectorRef) {\n this._changeDetectorRef = _changeDetectorRef;\n this.contexts = [];\n this.disabled = false;\n /**\n * An event emitted when the user is hovering over a given rating.\n *\n * Event payload equals to the rating being hovered over.\n */\n this.hover = new EventEmitter();\n /**\n * An event emitted when the user stops hovering over a given rating.\n *\n * Event payload equals to the rating of the last item being hovered over.\n */\n this.leave = new EventEmitter();\n /**\n * An event emitted when the rating is changed.\n *\n * Event payload equals to the newly selected rating.\n */\n this.rateChange = new EventEmitter(true);\n this.onChange = (_) => { };\n this.onTouched = () => { };\n this.max = config.max;\n this.readonly = config.readonly;\n this.tabindex = config.tabindex;\n }\n ariaValueText() {\n return `${this.nextRate} out of ${this.max}`;\n }\n isInteractive() {\n return !this.readonly && !this.disabled;\n }\n enter(value) {\n if (this.isInteractive()) {\n this._updateState(value);\n }\n this.hover.emit(value);\n }\n handleBlur() {\n this.onTouched();\n }\n handleClick(value) {\n if (this.isInteractive()) {\n this.update(this.resettable && this.rate === value ? 0 : value);\n }\n }\n handleKeyDown(event) {\n /* eslint-disable-next-line deprecation/deprecation */\n switch (event.which) {\n case Key.ArrowDown:\n case Key.ArrowLeft:\n this.update(this.rate - 1);\n break;\n case Key.ArrowUp:\n case Key.ArrowRight:\n this.update(this.rate + 1);\n break;\n case Key.Home:\n this.update(0);\n break;\n case Key.End:\n this.update(this.max);\n break;\n default:\n return;\n }\n // note 'return' in default case\n event.preventDefault();\n }\n ngOnChanges(changes) {\n if (changes['rate']) {\n this.update(this.rate);\n }\n if (changes['max']) {\n this._updateMax();\n }\n }\n ngOnInit() {\n this._setupContexts();\n this._updateState(this.rate);\n }\n registerOnChange(fn) {\n this.onChange = fn;\n }\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n reset() {\n this.leave.emit(this.nextRate);\n this._updateState(this.rate);\n }\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n update(value, internalChange = true) {\n const newRate = getValueInRange(value, this.max, 0);\n if (this.isInteractive() && this.rate !== newRate) {\n this.rate = newRate;\n this.rateChange.emit(this.rate);\n }\n if (internalChange) {\n this.onChange(this.rate);\n this.onTouched();\n }\n this._updateState(this.rate);\n }\n writeValue(value) {\n this.update(value, false);\n this._changeDetectorRef.markForCheck();\n }\n _updateState(nextValue) {\n this.nextRate = nextValue;\n this.contexts.forEach((context, index) => (context.fill = Math.round(getValueInRange(nextValue - index, 1, 0) * 100)));\n }\n _updateMax() {\n if (this.max > 0) {\n this._setupContexts();\n this.update(this.rate);\n }\n }\n _setupContexts() {\n this.contexts = Array.from({ length: this.max }, (v, k) => ({ fill: 0, index: k }));\n }\n}\nNgbRating.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbRating, deps: [{ token: NgbRatingConfig }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nNgbRating.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgbRating, selector: \"ngb-rating\", inputs: { max: \"max\", rate: \"rate\", readonly: \"readonly\", resettable: \"resettable\", starTemplate: \"starTemplate\", tabindex: \"tabindex\" }, outputs: { hover: \"hover\", leave: \"leave\", rateChange: \"rateChange\" }, host: { attributes: { \"role\": \"slider\", \"aria-valuemin\": \"0\" }, listeners: { \"blur\": \"handleBlur()\", \"keydown\": \"handleKeyDown($event)\", \"mouseleave\": \"reset()\" }, properties: { \"tabindex\": \"disabled ? -1 : tabindex\", \"attr.aria-valuemax\": \"max\", \"attr.aria-valuenow\": \"nextRate\", \"attr.aria-valuetext\": \"ariaValueText()\", \"attr.aria-disabled\": \"readonly ? true : null\" }, classAttribute: \"d-inline-flex\" }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbRating), multi: true }], queries: [{ propertyName: \"starTemplateFromContent\", first: true, predicate: TemplateRef, descendants: true }], usesOnChanges: true, ngImport: i0, template: `\n\t\t{{ fill === 100 ? '★' : '☆' }}\n\t\t\n\t\t\t({{ index < nextRate ? '*' : ' ' }})\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t`, isInline: true, dependencies: [{ kind: \"directive\", type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbRating, decorators: [{\n type: Component,\n args: [{\n selector: 'ngb-rating',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'd-inline-flex',\n '[tabindex]': 'disabled ? -1 : tabindex',\n role: 'slider',\n 'aria-valuemin': '0',\n '[attr.aria-valuemax]': 'max',\n '[attr.aria-valuenow]': 'nextRate',\n '[attr.aria-valuetext]': 'ariaValueText()',\n '[attr.aria-disabled]': 'readonly ? true : null',\n '(blur)': 'handleBlur()',\n '(keydown)': 'handleKeyDown($event)',\n '(mouseleave)': 'reset()',\n },\n template: `\n\t\t{{ fill === 100 ? '★' : '☆' }}\n\t\t\n\t\t\t({{ index < nextRate ? '*' : ' ' }})\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t`,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbRating), multi: true }],\n }]\n }], ctorParameters: function () { return [{ type: NgbRatingConfig }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { max: [{\n type: Input\n }], rate: [{\n type: Input\n }], readonly: [{\n type: Input\n }], resettable: [{\n type: Input\n }], starTemplate: [{\n type: Input\n }], starTemplateFromContent: [{\n type: ContentChild,\n args: [TemplateRef, { static: false }]\n }], tabindex: [{\n type: Input\n }], hover: [{\n type: Output\n }], leave: [{\n type: Output\n }], rateChange: [{\n type: Output\n }] } });\n\nclass NgbRatingModule {\n}\nNgbRatingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbRatingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNgbRatingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbRatingModule, declarations: [NgbRating], imports: [CommonModule], exports: [NgbRating] });\nNgbRatingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbRatingModule, imports: [CommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbRatingModule, decorators: [{\n type: NgModule,\n args: [{ declarations: [NgbRating], exports: [NgbRating], imports: [CommonModule] }]\n }] });\n\nclass NgbTime {\n constructor(hour, minute, second) {\n this.hour = toInteger(hour);\n this.minute = toInteger(minute);\n this.second = toInteger(second);\n }\n changeHour(step = 1) {\n this.updateHour((isNaN(this.hour) ? 0 : this.hour) + step);\n }\n updateHour(hour) {\n if (isNumber(hour)) {\n this.hour = (hour < 0 ? 24 + hour : hour) % 24;\n }\n else {\n this.hour = NaN;\n }\n }\n changeMinute(step = 1) {\n this.updateMinute((isNaN(this.minute) ? 0 : this.minute) + step);\n }\n updateMinute(minute) {\n if (isNumber(minute)) {\n this.minute = minute % 60 < 0 ? 60 + (minute % 60) : minute % 60;\n this.changeHour(Math.floor(minute / 60));\n }\n else {\n this.minute = NaN;\n }\n }\n changeSecond(step = 1) {\n this.updateSecond((isNaN(this.second) ? 0 : this.second) + step);\n }\n updateSecond(second) {\n if (isNumber(second)) {\n this.second = second < 0 ? 60 + (second % 60) : second % 60;\n this.changeMinute(Math.floor(second / 60));\n }\n else {\n this.second = NaN;\n }\n }\n isValid(checkSecs = true) {\n return isNumber(this.hour) && isNumber(this.minute) && (checkSecs ? isNumber(this.second) : true);\n }\n toString() {\n return `${this.hour || 0}:${this.minute || 0}:${this.second || 0}`;\n }\n}\n\n/**\n * A configuration service for the [`NgbTimepicker`](#/components/timepicker/api#NgbTimepicker) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the timepickers used in the application.\n */\nclass NgbTimepickerConfig {\n constructor() {\n this.meridian = false;\n this.spinners = true;\n this.seconds = false;\n this.hourStep = 1;\n this.minuteStep = 1;\n this.secondStep = 1;\n this.disabled = false;\n this.readonlyInputs = false;\n this.size = 'medium';\n }\n}\nNgbTimepickerConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbTimepickerConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNgbTimepickerConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbTimepickerConfig, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbTimepickerConfig, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\nfunction NGB_DATEPICKER_TIME_ADAPTER_FACTORY() {\n return new NgbTimeStructAdapter();\n}\n/**\n * An abstract service that does the conversion between the internal timepicker `NgbTimeStruct` model and\n * any provided user time model `T`, ex. a string, a native date, etc.\n *\n * The adapter is used **only** for conversion when binding timepicker to a form control,\n * ex. `[(ngModel)]=\"userTimeModel\"`. Here `userTimeModel` can be of any type.\n *\n * The default timepicker implementation assumes we use `NgbTimeStruct` as a user model.\n *\n * See the [custom time adapter demo](#/components/timepicker/examples#adapter) for an example.\n *\n * @since 2.2.0\n */\nclass NgbTimeAdapter {\n}\nNgbTimeAdapter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbTimeAdapter, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNgbTimeAdapter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbTimeAdapter, providedIn: 'root', useFactory: NGB_DATEPICKER_TIME_ADAPTER_FACTORY });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbTimeAdapter, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: NGB_DATEPICKER_TIME_ADAPTER_FACTORY }]\n }] });\nclass NgbTimeStructAdapter extends NgbTimeAdapter {\n /**\n * Converts a NgbTimeStruct value into NgbTimeStruct value\n */\n fromModel(time) {\n return time && isInteger(time.hour) && isInteger(time.minute)\n ? { hour: time.hour, minute: time.minute, second: isInteger(time.second) ? time.second : null }\n : null;\n }\n /**\n * Converts a NgbTimeStruct value into NgbTimeStruct value\n */\n toModel(time) {\n return time && isInteger(time.hour) && isInteger(time.minute)\n ? { hour: time.hour, minute: time.minute, second: isInteger(time.second) ? time.second : null }\n : null;\n }\n}\nNgbTimeStructAdapter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbTimeStructAdapter, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\nNgbTimeStructAdapter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbTimeStructAdapter });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbTimeStructAdapter, decorators: [{\n type: Injectable\n }] });\n\nfunction NGB_TIMEPICKER_I18N_FACTORY(locale) {\n return new NgbTimepickerI18nDefault(locale);\n}\n/**\n * Type of the service supplying day periods (for example, 'AM' and 'PM') to NgbTimepicker component.\n * The default implementation of this service honors the Angular locale, and uses the registered locale data,\n * as explained in the Angular i18n guide.\n */\nclass NgbTimepickerI18n {\n}\nNgbTimepickerI18n.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbTimepickerI18n, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNgbTimepickerI18n.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbTimepickerI18n, providedIn: 'root', useFactory: NGB_TIMEPICKER_I18N_FACTORY, deps: [{ token: LOCALE_ID }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbTimepickerI18n, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: NGB_TIMEPICKER_I18N_FACTORY, deps: [LOCALE_ID] }]\n }] });\nclass NgbTimepickerI18nDefault extends NgbTimepickerI18n {\n constructor(locale) {\n super();\n this._periods = getLocaleDayPeriods(locale, FormStyle.Standalone, TranslationWidth.Narrow);\n }\n getMorningPeriod() {\n return this._periods[0];\n }\n getAfternoonPeriod() {\n return this._periods[1];\n }\n}\nNgbTimepickerI18nDefault.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbTimepickerI18nDefault, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Injectable });\nNgbTimepickerI18nDefault.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbTimepickerI18nDefault });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbTimepickerI18nDefault, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; } });\n\nconst FILTER_REGEX = /[^0-9]/g;\n/**\n * A directive that helps with wth picking hours, minutes and seconds.\n */\nclass NgbTimepicker {\n constructor(_config, _ngbTimeAdapter, _cd, i18n) {\n this._config = _config;\n this._ngbTimeAdapter = _ngbTimeAdapter;\n this._cd = _cd;\n this.i18n = i18n;\n this.onChange = (_) => { };\n this.onTouched = () => { };\n this.meridian = _config.meridian;\n this.spinners = _config.spinners;\n this.seconds = _config.seconds;\n this.hourStep = _config.hourStep;\n this.minuteStep = _config.minuteStep;\n this.secondStep = _config.secondStep;\n this.disabled = _config.disabled;\n this.readonlyInputs = _config.readonlyInputs;\n this.size = _config.size;\n }\n /**\n * The number of hours to add/subtract when clicking hour spinners.\n */\n set hourStep(step) {\n this._hourStep = isInteger(step) ? step : this._config.hourStep;\n }\n get hourStep() {\n return this._hourStep;\n }\n /**\n * The number of minutes to add/subtract when clicking minute spinners.\n */\n set minuteStep(step) {\n this._minuteStep = isInteger(step) ? step : this._config.minuteStep;\n }\n get minuteStep() {\n return this._minuteStep;\n }\n /**\n * The number of seconds to add/subtract when clicking second spinners.\n */\n set secondStep(step) {\n this._secondStep = isInteger(step) ? step : this._config.secondStep;\n }\n get secondStep() {\n return this._secondStep;\n }\n writeValue(value) {\n const structValue = this._ngbTimeAdapter.fromModel(value);\n this.model = structValue ? new NgbTime(structValue.hour, structValue.minute, structValue.second) : new NgbTime();\n if (!this.seconds && (!structValue || !isNumber(structValue.second))) {\n this.model.second = 0;\n }\n this._cd.markForCheck();\n }\n registerOnChange(fn) {\n this.onChange = fn;\n }\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n /**\n * Increments the hours by the given step.\n */\n changeHour(step) {\n this.model?.changeHour(step);\n this.propagateModelChange();\n }\n /**\n * Increments the minutes by the given step.\n */\n changeMinute(step) {\n this.model?.changeMinute(step);\n this.propagateModelChange();\n }\n /**\n * Increments the seconds by the given step.\n */\n changeSecond(step) {\n this.model?.changeSecond(step);\n this.propagateModelChange();\n }\n /**\n * Update hours with the new value.\n */\n updateHour(newVal) {\n const isPM = this.model ? this.model.hour >= 12 : false;\n const enteredHour = toInteger(newVal);\n if (this.meridian && ((isPM && enteredHour < 12) || (!isPM && enteredHour === 12))) {\n this.model?.updateHour(enteredHour + 12);\n }\n else {\n this.model?.updateHour(enteredHour);\n }\n this.propagateModelChange();\n }\n /**\n * Update minutes with the new value.\n */\n updateMinute(newVal) {\n this.model?.updateMinute(toInteger(newVal));\n this.propagateModelChange();\n }\n /**\n * Update seconds with the new value.\n */\n updateSecond(newVal) {\n this.model?.updateSecond(toInteger(newVal));\n this.propagateModelChange();\n }\n toggleMeridian() {\n if (this.meridian) {\n this.changeHour(12);\n }\n }\n formatInput(input) {\n input.value = input.value.replace(FILTER_REGEX, '');\n }\n formatHour(value) {\n if (isNumber(value)) {\n if (this.meridian) {\n return padNumber(value % 12 === 0 ? 12 : value % 12);\n }\n else {\n return padNumber(value % 24);\n }\n }\n else {\n return padNumber(NaN);\n }\n }\n formatMinSec(value) {\n return padNumber(isNumber(value) ? value : NaN);\n }\n handleBlur() {\n this.onTouched();\n }\n get isSmallSize() {\n return this.size === 'small';\n }\n get isLargeSize() {\n return this.size === 'large';\n }\n ngOnChanges(changes) {\n if (changes['seconds'] && !this.seconds && this.model && !isNumber(this.model.second)) {\n this.model.second = 0;\n this.propagateModelChange(false);\n }\n }\n propagateModelChange(touched = true) {\n if (touched) {\n this.onTouched();\n }\n if (this.model?.isValid(this.seconds)) {\n this.onChange(this._ngbTimeAdapter.toModel({ hour: this.model.hour, minute: this.model.minute, second: this.model.second }));\n }\n else {\n this.onChange(this._ngbTimeAdapter.toModel(null));\n }\n }\n}\nNgbTimepicker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbTimepicker, deps: [{ token: NgbTimepickerConfig }, { token: NgbTimeAdapter }, { token: i0.ChangeDetectorRef }, { token: NgbTimepickerI18n }], target: i0.ɵɵFactoryTarget.Component });\nNgbTimepicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgbTimepicker, selector: \"ngb-timepicker\", inputs: { meridian: \"meridian\", spinners: \"spinners\", seconds: \"seconds\", hourStep: \"hourStep\", minuteStep: \"minuteStep\", secondStep: \"secondStep\", readonlyInputs: \"readonlyInputs\", size: \"size\" }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbTimepicker), multi: true }], exportAs: [\"ngbTimepicker\"], usesOnChanges: true, ngImport: i0, template: `\n\t\t
    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\tIncrement hours\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\tDecrement hours\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    :
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\tIncrement minutes\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\tDecrement minutes\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    :
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\tIncrement seconds\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\tDecrement seconds\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t= 12; else am\" i18n=\"@@ngb.timepicker.PM\">{{\n\t\t\t\t\t\t\ti18n.getAfternoonPeriod()\n\t\t\t\t\t\t}}\n\t\t\t\t\t\t{{ i18n.getMorningPeriod() }}\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t`, isInline: true, styles: [\"ngb-timepicker{font-size:1rem}.ngb-tp{display:flex;align-items:center}.ngb-tp-input-container{width:4em}.ngb-tp-chevron:before{border-style:solid;border-width:.29em .29em 0 0;content:\\\"\\\";display:inline-block;height:.69em;left:.05em;position:relative;top:.15em;transform:rotate(-45deg);vertical-align:middle;width:.69em}.ngb-tp-chevron.bottom:before{top:-.3em;transform:rotate(135deg)}.ngb-tp-input{text-align:center}.ngb-tp-hour,.ngb-tp-minute,.ngb-tp-second,.ngb-tp-meridian{display:flex;flex-direction:column;align-items:center;justify-content:space-around}.ngb-tp-spacer{width:1em;text-align:center}\\n\"], dependencies: [{ kind: \"directive\", type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbTimepicker, decorators: [{\n type: Component,\n args: [{ exportAs: 'ngbTimepicker', selector: 'ngb-timepicker', encapsulation: ViewEncapsulation.None, template: `\n\t\t
    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\tIncrement hours\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\tDecrement hours\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    :
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\tIncrement minutes\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\tDecrement minutes\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    :
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\tIncrement seconds\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\tDecrement seconds\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t= 12; else am\" i18n=\"@@ngb.timepicker.PM\">{{\n\t\t\t\t\t\t\ti18n.getAfternoonPeriod()\n\t\t\t\t\t\t}}\n\t\t\t\t\t\t{{ i18n.getMorningPeriod() }}\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t`, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbTimepicker), multi: true }], styles: [\"ngb-timepicker{font-size:1rem}.ngb-tp{display:flex;align-items:center}.ngb-tp-input-container{width:4em}.ngb-tp-chevron:before{border-style:solid;border-width:.29em .29em 0 0;content:\\\"\\\";display:inline-block;height:.69em;left:.05em;position:relative;top:.15em;transform:rotate(-45deg);vertical-align:middle;width:.69em}.ngb-tp-chevron.bottom:before{top:-.3em;transform:rotate(135deg)}.ngb-tp-input{text-align:center}.ngb-tp-hour,.ngb-tp-minute,.ngb-tp-second,.ngb-tp-meridian{display:flex;flex-direction:column;align-items:center;justify-content:space-around}.ngb-tp-spacer{width:1em;text-align:center}\\n\"] }]\n }], ctorParameters: function () { return [{ type: NgbTimepickerConfig }, { type: NgbTimeAdapter }, { type: i0.ChangeDetectorRef }, { type: NgbTimepickerI18n }]; }, propDecorators: { meridian: [{\n type: Input\n }], spinners: [{\n type: Input\n }], seconds: [{\n type: Input\n }], hourStep: [{\n type: Input\n }], minuteStep: [{\n type: Input\n }], secondStep: [{\n type: Input\n }], readonlyInputs: [{\n type: Input\n }], size: [{\n type: Input\n }] } });\n\nclass NgbTimepickerModule {\n}\nNgbTimepickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbTimepickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNgbTimepickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbTimepickerModule, declarations: [NgbTimepicker], imports: [CommonModule], exports: [NgbTimepicker] });\nNgbTimepickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbTimepickerModule, imports: [CommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbTimepickerModule, decorators: [{\n type: NgModule,\n args: [{ declarations: [NgbTimepicker], exports: [NgbTimepicker], imports: [CommonModule] }]\n }] });\n\nconst ngbToastFadeInTransition = (element, animation) => {\n const { classList } = element;\n if (animation) {\n classList.add('fade');\n }\n else {\n classList.add('show');\n return;\n }\n reflow(element);\n classList.add('show', 'showing');\n return () => {\n classList.remove('showing');\n };\n};\nconst ngbToastFadeOutTransition = ({ classList }) => {\n classList.add('showing');\n return () => {\n classList.remove('show', 'showing');\n };\n};\n\n/**\n * Configuration service for the NgbToast component. You can inject this service, typically in your root component,\n * and customize the values of its properties in order to provide default values for all the toasts used in the\n * application.\n *\n * @since 5.0.0\n */\nclass NgbToastConfig {\n constructor(_ngbConfig) {\n this._ngbConfig = _ngbConfig;\n this.autohide = true;\n this.delay = 5000;\n this.ariaLive = 'polite';\n }\n get animation() {\n return this._animation === undefined ? this._ngbConfig.animation : this._animation;\n }\n set animation(animation) {\n this._animation = animation;\n }\n}\nNgbToastConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbToastConfig, deps: [{ token: NgbConfig }], target: i0.ɵɵFactoryTarget.Injectable });\nNgbToastConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbToastConfig, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbToastConfig, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: NgbConfig }]; } });\n\n/**\n * This directive allows the usage of HTML markup or other directives\n * inside of the toast's header.\n *\n * @since 5.0.0\n */\nclass NgbToastHeader {\n}\nNgbToastHeader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbToastHeader, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nNgbToastHeader.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgbToastHeader, selector: \"[ngbToastHeader]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbToastHeader, decorators: [{\n type: Directive,\n args: [{ selector: '[ngbToastHeader]' }]\n }] });\n/**\n * Toasts provide feedback messages as notifications to the user.\n * Goal is to mimic the push notifications available both on mobile and desktop operating systems.\n *\n * @since 5.0.0\n */\nclass NgbToast {\n constructor(ariaLive, config, _zone, _element) {\n this.ariaLive = ariaLive;\n this._zone = _zone;\n this._element = _element;\n /**\n * A template like `` can be\n * used in the projected content to allow markup usage.\n */\n this.contentHeaderTpl = null;\n /**\n * An event fired after the animation triggered by calling `.show()` method has finished.\n *\n * @since 8.0.0\n */\n this.shown = new EventEmitter();\n /**\n * An event fired after the animation triggered by calling `.hide()` method has finished.\n *\n * It can only occur in 2 different scenarios:\n * - `autohide` timeout fires\n * - user clicks on a closing cross\n *\n * Additionally this output is purely informative. The toast won't be removed from DOM automatically, it's up\n * to the user to take care of that.\n *\n * @since 8.0.0\n */\n this.hidden = new EventEmitter();\n if (this.ariaLive == null) {\n this.ariaLive = config.ariaLive;\n }\n this.delay = config.delay;\n this.autohide = config.autohide;\n this.animation = config.animation;\n }\n ngAfterContentInit() {\n this._zone.onStable\n .asObservable()\n .pipe(take(1))\n .subscribe(() => {\n this._init();\n this.show();\n });\n }\n ngOnChanges(changes) {\n if ('autohide' in changes) {\n this._clearTimeout();\n this._init();\n }\n }\n /**\n * Triggers toast closing programmatically.\n *\n * The returned observable will emit and be completed once the closing transition has finished.\n * If the animations are turned off this happens synchronously.\n *\n * Alternatively you could listen or subscribe to the `(hidden)` output\n *\n * @since 8.0.0\n */\n hide() {\n this._clearTimeout();\n const transition = ngbRunTransition(this._zone, this._element.nativeElement, ngbToastFadeOutTransition, {\n animation: this.animation,\n runningTransition: 'stop',\n });\n transition.subscribe(() => {\n this.hidden.emit();\n });\n return transition;\n }\n /**\n * Triggers toast opening programmatically.\n *\n * The returned observable will emit and be completed once the opening transition has finished.\n * If the animations are turned off this happens synchronously.\n *\n * Alternatively you could listen or subscribe to the `(shown)` output\n *\n * @since 8.0.0\n */\n show() {\n const transition = ngbRunTransition(this._zone, this._element.nativeElement, ngbToastFadeInTransition, {\n animation: this.animation,\n runningTransition: 'continue',\n });\n transition.subscribe(() => {\n this.shown.emit();\n });\n return transition;\n }\n _init() {\n if (this.autohide && !this._timeoutID) {\n this._timeoutID = setTimeout(() => this.hide(), this.delay);\n }\n }\n _clearTimeout() {\n if (this._timeoutID) {\n clearTimeout(this._timeoutID);\n this._timeoutID = null;\n }\n }\n}\nNgbToast.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbToast, deps: [{ token: 'aria-live', attribute: true }, { token: NgbToastConfig }, { token: i0.NgZone }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nNgbToast.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgbToast, selector: \"ngb-toast\", inputs: { animation: \"animation\", delay: \"delay\", autohide: \"autohide\", header: \"header\" }, outputs: { shown: \"shown\", hidden: \"hidden\" }, host: { attributes: { \"role\": \"alert\", \"aria-atomic\": \"true\" }, properties: { \"attr.aria-live\": \"ariaLive\", \"class.fade\": \"animation\" }, classAttribute: \"toast\" }, queries: [{ propertyName: \"contentHeaderTpl\", first: true, predicate: NgbToastHeader, descendants: true, read: TemplateRef, static: true }], exportAs: [\"ngbToast\"], usesOnChanges: true, ngImport: i0, template: `\n\t\t\n\t\t\t{{ header }}\n\t\t\n\t\t\n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t
    \n\t\t
    \n\t\t
    \n\t\t\t\n\t\t
    \n\t`, isInline: true, styles: [\"ngb-toast{display:block}ngb-toast .toast-header .close{margin-left:auto;margin-bottom:.25rem}\\n\"], dependencies: [{ kind: \"directive\", type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }], encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbToast, decorators: [{\n type: Component,\n args: [{ selector: 'ngb-toast', exportAs: 'ngbToast', encapsulation: ViewEncapsulation.None, host: {\n role: 'alert',\n '[attr.aria-live]': 'ariaLive',\n 'aria-atomic': 'true',\n class: 'toast',\n '[class.fade]': 'animation',\n }, template: `\n\t\t\n\t\t\t{{ header }}\n\t\t\n\t\t\n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t
    \n\t\t
    \n\t\t
    \n\t\t\t\n\t\t
    \n\t`, styles: [\"ngb-toast{display:block}ngb-toast .toast-header .close{margin-left:auto;margin-bottom:.25rem}\\n\"] }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Attribute,\n args: ['aria-live']\n }] }, { type: NgbToastConfig }, { type: i0.NgZone }, { type: i0.ElementRef }]; }, propDecorators: { animation: [{\n type: Input\n }], delay: [{\n type: Input\n }], autohide: [{\n type: Input\n }], header: [{\n type: Input\n }], contentHeaderTpl: [{\n type: ContentChild,\n args: [NgbToastHeader, { read: TemplateRef, static: true }]\n }], shown: [{\n type: Output\n }], hidden: [{\n type: Output\n }] } });\n\nclass NgbToastModule {\n}\nNgbToastModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbToastModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNgbToastModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbToastModule, declarations: [NgbToast, NgbToastHeader], imports: [CommonModule], exports: [NgbToast, NgbToastHeader] });\nNgbToastModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbToastModule, imports: [CommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbToastModule, decorators: [{\n type: NgModule,\n args: [{ declarations: [NgbToast, NgbToastHeader], imports: [CommonModule], exports: [NgbToast, NgbToastHeader] }]\n }] });\n\n/**\n * A configuration service for the [`NgbTooltip`](#/components/tooltip/api#NgbTooltip) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the tooltips used in the application.\n */\nclass NgbTooltipConfig {\n constructor(_ngbConfig) {\n this._ngbConfig = _ngbConfig;\n this.autoClose = true;\n this.placement = 'auto';\n this.popperOptions = (options) => options;\n this.triggers = 'hover focus';\n this.disableTooltip = false;\n this.openDelay = 0;\n this.closeDelay = 0;\n }\n get animation() {\n return this._animation === undefined ? this._ngbConfig.animation : this._animation;\n }\n set animation(animation) {\n this._animation = animation;\n }\n}\nNgbTooltipConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbTooltipConfig, deps: [{ token: NgbConfig }], target: i0.ɵɵFactoryTarget.Injectable });\nNgbTooltipConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbTooltipConfig, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbTooltipConfig, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: NgbConfig }]; } });\n\nlet nextId = 0;\nclass NgbTooltipWindow {\n}\nNgbTooltipWindow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbTooltipWindow, deps: [], target: i0.ɵɵFactoryTarget.Component });\nNgbTooltipWindow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgbTooltipWindow, selector: \"ngb-tooltip-window\", inputs: { animation: \"animation\", id: \"id\", tooltipClass: \"tooltipClass\" }, host: { attributes: { \"role\": \"tooltip\" }, properties: { \"class\": \"\\\"tooltip\\\" + (tooltipClass ? \\\" \\\" + tooltipClass : \\\"\\\")\", \"class.fade\": \"animation\", \"id\": \"id\" } }, ngImport: i0, template: `
    `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbTooltipWindow, decorators: [{\n type: Component,\n args: [{\n selector: 'ngb-tooltip-window',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': '\"tooltip\" + (tooltipClass ? \" \" + tooltipClass : \"\")',\n '[class.fade]': 'animation',\n role: 'tooltip',\n '[id]': 'id',\n },\n template: `
    `,\n }]\n }], propDecorators: { animation: [{\n type: Input\n }], id: [{\n type: Input\n }], tooltipClass: [{\n type: Input\n }] } });\n/**\n * A lightweight and extensible directive for fancy tooltip creation.\n */\nclass NgbTooltip {\n constructor(_elementRef, rtl, _renderer, injector, viewContainerRef, config, _ngZone, _document, _changeDetector, applicationRef) {\n this._elementRef = _elementRef;\n this._renderer = _renderer;\n this._ngZone = _ngZone;\n this._document = _document;\n this._changeDetector = _changeDetector;\n /**\n * An event emitted when the tooltip opening animation has finished. Contains no payload.\n */\n this.shown = new EventEmitter();\n /**\n * An event emitted when the tooltip closing animation has finished. Contains no payload.\n */\n this.hidden = new EventEmitter();\n this._ngbTooltipWindowId = `ngb-tooltip-${nextId++}`;\n this._windowRef = null;\n this.animation = config.animation;\n this.autoClose = config.autoClose;\n this.placement = config.placement;\n this.popperOptions = config.popperOptions;\n this.triggers = config.triggers;\n this.container = config.container;\n this.disableTooltip = config.disableTooltip;\n this.tooltipClass = config.tooltipClass;\n this.openDelay = config.openDelay;\n this.closeDelay = config.closeDelay;\n this._popupService = new PopupService(NgbTooltipWindow, injector, viewContainerRef, _renderer, this._ngZone, applicationRef);\n this._positioning = ngbPositioning(rtl);\n }\n /**\n * The string content or a `TemplateRef` for the content to be displayed in the tooltip.\n *\n * If the content if falsy, the tooltip won't open.\n */\n set ngbTooltip(value) {\n this._ngbTooltip = value;\n if (!value && this._windowRef) {\n this.close();\n }\n }\n get ngbTooltip() {\n return this._ngbTooltip;\n }\n /**\n * Opens the tooltip.\n *\n * This is considered to be a \"manual\" triggering.\n * The `context` is an optional value to be injected into the tooltip template when it is created.\n */\n open(context) {\n if (!this._windowRef && this._ngbTooltip && !this.disableTooltip) {\n const { windowRef, transition$ } = this._popupService.open(this._ngbTooltip, context, this.animation);\n this._windowRef = windowRef;\n this._windowRef.setInput('animation', this.animation);\n this._windowRef.setInput('tooltipClass', this.tooltipClass);\n this._windowRef.setInput('id', this._ngbTooltipWindowId);\n this._renderer.setAttribute(this._getPositionTargetElement(), 'aria-describedby', this._ngbTooltipWindowId);\n if (this.container === 'body') {\n this._document.querySelector(this.container).appendChild(this._windowRef.location.nativeElement);\n }\n // We need to detect changes, because we don't know where .open() might be called from.\n // Ex. opening tooltip from one of lifecycle hooks that run after the CD\n // (say from ngAfterViewInit) will result in 'ExpressionHasChanged' exception\n this._windowRef.changeDetectorRef.detectChanges();\n // We need to mark for check, because tooltip won't work inside the OnPush component.\n // Ex. when we use expression like `{{ tooltip.isOpen() : 'opened' : 'closed' }}`\n // inside the template of an OnPush component and we change the tooltip from\n // open -> closed, the expression in question won't be updated unless we explicitly\n // mark the parent component to be checked.\n this._windowRef.changeDetectorRef.markForCheck();\n // Setting up popper and scheduling updates when zone is stable\n this._ngZone.runOutsideAngular(() => {\n this._positioning.createPopper({\n hostElement: this._getPositionTargetElement(),\n targetElement: this._windowRef.location.nativeElement,\n placement: this.placement,\n appendToBody: this.container === 'body',\n baseClass: 'bs-tooltip',\n updatePopperOptions: (options) => this.popperOptions(options),\n });\n Promise.resolve().then(() => {\n // This update is required for correct arrow placement\n this._positioning.update();\n this._zoneSubscription = this._ngZone.onStable.subscribe(() => this._positioning.update());\n });\n });\n ngbAutoClose(this._ngZone, this._document, this.autoClose, () => this.close(), this.hidden, [\n this._windowRef.location.nativeElement,\n ]);\n transition$.subscribe(() => this.shown.emit());\n }\n }\n /**\n * Closes the tooltip.\n *\n * This is considered to be a \"manual\" triggering of the tooltip.\n */\n close(animation = this.animation) {\n if (this._windowRef != null) {\n this._renderer.removeAttribute(this._getPositionTargetElement(), 'aria-describedby');\n this._popupService.close(animation).subscribe(() => {\n this._windowRef = null;\n this._positioning.destroy();\n this._zoneSubscription?.unsubscribe();\n this.hidden.emit();\n this._changeDetector.markForCheck();\n });\n }\n }\n /**\n * Toggles the tooltip.\n *\n * This is considered to be a \"manual\" triggering of the tooltip.\n */\n toggle() {\n if (this._windowRef) {\n this.close();\n }\n else {\n this.open();\n }\n }\n /**\n * Returns `true`, if the popover is currently shown.\n */\n isOpen() {\n return this._windowRef != null;\n }\n ngOnInit() {\n this._unregisterListenersFn = listenToTriggers(this._renderer, this._elementRef.nativeElement, this.triggers, this.isOpen.bind(this), this.open.bind(this), this.close.bind(this), +this.openDelay, +this.closeDelay);\n }\n ngOnChanges({ tooltipClass }) {\n if (tooltipClass && this.isOpen()) {\n this._windowRef.instance.tooltipClass = tooltipClass.currentValue;\n }\n }\n ngOnDestroy() {\n this.close(false);\n // This check is needed as it might happen that ngOnDestroy is called before ngOnInit\n // under certain conditions, see: https://github.com/ng-bootstrap/ng-bootstrap/issues/2199\n this._unregisterListenersFn?.();\n }\n _getPositionTargetElement() {\n return ((isString(this.positionTarget) ? this._document.querySelector(this.positionTarget) : this.positionTarget) ||\n this._elementRef.nativeElement);\n }\n}\nNgbTooltip.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbTooltip, deps: [{ token: i0.ElementRef }, { token: NgbRTL }, { token: i0.Renderer2 }, { token: i0.Injector }, { token: i0.ViewContainerRef }, { token: NgbTooltipConfig }, { token: i0.NgZone }, { token: DOCUMENT }, { token: i0.ChangeDetectorRef }, { token: i0.ApplicationRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgbTooltip.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgbTooltip, selector: \"[ngbTooltip]\", inputs: { animation: \"animation\", autoClose: \"autoClose\", placement: \"placement\", popperOptions: \"popperOptions\", triggers: \"triggers\", positionTarget: \"positionTarget\", container: \"container\", disableTooltip: \"disableTooltip\", tooltipClass: \"tooltipClass\", openDelay: \"openDelay\", closeDelay: \"closeDelay\", ngbTooltip: \"ngbTooltip\" }, outputs: { shown: \"shown\", hidden: \"hidden\" }, exportAs: [\"ngbTooltip\"], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbTooltip, decorators: [{\n type: Directive,\n args: [{ selector: '[ngbTooltip]', exportAs: 'ngbTooltip' }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: NgbRTL }, { type: i0.Renderer2 }, { type: i0.Injector }, { type: i0.ViewContainerRef }, { type: NgbTooltipConfig }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i0.ChangeDetectorRef }, { type: i0.ApplicationRef }]; }, propDecorators: { animation: [{\n type: Input\n }], autoClose: [{\n type: Input\n }], placement: [{\n type: Input\n }], popperOptions: [{\n type: Input\n }], triggers: [{\n type: Input\n }], positionTarget: [{\n type: Input\n }], container: [{\n type: Input\n }], disableTooltip: [{\n type: Input\n }], tooltipClass: [{\n type: Input\n }], openDelay: [{\n type: Input\n }], closeDelay: [{\n type: Input\n }], shown: [{\n type: Output\n }], hidden: [{\n type: Output\n }], ngbTooltip: [{\n type: Input\n }] } });\n\nclass NgbTooltipModule {\n}\nNgbTooltipModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbTooltipModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNgbTooltipModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbTooltipModule, declarations: [NgbTooltip, NgbTooltipWindow], exports: [NgbTooltip] });\nNgbTooltipModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbTooltipModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbTooltipModule, decorators: [{\n type: NgModule,\n args: [{ declarations: [NgbTooltip, NgbTooltipWindow], exports: [NgbTooltip] }]\n }] });\n\n/**\n * A component that helps with text highlighting.\n *\n * It splits the `result` text into parts that contain the searched `term` and generates the HTML markup to simplify\n * highlighting:\n *\n * Ex. `result=\"Alaska\"` and `term=\"as\"` will produce `Alaska`.\n */\nclass NgbHighlight {\n constructor() {\n /**\n * The CSS class for `` elements wrapping the `term` inside the `result`.\n */\n this.highlightClass = 'ngb-highlight';\n /**\n * Boolean option to determine if the highlighting should be sensitive to accents or not.\n *\n * This feature is only available for browsers that implement the `String.normalize` function\n * (typically not Internet Explorer).\n * If you want to use this feature in a browser that does not implement `String.normalize`,\n * you will have to include a polyfill in your application (`unorm` for example).\n *\n * @since 9.1.0\n */\n this.accentSensitive = true;\n }\n ngOnChanges(changes) {\n if (!this.accentSensitive && !String.prototype.normalize) {\n console.warn('The `accentSensitive` input in `ngb-highlight` cannot be set to `false` in a browser ' +\n 'that does not implement the `String.normalize` function. ' +\n 'You will have to include a polyfill in your application to use this feature in the current browser.');\n this.accentSensitive = true;\n }\n const result = toString(this.result);\n const terms = Array.isArray(this.term) ? this.term : [this.term];\n const prepareTerm = (term) => (this.accentSensitive ? term : removeAccents(term));\n const escapedTerms = terms.map((term) => regExpEscape(prepareTerm(toString(term)))).filter((term) => term);\n const toSplit = this.accentSensitive ? result : removeAccents(result);\n const parts = escapedTerms.length ? toSplit.split(new RegExp(`(${escapedTerms.join('|')})`, 'gmi')) : [result];\n if (this.accentSensitive) {\n this.parts = parts;\n }\n else {\n let offset = 0;\n this.parts = parts.map((part) => result.substring(offset, (offset += part.length)));\n }\n }\n}\nNgbHighlight.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbHighlight, deps: [], target: i0.ɵɵFactoryTarget.Component });\nNgbHighlight.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgbHighlight, selector: \"ngb-highlight\", inputs: { highlightClass: \"highlightClass\", result: \"result\", term: \"term\", accentSensitive: \"accentSensitive\" }, usesOnChanges: true, ngImport: i0, template: \"{{part}}{{part}}\", isInline: true, styles: [\".ngb-highlight{font-weight:700}\\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\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbHighlight, decorators: [{\n type: Component,\n args: [{ selector: 'ngb-highlight', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: `` +\n `{{part}}{{part}}` +\n ``, styles: [\".ngb-highlight{font-weight:700}\\n\"] }]\n }], propDecorators: { highlightClass: [{\n type: Input\n }], result: [{\n type: Input\n }], term: [{\n type: Input\n }], accentSensitive: [{\n type: Input\n }] } });\n\nclass NgbTypeaheadWindow {\n constructor() {\n this.activeIdx = 0;\n /**\n * Flag indicating if the first row should be active initially\n */\n this.focusFirst = true;\n /**\n * A function used to format a given result before display. This function should return a formatted string without any\n * HTML markup\n */\n this.formatter = toString;\n /**\n * Event raised when user selects a particular result row\n */\n this.selectEvent = new EventEmitter();\n this.activeChangeEvent = new EventEmitter();\n }\n hasActive() {\n return this.activeIdx > -1 && this.activeIdx < this.results.length;\n }\n getActive() {\n return this.results[this.activeIdx];\n }\n markActive(activeIdx) {\n this.activeIdx = activeIdx;\n this._activeChanged();\n }\n next() {\n if (this.activeIdx === this.results.length - 1) {\n this.activeIdx = this.focusFirst ? (this.activeIdx + 1) % this.results.length : -1;\n }\n else {\n this.activeIdx++;\n }\n this._activeChanged();\n }\n prev() {\n if (this.activeIdx < 0) {\n this.activeIdx = this.results.length - 1;\n }\n else if (this.activeIdx === 0) {\n this.activeIdx = this.focusFirst ? this.results.length - 1 : -1;\n }\n else {\n this.activeIdx--;\n }\n this._activeChanged();\n }\n resetActive() {\n this.activeIdx = this.focusFirst ? 0 : -1;\n this._activeChanged();\n }\n select(item) {\n this.selectEvent.emit(item);\n }\n ngOnInit() {\n this.resetActive();\n }\n _activeChanged() {\n this.activeChangeEvent.emit(this.activeIdx >= 0 ? this.id + '-' + this.activeIdx : undefined);\n }\n}\nNgbTypeaheadWindow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbTypeaheadWindow, deps: [], target: i0.ɵɵFactoryTarget.Component });\nNgbTypeaheadWindow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgbTypeaheadWindow, selector: \"ngb-typeahead-window\", inputs: { id: \"id\", focusFirst: \"focusFirst\", results: \"results\", term: \"term\", formatter: \"formatter\", resultTemplate: \"resultTemplate\", popupClass: \"popupClass\" }, outputs: { selectEvent: \"select\", activeChangeEvent: \"activeChange\" }, host: { attributes: { \"role\": \"listbox\" }, listeners: { \"mousedown\": \"$event.preventDefault()\" }, properties: { \"class\": \"\\\"dropdown-menu show\\\" + (popupClass ? \\\" \\\" + popupClass : \\\"\\\")\", \"id\": \"id\" } }, exportAs: [\"ngbTypeaheadWindow\"], ngImport: i0, template: `\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t`, isInline: true, dependencies: [{ kind: \"directive\", type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"component\", type: NgbHighlight, selector: \"ngb-highlight\", inputs: [\"highlightClass\", \"result\", \"term\", \"accentSensitive\"] }], encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbTypeaheadWindow, decorators: [{\n type: Component,\n args: [{\n selector: 'ngb-typeahead-window',\n exportAs: 'ngbTypeaheadWindow',\n encapsulation: ViewEncapsulation.None,\n host: {\n '(mousedown)': '$event.preventDefault()',\n '[class]': '\"dropdown-menu show\" + (popupClass ? \" \" + popupClass : \"\")',\n role: 'listbox',\n '[id]': 'id',\n },\n template: `\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t`,\n }]\n }], propDecorators: { id: [{\n type: Input\n }], focusFirst: [{\n type: Input\n }], results: [{\n type: Input\n }], term: [{\n type: Input\n }], formatter: [{\n type: Input\n }], resultTemplate: [{\n type: Input\n }], popupClass: [{\n type: Input\n }], selectEvent: [{\n type: Output,\n args: ['select']\n }], activeChangeEvent: [{\n type: Output,\n args: ['activeChange']\n }] } });\n\n/**\n * A configuration service for the [`NgbTypeahead`](#/components/typeahead/api#NgbTypeahead) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the typeaheads used in the application.\n */\nclass NgbTypeaheadConfig {\n constructor() {\n this.editable = true;\n this.focusFirst = true;\n this.showHint = false;\n this.placement = ['bottom-start', 'bottom-end', 'top-start', 'top-end'];\n this.popperOptions = (options) => options;\n }\n}\nNgbTypeaheadConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbTypeaheadConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNgbTypeaheadConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbTypeaheadConfig, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbTypeaheadConfig, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\nconst ARIA_LIVE_DELAY = new InjectionToken('live announcer delay', {\n providedIn: 'root',\n factory: ARIA_LIVE_DELAY_FACTORY,\n});\nfunction ARIA_LIVE_DELAY_FACTORY() {\n return 100;\n}\nfunction getLiveElement(document, lazyCreate = false) {\n let element = document.body.querySelector('#ngb-live');\n if (element == null && lazyCreate) {\n element = document.createElement('div');\n element.setAttribute('id', 'ngb-live');\n element.setAttribute('aria-live', 'polite');\n element.setAttribute('aria-atomic', 'true');\n element.classList.add('visually-hidden');\n document.body.appendChild(element);\n }\n return element;\n}\nclass Live {\n constructor(_document, _delay) {\n this._document = _document;\n this._delay = _delay;\n }\n ngOnDestroy() {\n const element = getLiveElement(this._document);\n if (element) {\n // if exists, it will always be attached to the \n element.parentElement.removeChild(element);\n }\n }\n say(message) {\n const element = getLiveElement(this._document, true);\n const delay = this._delay;\n if (element != null) {\n element.textContent = '';\n const setText = () => (element.textContent = message);\n if (delay === null) {\n setText();\n }\n else {\n setTimeout(setText, delay);\n }\n }\n }\n}\nLive.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: Live, deps: [{ token: DOCUMENT }, { token: ARIA_LIVE_DELAY }], target: i0.ɵɵFactoryTarget.Injectable });\nLive.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: Live, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: Live, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [ARIA_LIVE_DELAY]\n }] }]; } });\n\nlet nextWindowId = 0;\n/**\n * A directive providing a simple way of creating powerful typeaheads from any text input.\n */\nclass NgbTypeahead {\n constructor(_elementRef, rtl, viewContainerRef, _renderer, injector, config, ngZone, _live, _document, _ngZone, _changeDetector, applicationRef) {\n this._elementRef = _elementRef;\n this._renderer = _renderer;\n this._live = _live;\n this._document = _document;\n this._ngZone = _ngZone;\n this._changeDetector = _changeDetector;\n this._subscription = null;\n this._closed$ = new Subject();\n this._inputValueBackup = null;\n this._windowRef = null;\n /**\n * The value for the `autocomplete` attribute for the `` element.\n *\n * Defaults to `\"off\"` to disable the native browser autocomplete, but you can override it if necessary.\n *\n * @since 2.1.0\n */\n this.autocomplete = 'off';\n /**\n * The preferred placement of the typeahead, among the [possible values](#/guides/positioning#api).\n *\n * The default order of preference is `\"bottom-start bottom-end top-start top-end\"`\n *\n * Please see the [positioning overview](#/positioning) for more details.\n */\n this.placement = 'bottom-start';\n /**\n * An event emitted right before an item is selected from the result list.\n *\n * Event payload is of type [`NgbTypeaheadSelectItemEvent`](#/components/typeahead/api#NgbTypeaheadSelectItemEvent).\n */\n this.selectItem = new EventEmitter();\n this.activeDescendant = null;\n this.popupId = `ngb-typeahead-${nextWindowId++}`;\n this._onTouched = () => { };\n this._onChange = (_) => { };\n this.container = config.container;\n this.editable = config.editable;\n this.focusFirst = config.focusFirst;\n this.showHint = config.showHint;\n this.placement = config.placement;\n this.popperOptions = config.popperOptions;\n this._valueChanges = fromEvent(_elementRef.nativeElement, 'input').pipe(map(($event) => $event.target.value));\n this._resubscribeTypeahead = new BehaviorSubject(null);\n this._popupService = new PopupService(NgbTypeaheadWindow, injector, viewContainerRef, _renderer, this._ngZone, applicationRef);\n this._positioning = ngbPositioning(rtl);\n }\n ngOnInit() {\n this._subscribeToUserInput();\n }\n ngOnChanges({ ngbTypeahead }) {\n if (ngbTypeahead && !ngbTypeahead.firstChange) {\n this._unsubscribeFromUserInput();\n this._subscribeToUserInput();\n }\n }\n ngOnDestroy() {\n this._closePopup();\n this._unsubscribeFromUserInput();\n }\n registerOnChange(fn) {\n this._onChange = fn;\n }\n registerOnTouched(fn) {\n this._onTouched = fn;\n }\n writeValue(value) {\n this._writeInputValue(this._formatItemForInput(value));\n if (this.showHint) {\n this._inputValueBackup = value;\n }\n }\n setDisabledState(isDisabled) {\n this._renderer.setProperty(this._elementRef.nativeElement, 'disabled', isDisabled);\n }\n /**\n * Dismisses typeahead popup window\n */\n dismissPopup() {\n if (this.isPopupOpen()) {\n this._resubscribeTypeahead.next(null);\n this._closePopup();\n if (this.showHint && this._inputValueBackup !== null) {\n this._writeInputValue(this._inputValueBackup);\n }\n this._changeDetector.markForCheck();\n }\n }\n /**\n * Returns true if the typeahead popup window is displayed\n */\n isPopupOpen() {\n return this._windowRef != null;\n }\n handleBlur() {\n this._resubscribeTypeahead.next(null);\n this._onTouched();\n }\n handleKeyDown(event) {\n if (!this.isPopupOpen()) {\n return;\n }\n /* eslint-disable-next-line deprecation/deprecation */\n switch (event.which) {\n case Key.ArrowDown:\n event.preventDefault();\n this._windowRef.instance.next();\n this._showHint();\n break;\n case Key.ArrowUp:\n event.preventDefault();\n this._windowRef.instance.prev();\n this._showHint();\n break;\n case Key.Enter:\n case Key.Tab: {\n const result = this._windowRef.instance.getActive();\n if (isDefined(result)) {\n event.preventDefault();\n event.stopPropagation();\n this._selectResult(result);\n }\n this._closePopup();\n break;\n }\n }\n }\n _openPopup() {\n if (!this.isPopupOpen()) {\n this._inputValueBackup = this._elementRef.nativeElement.value;\n const { windowRef } = this._popupService.open();\n this._windowRef = windowRef;\n this._windowRef.setInput('id', this.popupId);\n this._windowRef.setInput('popupClass', this.popupClass);\n this._windowRef.instance.selectEvent.subscribe((result) => this._selectResultClosePopup(result));\n this._windowRef.instance.activeChangeEvent.subscribe((activeId) => (this.activeDescendant = activeId));\n if (this.container === 'body') {\n this._renderer.setStyle(this._windowRef.location.nativeElement, 'z-index', '1055');\n this._document.querySelector(this.container).appendChild(this._windowRef.location.nativeElement);\n }\n this._changeDetector.markForCheck();\n // Setting up popper and scheduling updates when zone is stable\n this._ngZone.runOutsideAngular(() => {\n if (this._windowRef) {\n this._positioning.createPopper({\n hostElement: this._elementRef.nativeElement,\n targetElement: this._windowRef.location.nativeElement,\n placement: this.placement,\n appendToBody: this.container === 'body',\n updatePopperOptions: (options) => this.popperOptions(addPopperOffset([0, 2])(options)),\n });\n this._zoneSubscription = this._ngZone.onStable.subscribe(() => this._positioning.update());\n }\n });\n ngbAutoClose(this._ngZone, this._document, 'outside', () => this.dismissPopup(), this._closed$, [\n this._elementRef.nativeElement,\n this._windowRef.location.nativeElement,\n ]);\n }\n }\n _closePopup() {\n this._popupService.close().subscribe(() => {\n this._positioning.destroy();\n this._zoneSubscription?.unsubscribe();\n this._closed$.next();\n this._windowRef = null;\n this.activeDescendant = null;\n });\n }\n _selectResult(result) {\n let defaultPrevented = false;\n this.selectItem.emit({\n item: result,\n preventDefault: () => {\n defaultPrevented = true;\n },\n });\n this._resubscribeTypeahead.next(null);\n if (!defaultPrevented) {\n this.writeValue(result);\n this._onChange(result);\n }\n }\n _selectResultClosePopup(result) {\n this._selectResult(result);\n this._closePopup();\n }\n _showHint() {\n if (this.showHint && this._windowRef?.instance.hasActive() && this._inputValueBackup != null) {\n const userInputLowerCase = this._inputValueBackup.toLowerCase();\n const formattedVal = this._formatItemForInput(this._windowRef.instance.getActive());\n if (userInputLowerCase === formattedVal.substring(0, this._inputValueBackup.length).toLowerCase()) {\n this._writeInputValue(this._inputValueBackup + formattedVal.substring(this._inputValueBackup.length));\n this._elementRef.nativeElement['setSelectionRange'].apply(this._elementRef.nativeElement, [\n this._inputValueBackup.length,\n formattedVal.length,\n ]);\n }\n else {\n this._writeInputValue(formattedVal);\n }\n }\n }\n _formatItemForInput(item) {\n return item != null && this.inputFormatter ? this.inputFormatter(item) : toString(item);\n }\n _writeInputValue(value) {\n this._renderer.setProperty(this._elementRef.nativeElement, 'value', toString(value));\n }\n _subscribeToUserInput() {\n const results$ = this._valueChanges.pipe(tap((value) => {\n this._inputValueBackup = this.showHint ? value : null;\n this._onChange(this.editable ? value : undefined);\n }), this.ngbTypeahead ? this.ngbTypeahead : () => of([]));\n this._subscription = this._resubscribeTypeahead.pipe(switchMap(() => results$)).subscribe((results) => {\n if (!results || results.length === 0) {\n this._closePopup();\n }\n else {\n this._openPopup();\n this._windowRef.instance.focusFirst = this.focusFirst;\n this._windowRef.instance.results = results;\n this._windowRef.instance.term = this._elementRef.nativeElement.value;\n if (this.resultFormatter) {\n this._windowRef.instance.formatter = this.resultFormatter;\n }\n if (this.resultTemplate) {\n this._windowRef.instance.resultTemplate = this.resultTemplate;\n }\n this._windowRef.instance.resetActive();\n // The observable stream we are subscribing to might have async steps\n // and if a component containing typeahead is using the OnPush strategy\n // the change detection turn wouldn't be invoked automatically.\n this._windowRef.changeDetectorRef.detectChanges();\n this._showHint();\n }\n // live announcer\n const count = results ? results.length : 0;\n this._live.say(count === 0 ? 'No results available' : `${count} result${count === 1 ? '' : 's'} available`);\n });\n }\n _unsubscribeFromUserInput() {\n if (this._subscription) {\n this._subscription.unsubscribe();\n }\n this._subscription = null;\n }\n}\nNgbTypeahead.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbTypeahead, deps: [{ token: i0.ElementRef }, { token: NgbRTL }, { token: i0.ViewContainerRef }, { token: i0.Renderer2 }, { token: i0.Injector }, { token: NgbTypeaheadConfig }, { token: i0.NgZone }, { token: Live }, { token: DOCUMENT }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.ApplicationRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgbTypeahead.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgbTypeahead, selector: \"input[ngbTypeahead]\", inputs: { autocomplete: \"autocomplete\", container: \"container\", editable: \"editable\", focusFirst: \"focusFirst\", inputFormatter: \"inputFormatter\", ngbTypeahead: \"ngbTypeahead\", resultFormatter: \"resultFormatter\", resultTemplate: \"resultTemplate\", showHint: \"showHint\", placement: \"placement\", popperOptions: \"popperOptions\", popupClass: \"popupClass\" }, outputs: { selectItem: \"selectItem\" }, host: { attributes: { \"autocapitalize\": \"off\", \"autocorrect\": \"off\", \"role\": \"combobox\" }, listeners: { \"blur\": \"handleBlur()\", \"keydown\": \"handleKeyDown($event)\" }, properties: { \"class.open\": \"isPopupOpen()\", \"autocomplete\": \"autocomplete\", \"attr.aria-autocomplete\": \"showHint ? \\\"both\\\" : \\\"list\\\"\", \"attr.aria-activedescendant\": \"activeDescendant\", \"attr.aria-owns\": \"isPopupOpen() ? popupId : null\", \"attr.aria-expanded\": \"isPopupOpen()\" } }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbTypeahead), multi: true }], exportAs: [\"ngbTypeahead\"], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbTypeahead, decorators: [{\n type: Directive,\n args: [{\n selector: 'input[ngbTypeahead]',\n exportAs: 'ngbTypeahead',\n host: {\n '(blur)': 'handleBlur()',\n '[class.open]': 'isPopupOpen()',\n '(keydown)': 'handleKeyDown($event)',\n '[autocomplete]': 'autocomplete',\n autocapitalize: 'off',\n autocorrect: 'off',\n role: 'combobox',\n '[attr.aria-autocomplete]': 'showHint ? \"both\" : \"list\"',\n '[attr.aria-activedescendant]': 'activeDescendant',\n '[attr.aria-owns]': 'isPopupOpen() ? popupId : null',\n '[attr.aria-expanded]': 'isPopupOpen()',\n },\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbTypeahead), multi: true }],\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: NgbRTL }, { type: i0.ViewContainerRef }, { type: i0.Renderer2 }, { type: i0.Injector }, { type: NgbTypeaheadConfig }, { type: i0.NgZone }, { type: Live }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.ApplicationRef }]; }, propDecorators: { autocomplete: [{\n type: Input\n }], container: [{\n type: Input\n }], editable: [{\n type: Input\n }], focusFirst: [{\n type: Input\n }], inputFormatter: [{\n type: Input\n }], ngbTypeahead: [{\n type: Input\n }], resultFormatter: [{\n type: Input\n }], resultTemplate: [{\n type: Input\n }], showHint: [{\n type: Input\n }], placement: [{\n type: Input\n }], popperOptions: [{\n type: Input\n }], popupClass: [{\n type: Input\n }], selectItem: [{\n type: Output\n }] } });\n\nclass NgbTypeaheadModule {\n}\nNgbTypeaheadModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbTypeaheadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNgbTypeaheadModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbTypeaheadModule, declarations: [NgbTypeahead, NgbHighlight, NgbTypeaheadWindow], imports: [CommonModule], exports: [NgbTypeahead, NgbHighlight] });\nNgbTypeaheadModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbTypeaheadModule, imports: [CommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbTypeaheadModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [NgbTypeahead, NgbHighlight, NgbTypeaheadWindow],\n exports: [NgbTypeahead, NgbHighlight],\n imports: [CommonModule],\n }]\n }] });\n\nvar OffcanvasDismissReasons;\n(function (OffcanvasDismissReasons) {\n OffcanvasDismissReasons[OffcanvasDismissReasons[\"BACKDROP_CLICK\"] = 0] = \"BACKDROP_CLICK\";\n OffcanvasDismissReasons[OffcanvasDismissReasons[\"ESC\"] = 1] = \"ESC\";\n})(OffcanvasDismissReasons || (OffcanvasDismissReasons = {}));\n\nclass NgbOffcanvasBackdrop {\n constructor(_el, _zone) {\n this._el = _el;\n this._zone = _zone;\n this.dismissEvent = new EventEmitter();\n }\n ngOnInit() {\n this._zone.onStable\n .asObservable()\n .pipe(take(1))\n .subscribe(() => {\n ngbRunTransition(this._zone, this._el.nativeElement, (element, animation) => {\n if (animation) {\n reflow(element);\n }\n element.classList.add('show');\n }, { animation: this.animation, runningTransition: 'continue' });\n });\n }\n hide() {\n return ngbRunTransition(this._zone, this._el.nativeElement, ({ classList }) => classList.remove('show'), {\n animation: this.animation,\n runningTransition: 'stop',\n });\n }\n dismiss() {\n if (!this.static) {\n this.dismissEvent.emit(OffcanvasDismissReasons.BACKDROP_CLICK);\n }\n }\n}\nNgbOffcanvasBackdrop.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbOffcanvasBackdrop, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nNgbOffcanvasBackdrop.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgbOffcanvasBackdrop, selector: \"ngb-offcanvas-backdrop\", inputs: { animation: \"animation\", backdropClass: \"backdropClass\", static: \"static\" }, outputs: { dismissEvent: \"dismiss\" }, host: { listeners: { \"mousedown\": \"dismiss()\" }, properties: { \"class\": \"\\\"offcanvas-backdrop\\\" + (backdropClass ? \\\" \\\" + backdropClass : \\\"\\\")\", \"class.show\": \"!animation\", \"class.fade\": \"animation\" } }, ngImport: i0, template: '', isInline: true, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbOffcanvasBackdrop, decorators: [{\n type: Component,\n args: [{\n selector: 'ngb-offcanvas-backdrop',\n encapsulation: ViewEncapsulation.None,\n template: '',\n host: {\n '[class]': '\"offcanvas-backdrop\" + (backdropClass ? \" \" + backdropClass : \"\")',\n '[class.show]': '!animation',\n '[class.fade]': 'animation',\n '(mousedown)': 'dismiss()',\n },\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { animation: [{\n type: Input\n }], backdropClass: [{\n type: Input\n }], static: [{\n type: Input\n }], dismissEvent: [{\n type: Output,\n args: ['dismiss']\n }] } });\n\nclass NgbOffcanvasPanel {\n constructor(_document, _elRef, _zone) {\n this._document = _document;\n this._elRef = _elRef;\n this._zone = _zone;\n this._closed$ = new Subject();\n this._elWithFocus = null; // element that is focused prior to offcanvas opening\n this.keyboard = true;\n this.position = 'start';\n this.dismissEvent = new EventEmitter();\n this.shown = new Subject();\n this.hidden = new Subject();\n }\n dismiss(reason) {\n this.dismissEvent.emit(reason);\n }\n ngOnInit() {\n this._elWithFocus = this._document.activeElement;\n this._zone.onStable\n .asObservable()\n .pipe(take(1))\n .subscribe(() => {\n this._show();\n });\n }\n ngOnDestroy() {\n this._disableEventHandling();\n }\n hide() {\n const { nativeElement } = this._elRef;\n const context = { animation: this.animation, runningTransition: 'stop' };\n const offcanvasTransition$ = ngbRunTransition(this._zone, this._elRef.nativeElement, (element) => {\n nativeElement.classList.remove('showing');\n nativeElement.classList.add('hiding');\n return () => nativeElement.classList.remove('show', 'hiding');\n }, context);\n offcanvasTransition$.subscribe(() => {\n this.hidden.next();\n this.hidden.complete();\n });\n this._disableEventHandling();\n this._restoreFocus();\n return offcanvasTransition$;\n }\n _show() {\n const context = { animation: this.animation, runningTransition: 'continue' };\n const offcanvasTransition$ = ngbRunTransition(this._zone, this._elRef.nativeElement, (element, animation) => {\n if (animation) {\n reflow(element);\n }\n element.classList.add('show', 'showing');\n return () => element.classList.remove('showing');\n }, context);\n offcanvasTransition$.subscribe(() => {\n this.shown.next();\n this.shown.complete();\n });\n this._enableEventHandling();\n this._setFocus();\n }\n _enableEventHandling() {\n const { nativeElement } = this._elRef;\n this._zone.runOutsideAngular(() => {\n fromEvent(nativeElement, 'keydown')\n .pipe(takeUntil(this._closed$), \n /* eslint-disable-next-line deprecation/deprecation */\n filter((e) => e.which === Key.Escape))\n .subscribe((event) => {\n if (this.keyboard) {\n requestAnimationFrame(() => {\n if (!event.defaultPrevented) {\n this._zone.run(() => this.dismiss(OffcanvasDismissReasons.ESC));\n }\n });\n }\n });\n });\n }\n _disableEventHandling() {\n this._closed$.next();\n }\n _setFocus() {\n const { nativeElement } = this._elRef;\n if (!nativeElement.contains(document.activeElement)) {\n const autoFocusable = nativeElement.querySelector(`[ngbAutofocus]`);\n const firstFocusable = getFocusableBoundaryElements(nativeElement)[0];\n const elementToFocus = autoFocusable || firstFocusable || nativeElement;\n elementToFocus.focus();\n }\n }\n _restoreFocus() {\n const body = this._document.body;\n const elWithFocus = this._elWithFocus;\n let elementToFocus;\n if (elWithFocus && elWithFocus['focus'] && body.contains(elWithFocus)) {\n elementToFocus = elWithFocus;\n }\n else {\n elementToFocus = body;\n }\n this._zone.runOutsideAngular(() => {\n setTimeout(() => elementToFocus.focus());\n this._elWithFocus = null;\n });\n }\n}\nNgbOffcanvasPanel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbOffcanvasPanel, deps: [{ token: DOCUMENT }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nNgbOffcanvasPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgbOffcanvasPanel, selector: \"ngb-offcanvas-panel\", inputs: { animation: \"animation\", ariaLabelledBy: \"ariaLabelledBy\", ariaDescribedBy: \"ariaDescribedBy\", keyboard: \"keyboard\", panelClass: \"panelClass\", position: \"position\" }, outputs: { dismissEvent: \"dismiss\" }, host: { attributes: { \"role\": \"dialog\", \"tabindex\": \"-1\" }, properties: { \"class\": \"\\\"offcanvas offcanvas-\\\" + position + (panelClass ? \\\" \\\" + panelClass : \\\"\\\")\", \"attr.aria-modal\": \"true\", \"attr.aria-labelledby\": \"ariaLabelledBy\", \"attr.aria-describedby\": \"ariaDescribedBy\" } }, ngImport: i0, template: '', isInline: true, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbOffcanvasPanel, decorators: [{\n type: Component,\n args: [{ selector: 'ngb-offcanvas-panel', template: '', encapsulation: ViewEncapsulation.None, host: {\n '[class]': '\"offcanvas offcanvas-\" + position + (panelClass ? \" \" + panelClass : \"\")',\n role: 'dialog',\n tabindex: '-1',\n '[attr.aria-modal]': 'true',\n '[attr.aria-labelledby]': 'ariaLabelledBy',\n '[attr.aria-describedby]': 'ariaDescribedBy',\n } }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { animation: [{\n type: Input\n }], ariaLabelledBy: [{\n type: Input\n }], ariaDescribedBy: [{\n type: Input\n }], keyboard: [{\n type: Input\n }], panelClass: [{\n type: Input\n }], position: [{\n type: Input\n }], dismissEvent: [{\n type: Output,\n args: ['dismiss']\n }] } });\n\n/**\n * A reference to the currently opened (active) offcanvas.\n *\n * Instances of this class can be injected into your component passed as offcanvas content.\n * So you can `.close()` or `.dismiss()` the offcanvas window from your component.\n *\n * @since 12.1.0\n */\nclass NgbActiveOffcanvas {\n /**\n * Closes the offcanvas with an optional `result` value.\n *\n * The `NgbOffcanvasRef.result` promise will be resolved with the provided value.\n */\n close(result) { }\n /**\n * Dismisses the offcanvas with an optional `reason` value.\n *\n * The `NgbOffcanvasRef.result` promise will be rejected with the provided value.\n */\n dismiss(reason) { }\n}\n/**\n * A reference to the newly opened offcanvas returned by the `NgbOffcanvas.open()` method.\n *\n * @since 12.1.0\n */\nclass NgbOffcanvasRef {\n constructor(_panelCmptRef, _contentRef, _backdropCmptRef, _beforeDismiss) {\n this._panelCmptRef = _panelCmptRef;\n this._contentRef = _contentRef;\n this._backdropCmptRef = _backdropCmptRef;\n this._beforeDismiss = _beforeDismiss;\n this._closed = new Subject();\n this._dismissed = new Subject();\n this._hidden = new Subject();\n _panelCmptRef.instance.dismissEvent.subscribe((reason) => {\n this.dismiss(reason);\n });\n if (_backdropCmptRef) {\n _backdropCmptRef.instance.dismissEvent.subscribe((reason) => {\n this.dismiss(reason);\n });\n }\n this.result = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n this.result.then(null, () => { });\n }\n /**\n * The instance of a component used for the offcanvas content.\n *\n * When a `TemplateRef` is used as the content or when the offcanvas is closed, will return `undefined`.\n */\n get componentInstance() {\n if (this._contentRef && this._contentRef.componentRef) {\n return this._contentRef.componentRef.instance;\n }\n }\n /**\n * The observable that emits when the offcanvas is closed via the `.close()` method.\n *\n * It will emit the result passed to the `.close()` method.\n */\n get closed() {\n return this._closed.asObservable().pipe(takeUntil(this._hidden));\n }\n /**\n * The observable that emits when the offcanvas is dismissed via the `.dismiss()` method.\n *\n * It will emit the reason passed to the `.dismissed()` method by the user, or one of the internal\n * reasons like backdrop click or ESC key press.\n */\n get dismissed() {\n return this._dismissed.asObservable().pipe(takeUntil(this._hidden));\n }\n /**\n * The observable that emits when both offcanvas window and backdrop are closed and animations were finished.\n * At this point offcanvas and backdrop elements will be removed from the DOM tree.\n *\n * This observable will be completed after emitting.\n */\n get hidden() {\n return this._hidden.asObservable();\n }\n /**\n * The observable that emits when offcanvas is fully visible and animation was finished.\n * The offcanvas DOM element is always available synchronously after calling 'offcanvas.open()' service.\n *\n * This observable will be completed after emitting.\n * It will not emit, if offcanvas is closed before open animation is finished.\n */\n get shown() {\n return this._panelCmptRef.instance.shown.asObservable();\n }\n /**\n * Closes the offcanvas with an optional `result` value.\n *\n * The `NgbMobalRef.result` promise will be resolved with the provided value.\n */\n close(result) {\n if (this._panelCmptRef) {\n this._closed.next(result);\n this._resolve(result);\n this._removeOffcanvasElements();\n }\n }\n _dismiss(reason) {\n this._dismissed.next(reason);\n this._reject(reason);\n this._removeOffcanvasElements();\n }\n /**\n * Dismisses the offcanvas with an optional `reason` value.\n *\n * The `NgbOffcanvasRef.result` promise will be rejected with the provided value.\n */\n dismiss(reason) {\n if (this._panelCmptRef) {\n if (!this._beforeDismiss) {\n this._dismiss(reason);\n }\n else {\n const dismiss = this._beforeDismiss();\n if (isPromise(dismiss)) {\n dismiss.then((result) => {\n if (result !== false) {\n this._dismiss(reason);\n }\n }, () => { });\n }\n else if (dismiss !== false) {\n this._dismiss(reason);\n }\n }\n }\n }\n _removeOffcanvasElements() {\n const panelTransition$ = this._panelCmptRef.instance.hide();\n const backdropTransition$ = this._backdropCmptRef ? this._backdropCmptRef.instance.hide() : of(undefined);\n // hiding panel\n panelTransition$.subscribe(() => {\n const { nativeElement } = this._panelCmptRef.location;\n nativeElement.parentNode.removeChild(nativeElement);\n this._panelCmptRef.destroy();\n if (this._contentRef && this._contentRef.viewRef) {\n this._contentRef.viewRef.destroy();\n }\n this._panelCmptRef = null;\n this._contentRef = null;\n });\n // hiding backdrop\n backdropTransition$.subscribe(() => {\n if (this._backdropCmptRef) {\n const { nativeElement } = this._backdropCmptRef.location;\n nativeElement.parentNode.removeChild(nativeElement);\n this._backdropCmptRef.destroy();\n this._backdropCmptRef = null;\n }\n });\n // all done\n zip(panelTransition$, backdropTransition$).subscribe(() => {\n this._hidden.next();\n this._hidden.complete();\n });\n }\n}\n\nclass NgbOffcanvasStack {\n constructor(_applicationRef, _injector, _document, _scrollBar, _ngZone) {\n this._applicationRef = _applicationRef;\n this._injector = _injector;\n this._document = _document;\n this._scrollBar = _scrollBar;\n this._ngZone = _ngZone;\n this._activePanelCmptHasChanged = new Subject();\n this._scrollBarRestoreFn = null;\n this._backdropAttributes = ['animation', 'backdropClass'];\n this._panelAttributes = ['animation', 'ariaDescribedBy', 'ariaLabelledBy', 'keyboard', 'panelClass', 'position'];\n this._activeInstance = new EventEmitter();\n // Trap focus on active PanelCmpt\n this._activePanelCmptHasChanged.subscribe(() => {\n if (this._panelCmpt) {\n ngbFocusTrap(this._ngZone, this._panelCmpt.location.nativeElement, this._activePanelCmptHasChanged);\n }\n });\n }\n _restoreScrollBar() {\n const scrollBarRestoreFn = this._scrollBarRestoreFn;\n if (scrollBarRestoreFn) {\n this._scrollBarRestoreFn = null;\n scrollBarRestoreFn();\n }\n }\n _hideScrollBar() {\n if (!this._scrollBarRestoreFn) {\n this._scrollBarRestoreFn = this._scrollBar.hide();\n }\n }\n open(contentInjector, content, options) {\n const containerEl = options.container instanceof HTMLElement\n ? options.container\n : isDefined(options.container)\n ? this._document.querySelector(options.container)\n : this._document.body;\n if (!containerEl) {\n throw new Error(`The specified offcanvas container \"${options.container || 'body'}\" was not found in the DOM.`);\n }\n if (!options.scroll) {\n this._hideScrollBar();\n }\n const activeOffcanvas = new NgbActiveOffcanvas();\n const contentRef = this._getContentRef(options.injector || contentInjector, content, activeOffcanvas);\n let backdropCmptRef = options.backdrop !== false ? this._attachBackdrop(containerEl) : undefined;\n let panelCmptRef = this._attachWindowComponent(containerEl, contentRef.nodes);\n let ngbOffcanvasRef = new NgbOffcanvasRef(panelCmptRef, contentRef, backdropCmptRef, options.beforeDismiss);\n this._registerOffcanvasRef(ngbOffcanvasRef);\n this._registerPanelCmpt(panelCmptRef);\n ngbOffcanvasRef.hidden.pipe(finalize(() => this._restoreScrollBar())).subscribe();\n activeOffcanvas.close = (result) => {\n ngbOffcanvasRef.close(result);\n };\n activeOffcanvas.dismiss = (reason) => {\n ngbOffcanvasRef.dismiss(reason);\n };\n this._applyPanelOptions(panelCmptRef.instance, options);\n if (backdropCmptRef && backdropCmptRef.instance) {\n this._applyBackdropOptions(backdropCmptRef.instance, options);\n backdropCmptRef.changeDetectorRef.detectChanges();\n }\n panelCmptRef.changeDetectorRef.detectChanges();\n return ngbOffcanvasRef;\n }\n get activeInstance() {\n return this._activeInstance;\n }\n dismiss(reason) {\n this._offcanvasRef?.dismiss(reason);\n }\n hasOpenOffcanvas() {\n return !!this._offcanvasRef;\n }\n _attachBackdrop(containerEl) {\n let backdropCmptRef = createComponent(NgbOffcanvasBackdrop, {\n environmentInjector: this._applicationRef.injector,\n elementInjector: this._injector,\n });\n this._applicationRef.attachView(backdropCmptRef.hostView);\n containerEl.appendChild(backdropCmptRef.location.nativeElement);\n return backdropCmptRef;\n }\n _attachWindowComponent(containerEl, projectableNodes) {\n let panelCmptRef = createComponent(NgbOffcanvasPanel, {\n environmentInjector: this._applicationRef.injector,\n elementInjector: this._injector,\n projectableNodes,\n });\n this._applicationRef.attachView(panelCmptRef.hostView);\n containerEl.appendChild(panelCmptRef.location.nativeElement);\n return panelCmptRef;\n }\n _applyPanelOptions(windowInstance, options) {\n this._panelAttributes.forEach((optionName) => {\n if (isDefined(options[optionName])) {\n windowInstance[optionName] = options[optionName];\n }\n });\n }\n _applyBackdropOptions(backdropInstance, options) {\n this._backdropAttributes.forEach((optionName) => {\n if (isDefined(options[optionName])) {\n backdropInstance[optionName] = options[optionName];\n }\n });\n backdropInstance.static = options.backdrop === 'static';\n }\n _getContentRef(contentInjector, content, activeOffcanvas) {\n if (!content) {\n return new ContentRef([]);\n }\n else if (content instanceof TemplateRef) {\n return this._createFromTemplateRef(content, activeOffcanvas);\n }\n else if (isString(content)) {\n return this._createFromString(content);\n }\n else {\n return this._createFromComponent(contentInjector, content, activeOffcanvas);\n }\n }\n _createFromTemplateRef(templateRef, activeOffcanvas) {\n const context = {\n $implicit: activeOffcanvas,\n close(result) {\n activeOffcanvas.close(result);\n },\n dismiss(reason) {\n activeOffcanvas.dismiss(reason);\n },\n };\n const viewRef = templateRef.createEmbeddedView(context);\n this._applicationRef.attachView(viewRef);\n return new ContentRef([viewRef.rootNodes], viewRef);\n }\n _createFromString(content) {\n const component = this._document.createTextNode(`${content}`);\n return new ContentRef([[component]]);\n }\n _createFromComponent(contentInjector, componentType, context) {\n const elementInjector = Injector.create({\n providers: [{ provide: NgbActiveOffcanvas, useValue: context }],\n parent: contentInjector,\n });\n const componentRef = createComponent(componentType, {\n environmentInjector: this._applicationRef.injector,\n elementInjector,\n });\n const componentNativeEl = componentRef.location.nativeElement;\n this._applicationRef.attachView(componentRef.hostView);\n return new ContentRef([[componentNativeEl]], componentRef.hostView, componentRef);\n }\n _registerOffcanvasRef(ngbOffcanvasRef) {\n const unregisterOffcanvasRef = () => {\n this._offcanvasRef = undefined;\n this._activeInstance.emit(this._offcanvasRef);\n };\n this._offcanvasRef = ngbOffcanvasRef;\n this._activeInstance.emit(this._offcanvasRef);\n ngbOffcanvasRef.result.then(unregisterOffcanvasRef, unregisterOffcanvasRef);\n }\n _registerPanelCmpt(ngbPanelCmpt) {\n this._panelCmpt = ngbPanelCmpt;\n this._activePanelCmptHasChanged.next();\n ngbPanelCmpt.onDestroy(() => {\n this._panelCmpt = undefined;\n this._activePanelCmptHasChanged.next();\n });\n }\n}\nNgbOffcanvasStack.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbOffcanvasStack, deps: [{ token: i0.ApplicationRef }, { token: i0.Injector }, { token: DOCUMENT }, { token: ScrollBar }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nNgbOffcanvasStack.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbOffcanvasStack, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbOffcanvasStack, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i0.ApplicationRef }, { type: i0.Injector }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: ScrollBar }, { type: i0.NgZone }]; } });\n\n/**\n * A configuration service for the [`NgbOffcanvas`](#/components/offcanvas/api#NgbOffcanvas) service.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all offcanvases used in the application.\n *\n * @since 12.1.0\n */\nclass NgbOffcanvasConfig {\n constructor(_ngbConfig) {\n this._ngbConfig = _ngbConfig;\n this.backdrop = true;\n this.keyboard = true;\n this.position = 'start';\n this.scroll = false;\n }\n get animation() {\n return this._animation === undefined ? this._ngbConfig.animation : this._animation;\n }\n set animation(animation) {\n this._animation = animation;\n }\n}\nNgbOffcanvasConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbOffcanvasConfig, deps: [{ token: NgbConfig }], target: i0.ɵɵFactoryTarget.Injectable });\nNgbOffcanvasConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbOffcanvasConfig, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbOffcanvasConfig, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: NgbConfig }]; } });\n\n/**\n * A service for opening an offcanvas.\n *\n * Creating an offcanvas is straightforward: create a component or a template and pass it as an argument to\n * the `.open()` method.\n *\n * @since 12.1.0\n */\nclass NgbOffcanvas {\n constructor(_injector, _offcanvasStack, _config) {\n this._injector = _injector;\n this._offcanvasStack = _offcanvasStack;\n this._config = _config;\n }\n /**\n * Opens a new offcanvas panel with the specified content and supplied options.\n *\n * Content can be provided as a `TemplateRef` or a component type. If you pass a component type as content,\n * then instances of those components can be injected with an instance of the `NgbActiveOffcanvas` class. You can then\n * use `NgbActiveOffcanvas` methods to close / dismiss offcanvas from \"inside\" of your component.\n *\n * Also see the [`NgbOffcanvasOptions`](#/components/offcanvas/api#NgbOffcanvasOptions) for the list of supported\n * options.\n */\n open(content, options = {}) {\n const combinedOptions = { ...this._config, animation: this._config.animation, ...options };\n return this._offcanvasStack.open(this._injector, content, combinedOptions);\n }\n /**\n * Returns an observable that holds the active offcanvas instance.\n */\n get activeInstance() {\n return this._offcanvasStack.activeInstance;\n }\n /**\n * Dismisses the currently displayed offcanvas with the supplied reason.\n */\n dismiss(reason) {\n this._offcanvasStack.dismiss(reason);\n }\n /**\n * Indicates if there is currently an open offcanvas in the application.\n */\n hasOpenOffcanvas() {\n return this._offcanvasStack.hasOpenOffcanvas();\n }\n}\nNgbOffcanvas.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbOffcanvas, deps: [{ token: i0.Injector }, { token: NgbOffcanvasStack }, { token: NgbOffcanvasConfig }], target: i0.ɵɵFactoryTarget.Injectable });\nNgbOffcanvas.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbOffcanvas, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbOffcanvas, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i0.Injector }, { type: NgbOffcanvasStack }, { type: NgbOffcanvasConfig }]; } });\n\nclass NgbOffcanvasModule {\n}\nNgbOffcanvasModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbOffcanvasModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNgbOffcanvasModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbOffcanvasModule, declarations: [NgbOffcanvasPanel, NgbOffcanvasBackdrop] });\nNgbOffcanvasModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbOffcanvasModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbOffcanvasModule, decorators: [{\n type: NgModule,\n args: [{ declarations: [NgbOffcanvasPanel, NgbOffcanvasBackdrop] }]\n }] });\n\nconst NGB_MODULES = [\n NgbAccordionModule,\n NgbAlertModule,\n NgbCarouselModule,\n NgbCollapseModule,\n NgbDatepickerModule,\n NgbDropdownModule,\n NgbModalModule,\n NgbNavModule,\n NgbOffcanvasModule,\n NgbPaginationModule,\n NgbPopoverModule,\n NgbProgressbarModule,\n NgbRatingModule,\n NgbTimepickerModule,\n NgbToastModule,\n NgbTooltipModule,\n NgbTypeaheadModule,\n];\nclass NgbModule {\n}\nNgbModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNgbModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbModule, imports: [NgbAccordionModule,\n NgbAlertModule,\n NgbCarouselModule,\n NgbCollapseModule,\n NgbDatepickerModule,\n NgbDropdownModule,\n NgbModalModule,\n NgbNavModule,\n NgbOffcanvasModule,\n NgbPaginationModule,\n NgbPopoverModule,\n NgbProgressbarModule,\n NgbRatingModule,\n NgbTimepickerModule,\n NgbToastModule,\n NgbTooltipModule,\n NgbTypeaheadModule], exports: [NgbAccordionModule,\n NgbAlertModule,\n NgbCarouselModule,\n NgbCollapseModule,\n NgbDatepickerModule,\n NgbDropdownModule,\n NgbModalModule,\n NgbNavModule,\n NgbOffcanvasModule,\n NgbPaginationModule,\n NgbPopoverModule,\n NgbProgressbarModule,\n NgbRatingModule,\n NgbTimepickerModule,\n NgbToastModule,\n NgbTooltipModule,\n NgbTypeaheadModule] });\nNgbModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbModule, imports: [NGB_MODULES, NgbAccordionModule,\n NgbAlertModule,\n NgbCarouselModule,\n NgbCollapseModule,\n NgbDatepickerModule,\n NgbDropdownModule,\n NgbModalModule,\n NgbNavModule,\n NgbOffcanvasModule,\n NgbPaginationModule,\n NgbPopoverModule,\n NgbProgressbarModule,\n NgbRatingModule,\n NgbTimepickerModule,\n NgbToastModule,\n NgbTooltipModule,\n NgbTypeaheadModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgbModule, decorators: [{\n type: NgModule,\n args: [{ imports: NGB_MODULES, exports: NGB_MODULES }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ModalDismissReasons, NgbAccordion, NgbAccordionConfig, NgbAccordionModule, NgbActiveModal, NgbActiveOffcanvas, NgbAlert, NgbAlertConfig, NgbAlertModule, NgbCalendar, NgbCalendarBuddhist, NgbCalendarGregorian, NgbCalendarHebrew, NgbCalendarIslamicCivil, NgbCalendarIslamicUmalqura, NgbCalendarPersian, NgbCarousel, NgbCarouselConfig, NgbCarouselModule, NgbCollapse, NgbCollapseConfig, NgbCollapseModule, NgbConfig, NgbDate, NgbDateAdapter, NgbDateNativeAdapter, NgbDateNativeUTCAdapter, NgbDateParserFormatter, NgbDateStructAdapter, NgbDatepicker, NgbDatepickerConfig, NgbDatepickerContent, NgbDatepickerI18n, NgbDatepickerI18nDefault, NgbDatepickerI18nHebrew, NgbDatepickerKeyboardService, NgbDatepickerModule, NgbDatepickerMonth, NgbDropdown, NgbDropdownAnchor, NgbDropdownConfig, NgbDropdownItem, NgbDropdownMenu, NgbDropdownModule, NgbDropdownToggle, NgbHighlight, NgbInputDatepicker, NgbInputDatepickerConfig, NgbModal, NgbModalConfig, NgbModalModule, NgbModalRef, NgbModule, NgbNav, NgbNavConfig, NgbNavContent, NgbNavItem, NgbNavLink, NgbNavModule, NgbNavOutlet, NgbNavPane, NgbNavbar, NgbOffcanvas, NgbOffcanvasConfig, NgbOffcanvasModule, NgbOffcanvasRef, NgbPagination, NgbPaginationConfig, NgbPaginationEllipsis, NgbPaginationFirst, NgbPaginationLast, NgbPaginationModule, NgbPaginationNext, NgbPaginationNumber, NgbPaginationPages, NgbPaginationPrevious, NgbPanel, NgbPanelContent, NgbPanelHeader, NgbPanelTitle, NgbPanelToggle, NgbPopover, NgbPopoverConfig, NgbPopoverModule, NgbProgressbar, NgbProgressbarConfig, NgbProgressbarModule, NgbRating, NgbRatingConfig, NgbRatingModule, NgbSlide, NgbSlideEventDirection, NgbSlideEventSource, NgbTimeAdapter, NgbTimepicker, NgbTimepickerConfig, NgbTimepickerI18n, NgbTimepickerModule, NgbToast, NgbToastConfig, NgbToastHeader, NgbToastModule, NgbTooltip, NgbTooltipConfig, NgbTooltipModule, NgbTypeahead, NgbTypeaheadConfig, NgbTypeaheadModule, OffcanvasDismissReasons };\n","import { concat } from '../observable/concat';\nimport { of } from '../observable/of';\nexport function endWith(...array) {\n return (source) => concat(source, of(...array));\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\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\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\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}"],"x_google_ignoreList":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391]}